74 void valloc_push_back(SProtoModbusIOBind *alloc);
78#ifdef CONFIG_DAWN_PROTO_MODBUS_COIL
79 int coilsCb(uint8_t *buf, uint16_t addr, uint16_t ncoils,
enum nxmb_regmode_e mode,
void *priv);
82#ifdef CONFIG_DAWN_PROTO_MODBUS_DISCRETE
83 int discreteCb(uint8_t *buf, uint16_t addr, uint16_t ndiscrete,
void *priv);
86#ifdef CONFIG_DAWN_PROTO_MODBUS_INPUT
87 int inputCb(uint8_t *buf, uint16_t addr, uint16_t nregs,
void *priv);
90#ifdef CONFIG_DAWN_PROTO_MODBUS_HOLDING
91 int holdingCb(uint8_t *buf, uint16_t addr, uint16_t nregs,
enum nxmb_regmode_e mode,
void *priv);
95#ifdef CONFIG_DAWN_PROTO_MODBUS_SEEKABLE
98 SProtoModbusRegs *reg;
100 std::vector<size_t> seekOffsets;
101 std::vector<size_t> readProgressWords;
102 }
typedef SSeekableState;
105 std::vector<SProtoModbusIOBind *> valloc;
106#ifdef CONFIG_DAWN_PROTO_MODBUS_COIL
107 std::vector<SProtoModbusRegs *> vcoils;
109#ifdef CONFIG_DAWN_PROTO_MODBUS_DISCRETE
110 std::vector<SProtoModbusRegs *> vdiscrete;
112#ifdef CONFIG_DAWN_PROTO_MODBUS_INPUT
113 std::vector<SProtoModbusRegs *> vinput;
115#ifdef CONFIG_DAWN_PROTO_MODBUS_HOLDING
116 std::vector<SProtoModbusRegs *> vholding;
118#ifdef CONFIG_DAWN_PROTO_MODBUS_SEEKABLE
119 std::vector<SSeekableState *> vseekable;
125 SProtoModbusRegs *findGroup(uint16_t addr,
127 const std::vector<SProtoModbusRegs *> ®s);
129 const SProtoModbusRegs *hasOverlap(
const std::vector<SProtoModbusRegs *> ®s,
133 void cleanupGroups(std::vector<SProtoModbusRegs *> &groups);
135#if defined(CONFIG_DAWN_PROTO_MODBUS_COIL) || defined(CONFIG_DAWN_PROTO_MODBUS_DISCRETE)
136 int regReadWriteCoil(uint8_t *buff, uint16_t n,
int index,
bool read, SProtoModbusRegs *reg);
138 int regReadWriteCoilPacked(uint8_t *buff,
142 SProtoModbusRegs *reg);
145#if defined(CONFIG_DAWN_PROTO_MODBUS_INPUT) || defined(CONFIG_DAWN_PROTO_MODBUS_HOLDING)
146 int regReadWriteHolding(uint8_t *buff, uint16_t n,
int index,
bool read, SProtoModbusRegs *reg);
148 int standardRegRW(uint8_t *buff, uint16_t n,
int index,
bool read, SProtoModbusRegs *reg);
150# ifdef CONFIG_DAWN_PROTO_MODBUS_SEEKABLE
151 int seekableRegRW(uint8_t *buff,
155 SProtoModbusRegs *reg,
156 SSeekableState *seekState);
160#ifdef CONFIG_DAWN_PROTO_MODBUS_SEEKABLE
161 SSeekableState *findSeekableState(SProtoModbusRegs *reg);
164 int finalizeRegGroup(SProtoModbusRegs *tmp,
165 const SProtoModbusIOBind *v,
166 size_t seekWindowRegs,
167 bool addSeekableState);