From 737506dd7462036bd5edd7cf69c4f1fa100afebb Mon Sep 17 00:00:00 2001 From: Nikias Bassen Date: Wed, 4 Jul 2012 21:13:51 +0200 Subject: irecv_send_buffer: transfer init and notify finish for DFU mode --- libirecovery.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/libirecovery.c b/libirecovery.c index aa676a0..b83a8d2 100644 --- a/libirecovery.c +++ b/libirecovery.c @@ -923,7 +923,12 @@ irecv_error_t irecv_send_buffer(irecv_client_t client, unsigned char* buffer, un if (recovery_mode) { error = irecv_control_transfer(client, 0x41, 0, 0, 0, NULL, 0, USB_TIMEOUT); } else { - error = irecv_control_transfer(client, 0x21, 4, 0, 0, NULL, 0, USB_TIMEOUT); + char dump[4]; + if (irecv_control_transfer(client, 0xa1, 5, 0, 0, dump, 1, USB_TIMEOUT) == 1) { + error = IRECV_E_SUCCESS; + } else { + error = IRECV_E_USB_UPLOAD; + } } if (error != IRECV_E_SUCCESS) { return error; @@ -1010,9 +1015,9 @@ irecv_error_t irecv_send_buffer(irecv_client_t client, unsigned char* buffer, un } if (dfuNotifyFinished && !recovery_mode) { - irecv_control_transfer(client, 0x21, 1, 0, 0, (unsigned char*) buffer, 0, USB_TIMEOUT); + irecv_control_transfer(client, 0x21, 1, packets, 0, (unsigned char*) buffer, 0, USB_TIMEOUT); - for (i = 0; i < 3; i++) { + for (i = 0; i < 2; i++) { error = irecv_get_status(client, &status); if (error != IRECV_E_SUCCESS) { return error; -- cgit v1.1-32-gdbae