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 {  	kRecoveryMode2 = 0x1281,  	kRecoveryMode3 = 0x1282,  	kRecoveryMode4 = 0x1283, -	kDfuMode       = 0x1227 +	kDfuMode = 0x1227  };  typedef enum { -	IRECV_E_SUCCESS =              0, -	IRECV_E_NO_DEVICE =           -1, -	IRECV_E_OUT_OF_MEMORY =       -2, -	IRECV_E_UNABLE_TO_CONNECT =   -3, -	IRECV_E_INVALID_INPUT =       -4, -	IRECV_E_FILE_NOT_FOUND =      -5, -	IRECV_E_USB_UPLOAD =          -6, -	IRECV_E_USB_STATUS =          -7, -	IRECV_E_USB_INTERFACE =       -8, -	IRECV_E_USB_CONFIGURATION =   -9, -	IRECV_E_UNKNOWN_ERROR =     -255 +	IRECV_E_SUCCESS = 0, +	IRECV_E_NO_DEVICE = -1, +	IRECV_E_OUT_OF_MEMORY = -2, +	IRECV_E_UNABLE_TO_CONNECT = -3, +	IRECV_E_INVALID_INPUT = -4, +	IRECV_E_FILE_NOT_FOUND = -5, +	IRECV_E_USB_UPLOAD = -6, +	IRECV_E_USB_STATUS = -7, +	IRECV_E_USB_INTERFACE = -8, +	IRECV_E_USB_CONFIGURATION = -9, +	IRECV_E_UNKNOWN_ERROR = -255  } irecv_error_t; +typedef enum { +	IRECV_DATA_RECV = 1, +	IRECV_PRECOMMAND = 2, +	IRECV_POSTCOMMAND = 3, +	IRECV_CONNECTED = 4, +	IRECV_DISCONNECTED = 5, +	IRECV_PROGRESS = 6 +} irecv_event_type; + +typedef struct { +	char* data; +	irecv_event_type type; +} irecv_event_t; +  struct irecv_client;  typedef struct irecv_client* irecv_client_t;  typedef int(*irecv_send_callback)(irecv_client_t client, unsigned char* data, int size);  typedef int(*irecv_receive_callback)(irecv_client_t client, unsigned char* data, int size); +typedef int(*irecv_event_cb_t)(irecv_client_t client, const irecv_event_t* event); +  struct irecv_client {  	int debug;  	int config; @@ -58,9 +74,12 @@ struct irecv_client {  	libusb_device_handle* handle;  	irecv_send_callback send_callback;  	irecv_receive_callback receive_callback; +	irecv_event_cb_t precommand_callback; +	irecv_event_cb_t postcommand_callback;  }; -const char* irecv_strerror(irecv_error_t error); +irecv_error_t irecv_event_subscribe(irecv_client_t client, irecv_event_type type, irecv_event_cb_t callback, void *user_data); +irecv_error_t irecv_event_unsubscribe(irecv_client_t client, irecv_event_type type);  irecv_error_t irecv_open(irecv_client_t* client);  irecv_error_t irecv_reset(irecv_client_t client);  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  irecv_error_t irecv_set_receiver(irecv_client_t client, irecv_receive_callback callback);  irecv_error_t irecv_set_interface(irecv_client_t client, int interface, int alt_interface);  irecv_error_t irecv_send_buffer(irecv_client_t client, unsigned char* buffer, unsigned int length); - +const char* irecv_strerror(irecv_error_t error); | 
