40class ModbusClientHandler {
42 ModbusClientHandler();
44 virtual ~ModbusClientHandler();
46 static Supla::Modbus::Result HoldingProcessRequest(
50 Supla::Modbus::Access access);
52 static Supla::Modbus::Result InputProcessRequest(uint16_t address,
56 static Supla::Modbus::Result CoilsProcessRequest(
60 Supla::Modbus::Access access);
62 static Supla::Modbus::Result DiscreteProcessRequest(uint16_t address,
66 static bool IsInputSupported();
67 static bool IsDiscreteSupported();
68 static bool IsCoilsSupported();
69 static bool IsHoldingSupported();
71 virtual bool isInputSupported();
72 virtual bool isDiscreteSupported();
73 virtual bool isCoilsSupported();
74 virtual bool isHoldingSupported();
76 virtual bool holdingRespondsToAddress(uint16_t address, uint16_t nRegs);
77 virtual Supla::Modbus::Result holdingProcessRequest(
81 Supla::Modbus::Access access);
83 virtual bool inputRespondsToAddress(uint16_t address, uint16_t nRegs);
84 virtual Supla::Modbus::Result inputProcessRequest(uint16_t address,
88 virtual bool coilsRespondsToAddress(uint16_t address, uint16_t nRegs);
89 virtual Supla::Modbus::Result coilsProcessRequest(
93 Supla::Modbus::Access access);
95 virtual bool discreteRespondsToAddress(uint16_t address, uint16_t nRegs);
96 virtual Supla::Modbus::Result discreteProcessRequest(uint16_t address,
101 void storeBigEndian(uint64_t value,
103 uint8_t registerOffset,
104 uint8_t registerCount);
105 uint16_t modbusAddressOffset = 0;
106 uint16_t usedRegistersCount = 0;
109 static ModbusClientHandler *GetHoldingHandler(uint16_t address,
111 static ModbusClientHandler *GetInputHandler(uint16_t address,
113 static ModbusClientHandler *GetDiscreteHandler(uint16_t address,
115 static ModbusClientHandler *GetCoilsHandler(uint16_t address,
117 static ModbusClientHandler *first;
118 ModbusClientHandler *next =
nullptr;