Files
PR_PRM_GUI/LFP_Manager_PRM/Function/csValueCANAPI.cs
2026-02-11 10:10:43 +09:00

2112 lines
82 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
static class Constants
{
// Constants used to calculate the timestamp
public const double NEOVI_TIMESTAMP_2 = 0.1048576;
public const double NEOVI_TIMESTAMP_1 = 0.0000016;
public const double NEOVIPRO_VCAN_TIMESTAMP_2 = 0.065536;
public const double NEOVIPRO_VCAN_TIMESTAMP_1 = 0.000001;
public const double NEOVI6_VCAN_TIMESTAMP_2 = 0.065536;
public const double NEOVI6_VCAN_TIMESTAMP_1 = 0.000001;
public const double NEOVI_RED_TIMESTAMP_2_25NS = 107.3741824;
public const double NEOVI_RED_TIMESTAMP_1_25NS = 0.000000025;
public const double NEOVI_RED_TIMESTAMP_2_10NS = 429.4967296;
public const double NEOVI_RED_TIMESTAMP_1_10NS = 0.000000010;
}
namespace LFP_Manager.Function
{
public enum eHardwareTypes : uint
{
NEODEVICE_UNKNOWN = 0x00000000,
NEODEVICE_BLUE = 0x00000001,
NEODEVICE_ECU_AVB = 0x00000002,
NEODEVICE_RADSUPERMOON = 0x00000003,
NEODEVICE_DW_VCAN = 0x00000004,
NEODEVICE_RADMOON2 = 0x00000005,
NEODEVICE_RADGIGALOG = 0x00000006,
NEODEVICE_VCAN41 = 0x00000007,
NEODEVICE_FIRE = 0x00000008,
NEODEVICE_RADPLUTO = 0x00000009,
NEODEVICE_VCAN42_EL = 0x0000000a,
NEODEVICE_RADIO_CANHUB = 0x0000000b,
NEODEVICE_NEOECU12 = 0x0000000c,
NEODEVICE_OBD2_LCBADGE = 0x0000000d,
NEODEVICE_RAD_MOON_DUO = 0x0000000e,
NEODEVICE_VCAN3 = 0x00000010,
NEODEVICE_RADJUPITER = 0x00000011,
NEODEVICE_VCAN4_IND = 0x00000012,
NEODEVICE_GIGASTAR = 0x00000013,
NEODEVICE_ECU22 = 0x00000015,
NEODEVICE_RED = 0x00000040,
NEODEVICE_ECU = 0x00000080,
NEODEVICE_IEVB = 0x00000100,
NEODEVICE_PENDANT = 0x00000200,
NEODEVICE_OBD2_PRO = 0x00000400,
NEODEVICE_PLASMA = 0x00001000,
NEODEVICE_NEOANALOG = 0x00004000,
NEODEVICE_CT_OBD = 0x00008000,
NEODEVICE_ION = 0x00040000,
NEODEVICE_RADSTAR = 0x00080000,
NEODEVICE_VCAN44 = 0x00200000,
NEODEVICE_VCAN42 = 0x00400000,
NEODEVICE_CMPROBE = 0x00800000,
NEODEVICE_EEVB = 0x01000000,
NEODEVICE_VCANRF = 0x02000000,
NEODEVICE_FIRE2 = 0x04000000,
NEODEVICE_FLEX = 0x08000000,
NEODEVICE_RADGALAXY = 0x10000000,
NEODEVICE_RADSTAR2 = 0x20000000,
NEODEVICE_VIVIDCAN = 0x40000000,
NEODEVICE_OBD2_SIM = 0x80000000,
NEODEVICE_ALL = 0xFFFFBFFF,
}
public enum EDeviceSettingsType : uint
{
DeviceFireSettingsType = 00,
DeviceFireVnetSettingsType = 01,
DeviceFire2SettingsType = 02,
DeviceVCAN3SettingsType = 03,
DeviceRADGalaxySettingsType = 04,
DeviceRADStar2SettingsType = 05,
DeviceVCAN4SettingsType = 06,
DeviceVCAN412SettingsType = 07,
DeviceVividCANSettingsType = 08,
DeviceECU_AVBSettingsType = 09,
DeviceRADSuperMoonSettingsType = 10,
DeviceRADMoon2SettingsType = 11,
DeviceRADPlutoSettingsType = 12,
DeviceRADGigalogSettingsType = 13,
DeviceVCANRFSettingsType = 14,
DeviceEEVBSettingsType = 15,
DeviceVCAN4IndSettingsType = 16,
DeviceNeoECU12SettingsType = 17,
DeviceFlexVnetzSettingsType = 18,
DeviceCANHUBSettingsType = 19,
DeviceIEVBSettingsType = 20,
DeviceOBD2SimSettingsType = 21,
DeviceCMProbeSettingsType = 22,
DeviceOBD2ProSettingsType = 23,
DevicePlaceHolder0SettingsType = 24,
DeviceRADPlutoSwitchSettingsType = 25,
DeviceRADGigastarSettingsType = 26,
DeviceRADJupiterSettingsType = 27,
DevicePlaceHolder1SettingsType = 28,
DeviceRadMoonDuoSettingsType = 29,
DeviceEtherBadgeSettingsType = 30,
DeviceRADA2BSettingsType = 31,
DeviceSettingsTypeMax = 32
}
public enum eDATA_STATUS_BITFIELD_1 : uint //: long
{
SPY_STATUS_GLOBAL_ERR = 0x01,
SPY_STATUS_TX_MSG = 0x02,
SPY_STATUS_XTD_FRAME = 0x04,
SPY_STATUS_REMOTE_FRAME = 0x08,
SPY_STATUS_CRC_ERROR = 0x10,
SPY_STATUS_CAN_ERROR_PASSIVE = 0x20,
SPY_STATUS_INCOMPLETE_FRAME = 0x40,
SPY_STATUS_LOST_ARBITRATION = 0x80,
SPY_STATUS_UNDEFINED_ERROR = 0x100,
SPY_STATUS_CAN_BUS_OFF = 0x200,
SPY_STATUS_CAN_ERROR_WARNING = 0x400,
SPY_STATUS_BUS_SHORTED_PLUS = 0x800,
SPY_STATUS_BUS_SHORTED_GND = 0x1000,
SPY_STATUS_CHECKSUM_ERROR = 0x2000,
SPY_STATUS_BAD_MESSAGE_BIT_TIME_ERROR = 0x4000,
SPY_STATUS_IFR_DATA = 0x8000,
SPY_STATUS_COMM_IN_OVERFLOW = 0x10000,
SPY_STATUS_COMM_OUT_OVERFLOW = 0x20000,
SPY_STATUS_COMM_MISC_ERROR = 0x40000,
SPY_STATUS_BREAK = 0x80000,
SPY_STATUS_AVSI_REC_OVERFLOW = 0x100000,
SPY_STATUS_TEST_TRIGGER = 0x200000,
SPY_STATUS_AUDIO_COMMENT = 0x400000,
SPY_STATUS_GPS_DATA = 0x800000,
SPY_STATUS_ANALOG_DIGITAL_INPUT = 0x1000000,
SPY_STATUS_TEXT_COMMENT = 0x2000000,
SPY_STATUS_NETWORK_MESSAGE_TYPE = 0x4000000,
SPY_STATUS_VSI_TX_UNDERRUN = 0x8000000,
SPY_STATUS_VSI_IFR_CRC_BIT = 0x10000000,
SPY_STATUS_INIT_MESSAGE = 0x20000000,
SPY_STATUS_HIGH_SPEED = 0x40000000,
SPY_STATUS_FLEXRAY_SECOND_STARTUP_FRAME = 0x40000000,
SPY_STATUS_EXTENDED = 0x80000000, // if this bit is set than decode status bitfield3 in the ackbytes
}
public enum eDATA_STATUS_BITFIELD_2 : uint
{
SPY_STATUS2_HAS_VALUE = 1,
SPY_STATUS2_VALUE_IS_BOOLEAN = 2,
SPY_STATUS2_HIGH_VOLTAGE = 4,
SPY_STATUS2_LONG_MESSAGE = 8,
SPY_STATUS2_GLOBAL_CHANGE = 0x10000,
SPY_STATUS2_ERROR_FRAME = 0x20000,
SPY_STATUS2_END_OF_LONG_MESSAGE = 0x100000, //for ISO and J1708,
//LIN/ISO Specific - check protocol before handling
SPY_STATUS2_LIN_ERR_RX_BREAK_NOT_0 = 0x200000,
SPY_STATUS2_LIN_ERR_RX_BREAK_TOO_SHORT = 0x400000,
SPY_STATUS2_LIN_ERR_RX_SYNC_NOT_55 = 0x800000,
SPY_STATUS2_LIN_ERR_RX_DATA_GREATER_8 = 0x1000000,
SPY_STATUS2_LIN_ERR_TX_RX_MISMATCH = 0x2000000,
SPY_STATUS2_LIN_ERR_MSG_ID_PARITY = 0x4000000,
SPY_STATUS2_ISO_FRAME_ERROR = 0x8000000,
SPY_STATUS2_LIN_SYNC_FRAME_ERROR = 0x8000000,
SPY_STATUS2_ISO_OVERFLOW_ERROR = 0x10000000,
SPY_STATUS2_LIN_ID_FRAME_ERROR = 0x10000000,
SPY_STATUS2_ISO_PARITY_ERROR = 0x20000000,
SPY_STATUS2_LIN_SLAVE_BYTE_ERROR = 0x20000000,
SPY_STATUS2_RX_TIMEOUT_ERROR = 0x40000000,
SPY_STATUS2_LIN_NO_SLAVE_DATA = 0x80000000,
//MOST Specific - check protocol before handling
SPY_STATUS2_MOST_PACKET_DATA = 0x200000,
SPY_STATUS2_MOST_STATUS = 0x400000, //reflects changes in light/lock/MPR/SBC/etc.
PY_STATUS2_MOST_LOW_LEVEL = 0x800000, //MOST low level message, allocs, deallocs, remote requests.
SPY_STATUS2_MOST_CONTROL_DATA = 0x1000000,
SPY_STATUS2_MOST_MHP_USER_DATA = 0x2000000, //MOST HIGH User Data Frame
SPY_STATUS2_MOST_MHP_CONTROL_DATA = 0x4000000, //MOST HIGH Control Data
SPY_STATUS2_MOST_I2S_DUMP = 0x8000000,
SPY_STATUS2_MOST_TOO_SHORT = 0x10000000,
SPY_STATUS2_MOST_MOST50 = 0x20000000, //absence of MOST50 and MOST150 implies it's MOST25
SPY_STATUS2_MOST_MOST150 = 0x40000000,
SPY_STATUS2_MOST_CHANGED_PAR = 0x80000000, //first byte in ack reflects what changed
//Ethernet Specific - check protocol before handling
SPY_STATUS2_ETHERNET_CRC_ERROR = 0x200000,
SPY_STATUS2_ETHERNET_FRAME_TOO_SHORT = 0x400000,
SPY_STATUS2_ETHERNET_FCS_AVAILABLE = 0x800000, //This frame contains FCS (4 bytes) obtained from ICS Ethernet hardware (ex. RAD-STAR)
}
public enum eDATA_STATUS_BITFIELD_3_LIN
{
SPY_STATUS3_LIN_JUST_BREAK_SYNC = 1,
SPY_STATUS3_LIN_SLAVE_DATA_TOO_SHORT = 2,
SPY_STATUS3_LIN_ONLY_UPDATE_SLAVE_TABLE_ONCE = 4,
}
public enum eDATA_STATUS_BITFIELD_3_CANFD
{
SPY_STATUS3_CANFD_ESI = 0x01,
SPY_STATUS3_CANFD_IDE = 0x02,
SPY_STATUS3_CANFD_RTR = 0x04,
SPY_STATUS3_CANFD_FDF = 0x08,
SPY_STATUS3_CANFD_BRS = 0x10,
}
public enum icsConfigSetup : short
{
NEO_CFG_MPIC_HS_CAN_CNF1 = 512 + 10,
NEO_CFG_MPIC_HS_CAN_CNF2 = 512 + 9,
NEO_CFG_MPIC_HS_CAN_CNF3 = 512 + 8,
NEO_CFG_MPIC_HS_CAN_MODE = 512 + 54,
// med speed CAN
NEO_CFG_MPIC_MS_CAN_CNF1 = 512 + 22,
NEO_CFG_MPIC_MS_CAN_CNF2 = 512 + 21,
NEO_CFG_MPIC_MS_CAN_CNF3 = 512 + 20,
NEO_CFG_MPIC_SW_CAN_CNF1 = 512 + 34,
NEO_CFG_MPIC_SW_CAN_CNF2 = 512 + 33,
NEO_CFG_MPIC_SW_CAN_CNF3 = 512 + 32,
NEO_CFG_MPIC_LSFT_CAN_CNF1 = 512 + 46,
NEO_CFG_MPIC_LSFT_CAN_CNF2 = 512 + 45,
NEO_CFG_MPIC_LSFT_CAN_CNF3 = 512 + 44,
}
// Network ID
public enum eNETWORK_ID : int
{
NETID_DEVICE = 0,
NETID_HSCAN = 1,
NETID_MSCAN = 2,
NETID_SWCAN = 3,
NETID_LSFTCAN = 4,
NETID_ISO = 9,
NETID_ISO2 = 14,
NETID_ISO14230 = 15,
NETID_LIN = 16,
NETID_OP_ETHERNET1 = 17,
NETID_OP_ETHERNET2 = 18,
NETID_OP_ETHERNET3 = 19,
NETID_ISO3 = 41,
NETID_HSCAN2 = 42,
NETID_HSCAN3 = 44,
NETID_OP_ETHERNET4 = 45,
NETID_OP_ETHERNET5 = 46,
NETID_ISO4 = 47,
NETID_LIN2 = 48,
NETID_LIN3 = 49,
NETID_LIN4 = 50,
NETID_MOST = 51,
NETID_CGI = 53,
NETID_HSCAN4 = 61,
NETID_HSCAN5 = 62,
NETID_UART = 64,
NETID_UART2 = 65,
NETID_UART3 = 66,
NETID_UART4 = 67,
NETID_SWCAN2 = 68,
NETID_ETHERNET_DAQ = 69,
NETID_OP_ETHERNET6 = 73,
NETID_OP_ETHERNET7 = 75,
NETID_OP_ETHERNET8 = 76,
NETID_OP_ETHERNET9 = 77,
NETID_OP_ETHERNET10 = 78,
NETID_OP_ETHERNET11 = 79,
NETID_FLEXRAY1A = 80,
NETID_FLEXRAY1B = 81,
NETID_FLEXRAY2A = 82,
NETID_FLEXRAY2B = 83,
NETID_LIN5 = 84,
NETID_FLEXRAY = 85,
NETID_FLEXRAY2 = 86,
NETID_OP_ETHERNET12 = 87,
NETID_MOST25 = 90,
NETID_MOST50 = 91,
NETID_MOST150 = 92,
NETID_ETHERNET = 93,
NETID_HSCAN6 = 96,
NETID_HSCAN7 = 97,
NETID_LIN6 = 98,
NETID_LSFTCAN2 = 99,
}
//Vnet Enum for SlaveVnet types
public enum icsSpySlaveVNETAB : int
{
eNoVnet = 0,
eAinVnet = 2,
eFlexRayVnet = 3,
eSlaveFireVnet = 4,
eSlaveFireVnetEP = 5,
eSlaveFire2Vnet = 6,
eSlaveFire2VnetZ = 7,
eSlaveMost150 = 8,
}
//ISO15765 Constants
public enum eISO15765_NetConst : int
{
ISO15765_2_NETWORK_HSCAN = 0x01,
ISO15765_2_NETWORK_MSCAN = 0x02,
ISO15765_2_NETWORK_HSCAN2 = 0x04,
ISO15765_2_NETWORK_HSCAN3 = 0x08,
ISO15765_2_NETWORK_SWCAN = 0x10,
ISO15765_2_NETWORK_HSCAN4 = 0x14,
ISO15765_2_NETWORK_HSCAN5 = 0x18,
ISO15765_2_NETWORK_HSCAN6 = 0x1C,
ISO15765_2_NETWORK_HSCAN7 = 0x20,
ISO15765_2_NETWORK_SWCAN2 = 0x24,
}
//CoreMini Status
public enum eScriptStatus : int
{
SCRIPT_STATUS_STOPPED = 0,
SCRIPT_STATUS_RUNNING = 1,
}
//CoreMini Location
public enum eScriptLocation : int
{
SCRIPT_LOCATION_FLASH_MEM = 0,
SCRIPT_LOCATION_SDCARD = 1,
SCRIPT_LOCATION_INTERNAL_FLASH = 2,
SCRIPT_LOCATION_VCAN3_MEM = 4,
}
// ePROTOCOL
public enum ePROTOCOL : int
{
SPY_PROTOCOL_CUSTOM = 0,
SPY_PROTOCOL_CAN = 1,
SPY_PROTOCOL_GMLAN = 2,
SPY_PROTOCOL_J1850VPW = 3,
SPY_PROTOCOL_J1850PWM = 4,
SPY_PROTOCOL_ISO9141 = 5,
SPY_PROTOCOL_Keyword2000 = 6,
SPY_PROTOCOL_GM_ALDL_UART = 7,
SPY_PROTOCOL_CHRYSLER_CCD = 8,
SPY_PROTOCOL_CHRYSLER_SCI = 9,
SPY_PROTOCOL_FORD_UBP = 10,
SPY_PROTOCOL_BEAN = 11,
SPY_PROTOCOL_LIN = 12,
SPY_PROTOCOL_J1708 = 13,
SPY_PROTOCOL_CHRYSLER_JVPW = 14,
SPY_PROTOCOL_J1939 = 15,
SPY_PROTOCOL_FLEXRAY = 16,
SPY_PROTOCOL_MOST = 17,
SPY_PROTOCOL_CGI = 18,
SPY_PROTOCOL_GME_CIM_SCL_KLINE = 19,
SPY_PROTOCOL_SPI = 20,
SPY_PROTOCOL_I2C = 21,
SPY_PROTOCOL_GENERIC_UART = 22,
SPY_PROTOCOL_JTAG = 23,
SPY_PROTOCOL_UNIO = 24,
SPY_PROTOCOL_DALLAS_1WIRE = 25,
SPY_PROTOCOL_GENERIC_MANCHSESTER = 26,
SPY_PROTOCOL_SENT_PROTOCOL = 27,
SPY_PROTOCOL_UART = 28,
SPY_PROTOCOL_ETHERNET = 29,
SPY_PROTOCOL_CANFD = 30,
SPY_PROTOCOL_GMFSA = 31,
SPY_PROTOCOL_TCP = 32,
}
public enum icsEthernetLinkType : short
{
OPETH_LINK_AUTO = 0,
OPETH_LINK_MASTER = 1,
OPETH_LINK_SLAVE = 2,
}
// Driver Type Constants
public enum eDRIVER_TYPE : short
{
INTREPIDCS_DRIVER_STANDARD = 0,
INTREPIDCS_DRIVER_TEST = 1,
}
// Port Type Constants
public enum ePORT_TYPE : short
{
NEOVI_COMMTYPE_RS232 = 0,
NEOVI_COMMTYPE_USB_BULK = 1,
NEOVI_COMMTYPE_USB_ISO_DONT_USE = 2,
NEOVI_COMMTYPE_TCPIP = 3,
NEOVI_COMMTYPE_FIRE_USB = 5,
}
[StructLayout(LayoutKind.Sequential)]
public struct icsSpyMessage //reff
{
public Int32 StatusBitField; //4
public Int32 StatusBitField2; //new '4
public Int32 TimeHardware; // 4
public Int32 TimeHardware2; //new ' 4
public Int32 TimeSystem; // 4
public Int32 TimeSystem2;
public byte TimeStampHardwareID; //new ' 1
public byte TimeStampSystemID;
public byte NetworkID; //new ' 1
public byte NodeID;
public byte Protocol;
public byte MessagePieceID; // 1
public byte ExtraDataPtrEnabled; //1
public byte NumberBytesHeader; // 1
public byte NumberBytesData; // 1
public Int16 DescriptionID; // 2
public Int32 ArbIDOrHeader; // Holds (up to 3 byte 1850 header or 29 bit CAN header) '4
//public byte[] Data = new byte[8]; //(1 To 8); //8
public byte Data1;
public byte Data2;
public byte Data3;
public byte Data4;
public byte Data5;
public byte Data6;
public byte Data7;
public byte Data8;
public Int32 StatusBitField3;
public Int32 StatusBitField4;
//public byte[] AckBytes = new byte[8]; //(1 To 8); //new '8
public IntPtr iExtraDataPtr; // As Single ' 4 or 8 depending on system
public byte MiscData;
}
[StructLayout(LayoutKind.Sequential)]
public struct VSBSpyMessage //reff
{
public Int32 StatusBitField; //4
public Int32 StatusBitField2; //new '4
public Int32 TimeHardware; // 4
public Int32 TimeHardware2; //new ' 4
public Int32 TimeSystem; // 4
public Int32 TimeSystem2;
public byte TimeStampHardwareID; //new ' 1
public byte TimeStampSystemID;
public byte NetworkID; //new ' 1
public byte NodeID;
public byte Protocol;
public byte MessagePieceID; // 1
public byte ExtraDataPtrEnabled; //1
public byte NumberBytesHeader; // 1
public byte NumberBytesData; // 1
public Int16 DescriptionID; // 2
public Int32 ArbIDOrHeader; // Holds (up to 3 byte 1850 header or 29 bit CAN header) '4
//public byte[] Data = new byte[8]; //(1 To 8); //8
public byte Data1;
public byte Data2;
public byte Data3;
public byte Data4;
public byte Data5;
public byte Data6;
public byte Data7;
public byte Data8;
public Int32 StatusBitField3;
public Int32 StatusBitField4;
//public byte[] AckBytes = new byte[8]; //(1 To 8); //new '8
public UInt32 iExtraDataPtr; // 4
public byte MiscData;
}
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct stAPIFirmwareInfo
{
public Int32 iType; // 1,2,3 for Generation of HW.
// Date and Time type 1 and 2
public Int32 iMainFirmDateDay;
public Int32 iMainFirmDateMonth;
public Int32 iMainFirmDateYear;
public Int32 iMainFirmDateHour;
public Int32 iMainFirmDateMin;
public Int32 iMainFirmDateSecond;
public Int32 iMainFirmChkSum;
// Version data (only valid for type 3)
public byte iAppMajor;
public byte iAppMinor;
public byte iManufactureDay;
public byte iManufactureMonth;
public UInt16 iManufactureYear;
public byte iBoardRevMajor;
public byte iBoardRevMinor;
public byte iBootLoaderVersionMajor;
public byte iBootLoaderVersionMinor;
}
[StructLayout(LayoutKind.Sequential)]
public struct icsSpyMessageLong
{
public Int32 StatusBitField; // 4
public Int32 StatusBitField2; //new '4
public Int32 TimeHardware;
public Int32 TimeHardware2; //new ' 4
public Int32 TimeSystem; //4
public Int32 TimeSystem2;
public byte TimeStampHardwareID; //new ' 1
public byte TimeStampSystemID;
public byte NetworkID; //new ' 1
public byte NodeID;
public byte Protocol;
public byte MessagePieceID; // 1
public byte ExtraDataPtrEnabled; // 1
public byte NumberBytesHeader; //
public byte NumberBytesData; //2
public Int16 DescriptionID; //2
public Int32 ArbIDOrHeader;// Holds (up to 3 byte 1850 header or 29 bit CAN header)
public Int32 DataMsb;
public Int32 DataLsb;
public Int32 StatusBitField3;
public Int32 StatusBitField4;
public Single Value; // As Single
public byte MiscData;
}
[StructLayout(LayoutKind.Sequential)]
public struct icsSpyMessageJ1850
{
public Int32 StatusBitField; //4
public Int32 StatusBitField2; //new '4
public Int32 TimeHardware; //4
public Int32 TimeHardware2; //new ' 4
public Int32 TimeSystem; //4
public Int32 TimeSystem2;
public byte TimeStampHardwareID; //new ' 1
public byte TimeStampSystemID;
public byte NetworkID; //new ' 1
public byte NodeID;
public byte Protocol;
public byte MessagePieceID; // 1 new
public byte ExtraDataPtrEnabled; // 1
public byte NumberBytesHeader; //1
public byte NumberBytesData; //1
public Int16 DescriptionID; //2
public byte Header1; //Holds (up to 3 byte 1850 header or 29 bit CAN header)
public byte Header2;
public byte Header3;
public byte Header4;
public byte Data1;
public byte Data2;
public byte Data3;
public byte Data4;
public byte Data5;
public byte Data6;
public byte Data7;
public byte Data8;
public byte ACK1;
public byte ACK2;
public byte ACK3;
public byte ACK4;
public byte ACK5;
public byte ACK6;
public byte ACK7;
public byte ACK8;
public IntPtr iExtraDataPtr; // As Single '4 or 8 depending on system
public byte MiscData;
}
//Structure for neoVI device types
[StructLayout(LayoutKind.Sequential)]
public struct NeoDevice
{
public Int32 DeviceType;
public Int32 Handle;
public Int32 NumberOfClients;
public Int32 SerialNumber;
public Int32 MaxAllowedClients;
}
[StructLayout(LayoutKind.Sequential)]
public struct NeoDeviceEx
{
public NeoDevice neoDevice;
public UInt32 FirmwareMajor;
public UInt32 FirmwareMinor;
public UInt32 Status; // bit 1 = CoreMini Running Status, bit 2 = In BootLoader?
public UInt32 Options; //Use icsSpyAttachedVNEts Enum for states
public IntPtr pAvailWIFINetwork;
public IntPtr pWIFIInterfaceInfo;
public Int32 isEthernetDevice;
public byte MACAddress0;
public byte MACAddress1;
public byte MACAddress2;
public byte MACAddress3;
public byte MACAddress4;
public byte MACAddress5;
public UInt16 hardwareRev;
public UInt16 revReserved;
public UInt32 Reserved0;// may be expanded in future revisions
public UInt32 Reserved1;
public UInt32 Reserved2;
public UInt32 Reserved3;
public UInt32 Reserved4;
public UInt32 Reserved5;
}
[StructLayout(LayoutKind.Sequential)]
public struct OptionsNeoEx
{
Int32 CANOptions;
Int32 Reserved00;
Int32 Reserved01;
Int32 Reserved02;
Int32 Reserved03;
Int32 Reserved04;
Int32 Reserved05;
Int32 Reserved06;
Int32 Reserved07;
Int32 Reserved08;
Int32 Reserved09;
Int32 Reserved10;
Int32 Reserved11;
Int32 Reserved12;
Int32 Reserved13;
Int32 Reserved14;
Int32 Reserved15;
}
[StructLayout(LayoutKind.Sequential, Pack = 2)]
public struct CAN_SETTINGS
{
public byte Mode;
public byte SetBaudrate;
public byte Baudrate;
public byte Transceiver_Mode;
public byte TqSeg1;
public byte TqSeg2;
public byte TqProp;
public byte TqSync;
public UInt16 BRP;
public byte auto_baud;
public byte innerFrameDelay25us; // 0 - 375us, 25us resolution
}
[StructLayout(LayoutKind.Sequential, Pack = 2)]
public struct CANFD_SETTINGS
{
public byte FDMode; /* mode, secondary baudrate for canfd */
public byte FDBaudrate;
public byte FDTqSeg1;
public byte FDTqSeg2;
public byte FDTqProp;
public byte FDTqSync;
public UInt16 FDBRP;
public byte FDTDC;
public byte reserved;
}
[StructLayout(LayoutKind.Sequential, Pack = 2)]
public struct SWCAN_SETTINGS
{
public byte Mode;
public byte SetBaudrate;
public byte Baudrate;
public byte transceiver_mode;
public byte TqSeg1;
public byte TqSeg2;
public byte TqProp;
public byte TqSync;
public UInt16 BRP;
public UInt16 high_speed_auto_switch;
public byte auto_baud;
public byte Reserved;
}
[StructLayout(LayoutKind.Sequential, Pack = 2)]
public struct SVCAN3Settings
{
public CAN_SETTINGS Can1;
public CAN_SETTINGS Can2;
public UInt16 Network_enables;
public UInt16 Network_enabled_on_boot;
public Int16 Iso15765_separation_time_offset;
public UInt16 Perf_en;
public UInt16 Misc_io_initial_ddr;
public UInt16 Misc_io_initial_latch;
public UInt16 Misc_io_report_period;
public UInt16 Misc_io_on_report_events;
}
[StructLayout(LayoutKind.Sequential, Pack = 2)]
public struct SVCAN412Settings
{
/* Performance Test */
public UInt16 perf_en;
public CAN_SETTINGS can1;
public CANFD_SETTINGS canfd1;
public CAN_SETTINGS can2;
public CANFD_SETTINGS canfd2;
public UInt64 network_enables;
public UInt64 termination_enables;
public UInt32 pwr_man_timeout;
public UInt32 pwr_man_enable;
public UInt16 network_enabled_on_boot;
/* ISO15765-2 Transport Layer */
public Int16 iso15765_separation_time_offset;
public STextAPISettings text_api;
public UInt32 reserved;
}
[StructLayout(LayoutKind.Sequential, Pack = 2)]
public struct LIN_SETTINGS
{
public UInt32 Baudrate;
public UInt16 spbrg;
public byte brgh;
public byte NumBitsDelay;
public byte MasterResistor;
public byte Mode;
}
// --- UART Settings
[StructLayout(LayoutKind.Sequential, Pack = 2)]
public struct UART_SETTINGS
{
public UInt16 Baudrate;
public UInt16 spbrg;
public UInt16 brgh;
public UInt16 parity;
public UInt16 stop_bits;
public byte flow_control; // 0- off, 1 - Simple CTS RTS,
public byte reserved_1;
public UInt32 bOptions; //AND to combind these values invert_tx = 1 invert_rx = 2 half_duplex = 4
}
[StructLayout(LayoutKind.Sequential, Pack = 2)]
public struct ETHERNET_SETTINGS
{
public byte duplex; //* 0 = half, 1 = full */
public byte link_speed;
public byte auto_neg;
public byte led_mode;
public byte rsvd0;
public byte rsvd1;
public byte rsvd2;
public byte rsvd3;
}
[StructLayout(LayoutKind.Sequential, Pack = 2)]
public struct SNeoMostGatewaySettings
{
public UInt16 netId; //Netid of CAN network to use.
public byte zero;
public byte Config;
//Bit 0: enable bit to enalbe most
//Bit 1-3: index of which miscio to use for timestamp sync. 0 => MISC1
//Bit 4: Echo to CAN enable
//Bit 5-7: Reserve
}
[StructLayout(LayoutKind.Sequential, Pack = 2)]
public struct OP_ETH_GENERAL_SETTINGS
{
byte ucInterfaceType;
byte reserved0;
byte reserved1;
byte reserved2;
UInt16 tapPair0;
UInt16 tapPair1;
UInt16 tapPair2;
UInt16 tapPair3;
UInt16 tapPair4;
UInt16 tapPair5;
UInt32 flags; // Bit field unsigned (bTapEnSwitch: 1; bTapEnPtp: 2; bEnReportLinkQuality: 4)
}
[StructLayout(LayoutKind.Sequential, Pack = 2)]
public struct OP_ETH_SETTINGS
{
byte ucConfigMode;
byte preemption_en;
byte mac_addr1_0;
byte mac_addr1_1;
byte mac_addr1_2;
byte mac_addr1_3;
byte mac_addr1_4;
byte mac_addr1_5;
byte mac_addr2_0;
byte mac_addr2_1;
byte mac_addr2_2;
byte mac_addr2_3;
byte mac_addr2_4;
byte mac_addr2_5;
byte OpEthFlags;
//AND to combind these values
//mac_spoofing_en : 1
//mac_spoofing_isDstOrSrc : 2
//link_spd_A : 4
//link_spd_B : 8
//q2112_phy_mode : 16
byte Reserved;
}
[StructLayout(LayoutKind.Sequential, Pack = 2)]
public struct J1708_SETTINGS
{
public UInt16 enable_convert_mode;
}
[StructLayout(LayoutKind.Sequential, Pack = 2)]
public struct SVCANRFSettings
{
public CAN_SETTINGS can1;
public CAN_SETTINGS can2;
public CAN_SETTINGS can3;
public CAN_SETTINGS can4;
public LIN_SETTINGS lin1;
public LIN_SETTINGS lin2;
public UInt16 network_enables;
public UInt16 network_enabled_on_boot;
public UInt32 pwr_man_timeout;
public UInt16 pwr_man_enable; // 0 - off, 1 - sleep enabled, 2- idle enabled (fast wakeup)
public UInt16 misc_io_initial_ddr;
public UInt16 misc_io_initial_latch;
public UInt16 misc_io_analog_enable;
public UInt16 misc_io_report_period;
public UInt16 misc_io_on_report_events;
//ISO 15765-2 Transport Layer
public Int16 iso15765_separation_time_offset;
//ISO9141 - KEYWORD 2000 1
public Int16 iso9141_kwp_enable_reserved;
public ISO9141_KEYWORD2000_SETTINGS iso9141_kwp_settings;
//Performance Test
public UInt16 perf_en;
//ISO9141 - Parity
public UInt16 iso_parity; // 0 - no parity, 1 - event, 2 - odd
public UInt16 iso_msg_termination; // 0 - use inner frame time, 1 - GME CIM-SCL
public UInt16 iso_tester_pullup_enable;
//Additional network enables
public UInt16 network_enables_2;
public ISO9141_KEYWORD2000_SETTINGS iso9141_kwp_settings_2;
public UInt16 iso_parity_2; // 0 - no parity, 1 - event, 2 - odd
public UInt16 iso_msg_termination_2; // 0 - use inner frame time, 1 - GME CIM-SCL
public UInt16 idle_wakeup_network_enables_1;
public UInt16 idle_wakeup_network_enables_2;
public UInt16 reservedZero;
}
[StructLayout(LayoutKind.Sequential, Pack = 2)]
public struct SEEVBSettings
{
public UInt32 ecu_id;
public CAN_SETTINGS can1;
public UInt16 network_enables;
public UInt16 network_enabled_on_boot;
// ISO 15765-2 Transport layer
public UInt16 iso15765_separation_time_offset;
// Performance test
public UInt16 perf_en;
// Analog input
public UInt16 ain_sample_period;
public UInt16 ain_threshold;
public UInt32 rsvd;
}
[StructLayout(LayoutKind.Sequential, Pack = 2)]
public struct STextAPISettings
{
public UInt32 can1_tx_id;
public UInt32 can1_rx_id;
public UInt32 can1_options; // Set to 1 for Extended, 0 for standard
public UInt32 can2_tx_id;
public UInt32 can2_rx_id;
public UInt32 can2_options; // Set to 1 for Extended, 0 for standard
public UInt32 network_enables;
public UInt32 can3_tx_id3;
public UInt32 can3_rx_id3;
public UInt32 can3_options; // Set to 1 for Extended, 0 for standard
public UInt32 can4_tx_id4;
public UInt32 can4_rx_id4;
public UInt32 can4_options; // Set to 1 for Extended, 0 for standard
public Int32 Reserved0;
public Int32 Reserved1;
public Int32 Reserved2;
public Int32 Reserved3;
public Int32 Reserved4;
}
[StructLayout(LayoutKind.Sequential, Pack = 2)]
public struct ISO9141_KEYWORD2000_SETTINGS
{
public UInt32 Baudrate;
public UInt16 spbrg;
public UInt16 brgh;
public ISO9141_KEYWORD2000__INIT_STEP Init_Step_0;
public ISO9141_KEYWORD2000__INIT_STEP Init_Step_1;
public ISO9141_KEYWORD2000__INIT_STEP Init_Step_2;
public ISO9141_KEYWORD2000__INIT_STEP Init_Step_3;
public ISO9141_KEYWORD2000__INIT_STEP Init_Step_4;
public ISO9141_KEYWORD2000__INIT_STEP Init_Step_5;
public ISO9141_KEYWORD2000__INIT_STEP Init_Step_6;
public ISO9141_KEYWORD2000__INIT_STEP Init_Step_7;
public ISO9141_KEYWORD2000__INIT_STEP Init_Step_8;
public ISO9141_KEYWORD2000__INIT_STEP Init_Step_9;
public ISO9141_KEYWORD2000__INIT_STEP Init_Step_10;
public ISO9141_KEYWORD2000__INIT_STEP Init_Step_11;
public ISO9141_KEYWORD2000__INIT_STEP Init_Step_12;
public ISO9141_KEYWORD2000__INIT_STEP Init_Step_13;
public ISO9141_KEYWORD2000__INIT_STEP Init_Step_14;
public ISO9141_KEYWORD2000__INIT_STEP Init_Step_15;
public byte init_step_count;
public UInt16 p2_500us;
public UInt16 p3_500us;
public UInt16 p4_500us;
public UInt16 chksum_enabled;
}
[StructLayout(LayoutKind.Sequential, Pack = 2)]
public struct ISO9141_KEYWORD2000__INIT_STEP
{
public UInt16 time_500us;
public UInt16 k;
public UInt16 l;
}
[StructLayout(LayoutKind.Sequential, Pack = 2)]
public struct TIMESYNC_ICSHARDWARE_SETTINGS
{
public byte MasterEnable;
public byte SlaveEnable;
public byte MasterNetwork;
public byte SlaveNetwork;
}
[StructLayout(LayoutKind.Sequential, Pack = 2)]
public struct SRADSuperMoonSettingsPack
{
public UInt32 uiDevice;
public SRADSuperMoonSettings SuperMoonSettings;
}
[StructLayout(LayoutKind.Sequential, Pack = 2)]
public struct SRADSuperMoonSettings
{
public UInt16 perf_en;
public OP_ETH_GENERAL_SETTINGS opEthGen;
public OP_ETH_SETTINGS opEth1;
public UInt16 network_enables;
public UInt16 network_enables_2;
public UInt16 network_enabled_on_boot;
public UInt16 network_enables_3;
public STextAPISettings text_api;
public UInt16 pc_com_mode;
public TIMESYNC_ICSHARDWARE_SETTINGS timeSyncSettings;
public UInt16 hwComLatencyTestEn;
}
[StructLayout(LayoutKind.Sequential, Pack = 2)]
public struct SRADMoon2SettingsPack
{
public UInt32 uiDevice;
public SRADMoon2Settings Moon2Settings;
}
[StructLayout(LayoutKind.Sequential, Pack = 2)]
public struct SRADMoon2Settings
{
public UInt16 perf_en;
public OP_ETH_GENERAL_SETTINGS opEthGen;
public OP_ETH_SETTINGS opEth1;
public UInt16 network_enables;
public UInt16 network_enables_2;
public UInt16 network_enabled_on_boot;
public UInt16 network_enables_3;
public STextAPISettings text_api;
public UInt16 pc_com_mode;
public TIMESYNC_ICSHARDWARE_SETTINGS timeSyncSettings;
public UInt16 hwComLatencyTestEn;
}
[StructLayout(LayoutKind.Sequential, Pack = 2)]
public struct SRADGalaxySettings
{
public UInt16 perf_en;
public OP_ETH_GENERAL_SETTINGS opEthGen;
public OP_ETH_SETTINGS opEth1;
public OP_ETH_SETTINGS opEth2;
public OP_ETH_SETTINGS opEth3;
public OP_ETH_SETTINGS opEth4;
public OP_ETH_SETTINGS opEth5;
public OP_ETH_SETTINGS opEth6;
public OP_ETH_SETTINGS opEth7;
public OP_ETH_SETTINGS opEth8;
public OP_ETH_SETTINGS opEth9;
public OP_ETH_SETTINGS opEth10;
public OP_ETH_SETTINGS opEth11;
public OP_ETH_SETTINGS opEth12;
//CAN
public CAN_SETTINGS Can1;
public CANFD_SETTINGS Canfd1;
public CAN_SETTINGS Can2;
public CANFD_SETTINGS Canfd2;
public CAN_SETTINGS Can3;
public CANFD_SETTINGS Canfd3;
public CAN_SETTINGS Can4;
public CANFD_SETTINGS Canfd4;
public CAN_SETTINGS Can5;
public CANFD_SETTINGS Canfd5;
public CAN_SETTINGS Can6;
public CANFD_SETTINGS Canfd6;
public CAN_SETTINGS Can7;
public CANFD_SETTINGS Canfd7;
public CAN_SETTINGS Can8;
public CANFD_SETTINGS Canfd8;
/* Native CAN are either LS1/LS2 or SW1/SW2 */
public SWCAN_SETTINGS swcan1;
public UInt16 network_enables;
public SWCAN_SETTINGS swcan2;
public UInt16 network_enables_2;
public LIN_SETTINGS lin1;
public UInt16 misc_io_initial_ddr;
public UInt16 misc_io_initial_latch;
public UInt16 misc_io_report_period;
public UInt16 misc_io_on_report_events;
public UInt16 misc_io_analog_enable;
public UInt16 ain_sample_period;
public UInt16 ain_threshold;
public UInt32 pwr_man_timeout;
public UInt16 pwr_man_enable;
public UInt16 network_enabled_on_boot;
public UInt16 iso15765_separation_time_offset;
public UInt16 iso_9141_kwp_enable_reserved;
public ISO9141_KEYWORD2000_SETTINGS iso9141_kwp_settings_1;
public UInt16 iso_parity_1;
public UInt16 iso_msg_termination_1;
public UInt16 idle_wakeup_network_enables_1;
public UInt16 idle_wakeup_network_enables_2;
public UInt16 network_enables_3;
public UInt16 idle_wakeup_network_enables_3;
public UInt16 can_switch_mode;
public STextAPISettings text_api;
public TIMESYNC_ICSHARDWARE_SETTINGS timeSyncSettings;
public UInt16 hwComLatencyTestEn;
}
[StructLayout(LayoutKind.Sequential, Pack = 2)]
public struct SOBD2SimSettings
{
public UInt16 can1;
public UInt16 can2;
public UInt16 network_enables;
public UInt16 network_enabled_on_boot;
public UInt16 iso15765_separation_time_offset;
public UInt16 perf_en;
public UInt16 misc_io_initial_ddr;
public UInt16 misc_io_initial_latch;
public UInt16 misc_io_report_period;
public UInt16 misc_io_on_report_events;
public UInt16 misc_io_analog_enable;
public UInt16 ain_sample_period;
public UInt16 ain_threshold;
public UInt16 canfd1;
public UInt16 canfd2;
public UInt16 network_enables_2;
public UInt16 text_api;
}
[StructLayout(LayoutKind.Sequential, Pack = 2)]
public struct SVividCANSettings
{
public UInt32 ecu_id;
public CAN_SETTINGS can1;
public SWCAN_SETTINGS swcan1;
public CAN_SETTINGS lsftcan1;
public UInt16 network_enables;
public UInt16 network_enabled_on_boot;
public UInt16 iso15765_separation_time_offset;
public UInt16 perf_en;
public UInt32 pwr_man_timeout;
public UInt16 pwr_man_enable;
public UInt16 can_switch_mode;
public UInt16 rsvd;
}
[StructLayout(LayoutKind.Sequential, Pack = 2)]
public struct SRADStar2Settings
{
public UInt16 perf_en;
public OP_ETH_GENERAL_SETTINGS opEthGen;
public OP_ETH_SETTINGS opEth1;
public OP_ETH_SETTINGS opEth2;
public CAN_SETTINGS can1;
public CANFD_SETTINGS canfd1;
public CAN_SETTINGS can2;
public CANFD_SETTINGS canfd2;
public UInt16 network_enables;
public UInt16 network_enables_2;
public LIN_SETTINGS lin1;
public UInt16 misc_io_initial_ddr;
public UInt16 misc_io_initial_latch;
public UInt16 misc_io_report_period;
public UInt16 misc_io_on_report_events;
public UInt16 misc_io_analog_enable;
public UInt16 ain_sample_period;
public UInt16 ain_threshold;
public UInt32 pwr_man_timeout;
public UInt16 pwr_man_enable;
public UInt16 network_enabled_on_boot;
public UInt16 iso15765_separation_time_offset;
public UInt16 iso_9141_kwp_enable_reserved;
public ISO9141_KEYWORD2000_SETTINGS iso9141_kwp_settings_1;
public UInt16 iso_parity_1;
public UInt16 iso_msg_termination_1;
public UInt16 idle_wakeup_network_enables_1;
public UInt16 idle_wakeup_network_enables_2;
public UInt16 network_enables_3;
public UInt16 idle_wakeup_network_enables_3;
public UInt16 can_switch_mode;
public STextAPISettings text_api;
}
[StructLayout(LayoutKind.Sequential, Pack = 2)]
public struct SFireSettings
{
public CAN_SETTINGS can1;
public CAN_SETTINGS can2;
public CAN_SETTINGS can3;
public CAN_SETTINGS can4;
public SWCAN_SETTINGS swcan;
public CAN_SETTINGS lsftcan;
public LIN_SETTINGS lin1;
public LIN_SETTINGS lin2;
public LIN_SETTINGS lin3;
public LIN_SETTINGS lin4;
public UInt16 cgi_enable_reserved;
public UInt16 cgi_baud;
public UInt16 cgi_tx_ifs_bit_times;
public UInt16 cgi_rx_ifs_bit_times;
public UInt16 cgi_chksum_enable;
public UInt16 network_enables;
public UInt16 network_enabled_on_boot;
public UInt32 pwm_man_timeout;
public UInt16 pwr_man_enable;
public UInt16 misc_io_initial_ddr;
public UInt16 misc_io_initial_latch;
public UInt16 misc_io_analog_enable;
public UInt16 misc_io_report_period;
public UInt16 misc_io_on_report_events;
public UInt16 ain_sample_period;
public UInt16 ain_threshold;
//ISO 15765-2 Transport Layer
public UInt16 iso15765_separation_time_offset;
//ISO9141 - KEYWORD 2000
public UInt16 iso9141_kwp_enable_reserved;
public ISO9141_KEYWORD2000_SETTINGS iso9141_kwp_settings;
//Performance Test
public UInt16 perf_en;
//ISO9141 - Parity
public UInt16 iso_parity; // 0 - no parity, 1 - event, 2 - odd
public UInt16 iso_msg_termination; // 0 - use inner frame time, 1 - GME CIM-SCL
public UInt16 iso_tester_pullup_enable;
//Additional network enables
public UInt16 network_enables_2;
public ISO9141_KEYWORD2000_SETTINGS iso9141_kwp_settings_2;
public UInt16 iso_parity_2; // 0 - no parity, 1 - event, 2 - odd
public UInt16 iso_msg_termination_2; // 0 - use inner frame time, 1 - GME CIM-SCL
public ISO9141_KEYWORD2000_SETTINGS iso9141_kwp_settings_3;
public UInt16 iso_parity_3; // 0 - no parity, 1 - event, 2 - odd
public UInt16 iso_msg_termination_3; // 0 - use inner frame time, 1 - GME CIM-SCL
public ISO9141_KEYWORD2000_SETTINGS iso9141_kwp_settings_4;
public UInt16 iso_parity_4; // 0 - no parity, 1 - event, 2 - odd
public UInt16 iso_msg_termination_4; // 0 - use inner frame time, 1 - GME CIM-SCL
public UInt16 fast_init_network_enables_1;
public UInt16 fast_init_network_enables_2;
public UART_SETTINGS uart;
public UART_SETTINGS uart2;
public STextAPISettings text_api;
public SNeoMostGatewaySettings neoMostGateway;
public UInt16 vnetBits; //First bit enables Android Messages
}
[StructLayout(LayoutKind.Sequential, Pack = 2)]
public struct SFire2Settings
{
public UInt16 perf_en;
public CAN_SETTINGS can1;
public CANFD_SETTINGS canfd1;
public CAN_SETTINGS can2;
public CANFD_SETTINGS canfd2;
public CAN_SETTINGS can3;
public CANFD_SETTINGS canfd3;
public CAN_SETTINGS can4;
public CANFD_SETTINGS canfd4;
public CAN_SETTINGS can5;
public CANFD_SETTINGS canfd5;
public CAN_SETTINGS can6;
public CANFD_SETTINGS canfd6;
public CAN_SETTINGS can7;
public CANFD_SETTINGS canfd7;
public CAN_SETTINGS can8;
public CANFD_SETTINGS canfd8;
public SWCAN_SETTINGS swcan1;
public UInt16 network_enables;
public SWCAN_SETTINGS swcan2;
public UInt16 network_enables_2;
public CAN_SETTINGS lsftcan1;
public CAN_SETTINGS lsftcan2;
public LIN_SETTINGS lin1;
public UInt16 misc_io_initial_ddr;
public LIN_SETTINGS lin2;
public UInt16 misc_io_initial_latch;
public LIN_SETTINGS lin3;
public UInt16 misc_io_report_period;
public LIN_SETTINGS lin4;
public UInt16 misc_io_on_report_events;
public LIN_SETTINGS lin5;
public UInt16 misc_io_analog_enable;
public UInt16 ain_sample_period;
public UInt16 ain_threshold;
public UInt32 pwr_man_timeout;
public UInt16 pwr_man_enable;
public UInt16 network_enabled_on_boot;
public UInt16 iso15765_separation_time_offset;
public UInt16 iso_9141_kwp_enable_reserved;
public ISO9141_KEYWORD2000_SETTINGS iso9141_kwp_settings_1;
public UInt16 iso_parity_1;
public ISO9141_KEYWORD2000_SETTINGS iso9141_kwp_settings_2;
public UInt16 iso_parity_2;
public ISO9141_KEYWORD2000_SETTINGS iso9141_kwp_settings_3;
public UInt16 iso_parity_3;
public ISO9141_KEYWORD2000_SETTINGS iso9141_kwp_settings_4;
public UInt16 iso_parity_4;
public UInt16 iso_msg_termination_1;
public UInt16 iso_msg_termination_2;
public UInt16 iso_msg_termination_3;
public UInt16 iso_msg_termination_4;
public UInt16 idle_wakeup_network_enables_1;
public UInt16 idle_wakeup_network_enables_2;
public UInt16 network_enables_3;
public UInt16 idle_wakeup_network_enables_3;
public UInt16 can_switch_mode;
public STextAPISettings text_api;
public UInt64 termination_enables;
public LIN_SETTINGS lin6;
public ETHERNET_SETTINGS ethernet;
public UInt16 slaveVnetA;
public UInt16 slaveVnetB;
public UInt32 flags;
public UInt16 digitalIoThresholdTicks;
public UInt16 digitalIoThresholdEnable;
}
[StructLayout(LayoutKind.Sequential, Pack = 2)]
public struct SRADPlutoSettingsPack
{
public UInt32 uiDevice;
public SRADPlutoSettings PlutoSettings;
}
[StructLayout(LayoutKind.Sequential, Pack = 2)]
public struct SRADPlutoSettings
{
public UInt16 perf_en;
public CAN_SETTINGS can1;
public CANFD_SETTINGS canfd1;
public CAN_SETTINGS can2;
public CANFD_SETTINGS canfd2;
public LIN_SETTINGS lin1;
public UInt16 network_enables;
public UInt16 network_enables_2;
public UInt16 network_enables_3;
public UInt64 termination_enables;
public UInt16 misc_io_analog_enable;
public UInt32 pwr_man_timeout;
public UInt16 pwr_man_enable;
public UInt16 network_enabled_on_boot;
//ISO15765-2 Transport Layer
public UInt16 iso15765_separation_time_offset;
public UInt16 iso9141_kwp_enable_reserved;
public UInt16 iso_tester_pullup_enable;
public UInt16 iso_parity;
public UInt16 iso_msg_termination;
public ISO9141_KEYWORD2000_SETTINGS iso9141_kwp_settings_1;
public ETHERNET_SETTINGS ethernet;
public STextAPISettings text_api;
public UInt32 Flags;
//Flag values
//disableUsbCheckOnBoot 1
//enableLatencyTest 2
//enablePcEthernetComm 4
public SPluto_CustomParams custom;
}
[StructLayout(LayoutKind.Sequential, Pack = 2)]
public struct SPluto_CustomParams
{
public Byte mode0;
public Byte mode1;
public Byte mode2;
public Byte mode3;
public Byte mode4;
public Byte speed0;
public Byte speed1;
public Byte speed2;
public Byte speed3;
public Byte speed4;
public Byte PhyEnable0;
public Byte PhyEnable1;
public Byte PhyEnable2;
public Byte PhyEnable3;
public Byte PhyEnable4;
public Byte ae1Select;
public Byte usbSelect;
public Byte pad;
}
//_stChipVersions
[StructLayout(LayoutKind.Sequential, Pack = 2)]
public struct fire_versions
{
public Byte mpic_maj;
public Byte mpic_min;
public Byte upic_maj;
public Byte upic_min;
public Byte lpic_maj;
public Byte lpic_min;
public Byte jpic_maj;
public Byte jpic_min;
}
[StructLayout(LayoutKind.Sequential, Pack = 2)]
public struct plasma_fire_vnet
{
public Byte mpic_maj;
public Byte mpic_min;
public Byte core_maj;
public Byte core_min;
public Byte lpic_maj;
public Byte lpic_min;
public Byte hid_maj;
public Byte hid_min;
}
[StructLayout(LayoutKind.Sequential, Pack = 2)]
public struct vcan3_versions
{
public Byte mpic_maj;
public Byte mpic_min;
public UInt32 Reserve;
public UInt16 Reserve2;
}
[StructLayout(LayoutKind.Sequential, Pack = 2)]
public struct stCM_ISO157652_TxMessage
{
//transmit message
public UInt16 vs_netid; //< The netid of the message (determines which network to transmit on), not supported
public byte padding; //< The padding byte to use to fill the unused portion of
// transmitted CAN frames (single frame, first frame, consecutive frame).
public byte reserved2;
public UInt32 id; //< arbId of transmitted frames (CAN id to transmit to).
public UInt32 fc_id; //< flow control arb id filter value (response id from receiver).
public UInt32 fc_id_mask; //< The flow control arb filter mask (response id from receiver).
public byte stMin;//< Overrides the stMin that the receiver reports, see overrideSTmin. Set to J2534's STMIN_TX if <= 0xFF.
public byte blockSize; //< Overrides the block size that the receiver reports, see overrideBlockSize. Set to J2534's BS_TX if <= 0xFF.
public byte flowControlExtendedAddress;//< Expected Extended Address byte of response from receiver. see fc_ext_address_enable, not supported.
public byte extendedAddress;//< Extended Address byte of transmitter. see ext_address_enable, not supported.
//flow control timeouts
public UInt16 fs_timeout; //< max timeout (ms) for waiting on flow control respons. Set this to N_BS_MAX's value if J2534.
public UInt16 fs_wait; //< max timeout (ms) for waiting on flow control response after receiving flow control
///with flow status set to WAIT. Set this to N_BS_MAX's value if J2534.
//******************************************************************************************************************
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4095)] public byte[] data;
// call: stCM_ISO157652_TxMessage.data = new byte(4096)
//******************************************************************************************************************
public UInt32 num_bytes; //< Number of data bytes
//option bits
public UInt16 flags;
//To set the flags, AND the parameter you want from the stCM_ISO157652_TxMessage_Flags Enum
public byte Reserved;
public byte tx_dl;
}
public enum stCM_ISO157652_TxMessage_Flags : int
{
id_29_bit_enable = 1, //< Enables 29 bit arbId for transmitted frames. Set to 1 so transmitted frames use 29 bit ids, not supported.
fc_id_29_bit_enable = 2, //< Enables 29 bit arbId for Flow Control filter. Set to 1 if receiver response uses 29 bit ids, not supported.
ext_address_enable = 4, //< Enables Extended Addressing, Set to 1 if transmitted frames should have extended addres byte, not supported.
fc_ext_address_enable = 8, //< Enables Extended Addressing for Flow Control filter. Set to 1 if receiver responds with extended address byte, not supported.
overrideSTmin = 16, //< Uses member stMin and not receiver's flow control's stMin.
overrideBlockSize = 32, //< Uses member BlockSize and not receiver's flow control's BlockSize.
paddingEnable = 64, //< Enable's padding
iscanFD = 128, //Enables CAN FD
isBSREnabled = 256, //Enables BSR
}
[StructLayout(LayoutKind.Sequential, Pack = 2)]
public struct stCM_ISO157652_RxMessage
{
//transmit message
public UInt16 vs_netid; //< The netid of the message (determines which network to decode receives), not supported
public byte padding;//< The padding byte to use to fill the unused portion of
/// transmitted CAN frames (flow control), see paddingEnable.
public UInt32 id; //< ArbId filter value for frames from transmitter (from ECU to neoVI).
public UInt32 id_mask; //< ArbId filter mask for frames from transmitter (from ECU to neoVI).
public UInt32 fc_id; //< flow control arbId to transmit in flow control (from neoVI to ECU).
public byte flowControlExtendedAddress; //< Extended Address byte used in flow control (from neoVI to ECU). see fc_ext_address_enable.
public byte extendedAddress; //< Expected Extended Address byte of frames sent by transmitter (from ECU to neoVI). see ext_address_enable.
public byte blockSize; //< Block Size to report in flow control response.
public byte stMin; //< Minimum seperation time (between consecutive frames) to report in flow control response.
//flow control timeouts
public UInt16 cf_timeout; //< max timeout (ms) for waiting on consecutive frame. Set this to N_CR_MAX's value in J2534.
//option bits
public UInt32 flags;
//To set the flags, AND the parameter you want from the stCM_ISO157652_RxMessage_Flags Enum
public byte reserved0;
public byte reserved1;
public byte reserved2;
public byte reserved3;
public byte reserved4;
public byte reserved5;
public byte reserved6;
public byte reserved7;
public byte reserved8;
public byte reserved9;
public byte reserved10;
public byte reserved11;
public byte reserved12;
public byte reserved13;
public byte reserved14;
public byte reserved15;
}
public enum stCM_ISO157652_RxMessage_Flags : int
{
id_29_bit_enable = 1, //< Enables 29 bit arbId filter for frames (from ECU to neoVI).
fc_id_29_bit_enable = 2, //< Enables 29 bit arbId for Flow Control (from neoVI to ECU).
ext_address_enable = 4, //< Enables Extended Addressing (from ECU to neoVI).
fc_ext_address_enable = 8, //< Enables Extended Addressing (from neoVI to ECU).
enableFlowControlTransmission = 16, //< Enables Flow Control frame transmission (from neoVI to ECU).
paddingEnable = 32, //< Enable's padding
iscanFD = 64,
isBRSEnabled = 128,
}
[StructLayout(LayoutKind.Sequential)]
public struct PhyRegPktClauseMess_t
{
public byte phyAddrOrPort; //5 bits clause 22 uses Address, 45 Uses Port
public byte pageOrDevice; //5 bits clause 22 uses page, 45 Uses Device
public UInt16 regAddr; //5 bits
public UInt16 regVal;
} //6 bytes
public enum PhyRegFlags : short
{
Enabled = 1,
WriteEnable = 2,
Clause45Enable = 4,
}
[StructLayout(LayoutKind.Sequential)]
public struct PhyRegPkt_t
{
public UInt16 Flags;
public PhyRegPktClauseMess_t ClausePkt;
}
public class icsNeoDll
{
public const double NEOVI_TIMEHARDWARE2_SCALING = 0.1048576;
public const double NEOVI_TIMEHARDWARE_SCALING = 0.0000016;
public const double NEOVIPRO_VCAN_TIMEHARDWARE2_SCALING = 0.065536;
public const double NEOVIPRO_VCAN_TIMEHARDWARE_SCALING = 0.000001;
// med speed CAN
public const Int16 NEO_CFG_MPIC_MS_CAN_CNF1 = 512 + 22;
public const Int16 NEO_CFG_MPIC_MS_CAN_CNF2 = 512 + 21;
public const Int16 NEO_CFG_MPIC_MS_CAN_CNF3 = 512 + 20;
public const Int16 NEO_CFG_MPIC_SW_CAN_CNF1 = 512 + 34;
public const Int16 NEO_CFG_MPIC_SW_CAN_CNF2 = 512 + 33;
public const Int16 NEO_CFG_MPIC_SW_CAN_CNF3 = 512 + 32;
public const Int16 NEO_CFG_MPIC_LSFT_CAN_CNF1 = 512 + 46;
public const Int16 NEO_CFG_MPIC_LSFT_CAN_CNF2 = 512 + 45;
public const Int16 NEO_CFG_MPIC_LSFT_CAN_CNF3 = 512 + 44;
// Protocols
public const Int16 SPY_PROTOCOL_CUSTOM = 0;
public const Int16 SPY_PROTOCOL_CAN = 1;
public const Int16 SPY_PROTOCOL_GMLAN = 2;
public const Int16 SPY_PROTOCOL_J1850VPW = 3;
public const Int16 SPY_PROTOCOL_J1850PWM = 4;
public const Int16 SPY_PROTOCOL_ISO9141 = 5;
public const Int16 SPY_PROTOCOL_Keyword2000 = 6;
public const Int16 SPY_PROTOCOL_GM_ALDL_UART = 7;
public const Int16 SPY_PROTOCOL_CHRYSLER_CCD = 8;
public const Int16 SPY_PROTOCOL_CHRYSLER_SCI = 9;
public const Int16 SPY_PROTOCOL_FORD_UBP = 10;
public const Int16 SPY_PROTOCOL_BEAN = 11;
public const Int16 SPY_PROTOCOL_LIN = 12;
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoFindNeoDevices(UInt32 DeviceTypes, ref NeoDevice pNeoDevice, ref Int32 pNumDevices);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoFindDevices(ref NeoDeviceEx pNeoDevice, ref Int32 pNumDevices, UInt32 DeviceTypes, UInt32 numDeviceTypes, ref OptionsNeoEx pOptionsFindNeoEx, UInt32 reserved);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoOpenNeoDevice(ref NeoDevice pNeoDevice, ref IntPtr hObject, ref byte bNetworkIDs, Int32 bConfigRead, Int32 bSyncToPC);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoClosePort(IntPtr hObject, ref Int32 pNumberOfErrors);
[DllImport("icsneo40.dll")]
public static extern void icsneoFreeObject(IntPtr hObject);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoOpenPortEx(Int32 lPortNumber, Int32 lPortType, Int32 lDriverType, Int32 lIPAddressMSB, Int32 lIPAddressLSBOrBaudRate, Int32 bConfigRead, ref byte bNetworkID, ref IntPtr hObject);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoGetMessages(IntPtr hObject, ref icsSpyMessage pMsg, ref Int32 pNumberOfMessages, ref Int32 pNumberOfErrors);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoTxMessages(IntPtr hObject, ref icsSpyMessageJ1850 pMsg, Int32 lNetworkID, Int32 lNumMessages);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoTxMessagesEx(IntPtr hObject, ref icsSpyMessage pMsg, UInt32 lNetworkID, UInt32 lNumMessages, ref UInt32 NumTxed, UInt32 reserved);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoTxMessages(IntPtr hObject, ref icsSpyMessage pMsg, Int32 lNetworkID, Int32 lNumMessages);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoWaitForRxMessagesWithTimeOut(IntPtr hObject, UInt32 iTimeOut);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoEnableNetworkRXQueue(IntPtr hObject, Int32 iEnable);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoGetTimeStampForMsg(IntPtr hObject, ref icsSpyMessage pMsg, ref double pTimeStamp);
[DllImport("icsneo40.dll")]
public static extern void icsneoGetISO15765Status(IntPtr hObject, Int32 lNetwork, Int32 lClearTxStatus, Int32 lClearRxStatus, ref Int32 lTxStatus, ref Int32 lRxStatus);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoGetConfiguration(IntPtr hObject, ref byte pData, ref Int32 lNumBytes);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoSendConfiguration(IntPtr hObject, ref byte pData, Int32 lNumBytes);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoGetFireSettings(IntPtr hObject, ref SFireSettings pSettings, Int32 iNumBytes);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoSetFireSettings(IntPtr hObject, ref SFireSettings pSettings, Int32 iNumBytes, Int32 bSaveToEEPROM);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoGetVCAN3Settings(IntPtr hObject, ref SVCAN3Settings pSettings, Int32 iNumBytes);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoSetVCAN3Settings(IntPtr hObject, ref SVCAN3Settings pSettings, Int32 iNumBytes, Int32 bSaveToEEPROM);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoGetVCAN412Settings(IntPtr hObject, ref SVCAN412Settings pSettings, Int32 iNumBytes);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoSetVCAN412Settings(IntPtr hObject, ref SVCAN412Settings pSettings, Int32 iNumBytes, Int32 bSaveToEEPROM);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoGetFire2Settings(IntPtr hObject, ref SFire2Settings pSettings, Int32 iNumBytes);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoSetFire2Settings(IntPtr hObject, ref SFire2Settings pSettings, Int32 iNumBytes, Int32 bSaveToEEPROM);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoGetRADStar2Settings(IntPtr hObject, ref SRADStar2Settings pSettings, Int32 iNumBytes);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoSetRADStar2Settings(IntPtr hObject, ref SRADStar2Settings pSettings, Int32 iNumBytes, Int32 bSaveToEEPROM);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoGetRADGalaxySettings(IntPtr hObject, ref SRADGalaxySettings pSettings, Int32 iNumBytes);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoSetRADGalaxySettings(IntPtr hObject, ref SRADGalaxySettings pSettings, Int32 iNumBytes, Int32 bSaveToEEPROM);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoGetVCANRFSettings(IntPtr hObject, ref SVCANRFSettings pSettings, Int32 iNumBytes);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoSetVCANRFSettings(IntPtr hObject, ref SVCANRFSettings pSettings, Int32 iNumBytes, Int32 bSaveToEEPROM);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoSetDeviceSettings(IntPtr hObject, ref SRADPlutoSettingsPack pSettings, Int32 iNumBytes, Int32 bSaveToEEPROM, Int32 VnetChan);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoGetDeviceSettings(IntPtr hObject, ref SRADPlutoSettingsPack pSettings, Int32 iNumBytes, Int32 VnetChan);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoSetBitRate(IntPtr hObject, Int32 BitRate, Int32 NetworkID);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoSetFDBitRate(IntPtr hObject, Int32 BitRate, Int32 NetworkID);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoGetDeviceParameters(IntPtr hObject, ref char pParameter, ref char pValues, Int16 ValuesLength);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoSetDeviceParameters(IntPtr hObject, ref char pParmValue, ref Int32 pErrorIndex, Int32 bSaveToEEPROM);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoGetLastAPIError(IntPtr hObject, ref UInt32 pErrorNumber);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoGetErrorMessages(IntPtr hObject, ref Int32 pErrorMsgs, ref Int32 pNumberOfErrors);
[DllImport("icsneo40.dll")]
public static extern int icsneoGetErrorInfo(int iErrorNumber, StringBuilder sErrorDescriptionShort, StringBuilder sErrorDescriptionLong, ref int iMaxLengthShort, ref int iMaxLengthLong, ref int lErrorSeverity, ref int lRestartNeeded);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoValidateHObject(IntPtr hObject);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoGetDLLVersion();
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoStartSockServer(IntPtr hObject, Int32 iPort);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoStopSockServer(IntPtr hObject);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoScriptStart(IntPtr hObject, Int32 iLocation);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoScriptStop(IntPtr hObject);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoScriptLoad(IntPtr hObject, ref byte bin, UInt32 len_bytes, Int32 iLocation);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoScriptClear(IntPtr hObject, Int32 iLocation);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoScriptStartFBlock(IntPtr hObject, UInt32 fb_index);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoScriptGetFBlockStatus(IntPtr hObject, UInt32 fb_index, ref Int32 piRunStatus);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoScriptStopFBlock(IntPtr hObject, UInt32 fb_index);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoScriptGetScriptStatus(IntPtr hObject, ref Int32 piStatus);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoOpenPort(Int32 lPortNumber, Int32 lPortType, Int32 lDriverType, ref byte bNetworkID, ref byte bSCPIDs, ref IntPtr hObject);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoEnableNetworkCom(IntPtr hObject, Int32 Enable);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoISO15765_DisableNetworks(IntPtr hObject);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoISO15765_EnableNetworks(IntPtr hObject, Int32 Network);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoFindAllCOMDevices(Int32 lDriverType, Int32 lGetSerialNumbers, Int32 lStopAtFirst, Int32 lUSBCommOnly, ref Int32 p_lDeviceTypes, ref Int32 p_lComPorts, ref Int32 p_lSerialNumbers, ref Int32 lNumDevices);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoISO15765_TransmitMessage(IntPtr hObject, Int32 ulNetworkID, ref stCM_ISO157652_TxMessage pMsg, Int32 ulBlockingTimeout);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoISO15765_ReceiveMessage(IntPtr hObject, Int32 ulNetworkID, ref stCM_ISO157652_RxMessage pMsg);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoSerialNumberToString(UInt32 Serial, ref byte Data, ref UInt32 DataSize);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoReadWritePHYSettings(IntPtr hObject, ref PhyRegPkt_t PHYSettings, IntPtr size, IntPtr NumEntries);
public static double icsneoGetTimeStamp(long TimeHardware, long TimeHardware2)
{
return NEOVI_TIMEHARDWARE2_SCALING * TimeHardware2 + NEOVI_TIMEHARDWARE_SCALING * TimeHardware;
}
public static void ConvertCANtoJ1850Message(ref icsSpyMessage icsCANStruct, ref icsSpyMessageJ1850 icsJ1850Struct)
{
icsJ1850Struct.StatusBitField = icsCANStruct.StatusBitField;
icsJ1850Struct.StatusBitField2 = icsCANStruct.StatusBitField2;
icsJ1850Struct.TimeHardware = icsCANStruct.TimeHardware;
icsJ1850Struct.TimeHardware2 = icsCANStruct.TimeHardware2;
icsJ1850Struct.TimeSystem = icsCANStruct.TimeSystem;
icsJ1850Struct.TimeSystem2 = icsCANStruct.TimeSystem2;
icsJ1850Struct.TimeStampHardwareID = icsCANStruct.TimeStampHardwareID;
icsJ1850Struct.TimeStampSystemID = icsCANStruct.TimeStampSystemID;
icsJ1850Struct.NetworkID = icsCANStruct.NetworkID;
icsJ1850Struct.NodeID = icsCANStruct.NodeID;
icsJ1850Struct.Protocol = icsCANStruct.Protocol;
icsJ1850Struct.MessagePieceID = icsCANStruct.MessagePieceID;
icsJ1850Struct.ExtraDataPtrEnabled = icsCANStruct.ExtraDataPtrEnabled;
icsJ1850Struct.NumberBytesHeader = icsCANStruct.NumberBytesHeader;
icsJ1850Struct.NumberBytesData = icsCANStruct.NumberBytesData;
icsJ1850Struct.DescriptionID = icsCANStruct.DescriptionID;
icsJ1850Struct.Header1 = Convert.ToByte(icsCANStruct.ArbIDOrHeader & 0xff);
icsJ1850Struct.Header2 = Convert.ToByte((0xFF00 & icsCANStruct.ArbIDOrHeader) / 256);
icsJ1850Struct.Header3 = Convert.ToByte((0xFF0000 & icsCANStruct.ArbIDOrHeader) / 65536);
icsJ1850Struct.Data1 = icsCANStruct.Data1;
icsJ1850Struct.Data2 = icsCANStruct.Data2;
icsJ1850Struct.Data3 = icsCANStruct.Data3;
icsJ1850Struct.Data4 = icsCANStruct.Data4;
icsJ1850Struct.Data5 = icsCANStruct.Data5;
icsJ1850Struct.Data6 = icsCANStruct.Data6;
icsJ1850Struct.Data7 = icsCANStruct.Data7;
icsJ1850Struct.Data8 = icsCANStruct.Data8;
icsJ1850Struct.ACK4 = Convert.ToByte((icsCANStruct.StatusBitField3 & 0xFF000000) >> 24);
icsJ1850Struct.ACK3 = Convert.ToByte((icsCANStruct.StatusBitField3 & 0xFF0000) >> 16);
icsJ1850Struct.ACK2 = Convert.ToByte((icsCANStruct.StatusBitField3 & 0xFF00) >> 8);
icsJ1850Struct.ACK1 = Convert.ToByte((icsCANStruct.StatusBitField3 & 0xFF));
icsJ1850Struct.ACK8 = Convert.ToByte((icsCANStruct.StatusBitField4 & 0xFF000000) >> 24);
icsJ1850Struct.ACK7 = Convert.ToByte((icsCANStruct.StatusBitField4 & 0xFF0000) >> 16);
icsJ1850Struct.ACK6 = Convert.ToByte((icsCANStruct.StatusBitField4 & 0xFF00) >> 8);
icsJ1850Struct.ACK5 = Convert.ToByte((icsCANStruct.StatusBitField4 & 0xFF));
icsJ1850Struct.iExtraDataPtr = icsCANStruct.iExtraDataPtr;
icsJ1850Struct.MiscData = icsCANStruct.MiscData;
}
public static void ConvertJ1850toCAN(ref icsSpyMessage icsCANStruct, ref icsSpyMessageJ1850 icsJ1850Struct)
{
//Becuse memcopy is not available.
icsCANStruct.StatusBitField = icsJ1850Struct.StatusBitField;
icsCANStruct.StatusBitField2 = icsJ1850Struct.StatusBitField2;
icsCANStruct.TimeHardware = icsJ1850Struct.TimeHardware;
icsCANStruct.TimeHardware2 = icsJ1850Struct.TimeHardware2;
icsCANStruct.TimeSystem = icsJ1850Struct.TimeSystem;
icsCANStruct.TimeSystem2 = icsJ1850Struct.TimeSystem2;
icsCANStruct.TimeStampHardwareID = icsJ1850Struct.TimeStampHardwareID;
icsCANStruct.TimeStampSystemID = icsJ1850Struct.TimeStampSystemID;
icsCANStruct.NetworkID = icsJ1850Struct.NetworkID;
icsCANStruct.NodeID = icsJ1850Struct.NodeID;
icsCANStruct.Protocol = icsJ1850Struct.Protocol;
icsCANStruct.MessagePieceID = icsJ1850Struct.MessagePieceID;
icsCANStruct.ExtraDataPtrEnabled = icsJ1850Struct.ExtraDataPtrEnabled;
icsCANStruct.NumberBytesHeader = icsJ1850Struct.NumberBytesHeader;
icsCANStruct.NumberBytesData = icsJ1850Struct.NumberBytesData;
icsCANStruct.DescriptionID = icsJ1850Struct.DescriptionID;
icsCANStruct.ArbIDOrHeader = (icsJ1850Struct.Header3 * 65536) + (icsJ1850Struct.Header2 * 256) + icsJ1850Struct.Header1;
icsCANStruct.Data1 = icsJ1850Struct.Data1;
icsCANStruct.Data2 = icsJ1850Struct.Data2;
icsCANStruct.Data3 = icsJ1850Struct.Data3;
icsCANStruct.Data4 = icsJ1850Struct.Data4;
icsCANStruct.Data5 = icsJ1850Struct.Data5;
icsCANStruct.Data6 = icsJ1850Struct.Data6;
icsCANStruct.Data7 = icsJ1850Struct.Data7;
icsCANStruct.Data8 = icsJ1850Struct.Data8;
icsCANStruct.StatusBitField3 = (icsJ1850Struct.ACK1 << 24) + (icsJ1850Struct.ACK2 << 16) + (icsJ1850Struct.ACK3 << 8) + (icsJ1850Struct.ACK4);
icsCANStruct.StatusBitField4 = (icsJ1850Struct.ACK5 << 24) + (icsJ1850Struct.ACK6 << 16) + (icsJ1850Struct.ACK7 << 8) + (icsJ1850Struct.ACK8);
icsCANStruct.iExtraDataPtr = icsJ1850Struct.iExtraDataPtr;
icsCANStruct.MiscData = icsJ1850Struct.MiscData;
}
public static string ConvertToHex(string sInput)
{
string sOut;
uint uiDecimal = 0;
try
{
//Convert text string to unsigned Int32eger
uiDecimal = checked((uint)System.Convert.ToUInt32(sInput));
}
catch (System.OverflowException)
{
sOut = "Overflow";
return sOut;
}
//Format unsigned Int32eger value to hex
sOut = String.Format("{0:x2}", uiDecimal);
return sOut;
}
public static Int32 ConvertFromHex(string num)
{
//To hold our converted unsigned Int32eger32 value
uint uiHex = 0;
try
{
// Convert hex string to unsigned Int32eger
uiHex = System.Convert.ToUInt32(num, 16);
}
catch (System.OverflowException)
{
//
}
return Convert.ToInt32(uiHex);
}
public static Int32 GetNetworkIDfromString(ref string NetworkName)
{
switch (NetworkName)
{
case "DEVICE":
return ((int)eNETWORK_ID.NETID_DEVICE);
case "HSCAN":
return ((int)eNETWORK_ID.NETID_HSCAN);
case "MSCAN":
return ((int)eNETWORK_ID.NETID_MSCAN);
case "SWCAN":
return ((int)eNETWORK_ID.NETID_SWCAN);
case "LSFTCAN":
return ((int)eNETWORK_ID.NETID_LSFTCAN);
case "ISO":
return ((int)eNETWORK_ID.NETID_ISO);
case "ISO2":
return ((int)eNETWORK_ID.NETID_ISO2);
case "ISO14230":
return ((int)eNETWORK_ID.NETID_ISO14230);
case "LIN":
return ((int)eNETWORK_ID.NETID_LIN);
case "ISO3":
return ((int)eNETWORK_ID.NETID_ISO3);
case "HSCAN2":
return ((int)eNETWORK_ID.NETID_HSCAN2);
case "HSCAN3":
return ((int)eNETWORK_ID.NETID_HSCAN3);
case "ISO4":
return ((int)eNETWORK_ID.NETID_ISO4);
case "LIN2":
return ((int)eNETWORK_ID.NETID_LIN2);
case "LIN3":
return ((int)eNETWORK_ID.NETID_LIN3);
case "LIN4":
return ((int)eNETWORK_ID.NETID_LIN4);
case "LIN5":
return ((int)eNETWORK_ID.NETID_LIN5);
case "MOST":
return ((int)eNETWORK_ID.NETID_MOST);
case "CGI":
return ((int)eNETWORK_ID.NETID_CGI);
case "HSCAN4":
return ((int)eNETWORK_ID.NETID_HSCAN4);
case "HSCAN5":
return ((int)eNETWORK_ID.NETID_HSCAN5);
case "UART":
return ((int)eNETWORK_ID.NETID_UART);
case "UART2":
return ((int)eNETWORK_ID.NETID_UART2);
case "UART3":
return ((int)eNETWORK_ID.NETID_UART3);
case "UART4":
return ((int)eNETWORK_ID.NETID_UART4);
case "SWCAN2":
return ((int)eNETWORK_ID.NETID_SWCAN2);
case "ETHERNE":
return ((int)eNETWORK_ID.NETID_ETHERNET_DAQ);
case "FLEXRAY1A":
return ((int)eNETWORK_ID.NETID_FLEXRAY1A);
case "FLEXRAY1B":
return ((int)eNETWORK_ID.NETID_FLEXRAY1B);
case "FLEXRAY2A":
return ((int)eNETWORK_ID.NETID_FLEXRAY2A);
case "FLEXRAY2B":
return ((int)eNETWORK_ID.NETID_FLEXRAY2B);
case "FLEXRAY":
return ((int)eNETWORK_ID.NETID_FLEXRAY);
case "MOST25":
return ((int)eNETWORK_ID.NETID_MOST25);
case "MOST50":
return ((int)eNETWORK_ID.NETID_MOST50);
case "MOST150":
return ((int)eNETWORK_ID.NETID_MOST150);
case "ETHERNET":
return ((int)eNETWORK_ID.NETID_ETHERNET);
case "HSCAN6":
return ((int)eNETWORK_ID.NETID_HSCAN6);
case "HSCAN7":
return ((int)eNETWORK_ID.NETID_HSCAN7);
case "LIN6":
return ((int)eNETWORK_ID.NETID_LIN6);
case "LSFTCAN2":
return ((int)eNETWORK_ID.NETID_LSFTCAN2);
case "OP_ETHERNET1":
return ((int)eNETWORK_ID.NETID_OP_ETHERNET1);
case "OP_ETHERNET2":
return ((int)eNETWORK_ID.NETID_OP_ETHERNET2);
case "OP_ETHERNET3":
return ((int)eNETWORK_ID.NETID_OP_ETHERNET3);
case "OP_ETHERNET4":
return ((int)eNETWORK_ID.NETID_OP_ETHERNET4);
case "OP_ETHERNET5":
return ((int)eNETWORK_ID.NETID_OP_ETHERNET5);
case "OP_ETHERNET6":
return ((int)eNETWORK_ID.NETID_OP_ETHERNET6);
case "OP_ETHERNET7":
return ((int)eNETWORK_ID.NETID_OP_ETHERNET7);
case "OP_ETHERNET8":
return ((int)eNETWORK_ID.NETID_OP_ETHERNET8);
case "OP_ETHERNET9":
return ((int)eNETWORK_ID.NETID_OP_ETHERNET9);
case "OP_ETHERNET10":
return ((int)eNETWORK_ID.NETID_OP_ETHERNET10);
case "OP_ETHERNET11":
return ((int)eNETWORK_ID.NETID_OP_ETHERNET11);
case "OP_ETHERNET12":
return ((int)eNETWORK_ID.NETID_OP_ETHERNET12);
}
return (-1);
}
public static string GetStringForNetworkID(Int16 lNetworkID)
{
string sTempOutput = "N/A";
switch (lNetworkID)
{
case (short)eNETWORK_ID.NETID_DEVICE:
sTempOutput = "DEVICE";
break;
case (short)eNETWORK_ID.NETID_HSCAN:
sTempOutput = "HSCAN";
break;
case (short)eNETWORK_ID.NETID_MSCAN:
sTempOutput = "MSCAN";
break;
case (short)eNETWORK_ID.NETID_SWCAN:
sTempOutput = "SWCAN";
break;
case (short)eNETWORK_ID.NETID_LSFTCAN:
sTempOutput = "LSFTCAN";
break;
case (short)eNETWORK_ID.NETID_ISO:
sTempOutput = "ISO";
break;
case (short)eNETWORK_ID.NETID_ISO2:
sTempOutput = "ISO2";
break;
case (short)eNETWORK_ID.NETID_ISO14230:
sTempOutput = "ISO14230";
break;
case (short)eNETWORK_ID.NETID_LIN:
sTempOutput = "LIN";
break;
case (short)eNETWORK_ID.NETID_ISO3:
sTempOutput = "ISO3";
break;
case (short)eNETWORK_ID.NETID_HSCAN2:
sTempOutput = "HSCAN2";
break;
case (short)eNETWORK_ID.NETID_HSCAN3:
sTempOutput = "HSCAN3";
break;
case (short)eNETWORK_ID.NETID_ISO4:
sTempOutput = "ISO4";
break;
case (short)eNETWORK_ID.NETID_LIN2:
sTempOutput = "LIN2";
break;
case (short)eNETWORK_ID.NETID_LIN3:
sTempOutput = "LIN3";
break;
case (short)eNETWORK_ID.NETID_LIN4:
sTempOutput = "LIN4";
break;
case (short)eNETWORK_ID.NETID_LIN5:
sTempOutput = "LIN5";
break;
case (short)eNETWORK_ID.NETID_MOST:
sTempOutput = "MOST";
break;
case (short)eNETWORK_ID.NETID_CGI:
sTempOutput = "CGI";
break;
case (short)eNETWORK_ID.NETID_HSCAN4:
sTempOutput = "HSCAN4";
break;
case (short)eNETWORK_ID.NETID_HSCAN5:
sTempOutput = "HSCAN5";
break;
case (short)eNETWORK_ID.NETID_UART:
sTempOutput = "UART";
break;
case (short)eNETWORK_ID.NETID_UART2:
sTempOutput = "UART2";
break;
case (short)eNETWORK_ID.NETID_UART3:
sTempOutput = "UART3";
break;
case (short)eNETWORK_ID.NETID_UART4:
sTempOutput = "UART4";
break;
case (short)eNETWORK_ID.NETID_SWCAN2:
sTempOutput = "SWCAN2";
break;
case (short)eNETWORK_ID.NETID_ETHERNET_DAQ:
sTempOutput = "ETHERNE";
break;
case (short)eNETWORK_ID.NETID_FLEXRAY1A:
sTempOutput = "FLEXRAY1A";
break;
case (short)eNETWORK_ID.NETID_FLEXRAY1B:
sTempOutput = "FLEXRAY1B";
break;
case (short)eNETWORK_ID.NETID_FLEXRAY2A:
sTempOutput = "FLEXRAY2A";
break;
case (short)eNETWORK_ID.NETID_FLEXRAY2B:
sTempOutput = "FLEXRAY2B";
break;
case (short)eNETWORK_ID.NETID_FLEXRAY:
sTempOutput = "FLEXRAY";
break;
case (short)eNETWORK_ID.NETID_MOST25:
sTempOutput = "MOST25";
break;
case (short)eNETWORK_ID.NETID_MOST50:
sTempOutput = "MOST50";
break;
case (short)eNETWORK_ID.NETID_MOST150:
sTempOutput = "MOST150";
break;
case (short)eNETWORK_ID.NETID_ETHERNET:
sTempOutput = "ETHERNET";
break;
case (short)eNETWORK_ID.NETID_HSCAN6:
sTempOutput = "HSCAN6";
break;
case (short)eNETWORK_ID.NETID_HSCAN7:
sTempOutput = "HSCAN7";
break;
case (short)eNETWORK_ID.NETID_LIN6:
sTempOutput = "LIN6";
break;
case (short)eNETWORK_ID.NETID_LSFTCAN2:
sTempOutput = "LSFTCAN2";
break;
case (short)eNETWORK_ID.NETID_OP_ETHERNET1:
sTempOutput = "OP_ETHERNET1";
break;
case (short)eNETWORK_ID.NETID_OP_ETHERNET2:
sTempOutput = "OP_ETHERNET2";
break;
case (short)eNETWORK_ID.NETID_OP_ETHERNET3:
sTempOutput = "OP_ETHERNET3";
break;
case (short)eNETWORK_ID.NETID_OP_ETHERNET4:
sTempOutput = "OP_ETHERNET4";
break;
case (short)eNETWORK_ID.NETID_OP_ETHERNET5:
sTempOutput = "OP_ETHERNET5";
break;
case (short)eNETWORK_ID.NETID_OP_ETHERNET6:
sTempOutput = "OP_ETHERNET6";
break;
case (short)eNETWORK_ID.NETID_OP_ETHERNET7:
sTempOutput = "OP_ETHERNET7";
break;
case (short)eNETWORK_ID.NETID_OP_ETHERNET8:
sTempOutput = "OP_ETHERNET8";
break;
case (short)eNETWORK_ID.NETID_OP_ETHERNET9:
sTempOutput = "OP_ETHERNET9";
break;
case (short)eNETWORK_ID.NETID_OP_ETHERNET10:
sTempOutput = "OP_ETHERNET10";
break;
case (short)eNETWORK_ID.NETID_OP_ETHERNET11:
sTempOutput = "OP_ETHERNET11";
break;
case (short)eNETWORK_ID.NETID_OP_ETHERNET12:
sTempOutput = "OP_ETHERNET12";
break;
default:
sTempOutput = "Other";
break;
}
return sTempOutput;
}
}
}