diff options
author | root <root@lamia.panaceas.james.local> | 2015-09-01 00:41:49 +0100 |
---|---|---|
committer | root <root@lamia.panaceas.james.local> | 2015-09-01 00:41:49 +0100 |
commit | 475922ce345bb0443cf4fdef00efa86676a1bf62 (patch) | |
tree | 89e3eb13232da02bddfeffaff8588765c403b71f /nrfdfu.c | |
download | nrfdfu-475922ce345bb0443cf4fdef00efa86676a1bf62.tar.gz nrfdfu-475922ce345bb0443cf4fdef00efa86676a1bf62.tar.bz2 nrfdfu-475922ce345bb0443cf4fdef00efa86676a1bf62.zip |
fish
Diffstat (limited to 'nrfdfu.c')
-rw-r--r-- | nrfdfu.c | 74 |
1 files changed, 74 insertions, 0 deletions
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); + + +} |