diff options
| author | 2021-05-07 02:26:24 -0700 | |
|---|---|---|
| committer | 2023-05-05 02:52:00 +0200 | |
| commit | 14102fb7ef8737965c97836560eb3a287f480a25 (patch) | |
| tree | 263e9cba1b88073a1d68d7e54d1a49bf47fdcaf2 /include | |
| parent | 28be9537a632625deaa7d71979ebf725b1b9bbc2 (diff) | |
| download | libirecovery-14102fb7ef8737965c97836560eb3a287f480a25.tar.gz libirecovery-14102fb7ef8737965c97836560eb3a287f480a25.tar.bz2 | |
move IRECV_API into the headers
clang + lld + ucrt on Windows seems to require that the dllimport
attribute be applied to the first declaration.
Fixes -Wdll-attribute-on-declaration error.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
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 | } |
