diff options
| -rw-r--r-- | irecovery.c | 2 | ||||
| -rw-r--r-- | libirecovery.c | 27 |
2 files changed, 17 insertions, 12 deletions
diff --git a/irecovery.c b/irecovery.c index 3e32395..78692c6 100644 --- a/irecovery.c +++ b/irecovery.c | |||
| @@ -301,7 +301,7 @@ int main(int argc, char* argv[]) { | |||
| 301 | 301 | ||
| 302 | case kSendFile: | 302 | case kSendFile: |
| 303 | irecv_event_subscribe(client, IRECV_PROGRESS, &progress_cb, NULL); | 303 | irecv_event_subscribe(client, IRECV_PROGRESS, &progress_cb, NULL); |
| 304 | error = irecv_send_file(client, argument, 0); | 304 | error = irecv_send_file(client, argument, 1); |
| 305 | debug("%s\n", irecv_strerror(error)); | 305 | debug("%s\n", irecv_strerror(error)); |
| 306 | break; | 306 | break; |
| 307 | 307 | ||
diff --git a/libirecovery.c b/libirecovery.c index 58ef080..0aed224 100644 --- a/libirecovery.c +++ b/libirecovery.c | |||
| @@ -353,17 +353,20 @@ irecv_error_t irecv_open(irecv_client_t* pclient) { | |||
| 353 | client->interface = 0; | 353 | client->interface = 0; |
| 354 | client->handle = usb_handle; | 354 | client->handle = usb_handle; |
| 355 | client->mode = usb_descriptor.idProduct; | 355 | client->mode = usb_descriptor.idProduct; |
| 356 | |||
| 357 | error = irecv_set_configuration(client, 1); | ||
| 358 | if (error != IRECV_E_SUCCESS) { | ||
| 359 | return error; | ||
| 360 | } | ||
| 361 | |||
| 356 | if (client->mode != kDfuMode) { | 362 | if (client->mode != kDfuMode) { |
| 357 | error = irecv_set_configuration(client, 1); | ||
| 358 | if (error != IRECV_E_SUCCESS) { | ||
| 359 | return error; | ||
| 360 | } | ||
| 361 | |||
| 362 | // pod2g 2010-12-28: switched to interface 1.1 by default on non DFU modes | 363 | // pod2g 2010-12-28: switched to interface 1.1 by default on non DFU modes |
| 363 | error = irecv_set_interface(client, 1, 1); | 364 | error = irecv_set_interface(client, 1, 1); |
| 364 | if (error != IRECV_E_SUCCESS) { | 365 | } else { |
| 365 | return error; | 366 | error = irecv_set_interface(client, 0, 0); |
| 366 | } | 367 | } |
| 368 | if (error != IRECV_E_SUCCESS) { | ||
| 369 | return error; | ||
| 367 | } | 370 | } |
| 368 | 371 | ||
| 369 | /* cache usb serial */ | 372 | /* cache usb serial */ |
| @@ -678,9 +681,11 @@ irecv_error_t irecv_send_buffer(irecv_client_t client, unsigned char* buffer, un | |||
| 678 | /* initiate transfer */ | 681 | /* initiate transfer */ |
| 679 | if (recovery_mode) { | 682 | if (recovery_mode) { |
| 680 | error = irecv_control_transfer(client, 0x41, 0, 0, 0, NULL, 0, 1000); | 683 | error = irecv_control_transfer(client, 0x41, 0, 0, 0, NULL, 0, 1000); |
| 681 | if (error != IRECV_E_SUCCESS) { | 684 | } else { |
| 682 | return error; | 685 | error = irecv_control_transfer(client, 0x21, 4, 0, 0, NULL, 0, 1000); |
| 683 | } | 686 | } |
| 687 | if (error != IRECV_E_SUCCESS) { | ||
| 688 | return error; | ||
| 684 | } | 689 | } |
| 685 | 690 | ||
| 686 | int i = 0; | 691 | int i = 0; |
