21#ifndef DYNAMIC_MODBUS_MASTER_SLAVEDEVICE_H
22#define DYNAMIC_MODBUS_MASTER_SLAVEDEVICE_H
25#include <esp_modbus_master.h>
66 template<ModbusData T>
68 mb_param_request_t request {
72 .reg_size = (std::is_same_v<bool, T>? 1 :
sizeof(T) / 2)
74 if (request.reg_size > 1) {
75 request.command = 0x10;
90 template<ModbusData T>
92 mb_param_request_t request {
96 .reg_size =
sizeof(T) /
sizeof(uint16_t)
122 template<ModbusData T>
124 if (std::is_same_v<T, bool> && coilNum == 1) {
125 mb_param_request_t request {
132 uint16_t sendData = (data ==
true ? 0xFF00 : 0x0000);
135 }
else if (!(std::is_same_v<T, bool>) && (coilNum > 1)){
137 mb_param_request_t request {
163 template<ModbusData T>
165 mb_param_request_t request {
171 if (std::is_same_v<T, bool> && coilNum == 1) {
174 return {error, (data != 0)};
175 }
else if (!(std::is_same_v<T, bool> && coilNum > 1)) {
178 return {error, data};
194 template<ModbusData T>
196 mb_param_request_t request {
200 .reg_size = (std::is_same_v<bool, T>? 1 :
sizeof(T) / 2)
207 return {error, data};
217 template<ModbusData T>
219 mb_param_request_t request {
223 .reg_size = (std::is_same_v<bool, T>? 1 :
sizeof(T) * 8)
226 if (std::is_same_v<bool, T>) {
231 return {error, (data != 0)};
237 return {error, data};
Interface class for slave devices in a Modbus network.
Definition SlaveDeviceIfc.h:47
A class representing a slave device in a Modbus network.
Definition SlaveDevice.h:39
ModbusError sendRequest(mb_param_request_t request, void *data) const
Helper function to send a modbus request.
Definition SlaveDevice.cpp:25
uint8_t m_retries
Definition SlaveDevice.h:243
~SlaveDevice() override=default
uint8_t m_address
Definition SlaveDevice.h:242
SlaveReturn< T > readInputs(uint16_t reg)
Reads data from the input registers of a Modbus slave device.
Definition SlaveDevice.h:195
ModbusError writeHolding(uint16_t reg, T data) const
Writes data to the holding registers of a Modbus slave device.
Definition SlaveDevice.h:67
ModbusError writeCoils(uint16_t reg, const T data, uint16_t coilNum) const
Writes data to the coils of a Modbus slave device.
Definition SlaveDevice.h:123
SlaveReturn< T > readHolding(uint16_t reg) const
Reads data from the holding registers of a Modbus slave device.
Definition SlaveDevice.h:91
SlaveReturn< T > readDiscreteInputs(uint16_t reg)
Reads data from the discrete inputs of a Modbus slave device.
Definition SlaveDevice.h:218
SlaveReturn< T > readCoils(uint16_t reg, uint16_t coilNum)
Reads data from the coils of a Modbus slave device.
Definition SlaveDevice.h:164
Definition ModbusData.hpp:45
ModbusError
Modbus Error Type Enum.
Definition ModbusError.h:30
@ INVALID_ARG
A given Argument was invalid.
Represents the return value from a Modbus slave device.
Definition ModbusData.hpp:58