mirror of
https://github.com/intrepidcs/libicsneo.git
synced 2026-08-05 09:28:40 +02:00
API: Added icsneoc2.
Signed-off-by: David Rebbe <drebbe@intrepidcs.com>
This commit is contained in:
@@ -20,8 +20,10 @@ enum class PCMType : uint8_t {
|
||||
|
||||
using ChannelMap = std::unordered_map<uint8_t, uint8_t>;
|
||||
|
||||
class A2BMessage : public Frame {
|
||||
class A2BMessage : public BusMessage {
|
||||
public:
|
||||
const BusMessage::Type getBusType() const final { return BusMessage::Type::A2B; }
|
||||
|
||||
static constexpr size_t maxAudioBufferSize = 2048;
|
||||
|
||||
enum class TDMMode : uint8_t {
|
||||
|
||||
@@ -64,9 +64,9 @@ enum class AppErrorType : uint16_t {
|
||||
AppNoError = 255
|
||||
};
|
||||
|
||||
class AppErrorMessage : public RawMessage {
|
||||
class AppErrorMessage : public InternalMessage {
|
||||
public:
|
||||
AppErrorMessage() : RawMessage(Message::Type::AppError, Network::NetID::RED_App_Error) {}
|
||||
AppErrorMessage() : InternalMessage(Message::Type::AppError, Network::NetID::RED_App_Error) {}
|
||||
uint16_t errorType;
|
||||
Network::NetID errorNetID;
|
||||
uint32_t timestamp10us;
|
||||
|
||||
@@ -7,8 +7,10 @@
|
||||
|
||||
namespace icsneo {
|
||||
|
||||
class CANMessage : public Frame {
|
||||
class CANMessage : public BusMessage {
|
||||
public:
|
||||
const BusMessage::Type getBusType() const final { return BusMessage::Type::CAN; }
|
||||
|
||||
uint32_t arbid;
|
||||
uint8_t dlcOnWire;
|
||||
bool isRemote = false; // Not allowed if CAN FD
|
||||
|
||||
@@ -7,9 +7,9 @@
|
||||
|
||||
namespace icsneo {
|
||||
|
||||
class DiskDataMessage : public RawMessage {
|
||||
class DiskDataMessage : public InternalMessage {
|
||||
public:
|
||||
DiskDataMessage(std::vector<uint8_t>&& d) : RawMessage(Network::NetID::DiskData) {
|
||||
DiskDataMessage(std::vector<uint8_t>&& d) : InternalMessage(Network::NetID::DiskData) {
|
||||
data = std::move(d);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -31,8 +31,10 @@ struct MACAddress {
|
||||
}
|
||||
};
|
||||
|
||||
class EthernetMessage : public Frame {
|
||||
class EthernetMessage : public BusMessage {
|
||||
public:
|
||||
const BusMessage::Type getBusType() const final { return BusMessage::Type::Ethernet; }
|
||||
|
||||
bool preemptionEnabled = false;
|
||||
uint8_t preemptionFlags = 0;
|
||||
std::optional<uint32_t> fcs;
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
namespace icsneo {
|
||||
|
||||
class ExtendedDataMessage : public Frame {
|
||||
class ExtendedDataMessage : public InternalMessage {
|
||||
public:
|
||||
#pragma pack(push, 2)
|
||||
struct ExtendedDataHeader {
|
||||
|
||||
@@ -13,8 +13,8 @@ namespace icsneo {
|
||||
|
||||
class CANMessageFilter : public MessageFilter {
|
||||
public:
|
||||
CANMessageFilter() : MessageFilter(Network::Type::CAN), arbid(INVALID_ARBID) { messageType = Message::Type::Frame; }
|
||||
CANMessageFilter(uint32_t arbid) : MessageFilter(Network::Type::CAN), arbid(arbid) { messageType = Message::Type::Frame; }
|
||||
CANMessageFilter() : MessageFilter(Network::Type::CAN), arbid(INVALID_ARBID) { messageType = Message::Type::BusMessage; }
|
||||
CANMessageFilter(uint32_t arbid) : MessageFilter(Network::Type::CAN), arbid(arbid) { messageType = Message::Type::BusMessage; }
|
||||
|
||||
bool match(const std::shared_ptr<Message>& message) const {
|
||||
if(!MessageFilter::match(message))
|
||||
|
||||
@@ -27,9 +27,9 @@ public:
|
||||
if(!matchMessageType(message->type))
|
||||
return false;
|
||||
|
||||
if(message->type == Message::Type::Frame || message->type == Message::Type::Main51 ||
|
||||
message->type == Message::Type::RawMessage || message->type == Message::Type::ReadSettings) {
|
||||
const auto frame = std::static_pointer_cast<RawMessage>(message);
|
||||
if(message->type == Message::Type::BusMessage || message->type == Message::Type::Main51 ||
|
||||
message->type == Message::Type::InternalMessage || message->type == Message::Type::ReadSettings) {
|
||||
const auto frame = std::static_pointer_cast<InternalMessage>(message);
|
||||
if(!matchNetworkType(frame->network.getType()))
|
||||
return false;
|
||||
if(!matchNetID(frame->network.getNetID()))
|
||||
|
||||
@@ -7,9 +7,9 @@
|
||||
|
||||
namespace icsneo {
|
||||
|
||||
class FlashMemoryMessage : public RawMessage {
|
||||
class FlashMemoryMessage : public InternalMessage {
|
||||
public:
|
||||
FlashMemoryMessage() : RawMessage(Message::Type::RawMessage, Network::NetID::RED_INT_MEMORYREAD) {}
|
||||
FlashMemoryMessage() : InternalMessage(Message::Type::InternalMessage, Network::NetID::RED_INT_MEMORYREAD) {}
|
||||
uint16_t startAddress = 0;
|
||||
};
|
||||
|
||||
|
||||
@@ -10,8 +10,10 @@
|
||||
|
||||
namespace icsneo {
|
||||
|
||||
class FlexRayMessage : public Frame {
|
||||
class FlexRayMessage : public BusMessage {
|
||||
public:
|
||||
const BusMessage::Type getBusType() const final { return BusMessage::Type::FlexRay; }
|
||||
|
||||
uint16_t slotid = 0;
|
||||
double tsslen = 0;
|
||||
double framelen = 0;
|
||||
|
||||
@@ -8,8 +8,10 @@
|
||||
|
||||
namespace icsneo {
|
||||
|
||||
class I2CMessage : public Frame {
|
||||
class I2CMessage : public BusMessage {
|
||||
public:
|
||||
const BusMessage::Type getBusType() const final { return BusMessage::Type::I2C; }
|
||||
|
||||
enum class DeviceMode : uint8_t {
|
||||
Target = 0,
|
||||
Controller = 1
|
||||
|
||||
@@ -8,8 +8,10 @@
|
||||
|
||||
namespace icsneo {
|
||||
|
||||
class ISO9141Message : public Frame {
|
||||
class ISO9141Message : public BusMessage {
|
||||
public:
|
||||
const BusMessage::Type getBusType() const final { return BusMessage::Type::ISO9141; }
|
||||
|
||||
std::array<uint8_t, 3> header;
|
||||
bool isInit = false;
|
||||
bool isBreak = false;
|
||||
|
||||
@@ -34,8 +34,10 @@ struct LINStatusFlags {
|
||||
bool BreakOnly = false;
|
||||
};
|
||||
|
||||
class LINMessage : public Frame {
|
||||
class LINMessage : public BusMessage {
|
||||
public:
|
||||
const BusMessage::Type getBusType() const final { return BusMessage::Type::LIN; }
|
||||
|
||||
enum class Type : uint8_t {
|
||||
NOT_SET = 0,
|
||||
LIN_COMMANDER_MSG,
|
||||
|
||||
@@ -8,9 +8,9 @@
|
||||
#include "icsneo/communication/livedata.h"
|
||||
|
||||
namespace icsneo {
|
||||
class LiveDataMessage : public RawMessage {
|
||||
class LiveDataMessage : public InternalMessage {
|
||||
public:
|
||||
LiveDataMessage() : RawMessage(Message::Type::LiveData, Network::NetID::ExtendedCommand) {}
|
||||
LiveDataMessage() : InternalMessage(Message::Type::LiveData, Network::NetID::ExtendedCommand) {}
|
||||
LiveDataHandle handle;
|
||||
LiveDataCommand cmd;
|
||||
};
|
||||
|
||||
@@ -8,9 +8,9 @@
|
||||
|
||||
namespace icsneo {
|
||||
|
||||
class Main51Message : public RawMessage {
|
||||
class Main51Message : public InternalMessage {
|
||||
public:
|
||||
Main51Message() : RawMessage(Message::Type::Main51, Network::NetID::Main51) {}
|
||||
Main51Message() : InternalMessage(Message::Type::Main51, Network::NetID::Main51) {}
|
||||
Command command = Command(0);
|
||||
bool forceShortFormat = false; // Necessary for EnableNetworkCom and EnableNetworkComEx
|
||||
};
|
||||
|
||||
@@ -7,8 +7,10 @@
|
||||
|
||||
namespace icsneo {
|
||||
|
||||
class MDIOMessage : public Frame {
|
||||
class MDIOMessage : public BusMessage {
|
||||
public:
|
||||
const BusMessage::Type getBusType() const final { return BusMessage::Type::MDIO; }
|
||||
|
||||
enum class Clause : uint8_t {
|
||||
Clause45 = 0,
|
||||
Clause22 = 1
|
||||
|
||||
@@ -7,14 +7,70 @@ typedef uint16_t neomessagetype_t;
|
||||
#ifdef __cplusplus
|
||||
|
||||
#include "icsneo/communication/network.h"
|
||||
#include "icsneo/icsneoc2types.h"
|
||||
#include <vector>
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
|
||||
namespace icsneo {
|
||||
|
||||
class Message {
|
||||
/**
|
||||
* @brief Type of message class
|
||||
*
|
||||
* @see AbstractMessage::getMsgType()
|
||||
*/
|
||||
typedef enum class MessageType : icsneoc2_msg_type_t {
|
||||
Device = icsneoc2_msg_type_device,
|
||||
Internal = icsneoc2_msg_type_internal,
|
||||
Bus = icsneoc2_msg_type_bus,
|
||||
|
||||
MaxSize = icsneoc2_msg_type_maxsize,
|
||||
} MessageType;
|
||||
|
||||
/**
|
||||
* @brief Pure virtual abstract class for all messages. Inherit from Message over this class.
|
||||
*
|
||||
* @see Message
|
||||
*
|
||||
*/
|
||||
class AbstractMessage {
|
||||
public:
|
||||
virtual const MessageType getMsgType() const = 0;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Base Message class representing Device messages.
|
||||
*/
|
||||
class Message : public AbstractMessage {
|
||||
public:
|
||||
virtual const MessageType getMsgType() const { return MessageType::Device; }
|
||||
|
||||
/**
|
||||
* @brief Get the string representation of the message type
|
||||
*
|
||||
* @return String representation of the message type
|
||||
*
|
||||
* @see AbstractMessage::getMsgType()
|
||||
*/
|
||||
static std::string getMsgTypeName(MessageType msgType) {
|
||||
switch (msgType) {
|
||||
case MessageType::Device:
|
||||
return "Device";
|
||||
case MessageType::Internal:
|
||||
return "Internal";
|
||||
case MessageType::Bus:
|
||||
return "Bus";
|
||||
// Don't default here so we can rely on the compiler to warn us about missing cases
|
||||
};
|
||||
std::stringstream ss;
|
||||
ss << "Unknown (" << static_cast<int>(msgType) << ")";
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
enum class Type : neomessagetype_t {
|
||||
Frame = 0,
|
||||
BusMessage = 0,
|
||||
// Deprecated: Will be removed in the future.
|
||||
Frame = BusMessage,
|
||||
|
||||
CANErrorCount = 0x100,
|
||||
CANError = 0x100,
|
||||
@@ -24,7 +80,9 @@ public:
|
||||
|
||||
// Past 0x8000 are all for internal use only
|
||||
Invalid = 0x8000,
|
||||
RawMessage = 0x8001,
|
||||
InternalMessage = 0x8001,
|
||||
// Deprecated: Will be removed in the future.
|
||||
RawMessage = InternalMessage,
|
||||
ReadSettings = 0x8002,
|
||||
ResetStatus = 0x8003,
|
||||
DeviceVersion = 0x8004,
|
||||
@@ -52,26 +110,69 @@ public:
|
||||
uint64_t timestamp = 0;
|
||||
};
|
||||
|
||||
class RawMessage : public Message {
|
||||
/**
|
||||
* @brief Internal Message class representing Device messages that shouldn't be exposed to public APIs.
|
||||
*/
|
||||
class InternalMessage : public Message {
|
||||
public:
|
||||
RawMessage(Message::Type type = Message::Type::RawMessage) : Message(type) {}
|
||||
RawMessage(Message::Type type, Network net) : Message(type), network(net) {}
|
||||
RawMessage(Network net) : Message(Message::Type::RawMessage), network(net) {}
|
||||
RawMessage(Network net, std::vector<uint8_t> d) : Message(Message::Type::RawMessage), network(net), data(d) {}
|
||||
InternalMessage(Message::Type type = Message::Type::InternalMessage) : Message(type) {}
|
||||
InternalMessage(Message::Type type, Network net) : Message(type), network(net) {}
|
||||
InternalMessage(Network net) : Message(Message::Type::InternalMessage), network(net) {}
|
||||
InternalMessage(Network net, std::vector<uint8_t> d) : Message(Message::Type::InternalMessage), network(net), data(d) {}
|
||||
|
||||
virtual const MessageType getMsgType() const { return MessageType::Internal; }
|
||||
|
||||
Network network;
|
||||
std::vector<uint8_t> data;
|
||||
};
|
||||
|
||||
class Frame : public RawMessage {
|
||||
/**
|
||||
* @brief Bus Message class representing Device messages representing Bus networks like CAN, LIN, Ethernet, etc.
|
||||
*/
|
||||
class BusMessage : public InternalMessage {
|
||||
public:
|
||||
Frame() : RawMessage(Message::Type::Frame) {}
|
||||
BusMessage() : InternalMessage(Message::Type::BusMessage) {}
|
||||
|
||||
/** @brief
|
||||
* Bus message types, useful for filtering out or identifying Bus Messages.
|
||||
*/
|
||||
typedef enum class Type : icsneoc2_msg_bus_type_t {
|
||||
Invalid = icsneoc2_msg_bus_type_invalid,
|
||||
Internal = icsneoc2_msg_bus_type_internal,
|
||||
CAN = icsneoc2_msg_bus_type_can,
|
||||
LIN = icsneoc2_msg_bus_type_lin,
|
||||
FlexRay = icsneoc2_msg_bus_type_flexray,
|
||||
MOST = icsneoc2_msg_bus_type_most,
|
||||
Ethernet = icsneoc2_msg_bus_type_ethernet,
|
||||
LSFTCAN = icsneoc2_msg_bus_type_lsftcan,
|
||||
SWCAN = icsneoc2_msg_bus_type_swcan,
|
||||
ISO9141 = icsneoc2_msg_bus_type_iso9141,
|
||||
I2C = icsneoc2_msg_bus_type_i2c,
|
||||
A2B = icsneoc2_msg_bus_type_a2b,
|
||||
SPI = icsneoc2_msg_bus_type_spi,
|
||||
MDIO = icsneoc2_msg_bus_type_mdio,
|
||||
ANY = icsneoc2_msg_bus_type_any,
|
||||
OTHER = icsneoc2_msg_bus_type_other
|
||||
} Type;
|
||||
|
||||
const MessageType getMsgType() const final { return MessageType::Bus; }
|
||||
|
||||
virtual const BusMessage::Type getBusType() const = 0;
|
||||
|
||||
// Description ID of the message. This is used for filtering / tracking in firmware and driver.
|
||||
// This is equivalent to icsSpyMessage::DescriptionID
|
||||
uint16_t description = 0;
|
||||
// weather the message was originally transmitted on the bus. This is equivalent to
|
||||
// SPY_STATUS_TX_MSG bit field in icsSpyMessage::StatusBitField
|
||||
bool transmitted = false;
|
||||
bool error = false;
|
||||
};
|
||||
|
||||
/** @brief Backwards compatibility, RawMessage was renamed to better reflect what it actually does. */
|
||||
typedef InternalMessage RawMessage;
|
||||
/** @brief Backwards compatibility, Frame was renamed to better reflect what it actually does. */
|
||||
typedef BusMessage Frame;
|
||||
|
||||
}
|
||||
|
||||
#endif // __cplusplus
|
||||
|
||||
@@ -7,9 +7,9 @@
|
||||
|
||||
namespace icsneo {
|
||||
|
||||
class NeoReadMemorySDMessage : public RawMessage {
|
||||
class NeoReadMemorySDMessage : public InternalMessage {
|
||||
public:
|
||||
NeoReadMemorySDMessage() : RawMessage(Message::Type::RawMessage, Network::NetID::NeoMemorySDRead) {}
|
||||
NeoReadMemorySDMessage() : InternalMessage(Message::Type::InternalMessage, Network::NetID::NeoMemorySDRead) {}
|
||||
uint32_t startAddress = 0;
|
||||
};
|
||||
|
||||
|
||||
@@ -8,9 +8,9 @@
|
||||
|
||||
namespace icsneo {
|
||||
|
||||
class ReadSettingsMessage : public RawMessage {
|
||||
class ReadSettingsMessage : public InternalMessage {
|
||||
public:
|
||||
ReadSettingsMessage() : RawMessage(Message::Type::ReadSettings, Network::NetID::ReadSettings) {}
|
||||
ReadSettingsMessage() : InternalMessage(Message::Type::ReadSettings, Network::NetID::ReadSettings) {}
|
||||
|
||||
enum class Response : uint8_t {
|
||||
OK = 0,
|
||||
|
||||
@@ -12,6 +12,8 @@ typedef uint8_t neonettype_t;
|
||||
#include <optional>
|
||||
#include <tuple>
|
||||
|
||||
#include <icsneo/icsneoc2types.h>
|
||||
|
||||
namespace icsneo {
|
||||
|
||||
class Network {
|
||||
@@ -23,187 +25,187 @@ class Network {
|
||||
static constexpr uint16_t OFFSET_PLASMA_SLAVE3_RANGE2 = 12800;
|
||||
|
||||
public:
|
||||
enum class NetID : neonetid_t {
|
||||
Device = 0,
|
||||
HSCAN = 1,
|
||||
MSCAN = 2,
|
||||
SWCAN = 3,
|
||||
LSFTCAN = 4,
|
||||
FordSCP = 5,
|
||||
J1708 = 6,
|
||||
Aux = 7,
|
||||
J1850VPW = 8,
|
||||
ISO9141 = 9,
|
||||
DiskData = 10,
|
||||
Main51 = 11,
|
||||
RED = 12,
|
||||
SCI = 13,
|
||||
ISO9141_2 = 14,
|
||||
ISO14230 = 15,
|
||||
LIN = 16,
|
||||
OP_Ethernet1 = 17,
|
||||
OP_Ethernet2 = 18,
|
||||
OP_Ethernet3 = 19,
|
||||
enum class NetID : icsneoc2_netid_t {
|
||||
Device = icsneoc2_netid_device,
|
||||
HSCAN = icsneoc2_netid_hscan,
|
||||
MSCAN = icsneoc2_netid_mscan,
|
||||
SWCAN = icsneoc2_netid_swcan,
|
||||
LSFTCAN = icsneoc2_netid_lsftcan,
|
||||
FordSCP = icsneoc2_netid_fordscp,
|
||||
J1708 = icsneoc2_netid_j1708,
|
||||
Aux = icsneoc2_netid_aux,
|
||||
J1850VPW = icsneoc2_netid_j1850vpw,
|
||||
ISO9141 = icsneoc2_netid_iso9141,
|
||||
DiskData = icsneoc2_netid_disk_data,
|
||||
Main51 = icsneoc2_netid_main51,
|
||||
RED = icsneoc2_netid_red,
|
||||
SCI = icsneoc2_netid_sci,
|
||||
ISO9141_2 = icsneoc2_netid_iso9141_2,
|
||||
ISO14230 = icsneoc2_netid_iso14230,
|
||||
LIN = icsneoc2_netid_lin,
|
||||
OP_Ethernet1 = icsneoc2_netid_op_ethernet1,
|
||||
OP_Ethernet2 = icsneoc2_netid_op_ethernet2,
|
||||
OP_Ethernet3 = icsneoc2_netid_op_ethernet3,
|
||||
|
||||
// START Device Command Returns
|
||||
// When we send a command, the device returns on one of these, depending on command
|
||||
RED_EXT_MEMORYREAD = 20,
|
||||
RED_INT_MEMORYREAD = 21,
|
||||
RED_DFLASH_READ = 22,
|
||||
NeoMemorySDRead = 23, // Response from NeoMemory (MemoryTypeSD)
|
||||
CAN_ERRBITS = 24,
|
||||
NeoMemoryWriteDone = 25,
|
||||
RED_WAVE_CAN1_LOGICAL = 26,
|
||||
RED_WAVE_CAN2_LOGICAL = 27,
|
||||
RED_WAVE_LIN1_LOGICAL = 28,
|
||||
RED_WAVE_LIN2_LOGICAL = 29,
|
||||
RED_WAVE_LIN1_ANALOG = 30,
|
||||
RED_WAVE_LIN2_ANALOG = 31,
|
||||
RED_WAVE_MISC_ANALOG = 32,
|
||||
RED_WAVE_MISCDIO2_LOGICAL = 33,
|
||||
RED_NETWORK_COM_ENABLE_EX = 34,
|
||||
RED_NEOVI_NETWORK = 35,
|
||||
RED_READ_BAUD_SETTINGS = 36,
|
||||
RED_OLDFORMAT = 37,
|
||||
RED_SCOPE_CAPTURE = 38,
|
||||
RED_HARDWARE_EXCEP = 39,
|
||||
RED_GET_RTC = 40,
|
||||
RED_EXT_MEMORYREAD = icsneoc2_netid_red_ext_memoryread,
|
||||
RED_INT_MEMORYREAD = icsneoc2_netid_red_int_memoryread,
|
||||
RED_DFLASH_READ = icsneoc2_netid_red_dflash_read,
|
||||
NeoMemorySDRead = icsneoc2_netid_neo_memory_sdread, // Response from NeoMemory (MemoryTypeSD)
|
||||
CAN_ERRBITS = icsneoc2_netid_can_errbits,
|
||||
NeoMemoryWriteDone = icsneoc2_netid_neo_memory_write_done,
|
||||
RED_WAVE_CAN1_LOGICAL = icsneoc2_netid_red_wave_can1_logical,
|
||||
RED_WAVE_CAN2_LOGICAL = icsneoc2_netid_red_wave_can2_logical,
|
||||
RED_WAVE_LIN1_LOGICAL = icsneoc2_netid_red_wave_lin1_logical,
|
||||
RED_WAVE_LIN2_LOGICAL = icsneoc2_netid_red_wave_lin2_logical,
|
||||
RED_WAVE_LIN1_ANALOG = icsneoc2_netid_red_wave_lin1_analog,
|
||||
RED_WAVE_LIN2_ANALOG = icsneoc2_netid_red_wave_lin2_analog,
|
||||
RED_WAVE_MISC_ANALOG = icsneoc2_netid_red_wave_misc_analog,
|
||||
RED_WAVE_MISCDIO2_LOGICAL = icsneoc2_netid_red_wave_miscdio2_logical,
|
||||
RED_NETWORK_COM_ENABLE_EX = icsneoc2_netid_red_network_com_enable_ex,
|
||||
RED_NEOVI_NETWORK = icsneoc2_netid_red_neovi_network,
|
||||
RED_READ_BAUD_SETTINGS = icsneoc2_netid_red_read_baud_settings,
|
||||
RED_OLDFORMAT = icsneoc2_netid_red_oldformat,
|
||||
RED_SCOPE_CAPTURE = icsneoc2_netid_red_scope_capture,
|
||||
RED_HARDWARE_EXCEP = icsneoc2_netid_red_hardware_excep,
|
||||
RED_GET_RTC = icsneoc2_netid_red_get_rtc,
|
||||
// END Device Command Returns
|
||||
|
||||
ISO9141_3 = 41,
|
||||
HSCAN2 = 42,
|
||||
HSCAN3 = 44,
|
||||
OP_Ethernet4 = 45,
|
||||
OP_Ethernet5 = 46,
|
||||
ISO9141_4 = 47,
|
||||
LIN2 = 48,
|
||||
LIN3 = 49,
|
||||
LIN4 = 50,
|
||||
ISO9141_3 = icsneoc2_netid_iso9141_3,
|
||||
HSCAN2 = icsneoc2_netid_hscan2,
|
||||
HSCAN3 = icsneoc2_netid_hscan3,
|
||||
OP_Ethernet4 = icsneoc2_netid_op_ethernet4,
|
||||
OP_Ethernet5 = icsneoc2_netid_op_ethernet5,
|
||||
ISO9141_4 = icsneoc2_netid_iso9141_4,
|
||||
LIN2 = icsneoc2_netid_lin2,
|
||||
LIN3 = icsneoc2_netid_lin3,
|
||||
LIN4 = icsneoc2_netid_lin4,
|
||||
// MOST = 51, Old and unused
|
||||
RED_App_Error = 52,
|
||||
CGI = 53,
|
||||
Reset_Status = 54,
|
||||
FB_Status = 55,
|
||||
App_Signal_Status = 56,
|
||||
Read_Datalink_Cm_Tx_Msg = 57,
|
||||
Read_Datalink_Cm_Rx_Msg = 58,
|
||||
Logging_Overflow = 59,
|
||||
ReadSettings = 60,
|
||||
HSCAN4 = 61,
|
||||
HSCAN5 = 62,
|
||||
RS232 = 63,
|
||||
UART = 64,
|
||||
UART2 = 65,
|
||||
UART3 = 66,
|
||||
UART4 = 67,
|
||||
SWCAN2 = 68,
|
||||
Ethernet_DAQ = 69,
|
||||
Data_To_Host = 70,
|
||||
TextAPI_To_Host = 71,
|
||||
SPI1 = 72,
|
||||
OP_Ethernet6 = 73,
|
||||
Red_VBat = 74,
|
||||
OP_Ethernet7 = 75,
|
||||
OP_Ethernet8 = 76,
|
||||
OP_Ethernet9 = 77,
|
||||
OP_Ethernet10 = 78,
|
||||
OP_Ethernet11 = 79,
|
||||
FlexRay1a = 80,
|
||||
FlexRay1b = 81,
|
||||
FlexRay2a = 82,
|
||||
FlexRay2b = 83,
|
||||
LIN5 = 84,
|
||||
FlexRay = 85,
|
||||
FlexRay2 = 86,
|
||||
OP_Ethernet12 = 87,
|
||||
I2C = 88,
|
||||
MOST25 = 90,
|
||||
MOST50 = 91,
|
||||
MOST150 = 92,
|
||||
Ethernet = 93,
|
||||
GMFSA = 94,
|
||||
TCP = 95,
|
||||
HSCAN6 = 96,
|
||||
HSCAN7 = 97,
|
||||
LIN6 = 98,
|
||||
LSFTCAN2 = 99,
|
||||
LogicalDiskInfo = 187,
|
||||
WiVICommand = 221,
|
||||
ScriptStatus = 224,
|
||||
EthPHYControl = 239,
|
||||
ExtendedCommand = 240,
|
||||
ExtendedData = 242,
|
||||
FlexRayControl = 243,
|
||||
CoreMiniPreLoad = 244,
|
||||
HW_COM_Latency_Test = 512,
|
||||
DeviceStatus = 513,
|
||||
UDP = 514,
|
||||
ForwardedMessage = 516,
|
||||
I2C2 = 517,
|
||||
I2C3 = 518,
|
||||
I2C4 = 519,
|
||||
Ethernet2 = 520,
|
||||
A2B1 = 522,
|
||||
A2B2 = 523,
|
||||
Ethernet3 = 524,
|
||||
WBMS = 532,
|
||||
DWCAN9 = 534,
|
||||
DWCAN10 = 535,
|
||||
DWCAN11 = 536,
|
||||
DWCAN12 = 537,
|
||||
DWCAN13 = 538,
|
||||
DWCAN14 = 539,
|
||||
DWCAN15 = 540,
|
||||
DWCAN16 = 541,
|
||||
LIN7 = 542,
|
||||
LIN8 = 543,
|
||||
SPI2 = 544,
|
||||
MDIO1 = 545,
|
||||
MDIO2 = 546,
|
||||
MDIO3 = 547,
|
||||
MDIO4 = 548,
|
||||
MDIO5 = 549,
|
||||
MDIO6 = 550,
|
||||
MDIO7 = 551,
|
||||
MDIO8 = 552,
|
||||
OP_Ethernet13 = 553,
|
||||
OP_Ethernet14 = 554,
|
||||
OP_Ethernet15 = 555,
|
||||
OP_Ethernet16 = 556,
|
||||
SPI3 = 557,
|
||||
SPI4 = 558,
|
||||
SPI5 = 559,
|
||||
SPI6 = 560,
|
||||
SPI7 = 561,
|
||||
SPI8 = 562,
|
||||
LIN9 = 563,
|
||||
LIN10 = 564,
|
||||
LIN11 = 565,
|
||||
LIN12 = 566,
|
||||
LIN13 = 567,
|
||||
LIN14 = 568,
|
||||
LIN15 = 569,
|
||||
LIN16 = 570,
|
||||
Any = 0xfffe, // Never actually set as type, but used as flag for filtering
|
||||
Invalid = 0xffff
|
||||
RED_App_Error = icsneoc2_netid_red_app_error,
|
||||
CGI = icsneoc2_netid_cgi,
|
||||
Reset_Status = icsneoc2_netid_reset_status,
|
||||
FB_Status = icsneoc2_netid_fb_status,
|
||||
App_Signal_Status = icsneoc2_netid_app_signal_status,
|
||||
Read_Datalink_Cm_Tx_Msg = icsneoc2_netid_read_datalink_cm_tx_msg,
|
||||
Read_Datalink_Cm_Rx_Msg = icsneoc2_netid_read_datalink_cm_rx_msg,
|
||||
Logging_Overflow = icsneoc2_netid_logging_overflow,
|
||||
ReadSettings = icsneoc2_netid_read_settings,
|
||||
HSCAN4 = icsneoc2_netid_hscan4,
|
||||
HSCAN5 = icsneoc2_netid_hscan5,
|
||||
RS232 = icsneoc2_netid_rs232,
|
||||
UART = icsneoc2_netid_uart,
|
||||
UART2 = icsneoc2_netid_uart2,
|
||||
UART3 = icsneoc2_netid_uart3,
|
||||
UART4 = icsneoc2_netid_uart4,
|
||||
SWCAN2 = icsneoc2_netid_swcan2,
|
||||
Ethernet_DAQ = icsneoc2_netid_ethernet_daq,
|
||||
Data_To_Host = icsneoc2_netid_data_to_host,
|
||||
TextAPI_To_Host = icsneoc2_netid_textapi_to_host,
|
||||
SPI1 = icsneoc2_netid_spi1,
|
||||
OP_Ethernet6 = icsneoc2_netid_op_ethernet6,
|
||||
Red_VBat = icsneoc2_netid_red_vbat,
|
||||
OP_Ethernet7 = icsneoc2_netid_op_ethernet7,
|
||||
OP_Ethernet8 = icsneoc2_netid_op_ethernet8,
|
||||
OP_Ethernet9 = icsneoc2_netid_op_ethernet9,
|
||||
OP_Ethernet10 = icsneoc2_netid_op_ethernet10,
|
||||
OP_Ethernet11 = icsneoc2_netid_op_ethernet11,
|
||||
FlexRay1a = icsneoc2_netid_flexray1a,
|
||||
FlexRay1b = icsneoc2_netid_flexray1b,
|
||||
FlexRay2a = icsneoc2_netid_flexray2a,
|
||||
FlexRay2b = icsneoc2_netid_flexray2b,
|
||||
LIN5 = icsneoc2_netid_lin5,
|
||||
FlexRay = icsneoc2_netid_flexray,
|
||||
FlexRay2 = icsneoc2_netid_flexray2,
|
||||
OP_Ethernet12 = icsneoc2_netid_op_ethernet12,
|
||||
I2C = icsneoc2_netid_i2c,
|
||||
MOST25 = icsneoc2_netid_most25,
|
||||
MOST50 = icsneoc2_netid_most50,
|
||||
MOST150 = icsneoc2_netid_most150,
|
||||
Ethernet = icsneoc2_netid_ethernet,
|
||||
GMFSA = icsneoc2_netid_gmfsa,
|
||||
TCP = icsneoc2_netid_tcp,
|
||||
HSCAN6 = icsneoc2_netid_hscan6,
|
||||
HSCAN7 = icsneoc2_netid_hscan7,
|
||||
LIN6 = icsneoc2_netid_lin6,
|
||||
LSFTCAN2 = icsneoc2_netid_lsftcan2,
|
||||
LogicalDiskInfo = icsneoc2_netid_logical_disk_info,
|
||||
WiVICommand = icsneoc2_netid_wivi_command,
|
||||
ScriptStatus = icsneoc2_netid_script_status,
|
||||
EthPHYControl = icsneoc2_netid_eth_phy_control,
|
||||
ExtendedCommand = icsneoc2_netid_extended_command,
|
||||
ExtendedData = icsneoc2_netid_extended_data,
|
||||
FlexRayControl = icsneoc2_netid_flexray_control,
|
||||
CoreMiniPreLoad = icsneoc2_netid_coremini_preload,
|
||||
HW_COM_Latency_Test = icsneoc2_netid_hw_com_latency_test,
|
||||
DeviceStatus = icsneoc2_netid_device_status,
|
||||
UDP = icsneoc2_netid_udp,
|
||||
ForwardedMessage = icsneoc2_netid_forwarded_message,
|
||||
I2C2 = icsneoc2_netid_i2c2,
|
||||
I2C3 = icsneoc2_netid_i2c3,
|
||||
I2C4 = icsneoc2_netid_i2c4,
|
||||
Ethernet2 = icsneoc2_netid_ethernet2,
|
||||
A2B1 = icsneoc2_netid_a2b1,
|
||||
A2B2 = icsneoc2_netid_a2b2,
|
||||
Ethernet3 = icsneoc2_netid_ethernet3,
|
||||
WBMS = icsneoc2_netid_wbms,
|
||||
DWCAN9 = icsneoc2_netid_dwcan9,
|
||||
DWCAN10 = icsneoc2_netid_dwcan10,
|
||||
DWCAN11 = icsneoc2_netid_dwcan11,
|
||||
DWCAN12 = icsneoc2_netid_dwcan12,
|
||||
DWCAN13 = icsneoc2_netid_dwcan13,
|
||||
DWCAN14 = icsneoc2_netid_dwcan14,
|
||||
DWCAN15 = icsneoc2_netid_dwcan15,
|
||||
DWCAN16 = icsneoc2_netid_dwcan16,
|
||||
LIN7 = icsneoc2_netid_lin7,
|
||||
LIN8 = icsneoc2_netid_lin8,
|
||||
SPI2 = icsneoc2_netid_spi2,
|
||||
MDIO1 = icsneoc2_netid_mdio1,
|
||||
MDIO2 = icsneoc2_netid_mdio2,
|
||||
MDIO3 = icsneoc2_netid_mdio3,
|
||||
MDIO4 = icsneoc2_netid_mdio4,
|
||||
MDIO5 = icsneoc2_netid_mdio5,
|
||||
MDIO6 = icsneoc2_netid_mdio6,
|
||||
MDIO7 = icsneoc2_netid_mdio7,
|
||||
MDIO8 = icsneoc2_netid_mdio8,
|
||||
OP_Ethernet13 = icsneoc2_netid_op_ethernet13,
|
||||
OP_Ethernet14 = icsneoc2_netid_op_ethernet14,
|
||||
OP_Ethernet15 = icsneoc2_netid_op_ethernet15,
|
||||
OP_Ethernet16 = icsneoc2_netid_op_ethernet16,
|
||||
SPI3 = icsneoc2_netid_spi3,
|
||||
SPI4 = icsneoc2_netid_spi4,
|
||||
SPI5 = icsneoc2_netid_spi5,
|
||||
SPI6 = icsneoc2_netid_spi6,
|
||||
SPI7 = icsneoc2_netid_spi7,
|
||||
SPI8 = icsneoc2_netid_spi8,
|
||||
LIN9 = icsneoc2_netid_lin9,
|
||||
LIN10 = icsneoc2_netid_lin10,
|
||||
LIN11 = icsneoc2_netid_lin11,
|
||||
LIN12 = icsneoc2_netid_lin12,
|
||||
LIN13 = icsneoc2_netid_lin13,
|
||||
LIN14 = icsneoc2_netid_lin14,
|
||||
LIN15 = icsneoc2_netid_lin15,
|
||||
LIN16 = icsneoc2_netid_lin16,
|
||||
Any = icsneoc2_netid_any, // Never actually set as type, but used as flag for filtering
|
||||
Invalid = icsneoc2_netid_invalid
|
||||
};
|
||||
enum class Type : neonettype_t {
|
||||
Invalid = 0,
|
||||
Internal = 1, // Used for statuses that don't actually need to be transferred to the client application
|
||||
CAN = 2,
|
||||
LIN = 3,
|
||||
FlexRay = 4,
|
||||
MOST = 5,
|
||||
Ethernet = 6,
|
||||
LSFTCAN = 7,
|
||||
SWCAN = 8,
|
||||
ISO9141 = 9,
|
||||
I2C = 10,
|
||||
A2B = 11,
|
||||
SPI = 12,
|
||||
MDIO = 13,
|
||||
Any = 0xFE, // Never actually set as type, but used as flag for filtering
|
||||
Other = 0xFF
|
||||
enum class Type : icsneoc2_msg_bus_type_t {
|
||||
Invalid = icsneoc2_msg_bus_type_invalid,
|
||||
Internal = icsneoc2_msg_bus_type_internal, // Used for statuses that don't actually need to be transferred to the client application
|
||||
CAN = icsneoc2_msg_bus_type_can,
|
||||
LIN = icsneoc2_msg_bus_type_lin,
|
||||
FlexRay = icsneoc2_msg_bus_type_flexray,
|
||||
MOST = icsneoc2_msg_bus_type_most,
|
||||
Ethernet = icsneoc2_msg_bus_type_ethernet,
|
||||
LSFTCAN = icsneoc2_msg_bus_type_lsftcan,
|
||||
SWCAN = icsneoc2_msg_bus_type_swcan,
|
||||
ISO9141 = icsneoc2_msg_bus_type_iso9141,
|
||||
I2C = icsneoc2_msg_bus_type_i2c,
|
||||
A2B = icsneoc2_msg_bus_type_a2b,
|
||||
SPI = icsneoc2_msg_bus_type_spi,
|
||||
MDIO = icsneoc2_msg_bus_type_mdio,
|
||||
Any = icsneoc2_msg_bus_type_any, // Never actually set as type, but used as flag for filtering
|
||||
Other = icsneoc2_msg_bus_type_other
|
||||
};
|
||||
enum class CoreMini : uint8_t {
|
||||
HSCAN = 0,
|
||||
|
||||
@@ -13,6 +13,9 @@ namespace icsneo {
|
||||
|
||||
typedef uint16_t icscm_bitfield;
|
||||
|
||||
std::optional<uint8_t> CAN_DLCToLength(uint8_t length, bool fd);
|
||||
std::optional<uint8_t> CAN_LengthToDLC(size_t dataLength, bool fd);
|
||||
|
||||
#pragma pack(push,2)
|
||||
struct HardwareCANPacket {
|
||||
static std::shared_ptr<Message> DecodeToMessage(const std::vector<uint8_t>& bytestream);
|
||||
@@ -78,4 +81,4 @@ struct HardwareCANErrorPacket {
|
||||
|
||||
#endif // __cplusplus
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user