summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile1
-rw-r--r--include/libirecovery.h4
-rw-r--r--src/libirecovery.c43
3 files changed, 46 insertions, 2 deletions
diff --git a/Makefile b/Makefile
index 2606226..cba35d0 100644
--- a/Makefile
+++ b/Makefile
@@ -23,6 +23,7 @@ install:
23 cp libirecovery.so /usr/local/lib/libirecovery.so 23 cp libirecovery.so /usr/local/lib/libirecovery.so
24 cp include/libirecovery.h /usr/local/include/libirecovery.h 24 cp include/libirecovery.h /usr/local/include/libirecovery.h
25 cp irecovery /usr/local/bin/irecovery 25 cp irecovery /usr/local/bin/irecovery
26 ldconfig
26 27
27uninstall: 28uninstall:
28 rm -rf /usr/local/lib/libirecovery.so 29 rm -rf /usr/local/lib/libirecovery.so
diff --git a/include/libirecovery.h b/include/libirecovery.h
index a501c0f..20ecfc7 100644
--- a/include/libirecovery.h
+++ b/include/libirecovery.h
@@ -83,7 +83,9 @@ irecv_error_t irecv_receive(irecv_client_t client);
83irecv_error_t irecv_send_exploit(irecv_client_t client); 83irecv_error_t irecv_send_exploit(irecv_client_t client);
84irecv_error_t irecv_set_debug(irecv_client_t client, int level); 84irecv_error_t irecv_set_debug(irecv_client_t client, int level);
85irecv_error_t irecv_getenv(irecv_client_t client, unsigned char** var); 85irecv_error_t irecv_getenv(irecv_client_t client, unsigned char** var);
86irecv_error_t irecv_get_ecid(irecv_client_t client, unsigned long long* pecid); 86irecv_error_t irecv_get_cpid(irecv_client_t client, unsigned int* cpid);
87irecv_error_t irecv_get_bdid(irecv_client_t client, unsigned int* bdid);
88irecv_error_t irecv_get_ecid(irecv_client_t client, unsigned long long* ecid);
87irecv_error_t irecv_send(irecv_client_t client, unsigned char* command); 89irecv_error_t irecv_send(irecv_client_t client, unsigned char* command);
88irecv_error_t irecv_send_file(irecv_client_t client, const char* filename); 90irecv_error_t irecv_send_file(irecv_client_t client, const char* filename);
89irecv_error_t irecv_send_command(irecv_client_t client, unsigned char* command); 91irecv_error_t irecv_send_command(irecv_client_t client, unsigned char* command);
diff --git a/src/libirecovery.c b/src/libirecovery.c
index a641562..1303fc5 100644
--- a/src/libirecovery.c
+++ b/src/libirecovery.c
@@ -393,6 +393,48 @@ irecv_error_t irecv_getenv(irecv_client_t client, unsigned char** var) {
393 return IRECV_E_SUCCESS; 393 return IRECV_E_SUCCESS;
394} 394}
395 395
396irecv_error_t irecv_get_cpid(irecv_client_t client, unsigned int* cpid) {
397 char info[256];
398 memset(info, '\0', 256);
399
400 if (client == NULL || client->handle == NULL) {
401 return IRECV_E_NO_DEVICE;
402 }
403
404 libusb_get_string_descriptor_ascii(client->handle, 3, info, 255);
405 printf("%d: %s\n", strlen(info), info);
406
407 unsigned char* cpid_string = strstr(info, "CPID:");
408 if (cpid_string == NULL) {
409 *cpid = 0;
410 return IRECV_E_UNKNOWN_ERROR;
411 }
412 sscanf(cpid_string, "CPID:%d", cpid);
413
414 return IRECV_E_SUCCESS;
415}
416
417irecv_error_t irecv_get_bdid(irecv_client_t client, unsigned int* bdid) {
418 char info[256];
419 memset(info, '\0', 256);
420
421 if (client == NULL || client->handle == NULL) {
422 return IRECV_E_NO_DEVICE;
423 }
424
425 libusb_get_string_descriptor_ascii(client->handle, 3, info, 255);
426 printf("%d: %s\n", strlen(info), info);
427
428 unsigned char* bdid_string = strstr(info, "BDID:");
429 if (bdid_string == NULL) {
430 *bdid = 0;
431 return IRECV_E_UNKNOWN_ERROR;
432 }
433 sscanf(bdid_string, "BDID:%d", bdid);
434
435 return IRECV_E_SUCCESS;
436}
437
396irecv_error_t irecv_get_ecid(irecv_client_t client, unsigned long long* ecid) { 438irecv_error_t irecv_get_ecid(irecv_client_t client, unsigned long long* ecid) {
397 char info[256]; 439 char info[256];
398 memset(info, '\0', 256); 440 memset(info, '\0', 256);
@@ -411,7 +453,6 @@ irecv_error_t irecv_get_ecid(irecv_client_t client, unsigned long long* ecid) {
411 } 453 }
412 sscanf(ecid_string, "ECID:%qX", ecid); 454 sscanf(ecid_string, "ECID:%qX", ecid);
413 455
414 irecv_reset(client);
415 return IRECV_E_SUCCESS; 456 return IRECV_E_SUCCESS;
416} 457}
417 458