API: Added icsneoc2.

Signed-off-by: David Rebbe <drebbe@intrepidcs.com>
This commit is contained in:
David Rebbe
2025-02-04 13:48:43 -05:00
parent c5ba2d8d32
commit 6dd4456f9a
81 changed files with 6731 additions and 364 deletions
@@ -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
+111 -10
View File
@@ -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,
+176 -174
View File
@@ -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