diff options
| author | 2010-05-20 13:10:26 +0200 | |
|---|---|---|
| committer | 2010-05-20 13:10:26 +0200 | |
| commit | fdbdb9f9e964528d08038e51cd57f9545cef294a (patch) | |
| tree | 9f8b43a2d95121973d48c2c23c26d732168069cb /include | |
| parent | cf12a431935f814b6f0b98fe43915c48fde2fcf0 (diff) | |
| download | libirecovery-fdbdb9f9e964528d08038e51cd57f9545cef294a.tar.gz libirecovery-fdbdb9f9e964528d08038e51cd57f9545cef294a.tar.bz2 | |
Improve irecv_open()'s device selection logic and allow opening by uuid
Previous code did attempt to open anything with an Apple vendor id.
Now it also verifies if the USB device is within a mode we know and also
allows targeting a specific device by it's UUID.
Diffstat (limited to 'include')
| -rw-r--r-- | include/libirecovery.h | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/include/libirecovery.h b/include/libirecovery.h index 680448f..f977ebb 100644 --- a/include/libirecovery.h +++ b/include/libirecovery.h | |||
| @@ -32,10 +32,13 @@ typedef enum { | |||
| 32 | IRECV_ERROR_USB_CONFIGURATION = -10 | 32 | IRECV_ERROR_USB_CONFIGURATION = -10 |
| 33 | } irecv_error_t; | 33 | } irecv_error_t; |
| 34 | 34 | ||
| 35 | #define APPLE_VENDOR_ID 0x05AC | ||
| 36 | |||
| 35 | typedef enum { | 37 | typedef enum { |
| 36 | kAppleId = 0x05AC, | 38 | kRecoveryMode1 = 0x1280, |
| 37 | kKernelMode = 0x1294, | 39 | kRecoveryMode2 = 0x1281, |
| 38 | kRecoveryMode = 0x1281, | 40 | kRecoveryMode3 = 0x1282, |
| 41 | kRecoveryMode4 = 0x1283, | ||
| 39 | kDfuMode = 0x1227 | 42 | kDfuMode = 0x1227 |
| 40 | } irecv_mode_t; | 43 | } irecv_mode_t; |
| 41 | 44 | ||
| @@ -50,6 +53,7 @@ struct irecv_device { | |||
| 50 | int config; | 53 | int config; |
| 51 | int interface; | 54 | int interface; |
| 52 | int alt_interface; | 55 | int alt_interface; |
| 56 | char *uuid; | ||
| 53 | irecv_mode_t mode; | 57 | irecv_mode_t mode; |
| 54 | libusb_context* context; | 58 | libusb_context* context; |
| 55 | libusb_device_handle* handle; | 59 | libusb_device_handle* handle; |
| @@ -59,7 +63,7 @@ struct irecv_device { | |||
| 59 | 63 | ||
| 60 | irecv_device_t* irecv_init(); | 64 | irecv_device_t* irecv_init(); |
| 61 | const char* irecv_strerror(irecv_error_t error); | 65 | const char* irecv_strerror(irecv_error_t error); |
| 62 | irecv_error_t irecv_open(irecv_device_t* device); | 66 | irecv_error_t irecv_open(irecv_device_t* device, const char *uuid); |
| 63 | irecv_error_t irecv_exit(irecv_device_t* device); | 67 | irecv_error_t irecv_exit(irecv_device_t* device); |
| 64 | irecv_error_t irecv_reset(irecv_device_t* device); | 68 | irecv_error_t irecv_reset(irecv_device_t* device); |
| 65 | irecv_error_t irecv_close(irecv_device_t* device); | 69 | irecv_error_t irecv_close(irecv_device_t* device); |
