Refactor MessageDecoder to Decoder
parent
69773d6537
commit
9f20d70102
|
|
@ -41,7 +41,7 @@ endif()
|
||||||
|
|
||||||
set(COMMON_SRC
|
set(COMMON_SRC
|
||||||
communication/message/neomessage.cpp
|
communication/message/neomessage.cpp
|
||||||
communication/messagedecoder.cpp
|
communication/decoder.cpp
|
||||||
communication/packetizer.cpp
|
communication/packetizer.cpp
|
||||||
communication/multichannelcommunication.cpp
|
communication/multichannelcommunication.cpp
|
||||||
communication/communication.cpp
|
communication/communication.cpp
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
#include <condition_variable>
|
#include <condition_variable>
|
||||||
#include "communication/include/command.h"
|
#include "communication/include/command.h"
|
||||||
#include "communication/include/messagedecoder.h"
|
#include "communication/include/decoder.h"
|
||||||
#include "communication/include/packetizer.h"
|
#include "communication/include/packetizer.h"
|
||||||
#include "communication/message/include/serialnumbermessage.h"
|
#include "communication/message/include/serialnumbermessage.h"
|
||||||
#include "communication/message/filter/include/main51messagefilter.h"
|
#include "communication/message/filter/include/main51messagefilter.h"
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#include "communication/include/messagedecoder.h"
|
#include "communication/include/decoder.h"
|
||||||
#include "communication/include/communication.h"
|
#include "communication/include/communication.h"
|
||||||
#include "communication/message/include/serialnumbermessage.h"
|
#include "communication/message/include/serialnumbermessage.h"
|
||||||
#include "communication/include/command.h"
|
#include "communication/include/command.h"
|
||||||
|
|
@ -7,14 +7,14 @@
|
||||||
|
|
||||||
using namespace icsneo;
|
using namespace icsneo;
|
||||||
|
|
||||||
uint64_t MessageDecoder::GetUInt64FromLEBytes(uint8_t* bytes) {
|
uint64_t Decoder::GetUInt64FromLEBytes(uint8_t* bytes) {
|
||||||
uint64_t ret = 0;
|
uint64_t ret = 0;
|
||||||
for(int i = 0; i < 8; i++)
|
for(int i = 0; i < 8; i++)
|
||||||
ret |= (bytes[i] << (i * 8));
|
ret |= (bytes[i] << (i * 8));
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<Message> MessageDecoder::decodePacket(const std::shared_ptr<Packet>& packet) {
|
std::shared_ptr<Message> Decoder::decodePacket(const std::shared_ptr<Packet>& packet) {
|
||||||
switch(packet->network.getType()) {
|
switch(packet->network.getType()) {
|
||||||
case Network::Type::CAN: {
|
case Network::Type::CAN: {
|
||||||
if(packet->data.size() < 24)
|
if(packet->data.size() < 24)
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
#include "communication/message/callback/include/messagecallback.h"
|
#include "communication/message/callback/include/messagecallback.h"
|
||||||
#include "communication/message/include/serialnumbermessage.h"
|
#include "communication/message/include/serialnumbermessage.h"
|
||||||
#include "communication/include/packetizer.h"
|
#include "communication/include/packetizer.h"
|
||||||
#include "communication/include/messagedecoder.h"
|
#include "communication/include/decoder.h"
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <atomic>
|
#include <atomic>
|
||||||
|
|
@ -20,7 +20,7 @@ namespace icsneo {
|
||||||
|
|
||||||
class Communication {
|
class Communication {
|
||||||
public:
|
public:
|
||||||
Communication(std::shared_ptr<ICommunication> com, std::shared_ptr<Packetizer> p, std::shared_ptr<MessageDecoder> md) : impl(com), packetizer(p), decoder(md) {}
|
Communication(std::shared_ptr<ICommunication> com, std::shared_ptr<Packetizer> p, std::shared_ptr<Decoder> md) : impl(com), packetizer(p), decoder(md) {}
|
||||||
virtual ~Communication() { close(); }
|
virtual ~Communication() { close(); }
|
||||||
|
|
||||||
bool open();
|
bool open();
|
||||||
|
|
@ -43,7 +43,7 @@ public:
|
||||||
std::shared_ptr<Message> waitForMessageSync(std::shared_ptr<MessageFilter> f, std::chrono::milliseconds timeout = std::chrono::milliseconds(50));
|
std::shared_ptr<Message> waitForMessageSync(std::shared_ptr<MessageFilter> f, std::chrono::milliseconds timeout = std::chrono::milliseconds(50));
|
||||||
|
|
||||||
std::shared_ptr<Packetizer> packetizer;
|
std::shared_ptr<Packetizer> packetizer;
|
||||||
std::shared_ptr<MessageDecoder> decoder;
|
std::shared_ptr<Decoder> decoder;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
std::shared_ptr<ICommunication> impl;
|
std::shared_ptr<ICommunication> impl;
|
||||||
|
|
|
||||||
|
|
@ -1,278 +1,278 @@
|
||||||
#ifndef __MESSAGEDECODER_H_
|
#ifndef __DECODER_H_
|
||||||
#define __MESSAGEDECODER_H_
|
#define __DECODER_H_
|
||||||
|
|
||||||
#include "communication/message/include/message.h"
|
#include "communication/message/include/message.h"
|
||||||
#include "communication/message/include/canmessage.h"
|
#include "communication/message/include/canmessage.h"
|
||||||
#include "communication/include/packet.h"
|
#include "communication/include/packet.h"
|
||||||
#include "communication/include/network.h"
|
#include "communication/include/network.h"
|
||||||
#include <queue>
|
#include <queue>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
#pragma pack(push)
|
#pragma pack(push)
|
||||||
#pragma pack(1)
|
#pragma pack(1)
|
||||||
|
|
||||||
namespace icsneo {
|
namespace icsneo {
|
||||||
|
|
||||||
class MessageDecoder {
|
class Decoder {
|
||||||
public:
|
public:
|
||||||
static uint64_t GetUInt64FromLEBytes(uint8_t* bytes);
|
static uint64_t GetUInt64FromLEBytes(uint8_t* bytes);
|
||||||
std::shared_ptr<Message> decodePacket(const std::shared_ptr<Packet>& message);
|
std::shared_ptr<Message> decodePacket(const std::shared_ptr<Packet>& message);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
typedef uint16_t icscm_bitfield;
|
typedef uint16_t icscm_bitfield;
|
||||||
struct HardwareCANPacket {
|
struct HardwareCANPacket {
|
||||||
struct {
|
struct {
|
||||||
icscm_bitfield IDE : 1;
|
icscm_bitfield IDE : 1;
|
||||||
icscm_bitfield SRR : 1;
|
icscm_bitfield SRR : 1;
|
||||||
icscm_bitfield SID : 11;
|
icscm_bitfield SID : 11;
|
||||||
icscm_bitfield EDL : 1;
|
icscm_bitfield EDL : 1;
|
||||||
icscm_bitfield BRS : 1;
|
icscm_bitfield BRS : 1;
|
||||||
icscm_bitfield ESI : 1;
|
icscm_bitfield ESI : 1;
|
||||||
} header;
|
} header;
|
||||||
struct {
|
struct {
|
||||||
icscm_bitfield EID : 12;
|
icscm_bitfield EID : 12;
|
||||||
icscm_bitfield TXMSG : 1;
|
icscm_bitfield TXMSG : 1;
|
||||||
icscm_bitfield TXAborted : 1;
|
icscm_bitfield TXAborted : 1;
|
||||||
icscm_bitfield TXLostArb : 1;
|
icscm_bitfield TXLostArb : 1;
|
||||||
icscm_bitfield TXError : 1;
|
icscm_bitfield TXError : 1;
|
||||||
} eid;
|
} eid;
|
||||||
struct {
|
struct {
|
||||||
icscm_bitfield DLC : 4;
|
icscm_bitfield DLC : 4;
|
||||||
icscm_bitfield RB0 : 1;
|
icscm_bitfield RB0 : 1;
|
||||||
icscm_bitfield IVRIF : 1;
|
icscm_bitfield IVRIF : 1;
|
||||||
icscm_bitfield HVEnable : 1;// must be cleared before passing into CAN driver
|
icscm_bitfield HVEnable : 1;// must be cleared before passing into CAN driver
|
||||||
icscm_bitfield ExtendedNetworkIndexBit : 1;//DO NOT CLOBBER THIS
|
icscm_bitfield ExtendedNetworkIndexBit : 1;//DO NOT CLOBBER THIS
|
||||||
icscm_bitfield RB1 : 1;
|
icscm_bitfield RB1 : 1;
|
||||||
icscm_bitfield RTR : 1;
|
icscm_bitfield RTR : 1;
|
||||||
icscm_bitfield EID : 6;
|
icscm_bitfield EID : 6;
|
||||||
} dlc;
|
} dlc;
|
||||||
unsigned char data[8];
|
unsigned char data[8];
|
||||||
struct {
|
struct {
|
||||||
uint64_t TS : 60;
|
uint64_t TS : 60;
|
||||||
uint64_t : 3;
|
uint64_t : 3;
|
||||||
uint64_t IsExtended : 1;
|
uint64_t IsExtended : 1;
|
||||||
} timestamp;
|
} timestamp;
|
||||||
};
|
};
|
||||||
|
|
||||||
// struct CoreMiniMsg {
|
// struct CoreMiniMsg {
|
||||||
// CANMessage toCANMessage(Network netid);
|
// CANMessage toCANMessage(Network netid);
|
||||||
// union {
|
// union {
|
||||||
// uint16_t CxTRB0SID16;
|
// uint16_t CxTRB0SID16;
|
||||||
// struct
|
// struct
|
||||||
// {
|
// {
|
||||||
// icscm_bitfield IDE : 1;
|
// icscm_bitfield IDE : 1;
|
||||||
// icscm_bitfield SRR : 1;
|
// icscm_bitfield SRR : 1;
|
||||||
// icscm_bitfield SID : 11;
|
// icscm_bitfield SID : 11;
|
||||||
// icscm_bitfield NETWORKINDEX : 3;//DO NOT CLOBBER THIS
|
// icscm_bitfield NETWORKINDEX : 3;//DO NOT CLOBBER THIS
|
||||||
// } CxTRB0SID;
|
// } CxTRB0SID;
|
||||||
// struct
|
// struct
|
||||||
// {
|
// {
|
||||||
// icscm_bitfield : 13;
|
// icscm_bitfield : 13;
|
||||||
// icscm_bitfield EDL : 1;
|
// icscm_bitfield EDL : 1;
|
||||||
// icscm_bitfield BRS : 1;
|
// icscm_bitfield BRS : 1;
|
||||||
// icscm_bitfield ESI : 1;
|
// icscm_bitfield ESI : 1;
|
||||||
// } CxTRB0FD;
|
// } CxTRB0FD;
|
||||||
// struct
|
// struct
|
||||||
// {
|
// {
|
||||||
// icscm_bitfield ErrRxOnlyBreak : 1;
|
// icscm_bitfield ErrRxOnlyBreak : 1;
|
||||||
// icscm_bitfield ErrRxOnlyBreakSync : 1;
|
// icscm_bitfield ErrRxOnlyBreakSync : 1;
|
||||||
// icscm_bitfield ID : 11;
|
// icscm_bitfield ID : 11;
|
||||||
// icscm_bitfield NETWORKINDEX : 3;//DO NOT CLOBBER THIS
|
// icscm_bitfield NETWORKINDEX : 3;//DO NOT CLOBBER THIS
|
||||||
// } CxLIN3;
|
// } CxLIN3;
|
||||||
// struct
|
// struct
|
||||||
// {
|
// {
|
||||||
// uint8_t D8;
|
// uint8_t D8;
|
||||||
// uint8_t options : 4;
|
// uint8_t options : 4;
|
||||||
// uint8_t TXMSG : 1;
|
// uint8_t TXMSG : 1;
|
||||||
// uint8_t NETWORKINDEX : 3;//DO NOT CLOBBER THIS
|
// uint8_t NETWORKINDEX : 3;//DO NOT CLOBBER THIS
|
||||||
// } C1xJ1850;
|
// } C1xJ1850;
|
||||||
// struct
|
// struct
|
||||||
// {
|
// {
|
||||||
// uint8_t D8;
|
// uint8_t D8;
|
||||||
// uint8_t options : 4;
|
// uint8_t options : 4;
|
||||||
// uint8_t TXMSG : 1;
|
// uint8_t TXMSG : 1;
|
||||||
// uint8_t NETWORKINDEX : 3;//DO NOT CLOBBER THIS
|
// uint8_t NETWORKINDEX : 3;//DO NOT CLOBBER THIS
|
||||||
// } C1xISO;
|
// } C1xISO;
|
||||||
// struct
|
// struct
|
||||||
// {
|
// {
|
||||||
// uint8_t D8;
|
// uint8_t D8;
|
||||||
// uint8_t options : 4;
|
// uint8_t options : 4;
|
||||||
// uint8_t TXMSG : 1;
|
// uint8_t TXMSG : 1;
|
||||||
// uint8_t NETWORKINDEX : 3;//DO NOT CLOBBER THIS
|
// uint8_t NETWORKINDEX : 3;//DO NOT CLOBBER THIS
|
||||||
// } C1xJ1708;
|
// } C1xJ1708;
|
||||||
// struct
|
// struct
|
||||||
// {
|
// {
|
||||||
// icscm_bitfield FCS_AVAIL : 1;
|
// icscm_bitfield FCS_AVAIL : 1;
|
||||||
// icscm_bitfield RUNT_FRAME : 1;
|
// icscm_bitfield RUNT_FRAME : 1;
|
||||||
// icscm_bitfield DISABLE_PADDING : 1;
|
// icscm_bitfield DISABLE_PADDING : 1;
|
||||||
// icscm_bitfield PREEMPTION_ENABLED : 1;
|
// icscm_bitfield PREEMPTION_ENABLED : 1;
|
||||||
// icscm_bitfield MPACKET_TYPE : 4;
|
// icscm_bitfield MPACKET_TYPE : 4;
|
||||||
// icscm_bitfield MPACKET_FRAG_CNT : 2;
|
// icscm_bitfield MPACKET_FRAG_CNT : 2;
|
||||||
// icscm_bitfield : 6;
|
// icscm_bitfield : 6;
|
||||||
// } C1xETH;
|
// } C1xETH;
|
||||||
// struct
|
// struct
|
||||||
// {
|
// {
|
||||||
// uint16_t ID : 11;
|
// uint16_t ID : 11;
|
||||||
// uint16_t STARTUP : 1;
|
// uint16_t STARTUP : 1;
|
||||||
// uint16_t SYNC : 1;
|
// uint16_t SYNC : 1;
|
||||||
// uint16_t NULL_FRAME : 1;
|
// uint16_t NULL_FRAME : 1;
|
||||||
// uint16_t PAYLOAD_PREAMBLE : 1;
|
// uint16_t PAYLOAD_PREAMBLE : 1;
|
||||||
// uint16_t RESERVED_0 : 1;
|
// uint16_t RESERVED_0 : 1;
|
||||||
// } C1xFlex;
|
// } C1xFlex;
|
||||||
// struct
|
// struct
|
||||||
// {
|
// {
|
||||||
// uint8_t daqType;
|
// uint8_t daqType;
|
||||||
// uint8_t ethDaqRes1;
|
// uint8_t ethDaqRes1;
|
||||||
// } C1xETHDAQ;
|
// } C1xETHDAQ;
|
||||||
// };
|
// };
|
||||||
// union {
|
// union {
|
||||||
// uint16_t CxTRB0EID16;
|
// uint16_t CxTRB0EID16;
|
||||||
// struct
|
// struct
|
||||||
// {
|
// {
|
||||||
// icscm_bitfield EID : 12;
|
// icscm_bitfield EID : 12;
|
||||||
// icscm_bitfield TXMSG : 1;
|
// icscm_bitfield TXMSG : 1;
|
||||||
// icscm_bitfield TXAborted : 1;
|
// icscm_bitfield TXAborted : 1;
|
||||||
// icscm_bitfield TXLostArb : 1;
|
// icscm_bitfield TXLostArb : 1;
|
||||||
// icscm_bitfield TXError : 1;
|
// icscm_bitfield TXError : 1;
|
||||||
// } CxTRB0EID;
|
// } CxTRB0EID;
|
||||||
// struct
|
// struct
|
||||||
// {
|
// {
|
||||||
// uint8_t LINByte9;
|
// uint8_t LINByte9;
|
||||||
// uint8_t ErrTxRxMismatch : 1;
|
// uint8_t ErrTxRxMismatch : 1;
|
||||||
// uint8_t TxChkSumEnhanced : 1;
|
// uint8_t TxChkSumEnhanced : 1;
|
||||||
// uint8_t TXMaster : 1;
|
// uint8_t TXMaster : 1;
|
||||||
// uint8_t TXSlave : 1;
|
// uint8_t TXSlave : 1;
|
||||||
// uint8_t ErrRxBreakNot0 : 1;
|
// uint8_t ErrRxBreakNot0 : 1;
|
||||||
// uint8_t ErrRxBreakTooShort : 1;
|
// uint8_t ErrRxBreakTooShort : 1;
|
||||||
// uint8_t ErrRxSyncNot55 : 1;
|
// uint8_t ErrRxSyncNot55 : 1;
|
||||||
// uint8_t ErrRxDataGreater8 : 1;
|
// uint8_t ErrRxDataGreater8 : 1;
|
||||||
// } CxLIN;
|
// } CxLIN;
|
||||||
// struct
|
// struct
|
||||||
// {
|
// {
|
||||||
// uint8_t D9;
|
// uint8_t D9;
|
||||||
// uint8_t D10;
|
// uint8_t D10;
|
||||||
// } C2xJ1850;
|
// } C2xJ1850;
|
||||||
// struct
|
// struct
|
||||||
// {
|
// {
|
||||||
// uint8_t D9;
|
// uint8_t D9;
|
||||||
// uint8_t D10;
|
// uint8_t D10;
|
||||||
// } C2xISO;
|
// } C2xISO;
|
||||||
// struct
|
// struct
|
||||||
// {
|
// {
|
||||||
// uint8_t D9;
|
// uint8_t D9;
|
||||||
// uint8_t D10;
|
// uint8_t D10;
|
||||||
// } C2xJ1708;
|
// } C2xJ1708;
|
||||||
// struct
|
// struct
|
||||||
// {
|
// {
|
||||||
// uint16_t txlen : 12;
|
// uint16_t txlen : 12;
|
||||||
// uint16_t TXMSG : 1;
|
// uint16_t TXMSG : 1;
|
||||||
// uint16_t : 3;
|
// uint16_t : 3;
|
||||||
// } C2xETH;
|
// } C2xETH;
|
||||||
// struct
|
// struct
|
||||||
// {
|
// {
|
||||||
// uint16_t HDR_CRC_10 : 1;
|
// uint16_t HDR_CRC_10 : 1;
|
||||||
// uint16_t PAYLOAD_LEN : 7;
|
// uint16_t PAYLOAD_LEN : 7;
|
||||||
// uint16_t RESERVED_1 : 4;
|
// uint16_t RESERVED_1 : 4;
|
||||||
// uint16_t TXMSG : 1;
|
// uint16_t TXMSG : 1;
|
||||||
// uint16_t RESERVED_2 : 3;
|
// uint16_t RESERVED_2 : 3;
|
||||||
// } C2xFlex;
|
// } C2xFlex;
|
||||||
// };
|
// };
|
||||||
// union {
|
// union {
|
||||||
// // For use by CAN
|
// // For use by CAN
|
||||||
// uint16_t CxTRB0DLC16;
|
// uint16_t CxTRB0DLC16;
|
||||||
// struct
|
// struct
|
||||||
// {
|
// {
|
||||||
// icscm_bitfield DLC : 4;
|
// icscm_bitfield DLC : 4;
|
||||||
// icscm_bitfield RB0 : 1;
|
// icscm_bitfield RB0 : 1;
|
||||||
// icscm_bitfield IVRIF : 1;
|
// icscm_bitfield IVRIF : 1;
|
||||||
// icscm_bitfield HVEnable : 1;// must be cleared before passing into CAN driver
|
// icscm_bitfield HVEnable : 1;// must be cleared before passing into CAN driver
|
||||||
// icscm_bitfield ExtendedNetworkIndexBit : 1;//DO NOT CLOBBER THIS
|
// icscm_bitfield ExtendedNetworkIndexBit : 1;//DO NOT CLOBBER THIS
|
||||||
// icscm_bitfield RB1 : 1;
|
// icscm_bitfield RB1 : 1;
|
||||||
// icscm_bitfield RTR : 1;
|
// icscm_bitfield RTR : 1;
|
||||||
// icscm_bitfield EID : 6;
|
// icscm_bitfield EID : 6;
|
||||||
// } CxTRB0DLC;
|
// } CxTRB0DLC;
|
||||||
// struct
|
// struct
|
||||||
// {
|
// {
|
||||||
// icscm_bitfield len : 4;
|
// icscm_bitfield len : 4;
|
||||||
// icscm_bitfield ExtendedNetworkIndexBit2 : 1;//DO NOT CLOBBER THIS
|
// icscm_bitfield ExtendedNetworkIndexBit2 : 1;//DO NOT CLOBBER THIS
|
||||||
// icscm_bitfield UpdateSlaveOnce : 1;
|
// icscm_bitfield UpdateSlaveOnce : 1;
|
||||||
// icscm_bitfield HasUpdatedSlaveOnce : 1;
|
// icscm_bitfield HasUpdatedSlaveOnce : 1;
|
||||||
// icscm_bitfield ExtendedNetworkIndexBit : 1;//DO NOT CLOBBER THIS
|
// icscm_bitfield ExtendedNetworkIndexBit : 1;//DO NOT CLOBBER THIS
|
||||||
// icscm_bitfield BusRecovered : 1;
|
// icscm_bitfield BusRecovered : 1;
|
||||||
// icscm_bitfield SyncFerr : 1;//!< We got framing error in our sync byte.
|
// icscm_bitfield SyncFerr : 1;//!< We got framing error in our sync byte.
|
||||||
// icscm_bitfield MidFerr : 1;//!< We got framing error in our message id.
|
// icscm_bitfield MidFerr : 1;//!< We got framing error in our message id.
|
||||||
// icscm_bitfield SlaveByteFerr : 1;//!< We got framing error in one of our slave bytes.
|
// icscm_bitfield SlaveByteFerr : 1;//!< We got framing error in one of our slave bytes.
|
||||||
// icscm_bitfield TxAborted : 1;//!< This transmit was aborted.
|
// icscm_bitfield TxAborted : 1;//!< This transmit was aborted.
|
||||||
// icscm_bitfield breakOnly : 1;
|
// icscm_bitfield breakOnly : 1;
|
||||||
// icscm_bitfield : 2;
|
// icscm_bitfield : 2;
|
||||||
// } CxLIN2;
|
// } CxLIN2;
|
||||||
// // For use by JVPW
|
// // For use by JVPW
|
||||||
// struct
|
// struct
|
||||||
// {
|
// {
|
||||||
// icscm_bitfield len : 4;
|
// icscm_bitfield len : 4;
|
||||||
// icscm_bitfield ExtendedNetworkIndexBit2 : 1;//DO NOT CLOBBER THIS
|
// icscm_bitfield ExtendedNetworkIndexBit2 : 1;//DO NOT CLOBBER THIS
|
||||||
// icscm_bitfield just_tx_timestamp : 1;
|
// icscm_bitfield just_tx_timestamp : 1;
|
||||||
// icscm_bitfield first_seg : 1;
|
// icscm_bitfield first_seg : 1;
|
||||||
// icscm_bitfield ExtendedNetworkIndexBit : 1;// do not clobber ExtendedNetworkIndexBit
|
// icscm_bitfield ExtendedNetworkIndexBit : 1;// do not clobber ExtendedNetworkIndexBit
|
||||||
// icscm_bitfield D11 : 8;
|
// icscm_bitfield D11 : 8;
|
||||||
// } C3xJ1850;
|
// } C3xJ1850;
|
||||||
// // For use by the ISO/KEYWORD
|
// // For use by the ISO/KEYWORD
|
||||||
// struct
|
// struct
|
||||||
// {
|
// {
|
||||||
// icscm_bitfield len : 4;
|
// icscm_bitfield len : 4;
|
||||||
// icscm_bitfield ExtendedNetworkIndexBit2 : 1;//DO NOT CLOBBER THIS
|
// icscm_bitfield ExtendedNetworkIndexBit2 : 1;//DO NOT CLOBBER THIS
|
||||||
// icscm_bitfield FRM : 1;
|
// icscm_bitfield FRM : 1;
|
||||||
// icscm_bitfield INIT : 1;
|
// icscm_bitfield INIT : 1;
|
||||||
// icscm_bitfield ExtendedNetworkIndexBit : 1;// do not clobber ExtendedNetworkIndexBit
|
// icscm_bitfield ExtendedNetworkIndexBit : 1;// do not clobber ExtendedNetworkIndexBit
|
||||||
// icscm_bitfield D11 : 8;
|
// icscm_bitfield D11 : 8;
|
||||||
// } C3xISO;
|
// } C3xISO;
|
||||||
// struct
|
// struct
|
||||||
// {
|
// {
|
||||||
// icscm_bitfield len : 4;
|
// icscm_bitfield len : 4;
|
||||||
// icscm_bitfield ExtendedNetworkIndexBit2 : 1;//DO NOT CLOBBER THIS
|
// icscm_bitfield ExtendedNetworkIndexBit2 : 1;//DO NOT CLOBBER THIS
|
||||||
// icscm_bitfield FRM : 1;
|
// icscm_bitfield FRM : 1;
|
||||||
// icscm_bitfield : 1;
|
// icscm_bitfield : 1;
|
||||||
// icscm_bitfield ExtendedNetworkIndexBit : 1;// do not clobber ExtendedNetworkIndexBit
|
// icscm_bitfield ExtendedNetworkIndexBit : 1;// do not clobber ExtendedNetworkIndexBit
|
||||||
// icscm_bitfield pri : 8;
|
// icscm_bitfield pri : 8;
|
||||||
// } C3xJ1708;
|
// } C3xJ1708;
|
||||||
// struct
|
// struct
|
||||||
// {
|
// {
|
||||||
// uint16_t rsvd;
|
// uint16_t rsvd;
|
||||||
// } C3xETH;
|
// } C3xETH;
|
||||||
// struct
|
// struct
|
||||||
// {
|
// {
|
||||||
// uint16_t CYCLE : 6;
|
// uint16_t CYCLE : 6;
|
||||||
// uint16_t HDR_CRC_9_0 : 10;
|
// uint16_t HDR_CRC_9_0 : 10;
|
||||||
// } C3xFlex;
|
// } C3xFlex;
|
||||||
// };
|
// };
|
||||||
// unsigned char CxTRB0Dall[8];
|
// unsigned char CxTRB0Dall[8];
|
||||||
// union {
|
// union {
|
||||||
// uint16_t CxTRB0STAT;
|
// uint16_t CxTRB0STAT;
|
||||||
// uint16_t J1850_TX_ID;
|
// uint16_t J1850_TX_ID;
|
||||||
// };
|
// };
|
||||||
// union {
|
// union {
|
||||||
// struct
|
// struct
|
||||||
// {
|
// {
|
||||||
// uint32_t uiTimeStamp10uS;
|
// uint32_t uiTimeStamp10uS;
|
||||||
// union {
|
// union {
|
||||||
// uint32_t uiTimeStamp10uSMSB;
|
// uint32_t uiTimeStamp10uSMSB;
|
||||||
// struct
|
// struct
|
||||||
// {
|
// {
|
||||||
// unsigned : 28;
|
// unsigned : 28;
|
||||||
// unsigned res_0s : 3;// must be 0!!!
|
// unsigned res_0s : 3;// must be 0!!!
|
||||||
// unsigned bIsExtended : 1;// always 1 for CoreMiniMsgExtended.
|
// unsigned bIsExtended : 1;// always 1 for CoreMiniMsgExtended.
|
||||||
// };
|
// };
|
||||||
// };
|
// };
|
||||||
// };
|
// };
|
||||||
// int64_t uiTimeStampLarge;
|
// int64_t uiTimeStampLarge;
|
||||||
// uint8_t uiTimeStampBytes[8];
|
// uint8_t uiTimeStampBytes[8];
|
||||||
// };
|
// };
|
||||||
// };
|
// };
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma pack(pop)
|
#pragma pack(pop)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -9,7 +9,7 @@ namespace icsneo {
|
||||||
|
|
||||||
class MultiChannelCommunication : public Communication {
|
class MultiChannelCommunication : public Communication {
|
||||||
public:
|
public:
|
||||||
MultiChannelCommunication(std::shared_ptr<ICommunication> com, std::shared_ptr<Packetizer> p, std::shared_ptr<MessageDecoder> md) : Communication(com, p, md) {}
|
MultiChannelCommunication(std::shared_ptr<ICommunication> com, std::shared_ptr<Packetizer> p, std::shared_ptr<Decoder> md) : Communication(com, p, md) {}
|
||||||
void spawnThreads();
|
void spawnThreads();
|
||||||
void joinThreads();
|
void joinThreads();
|
||||||
bool sendCommand(Command cmd, std::vector<uint8_t> arguments);
|
bool sendCommand(Command cmd, std::vector<uint8_t> arguments);
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#include "communication/include/multichannelcommunication.h"
|
#include "communication/include/multichannelcommunication.h"
|
||||||
#include "communication/include/command.h"
|
#include "communication/include/command.h"
|
||||||
#include "communication/include/messagedecoder.h"
|
#include "communication/include/decoder.h"
|
||||||
#include "communication/include/packetizer.h"
|
#include "communication/include/packetizer.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <iomanip>
|
#include <iomanip>
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
#include "device/include/idevicesettings.h"
|
#include "device/include/idevicesettings.h"
|
||||||
#include "communication/include/communication.h"
|
#include "communication/include/communication.h"
|
||||||
#include "communication/include/packetizer.h"
|
#include "communication/include/packetizer.h"
|
||||||
#include "communication/include/messagedecoder.h"
|
#include "communication/include/decoder.h"
|
||||||
#include "third-party/concurrentqueue/concurrentqueue.h"
|
#include "third-party/concurrentqueue/concurrentqueue.h"
|
||||||
|
|
||||||
namespace icsneo {
|
namespace icsneo {
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ public:
|
||||||
NeoOBD2PRO(neodevice_t neodevice) : Device(neodevice) {
|
NeoOBD2PRO(neodevice_t neodevice) : Device(neodevice) {
|
||||||
auto transport = std::make_shared<STM32>(getWritableNeoDevice());
|
auto transport = std::make_shared<STM32>(getWritableNeoDevice());
|
||||||
auto packetizer = std::make_shared<Packetizer>();
|
auto packetizer = std::make_shared<Packetizer>();
|
||||||
auto decoder = std::make_shared<MessageDecoder>();
|
auto decoder = std::make_shared<Decoder>();
|
||||||
com = std::make_shared<Communication>(transport, packetizer, decoder);
|
com = std::make_shared<Communication>(transport, packetizer, decoder);
|
||||||
setProductName(PRODUCT_NAME);
|
setProductName(PRODUCT_NAME);
|
||||||
productId = PRODUCT_ID;
|
productId = PRODUCT_ID;
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ public:
|
||||||
NeoOBD2SIM(neodevice_t neodevice) : Device(neodevice) {
|
NeoOBD2SIM(neodevice_t neodevice) : Device(neodevice) {
|
||||||
auto transport = std::make_shared<STM32>(getWritableNeoDevice());
|
auto transport = std::make_shared<STM32>(getWritableNeoDevice());
|
||||||
auto packetizer = std::make_shared<Packetizer>();
|
auto packetizer = std::make_shared<Packetizer>();
|
||||||
auto decoder = std::make_shared<MessageDecoder>();
|
auto decoder = std::make_shared<Decoder>();
|
||||||
com = std::make_shared<Communication>(transport, packetizer, decoder);
|
com = std::make_shared<Communication>(transport, packetizer, decoder);
|
||||||
setProductName(PRODUCT_NAME);
|
setProductName(PRODUCT_NAME);
|
||||||
productId = PRODUCT_ID;
|
productId = PRODUCT_ID;
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ public:
|
||||||
NeoVIFIRE(neodevice_t neodevice) : Device(neodevice) {
|
NeoVIFIRE(neodevice_t neodevice) : Device(neodevice) {
|
||||||
auto transport = std::make_shared<FTDI>(getWritableNeoDevice());
|
auto transport = std::make_shared<FTDI>(getWritableNeoDevice());
|
||||||
auto packetizer = std::make_shared<Packetizer>();
|
auto packetizer = std::make_shared<Packetizer>();
|
||||||
auto decoder = std::make_shared<MessageDecoder>();
|
auto decoder = std::make_shared<Decoder>();
|
||||||
com = std::make_shared<Communication>(transport, packetizer, decoder);
|
com = std::make_shared<Communication>(transport, packetizer, decoder);
|
||||||
setProductName(PRODUCT_NAME);
|
setProductName(PRODUCT_NAME);
|
||||||
productId = PRODUCT_ID;
|
productId = PRODUCT_ID;
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ public:
|
||||||
NeoVIFIRE2ETH(neodevice_t neodevice) : NeoVIFIRE2(neodevice) {
|
NeoVIFIRE2ETH(neodevice_t neodevice) : NeoVIFIRE2(neodevice) {
|
||||||
auto transport = std::make_shared<PCAP>(getWritableNeoDevice());
|
auto transport = std::make_shared<PCAP>(getWritableNeoDevice());
|
||||||
auto packetizer = std::make_shared<Packetizer>();
|
auto packetizer = std::make_shared<Packetizer>();
|
||||||
auto decoder = std::make_shared<MessageDecoder>();
|
auto decoder = std::make_shared<Decoder>();
|
||||||
com = std::make_shared<Communication>(transport, packetizer, decoder);
|
com = std::make_shared<Communication>(transport, packetizer, decoder);
|
||||||
productId = PRODUCT_ID;
|
productId = PRODUCT_ID;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ public:
|
||||||
NeoVIFIRE2USB(neodevice_t neodevice) : NeoVIFIRE2(neodevice) {
|
NeoVIFIRE2USB(neodevice_t neodevice) : NeoVIFIRE2(neodevice) {
|
||||||
auto transport = std::make_shared<FTDI>(getWritableNeoDevice());
|
auto transport = std::make_shared<FTDI>(getWritableNeoDevice());
|
||||||
auto packetizer = std::make_shared<Packetizer>();
|
auto packetizer = std::make_shared<Packetizer>();
|
||||||
auto decoder = std::make_shared<MessageDecoder>();
|
auto decoder = std::make_shared<Decoder>();
|
||||||
com = std::make_shared<Communication>(transport, packetizer, decoder);
|
com = std::make_shared<Communication>(transport, packetizer, decoder);
|
||||||
productId = PRODUCT_ID;
|
productId = PRODUCT_ID;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ public:
|
||||||
Plasion(neodevice_t neodevice) : Device(neodevice) {
|
Plasion(neodevice_t neodevice) : Device(neodevice) {
|
||||||
auto transport = std::make_shared<FTDI>(getWritableNeoDevice());
|
auto transport = std::make_shared<FTDI>(getWritableNeoDevice());
|
||||||
auto packetizer = std::make_shared<Packetizer>();
|
auto packetizer = std::make_shared<Packetizer>();
|
||||||
auto decoder = std::make_shared<MessageDecoder>();
|
auto decoder = std::make_shared<Decoder>();
|
||||||
com = std::make_shared<MultiChannelCommunication>(transport, packetizer, decoder);
|
com = std::make_shared<MultiChannelCommunication>(transport, packetizer, decoder);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
#include "device/include/device.h"
|
#include "device/include/device.h"
|
||||||
#include "platform/include/pcap.h"
|
#include "platform/include/pcap.h"
|
||||||
#include "communication/include/packetizer.h"
|
#include "communication/include/packetizer.h"
|
||||||
#include "communication/include/messagedecoder.h"
|
#include "communication/include/decoder.h"
|
||||||
|
|
||||||
namespace icsneo {
|
namespace icsneo {
|
||||||
|
|
||||||
|
|
@ -18,7 +18,7 @@ public:
|
||||||
auto packetizer = std::make_shared<Packetizer>();
|
auto packetizer = std::make_shared<Packetizer>();
|
||||||
packetizer->disableChecksum = true;
|
packetizer->disableChecksum = true;
|
||||||
packetizer->align16bit = false;
|
packetizer->align16bit = false;
|
||||||
auto decoder = std::make_shared<MessageDecoder>();
|
auto decoder = std::make_shared<Decoder>();
|
||||||
com = std::make_shared<Communication>(transport, packetizer, decoder);
|
com = std::make_shared<Communication>(transport, packetizer, decoder);
|
||||||
setProductName(PRODUCT_NAME);
|
setProductName(PRODUCT_NAME);
|
||||||
productId = PRODUCT_ID;
|
productId = PRODUCT_ID;
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ public:
|
||||||
RADStar2(neodevice_t neodevice) : Device(neodevice) {
|
RADStar2(neodevice_t neodevice) : Device(neodevice) {
|
||||||
auto transport = std::make_shared<FTDI>(getWritableNeoDevice());
|
auto transport = std::make_shared<FTDI>(getWritableNeoDevice());
|
||||||
auto packetizer = std::make_shared<Packetizer>();
|
auto packetizer = std::make_shared<Packetizer>();
|
||||||
auto decoder = std::make_shared<MessageDecoder>();
|
auto decoder = std::make_shared<Decoder>();
|
||||||
com = std::make_shared<Communication>(transport, packetizer, decoder);
|
com = std::make_shared<Communication>(transport, packetizer, decoder);
|
||||||
setProductName(PRODUCT_NAME);
|
setProductName(PRODUCT_NAME);
|
||||||
productId = PRODUCT_ID;
|
productId = PRODUCT_ID;
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ public:
|
||||||
auto packetizer = std::make_shared<Packetizer>();
|
auto packetizer = std::make_shared<Packetizer>();
|
||||||
packetizer->disableChecksum = true;
|
packetizer->disableChecksum = true;
|
||||||
packetizer->align16bit = false;
|
packetizer->align16bit = false;
|
||||||
auto decoder = std::make_shared<MessageDecoder>();
|
auto decoder = std::make_shared<Decoder>();
|
||||||
com = std::make_shared<Communication>(transport, packetizer, decoder);
|
com = std::make_shared<Communication>(transport, packetizer, decoder);
|
||||||
setProductName(PRODUCT_NAME);
|
setProductName(PRODUCT_NAME);
|
||||||
productId = PRODUCT_ID;
|
productId = PRODUCT_ID;
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ public:
|
||||||
ValueCAN3(neodevice_t neodevice) : Device(neodevice) {
|
ValueCAN3(neodevice_t neodevice) : Device(neodevice) {
|
||||||
auto transport = std::make_shared<FTDI>(getWritableNeoDevice());
|
auto transport = std::make_shared<FTDI>(getWritableNeoDevice());
|
||||||
auto packetizer = std::make_shared<Packetizer>();
|
auto packetizer = std::make_shared<Packetizer>();
|
||||||
auto decoder = std::make_shared<MessageDecoder>();
|
auto decoder = std::make_shared<Decoder>();
|
||||||
com = std::make_shared<Communication>(transport, packetizer, decoder);
|
com = std::make_shared<Communication>(transport, packetizer, decoder);
|
||||||
setProductName(PRODUCT_NAME);
|
setProductName(PRODUCT_NAME);
|
||||||
productId = PRODUCT_ID;
|
productId = PRODUCT_ID;
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ public:
|
||||||
ValueCAN4(neodevice_t neodevice) : Device(neodevice) {
|
ValueCAN4(neodevice_t neodevice) : Device(neodevice) {
|
||||||
auto transport = std::make_shared<STM32>(getWritableNeoDevice());
|
auto transport = std::make_shared<STM32>(getWritableNeoDevice());
|
||||||
auto packetizer = std::make_shared<Packetizer>();
|
auto packetizer = std::make_shared<Packetizer>();
|
||||||
auto decoder = std::make_shared<MessageDecoder>();
|
auto decoder = std::make_shared<Decoder>();
|
||||||
com = std::make_shared<Communication>(transport, packetizer, decoder);
|
com = std::make_shared<Communication>(transport, packetizer, decoder);
|
||||||
setProductName(PRODUCT_NAME);
|
setProductName(PRODUCT_NAME);
|
||||||
productId = PRODUCT_ID;
|
productId = PRODUCT_ID;
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ public:
|
||||||
VividCAN(neodevice_t neodevice) : Device(neodevice) {
|
VividCAN(neodevice_t neodevice) : Device(neodevice) {
|
||||||
auto transport = std::make_shared<STM32>(getWritableNeoDevice());
|
auto transport = std::make_shared<STM32>(getWritableNeoDevice());
|
||||||
auto packetizer = std::make_shared<Packetizer>();
|
auto packetizer = std::make_shared<Packetizer>();
|
||||||
auto decoder = std::make_shared<MessageDecoder>();
|
auto decoder = std::make_shared<Decoder>();
|
||||||
com = std::make_shared<Communication>(transport, packetizer, decoder);
|
com = std::make_shared<Communication>(transport, packetizer, decoder);
|
||||||
setProductName(PRODUCT_NAME);
|
setProductName(PRODUCT_NAME);
|
||||||
productId = PRODUCT_ID;
|
productId = PRODUCT_ID;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue