#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