diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/libirecovery.h | 88 |
1 files changed, 49 insertions, 39 deletions
diff --git a/include/libirecovery.h b/include/libirecovery.h index a33e49a..94522d7 100644 --- a/include/libirecovery.h +++ b/include/libirecovery.h | |||
@@ -27,6 +27,16 @@ extern "C" { | |||
27 | 27 | ||
28 | #include <stdint.h> | 28 | #include <stdint.h> |
29 | 29 | ||
30 | #ifdef WIN32 | ||
31 | #define IRECV_API __declspec( dllexport ) | ||
32 | #else | ||
33 | #ifdef HAVE_FVISIBILITY | ||
34 | #define IRECV_API __attribute__((visibility("default"))) | ||
35 | #else | ||
36 | #define IRECV_API | ||
37 | #endif | ||
38 | #endif | ||
39 | |||
30 | enum irecv_mode { | 40 | enum irecv_mode { |
31 | IRECV_K_RECOVERY_MODE_1 = 0x1280, | 41 | IRECV_K_RECOVERY_MODE_1 = 0x1280, |
32 | IRECV_K_RECOVERY_MODE_2 = 0x1281, | 42 | IRECV_K_RECOVERY_MODE_2 = 0x1281, |
@@ -111,64 +121,64 @@ typedef struct irecv_client_private irecv_client_private; | |||
111 | typedef irecv_client_private* irecv_client_t; | 121 | typedef irecv_client_private* irecv_client_t; |
112 | 122 | ||
113 | /* library */ | 123 | /* library */ |
114 | void irecv_set_debug_level(int level); | 124 | IRECV_API void irecv_set_debug_level(int level); |
115 | const char* irecv_strerror(irecv_error_t error); | 125 | IRECV_API const char* irecv_strerror(irecv_error_t error); |
116 | void irecv_init(void); /* deprecated: libirecovery has constructor now */ | 126 | IRECV_API void irecv_init(void); /* deprecated: libirecovery has constructor now */ |
117 | void irecv_exit(void); /* deprecated: libirecovery has destructor now */ | 127 | IRECV_API void irecv_exit(void); /* deprecated: libirecovery has destructor now */ |
118 | 128 | ||
119 | /* device connectivity */ | 129 | /* device connectivity */ |
120 | irecv_error_t irecv_open_with_ecid(irecv_client_t* client, uint64_t ecid); | 130 | IRECV_API irecv_error_t irecv_open_with_ecid(irecv_client_t* client, uint64_t ecid); |
121 | irecv_error_t irecv_open_with_ecid_and_attempts(irecv_client_t* pclient, uint64_t ecid, int attempts); | 131 | IRECV_API irecv_error_t irecv_open_with_ecid_and_attempts(irecv_client_t* pclient, uint64_t ecid, int attempts); |
122 | irecv_error_t irecv_reset(irecv_client_t client); | 132 | IRECV_API irecv_error_t irecv_reset(irecv_client_t client); |
123 | irecv_error_t irecv_close(irecv_client_t client); | 133 | IRECV_API irecv_error_t irecv_close(irecv_client_t client); |
124 | irecv_client_t irecv_reconnect(irecv_client_t client, int initial_pause); | 134 | IRECV_API irecv_client_t irecv_reconnect(irecv_client_t client, int initial_pause); |
125 | 135 | ||
126 | /* misc */ | 136 | /* misc */ |
127 | irecv_error_t irecv_receive(irecv_client_t client); | 137 | IRECV_API irecv_error_t irecv_receive(irecv_client_t client); |
128 | irecv_error_t irecv_execute_script(irecv_client_t client, const char* script); | 138 | IRECV_API irecv_error_t irecv_execute_script(irecv_client_t client, const char* script); |
129 | irecv_error_t irecv_reset_counters(irecv_client_t client); | 139 | IRECV_API irecv_error_t irecv_reset_counters(irecv_client_t client); |
130 | irecv_error_t irecv_finish_transfer(irecv_client_t client); | 140 | IRECV_API irecv_error_t irecv_finish_transfer(irecv_client_t client); |
131 | irecv_error_t irecv_trigger_limera1n_exploit(irecv_client_t client); | 141 | IRECV_API irecv_error_t irecv_trigger_limera1n_exploit(irecv_client_t client); |
132 | 142 | ||
133 | /* usb helpers */ | 143 | /* usb helpers */ |
134 | irecv_error_t irecv_usb_set_configuration(irecv_client_t client, int configuration); | 144 | IRECV_API irecv_error_t irecv_usb_set_configuration(irecv_client_t client, int configuration); |
135 | irecv_error_t irecv_usb_set_interface(irecv_client_t client, int usb_interface, int usb_alt_interface); | 145 | IRECV_API irecv_error_t irecv_usb_set_interface(irecv_client_t client, int usb_interface, int usb_alt_interface); |
136 | int irecv_usb_control_transfer(irecv_client_t client, uint8_t bm_request_type, uint8_t b_request, uint16_t w_value, uint16_t w_index, unsigned char *data, uint16_t w_length, unsigned int timeout); | 146 | IRECV_API int irecv_usb_control_transfer(irecv_client_t client, uint8_t bm_request_type, uint8_t b_request, uint16_t w_value, uint16_t w_index, unsigned char *data, uint16_t w_length, unsigned int timeout); |
137 | int irecv_usb_bulk_transfer(irecv_client_t client, unsigned char endpoint, unsigned char *data, int length, int *transferred, unsigned int timeout); | 147 | IRECV_API int irecv_usb_bulk_transfer(irecv_client_t client, unsigned char endpoint, unsigned char *data, int length, int *transferred, unsigned int timeout); |
138 | 148 | ||
139 | /* events */ | 149 | /* events */ |
140 | typedef void(*irecv_device_event_cb_t)(const irecv_device_event_t* event, void *user_data); | 150 | typedef void(*irecv_device_event_cb_t)(const irecv_device_event_t* event, void *user_data); |
141 | typedef struct irecv_device_event_context* irecv_device_event_context_t; | 151 | typedef struct irecv_device_event_context* irecv_device_event_context_t; |
142 | irecv_error_t irecv_device_event_subscribe(irecv_device_event_context_t *context, irecv_device_event_cb_t callback, void *user_data); | 152 | IRECV_API irecv_error_t irecv_device_event_subscribe(irecv_device_event_context_t *context, irecv_device_event_cb_t callback, void *user_data); |
143 | irecv_error_t irecv_device_event_unsubscribe(irecv_device_event_context_t context); | 153 | IRECV_API irecv_error_t irecv_device_event_unsubscribe(irecv_device_event_context_t context); |
144 | typedef int(*irecv_event_cb_t)(irecv_client_t client, const irecv_event_t* event); | 154 | typedef int(*irecv_event_cb_t)(irecv_client_t client, const irecv_event_t* event); |
145 | irecv_error_t irecv_event_subscribe(irecv_client_t client, irecv_event_type type, irecv_event_cb_t callback, void *user_data); | 155 | IRECV_API irecv_error_t irecv_event_subscribe(irecv_client_t client, irecv_event_type type, irecv_event_cb_t callback, void *user_data); |
146 | irecv_error_t irecv_event_unsubscribe(irecv_client_t client, irecv_event_type type); | 156 | IRECV_API irecv_error_t irecv_event_unsubscribe(irecv_client_t client, irecv_event_type type); |
147 | 157 | ||
148 | /* I/O */ | 158 | /* I/O */ |
149 | irecv_error_t irecv_send_file(irecv_client_t client, const char* filename, int dfu_notify_finished); | 159 | IRECV_API irecv_error_t irecv_send_file(irecv_client_t client, const char* filename, int dfu_notify_finished); |
150 | irecv_error_t irecv_send_command(irecv_client_t client, const char* command); | 160 | IRECV_API irecv_error_t irecv_send_command(irecv_client_t client, const char* command); |
151 | irecv_error_t irecv_send_command_breq(irecv_client_t client, const char* command, uint8_t b_request); | 161 | IRECV_API irecv_error_t irecv_send_command_breq(irecv_client_t client, const char* command, uint8_t b_request); |
152 | irecv_error_t irecv_send_buffer(irecv_client_t client, unsigned char* buffer, unsigned long length, int dfu_notify_finished); | 162 | IRECV_API irecv_error_t irecv_send_buffer(irecv_client_t client, unsigned char* buffer, unsigned long length, int dfu_notify_finished); |
153 | irecv_error_t irecv_recv_buffer(irecv_client_t client, char* buffer, unsigned long length); | 163 | IRECV_API irecv_error_t irecv_recv_buffer(irecv_client_t client, char* buffer, unsigned long length); |
154 | 164 | ||
155 | /* commands */ | 165 | /* commands */ |
156 | irecv_error_t irecv_saveenv(irecv_client_t client); | 166 | IRECV_API irecv_error_t irecv_saveenv(irecv_client_t client); |
157 | irecv_error_t irecv_getenv(irecv_client_t client, const char* variable, char** value); | 167 | IRECV_API irecv_error_t irecv_getenv(irecv_client_t client, const char* variable, char** value); |
158 | irecv_error_t irecv_setenv(irecv_client_t client, const char* variable, const char* value); | 168 | IRECV_API irecv_error_t irecv_setenv(irecv_client_t client, const char* variable, const char* value); |
159 | irecv_error_t irecv_setenv_np(irecv_client_t client, const char* variable, const char* value); | 169 | IRECV_API irecv_error_t irecv_setenv_np(irecv_client_t client, const char* variable, const char* value); |
160 | irecv_error_t irecv_reboot(irecv_client_t client); | 170 | IRECV_API irecv_error_t irecv_reboot(irecv_client_t client); |
161 | irecv_error_t irecv_getret(irecv_client_t client, unsigned int* value); | 171 | IRECV_API irecv_error_t irecv_getret(irecv_client_t client, unsigned int* value); |
162 | 172 | ||
163 | /* device information */ | 173 | /* device information */ |
164 | irecv_error_t irecv_get_mode(irecv_client_t client, int* mode); | 174 | IRECV_API irecv_error_t irecv_get_mode(irecv_client_t client, int* mode); |
165 | const struct irecv_device_info* irecv_get_device_info(irecv_client_t client); | 175 | IRECV_API const struct irecv_device_info* irecv_get_device_info(irecv_client_t client); |
166 | 176 | ||
167 | /* device database queries */ | 177 | /* device database queries */ |
168 | irecv_device_t irecv_devices_get_all(void); | 178 | IRECV_API irecv_device_t irecv_devices_get_all(void); |
169 | irecv_error_t irecv_devices_get_device_by_client(irecv_client_t client, irecv_device_t* device); | 179 | IRECV_API irecv_error_t irecv_devices_get_device_by_client(irecv_client_t client, irecv_device_t* device); |
170 | irecv_error_t irecv_devices_get_device_by_product_type(const char* product_type, irecv_device_t* device); | 180 | IRECV_API irecv_error_t irecv_devices_get_device_by_product_type(const char* product_type, irecv_device_t* device); |
171 | irecv_error_t irecv_devices_get_device_by_hardware_model(const char* hardware_model, irecv_device_t* device); | 181 | IRECV_API irecv_error_t irecv_devices_get_device_by_hardware_model(const char* hardware_model, irecv_device_t* device); |
172 | 182 | ||
173 | #ifdef __cplusplus | 183 | #ifdef __cplusplus |
174 | } | 184 | } |