]> www.fi.muni.cz Git - openparking.git/blob - firmware/modbus.h
Maximum distances as modbus registers
[openparking.git] / firmware / modbus.h
1 #ifndef MODBUS_H__
2 #define MODBUS_H__ 1
3
4 /*
5  * Loosely modelled after AVR-RS485 by Yoshinori Kohyama (http://algobit.jp/),
6  * available at https://github.com/kohyama/AVR-RS485/
7  *
8  * All bugs by Jan "Yenya" Kasprzak <kas@fi.muni.cz> :-)
9  */
10
11 void modbus_init(uint8_t unit_id);
12 void modbus_poll();
13
14 typedef enum {
15         MB_OK = 0,
16         MB_ILLEGAL_FUNC = 1,
17         MB_ILLEGAL_ADDR = 2,
18         MB_ILLEGAL_VAL  = 3,
19 } mb_exception;
20
21 #define MB_HOLD_REGS_BASE       1000
22 #define MB_N_HOLD_REGS          60
23 #define MB_N_HOLD_REGS_EEPROM   20
24 extern uint16_t hold_regs[MB_N_HOLD_REGS];
25 #define mb_unit_id      (hold_regs[0])
26
27 uint8_t hold_reg_is_valid(uint16_t reg, uint16_t val);
28
29 #endif /* MODBUS_H__ */