summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorGravatar Martin Szulecki2010-05-20 13:10:26 +0200
committerGravatar Martin Szulecki2010-05-20 13:10:26 +0200
commitfdbdb9f9e964528d08038e51cd57f9545cef294a (patch)
tree9f8b43a2d95121973d48c2c23c26d732168069cb /include
parentcf12a431935f814b6f0b98fe43915c48fde2fcf0 (diff)
downloadlibirecovery-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.h12
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
35typedef enum { 37typedef 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
60irecv_device_t* irecv_init(); 64irecv_device_t* irecv_init();
61const char* irecv_strerror(irecv_error_t error); 65const char* irecv_strerror(irecv_error_t error);
62irecv_error_t irecv_open(irecv_device_t* device); 66irecv_error_t irecv_open(irecv_device_t* device, const char *uuid);
63irecv_error_t irecv_exit(irecv_device_t* device); 67irecv_error_t irecv_exit(irecv_device_t* device);
64irecv_error_t irecv_reset(irecv_device_t* device); 68irecv_error_t irecv_reset(irecv_device_t* device);
65irecv_error_t irecv_close(irecv_device_t* device); 69irecv_error_t irecv_close(irecv_device_t* device);