mirror of
https://github.com/intrepidcs/libicsneo.git
synced 2026-08-05 01:18:36 +02:00
Communication: EthernetMessage: Switch to TX_WRAP
This commit is contained in:
committed by
Kyle Schwarz
parent
6d985ca873
commit
10efacf91e
@@ -7,6 +7,9 @@
|
||||
#include "icsneo/api/eventmanager.h"
|
||||
#include <cstdint>
|
||||
#include <memory>
|
||||
#include <iostream>
|
||||
#include <iomanip>
|
||||
#include <sstream>
|
||||
|
||||
namespace icsneo {
|
||||
|
||||
@@ -18,30 +21,59 @@ struct HardwareEthernetPacket {
|
||||
static std::shared_ptr<EthernetMessage> DecodeToMessage(const std::vector<uint8_t>& bytestream, const device_eventhandler_t& report);
|
||||
static bool EncodeFromMessage(const EthernetMessage& message, std::vector<uint8_t>& bytestream, const device_eventhandler_t& report);
|
||||
|
||||
// Word 0 - Header flags (offset 0)
|
||||
struct {
|
||||
icscm_bitfield FCS_AVAIL : 1;
|
||||
icscm_bitfield RUNT_FRAME : 1;
|
||||
icscm_bitfield DISABLE_PADDING : 1;
|
||||
icscm_bitfield ENABLE_PADDING : 1;
|
||||
icscm_bitfield PREEMPTION_ENABLED : 1;
|
||||
icscm_bitfield MPACKET_TYPE : 4;
|
||||
icscm_bitfield MPACKET_FRAG_CNT : 2;
|
||||
icscm_bitfield : 6;
|
||||
icscm_bitfield UPDATE_CHECKSUMS : 1;
|
||||
icscm_bitfield FCS_OVERRIDE : 1;
|
||||
icscm_bitfield CRC_ERROR : 1;
|
||||
icscm_bitfield FCS_VERIFIED : 1;
|
||||
icscm_bitfield DISABLE_TX_RECEIPT : 1;
|
||||
icscm_bitfield T1S_ETHERNET : 1;
|
||||
} header;
|
||||
|
||||
// Word 1 - Extended ID flags
|
||||
struct {
|
||||
icscm_bitfield txlen : 12;
|
||||
icscm_bitfield TXMSG : 1;
|
||||
icscm_bitfield : 3;
|
||||
icscm_bitfield TXAborted : 1;
|
||||
icscm_bitfield T1S_SYMBOL : 1;
|
||||
icscm_bitfield T1S_BURST : 1;
|
||||
} eid;
|
||||
icscm_bitfield reserved;
|
||||
unsigned char data[8];
|
||||
|
||||
// Word 2 - T1S Status flags
|
||||
struct {
|
||||
icscm_bitfield TXCollision : 1;
|
||||
icscm_bitfield T1SWake : 1;
|
||||
icscm_bitfield : 14;
|
||||
} t1s_status;
|
||||
|
||||
// Word 3 - T1S Node Information
|
||||
struct {
|
||||
icscm_bitfield T1S_BURST_COUNT : 8;
|
||||
icscm_bitfield T1S_NODE_ID : 8;
|
||||
uint8_t RESERVED[6];
|
||||
} t1s_node;
|
||||
|
||||
// Words 4-7 - Reserved/Padding
|
||||
uint16_t stats;
|
||||
|
||||
// Words 8-11 - Timestamp (offset 14-22)
|
||||
struct {
|
||||
uint64_t TS : 60;
|
||||
uint64_t : 3; // Reserved for future status bits
|
||||
uint64_t : 3;
|
||||
uint64_t IsExtended : 1;
|
||||
} timestamp;
|
||||
|
||||
|
||||
uint16_t NetworkID;
|
||||
uint16_t Length;
|
||||
|
||||
};
|
||||
|
||||
#pragma pack(pop)
|
||||
@@ -50,4 +82,4 @@ struct HardwareEthernetPacket {
|
||||
|
||||
#endif // __cplusplus
|
||||
|
||||
#endif
|
||||
#endif // __ETHERNETPACKET_H__
|
||||
|
||||
Reference in New Issue
Block a user