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::Modbus
26 {
27 // Buffer to construct RTU requests and process responses
28 struct ADU {
29  static constexpr uint8_t BROADCAST_ADDRESS{0x00};
30  static constexpr size_t MinSize{4};
31  static constexpr size_t MaxSize{256};
32 
33  union {
34  struct {
37  };
39  };
40 
47  size_t prepareRequest();
48  size_t prepareResponse();
57  ErrorCode parseRequest(size_t receivedSize);
58  ErrorCode parseResponse(size_t receivedSize);
61 private:
62  size_t preparePacket(size_t pduSize);
63  ErrorCode parsePacket(size_t receivedSize, size_t pduSize);
64 };
65 
66 static_assert(offsetof(ADU, pdu) == 1, "ADU alignment error");
67 
68 } // namespace IO::Modbus
Definition: ADU.h:28
int16_t ErrorCode
Definition: Libraries/IOControl/include/IO/Error.h:27
Protocol Data Unit.
Definition: PDU.h:45
PDU pdu
Definition: ADU.h:36
static constexpr size_t MaxSize
Definition: ADU.h:31
uint8_t slaveAddress
Definition: ADU.h:35
static constexpr size_t MinSize
Definition: ADU.h:30
uint8_t buffer[MaxSize]
Definition: ADU.h:38
size_t prepareRequest()
ErrorCode parseRequest(size_t receivedSize)
ErrorCode parseResponse(size_t receivedSize)
static constexpr uint8_t BROADCAST_ADDRESS
Definition: ADU.h:29
size_t prepareResponse()
Definition: ADU.h:25