From 3e75a53ba6991af1499f8355d97ac4da33e642a0 Mon Sep 17 00:00:00 2001 From: Jenna Fox Date: Tue, 2 Oct 2012 14:51:16 +1000 Subject: Made live progress printouts more human friendly (total progress instead of step progress) --- commandline/examples/micronucleus.c | 9 ++++++--- commandline/library/micronucleus_lib.c | 8 ++++++++ commandline/library/micronucleus_lib.h | 9 ++++++--- 3 files changed, 20 insertions(+), 6 deletions(-) (limited to 'commandline') diff --git a/commandline/examples/micronucleus.c b/commandline/examples/micronucleus.c index 5fb4c32..8bca517 100644 --- a/commandline/examples/micronucleus.c +++ b/commandline/examples/micronucleus.c @@ -100,8 +100,8 @@ int main(int argc, char **argv) { } setProgressData("waiting", 1); - printProgress(0.5); - printf("> Please plug the device ... \n"); + if (dump_progress) printProgress(0.5); + printf("> Please plug in the device ... \n"); printf("> Press CTRL+C to terminate the program.\n"); while (my_device == NULL) { @@ -221,7 +221,10 @@ static void printProgress(float progress) { printf("\033[1F\033[2K"); // move cursor to previous line and erase last update in this progress sequence } #endif - printf("%s: %d%% complete\n", progress_friendly_name, (int) (progress * 100.0f)); + + float total_progress = ((float) progress_step - 1.0f) / (float) progress_total_steps; + total_progress += progress / (float) progress_total_steps; + printf("%s: %d%% complete\n", progress_friendly_name, (int) (total_progress * 100.0f)); } last_step = progress_step; diff --git a/commandline/library/micronucleus_lib.c b/commandline/library/micronucleus_lib.c index 2e63425..1c3c179 100644 --- a/commandline/library/micronucleus_lib.c +++ b/commandline/library/micronucleus_lib.c @@ -47,6 +47,14 @@ micronucleus* micronucleus_connect() { nucleus = malloc(sizeof(micronucleus)); nucleus->version.major = (dev->descriptor.bcdUSB >> 8) & 0xFF; nucleus->version.minor = dev->descriptor.bcdUSB & 0xFF; + + if (nucleus->version.major > MICRONUCLEUS_MAX_MAJOR_VERSION) { + fprintf(stderr, "Warning: device with unknown new version of Micronucleus detected.\n"); + fprintf(stderr, "This tool doesn't know how to upload to this new device. Updates may be available.\n"); + fprintf(stderr, "Device reports version as: %d.%d\n", nucleus->version.major, nucleus->version.minor); + return NULL; + } + nucleus->device = usb_open(dev); // get nucleus info diff --git a/commandline/library/micronucleus_lib.h b/commandline/library/micronucleus_lib.h index d022877..9118ace 100644 --- a/commandline/library/micronucleus_lib.h +++ b/commandline/library/micronucleus_lib.h @@ -34,14 +34,17 @@ #endif //#include "opendevice.h" // common code moved to separate module #include +#include +#include /*******************************************************************************/ /******************************************************************************** * USB details ********************************************************************************/ -#define MICRONUCLEUS_VENDOR_ID 0x16D0 -#define MICRONUCLEUS_PRODUCT_ID 0x0753 -#define MICRONUCLEUS_USB_TIMEOUT 0xFFFF +#define MICRONUCLEUS_VENDOR_ID 0x16D0 +#define MICRONUCLEUS_PRODUCT_ID 0x0753 +#define MICRONUCLEUS_USB_TIMEOUT 0xFFFF +#define MICRONUCLEUS_MAX_MAJOR_VERSION 1 /*******************************************************************************/ /******************************************************************************** -- cgit v1.2.3