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 25 #include <string.h>
26 26 #include <assert.h>
27 27  
  28 +#include "modbus.h"
  29 +
28 30 /* Sets many bits from a single byte value (all 8 bits of the byte value are
29 31 set) */
30 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 42 #define _MODBUS_RTU_TIME_BETWEEN_RTS_SWITCH 10000
43 43  
44 44 #if defined(_WIN32)
  45 +#if !defined(ENOTSUP)
45 46 #define ENOTSUP WSAEOPNOTSUPP
  47 +#endif
46 48  
47 49 /* WIN32: struct containing serial handle and a receive buffer */
48 50 #define PY_BUF_SIZE 512
... ...
src/modbus-rtu.h
... ... @@ -28,21 +28,21 @@ MODBUS_BEGIN_DECLS
28 28 */
29 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 34 #define MODBUS_RTU_RS232 0
35 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 40 #define MODBUS_RTU_RTS_NONE 0
41 41 #define MODBUS_RTU_RTS_UP 1
42 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 47 MODBUS_END_DECLS
48 48  
... ...
src/modbus-tcp.h
... ... @@ -26,11 +26,22 @@ MODBUS_BEGIN_DECLS
26 26 #if defined(_WIN32) && !defined(__CYGWIN__)
27 27 /* Win32 with MinGW, supplement to <errno.h> */
28 28 #include <winsock2.h>
  29 +#if !defined(ECONNRESET)
29 30 #define ECONNRESET WSAECONNRESET
  31 +#endif
  32 +#if !defined(ECONNREFUSED)
30 33 #define ECONNREFUSED WSAECONNREFUSED
  34 +#endif
  35 +#if !defined(ETIMEDOUT)
31 36 #define ETIMEDOUT WSAETIMEDOUT
  37 +#endif
  38 +#if !defined(ENOPROTOOPT)
32 39 #define ENOPROTOOPT WSAENOPROTOOPT
33 40 #endif
  41 +#if !defined(EINPROGRESS)
  42 +#define EINPROGRESS WSAEINPROGRESS
  43 +#endif
  44 +#endif
34 45  
35 46 #define MODBUS_TCP_DEFAULT_PORT 502
36 47 #define MODBUS_TCP_SLAVE 0xFF
... ... @@ -40,13 +51,13 @@ MODBUS_BEGIN_DECLS
40 51 */
41 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 62 MODBUS_END_DECLS
52 63  
... ...
src/modbus.h
... ... @@ -34,6 +34,17 @@
34 34  
35 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 48 #ifdef __cplusplus
38 49 # define MODBUS_BEGIN_DECLS extern "C" {
39 50 # define MODBUS_END_DECLS }
... ... @@ -143,57 +154,57 @@ typedef enum
143 154 MODBUS_ERROR_RECOVERY_PROTOCOL = (1<<2),
144 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 210 * UTILS FUNCTIONS
... ... @@ -209,12 +220,12 @@ int modbus_reply_exception(modbus_t *ctx, const uint8_t *req,
209 220 tab_int8[(index) + 1] = (value) & 0xFF; \
210 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 230 #include "modbus-tcp.h"
220 231 #include "modbus-rtu.h"
... ...