mirror of
https://github.com/intrepidcs/libicsneo.git
synced 2026-08-05 01:18:36 +02:00
Refactor for a central include directory
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
#ifndef __DECODER_H_
|
||||
#define __DECODER_H_
|
||||
|
||||
#include "icsneo/communication/message/message.h"
|
||||
#include "icsneo/communication/message/canmessage.h"
|
||||
#include "icsneo/communication/packet.h"
|
||||
#include "icsneo/communication/network.h"
|
||||
#include <queue>
|
||||
#include <vector>
|
||||
#include <memory>
|
||||
|
||||
#pragma pack(push, 1)
|
||||
|
||||
namespace icsneo {
|
||||
|
||||
class Decoder {
|
||||
public:
|
||||
static uint64_t GetUInt64FromLEBytes(uint8_t* bytes);
|
||||
bool decode(std::shared_ptr<Message>& result, const std::shared_ptr<Packet>& packet);
|
||||
|
||||
private:
|
||||
typedef uint16_t icscm_bitfield;
|
||||
struct HardwareCANPacket {
|
||||
struct {
|
||||
icscm_bitfield IDE : 1;
|
||||
icscm_bitfield SRR : 1;
|
||||
icscm_bitfield SID : 11;
|
||||
icscm_bitfield EDL : 1;
|
||||
icscm_bitfield BRS : 1;
|
||||
icscm_bitfield ESI : 1;
|
||||
} header;
|
||||
struct {
|
||||
icscm_bitfield EID : 12;
|
||||
icscm_bitfield TXMSG : 1;
|
||||
icscm_bitfield TXAborted : 1;
|
||||
icscm_bitfield TXLostArb : 1;
|
||||
icscm_bitfield TXError : 1;
|
||||
} eid;
|
||||
struct {
|
||||
icscm_bitfield DLC : 4;
|
||||
icscm_bitfield RB0 : 1;
|
||||
icscm_bitfield IVRIF : 1;
|
||||
icscm_bitfield HVEnable : 1;// must be cleared before passing into CAN driver
|
||||
icscm_bitfield ExtendedNetworkIndexBit : 1;//DO NOT CLOBBER THIS
|
||||
icscm_bitfield RB1 : 1;
|
||||
icscm_bitfield RTR : 1;
|
||||
icscm_bitfield EID2 : 6;
|
||||
} dlc;
|
||||
unsigned char data[8];
|
||||
uint16_t stats;
|
||||
struct {
|
||||
uint64_t TS : 60;
|
||||
uint64_t : 3; // Reserved for future status bits
|
||||
uint64_t IsExtended : 1;
|
||||
} timestamp;
|
||||
};
|
||||
|
||||
union CoreMiniStatusBits_t {
|
||||
struct {
|
||||
unsigned just_reset : 1;
|
||||
unsigned com_enabled : 1;
|
||||
unsigned cm_is_running : 1;
|
||||
unsigned cm_checksum_failed : 1;
|
||||
unsigned cm_license_failed : 1;
|
||||
unsigned cm_version_mismatch : 1;
|
||||
unsigned cm_boot_off : 1;
|
||||
unsigned hardware_failure : 1;//to check SRAM failure (for now)
|
||||
unsigned isPassiveConnect : 1;///< Always zero. Set to one when neoVI connection is passive,i.e. no async traffic
|
||||
unsigned usbComEnabled : 1;///< Set to one when USB Host PC has enabled communication.
|
||||
unsigned linuxComEnabled : 1;///< Set to one when Android (Linux) has enabled communication.
|
||||
unsigned cm_too_big : 1;
|
||||
unsigned hidUsbState : 1;
|
||||
unsigned fpgaUsbState : 1;
|
||||
unsigned reserved : 2;
|
||||
};
|
||||
uint32_t dword;
|
||||
};
|
||||
|
||||
struct HardwareResetStatusPacket {
|
||||
uint16_t main_loop_time_25ns;
|
||||
uint16_t max_main_loop_time_25ns;
|
||||
CoreMiniStatusBits_t status;
|
||||
uint8_t histo[6];//!< Can hold histogram performance data.
|
||||
uint16_t spi1Kbps;//!< Spi1's kbps throughput.
|
||||
uint16_t initBits;//!< Bitfield with init states of drivers, 1 is succes, 0 is fail.
|
||||
uint16_t cpuMipsH;
|
||||
uint16_t cpuMipsL;
|
||||
uint16_t busVoltage;
|
||||
uint16_t deviceTemperature;
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user