diff options
-rw-r--r-- | src/dfu.c | 21 | ||||
-rw-r--r-- | src/dfu.h | 1 |
2 files changed, 22 insertions, 0 deletions
@@ -107,6 +107,27 @@ int dfu_check_mode(struct idevicerestore_client_t* client, int* mode) { return 0; } +int dfu_check_device(struct idevicerestore_client_t* client) { + irecv_client_t dfu = NULL; + irecv_error_t dfu_error = IRECV_E_SUCCESS; + irecv_device_t device = NULL; + + irecv_init(); + dfu_error = irecv_open(&dfu, client->ecid); + if (dfu_error != IRECV_E_SUCCESS) { + return -1; + } + + dfu_error = irecv_get_device(dfu, &device); + if (dfu_error != IRECV_E_SUCCESS) { + return -1; + } + + irecv_close(dfu); + + return device->index; +} + int dfu_send_buffer(struct idevicerestore_client_t* client, char* buffer, uint32_t size) { irecv_error_t err = 0; @@ -38,6 +38,7 @@ struct dfu_client_t { int dfu_client_new(struct idevicerestore_client_t* client); void dfu_client_free(struct idevicerestore_client_t* client); int dfu_check_mode(struct idevicerestore_client_t* client, int* mode); +int dfu_check_device(struct idevicerestore_client_t* client); int dfu_send_buffer(struct idevicerestore_client_t* client, char* buffer, uint32_t size); int dfu_send_component(struct idevicerestore_client_t* client, plist_t build_identity, const char* component); int dfu_get_cpid(struct idevicerestore_client_t* client, unsigned int* cpid); |