]> mj.ucw.cz Git - home-hw.git/blob - lib/modbus.h
Merge branch 'master' of ssh://git.ucw.cz/home/mj/GIT/home-hw
[home-hw.git] / lib / modbus.h
1 /*
2  *      Generic MODBUS Library for STM32
3  *
4  *      (c) 2019 Martin Mareš <mj@ucw.cz>
5  */
6
7 #ifndef _MODBUS_H
8 #define _MODBUS_H
9
10 void modbus_init(void);
11 void modbus_loop(void);
12
13 // If a call-back wants to signal a slave error in the reply
14 void modbus_slave_error(void);
15
16 // Callbacks
17
18 bool modbus_check_discrete_input(u16 addr);
19 bool modbus_get_discrete_input(u16 addr);
20
21 bool modbus_check_coil(u16 addr);
22 bool modbus_get_coil(u16 addr);
23 void modbus_set_coil(u16 addr, bool value);
24
25 bool modbus_check_input_register(u16 addr);
26 u16 modbus_get_input_register(u16 addr);
27
28 bool modbus_check_holding_register(u16 addr);
29 u16 modbus_get_holding_register(u16 addr);
30 void modbus_set_holding_register(u16 addr, u16 value);
31
32 void modbus_ready_hook(void);
33 void modbus_frame_start_hook(void);
34
35 enum modbus_id_object {
36         MODBUS_ID_VENDOR_NAME,          // first three must be always defined
37         MODBUS_ID_PRODUCT_CODE,
38         MODBUS_ID_MAJOR_MINOR_REVISION,
39         MODBUS_ID_VENDOR_URL,           // the rest may be NULL
40         MODBUS_ID_PRODUCT_NAME,
41         MODBUS_ID_USER_APP_NAME,
42         MODBUS_ID_MAX,
43 };
44
45 extern const char * const modbus_id_strings[MODBUS_ID_MAX];
46
47 #endif