Libraries/IOControl/include/IO/Modbus/Device.h
Go to the documentation of this file.
1 
20 #pragma once
21 
22 #include "../RS485/Device.h"
23 #include "ADU.h"
24 
25 namespace IO
26 {
27 namespace Modbus
28 {
29 class Request;
30 
40 class Device : public RS485::Device
41 {
42 public:
44 
45  ErrorCode init(const RS485::Device::Config& config);
46 
47  const DeviceType type() const override
48  {
49  return DeviceType::Modbus;
50  }
51 
55  virtual void onBroadcast(const ADU& adu)
56  {
57  }
58 
62  virtual void onRequest(ADU& adu)
63  {
64  }
65 
66  void handleEvent(IO::Request* request, Event event) override;
67 
68 private:
69  ErrorCode execute(Request* request);
70  ErrorCode readResponse(Request* request);
71 
72  Function requestFunction{};
73 };
74 
75 } // namespace Modbus
76 } // namespace IO
Function
Definition: IOControl/include/IO/Modbus/Function.h:47
Device(Controller &controller, const char *id)
Definition: Libraries/IOControl/include/IO/RS485/Device.h:67
const DeviceType type() const override
Definition: Libraries/IOControl/include/IO/Modbus/Device.h:47
Definition: IOControl/include/IO/Controller.h:25
A virtual device, represents a modbus slave device.
Definition: Libraries/IOControl/include/IO/Modbus/Device.h:40
Base device class for communicating with an RS485 slave.
Definition: Libraries/IOControl/include/IO/RS485/Device.h:34
virtual void onRequest(ADU &adu)
Handle a message specifically for this device.
Definition: Libraries/IOControl/include/IO/Modbus/Device.h:62
RS485 configuration.
Definition: Libraries/IOControl/include/IO/RS485/Device.h:40
Request represents a single user request/response over a bus.
Definition: IOControl/include/IO/Request.h:75
void handleEvent(IO::Request *request, Event event) override
Implementations may override this method to customise event handling.
int16_t ErrorCode
Definition: Libraries/IOControl/include/IO/Error.h:27
ErrorCode init(const RS485::Device::Config &config)
DeviceType
Definition: DeviceType.h:24
Definition: IOControl/include/IO/Modbus/Request.h:32
Event
Definition: Event.h:36
virtual void onBroadcast(const ADU &adu)
Handle a broadcast message.
Definition: Libraries/IOControl/include/IO/Modbus/Device.h:55
Definition: ADU.h:30