summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/libirecovery.h29
-rw-r--r--src/libirecovery.c3
-rw-r--r--tools/irecovery.c2
3 files changed, 22 insertions, 12 deletions
diff --git a/include/libirecovery.h b/include/libirecovery.h
index 1e615aa..f974080 100644
--- a/include/libirecovery.h
+++ b/include/libirecovery.h
@@ -85,7 +85,6 @@ typedef struct {
85struct irecv_client; 85struct irecv_client;
86typedef struct irecv_client* irecv_client_t; 86typedef struct irecv_client* irecv_client_t;
87typedef struct irecv_device* irecv_device_t; 87typedef struct irecv_device* irecv_device_t;
88typedef int(*irecv_event_cb_t)(irecv_client_t client, const irecv_event_t* event);
89 88
90struct irecv_client { 89struct irecv_client {
91 int debug; 90 int debug;
@@ -197,14 +196,24 @@ static struct irecv_device irecv_devices[] = {
197 { -1, NULL, NULL, -1, -1 } 196 { -1, NULL, NULL, -1, -1 }
198}; 197};
199 198
199/* library */
200void irecv_set_debug_level(int level); 200void irecv_set_debug_level(int level);
201const char* irecv_strerror(irecv_error_t error); 201const char* irecv_strerror(irecv_error_t error);
202void irecv_init();
203void irecv_exit();
204
205/* device connectivity */
202irecv_error_t irecv_open_with_ecid(irecv_client_t* client, unsigned long long ecid); 206irecv_error_t irecv_open_with_ecid(irecv_client_t* client, unsigned long long ecid);
203irecv_error_t irecv_open_with_ecid_and_attempts(irecv_client_t* pclient, unsigned long long ecid, int attempts); 207irecv_error_t irecv_open_with_ecid_and_attempts(irecv_client_t* pclient, unsigned long long ecid, int attempts);
204irecv_error_t irecv_reset(irecv_client_t client); 208irecv_error_t irecv_reset(irecv_client_t client);
205irecv_error_t irecv_close(irecv_client_t client); 209irecv_error_t irecv_close(irecv_client_t client);
210irecv_client_t irecv_reconnect(irecv_client_t client, int initial_pause);
211
212/* misc */
206irecv_error_t irecv_receive(irecv_client_t client); 213irecv_error_t irecv_receive(irecv_client_t client);
207irecv_error_t irecv_execute_script(irecv_client_t client, const char* script); 214irecv_error_t irecv_execute_script(irecv_client_t client, const char* script);
215irecv_error_t irecv_reset_counters(irecv_client_t client);
216irecv_error_t irecv_finish_transfer(irecv_client_t client);
208irecv_error_t irecv_trigger_limera1n_exploit(irecv_client_t client); 217irecv_error_t irecv_trigger_limera1n_exploit(irecv_client_t client);
209 218
210/* usb helpers */ 219/* usb helpers */
@@ -213,18 +222,25 @@ irecv_error_t irecv_usb_set_interface(irecv_client_t client, int interface, int
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); 222int 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); 223int irecv_usb_bulk_transfer(irecv_client_t client, unsigned char endpoint, unsigned char *data, int length, int *transferred, unsigned int timeout);
215 224
225/* events */
226typedef int(*irecv_event_cb_t)(irecv_client_t client, const irecv_event_t* event);
216irecv_error_t irecv_event_subscribe(irecv_client_t client, irecv_event_type type, irecv_event_cb_t callback, void *user_data); 227irecv_error_t irecv_event_subscribe(irecv_client_t client, irecv_event_type type, irecv_event_cb_t callback, void *user_data);
217irecv_error_t irecv_event_unsubscribe(irecv_client_t client, irecv_event_type type); 228irecv_error_t irecv_event_unsubscribe(irecv_client_t client, irecv_event_type type);
218 229
230/* I/O */
219irecv_error_t irecv_send_file(irecv_client_t client, const char* filename, int dfuNotifyFinished); 231irecv_error_t irecv_send_file(irecv_client_t client, const char* filename, int dfuNotifyFinished);
220irecv_error_t irecv_send_command(irecv_client_t client, const char* command); 232irecv_error_t irecv_send_command(irecv_client_t client, const char* command);
221irecv_error_t irecv_send_buffer(irecv_client_t client, unsigned char* buffer, unsigned long length, int dfuNotifyFinished); 233irecv_error_t irecv_send_buffer(irecv_client_t client, unsigned char* buffer, unsigned long length, int dfuNotifyFinished);
234irecv_error_t irecv_recv_buffer(irecv_client_t client, char* buffer, unsigned long length);
222 235
236/* commands */
223irecv_error_t irecv_saveenv(irecv_client_t client); 237irecv_error_t irecv_saveenv(irecv_client_t client);
224irecv_error_t irecv_getret(irecv_client_t client, unsigned int* value);
225irecv_error_t irecv_getenv(irecv_client_t client, const char* variable, char** value); 238irecv_error_t irecv_getenv(irecv_client_t client, const char* variable, char** value);
226irecv_error_t irecv_setenv(irecv_client_t client, const char* variable, const char* value); 239irecv_error_t irecv_setenv(irecv_client_t client, const char* variable, const char* value);
227irecv_error_t irecv_reboot(irecv_client_t client); 240irecv_error_t irecv_reboot(irecv_client_t client);
241irecv_error_t irecv_getret(irecv_client_t client, unsigned int* value);
242
243/* device information */
228irecv_error_t irecv_get_cpid(irecv_client_t client, unsigned int* cpid); 244irecv_error_t irecv_get_cpid(irecv_client_t client, unsigned int* cpid);
229irecv_error_t irecv_get_bdid(irecv_client_t client, unsigned int* bdid); 245irecv_error_t irecv_get_bdid(irecv_client_t client, unsigned int* bdid);
230irecv_error_t irecv_get_ecid(irecv_client_t client, unsigned long long* ecid); 246irecv_error_t irecv_get_ecid(irecv_client_t client, unsigned long long* ecid);
@@ -232,13 +248,8 @@ irecv_error_t irecv_get_nonce(irecv_client_t client, unsigned char** nonce, int*
232irecv_error_t irecv_get_srnm(irecv_client_t client, char* srnm); 248irecv_error_t irecv_get_srnm(irecv_client_t client, char* srnm);
233irecv_error_t irecv_get_imei(irecv_client_t client, char* imei); 249irecv_error_t irecv_get_imei(irecv_client_t client, char* imei);
234 250
235void irecv_init(); 251/* device database queries */
236void irecv_exit(); 252irecv_error_t irecv_devices_get_device_by_client(irecv_client_t client, irecv_device_t* device);
237irecv_client_t irecv_reconnect(irecv_client_t client, int initial_pause);
238irecv_error_t irecv_reset_counters(irecv_client_t client);
239irecv_error_t irecv_finish_transfer(irecv_client_t client);
240irecv_error_t irecv_recv_buffer(irecv_client_t client, char* buffer, unsigned long length);
241irecv_error_t irecv_get_device(irecv_client_t client, irecv_device_t* device);
242 253
243#ifdef __cplusplus 254#ifdef __cplusplus
244} 255}
diff --git a/src/libirecovery.c b/src/libirecovery.c
index 43be58c..9956fab 100644
--- a/src/libirecovery.c
+++ b/src/libirecovery.c
@@ -1439,8 +1439,7 @@ irecv_error_t irecv_finish_transfer(irecv_client_t client) {
1439 return IRECV_E_SUCCESS; 1439 return IRECV_E_SUCCESS;
1440} 1440}
1441 1441
1442irecv_error_t irecv_get_device(irecv_client_t client, irecv_device_t* device) { 1442irecv_error_t irecv_devices_get_device_by_client(irecv_client_t client, irecv_device_t* device) {
1443 int device_id = DEVICE_UNKNOWN;
1444 uint32_t bdid = 0; 1443 uint32_t bdid = 0;
1445 uint32_t cpid = 0; 1444 uint32_t cpid = 0;
1446 int i = 0; 1445 int i = 0;
diff --git a/tools/irecovery.c b/tools/irecovery.c
index 7945598..32e9f9f 100644
--- a/tools/irecovery.c
+++ b/tools/irecovery.c
@@ -345,7 +345,7 @@ int main(int argc, char* argv[]) {
345 } 345 }
346 346
347 irecv_device_t device = NULL; 347 irecv_device_t device = NULL;
348 irecv_get_device(client, &device); 348 irecv_devices_get_device_by_client(client, &device);
349 if (device) 349 if (device)
350 debug("Connected to %s, model %s, cpid 0x%04x, bdid 0x%02x\n", device->product, device->model, device->chip_id, device->board_id); 350 debug("Connected to %s, model %s, cpid 0x%04x, bdid 0x%02x\n", device->product, device->model, device->chip_id, device->board_id);
351 351