//////////////////////////////////////////////////////////////////////////////////// // icsSpyData.h // 4/16/2008 // Copyright Intrepid Control Systems, Inc. 2000-2008 // www.intrepidcs.com //////////////////////////////////////////////////////////////////////////////////// #ifndef VSPY_DATA_HEADER_FILE #define VSPY_DATA_HEADER_FILE // timestamp id fields const unsigned char HARDWARE_TIMESTAMP_ID_NONE =0; const unsigned char HARDWARE_TIMESTAMP_ID_VSI = 1; const unsigned char HARDWARE_TIMESTAMP_ID_AVT_716 = 2; const unsigned char HARDWARE_TIMESTAMP_ID_NI_CAN = 3; const unsigned char HARDWARE_TIMESTAMP_ID_NEOVI = 4; const unsigned char HARDWARE_TIMESTAMP_ID_AVT_717= 5; const unsigned char HARDWARE_TIMESTAMP_ID_NEOv6_VCAN = 6; const unsigned char HARDWARE_TIMESTAMP_ID_DOUBLE_SEC = 7; const unsigned char HARDWARE_TIMESTAMP_ID_NEORED_10US = 8; const unsigned char HARDWARE_TIMESTAMP_ID_NEORED_25NS = 9; // this data file defines data constants used in Vehicle Spy for C/C++ users // the data is directed from the icsspyHardware COM interface #define SPY_GPS_LOCATION 0 #define SPY_GPS_SPEED 1 #define SPY_GPS_ALTITUDE 2 /* '// protocols Public Enum icsspyHardwareProtocol icsspyProtocolCustom icsspyProtocolCAN icsspyProtocolGMLAN icsspyProtocolJ1850VPW icsspyProtocolJ1850PWM icsspyProtocolISO9141 icsspyProtocolKeyword2000 icsspyProtocolGM_ALDL_UART icsspyProtocolChryslerCCD icsspyProtocolChryslerSCI icsspyProtocolFordUBP icsspyProtocolBean End Enum */ const int SPY_PROTOCOL_CUSTOM = 0; const int SPY_PROTOCOL_CAN = 1; const int SPY_PROTOCOL_GMLAN = 2; const int SPY_PROTOCOL_J1850VPW = 3; const int SPY_PROTOCOL_J1850PWM = 4; const int SPY_PROTOCOL_ISO9141 = 5; const int SPY_PROTOCOL_Keyword2000 = 6; const int SPY_PROTOCOL_GM_ALDL_UART = 7; const int SPY_PROTOCOL_CHRYSLER_CCD = 8; const int SPY_PROTOCOL_CHRYSLER_SCI = 9; const int SPY_PROTOCOL_FORD_UBP = 10; const int SPY_PROTOCOL_BEAN = 11; const int SPY_PROTOCOL_LIN = 12; const int SPY_PROTOCOL_J1708 = 13; const int SPY_PROTOCOL_CHRYSLER_JVPW = 14; const int SPY_PROTOCOL_J1939 = 15; const int SPY_PROTOCOL_CGI = 18; const int SPY_PROTOCOL_GME_CIM_SCL_KLINE = 19; /* '// these are bitmasks for the status bitfield Public Enum icsSpyDataStatusBitfield icsSpyStatusGlobalError = 2 ^ 0 icsSpyStatusTx = 2 ^ 1 icsSpyStatusIsCanType = 2 ^ 2 icsSpyStatusRemoteFrame = 2 ^ 3 icsSpyStatusErrCRCError = 2 ^ 4 icsSpyStatusHardwareTimePresent = 2 ^ 5 icsSpyStatusErrIncompleteFrame = 2 ^ 6 icsSpyStatusErrLostArbitration = 2 ^ 7 icsSpyStatusErrUndefined = 2 ^ 8 icsSpyStatusHasValue = 2 ^ 9 icsSpyStatusValueIsBoolean = 2 ^ 10 icsSpyStatusBusShortedPlus = 2 ^ 11 icsSpyStatusBusShortedGnd = 2 ^ 12 icsSpyStatusCheckSumError = 2 ^ 13 icsSpyStatusErrBadMessageBitTimeError = 2 ^ 14 icsSpyStatusIFRData = 2 ^ 15 icsSpyStatusCommInOverflow = 2 ^ 16 icsSpyStatusCommOutOverflow = 2 ^ 17 icsSpyStatusCommMiscError = 2 ^ 18 icsSpyStatusBreak = 2 ^ 19 icsSpyStatusAVT_VSIRecOverflow = 2 ^ 20 icsSpyStatusTestTrigger = 2 ^ 21 icsSpyStatusAudioCommentType = 2 ^ 22 icsSpyStatusGPSDataValue = 2 ^ 23 icsSpyStatusAnalogDigitalInputValue = 2 ^ 24 icsSpyStatusTextCommentType = 2 ^ 25 icsSpyStatusNetworkMessageType = 2 ^ 26 icsSpyStatusVSI_TxUnderRun = 2 ^ 27 icsSpyStatusVSI_IFR_CRCBit = 2 ^ 28 End Enum */ // constants for the status bitfield const long SPY_STATUS_GLOBAL_ERR = 0x01; const long SPY_STATUS_TX_MSG = 0x02; const long SPY_STATUS_XTD_FRAME = 0x04; const long SPY_STATUS_REMOTE_FRAME = 0x08; const long SPY_STATUS_CRC_ERROR = 0x10; const long SPY_STATUS_CAN_ERROR_PASSIVE = 0x20; const long SPY_STATUS_INCOMPLETE_FRAME = 0x40; const long SPY_STATUS_LOST_ARBITRATION = 0x80; const long SPY_STATUS_UNDEFINED_ERROR = 0x100; const long SPY_STATUS_CAN_BUS_OFF = 0x200; const long SPY_STATUS_BUS_RECOVERED = 0x400; const long SPY_STATUS_BUS_SHORTED_PLUS = 0x800; const long SPY_STATUS_BUS_SHORTED_GND = 0x1000; const long SPY_STATUS_CHECKSUM_ERROR = 0x2000; const long SPY_STATUS_BAD_MESSAGE_BIT_TIME_ERROR = 0x4000; const long SPY_STATUS_TX_NOMATCH = 0x8000; const long SPY_STATUS_COMM_IN_OVERFLOW = 0x10000; //const long SPY_STATUS_COMM_OUT_OVERFLOW = 0x20000; const long SPY_STATUS_EXPECTED_LEN_MISMATCH = 0x20000; //const long SPY_STATUS_COMM_MISC_ERROR = 0x40000; const long SPY_STATUS_MSG_NO_MATCH = 0x40000; const long SPY_STATUS_BREAK = 0x80000; const long SPY_STATUS_AVSI_REC_OVERFLOW = 0x100000; const long SPY_STATUS_TEST_TRIGGER = 0x200000; const long SPY_STATUS_AUDIO_COMMENT = 0x400000; const long SPY_STATUS_GPS_DATA = 0x800000; const long SPY_STATUS_ANALOG_DIGITAL_INPUT = 0x1000000; const long SPY_STATUS_TEXT_COMMENT = 0x2000000; const long SPY_STATUS_NETWORK_MESSAGE_TYPE = 0x4000000; const long SPY_STATUS_VSI_TX_UNDERRUN = 0x8000000; const long SPY_STATUS_VSI_IFR_CRC_BIT = 0x10000000; const long SPY_STATUS_INIT_MESSAGE = 0x20000000; const long SPY_STATUS_LIN_MASTER = 0x20000000; const long SPY_STATUS_HIGH_SPEED = 0x40000000; const long SPY_STATUS_EXTENDED = 0x80000000; // if this bit is set than decode status bitfield3 in the ackbytes // The second status bitfield /* Public Enum icsSpyDataStatusBitfield2 icsSpyStatusHasValue = 2 ^ 0 icsSpyStatusValueIsBoolean = 2 ^ 1 End Enum */ const long SPY_STATUS2_HAS_VALUE = 1; const long SPY_STATUS2_VALUE_IS_BOOLEAN = 2; const long SPY_STATUS2_HIGH_VOLTAGE = 4; const long SPY_STATUS2_LONG_MESSAGE = 8; const long SPY_STATUS2_GLOBAL_CHANGE = 0x10000; const long SPY_STATUS2_ERROR_FRAME = 0x20000; const long SPY_STATUS2_END_OF_LONG_MESSAGE = 0x100000; //TRM for ISO and J1708 const long SPY_STATUS2_LIN_ERR_RX_BREAK_NOT_0 = 0x200000; const long SPY_STATUS2_LIN_ERR_RX_BREAK_TOO_SHORT = 0x400000; const long SPY_STATUS2_LIN_ERR_RX_SYNC_NOT_55 = 0x800000; const long SPY_STATUS2_LIN_ERR_RX_DATA_GREATER_8 = 0x1000000; const long SPY_STATUS2_LIN_ERR_TX_RX_MISMATCH = 0x2000000; const long SPY_STATUS2_LIN_ERR_MSG_ID_PARITY = 0x4000000; const long SPY_STATUS2_ISO_FRAME_ERROR = 0x8000000; const long SPY_STATUS2_ISO_OVERFLOW_ERROR= 0x10000000; const long SPY_STATUS2_ISO_PARITY_ERROR = 0x20000000; const long SPY_STATUS2_RX_TIMEOUT_ERROR = 0x40000000; const long SPY_STATUS2_LIN_NO_SLAVE_DATA = 0x80000000; // these are used in status2 for Vehicle Spy 3 const long icsspystatusChangeLength =0x10; const long icsspystatusChangeBitH1 = 0x20; const long icsspystatusChangeBitH2 = 0x40; const long icsspystatusChangeBitH3 = 0x80 ; const long icsspystatusChangeBitB1 = 0x100; const long icsspystatusChangeBitB2 = 0x200 ; const long icsspystatusChangeBitB3 = 0x400 ; const long icsspystatusChangeBitB4 = 0x800 ; const long icsspystatusChangeBitB5 = 0x1000; const long icsspystatusChangeBitB6 = 0x2000; const long icsspystatusChangeBitB7 = 0x4000; const long icsspystatusChangeBitB8 = 0x8000 ; const long icsspystatusChangedGlobal = 0x10000 ; //Status bit field 3 const long SPY_STATUS3_LIN_JUST_BREAK_SYNC = 1; const long SPY_STATUS3_LIN_SLAVE_DATA_TOO_SHORT = 2; const long SPY_STATUS3_LIN_ONLY_UPDATE_SLAVE_TABLE_ONCE = 4; /* Public Type icsSpyMessage StatusBitField As Long '4 StatusBitField2 As Long 'new '4 TimeHardware As Long ' 4 TimeHardware2 As Long 'new ' 4 TimeSystem As Long ' 4 TimeSystem2 As Long TimeStampID As Byte 'new ' 1 TimeStampSystemID As Byte NetworkID As Byte 'new ' 1 NodeID As Byte Protocol As Byte MessagePieceID As Byte ' 1 ColorID As Byte '1 NumberBytesHeader As Byte ' 1 NumberBytesData As Byte ' 1 DescriptionID As Integer ' 2 ArbIDOrHeader As Long '// Holds (up to 3 byte 1850 header or 29 bit CAN header) '4 Data(1 To 8) As Byte '8 AckBytes(1 To 8) As Byte 'new '8 Value As Single ' 4 MiscData As Byte End Type */ typedef struct _icsSpyMessage // matching C structure { unsigned long StatusBitField; // 4 unsigned long StatusBitField2; // 4 unsigned long TimeHardware; // 4 unsigned long TimeHardware2; // 4 unsigned long TimeSystem; // 4 unsigned long TimeSystem2; // 4 unsigned char TimeStampHardwareID; // 1 unsigned char TimeStampSystemID; unsigned char NetworkID; // 1 unsigned char NodeID; unsigned char Protocol; unsigned char MessagePieceID; // 1 unsigned char ExtraDataPtrEnabled; // 1 unsigned char NumberBytesHeader;// 1 unsigned char NumberBytesData; // 1 short DescriptionID; // 2 long ArbIDOrHeader; // 4 unsigned char Data[8]; union { struct { unsigned long StatusBitField3; unsigned long StatusBitField4; }; unsigned char AckBytes[8]; }; unsigned int ExtraDataPtr; unsigned char MiscData; } icsSpyMessage; /* Public Type icsSpyMessageLong StatusBitField As Long ' 4 StatusBitField2 As Long 'new '4 TimeHardware As Long TimeHardware2 As Long 'new ' 4 TimeSystem As Long '4 TimeSystem2 As Long TimeStampID As Byte 'new ' 1 TimeStampSystemID As Byte NetworkID As Byte 'new ' 1 NodeID As Byte Protocol As Byte MessagePieceID As Byte ' 1 ColorID As Byte ' 1 NumberBytesHeader As Byte ' NumberBytesData As Byte '2 DescriptionID As Integer '2 ArbIDOrHeader As Long '// Holds (up to 3 byte 1850 header or 29 bit CAN header) DataMsb As Long DataLsb As Long AckBytes(1 To 8) As Byte 'new '8 Value As Single MiscData As Byte End Type*/ typedef struct icsSpyMessageLong_struct// matching C structure { unsigned long StatusBitField; // 4 unsigned long StatusBitField2; // 4 unsigned long TimeHardware; // 4 unsigned long TimeHardware2; // 4 unsigned long TimeSystem; // 4 unsigned long TimeSystem2; // 4 unsigned char TimeStampHardwareID; // 1 unsigned char TimeStampSystemID; // 1 unsigned char NetworkID; // 1 unsigned char NodeID; // 1 unsigned char Protocol; // 1 unsigned char MessagePieceID; // 1 unsigned char ExtraDataPtrEnabled; // 1 unsigned char NumberBytesHeader;// 1 unsigned char NumberBytesData; // 1 short DescriptionID; // 2 long ArbIDOrHeader; // 4 unsigned long DataMsb; unsigned long DataLsb; unsigned char AckBytes[8]; unsigned int ExtraDataPtr; unsigned char MiscData; /* THIS IS NOT ALLOWED IN C - DAVER icsSpyMessageLong_struct() { ExtraDataPtrEnabled = false; NumberBytesData = 0; ExtraDataPtr = 0; } */ } icsSpyMessageLong; /* Public Type icsSpyMessageJ1850 StatusBitField As Long '4 StatusBitField2 As Long 'new '4 TimeHardware As Long '4 TimeHardware2 As Long 'new ' 4 TimeSystem As Long '4 TimeSystem2 As Long TimeStampID As Byte 'new ' 1 TimeStampSystemID As Byte NetworkID As Byte 'new ' 1 NodeID As Byte Protocol As Byte MessagePieceID As Byte ' 1 new ColorID As Byte ' 1 NumberBytesHeader As Byte '1 NumberBytesData As Byte '1 DescriptionID As Integer '2 Header(1 To 4) As Byte '4 '// Holds (up to 3 byte 1850 header or 29 bit CAN header) Data(1 To 8) As Byte '8 AckBytes(1 To 8) As Byte 'new '8 Value As Single '4 MiscData As Byte End Type */ typedef struct // matching C structure { unsigned long StatusBitField; // 4 unsigned long StatusBitField2; // 4 unsigned long TimeHardware; // 4 unsigned long TimeHardware2; // 4 unsigned long TimeSystem; // 4 unsigned long TimeSystem2; // 4 unsigned char TimeStampHardwareID; // 1 unsigned char TimeStampSystemID; // 1 unsigned char NetworkID; // 1 unsigned char NodeID; // 1 unsigned char Protocol; // 1 unsigned char MessagePieceID; // 1 unsigned char ExtraDataPtrEnabled; // 1 unsigned char NumberBytesHeader;// 1 unsigned char NumberBytesData; // 1 short DescriptionID; // 2 unsigned char Header[4]; // 4 unsigned char Data[8]; union { struct { unsigned long StatusBitField3; unsigned long StatusBitField4; }; unsigned char AckBytes[8]; }; unsigned int ExtraDataPtr; unsigned char MiscData; } icsSpyMessageJ1850; /* Public Type icsSpyMessageGPS StatusBitField As Long '4 StatusBitField2 As Long 'new '4 TimeHardware As Long '4 TimeHardware2 As Long 'new ' 4 TimeSystem As Long '4 TimeSystem2 As Long TimeStampID As Byte 'new ' 1 TimeStampSystemID As Byte NetworkID As Byte 'new ' 1 NodeID As Byte Protocol As Byte MessagePieceID As Byte ' 1 ColorID As Byte ' 1 GPSDataID As Integer '2 DescriptionID As Integer '2 AckBytes(1 To 8) As Byte 'new '8 Value1 As Double '8 Value2 As Double '8 MiscData As Byte End Type */ typedef struct // matching C structure { unsigned long StatusBitField; // 4 unsigned long StatusBitField2; // 4 unsigned long TimeHardware; // 4 unsigned long TimeHardware2; // 4 unsigned long TimeSystem; // 4 unsigned long TimeSystem2; // 4 unsigned char TimeStampHardwareID; // 1 unsigned char TimeStampSystemID; unsigned char NetworkID; // 1 unsigned char NodeID; // 1 unsigned char Protocol; // 1 unsigned char MessagePieceID; // 1 unsigned char ExtraDataPtrEnabled; // 1 short GPSDataID; short DescriptionID; // 2 unsigned char AckBytes[8]; double Value1; // 8 double Value2;// 8 unsigned char MiscData; } icsSpyMessageGPS; /* Public Type icsSpyMessageAnalog StatusBitField As Long '4 StatusBitField2 As Long 'new '4 TimeHardware As Long '4 TimeHardware2 As Long 'new ' 4 TimeSystem As Long '4 TimeSystem2 As Long TimeStampID As Byte 'new ' 1 TimeStampSystemID As Byte NetworkID As Byte 'new ' 1 NodeID As Byte Protocol As Byte MessagePieceID As Byte ' 1 ColorID As Byte ' 1 AIDataID As Integer '2 DescriptionID As Integer '2 Value As Double '8 HardwareIndex As Integer '2 AckBytes(1 To 8) As Byte 'new '8 iDummy As Integer '2 lDummy As Long '4 MiscData As Byte End Type */ typedef struct // matching C structure { unsigned long StatusBitField; // 4 unsigned long StatusBitField2; // 4 unsigned long TimeHardware; // 4 unsigned long TimeHardware2; // 4 unsigned long TimeSystem; // 4 unsigned long TimeSystem2; // 4 unsigned char TimeStampHardwareID; // 1 unsigned char TimeStampSystemID; // 1 unsigned char NetworkID; // 1 unsigned char NodeID; // 1 unsigned char Protocol; unsigned char MessagePieceID; // 1 unsigned char ExtraDataPtrEnabled; // 1 short AIDataID; short DescriptionID; // 2 double Value; short HardwareIndex; unsigned char AckBytes[8]; short iDummy; long lDummy; unsigned char MiscData; } icsSpyMessageAnalog; /* Public Enum icsspyHardwareTimeStampID icsspyTimeStampNone icsspyTimeStampVSI icsspyTimeStampAVT_716 icsspyTimeStampNICAN End Enum */ /* Public Enum icsspySystemTimeStampID icsspyTimeStampNone icsspyTimeStampTimeGetTimeAPI End Enum*/ const unsigned char SYSTEM_TIMESTAMP_ID_NONE = 0; const unsigned char SYSTEM_TIMESTAMP_ID_TIMEGETTIME_API = 1; /* Public Type icsspyMsgTime SystemTimeStampID As Long SystemTime1 As Long SystemTime2 As Long HardwareTimeStampID As Long HardwareTime1 As Long HardwareTime2 As Long End Enum */ typedef struct // matching C structure { unsigned long SystemTimeStampID; // 4 unsigned long SystemTime1; // 4 unsigned long SystemTime2; // 4 unsigned long HardwareTimeStampID; // 4 unsigned long HardwareTime1; // 4 unsigned long HardwareTime2; // 4 } icsSpyMsgTime; /* Public Type spyFilterBytes StatusValue As Long StatusMask As Long Status2Value As Long Status2Mask As Long Header(1 To 4) As Byte HeaderMask(1 To 4) As Byte MiscData As Long MiscDataMask As Long ByteData(1 To 8) As Byte ByteDataMask(1 To 8) As Byte HeaderLength As Long ByteDataLength As Long NetworkID As Long FrameMaster As Boolean bStuff1 As Byte bStuff2 As Byte ExpectedLength As Long NodeID As Long End Type */ typedef struct // matching C structure { unsigned long StatusValue; // 4 unsigned long StatusMask; // 4 unsigned long Status2Value; // 4 unsigned long Status2Mask; // 4 unsigned char Header[4]; // 4 unsigned char HeaderMask[4]; // 4 unsigned long MiscData; // 4 unsigned long MiscDataMask; // 4 unsigned char ByteData[8]; // 4 unsigned char ByteDataMask[8]; // 4 unsigned long HeaderLength; // 4 unsigned long ByteDataLength; // 4 unsigned long NetworkID; // 4 unsigned short FrameMaster; // 2 unsigned char bUseArbIdRangeFilter; unsigned char bStuff2; unsigned long ExpectedLength; unsigned long NodeID; } spyFilterBytes; /*Public Type spyFilterLong StatusValue As Long StatusMask As Long Status2Value As Long Status2Mask As Long Header As Long HeaderMask As Long MiscData As Long MiscDataMask As Long ByteDataMsb As Long ByteDataLsb As Long ByteDataMaskMsb As Long ByteDataMaskLsb As Long HeaderLength As Long ByteDataLength As Long NetworkID As Long FrameMaster As Boolean bStuff1 As Byte bStuff2 As Byte ExpectedLength As Long NodeID As Long End Type */ typedef struct // matching C structure { unsigned long StatusValue; // 4 unsigned long StatusMask; // 4 unsigned long Status2Value; // 4 unsigned long Status2Mask; // 4 unsigned long Header; // 4 unsigned long HeaderMask; // 4 unsigned long MiscData; // 4 unsigned long MiscDataMask; // 4 unsigned long ByteDataMSB; // 4 unsigned long ByteDataLSB; // 4 unsigned long ByteDataMaskMSB; // 4 unsigned long ByteDataMaskLSB; // 4 unsigned long HeaderLength; // 4 unsigned long ByteDataLength; // 4 unsigned long NetworkID; // 4 unsigned short FrameMaster; // 2 unsigned char bUseArbIdRangeFilter; unsigned char bStuff2; unsigned long ExpectedLength; unsigned long NodeID; } spyFilterLong; /* // Structure for firmware info struct stAPIFirmwareInfo { int iType; // 1,2,3 for Generation of HW. // Date and Time (only valid for type 1 and 2 int iMainFirmDateDay; int iMainFirmDateMonth; int iMainFirmDateYear; int iMainFirmDateHour; int iMainFirmDateMin; int iMainFirmDateSecond; int iMainFirmChkSum; // Version data (only valid for type 3) unsigned char iAppMajor; unsigned char iAppMinor; unsigned char iManufactureDay; unsigned char iManufactureMonth; unsigned short iManufactureYear; unsigned char iBoardRevMajor; unsigned char iBoardRevMinor; unsigned char iBootLoaderVersionMajor; unsigned char iBootLoaderVersionMinor; }; */ typedef struct _icsSpyTime{ unsigned char sec; // --- Seconds (00-59) unsigned char min; // --- (00-59) unsigned char hour; // --- (00-23) unsigned char day; // --- (01-31) unsigned char month; // --- (01-12) unsigned char year; // --- (00-99) } icsSpyTime ; #endif