diff options
| author | 2021-05-06 18:01:11 +0200 | |
|---|---|---|
| committer | 2021-05-26 03:40:03 +0200 | |
| commit | 47934949e0015165a4562b08e824adb3f664c0ea (patch) | |
| tree | c4f49d5495eb2621a7cf18cd112a4c02907c9c59 /src | |
| parent | 11324701c89a2ef2ace1686fe25eeec9ad8adac8 (diff) | |
| download | libirecovery-47934949e0015165a4562b08e824adb3f664c0ea.tar.gz libirecovery-47934949e0015165a4562b08e824adb3f664c0ea.tar.bz2 | |
Add new irecv_send_command_breq to allow choosing the b_request usb param when sending commands
Diffstat (limited to 'src')
| -rw-r--r-- | src/libirecovery.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/libirecovery.c b/src/libirecovery.c index c3b3341..3e90178 100644 --- a/src/libirecovery.c +++ b/src/libirecovery.c | |||
| @@ -2480,21 +2480,21 @@ IRECV_API void irecv_set_debug_level(int level) { | |||
| 2480 | } | 2480 | } |
| 2481 | 2481 | ||
| 2482 | #ifndef USE_DUMMY | 2482 | #ifndef USE_DUMMY |
| 2483 | static irecv_error_t irecv_send_command_raw(irecv_client_t client, const char* command) { | 2483 | static irecv_error_t irecv_send_command_raw(irecv_client_t client, const char* command, uint8_t b_request) { |
| 2484 | unsigned int length = strlen(command); | 2484 | unsigned int length = strlen(command); |
| 2485 | if (length >= 0x100) { | 2485 | if (length >= 0x100) { |
| 2486 | length = 0xFF; | 2486 | length = 0xFF; |
| 2487 | } | 2487 | } |
| 2488 | 2488 | ||
| 2489 | if (length > 0) { | 2489 | if (length > 0) { |
| 2490 | irecv_usb_control_transfer(client, 0x40, 0, 0, 0, (unsigned char*) command, length + 1, USB_TIMEOUT); | 2490 | irecv_usb_control_transfer(client, 0x40, b_request, 0, 0, (unsigned char*) command, length + 1, USB_TIMEOUT); |
| 2491 | } | 2491 | } |
| 2492 | 2492 | ||
| 2493 | return IRECV_E_SUCCESS; | 2493 | return IRECV_E_SUCCESS; |
| 2494 | } | 2494 | } |
| 2495 | #endif | 2495 | #endif |
| 2496 | 2496 | ||
| 2497 | IRECV_API irecv_error_t irecv_send_command(irecv_client_t client, const char* command) { | 2497 | IRECV_API irecv_error_t irecv_send_command_breq(irecv_client_t client, const char* command, uint8_t b_request) { |
| 2498 | #ifdef USE_DUMMY | 2498 | #ifdef USE_DUMMY |
| 2499 | return IRECV_E_UNSUPPORTED; | 2499 | return IRECV_E_UNSUPPORTED; |
| 2500 | #else | 2500 | #else |
| @@ -2518,7 +2518,7 @@ IRECV_API irecv_error_t irecv_send_command(irecv_client_t client, const char* co | |||
| 2518 | } | 2518 | } |
| 2519 | } | 2519 | } |
| 2520 | 2520 | ||
| 2521 | error = irecv_send_command_raw(client, command); | 2521 | error = irecv_send_command_raw(client, command, b_request); |
| 2522 | if (error != IRECV_E_SUCCESS) { | 2522 | if (error != IRECV_E_SUCCESS) { |
| 2523 | debug("Failed to send command %s\n", command); | 2523 | debug("Failed to send command %s\n", command); |
| 2524 | if (error != IRECV_E_PIPE) | 2524 | if (error != IRECV_E_PIPE) |
| @@ -2538,6 +2538,10 @@ IRECV_API irecv_error_t irecv_send_command(irecv_client_t client, const char* co | |||
| 2538 | #endif | 2538 | #endif |
| 2539 | } | 2539 | } |
| 2540 | 2540 | ||
| 2541 | IRECV_API irecv_error_t irecv_send_command(irecv_client_t client, const char* command) { | ||
| 2542 | return irecv_send_command_breq(client, command, 0); | ||
| 2543 | } | ||
| 2544 | |||
| 2541 | IRECV_API irecv_error_t irecv_send_file(irecv_client_t client, const char* filename, int dfu_notify_finished) { | 2545 | IRECV_API irecv_error_t irecv_send_file(irecv_client_t client, const char* filename, int dfu_notify_finished) { |
| 2542 | #ifdef USE_DUMMY | 2546 | #ifdef USE_DUMMY |
| 2543 | return IRECV_E_UNSUPPORTED; | 2547 | return IRECV_E_UNSUPPORTED; |
| @@ -2815,7 +2819,7 @@ IRECV_API irecv_error_t irecv_getenv(irecv_client_t client, const char* variable | |||
| 2815 | 2819 | ||
| 2816 | memset(command, '\0', sizeof(command)); | 2820 | memset(command, '\0', sizeof(command)); |
| 2817 | snprintf(command, sizeof(command)-1, "getenv %s", variable); | 2821 | snprintf(command, sizeof(command)-1, "getenv %s", variable); |
| 2818 | irecv_error_t error = irecv_send_command_raw(client, command); | 2822 | irecv_error_t error = irecv_send_command_raw(client, command, 0); |
| 2819 | if(error == IRECV_E_PIPE) { | 2823 | if(error == IRECV_E_PIPE) { |
| 2820 | return IRECV_E_SUCCESS; | 2824 | return IRECV_E_SUCCESS; |
| 2821 | } | 2825 | } |
| @@ -2989,7 +2993,7 @@ IRECV_API irecv_error_t irecv_saveenv(irecv_client_t client) { | |||
| 2989 | #ifdef USE_DUMMY | 2993 | #ifdef USE_DUMMY |
| 2990 | return IRECV_E_UNSUPPORTED; | 2994 | return IRECV_E_UNSUPPORTED; |
| 2991 | #else | 2995 | #else |
| 2992 | irecv_error_t error = irecv_send_command_raw(client, "saveenv"); | 2996 | irecv_error_t error = irecv_send_command_raw(client, "saveenv", 0); |
| 2993 | if(error != IRECV_E_SUCCESS) { | 2997 | if(error != IRECV_E_SUCCESS) { |
| 2994 | return error; | 2998 | return error; |
| 2995 | } | 2999 | } |
| @@ -3013,7 +3017,7 @@ IRECV_API irecv_error_t irecv_setenv(irecv_client_t client, const char* variable | |||
| 3013 | 3017 | ||
| 3014 | memset(command, '\0', sizeof(command)); | 3018 | memset(command, '\0', sizeof(command)); |
| 3015 | snprintf(command, sizeof(command)-1, "setenv %s %s", variable, value); | 3019 | snprintf(command, sizeof(command)-1, "setenv %s %s", variable, value); |
| 3016 | irecv_error_t error = irecv_send_command_raw(client, command); | 3020 | irecv_error_t error = irecv_send_command_raw(client, command, 0); |
| 3017 | if(error != IRECV_E_SUCCESS) { | 3021 | if(error != IRECV_E_SUCCESS) { |
| 3018 | return error; | 3022 | return error; |
| 3019 | } | 3023 | } |
| @@ -3026,7 +3030,7 @@ IRECV_API irecv_error_t irecv_reboot(irecv_client_t client) { | |||
| 3026 | #ifdef USE_DUMMY | 3030 | #ifdef USE_DUMMY |
| 3027 | return IRECV_E_UNSUPPORTED; | 3031 | return IRECV_E_UNSUPPORTED; |
| 3028 | #else | 3032 | #else |
| 3029 | irecv_error_t error = irecv_send_command_raw(client, "reboot"); | 3033 | irecv_error_t error = irecv_send_command_raw(client, "reboot", 0); |
| 3030 | if(error != IRECV_E_SUCCESS) { | 3034 | if(error != IRECV_E_SUCCESS) { |
| 3031 | return error; | 3035 | return error; |
| 3032 | } | 3036 | } |
