diff options
| author | 2010-05-26 00:56:36 -0400 | |
|---|---|---|
| committer | 2010-05-26 00:56:36 -0400 | |
| commit | ce77e6ac8ead2cb4fd204c67eb4d8a67e9a8e608 (patch) | |
| tree | b8b65fc01acc901c776149a136c9f115e67d7b87 /include | |
| parent | 8482031ce77cb4914b5a04ba4704484cc6548dcd (diff) | |
| download | libirecovery-ce77e6ac8ead2cb4fd204c67eb4d8a67e9a8e608.tar.gz libirecovery-ce77e6ac8ead2cb4fd204c67eb4d8a67e9a8e608.tar.bz2 | |
Began work on a new event based callback system
Diffstat (limited to 'include')
| -rw-r--r-- | include/libirecovery.h | 47 |
1 files changed, 33 insertions, 14 deletions
diff --git a/include/libirecovery.h b/include/libirecovery.h index fdc418b..ab43663 100644 --- a/include/libirecovery.h +++ b/include/libirecovery.h | |||
| @@ -25,29 +25,45 @@ enum { | |||
| 25 | kRecoveryMode2 = 0x1281, | 25 | kRecoveryMode2 = 0x1281, |
| 26 | kRecoveryMode3 = 0x1282, | 26 | kRecoveryMode3 = 0x1282, |
| 27 | kRecoveryMode4 = 0x1283, | 27 | kRecoveryMode4 = 0x1283, |
| 28 | kDfuMode = 0x1227 | 28 | kDfuMode = 0x1227 |
| 29 | }; | 29 | }; |
| 30 | 30 | ||
| 31 | typedef enum { | 31 | typedef enum { |
| 32 | IRECV_E_SUCCESS = 0, | 32 | IRECV_E_SUCCESS = 0, |
| 33 | IRECV_E_NO_DEVICE = -1, | 33 | IRECV_E_NO_DEVICE = -1, |
| 34 | IRECV_E_OUT_OF_MEMORY = -2, | 34 | IRECV_E_OUT_OF_MEMORY = -2, |
| 35 | IRECV_E_UNABLE_TO_CONNECT = -3, | 35 | IRECV_E_UNABLE_TO_CONNECT = -3, |
| 36 | IRECV_E_INVALID_INPUT = -4, | 36 | IRECV_E_INVALID_INPUT = -4, |
| 37 | IRECV_E_FILE_NOT_FOUND = -5, | 37 | IRECV_E_FILE_NOT_FOUND = -5, |
| 38 | IRECV_E_USB_UPLOAD = -6, | 38 | IRECV_E_USB_UPLOAD = -6, |
| 39 | IRECV_E_USB_STATUS = -7, | 39 | IRECV_E_USB_STATUS = -7, |
| 40 | IRECV_E_USB_INTERFACE = -8, | 40 | IRECV_E_USB_INTERFACE = -8, |
| 41 | IRECV_E_USB_CONFIGURATION = -9, | 41 | IRECV_E_USB_CONFIGURATION = -9, |
| 42 | IRECV_E_UNKNOWN_ERROR = -255 | 42 | IRECV_E_UNKNOWN_ERROR = -255 |
| 43 | } irecv_error_t; | 43 | } irecv_error_t; |
| 44 | 44 | ||
| 45 | typedef enum { | ||
| 46 | IRECV_DATA_RECV = 1, | ||
| 47 | IRECV_PRECOMMAND = 2, | ||
| 48 | IRECV_POSTCOMMAND = 3, | ||
| 49 | IRECV_CONNECTED = 4, | ||
| 50 | IRECV_DISCONNECTED = 5, | ||
| 51 | IRECV_PROGRESS = 6 | ||
| 52 | } irecv_event_type; | ||
| 53 | |||
| 54 | typedef struct { | ||
| 55 | char* data; | ||
| 56 | irecv_event_type type; | ||
| 57 | } irecv_event_t; | ||
| 58 | |||
| 45 | struct irecv_client; | 59 | struct irecv_client; |
| 46 | typedef struct irecv_client* irecv_client_t; | 60 | typedef struct irecv_client* irecv_client_t; |
| 47 | 61 | ||
| 48 | typedef int(*irecv_send_callback)(irecv_client_t client, unsigned char* data, int size); | 62 | typedef int(*irecv_send_callback)(irecv_client_t client, unsigned char* data, int size); |
| 49 | typedef int(*irecv_receive_callback)(irecv_client_t client, unsigned char* data, int size); | 63 | typedef int(*irecv_receive_callback)(irecv_client_t client, unsigned char* data, int size); |
| 50 | 64 | ||
| 65 | typedef int(*irecv_event_cb_t)(irecv_client_t client, const irecv_event_t* event); | ||
| 66 | |||
| 51 | struct irecv_client { | 67 | struct irecv_client { |
| 52 | int debug; | 68 | int debug; |
| 53 | int config; | 69 | int config; |
| @@ -58,9 +74,12 @@ struct irecv_client { | |||
| 58 | libusb_device_handle* handle; | 74 | libusb_device_handle* handle; |
| 59 | irecv_send_callback send_callback; | 75 | irecv_send_callback send_callback; |
| 60 | irecv_receive_callback receive_callback; | 76 | irecv_receive_callback receive_callback; |
| 77 | irecv_event_cb_t precommand_callback; | ||
| 78 | irecv_event_cb_t postcommand_callback; | ||
| 61 | }; | 79 | }; |
| 62 | 80 | ||
| 63 | const char* irecv_strerror(irecv_error_t error); | 81 | irecv_error_t irecv_event_subscribe(irecv_client_t client, irecv_event_type type, irecv_event_cb_t callback, void *user_data); |
| 82 | irecv_error_t irecv_event_unsubscribe(irecv_client_t client, irecv_event_type type); | ||
| 64 | irecv_error_t irecv_open(irecv_client_t* client); | 83 | irecv_error_t irecv_open(irecv_client_t* client); |
| 65 | irecv_error_t irecv_reset(irecv_client_t client); | 84 | irecv_error_t irecv_reset(irecv_client_t client); |
| 66 | irecv_error_t irecv_close(irecv_client_t client); | 85 | irecv_error_t irecv_close(irecv_client_t client); |
| @@ -77,4 +96,4 @@ irecv_error_t irecv_set_sender(irecv_client_t client, irecv_send_callback callba | |||
| 77 | irecv_error_t irecv_set_receiver(irecv_client_t client, irecv_receive_callback callback); | 96 | irecv_error_t irecv_set_receiver(irecv_client_t client, irecv_receive_callback callback); |
| 78 | irecv_error_t irecv_set_interface(irecv_client_t client, int interface, int alt_interface); | 97 | irecv_error_t irecv_set_interface(irecv_client_t client, int interface, int alt_interface); |
| 79 | irecv_error_t irecv_send_buffer(irecv_client_t client, unsigned char* buffer, unsigned int length); | 98 | irecv_error_t irecv_send_buffer(irecv_client_t client, unsigned char* buffer, unsigned int length); |
| 80 | 99 | const char* irecv_strerror(irecv_error_t error); | |
