summaryrefslogtreecommitdiffstats
path: root/src/libirecovery.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libirecovery.c')
-rw-r--r--src/libirecovery.c38
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
529void 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}