#ifndef common_epd_types_h #define common_epd_types_h enum class EpdGeneration { None, Mk2, Mk3 }; enum class EpdTypes : uint8_t { Mk2BetaGamma = 0, Mk2Neutron = 3, Mk3BetaGamma = 4, Mk3Neutron = 7, Mk2Gamma = 16, Mk3Gamma = 20 }; #pragma pack (push) #pragma pack (1) struct DiscoveryId { uint32_t Id; EpdGeneration Gen; uint32_t MaxBaud; bool operator==(const DiscoveryId &other) const { return (Id == other.Id) && (Gen == other.Gen); } bool operator !=(const DiscoveryId &other) const { return !(*this == other); } } ; typedef struct { uint16_t Address; uint8_t Length; } MemoryBlockDetails; typedef struct { MemoryBlockDetails BlockDetail; uint8_t Data[UINT8_MAX]; } MemoryData; #pragma pack (pop) #endif