The two new commands both imply that a (simple) progress bar display is requested. "multi[write]" allows to upload a group of files with a single command, resulting in their transfer showing a common, 'overall' progress status.
Signed-off-by: Bernhard Nortmann <bernhard.nortm...@web.de> --- fel.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/fel.c b/fel.c index c9081b6..13565f3 100644 --- a/fel.c +++ b/fel.c @@ -1271,6 +1271,9 @@ int main(int argc, char **argv) " exe[cute] address Call function address\n" " read address length file Write memory contents into file\n" " write address file Store file contents into memory\n" + " write-with-progress addr file \"write\" with progress bar\n" + " multi[write] # addr file ... \"write-with-progress\" multiple files,\n" + " sharing a common progress status\n" " ver[sion] Show BROM version\n" " clear address length Clear memory\n" " fill address length value Fill memory\n" @@ -1338,6 +1341,34 @@ int main(int argc, char **argv) file_upload(handle, argv[3], strtoul(argv[2], NULL, 0)); } skip=3; + } else if (strcmp(argv[1], "write-with-progress") == 0 && argc > 3) { + size_t size = file_size(argv[3]); + if (size > 0) { + progress_start(progress_bar, size); + file_upload(handle, argv[3], strtoul(argv[2], NULL, 0)); + } + skip=3; + } else if ((strcmp(argv[1], "multiwrite") == 0 || + strcmp(argv[1], "multi") == 0) && argc > 4) { + size_t count = strtoul(argv[2], NULL, 0); /* file count */ + skip = 2; + if (count > 0) { + unsigned int i; + + /* get all file sizes, keeping track of total bytes */ + size_t total_bytes = 0; + for (i = 0; i < count; i++) + total_bytes += file_size(argv[4 + i*2]); + + progress_start(progress_bar, total_bytes); + + /* now transfer each file in turn */ + for (i = 0; i < count; i++) + file_upload(handle, argv[4 + i*2], + strtoul(argv[3 + i*2], NULL, 0)); + + skip += count * 2; + } } else if (strcmp(argv[1], "read") == 0 && argc > 4) { size_t size = strtoul(argv[3], NULL, 0); void *buf = malloc(size); -- 2.4.6 -- You received this message because you are subscribed to the Google Groups "linux-sunxi" group. To unsubscribe from this group and stop receiving emails from it, send an email to linux-sunxi+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.