From 475922ce345bb0443cf4fdef00efa86676a1bf62 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 1 Sep 2015 00:41:49 +0100 Subject: fish --- nrfdfu.c | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 nrfdfu.c (limited to 'nrfdfu.c') diff --git a/nrfdfu.c b/nrfdfu.c new file mode 100644 index 0000000..96f99d9 --- /dev/null +++ b/nrfdfu.c @@ -0,0 +1,74 @@ +#include "project.h" + +static void +usage (char *name) +{ + fprintf (stderr, "Usage: %s -b bdaddr -p pkg_file\n", name); + exit (EXIT_FAILURE); +} + + + + + + + + + + + +int +main (int argc, char *argv[]) +{ + char *bdaddr = NULL; + char *pkg_fn = NULL; + int opt; + struct zip *zip; + char *m_str; + struct manifest *m; + + uint8_t *bin; + size_t bin_size; + + uint8_t *dat; + size_t dat_size; + + + + while ((opt = getopt (argc, argv, "b:p:")) != -1) + { + switch (opt) + { + case 'b': + bdaddr = optarg; + break; + case 'p': + pkg_fn = optarg; + break; + default: /* '?' */ + usage (argv[0]); + } + } + + if ((!bdaddr) || (!pkg_fn)) + usage (argv[0]); + + + zip = open_zip (pkg_fn); + + read_file_from_zip (zip, "manifest.json", &m_str); + + m = parse_manifest (m_str); + + dat_size = read_file_from_zip (zip, m->dat_file, &dat); + + bin_size = read_file_from_zip (zip, m->bin_file, &bin); + + + printf ("%d bytes init_data, %d bytes firmware\n", dat_size, bin_size); + + + dfu (bdaddr, m->type, m->dfu_version, dat, dat_size, bin, bin_size); + + +} -- cgit v1.2.3