13 #include <unordered_map>
111 static constexpr std::uint32_t addressMask = 0xFFFF;
112 return static_cast<std::uint32_t
>(e) & addressMask;
118 static constexpr std::uint32_t subaddressMask = 0x70000;
119 return static_cast<std::uint8_t
>((
static_cast<std::uint32_t
>(e) & subaddressMask) >> 16);
131 if (a_address < b_address)
135 else if (a_address > b_address)
141 if (a_subaddress < b_subaddress)
171 template <EtherCATDataTypeEnum E>
175 return {name, E, EtherCATDataType::bitLength<typename TypeMap<E>::type>};
181 const std::unordered_map<RegisterEnum, RegisterInfo>
registerMap = {
191 makeInfo<EtherCATDataTypeEnum::BIT1>(
"FMMU bit operation not supported")},
193 makeInfo<EtherCATDataTypeEnum::BIT1>(
"No support for reserved register")},
198 makeInfo<EtherCATDataTypeEnum::BIT1>(
"Enhanced link detection EBUS")},
200 makeInfo<EtherCATDataTypeEnum::BIT1>(
"Enhanced link detection MII")},
202 makeInfo<EtherCATDataTypeEnum::BIT1>(
"Separate fcs error handling")},
204 makeInfo<EtherCATDataTypeEnum::UNSIGNED16>(
"Configured station address")},
206 makeInfo<EtherCATDataTypeEnum::UNSIGNED16>(
"Configured station alias")},
208 makeInfo<EtherCATDataTypeEnum::BIT1>(
"DLS user operational")},
210 makeInfo<EtherCATDataTypeEnum::BIT1>(
"Link status port 0")},
212 makeInfo<EtherCATDataTypeEnum::BIT1>(
"Link status port 1")},
214 makeInfo<EtherCATDataTypeEnum::BIT1>(
"Link status port 2")},
216 makeInfo<EtherCATDataTypeEnum::BIT1>(
"Link status port 3")},
218 makeInfo<EtherCATDataTypeEnum::BIT1>(
"Loop status port 0")},
220 makeInfo<EtherCATDataTypeEnum::BIT1>(
"Signal detection port 0")},
222 makeInfo<EtherCATDataTypeEnum::BIT1>(
"Loop status port 1")},
224 makeInfo<EtherCATDataTypeEnum::BIT1>(
"Signal detection port 1")},
226 makeInfo<EtherCATDataTypeEnum::BIT1>(
"Loop status port 2")},
228 makeInfo<EtherCATDataTypeEnum::BIT1>(
"Signal detection port 2")},
230 makeInfo<EtherCATDataTypeEnum::BIT1>(
"Loop status port 3")},
232 makeInfo<EtherCATDataTypeEnum::BIT1>(
"Signal detection port 3")},
243 makeInfo<EtherCATDataTypeEnum::UNSIGNED8>(
"Frame error counter port 0")},
245 makeInfo<EtherCATDataTypeEnum::UNSIGNED8>(
"Physical error counter port 0")},
247 makeInfo<EtherCATDataTypeEnum::UNSIGNED8>(
"Frame error counter port 1")},
249 makeInfo<EtherCATDataTypeEnum::UNSIGNED8>(
"Physical error counter port 1")},
251 makeInfo<EtherCATDataTypeEnum::UNSIGNED8>(
"Frame error counter port 2")},
253 makeInfo<EtherCATDataTypeEnum::UNSIGNED8>(
"Physical error counter port 2")},
255 makeInfo<EtherCATDataTypeEnum::UNSIGNED8>(
"Frame error counter port 3")},
257 makeInfo<EtherCATDataTypeEnum::UNSIGNED8>(
"Physical error counter port 3")},
259 makeInfo<EtherCATDataTypeEnum::UNSIGNED8>(
"Previous error counter port 0")},
261 makeInfo<EtherCATDataTypeEnum::UNSIGNED8>(
"Previous error counter port 1")},
263 makeInfo<EtherCATDataTypeEnum::UNSIGNED8>(
"Previous error counter port 2")},
265 makeInfo<EtherCATDataTypeEnum::UNSIGNED8>(
"Previous error counter port 3")},
267 makeInfo<EtherCATDataTypeEnum::UNSIGNED8>(
"Malformat frame counter")},
269 makeInfo<EtherCATDataTypeEnum::UNSIGNED8>(
"Local problem counter")},
271 makeInfo<EtherCATDataTypeEnum::UNSIGNED8>(
"Lost link counter port 0")},
273 makeInfo<EtherCATDataTypeEnum::UNSIGNED8>(
"Lost link counter port 1")},
275 makeInfo<EtherCATDataTypeEnum::UNSIGNED8>(
"Lost link counter port 2")},
277 makeInfo<EtherCATDataTypeEnum::UNSIGNED8>(
"Lost link counter port 3")},
279 makeInfo<EtherCATDataTypeEnum::BIT1>(
"SII read operation")},
281 makeInfo<EtherCATDataTypeEnum::BIT1>(
"SII write operation")},
283 makeInfo<EtherCATDataTypeEnum::BIT1>(
"SII reload operation")},
285 makeInfo<EtherCATDataTypeEnum::BIT1>(
"SII checksum error")},
287 makeInfo<EtherCATDataTypeEnum::BIT1>(
"SII device info error")},
289 makeInfo<EtherCATDataTypeEnum::BIT1>(
"SII command error")},
316 std::map<datatypes::RegisterEnum, datatypes::RegisterEnumTypeContainer>
registerData;