summaryrefslogtreecommitdiffstats
path: root/src/flash.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/flash.c')
-rw-r--r--src/flash.c27
1 files changed, 26 insertions, 1 deletions
diff --git a/src/flash.c b/src/flash.c
index 7a8ddd1..c81d97c 100644
--- a/src/flash.c
+++ b/src/flash.c
@@ -123,8 +123,33 @@ void flash_image(char *filename, char *piece, char *version)
if (bread != 1)
printf("WARNING: Oops wrong read %d vs %d \n", bread, bsize);
bread = usb_bulk_write(dev, 2, buf, bsize, 5000);
+ if (bread == 64) {
+ /* query error message */
+ int len = 0;
+ char nolomsg[2048];
+ memset(nolomsg, '\0', 2048);
+ usb_control_msg(dev, 192, 5, 0, 0, nolomsg, 2048, 2000);
+ nolomsg[2047] = '\0';
+ printf("\nNOLO says:\n");
+ if (nolomsg[0] == '\0') {
+ printf(" (.. silence ..)\n");
+ } else {
+ dump_bytes(nolomsg, 128);
+ do {
+ printf(" - %s\n", nolomsg+len);
+ len+=strlen(nolomsg+len)+1;
+ } while(nolomsg[len]!='\0');
+ }
+ fclose(fd);
+ return;
+ }
progressbar(off, size);
- if (bread<0) perror(" -ee- ");
+ if (bread<0) {
+ printf("\n");
+ perror(" -ee- ");
+ fclose(fd);
+ return;
+ }
fflush(stdout);
}
fclose(fd);