summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenna Fox <a@creativepony.com>2012-10-02 14:51:16 +1000
committerJenna Fox <a@creativepony.com>2012-10-02 14:51:16 +1000
commit3e75a53ba6991af1499f8355d97ac4da33e642a0 (patch)
tree71b375d8465e2731d4c38ca173100273ab13a7ce
parent85669da5c3101b2e8c815e257a5e17615ada26f5 (diff)
downloadmicronucleus-3e75a53ba6991af1499f8355d97ac4da33e642a0.tar.gz
micronucleus-3e75a53ba6991af1499f8355d97ac4da33e642a0.tar.bz2
micronucleus-3e75a53ba6991af1499f8355d97ac4da33e642a0.zip
Made live progress printouts more human friendly (total progress instead of step progress)
-rw-r--r--commandline/examples/micronucleus.c9
-rw-r--r--commandline/library/micronucleus_lib.c8
-rw-r--r--commandline/library/micronucleus_lib.h9
3 files changed, 20 insertions, 6 deletions
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 <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
/*******************************************************************************/
/********************************************************************************
* 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
/*******************************************************************************/
/********************************************************************************