IOControl/include/IO/Modbus/Request.h
Go to the documentation of this file.
1 
22 #pragma once
23 
24 #include "../RS485/Request.h"
25 #include "Device.h"
26 #include "PDU.h"
27 
28 namespace IO::Modbus
29 {
30 class Request : public RS485::Request
31 {
32 public:
34  {
35  }
36 
37  Device& getDevice() const
38  {
39  return static_cast<Device&>(device);
40  }
41 
42  virtual Function fillRequestData(PDU::Data& data) = 0;
43 
44  bool setNode(DevNode node) override
45  {
46  return true;
47  }
48 
52  virtual uint16_t getAddress() const
53  {
54  return device.address();
55  }
56 
63  virtual ErrorCode callback(PDU& pdu) = 0;
64 };
65 
66 } // namespace IO::Modbus
Function
Definition: IOControl/include/IO/Modbus/Function.h:45
Device & device
Definition: IOControl/include/IO/Request.h:280
A virtual device, represents a modbus slave device.
Definition: Libraries/IOControl/include/IO/Modbus/Device.h:38
int16_t ErrorCode
Definition: Libraries/IOControl/include/IO/Error.h:27
Protocol Data Unit.
Definition: PDU.h:45
virtual uint16_t address() const
Devices with a numeric address should implement this method.
Definition: Libraries/IOControl/include/IO/Device.h:153
Definition: IOControl/include/IO/Modbus/Request.h:30
Definition: IOControl/include/IO/RS485/Request.h:27
virtual uint16_t getAddress() const
Allows per-request address override (e.g. for broadcast)
Definition: IOControl/include/IO/Modbus/Request.h:52
Identifies a device node.
Definition: DevNode.h:30
Request(Device &device)
Definition: IOControl/include/IO/Modbus/Request.h:33
Device & getDevice() const
Definition: IOControl/include/IO/Modbus/Request.h:37
bool setNode(DevNode node) override
If nodes are supported, implement this method.
Definition: IOControl/include/IO/Modbus/Request.h:44
Definition: PDU.h:52
virtual Function fillRequestData(PDU::Data &data)=0
Definition: ADU.h:25