22 lines
1.2 KiB
C
22 lines
1.2 KiB
C
/*
|
||
* Проверка количества данных и перенос значений Modbus между сообщением и банком регистров.
|
||
* Coils упакованы младшим битом вперёд, а пары байтов сообщения имеют собственный порядок;
|
||
* адресный диапазон проверяет вызывающий порт.
|
||
*/
|
||
|
||
#ifndef SET_MODBUS_DATA_H
|
||
#define SET_MODBUS_DATA_H
|
||
#include <stddef.h>
|
||
#include <stdint.h>
|
||
/* Decoded Modbus values, independent of UART/HAL and register addresses.
|
||
* Coils in bank use bit 0 first in 16-bit words. Message words contain two
|
||
* wire bytes, first byte in bits 15..8 (same convention as register messages).
|
||
* The port validates/maps the complete address range before calling transfer.
|
||
* Return standard Modbus exceptions: 0 success, 1 function, 3 value. */
|
||
uint8_t mb_data_validate(uint8_t function, uint16_t quantity, uint16_t byte_count,
|
||
size_t data_capacity);
|
||
uint8_t mb_data_transfer(uint8_t function, uint16_t quantity, uint16_t byte_count,
|
||
uint16_t *bank, uint16_t bit_offset, uint16_t *data,
|
||
size_t data_capacity, uint16_t *response_bytes);
|
||
#endif
|