8#define UNUSED(x) (void)(x)
11#include "wrap_endian.h"
21 memcpy(
this, frame,
sizeof(*
this));
26 leLength(bhf::ads::htole(numBytes))
31 uint32_t length()
const
33 return bhf::ads::letoh(leLength);
41 static const uint32_t SDO_UPLOAD = 0xF302;
43 AoERequestHeader(uint16_t sdoIndex, uint8_t sdoSubIndex, uint32_t dataLength)
44 :
AoERequestHeader(SDO_UPLOAD, ((uint32_t)sdoIndex) << 16 | sdoSubIndex, dataLength)
47 AoERequestHeader(uint32_t indexGroup, uint32_t indexOffset, uint32_t dataLength)
48 : leGroup(bhf::ads::htole(indexGroup)),
49 leOffset(bhf::ads::htole(indexOffset)),
50 leLength(bhf::ads::htole(dataLength))
54 const uint32_t leGroup;
55 const uint32_t leOffset;
56 const uint32_t leLength;
60 AoEReadWriteReqHeader(uint32_t indexGroup, uint32_t indexOffset, uint32_t readLength, uint32_t writeLength)
62 leWriteLength(bhf::ads::htole(writeLength))
65 const uint32_t leWriteLength;
70 : leAdsState(bhf::ads::htole(ads)),
71 leDevState(bhf::ads::htole(dev)),
72 leLength(bhf::ads::htole(dataLength))
76 const uint16_t leAdsState;
77 const uint16_t leDevState;
78 const uint32_t leLength;
88 : leGroup(bhf::ads::htole(__group)),
89 leOffset(bhf::ads::htole(__offset)),
90 leLength(bhf::ads::htole(__length)),
91 leMode(bhf::ads::htole(__mode)),
92 leMaxDelay(bhf::ads::htole(__maxDelay)),
93 leCycleTime(bhf::ads::htole(__cycleTime)),
100 const uint32_t leGroup;
101 const uint32_t leOffset;
102 const uint32_t leLength;
103 const uint32_t leMode;
104 const uint32_t leMaxDelay;
105 const uint32_t leCycleTime;
106 const std::array<uint8_t, 16> reserved;
110 static const uint16_t AMS_REQUEST = 0x0004;
111 static const uint16_t AMS_RESPONSE = 0x0005;
112 static const uint16_t AMS_UDP = 0x0040;
113 static const uint16_t INVALID = 0x0000;
114 static const uint16_t READ_DEVICE_INFO = 0x0001;
115 static const uint16_t READ = 0x0002;
116 static const uint16_t WRITE = 0x0003;
117 static const uint16_t READ_STATE = 0x0004;
118 static const uint16_t WRITE_CONTROL = 0x0005;
119 static const uint16_t ADD_DEVICE_NOTIFICATION = 0x0006;
120 static const uint16_t DEL_DEVICE_NOTIFICATION = 0x0007;
121 static const uint16_t DEVICE_NOTIFICATION = 0x0008;
122 static const uint16_t READ_WRITE = 0x0009;
135 uint16_t __targetPort,
137 uint16_t __sourcePort,
141 : targetNetId(__targetAddr),
142 leTargetPort(bhf::ads::htole(__targetPort)),
143 sourceNetId(__sourceAddr),
144 leSourcePort(bhf::ads::htole(__sourcePort)),
145 leCmdId(bhf::ads::htole(__cmdId)),
146 leStateFlags(bhf::ads::htole(AMS_REQUEST)),
147 leLength(bhf::ads::htole(__length)),
149 leInvokeId(bhf::ads::htole(__invokeId))
154 memcpy(
this, frame,
sizeof(*
this));
157 uint16_t cmdId()
const
159 return bhf::ads::letoh(leCmdId);
162 uint32_t errorCode()
const
164 return bhf::ads::letoh(leErrorCode);
167 uint32_t invokeId()
const
169 return bhf::ads::letoh(leInvokeId);
172 uint32_t length()
const
174 return bhf::ads::letoh(leLength);
179 return AmsAddr { sourceAddr(), sourcePort() };
187 uint16_t sourcePort()
const
189 return bhf::ads::letoh(leSourcePort);
192 uint16_t stateFlags()
const
194 return bhf::ads::letoh(leStateFlags);
202 uint16_t targetPort()
const
204 return bhf::ads::letoh(leTargetPort);
209 uint16_t leTargetPort;
211 uint16_t leSourcePort;
213 uint16_t leStateFlags;
215 uint32_t leErrorCode;
226 memcpy(
this, frame,
sizeof(*
this));
229 uint32_t result()
const
231 return bhf::ads::letoh(leResult);
244 memcpy(
this, frame,
sizeof(*
this));
247 uint32_t readLength()
const
249 return bhf::ads::letoh(leReadLength);
252 uint32_t leReadLength;
Definition: AmsHeader.h:81
Definition: AmsHeader.h:68
The complete address of an ADS device can be stored in this structure.
Definition: AdsDef.h:237
The NetId of and ADS device can be represented in this structure.
Definition: AdsDef.h:224