Status Bitfields - neoVI API
C/C++ declare - VB declare - VB.NET declare - C# declare - Remarks - C/C++ example - VB example - VB.NET example - C# example

There are two status bitfields in the message structures that define specific attributes of the message. The two status bitfields are named StatusBitfield and StatusBitfield1.

C/C++ Declare

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_CAN_ERROR_WARNING = 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_IFR_DATA = 0x8000;

const long SPY_STATUS_HARDWARE_COMM_ERROR = 0x10000;
const long SPY_STATUS_EXPECTED_LEN_ERROR = 0x20000;
const long SPY_STATUS_INCOMING_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_HIGH_SPEED_MESSAGE = 0x40000000;


// The second status bitfield
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;

 

Visual Basic Declares

Public Enum icsSpyDataStatusBitfield
    icsSpyStatusGlobalError = 2 ^ 0
    icsSpyStatusTx = 2 ^ 1
    icsSpyStatusXtdFrame = 2 ^ 2
    icsSpyStatusRemoteFrame = 2 ^ 3
    icsSpyStatusErrCRCError = 2 ^ 4
    icsSpyStatusCANErrorPassive = 2 ^ 5
    icsSpyStatusErrIncompleteFrame = 2 ^ 6
    icsSpyStatusErrLostArbitration = 2 ^ 7
    icsSpyStatusErrUndefined = 2 ^ 8
    icsSpyStatusErrCANBusOff = 2 ^ 9
    icsSpyStatusErrCANErrorWarning = 2 ^ 10
    icsSpyStatusBusShortedPlus = 2 ^ 11
    icsSpyStatusBusShortedGnd = 2 ^ 12
    icsSpyStatusCheckSumError = 2 ^ 13
    icsSpyStatusErrBadMessageBitTimeError = 2 ^ 14
    icsSpyStatusIFRData = 2 ^ 15
    icsSpyStatusHardwareCommError = 2 ^ 16
    icsSpyStatusExpectedLengthError = 2 ^ 17
    icsSpyStatusIncomingNoMatch = 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
    icsSpyStatusInitMessage = 2 ^ 29
    icsSpyStatusHighSpeed = 2 ^ 30
End Enum

Public Enum icsSpyDataStatusBitfield2
    icsSpyStatusHasValue = 2 ^ 0
    icsSpyStatusValueIsBoolean = 2 ^ 1
    icsSpyStatusHighVoltage = 2 ^ 2
    icsSpyStatusLongMessage = 2 ^ 3
End Enum


Visual Basic .NET Declares

Public
Enum icsSpyDataStatusBitfield
    icsSpyStatusGlobalError = 2 ^ 0
    icsSpyStatusTx = 2 ^ 1
    icsSpyStatusXtdFrame = 2 ^ 2
    icsSpyStatusRemoteFrame = 2 ^ 3
    icsSpyStatusErrCRCError = 2 ^ 4
    icsSpyStatusCANErrorPassive = 2 ^ 5
    icsSpyStatusErrIncompleteFrame = 2 ^ 6
    icsSpyStatusErrLostArbitration = 2 ^ 7
    icsSpyStatusErrUndefined = 2 ^ 8
    icsSpyStatusErrCANBusOff = 2 ^ 9
    icsSpyStatusErrCANErrorWarning = 2 ^ 10
    icsSpyStatusBusShortedPlus = 2 ^ 11
    icsSpyStatusBusShortedGnd = 2 ^ 12
    icsSpyStatusCheckSumError = 2 ^ 13
    icsSpyStatusErrBadMessageBitTimeError = 2 ^ 14
    icsSpyStatusIFRData = 2 ^ 15
    icsSpyStatusHardwareCommError = 2 ^ 16
    icsSpyStatusExpectedLengthError = 2 ^ 17
    icsSpyStatusIncomingNoMatch = 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
    icsSpyStatusInitMessage = 2 ^ 29
    icsSpyStatusHighSpeed = 2 ^ 30
End Enum

Public
Enum icsSpyDataStatusBitfield2
    icsSpyStatusHasValue = 2 ^ 0
    icsSpyStatusValueIsBoolean = 2 ^ 1
    icsSpyStatusHighVoltage = 2 ^ 2
    icsSpyStatusLongMessage = 2 ^ 3
End
Enum

C# Declares

public enum eDATA_STATUS_BITFIELD_1
{
    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_HARDWARE_COMM_ERROR = 0x10000,
   
SPY_STATUS_EXPECTED_LEN_ERROR = 0x20000,
   
SPY_STATUS_INCOMING_NO_MATCH = 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_MESSAGE = 0x40000000,
}

public enum
eDATA_STATUS_BITFIELD_2
{
   
SPY_STATUS2_HAS_VALUE = 0,
   
SPY_STATUS2_VALUE_IS_BOOLEAN = 2,
   
SPY_STATUS2_HIGH_VOLTAGE = 4,
   
SPY_STATUS2_LONG_MESSAGE = 8,
}

Remarks

The tables below describe the bitfields.

Table 1 - StatusBitfield Elements

C/C++ Name  VB Name Description
SPY_STATUS_GLOBAL_ERR  icsSpyStatusGlobalError  This is set if the message has any other error bits set.
SPY_STATUS_TX_MSG  icsSpyStatusTx  This is set if the message was transmitted by this device.
SPY_STATUS_XTD_FRAME  icsSpyStatusXtdFrame  This is set if the CAN message received or transmitted has an extended (29 bit) identifier.
SPY_STATUS_REMOTE_FRAME  icsSpyStatusRemoteFrame  This is set if the CAN message received or transmitted is a remote frame.
SPY_STATUS_CRC_ERROR  icsSpyStatusErrCRCError  This is set for J1850 VPW messages which do not have a proper CRC byte.
SPY_STATUS_CAN_ERROR_PASSIVE  icsSpyStatusCANErrorPassive  Not used in the neoVI API.
SPY_STATUS_INCOMPLETE_FRAME  icsSpyStatusErrIncompleteFrame  This is set for a J1850 VPW message which is received that ended on a non-byte boundary.
SPY_STATUS_LOST_ARBITRATION  icsSpyStatusErrLostArbitration  Not used in the neoVI API.
SPY_STATUS_UNDEFINED_ERROR  icsSpyStatusErrUndefined  This is an undefined error in the neoVI hardware
SPY_STATUS_CAN_BUS_OFF icsSpyStatusErrCANBusOff  This is set when there is a change in error status of a MCP2510 CAN controller. The bitfield of the error status is stored in data byte 1 of the message structure.  A description of this bitfield is included in this topic.
SPY_STATUS_CAN_ERROR_WARNING  icsSpyStatusErrCANErrorWarning  Not used in the neoVI API.
SPY_STATUS_BUS_SHORTED_PLUS icsSpyStatusBusShortedPlus  Not used in the neoVI API.
SPY_STATUS_BUS_SHORTED_GND icsSpyStatusBusShortedGnd Not used in the neoVI API.
SPY_STATUS_CHECKSUM_ERROR icsSpyStatusCheckSumError Not used in the neoVI API.
SPY_STATUS_BAD_MESSAGE_BIT_TIME_ERROR  icsSpyStatusErrBadMessageBitTimeError  This is set for J1850 VPW messages which do not meet the specified bit times for the SOF or bit signals.
SPY_STATUS_IFR_DATA icsSpyStatusIFRData Not used in the neoVI API.
SPY_STATUS_HARDWARE_COMM_ERROR icsSpyStatusHardwareCommError Not used in the neoVI API.
SPY_STATUS_EXPECTED_LEN_ERROR icsSpyStatusExpectedLengthError Not used in the neoVI API.
SPY_STATUS_INCOMING_NO_MATCH icsSpyStatusIncomingNoMatch Not used in the neoVI API.
SPY_STATUS_BREAK icsSpyStatusBreak This is set if the J1850 VPW break symbol has been received or is to be transmitted.
SPY_STATUS_AVSI_REC_OVERFLOW icsSpyStatusAVT_VSIRecOverflow Not used in the neoVI API.
SPY_STATUS_TEST_TRIGGER icsSpyStatusTestTrigger Not used in the neoVI API.
SPY_STATUS_AUDIO_COMMENT icsSpyStatusAudioCommentType Not used in the neoVI API.
SPY_STATUS_GPS_DATA icsSpyStatusGPSDataValue Not used in the neoVI API.
SPY_STATUS_ANALOG_DIGITAL_INPUT icsSpyStatusAnalogDigitalInputValue Not used in the neoVI API.
SPY_STATUS_TEXT_COMMENT icsSpyStatusTextCommentType  Not used in the neoVI API.
SPY_STATUS_NETWORK_MESSAGE_TYPE icsSpyStatusNetworkMessageType This is set for all messages received from a vehicle network.
SPY_STATUS_VSI_TX_UNDERRUN icsSpyStatusVSI_TxUnderRun Not used in the neoVI API.
SPY_STATUS_VSI_IFR_CRC_Bit  icsSpyStatusVSI_IFR_CRCBit Not used in the neoVI API.
SPY_STATUS_INIT_MESSAGE icsSpyStatusInitMessage      This is set if the transmitted message should generate the ISO/Keyword2000 initialization waveform.
SPY_STATUS_HIGH_SPEED_MESSAGE icsSpyStatusHighSpeed This is set if the transmitted message is transmitted in high speed mode.

Table 2 - StatusBitfield2 Elements

C/C++ Name  VB Name Description
SPY_STATUS2_HAS_VALUE  icsSpyStatusHasValue  Not used in the neoVI API.
SPY_STATUS2_VALUE_IS_BOOLEAN  icsSpyStatusValueIsBoolean  Not used in the neoVI API.
SPY_STATUS2_HIGH_VOLTAGE icsSpyStatusHighVoltage This is set if the transmitted message is transmitted in high voltage wakeup mode.
SPY_STATUS2_LONG_MESSAGE icsSpyStatusLongMessage Not used in the neoVI API.

 

 

VB Module: bas_neoVI.bas
C/C++ Header: neovi.h
C/C++ Library File: icsneoVI.lib
DLL File: icsneoVI.dll
VB.Net Module: bas_neoVI.vb
C# Class: icsNeoClass.cs


Examples

Visual Basic Example

Determining if we transmitted a message (This is indicated by icsSpyStatusTx bit set)

If (Msg.StatusBitField And icsSpyStatusTx) > 0 Then
    '// The message was transmitted by us
End If

Transmitting a CAN Extended ID Remote Frame

'// Load the message to be transmitted ArbID = FF extended remote frame with DLC=4
With stMessagesTx
    .ArbIDOrHeader = &HFF
    .NumberBytesData = 4
    .StatusBitField = icsSpyStatusXtdFrame + icsSpyStatusRemoteFrame
End With

lResult = icsneoTxMessages(m_hObject, stMessagesTx, NETID_HSCAN, 1)

 

C/C++ Example

Determining if we there's an error in the message (This is indicated by SPY_STATUS_GLOBAL_ERR bit set)

if (mMsg.StatusBitField & SPY_STATUS_GLOBAL_ERR)
{
    // This message has an error in it
}

 

Visual Basic .NET Example

Determining if we transmitted a message (This is indicated by icsSpyStatusTx bit set)

If (Msg.StatusBitField And icsSpyDataStatusBitfield.icsSpyStatusTx) > 0 Then
   
     '// The message was transmitted by us
End
If

Transmitting a CAN Extended ID Remote Frame

'// Load the message to be transmitted ArbID = FF extended remote frame with DLC=4
With stMessagesTx
    .ArbIDOrHeader = &HFF
    .NumberBytesData = 4
    .StatusBitField = icsSpyDataStatusBitfield.icsSpyStatusXtdFrame + icsSpyDataStatusBitfield.icsSpyStatusRemoteFrame
End With

lResult = icsneoTxMessages(m_hObject, stMessagesTx, NETID_HSCAN, 1)

 

C# Example

Determining if we there's an error in the message (This is indicated by SPY_STATUS_GLOBAL_ERR bit set)


if
(mMsg.StatusBitField & SPY_STATUS_GLOBAL_ERR)
{
    // This message has an error in it

}

intrepidcs API Documentation - (C) Copyright 2000-2012 Intrepid Control Systems, Inc.  (www.intrepidcs.com)

Last Updated : Friday, March 19, 2010