ADU.h
Go to the documentation of this file.
1 
20 #pragma once
21 
22 #include "PDU.h"
23 #include "../Error.h"
24 
25 namespace IO
26 {
27 namespace Modbus
28 {
29 // Buffer to construct RTU requests and process responses
30 struct ADU {
31  static constexpr uint8_t BROADCAST_ADDRESS{0x00};
32  static constexpr size_t MinSize{4};
33  static constexpr size_t MaxSize{256};
34 
35  union {
36  struct {
39  };
41  };
42 
49  size_t prepareRequest();
50  size_t prepareResponse();
59  ErrorCode parseRequest(size_t receivedSize);
60  ErrorCode parseResponse(size_t receivedSize);
63 private:
64  size_t preparePacket(size_t pduSize);
65  ErrorCode parsePacket(size_t receivedSize, size_t pduSize);
66 };
67 
68 static_assert(offsetof(ADU, pdu) == 1, "ADU alignment error");
69 
70 } // namespace Modbus
71 } // namespace IO
Protocol Data Unit.
Definition: PDU.h:47
static constexpr uint8_t BROADCAST_ADDRESS
Definition: ADU.h:31
uint8_t buffer[MaxSize]
Definition: ADU.h:40
PDU pdu
Definition: ADU.h:38
uint8_t slaveAddress
Definition: ADU.h:37
Definition: IOControl/include/IO/Controller.h:25
ErrorCode parseResponse(size_t receivedSize)
static constexpr size_t MinSize
Definition: ADU.h:32
size_t prepareRequest()
static constexpr size_t MaxSize
Definition: ADU.h:33
int16_t ErrorCode
Definition: Libraries/IOControl/include/IO/Error.h:27
ErrorCode parseRequest(size_t receivedSize)
Definition: ADU.h:30
size_t prepareResponse()