Commit ce0bdfbb9e9b9106b3d38298f0381596199f23ae

Authored by oldfaber
Committed by Stéphane Raimbault
1 parent a66b1c1f

Add EXPORT to exported functions.

Fix EXXX values defined in Microsoft C Runtime 10
src/modbus-data.c
@@ -25,6 +25,8 @@ @@ -25,6 +25,8 @@
25 #include <string.h> 25 #include <string.h>
26 #include <assert.h> 26 #include <assert.h>
27 27
  28 +#include "modbus.h"
  29 +
28 /* Sets many bits from a single byte value (all 8 bits of the byte value are 30 /* Sets many bits from a single byte value (all 8 bits of the byte value are
29 set) */ 31 set) */
30 void modbus_set_bits_from_byte(uint8_t *dest, int index, const uint8_t value) 32 void modbus_set_bits_from_byte(uint8_t *dest, int index, const uint8_t value)
src/modbus-rtu-private.h
@@ -42,7 +42,9 @@ @@ -42,7 +42,9 @@
42 #define _MODBUS_RTU_TIME_BETWEEN_RTS_SWITCH 10000 42 #define _MODBUS_RTU_TIME_BETWEEN_RTS_SWITCH 10000
43 43
44 #if defined(_WIN32) 44 #if defined(_WIN32)
  45 +#if !defined(ENOTSUP)
45 #define ENOTSUP WSAEOPNOTSUPP 46 #define ENOTSUP WSAEOPNOTSUPP
  47 +#endif
46 48
47 /* WIN32: struct containing serial handle and a receive buffer */ 49 /* WIN32: struct containing serial handle and a receive buffer */
48 #define PY_BUF_SIZE 512 50 #define PY_BUF_SIZE 512
src/modbus-rtu.h
@@ -28,21 +28,21 @@ MODBUS_BEGIN_DECLS @@ -28,21 +28,21 @@ MODBUS_BEGIN_DECLS
28 */ 28 */
29 #define MODBUS_RTU_MAX_ADU_LENGTH 256 29 #define MODBUS_RTU_MAX_ADU_LENGTH 256
30 30
31 -modbus_t* modbus_new_rtu(const char *device, int baud, char parity,  
32 - int data_bit, int stop_bit); 31 +EXPORT modbus_t* modbus_new_rtu(const char *device, int baud, char parity,
  32 + int data_bit, int stop_bit);
33 33
34 #define MODBUS_RTU_RS232 0 34 #define MODBUS_RTU_RS232 0
35 #define MODBUS_RTU_RS485 1 35 #define MODBUS_RTU_RS485 1
36 36
37 -int modbus_rtu_set_serial_mode(modbus_t *ctx, int mode);  
38 -int modbus_rtu_get_serial_mode(modbus_t *ctx); 37 +EXPORT int modbus_rtu_set_serial_mode(modbus_t *ctx, int mode);
  38 +EXPORT int modbus_rtu_get_serial_mode(modbus_t *ctx);
39 39
40 #define MODBUS_RTU_RTS_NONE 0 40 #define MODBUS_RTU_RTS_NONE 0
41 #define MODBUS_RTU_RTS_UP 1 41 #define MODBUS_RTU_RTS_UP 1
42 #define MODBUS_RTU_RTS_DOWN 2 42 #define MODBUS_RTU_RTS_DOWN 2
43 43
44 -int modbus_rtu_set_rts(modbus_t *ctx, int mode);  
45 -int modbus_rtu_get_rts(modbus_t *ctx); 44 +EXPORT int modbus_rtu_set_rts(modbus_t *ctx, int mode);
  45 +EXPORT int modbus_rtu_get_rts(modbus_t *ctx);
46 46
47 MODBUS_END_DECLS 47 MODBUS_END_DECLS
48 48
src/modbus-tcp.h
@@ -26,11 +26,22 @@ MODBUS_BEGIN_DECLS @@ -26,11 +26,22 @@ MODBUS_BEGIN_DECLS
26 #if defined(_WIN32) && !defined(__CYGWIN__) 26 #if defined(_WIN32) && !defined(__CYGWIN__)
27 /* Win32 with MinGW, supplement to <errno.h> */ 27 /* Win32 with MinGW, supplement to <errno.h> */
28 #include <winsock2.h> 28 #include <winsock2.h>
  29 +#if !defined(ECONNRESET)
29 #define ECONNRESET WSAECONNRESET 30 #define ECONNRESET WSAECONNRESET
  31 +#endif
  32 +#if !defined(ECONNREFUSED)
30 #define ECONNREFUSED WSAECONNREFUSED 33 #define ECONNREFUSED WSAECONNREFUSED
  34 +#endif
  35 +#if !defined(ETIMEDOUT)
31 #define ETIMEDOUT WSAETIMEDOUT 36 #define ETIMEDOUT WSAETIMEDOUT
  37 +#endif
  38 +#if !defined(ENOPROTOOPT)
32 #define ENOPROTOOPT WSAENOPROTOOPT 39 #define ENOPROTOOPT WSAENOPROTOOPT
33 #endif 40 #endif
  41 +#if !defined(EINPROGRESS)
  42 +#define EINPROGRESS WSAEINPROGRESS
  43 +#endif
  44 +#endif
34 45
35 #define MODBUS_TCP_DEFAULT_PORT 502 46 #define MODBUS_TCP_DEFAULT_PORT 502
36 #define MODBUS_TCP_SLAVE 0xFF 47 #define MODBUS_TCP_SLAVE 0xFF
@@ -40,13 +51,13 @@ MODBUS_BEGIN_DECLS @@ -40,13 +51,13 @@ MODBUS_BEGIN_DECLS
40 */ 51 */
41 #define MODBUS_TCP_MAX_ADU_LENGTH 260 52 #define MODBUS_TCP_MAX_ADU_LENGTH 260
42 53
43 -modbus_t* modbus_new_tcp(const char *ip_address, int port);  
44 -int modbus_tcp_listen(modbus_t *ctx, int nb_connection);  
45 -int modbus_tcp_accept(modbus_t *ctx, int *socket); 54 +EXPORT modbus_t* modbus_new_tcp(const char *ip_address, int port);
  55 +EXPORT int modbus_tcp_listen(modbus_t *ctx, int nb_connection);
  56 +EXPORT int modbus_tcp_accept(modbus_t *ctx, int *socket);
46 57
47 -modbus_t* modbus_new_tcp_pi(const char *node, const char *service);  
48 -int modbus_tcp_pi_listen(modbus_t *ctx, int nb_connection);  
49 -int modbus_tcp_pi_accept(modbus_t *ctx, int *socket); 58 +EXPORT modbus_t* modbus_new_tcp_pi(const char *node, const char *service);
  59 +EXPORT int modbus_tcp_pi_listen(modbus_t *ctx, int nb_connection);
  60 +EXPORT int modbus_tcp_pi_accept(modbus_t *ctx, int *socket);
50 61
51 MODBUS_END_DECLS 62 MODBUS_END_DECLS
52 63
src/modbus.h
@@ -34,6 +34,17 @@ @@ -34,6 +34,17 @@
34 34
35 #include "modbus-version.h" 35 #include "modbus-version.h"
36 36
  37 +#if defined(_WIN32)
  38 +# if defined(DLLBUILD)
  39 +/* define DLLBUILD when building the DLL */
  40 +# define EXPORT __declspec(dllexport)
  41 +# else
  42 +# define EXPORT __declspec(dllimport)
  43 +# endif
  44 +#else
  45 +# define EXPORT
  46 +#endif
  47 +
37 #ifdef __cplusplus 48 #ifdef __cplusplus
38 # define MODBUS_BEGIN_DECLS extern "C" { 49 # define MODBUS_BEGIN_DECLS extern "C" {
39 # define MODBUS_END_DECLS } 50 # define MODBUS_END_DECLS }
@@ -143,57 +154,57 @@ typedef enum @@ -143,57 +154,57 @@ typedef enum
143 MODBUS_ERROR_RECOVERY_PROTOCOL = (1<<2), 154 MODBUS_ERROR_RECOVERY_PROTOCOL = (1<<2),
144 } modbus_error_recovery_mode; 155 } modbus_error_recovery_mode;
145 156
146 -int modbus_set_slave(modbus_t* ctx, int slave);  
147 -int modbus_set_error_recovery(modbus_t *ctx, modbus_error_recovery_mode error_recovery);  
148 -void modbus_set_socket(modbus_t *ctx, int socket);  
149 -int modbus_get_socket(modbus_t *ctx); 157 +EXPORT int modbus_set_slave(modbus_t* ctx, int slave);
  158 +EXPORT int modbus_set_error_recovery(modbus_t *ctx, modbus_error_recovery_mode error_recovery);
  159 +EXPORT void modbus_set_socket(modbus_t *ctx, int socket);
  160 +EXPORT int modbus_get_socket(modbus_t *ctx);
150 161
151 -void modbus_get_response_timeout(modbus_t *ctx, struct timeval *timeout);  
152 -void modbus_set_response_timeout(modbus_t *ctx, const struct timeval *timeout); 162 +EXPORT void modbus_get_response_timeout(modbus_t *ctx, struct timeval *timeout);
  163 +EXPORT void modbus_set_response_timeout(modbus_t *ctx, const struct timeval *timeout);
153 164
154 -void modbus_get_byte_timeout(modbus_t *ctx, struct timeval *timeout);  
155 -void modbus_set_byte_timeout(modbus_t *ctx, const struct timeval *timeout); 165 +EXPORT void modbus_get_byte_timeout(modbus_t *ctx, struct timeval *timeout);
  166 +EXPORT void modbus_set_byte_timeout(modbus_t *ctx, const struct timeval *timeout);
156 167
157 -int modbus_get_header_length(modbus_t *ctx); 168 +EXPORT int modbus_get_header_length(modbus_t *ctx);
158 169
159 -int modbus_connect(modbus_t *ctx);  
160 -void modbus_close(modbus_t *ctx); 170 +EXPORT int modbus_connect(modbus_t *ctx);
  171 +EXPORT void modbus_close(modbus_t *ctx);
161 172
162 -void modbus_free(modbus_t *ctx); 173 +EXPORT void modbus_free(modbus_t *ctx);
163 174
164 -int modbus_flush(modbus_t *ctx);  
165 -void modbus_set_debug(modbus_t *ctx, int boolean); 175 +EXPORT int modbus_flush(modbus_t *ctx);
  176 +EXPORT void modbus_set_debug(modbus_t *ctx, int boolean);
166 177
167 -const char *modbus_strerror(int errnum); 178 +EXPORT const char *modbus_strerror(int errnum);
168 179
169 -int modbus_read_bits(modbus_t *ctx, int addr, int nb, uint8_t *dest);  
170 -int modbus_read_input_bits(modbus_t *ctx, int addr, int nb, uint8_t *dest);  
171 -int modbus_read_registers(modbus_t *ctx, int addr, int nb, uint16_t *dest);  
172 -int modbus_read_input_registers(modbus_t *ctx, int addr, int nb, uint16_t *dest);  
173 -int modbus_write_bit(modbus_t *ctx, int coil_addr, int status);  
174 -int modbus_write_register(modbus_t *ctx, int reg_addr, int value);  
175 -int modbus_write_bits(modbus_t *ctx, int addr, int nb, const uint8_t *data);  
176 -int modbus_write_registers(modbus_t *ctx, int addr, int nb, const uint16_t *data);  
177 -int modbus_write_and_read_registers(modbus_t *ctx, int write_addr, int write_nb,  
178 - const uint16_t *src, int read_addr, int read_nb,  
179 - uint16_t *dest);  
180 -int modbus_report_slave_id(modbus_t *ctx, uint8_t *dest); 180 +EXPORT int modbus_read_bits(modbus_t *ctx, int addr, int nb, uint8_t *dest);
  181 +EXPORT int modbus_read_input_bits(modbus_t *ctx, int addr, int nb, uint8_t *dest);
  182 +EXPORT int modbus_read_registers(modbus_t *ctx, int addr, int nb, uint16_t *dest);
  183 +EXPORT int modbus_read_input_registers(modbus_t *ctx, int addr, int nb, uint16_t *dest);
  184 +EXPORT int modbus_write_bit(modbus_t *ctx, int coil_addr, int status);
  185 +EXPORT int modbus_write_register(modbus_t *ctx, int reg_addr, int value);
  186 +EXPORT int modbus_write_bits(modbus_t *ctx, int addr, int nb, const uint8_t *data);
  187 +EXPORT int modbus_write_registers(modbus_t *ctx, int addr, int nb, const uint16_t *data);
  188 +EXPORT int modbus_write_and_read_registers(modbus_t *ctx, int write_addr, int write_nb,
  189 + const uint16_t *src, int read_addr, int read_nb,
  190 + uint16_t *dest);
  191 +EXPORT int modbus_report_slave_id(modbus_t *ctx, uint8_t *dest);
181 192
182 -modbus_mapping_t* modbus_mapping_new(int nb_coil_status, int nb_input_status,  
183 - int nb_holding_registers, int nb_input_registers);  
184 -void modbus_mapping_free(modbus_mapping_t *mb_mapping); 193 +EXPORT modbus_mapping_t* modbus_mapping_new(int nb_coil_status, int nb_input_status,
  194 + int nb_holding_registers, int nb_input_registers);
  195 +EXPORT void modbus_mapping_free(modbus_mapping_t *mb_mapping);
185 196
186 -int modbus_send_raw_request(modbus_t *ctx, uint8_t *raw_req, int raw_req_length); 197 +EXPORT int modbus_send_raw_request(modbus_t *ctx, uint8_t *raw_req, int raw_req_length);
187 198
188 -int modbus_receive(modbus_t *ctx, uint8_t *req);  
189 -int modbus_receive_from(modbus_t *ctx, int sockfd, uint8_t *req); 199 +EXPORT int modbus_receive(modbus_t *ctx, uint8_t *req);
  200 +EXPORT int modbus_receive_from(modbus_t *ctx, int sockfd, uint8_t *req);
190 201
191 -int modbus_receive_confirmation(modbus_t *ctx, uint8_t *rsp); 202 +EXPORT int modbus_receive_confirmation(modbus_t *ctx, uint8_t *rsp);
192 203
193 -int modbus_reply(modbus_t *ctx, const uint8_t *req,  
194 - int req_length, modbus_mapping_t *mb_mapping);  
195 -int modbus_reply_exception(modbus_t *ctx, const uint8_t *req,  
196 - unsigned int exception_code); 204 +EXPORT int modbus_reply(modbus_t *ctx, const uint8_t *req,
  205 + int req_length, modbus_mapping_t *mb_mapping);
  206 +EXPORT int modbus_reply_exception(modbus_t *ctx, const uint8_t *req,
  207 + unsigned int exception_code);
197 208
198 /** 209 /**
199 * UTILS FUNCTIONS 210 * UTILS FUNCTIONS
@@ -209,12 +220,12 @@ int modbus_reply_exception(modbus_t *ctx, const uint8_t *req, @@ -209,12 +220,12 @@ int modbus_reply_exception(modbus_t *ctx, const uint8_t *req,
209 tab_int8[(index) + 1] = (value) & 0xFF; \ 220 tab_int8[(index) + 1] = (value) & 0xFF; \
210 } while (0) 221 } while (0)
211 222
212 -void modbus_set_bits_from_byte(uint8_t *dest, int index, const uint8_t value);  
213 -void modbus_set_bits_from_bytes(uint8_t *dest, int index, unsigned int nb_bits,  
214 - const uint8_t *tab_byte);  
215 -uint8_t modbus_get_byte_from_bits(const uint8_t *src, int index, unsigned int nb_bits);  
216 -float modbus_get_float(const uint16_t *src);  
217 -void modbus_set_float(float f, uint16_t *dest); 223 +EXPORT void modbus_set_bits_from_byte(uint8_t *dest, int index, const uint8_t value);
  224 +EXPORT void modbus_set_bits_from_bytes(uint8_t *dest, int index, unsigned int nb_bits,
  225 + const uint8_t *tab_byte);
  226 +EXPORT uint8_t modbus_get_byte_from_bits(const uint8_t *src, int index, unsigned int nb_bits);
  227 +EXPORT float modbus_get_float(const uint16_t *src);
  228 +EXPORT void modbus_set_float(float f, uint16_t *dest);
218 229
219 #include "modbus-tcp.h" 230 #include "modbus-tcp.h"
220 #include "modbus-rtu.h" 231 #include "modbus-rtu.h"