diff options
| author | 2010-06-06 18:52:47 -0400 | |
|---|---|---|
| committer | 2010-06-06 18:52:47 -0400 | |
| commit | 09caab6993bfe2e696ab47776189a4216547c6a9 (patch) | |
| tree | 3a409e309d5c20327b3e93dddc71d6bc43124f82 /src/libirecovery.c | |
| parent | ff1d99f386c9a0667d5f4056ab8ffaba70e91324 (diff) | |
| download | libirecovery-09caab6993bfe2e696ab47776189a4216547c6a9.tar.gz libirecovery-09caab6993bfe2e696ab47776189a4216547c6a9.tar.bz2 | |
Moved progress bar into irecovery and finished implementing progress notications
Diffstat (limited to 'src/libirecovery.c')
| -rw-r--r-- | src/libirecovery.c | 38 |
1 files changed, 4 insertions, 34 deletions
diff --git a/src/libirecovery.c b/src/libirecovery.c index acf1d6b..4900fbf 100644 --- a/src/libirecovery.c +++ b/src/libirecovery.c | |||
| @@ -324,8 +324,8 @@ irecv_error_t irecv_send_buffer(irecv_client_t client, unsigned char* buffer, un | |||
| 324 | } | 324 | } |
| 325 | 325 | ||
| 326 | int i = 0; | 326 | int i = 0; |
| 327 | double count = 0; | ||
| 328 | double progress = 0; | 327 | double progress = 0; |
| 328 | unsigned int count = 0; | ||
| 329 | unsigned int status = 0; | 329 | unsigned int status = 0; |
| 330 | for (i = 0; i < packets; i++) { | 330 | for (i = 0; i < packets; i++) { |
| 331 | int size = i + 1 < packets ? 0x800 : last; | 331 | int size = i + 1 < packets ? 0x800 : last; |
| @@ -349,15 +349,12 @@ irecv_error_t irecv_send_buffer(irecv_client_t client, unsigned char* buffer, un | |||
| 349 | count += size; | 349 | count += size; |
| 350 | if(client->progress_callback != NULL) { | 350 | if(client->progress_callback != NULL) { |
| 351 | irecv_event_t event; | 351 | irecv_event_t event; |
| 352 | event.progress = ((double) count/ (double) length) * 100.0; | ||
| 352 | event.type = IRECV_PROGRESS; | 353 | event.type = IRECV_PROGRESS; |
| 353 | event.data = NULL; | 354 | event.data = "Uploading"; |
| 354 | event.size = count/length; | 355 | event.size = count; |
| 355 | client->progress_callback(client, &event); | 356 | client->progress_callback(client, &event); |
| 356 | } | 357 | } |
| 357 | else if((count / (double) length) * 100.0 > progress) { | ||
| 358 | progress = (count / (double) length) * 100.0; | ||
| 359 | irecv_print_progress("Uploading", progress); | ||
| 360 | } | ||
| 361 | } | 358 | } |
| 362 | 359 | ||
| 363 | libusb_control_transfer(client->handle, 0x21, 1, 0, 0, buffer, 0, 1000); | 360 | libusb_control_transfer(client->handle, 0x21, 1, 0, 0, buffer, 0, 1000); |
| @@ -525,30 +522,3 @@ const char* irecv_strerror(irecv_error_t error) { | |||
| 525 | 522 | ||
| 526 | return NULL; | 523 | return NULL; |
| 527 | } | 524 | } |
| 528 | |||
| 529 | void irecv_print_progress(const char* operation, float progress) { | ||
| 530 | int i = 0; | ||
| 531 | if(progress < 0) { | ||
| 532 | return; | ||
| 533 | } | ||
| 534 | |||
| 535 | if(progress > 100) { | ||
| 536 | progress = 100; | ||
| 537 | } | ||
| 538 | |||
| 539 | printf("\r%s [", operation); | ||
| 540 | for(i = 0; i < 50; i++) { | ||
| 541 | if(i < progress / 2) { | ||
| 542 | printf("="); | ||
| 543 | } else { | ||
| 544 | printf(" "); | ||
| 545 | } | ||
| 546 | } | ||
| 547 | |||
| 548 | printf("] %3.1f%%", progress); | ||
| 549 | fflush(stdout); | ||
| 550 | if(progress == 100) { | ||
| 551 | printf("\n"); | ||
| 552 | } | ||
| 553 | |||
| 554 | } | ||
