Windows: Fix build issues with EthPhyRegPacket

This commit is contained in:
Paul Hollinsky
2022-02-14 19:20:50 -05:00
parent 6d92b7a03a
commit 0ded5508c1
4 changed files with 40 additions and 60 deletions
@@ -3,7 +3,6 @@
#ifdef __cplusplus
#include "icsneo/communication/message/ethphymessage.h"
#include "icsneo/api/eventmanager.h"
#include <cstdint>
#include <memory>
@@ -14,35 +13,35 @@ namespace icsneo
class Packetizer;
class EthPhyMessage;
typedef struct
{
#pragma pack(push, 1)
#ifdef _MSC_VER
#pragma warning(push)
#pragma warning(disable : 4201) // nameless struct/union
#endif
struct PhyRegisterHeader_t {
uint16_t numEntries;
uint8_t version;
uint8_t entryBytes;
} PhyRegisterHeader_t;
};
typedef struct
{
struct Clause22Message {
uint8_t phyAddr; //5 bits
uint8_t page; //8 bits
uint16_t regAddr; //5 bits
uint16_t regVal;
} Clause22Message_t; //6 bytes
}; //6 bytes
typedef struct
{
struct Clause45Message {
uint8_t port; //5 bits
uint8_t device; //5 bits
uint16_t regAddr;
uint16_t regVal;
} Clause45Message_t; //6 bytes
}; //6 bytes
typedef struct
{
union
{
struct
{
struct PhyRegisterPacket_t {
union {
struct {
uint16_t Enabled : 1;
uint16_t WriteEnable : 1;
uint16_t Clause45Enable : 1;
@@ -52,20 +51,25 @@ typedef struct
uint16_t flags;
};
union
{
Clause22Message_t clause22;
Clause45Message_t clause45;
union {
Clause22Message clause22;
Clause45Message clause45;
};
} PhyRegisterPacket_t;
};
#ifdef _MSC_VER
#pragma warning(pop)
#endif
#pragma pack(pop)
static constexpr size_t MaxPhyEntries = 128u;
static constexpr size_t MaxBytesPhyEntries = MaxPhyEntries * sizeof(PhyRegisterHeader_t);
static constexpr uint8_t PhyPacketVersion = 1u;
static constexpr uint8_t FiveBits = 0x1Fu;
struct HardwareEthernetPhyRegisterPacket
{
class EthPhyMessage;
struct HardwareEthernetPhyRegisterPacket {
static std::shared_ptr<EthPhyMessage> DecodeToMessage(const std::vector<uint8_t>& bytestream, const device_eventhandler_t& report);
static bool EncodeFromMessage(const EthPhyMessage& message, std::vector<uint8_t>& bytestream, const device_eventhandler_t& report);
};