summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Martin Szulecki2013-09-26 23:19:21 +0200
committerGravatar Martin Szulecki2013-09-26 23:19:21 +0200
commit188d8cbe0b788eeb07eea45204d59dc97fcc911e (patch)
tree2e17033a37c720557c16f904eb4a014e6fe969a0
parent85e60c68e1d080d3b822bfde9c1c7f9e59c5e0b4 (diff)
downloadlibirecovery-188d8cbe0b788eeb07eea45204d59dc97fcc911e.tar.gz
libirecovery-188d8cbe0b788eeb07eea45204d59dc97fcc911e.tar.bz2
Add "usb" prefix to all method names which are related to USB features
-rw-r--r--include/libirecovery.h11
-rw-r--r--src/libirecovery.c61
2 files changed, 36 insertions, 36 deletions
diff --git a/include/libirecovery.h b/include/libirecovery.h
index 14891a2..8a85e33 100644
--- a/include/libirecovery.h
+++ b/include/libirecovery.h
@@ -205,15 +205,17 @@ irecv_error_t irecv_reset(irecv_client_t client);
205irecv_error_t irecv_close(irecv_client_t client); 205irecv_error_t irecv_close(irecv_client_t client);
206irecv_error_t irecv_receive(irecv_client_t client); 206irecv_error_t irecv_receive(irecv_client_t client);
207irecv_error_t irecv_execute_script(irecv_client_t client, const char* script); 207irecv_error_t irecv_execute_script(irecv_client_t client, const char* script);
208irecv_error_t irecv_set_configuration(irecv_client_t client, int configuration);
209irecv_error_t irecv_trigger_limera1n_exploit(irecv_client_t client); 208irecv_error_t irecv_trigger_limera1n_exploit(irecv_client_t client);
210 209
210/* usb helpers */
211irecv_error_t irecv_usb_set_configuration(irecv_client_t client, int configuration);
212irecv_error_t irecv_usb_set_interface(irecv_client_t client, int interface, int alt_interface);
213int irecv_usb_control_transfer(irecv_client_t client, uint8_t bmRequestType, uint8_t bRequest, uint16_t wValue, uint16_t wIndex, unsigned char *data, uint16_t wLength, unsigned int timeout);
214int irecv_usb_bulk_transfer(irecv_client_t client, unsigned char endpoint, unsigned char *data, int length, int *transferred, unsigned int timeout);
215
211irecv_error_t irecv_event_subscribe(irecv_client_t client, irecv_event_type type, irecv_event_cb_t callback, void *user_data); 216irecv_error_t irecv_event_subscribe(irecv_client_t client, irecv_event_type type, irecv_event_cb_t callback, void *user_data);
212irecv_error_t irecv_event_unsubscribe(irecv_client_t client, irecv_event_type type); 217irecv_error_t irecv_event_unsubscribe(irecv_client_t client, irecv_event_type type);
213 218
214int irecv_control_transfer(irecv_client_t client, uint8_t bmRequestType, uint8_t bRequest, uint16_t wValue, uint16_t wIndex, unsigned char *data, uint16_t wLength, unsigned int timeout);
215int irecv_bulk_transfer(irecv_client_t client, unsigned char endpoint, unsigned char *data, int length, int *transferred, unsigned int timeout);
216
217irecv_error_t irecv_send_file(irecv_client_t client, const char* filename, int dfuNotifyFinished); 219irecv_error_t irecv_send_file(irecv_client_t client, const char* filename, int dfuNotifyFinished);
218irecv_error_t irecv_send_command(irecv_client_t client, const char* command); 220irecv_error_t irecv_send_command(irecv_client_t client, const char* command);
219irecv_error_t irecv_send_buffer(irecv_client_t client, unsigned char* buffer, unsigned long length, int dfuNotifyFinished); 221irecv_error_t irecv_send_buffer(irecv_client_t client, unsigned char* buffer, unsigned long length, int dfuNotifyFinished);
@@ -222,7 +224,6 @@ irecv_error_t irecv_saveenv(irecv_client_t client);
222irecv_error_t irecv_getret(irecv_client_t client, unsigned int* value); 224irecv_error_t irecv_getret(irecv_client_t client, unsigned int* value);
223irecv_error_t irecv_getenv(irecv_client_t client, const char* variable, char** value); 225irecv_error_t irecv_getenv(irecv_client_t client, const char* variable, char** value);
224irecv_error_t irecv_setenv(irecv_client_t client, const char* variable, const char* value); 226irecv_error_t irecv_setenv(irecv_client_t client, const char* variable, const char* value);
225irecv_error_t irecv_set_interface(irecv_client_t client, int interface, int alt_interface);
226irecv_error_t irecv_reboot(irecv_client_t client); 227irecv_error_t irecv_reboot(irecv_client_t client);
227irecv_error_t irecv_get_cpid(irecv_client_t client, unsigned int* cpid); 228irecv_error_t irecv_get_cpid(irecv_client_t client, unsigned int* cpid);
228irecv_error_t irecv_get_bdid(irecv_client_t client, unsigned int* bdid); 229irecv_error_t irecv_get_bdid(irecv_client_t client, unsigned int* bdid);
diff --git a/src/libirecovery.c b/src/libirecovery.c
index dd973f5..3c0780a 100644
--- a/src/libirecovery.c
+++ b/src/libirecovery.c
@@ -394,7 +394,7 @@ void irecv_exit() {
394 void dummy_callback() { } 394 void dummy_callback() { }
395#endif 395#endif
396 396
397int irecv_control_transfer( irecv_client_t client, 397int irecv_usb_control_transfer( irecv_client_t client,
398 uint8_t bmRequestType, 398 uint8_t bmRequestType,
399 uint8_t bRequest, 399 uint8_t bRequest,
400 uint16_t wValue, 400 uint16_t wValue,
@@ -446,7 +446,7 @@ int irecv_control_transfer( irecv_client_t client,
446#endif 446#endif
447} 447}
448 448
449int irecv_bulk_transfer(irecv_client_t client, 449int irecv_usb_bulk_transfer(irecv_client_t client,
450 unsigned char endpoint, 450 unsigned char endpoint,
451 unsigned char *data, 451 unsigned char *data,
452 int length, 452 int length,
@@ -482,7 +482,7 @@ static int irecv_get_string_descriptor_ascii(irecv_client_t client, uint8_t desc
482 memset(data, 0, sizeof(data)); 482 memset(data, 0, sizeof(data));
483 memset(buffer, 0, size); 483 memset(buffer, 0, size);
484 484
485 ret = irecv_control_transfer(client, 0x80, 0x06, (0x03 << 8) | desc_index, langid, data, sizeof(data), USB_TIMEOUT); 485 ret = irecv_usb_control_transfer(client, 0x80, 0x06, (0x03 << 8) | desc_index, langid, data, sizeof(data), USB_TIMEOUT);
486 486
487 if (ret < 0) return ret; 487 if (ret < 0) return ret;
488 if (data[1] != 0x03) return IRECV_E_UNKNOWN_ERROR; 488 if (data[1] != 0x03) return IRECV_E_UNKNOWN_ERROR;
@@ -590,18 +590,18 @@ irecv_error_t irecv_open_with_ecid(irecv_client_t* pclient, unsigned long long e
590 debug("found device with ECID " _FMT_016llx "\n", (unsigned long long)ecid); 590 debug("found device with ECID " _FMT_016llx "\n", (unsigned long long)ecid);
591 } 591 }
592 592
593 error = irecv_set_configuration(client, 1); 593 error = irecv_usb_set_configuration(client, 1);
594 if (error != IRECV_E_SUCCESS) { 594 if (error != IRECV_E_SUCCESS) {
595 return error; 595 return error;
596 } 596 }
597 597
598 if ((client->mode != kDfuMode) && (client->mode != kWTFMode)) { 598 if ((client->mode != kDfuMode) && (client->mode != kWTFMode)) {
599 error = irecv_set_interface(client, 0, 0); 599 error = irecv_usb_set_interface(client, 0, 0);
600 if (client->mode > kRecoveryMode2) { 600 if (client->mode > kRecoveryMode2) {
601 error = irecv_set_interface(client, 1, 1); 601 error = irecv_usb_set_interface(client, 1, 1);
602 } 602 }
603 } else { 603 } else {
604 error = irecv_set_interface(client, 0, 0); 604 error = irecv_usb_set_interface(client, 0, 0);
605 } 605 }
606 606
607 if (error != IRECV_E_SUCCESS) { 607 if (error != IRECV_E_SUCCESS) {
@@ -620,13 +620,12 @@ irecv_error_t irecv_open_with_ecid(irecv_client_t* pclient, unsigned long long e
620 if (ret == IRECV_E_SUCCESS) { 620 if (ret == IRECV_E_SUCCESS) {
621 irecv_client_t client = *pclient; 621 irecv_client_t client = *pclient;
622 int error = IRECV_E_SUCCESS; 622 int error = IRECV_E_SUCCESS;
623 if ((client->mode != kDfuMode) && (client->mode != kWTFMode)) { 623 error = irecv_usb_set_interface(client, 0, 0);
624 error = irecv_set_interface(client, 0, 0);
625 if (client->mode > kRecoveryMode2) { 624 if (client->mode > kRecoveryMode2) {
626 error = irecv_set_interface(client, 1, 1); 625 error = irecv_usb_set_interface(client, 1, 1);
627 } 626 }
628 } else { 627 } else {
629 error = irecv_set_interface(client, 0, 0); 628 error = irecv_usb_set_interface(client, 0, 0);
630 } 629 }
631 if (error != IRECV_E_SUCCESS) { 630 if (error != IRECV_E_SUCCESS) {
632 debug("WARNING: set interface failed, error %d\n", error); 631 debug("WARNING: set interface failed, error %d\n", error);
@@ -636,7 +635,7 @@ irecv_error_t irecv_open_with_ecid(irecv_client_t* pclient, unsigned long long e
636#endif 635#endif
637} 636}
638 637
639irecv_error_t irecv_set_configuration(irecv_client_t client, int configuration) { 638irecv_error_t irecv_usb_set_configuration(irecv_client_t client, int configuration) {
640 if (check_context(client) != IRECV_E_SUCCESS) return IRECV_E_NO_DEVICE; 639 if (check_context(client) != IRECV_E_SUCCESS) return IRECV_E_NO_DEVICE;
641 640
642#ifndef WIN32 641#ifndef WIN32
@@ -656,7 +655,7 @@ irecv_error_t irecv_set_configuration(irecv_client_t client, int configuration)
656 return IRECV_E_SUCCESS; 655 return IRECV_E_SUCCESS;
657} 656}
658 657
659irecv_error_t irecv_set_interface(irecv_client_t client, int interface, int alt_interface) { 658irecv_error_t irecv_usb_set_interface(irecv_client_t client, int interface, int alt_interface) {
660 if (check_context(client) != IRECV_E_SUCCESS) return IRECV_E_NO_DEVICE; 659 if (check_context(client) != IRECV_E_SUCCESS) return IRECV_E_NO_DEVICE;
661 660
662 debug("Setting to interface %d:%d\n", interface, alt_interface); 661 debug("Setting to interface %d:%d\n", interface, alt_interface);
@@ -672,7 +671,7 @@ irecv_error_t irecv_set_interface(irecv_client_t client, int interface, int alt_
672 return IRECV_E_USB_INTERFACE; 671 return IRECV_E_USB_INTERFACE;
673 } 672 }
674#else 673#else
675 if (irecv_control_transfer(client, 0, 0x0B, alt_interface, interface, NULL, 0, USB_TIMEOUT) < 0) { 674 if (irecv_usb_control_transfer(client, 0, 0x0B, alt_interface, interface, NULL, 0, USB_TIMEOUT) < 0) {
676 return IRECV_E_USB_INTERFACE; 675 return IRECV_E_USB_INTERFACE;
677 } 676 }
678#endif 677#endif
@@ -827,7 +826,7 @@ static irecv_error_t irecv_send_command_raw(irecv_client_t client, const char* c
827 } 826 }
828 827
829 if (length > 0) { 828 if (length > 0) {
830 irecv_control_transfer(client, 0x40, 0, 0, 0, (unsigned char*) command, length + 1, USB_TIMEOUT); 829 irecv_usb_control_transfer(client, 0x40, 0, 0, 0, (unsigned char*) command, length + 1, USB_TIMEOUT);
831 } 830 }
832 831
833 return IRECV_E_SUCCESS; 832 return IRECV_E_SUCCESS;
@@ -910,7 +909,7 @@ static irecv_error_t irecv_get_status(irecv_client_t client, unsigned int* statu
910 909
911 unsigned char buffer[6]; 910 unsigned char buffer[6];
912 memset(buffer, '\0', 6); 911 memset(buffer, '\0', 6);
913 if (irecv_control_transfer(client, 0xA1, 3, 0, 0, buffer, 6, USB_TIMEOUT) != 6) { 912 if (irecv_usb_control_transfer(client, 0xA1, 3, 0, 0, buffer, 6, USB_TIMEOUT) != 6) {
914 *status = 0; 913 *status = 0;
915 return IRECV_E_USB_STATUS; 914 return IRECV_E_USB_STATUS;
916 } 915 }
@@ -937,10 +936,10 @@ irecv_error_t irecv_send_buffer(irecv_client_t client, unsigned char* buffer, un
937 936
938 /* initiate transfer */ 937 /* initiate transfer */
939 if (recovery_mode) { 938 if (recovery_mode) {
940 error = irecv_control_transfer(client, 0x41, 0, 0, 0, NULL, 0, USB_TIMEOUT); 939 error = irecv_usb_control_transfer(client, 0x41, 0, 0, 0, NULL, 0, USB_TIMEOUT);
941 } else { 940 } else {
942 unsigned char dump[4]; 941 unsigned char dump[4];
943 if (irecv_control_transfer(client, 0xa1, 5, 0, 0, dump, 1, USB_TIMEOUT) == 1) { 942 if (irecv_usb_control_transfer(client, 0xa1, 5, 0, 0, dump, 1, USB_TIMEOUT) == 1) {
944 error = IRECV_E_SUCCESS; 943 error = IRECV_E_SUCCESS;
945 } else { 944 } else {
946 error = IRECV_E_USB_UPLOAD; 945 error = IRECV_E_USB_UPLOAD;
@@ -959,7 +958,7 @@ irecv_error_t irecv_send_buffer(irecv_client_t client, unsigned char* buffer, un
959 958
960 /* Use bulk transfer for recovery mode and control transfer for DFU and WTF mode */ 959 /* Use bulk transfer for recovery mode and control transfer for DFU and WTF mode */
961 if (recovery_mode) { 960 if (recovery_mode) {
962 error = irecv_bulk_transfer(client, 0x04, &buffer[i * packet_size], size, &bytes, USB_TIMEOUT); 961 error = irecv_usb_bulk_transfer(client, 0x04, &buffer[i * packet_size], size, &bytes, USB_TIMEOUT);
963 } else { 962 } else {
964 int j; 963 int j;
965 for (j = 0; j < size; j++) { 964 for (j = 0; j < size; j++) {
@@ -983,10 +982,10 @@ irecv_error_t irecv_send_buffer(irecv_client_t client, unsigned char* buffer, un
983 newbuf[size+14] = (h1 >> 16) & 0xFF; 982 newbuf[size+14] = (h1 >> 16) & 0xFF;
984 newbuf[size+15] = (h1 >> 24) & 0xFF; 983 newbuf[size+15] = (h1 >> 24) & 0xFF;
985 size += 16; 984 size += 16;
986 bytes = irecv_control_transfer(client, 0x21, 1, i, 0, (unsigned char*)newbuf, size, USB_TIMEOUT); 985 bytes = irecv_usb_control_transfer(client, 0x21, 1, i, 0, (unsigned char*)newbuf, size, USB_TIMEOUT);
987 free(newbuf); 986 free(newbuf);
988 } else { 987 } else {
989 bytes = irecv_control_transfer(client, 0x21, 1, i, 0, &buffer[i * packet_size], size, USB_TIMEOUT); 988 bytes = irecv_usb_control_transfer(client, 0x21, 1, i, 0, &buffer[i * packet_size], size, USB_TIMEOUT);
990 } 989 }
991 } 990 }
992 991
@@ -1030,7 +1029,7 @@ irecv_error_t irecv_send_buffer(irecv_client_t client, unsigned char* buffer, un
1030 } 1029 }
1031 1030
1032 if (dfuNotifyFinished && !recovery_mode) { 1031 if (dfuNotifyFinished && !recovery_mode) {
1033 irecv_control_transfer(client, 0x21, 1, packets, 0, (unsigned char*) buffer, 0, USB_TIMEOUT); 1032 irecv_usb_control_transfer(client, 0x21, 1, packets, 0, (unsigned char*) buffer, 0, USB_TIMEOUT);
1034 1033
1035 for (i = 0; i < 2; i++) { 1034 for (i = 0; i < 2; i++) {
1036 error = irecv_get_status(client, &status); 1035 error = irecv_get_status(client, &status);
@@ -1041,7 +1040,7 @@ irecv_error_t irecv_send_buffer(irecv_client_t client, unsigned char* buffer, un
1041 1040
1042 if (dfuNotifyFinished == 2) { 1041 if (dfuNotifyFinished == 2) {
1043 // we send a pseudo ZLP here just in case 1042 // we send a pseudo ZLP here just in case
1044 irecv_control_transfer(client, 0x21, 1, 0, 0, 0, 0, USB_TIMEOUT); 1043 irecv_usb_control_transfer(client, 0x21, 1, 0, 0, 0, 0, USB_TIMEOUT);
1045 } 1044 }
1046 1045
1047 irecv_reset(client); 1046 irecv_reset(client);
@@ -1056,7 +1055,7 @@ irecv_error_t irecv_receive(irecv_client_t client) {
1056 if (check_context(client) != IRECV_E_SUCCESS) return IRECV_E_NO_DEVICE; 1055 if (check_context(client) != IRECV_E_SUCCESS) return IRECV_E_NO_DEVICE;
1057 1056
1058 int bytes = 0; 1057 int bytes = 0;
1059 while (irecv_bulk_transfer(client, 0x81, (unsigned char*) buffer, BUFFER_SIZE, &bytes, 1000) == 0) { 1058 while (irecv_usb_bulk_transfer(client, 0x81, (unsigned char*) buffer, BUFFER_SIZE, &bytes, 1000) == 0) {
1060 if (bytes > 0) { 1059 if (bytes > 0) {
1061 if (client->received_callback != NULL) { 1060 if (client->received_callback != NULL) {
1062 irecv_event_t event; 1061 irecv_event_t event;
@@ -1098,7 +1097,7 @@ irecv_error_t irecv_getenv(irecv_client_t client, const char* variable, char** v
1098 } 1097 }
1099 1098
1100 memset(response, '\0', 256); 1099 memset(response, '\0', 256);
1101 irecv_control_transfer(client, 0xC0, 0, 0, 0, (unsigned char*) response, 255, USB_TIMEOUT); 1100 irecv_usb_control_transfer(client, 0xC0, 0, 0, 0, (unsigned char*) response, 255, USB_TIMEOUT);
1102 1101
1103 *value = response; 1102 *value = response;
1104 1103
@@ -1115,7 +1114,7 @@ irecv_error_t irecv_getret(irecv_client_t client, unsigned int* value) {
1115 } 1114 }
1116 1115
1117 memset(response, '\0', 256); 1116 memset(response, '\0', 256);
1118 irecv_control_transfer(client, 0xC0, 0, 0, 0, (unsigned char*) response, 255, USB_TIMEOUT); 1117 irecv_usb_control_transfer(client, 0xC0, 0, 0, 0, (unsigned char*) response, 255, USB_TIMEOUT);
1119 1118
1120 *value = (unsigned int) *response; 1119 *value = (unsigned int) *response;
1121 1120
@@ -1263,9 +1262,9 @@ irecv_error_t irecv_get_nonce(irecv_client_t client, unsigned char** nonce, int*
1263 return IRECV_E_SUCCESS; 1262 return IRECV_E_SUCCESS;
1264} 1263}
1265 1264
1266irecv_error_t irecv_send_exploit(irecv_client_t client) { 1265irecv_error_t irecv_trigger_limera1n_exploit(irecv_client_t client) {
1267 if (check_context(client) != IRECV_E_SUCCESS) return IRECV_E_NO_DEVICE; 1266 if (check_context(client) != IRECV_E_SUCCESS) return IRECV_E_NO_DEVICE;
1268 irecv_control_transfer(client, 0x21, 2, 0, 0, NULL, 0, USB_TIMEOUT); 1267 irecv_usb_control_transfer(client, 0x21, 2, 0, 0, NULL, 0, USB_TIMEOUT);
1269 return IRECV_E_SUCCESS; 1268 return IRECV_E_SUCCESS;
1270} 1269}
1271 1270
@@ -1378,7 +1377,7 @@ const char* irecv_strerror(irecv_error_t error) {
1378irecv_error_t irecv_reset_counters(irecv_client_t client) { 1377irecv_error_t irecv_reset_counters(irecv_client_t client) {
1379 if (check_context(client) != IRECV_E_SUCCESS) return IRECV_E_NO_DEVICE; 1378 if (check_context(client) != IRECV_E_SUCCESS) return IRECV_E_NO_DEVICE;
1380 if ((client->mode == kDfuMode) || (client->mode == kWTFMode)) { 1379 if ((client->mode == kDfuMode) || (client->mode == kWTFMode)) {
1381 irecv_control_transfer(client, 0x21, 4, 0, 0, 0, 0, USB_TIMEOUT); 1380 irecv_usb_control_transfer(client, 0x21, 4, 0, 0, 0, 0, USB_TIMEOUT);
1382 } 1381 }
1383 return IRECV_E_SUCCESS; 1382 return IRECV_E_SUCCESS;
1384} 1383}
@@ -1402,7 +1401,7 @@ irecv_error_t irecv_recv_buffer(irecv_client_t client, char* buffer, unsigned lo
1402 unsigned long count = 0; 1401 unsigned long count = 0;
1403 for (i = 0; i < packets; i++) { 1402 for (i = 0; i < packets; i++) {
1404 unsigned short size = (i+1) < packets ? packet_size : last; 1403 unsigned short size = (i+1) < packets ? packet_size : last;
1405 bytes = irecv_control_transfer(client, 0xA1, 2, 0, 0, (unsigned char*)&buffer[i * packet_size], size, USB_TIMEOUT); 1404 bytes = irecv_usb_control_transfer(client, 0xA1, 2, 0, 0, (unsigned char*)&buffer[i * packet_size], size, USB_TIMEOUT);
1406 1405
1407 if (bytes != size) { 1406 if (bytes != size) {
1408 return IRECV_E_USB_UPLOAD; 1407 return IRECV_E_USB_UPLOAD;
@@ -1430,7 +1429,7 @@ irecv_error_t irecv_finish_transfer(irecv_client_t client) {
1430 1429
1431 if (check_context(client) != IRECV_E_SUCCESS) return IRECV_E_NO_DEVICE; 1430 if (check_context(client) != IRECV_E_SUCCESS) return IRECV_E_NO_DEVICE;
1432 1431
1433 irecv_control_transfer(client, 0x21, 1, 0, 0, 0, 0, USB_TIMEOUT); 1432 irecv_usb_control_transfer(client, 0x21, 1, 0, 0, 0, 0, USB_TIMEOUT);
1434 1433
1435 for(i = 0; i < 3; i++){ 1434 for(i = 0; i < 3; i++){
1436 irecv_get_status(client, &status); 1435 irecv_get_status(client, &status);