summaryrefslogtreecommitdiffstats
path: root/include/libirecovery.h
diff options
context:
space:
mode:
authorGravatar Joshua Hill2010-05-26 00:56:36 -0400
committerGravatar Joshua Hill2010-05-26 00:56:36 -0400
commitce77e6ac8ead2cb4fd204c67eb4d8a67e9a8e608 (patch)
treeb8b65fc01acc901c776149a136c9f115e67d7b87 /include/libirecovery.h
parent8482031ce77cb4914b5a04ba4704484cc6548dcd (diff)
downloadlibirecovery-ce77e6ac8ead2cb4fd204c67eb4d8a67e9a8e608.tar.gz
libirecovery-ce77e6ac8ead2cb4fd204c67eb4d8a67e9a8e608.tar.bz2
Began work on a new event based callback system
Diffstat (limited to 'include/libirecovery.h')
-rw-r--r--include/libirecovery.h47
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
31typedef enum { 31typedef 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
45typedef 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
54typedef struct {
55 char* data;
56 irecv_event_type type;
57} irecv_event_t;
58
45struct irecv_client; 59struct irecv_client;
46typedef struct irecv_client* irecv_client_t; 60typedef struct irecv_client* irecv_client_t;
47 61
48typedef int(*irecv_send_callback)(irecv_client_t client, unsigned char* data, int size); 62typedef int(*irecv_send_callback)(irecv_client_t client, unsigned char* data, int size);
49typedef int(*irecv_receive_callback)(irecv_client_t client, unsigned char* data, int size); 63typedef int(*irecv_receive_callback)(irecv_client_t client, unsigned char* data, int size);
50 64
65typedef int(*irecv_event_cb_t)(irecv_client_t client, const irecv_event_t* event);
66
51struct irecv_client { 67struct 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
63const char* irecv_strerror(irecv_error_t error); 81irecv_error_t irecv_event_subscribe(irecv_client_t client, irecv_event_type type, irecv_event_cb_t callback, void *user_data);
82irecv_error_t irecv_event_unsubscribe(irecv_client_t client, irecv_event_type type);
64irecv_error_t irecv_open(irecv_client_t* client); 83irecv_error_t irecv_open(irecv_client_t* client);
65irecv_error_t irecv_reset(irecv_client_t client); 84irecv_error_t irecv_reset(irecv_client_t client);
66irecv_error_t irecv_close(irecv_client_t client); 85irecv_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
77irecv_error_t irecv_set_receiver(irecv_client_t client, irecv_receive_callback callback); 96irecv_error_t irecv_set_receiver(irecv_client_t client, irecv_receive_callback callback);
78irecv_error_t irecv_set_interface(irecv_client_t client, int interface, int alt_interface); 97irecv_error_t irecv_set_interface(irecv_client_t client, int interface, int alt_interface);
79irecv_error_t irecv_send_buffer(irecv_client_t client, unsigned char* buffer, unsigned int length); 98irecv_error_t irecv_send_buffer(irecv_client_t client, unsigned char* buffer, unsigned int length);
80 99const char* irecv_strerror(irecv_error_t error);