|
Modbus Vault v1.0
|
Implementation of the modbus slicer. More...
Macros | |
| #define | MODBUS_SLICER_USECONDS_PER_SECOND (1000000UL) |
| #define | MODBUS_SLICER_INT_MULTIPLY_BY_3_5(num) ((7 * num) / 2) |
| #define | MODBUS_SLICER_INT_CALCULATE_20_PERCENT(num) ((num) / 5) |
Functions | |
| void | modbus_slicer_init (modbus_slicer_t *slicer_ptr, modbus_slicer_config_t *config_ptr) |
| Initialize slicer. | |
| void | modbus_slicer_feed (modbus_slicer_t *slicer_ptr, const uint8_t *data_ptr, size_t length, int64_t timestamp_us) |
| Feed data to slicer state-machine. | |
| void | modbus_slicer_timeout (modbus_slicer_t *slicer_ptr) |
| Signal frame timeout. | |
| void | modbus_slicer_check_timeout (modbus_slicer_t *slicer_ptr) |
| Check for frame timeout. | |
Implementation of the modbus slicer.
| #define MODBUS_SLICER_INT_CALCULATE_20_PERCENT | ( | num | ) | ((num) / 5) |
Multiply a num by 20% or (1/5)
| #define MODBUS_SLICER_INT_MULTIPLY_BY_3_5 | ( | num | ) | ((7 * num) / 2) |
Multiply a num by 3.5
| #define MODBUS_SLICER_USECONDS_PER_SECOND (1000000UL) |
Micro-seconds in one second
| void modbus_slicer_check_timeout | ( | modbus_slicer_t * | slicer_ptr | ) |
Check for frame timeout.
Check for frame timeout by comparing last received byte to current time and timeout if it exceeds 3.5 characters time
| slicer_ptr | Pointer to slicer structure |
| void modbus_slicer_feed | ( | modbus_slicer_t * | slicer_ptr, |
| const uint8_t * | data_ptr, | ||
| size_t | length, | ||
| int64_t | timestamp_us | ||
| ) |
Feed data to slicer state-machine.
| slicer_ptr | Pointer to slicer structure |
| data_ptr | Pointer to data buffer |
| length | Data buffer length |
| timestamp_us | Data timestamp |
| void modbus_slicer_init | ( | modbus_slicer_t * | slicer_ptr, |
| modbus_slicer_config_t * | config_ptr | ||
| ) |
Initialize slicer.
Initialize slicer by calculating 3.5 characters time using standard frame length 11-bits and baud rate used by rs485 driver
| slicer_ptr | Pointer to slicer structure |
| config_ptr | Pointer to slicer configuration structure |
| void modbus_slicer_timeout | ( | modbus_slicer_t * | slicer_ptr | ) |
Signal frame timeout.
Slice the frame since 3.5 characters time has passed and call registered callback function
| slicer_ptr | Pointer to slicer structure |