All pages
Powered by GitBook
Couldn't generate the PDF for 141 pages, generation stopped at 100.
Extend with 50 more pages.
1 of 100

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Basic Functions Overview - neoVI API

Name
Description

Used to locate connected neoVI devices.

Used to open a communication link with a specific neoVI device.

Closes the communication link with the neoVI device.

Releases system resources used by the neoVI device.

FindDevices
OpenNeoDevice
ClosePort
FreeObject

ValueCAN RF - neoVI API

Name
Description

Gets device and network parameters for a ValueCAN RF device

Sets device and network parameters for a ValueCAN RF device

ClearReflashDisplayCallbacks Method - neoVI API

This method is used to clear callback functions that were set using the SetReflashDisplayCallback method.

Parameters

None

Return Values

None

Remarks

neoVI Fire - neoVI API

Name
Description

RAD Galaxy - neoVI API

Name
Description

ValueCAN3 - neoVI API

Name
Description

neoVI FIRE 2 - neoVI API

Name
Description

GetFireSettings

Gets device and network parameters for a neoVI Fire device

SetFireSettings

Sets device and network parameters for a neoVI Fire device

GetRADGalaxySettings

Gets device and network parameters for a RAD Galaxy device

SetRADGalaxySettings

Sets device and network parameters for a RAD Galaxy device

GetVCAN3Settings

Gets device and network parameters for a ValueCAN3 device

SetVCAN3Settings

Sets device and network parameters for a ValueCAN3 device

GetFIRE2Settings

Gets device and network parameters for a neoVI FIRE 2 device

SetFIRE2Settings

Sets device and network parameters for a neoVI FIRE 2 device

GetVCANRFSettings
SetVCANRFSettings
Examples
void _stdcall icsneoClearReflashDisplayCallbacks(void);

FindAllUSBDevices Method - neoVI API

This method is no longer supported and will always return 0. It remains in the API for backward compatibility.

FindDevices Method

This method returns the neoVI hardware devices connected to the PC.

int _stdcall icsneoFindDevices(NeoDeviceEx* pNeoDeviceEx, int* pNumDevices ,unsigned int* DeviceTypes,unsigned int numDeviceTypes,POptionsFindNeoEx* pOptionsNeoEx,unsigned int* reserved); 
Public Declare Function icsneoFindDevices Lib "icsneo40.dll" (ByRef pNeoDevice As NeoDeviceEx, ByRef pNumDevices As Int32, ByRef DeviceTypes As UInt32, ByVal numDeviceTypes As UInt32, ByRef pOptionsFindNeoEx As OptionsNeoEx, ByVal reserved As UInt32) As Int32
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoFindDevices(ref NeoDeviceEx pNeoDevice, ref Int32 pNumDevices, UInt32 DeviceTypes, UInt32 numDeviceTypes, ref

Parameters

pNeoDeviceEx [out] This is the address of the first element of an array of NeoDeviceEx structure. This array can be as big as 255 devices. You must specify the size of the pNeoDeviceEx array in the pNumDevices parameter. The number of devices found will be limited to the value of pNumberofDevices or 255, whichever is lower. Each returned NeoDevice structure will contain information for each device such as its type, device ‘handle’ and serial number.

pNumberOfDevices [in/out] In: Specifies the size of the pNeoDevices array. Must be in the range 0 to 255. Out: Specifies the number of neo devices that were found. This can be in the range 0 to 255. DeviceTypes __ [in] This is an array of device types to look for. Specifies the types of neoVI devices to find. Each element in the array need to have a value for the device type to look for. Currently supported values are:

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

Constants are defined in appropriate header or module. pNumDevicTypes

[in] In: Specifies the size of the DeviceTypes array. Must be in the range 0 to 255.

pOptionsNeoEx

[in] CAN netowork ID for connecting to devices over CAN. Set to null for USB or Ethernet connections.

Return Values

1 if the function succeeded. 0 if it failed for any reason. If the function succeeds but no devices are found 1 will still be returned and pNumberOfDevices will equal 0.

Remarks

The NeoDevice array elements that are returned with this function may be passed to so that individual neoVI devices can be opened.

Examples

WIN32 API Overview - neoVI API

Basic Operations

Name
Description

Used to locate connected neoVI and ValueCAN devices.

Used to open a communication link with a specific neoVI or ValueCAN device.

Closes the communication link with the neoVI device.

Message Functions

Name
Description

Device Settings Functions

Name
Description

Error Functions

Name
Description

General Utility Functions

Name
Description

CoreMini Functions

Function
Description

Deprecated Functions

Name
Description

ISO15765 Message Functions Overview - neoVI API

Name
Description

Enables ISO15765 functions. Must be called before Tx and RX functions.

Sends a ISO15765 message on CAN.

Looks for specified frames and responds with specified flow control on CAN.

SetDeviceParameters Method - neoVI API

This method changes neoVI device parameters.

int _stdcall icsneoSetDeviceParameters(void * hObject, char *pParmValue, int *pErrorIndex, int bSaveToEERPROM);
[DllImport(“icsneo40.dll”)] public static extern int icsneoSetDeviceParameters(IntPtr hObject, ref byte pParmValue, ref int pErrorIndex, int bSaveToEEPROM);
Public Declare Function icsneoSetDeviceParameters Lib “icsneo40.dll”(ByVal hObject As IntPtr, ByVal pParmValue As String, ByRef pErrorIndex As Int32, ByVal bSaveToEEPROM As Int32) As Int32

Parameters

hObject

[in] Specifies the driver object created by OpenNeoDevice.

pParmValue

[in] This is an array containing parameter names and values. Each parameter and value is separated by a equal sign, and each parameter/value pairing is separated by a comma. The parameter names are matched without regard to case. All spaces are ignored. The size of this array must be 1024 bytes or less. The format of the array is:

ParameterName=Value,ParameterName=Value, …

See for a list of parameter names for each device and supported network.

See examples below on how to build a parameter/value string.

pErrorIndex

[out] If there are any errors detected within the pParmValue parameter, this value will indicate index of the parameter where the first error was found. The index is zero-based.

bSaveToEEPROM

[in] This value determines if the parameter changes are permanent or will be lost when the device is power-cycled. Set the value to 1 to write the changes to EEPROM, 0 to keep the changes restricted to RAM.

Return Values

1 if the changes are successful. -1 if there was an error while writing the changes to the device. 0 if there is an error detected within the pParmValue array. If the return value is 0, indicating an error, check the pErrorIndex to get the index of the first error detected within the pParmValue array. must be called to obtain the specific error. The errors that can be generated by this function are:

NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE = 75

Remarks

It is ineffecient to use this function to write one parameter change at a time. If multiple parameters need to be changed, combine them into a long string and call this function once.

Examples

EnableNetworkCom Method - neoVI API

This function is deprecated. Use the EnableNetworkRXQueue method instead.

This method enables or disables all vehicle network rx data.

int _stdcall icsneoEnableNetworkCom(int hObject,int lEnable);
Public Declare Function icsneoEnableNetworkCom Lib “icsneo40.dll” (ByVal hObject As Integer, ByVal lEnable As Integer) As Integer
[DllImport(“icsneo40.dll”)] public static extern int icsneoEnableNetworkCom(int hObject, int lEnable);

Parameters

lEnable

[in] When 1 it will enable network receive. When 0 it will disable network receive.

Return Values

This function returns the 1 when successful. 0 if otherwise.

Remarks

This function will enable and disable network traffic for all client applications connected to the neoVI. The icsneoEnableNetworkRXQueue function can be used to enable and disable the receive message queue for individual applications.

Examples

StopSocketServer Method - neoVI API

This method starts the TCP/IP socket server at a specified port.

int _stdcall icsneoStopSockServer(int hObject);
Public Declare Function icsneoStopSockServer Lib “icsneo40.dll” (ByVal hObject As Integer) As Integer
[DllImport(“icsneo40.dll”)] public static extern int icsneoStopSockServer(int hObject);

Parameters

hObject

[in] Handle to the driver object created by OpenNeoDevice

Return Values

If the server has been stopped successfully the return value will be 1. If the function fails the return value will be zero.

Remarks

This method should be called when the server created with .

Examples

SetReflashDisplayCallbacks Method - neoVI API

This method is used to set ‘call back’ functions that will be called by the neoVI API when flashing a neoVI device with the ForceFirmwareUpdate function. This overrides the Windows dialog box that normally displays the progress of a neoVI flash update. The use of call back functions allows the client application to receive the status messages and display them as desired.

int _stdcall icsneoSetReflashDisplayCallbacks(void (*OnPrompt)(unsigned long), void (*OnReflashUpdate)(const wchar_t *, unsigned long));

Parameters

void (*OnPrompt)(unsigned long)

[in] Specifies a function pointer that will be called when a message must be displayed instructing the user to disconnect and then re-connect the neoVI from the USZB port. The function receives an unsigned long that will contain the serial number of the neoVI device being flash updated. Before returning from this function call the user of the client application must be prompted to unplug the neoVI from the USB port and then re-connect it before continuing. This is to put the USB chip in the neoVI into bootloader mode so that flashing can begin. This function will not be called when flashing a ValueCAN3 device.

void (*OnReflashUpdate)(const wchar_t *, unsigned long)

[in] Specifies a function pointer that will be called when a flashing status message is ready to be displayed. The function recieves a pointer to a wide character string that contains the status message to display. It also receives an unsigned long that contains the percentage complete for the current chip being flashed. The percentage value will reset to 0 for each new chip. For example, the neoVI Fire has four chips to flash while the ValueCAN3 has only two.

Return Values

1 if successful, 0 if either function pointer is NULL.

Remarks

After calling this function you must call the function to cause the neoVI device firmware to be updated. Once the callbacks have been set they are valid and active until the the DLL is unloaded or until the function is called.

Examples

GetGPTPStatus Method - neoVI API

This method sets bit rates for networks on neoVI devices

int _stdcall icsneoGetGPTPStatus(void * hObject,  GPTPStatus * StatusGPTP);
Public Declare Function icsneoGetGPTPStatus Lib "icsneo40.dll" (ByVal hObject As IntPtr, ByRef StatusGPTP As GPTPStatus) As Int32
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoGetGPTPStatus(IntPtr hObject,ref GPTPStatus StatusGPTP);

Parameters

hObject __ [in] Specifies the driver object created by OpenNeoDevice. gptpStatus [out] The address of a GPTPStatus structure.

Return Values

1 if the function succeeded. 0 if it failed for any reason. GetLastAPIError must be called to obtain the specific error. Failure could include the device not supporting gPTP, or the device supports gPTP but not support icsneoGetGPTPStatus API. Remarks

Rad Galaxy, Rad SuperMoon, Rad Star2, and Rad GigaStar supports icsneoGetGPTPStatus API nEAT, Rad Pluto, Rad Jupiter support gPTP but, does not support this API

Examples

FreeObject Method - neoVI API

This method releases system resources used by the neoVI device.

void _stdcall icsneoFreeObject(void * hObject);
Public Declare Function icsneoFreeObject Lib “icsneo40.dll” (ByVal hObject As IntPtr)
[DllImport(“icsneo40.dll”)] public static extern void icsneoFreeObject(IntPtr hObject);

Parameters

hObject

**** [in] Specifies the driver object created by OpenNeoDevice.

Return Values

None.

Remarks

This method is used to release any resources that were allocated by . Applications that create neoVI handles should release them using this method, however, the intrepidCS API will release any resources that it created for the client application when the client application ends and the API is unloaded. The LabVIEW neoClosePort.vi will call the FreeObject API.

Examples

ValueCAN 4-4 - neoVI API

Name
Description

Gets device and network parameters for a ValueCAN 4-4 device

Sets device and network parameters for a ValueCAN 4-4 device

General Utility Functions Overview - neoVI API

Name
Description

Used to determine if an hObject reference is valid

Returns DLL version information

Starts the TCP/IP socket server at a specified port.

Stops the TCP/IP socket server

SetRTC Method - neoVI API

This method sets the value of the real-time clock on a connected neoVI device.

int _stdcall icsneoSetRTC(void * hObject, icsSpyTime *pTime);
Public Declare Function icsneoSetRTC Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByRef pTime As icsSpyTime) As Int32
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoSetRTC(IntPtr hObject, ref icsSpyTime pTime);

Parameters

hObject

[in] Specifies the driver object created by OpenNeoDevice.

pTime

[in] The address of a icsSpyTime structure. This structure is defined in the file icsSpyDataCommon.h

Return Values

1 if the function succeeded. 0 if it failed for any reason. must be called to obtain the specific error. The errors that can be generated by this function are:

NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE = 75

Remarks

Examples

Error Functions Overview - neoVI API

Name
Description

Returns the error generated by the last intrepidcs API call

Returns the intrepidcs API error message queue

Returns a text description of an intrepidcs API error

Transmitting Long Messages - neoVI API

Overview

For ISO9141 and Keyword 2000 Networks, a long message transmission option is allowed. Long message transmission is necessary when the message length exceeds twelve bytes (including checksum if used).

You can transmit a long message by calling the method with modified arguments. First, you will pass an array of icsSpyMessage structures which contain the long message data. This data in the array must be set properly. Finally, you must set the lNumMessages argument to the number of structures.

You must setup the long message data properly. For the first message, both the 3 byte Header and the 8 byte data section are filled in. For consecutive messages only the 8 byte data section is filled in.

VB Example to Send a 16 byte message

ISO15765_EnableNetworks Method - neoVI API

This method enables the use of ISO15765-2 on a CAN network. icsneoISO15765_EnableNetwroks must be called before using icsneoISO15765_TransmitMessage or icsneoISO15765_ReceiveMessage.

Parameters

hObject

[in] Handle which specifies the driver object created with the OpenPort method.

lNetwork

[in] Specifies which CAN network the status is requested for. Can be one of the following values:

GetRTC Method - neoVI API

This method returns the value of the real-time clock on a connected neoVI device.

Parameters

hObject

[in] Specifies the driver object created by .

pTime

[in] The address of a icsSpyTime structure. This structure is defined in the file icsSpyDataCommon.h

GetHWFirmwareInfo Method - neoVI API

This method returns the firmware version of the open neoVI device.

Parameters

hObject

[in] Specifies the driver object created by .

pInfo

[out] Pointer to an structure.

GetPerformanceParameters Method - neoVI API

Parameters

hObject

[in] Specifies the driver object created with the OpenPort method.

iBufferCount

[out] Specifies the driver object created with the OpenPort method.

IBufferMax

[out] Specifies the size of the buffer.

ValidateHObject Method - neoVI API

This method is used to determine if a driver object is valid.

Parameters

hObject

[in] Specifies the driver object created by .

Return Values

1 if the hObject is valid. 0 if the object is invalid.

GetLastAPIError Method - neoVI API

This method returns the error generated by the last API call.

Parameters

hObject

[in] Specifies the driver object created by .

piErrorNumber

[out] The value of the error generated by the previous API call will be returned. The text description of the error can then be obtained by calling .

EnableDOIPLine Method - neoVI API

This method enables or disables the Ethernet activation line on supported hardware devices.

Parameters

hObject

[in] Specifies the driver object created by

bActivate

[in] Specifies the state of the Activation line. True enables the activation and False disabled it.

CoreMini Script interface Overview - neoVI API

The CoreMini Script Interface is a way to use functionality from Vehicle Spy in your own application. When a CoreMini file is created in Vehicle Spy 3 it creates header files for the functions in the file and giving access to basic parameters in the script.

This section includes commands to load and interact with CoreMini scripts for Intrepid Control Systems 3G hardware. CoreMini scripts are created using Vehicle Spy 3. For information on creating CoreMini scripts see the help documents for Vehicle Spy 3. The table below lists the different script interface commands and gives a short description of the command.

Function
Description

General Device Settings - neoVI API

These functions are designed to work for both 2G and 3G devices

Name
Description

GetDLLVersion Method - neoVI API

This method returns the software version of the DLL.

Parameters

None.

Return Values

This function returns the version number of the API.

Remarks

StartSocketServer Method - neoVI API

This method starts the TCP/IP socket server at a specified port.

Parameters

hObject

[in] Handle which specifies the driver object created by

iPort

[in] specifies the TCP/IP Port where the server will be established.

ValueCAN 4-1 and 4-2 - neoVI API

Name
Description

GetVCAN412Settings

Gets device and network parameters for a ValueCAN 4-1 and 4-2 device

SetVCAN412Settings

Sets device and network parameters for a ValueCAN 4-1 and 4-2 device

ISO15765EnableNetworks
ISO15765TxMessage
ISO15765RxMessage
GetVCAN4Settings
SetVCAN4Settings
ValidateHObject
GetDLLVersion
StartSockServer
StopSockServer
GetLastAPIError
GetErrorMessages
GetErrorInfo
Call icsneoEnableNetworkCom(m_hObject, 0)
icsneoEnableNetworkCom(m_hObject,0);
icsNeoDll.icsneoEnableNetworkCom(m_hObject,0);
StartSocketServer
bStatus = icsneoStopSockServer(m_hObject) '// stop the socket server
icsneoStopSockServer(hObject);
iStatus = icsNeoDll.icsneoStopSockServer(m_hObject); // stop the socket server
ForceFirmwareUpdate
ClearReflashDisplayCallbacks
Dim gptp_status As New GPTPStatus
Dim iResult As Int32

iResult = icsneoGetGPTPStatus(m_hObject, gptp_status)
GPTPStatus gptp_status = {};
int iResult; 
iResult = icsneoGetGPTPStatus(m_hObject, &gptp_status);
GPTPStatus gptp_status = new  GPTPStatus();
int iResult;

iResult = icsNeoDll.icsneoGetGPTPStatus(m_hObject,ref gptp_status);
OpenNeoDevice
Call icsneoFreeObject(m_hObject)   '//Free the memory associated with our driver object
icsneoFreeObject(hObject);  //Free the memory associated with our driver object
icsNeoDll.icsneoFreeObject(m_hObject); //Free the memory associated with our driver object
GetLastAPIError
Return Values

1 if the function succeeded. 0 if it failed for any reason. GetLastAPIError must be called to obtain the specific error. The errors that can be generated by this function are:

NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE = 75

Remarks

Examples

long lResult;
icsSpyTime icsTime;

//Call for RTC
lResult = icsneoGetRTC(m_hObject, &icsTime);
long lResult;
icsSpyTime icsTime;

//Call for RTC
lResult = icsNeoDll.icsneoGetRTC(m_hObject,ref icsTime);
Dim lResult As Int32
Dim icsTime As New icsSpyTime

'//Call for RTC
lResult = icsneoGetRTC(m_hObject, icsTime)
Public Declare Function icsneoGetRTC Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByRef pTime As icsSpyTime) As Int32
OpenNeoDevice
int _stdcall icsneoGetRTC(void * hObject, icsSpyTime *pTime);
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoGetRTC(IntPtr hObject, ref icsSpyTime pTime);
Return Values

If an error was generated and stored during the last API call then 1 will be returned. 0 will be returned if no error was generated since the port was opened or the last time that GetLastAPIError was called. The stored error will be cleared after this call. API errors are generated and stored on a ‘per-thread’ basis. The calling thread will only receive errors generated within it’s own context. If a new API error is generated before the previous error has been retrieved, the previous error will be lost. All errors generated can still be retrieved using GetErrorMessages. However, GetErrorMessages will return errors generated in all threads, not just the current thread.

Remarks

Examples

Public Declare Function icsneoGetLastAPIError Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByRef piErrorNumber As Integer) As Integer
OpenNeoDevice
GetErrorInfo
int _stdcall icsneoGetLastAPIError(void * hObject, int *piErrorNumber);
[DllImport(“icsneo40.dll”)] public static extern int icsneoGetLastAPIError(IntPtr hObject, ref int piErrorNumber);
None.

Examples

char szOut[200];

// get the DLL version and report it
wsprintf(szOut,TEXT("intrepidcs API DLL Version %d\n"), icsneoGetDLLVersion());
MessageBox(hWnd,szOut,TEXT("Message"),MB_ICONINFORMATION);
'// get the DLL version information and place in Button text
Button1.Text = "Version " + Convert.ToString(icsneoGetDLLVersion)
'// get the DLL version information and place in Button text
Button1.Text = "Version " + Convert.ToString(icsNeoDll.icsneoGetDLLVersion());
Public Declare Function icsneoGetDLLVersion Lib “icsneo40.dll” () As Integer
int _stdcall icsneoGetDLLVersion();
[DllImport(“icsneo40.dll”)] public static extern int icsneoGetDLLVersion();
Return Values

If the server was started successfully the return value will be non-zero.

Remarks

This method creates a TCP/IP server in the DLL. This server can be attached to by any TCP/IP clients using the RAW API or using the DLL by specifying TCP/IP with OpenNeoDevice. Only one server is allowed at a time.

Examples

icsneoStartSockServer(hObject, iPort);
bStatus = icsneoStartSockServer(m_hObject, iPort)) '// start the socket server
iStatus = icsNeoDll.icsneoStartSockServer(m_hObject, Convert.ToInt32(txtServerPort.Text));
Public Declare Function icsneoStartSockServer Lib “icsneo40.dll” (ByVal hObject As Integer, ByVal iPort As Integer) As Integer
OpenNeoDevice
int _stdcall icsneoStartSockServer(int hObject, int iPort);
[DllImport(“icsneo40.dll”)] public static extern int icsneoStartSockServer(int hObject, int iPort);

iOverFlowCount

[out] Indicates the the number of overflows that have occurred since the last successful OpenPort method was called.

iReserved1

[out] Reserved. Set to 0.

iReserved2

[out] Reserved. Set to 0.

iReserved3

[out] Reserved. Set to 0.

iReserved4

[out] Reserved. Set to 0.

iReserved5

[out] Reserved. Set to 0.

Return Values

This function returns the 1 when successful. 0 if otherwise.

Remarks

XX.

Examples

Public Declare Function icsneoGetPerformanceParameters Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByRef iBufferCount As Integer, ByRef iBufferMax As Integer, ByRef iOverFlowCount As Integer, ByRef iReserved1 As Integer, ByRef iReserved2 As Integer, ByRef iReserved3 As Integer, ByRef iReserved4 As Integer, ByRef iReserved5 As Integer) As Integer
int _stdcall icsneoGetPerformanceParameters(void * hObject, int * iBufferCount, int * iBufferMax, int * iOverFlowCount, int * iReserved1, int * iReserved2,int * iReserved3,int * iReserved4,int * iReserved5)
[DllImport(“icsneo40.dll”)] public static extern int icsneoGetPerformanceParameters(IntPtr hObject,ref int iBufferCount, ref int iBufferMax, ref int iOverFlowCount , ref int iReserved1, ref int iReserved2 , ref int iReserved3, ref int iReserved4 ,ref int iReserved5);
OptionsNeoEx
pOptionsNeoEx
,
UInt32
reserved);
OpenNeoDevice
Valid Parameters
GetLastAPIError
'// Declared at form level
Private m_hObject As intptr '// Holds the object for the state of the application


Dim stMsgJ1850(0 To 3) As icsSpyMessageJ1850
Dim lResult As Long

'//Fill in first header
stMsgJ1850(0).Header1 = &H1
stMsgJ1850(0).Header2 = &H2
stMsgJ1850(0).Header3 = &H0
stMsgJ1850(0).NumberBytesHeader = 3

'//Fill in data
stMsgJ1850(0).Data1 = &H4
stMsgJ1850(0).Data2 = &H5
stMsgJ1850(0).Data3 = &H6
stMsgJ1850(0).Data4 = &H7
stMsgJ1850(0).Data5 = &H8
stMsgJ1850(0).Data6 = &H9
stMsgJ1850(0).Data7 = &H10
stMsgJ1850(0).Data8 = &H11
stMsgJ1850(0).NumberBytesData = 8

'//Fill in data
stMsgJ1850(1).NumberBytesHeader = 0
stMsgJ1850(1).Data1 = &H12
stMsgJ1850(1).Data2 = &H13
stMsgJ1850(1).Data3 = &H14
stMsgJ1850(1).Data4 = &H15
stMsgJ1850(1).Data5 = &H16
stMsgJ1850(1).NumberBytesData = 5

'// Transmit the assembled message
lResult = icsneoTxMessages(m_hObject, stMsgJ1850(0), NETID_ISO, 2)

'// Test the returned result
If Not CBool(lResult) Then
    MsgBox("Problem Transmitting Message")
End If
TxMessages
icsneoGetPerformanceParameters(m_hObject, &iBufferCount, &iBufferMax, &iOverFlowCount, &iReserved1, &iReserved2, &iReserved3, &iReserved4, &iReserved5);
lResult = icsneoGetPerformanceParameters(m_hObject, iBufferCount, iBufferMax, iOverFlowCount, iReserved1, iReserved2, iReserved3, iReserved4, iReserved5)

If CBool(lResult) Then
    txtBufferCount.Text = iBufferCount
    txtBufferMax.Text = iBufferMax
    txtOverflowCount.Text = iOverFlowCount
End If
lResult = icsNeoDll.icsneoGetPerformanceParameters(m_hObject, ref iBufferCount, ref iBufferMax, ref iOverFlowCount, ref iReserved1, ref iReserved2, ref iReserved3, ref iReserved4, ref iReserved5);

if(lResult=1)
{
    txtBufferCount.Text = Convert.ToString(iBufferCount);
    txtBufferMax.Text = Convert.ToString(iBufferMax);
    txtOverflowCount.Text = Convert.ToString(iOverFlowCount);
}
NeoDeviceEx Devices[255];
unsigned long lDevTypes;
int iNumDevices = 255;
int iRetVal = 0;
int lDevTypes;

lDevTypes = NEODEVICE_ALL;

iRetVal = icsneoFindDevices(Devices, &iNumberOfDevices,NULL,0,NULL,0);
int iResult;//Holds the results from function call
NeoDeviceEx ndNeoToOpen = new NeoDeviceEx(); ; //Struct holding detected hardware information
int iNumberOfDevices; //Number of hardware devices to look for
int lDevTypes; //Holds the device types to look for
lDevTypes = NEODEVICE_ALL;

//Set the number of devices to find
iNumberOfDevices = 1;
//Search for connected hardware
iResult = icsNeoDll.icsneoFindDevices(ref ndNeoToOpenex[0],ref iNumberOfDevices, 0, 0,ref neoDeviceOption, 0);
if (iResult == 0)
{
    MessageBox.Show("Problem finding devices");
    return;
}
Dim iResult As Integer '//Holds the results from function call
Dim ndNeoToOpenex As NeoDeviceEx '//Struct holding detected hardware information
Dim iNumberOfDevices As Integer '//Number of hardware devices to look for
Dim lDevTypes As Integer '//Holds the device types to look for
Dim neoDeviceOption As OptionsNeoEx = New OptionsNeoEx '//Not using CAN 0 out


'//Set the devices to look for
lDevTypes = NEODEVICE_ALL
'//Set the number of devices to find
iNumberOfDevices = 1
'//Search for connected hardware
iResult = icsneoFindDevices(ndNeoToOpenex(0), iNumberOfDevices, 0, 0, neoDeviceOption, 0)
If (iResult = 0) Then MsgBox("Problem finding devices")
char SetFireParms[100];
char Values[500];
int iRetVal;
int iErrorIndex;
unsigned short NetworkEnables = 0xFFFF;

sprintf(SetFireParms, "network_enables=%d,can1/Baudrate=9,can1/Mode=0", NetworkEnables);

iRetVal = icsneoSetDeviceParameters(hObject, SetFireParms, &iErrorIndex, 1);
Dim ReturnVal As Int32
Dim Errors As Int32
Dim sCommand As String

sCommand = "network_enables=0"
ReturnVal = icsneoSetDeviceParameters(m_hObject, sCommand, Errors, 0)

Enables ISO15765 for the selective CAN/CANFD network

Configures an outgoing ISO15765 transaction

Configures the hardware to listen for a ISO15765 transaction

In formation on sending longer frames on ISO9171 and Keyword 2000 networks

Sets device and network parameters for a neoVI Fire 2 device

Gets device and network parameters for a ValueCAN3 device

Sets device and network parameters for a ValueCAN3 device

Gets device and network parameters for a ValueCAN4-1 and ValueCAN4-2 device

Sets device and network parameters for a ValueCAN4-1 and ValueCAN4-2 device

Gets device and network parameters for a ValueCAN RF device

Sets device and network parameters for a ValueCAN RF device

Gets device and network parameters for a RAD Galaxy device

Sets device and network parameters for a RAD Galaxy device

Set the baud or bit rate for a specific neoVI network

Gets the firmware version of a neoVI device

Gets the firmware version stored in the DLL API

Forces the firmware to updated on a neoVI device

Gets individual parameters for a neoVI device

Sets individual parameters for a neoVI device

Sets callback function pointers for flashing a neoVI

Clears callback function pointers for flashing a neoVI

Gets the current real-time clock value from a connect neoVI device

Sets the current real-time clock value in a connected neoVI device

Returns the run status of a function block within a script on a neoVI device

Stops the execution of a function block within a script on a neoVI device

Stops the execution of a function block within a script on a neoVI device

Read an application signal from a script running on a neoVI device

Set the value of an application signal in a script running on a neoVI device

ScriptReadISO15765TxMessage

Read parameters of an ISO15765-2 long transmit message in a script on a neoVI device

ScriptWriteISO15765TxMessage

Change the parameters for an ISO15765-2 long transmit message defined in a script on a neoVI device

Reads parameters for a transmit message defined within a script on a neoVI device

ScriptWriteRxMessage

Alter a receive message defined within script on a neoVI device

ScriptWriteTxMessage

Alter a transmit message defined within a script on a neoVI device

Releases system resources used by the neoVI device.

GetMessages

Reads messages from the neoVI or ValueCAN device.

TxMessages

Transmits messages to vehicle networks using a neoVI or ValueCAN device.

TxMessagesEx

Transmits messages longer than 8 bytes to vehicle networks using a neoVI or ValueCAN device. Used with Ethernet and CAN FD

WaitForRxMessagesWithTimeOut

Waits a specified amount of time in milliseconds for a received message

GetTimeStampForMSG

Calculates the timestamp for a message given the handle to the device and a Message Structure

GetConfiguration

Reads the configuration bytes for a neoVI Blue or ValueCAN device

SendConfiguration

Sends configuration bytes to a neoVI Blue or ValueCAN device

GetFireSettings

Gets device and network parameters for a neoVI Fire device

SetFireSettings

Sets device and network parameters for a neoVI Fire device

GetFIRE2Settings

Gets device and network parameters for a neoVI Fire 2 device

GetLastAPIError

Returns the error generated by the last intrepidcs API call

GetErrorMessages

Returns the intrepidcs API error message queue

GetErrorInfo

Returns a text description of an intrepidcs API error

ValidateHObject

Used to determine if an hObject reference is valid

GetDLLVersion

Returns DLL version information

StartSockServer

Starts the TCP/IP socket server at a specified port.

StopSockServer

Stops the TCP/IP socket server

GetPerformanceParameters

Returns information on performance of dll and hardware

ScriptStart

Starts execution of a script that has been downloaded to a neoVI device

ScriptStop

Stops execution of a script running on a neoVI device

ScriptLoad

Downloads a script to a connected neoVI device into a specified location

ScriptClear

Clears a script from a specific location on a neoVI device

ScriptStartFBlock

Starts a function block within a script on a neoVI device

OpenPortEx

Use OpenNeoDevice instead

OpenPort

Use OpenNeoDevice instead

EnableNetworkCom

It is no longer necessary to call this before and after calling SendConfiguration

FindAllUSBDevices

No longer supported. It is present in the API but will always return 0

ScriptReadRxMessage

Reads parameters for a receive message defined in a script on a neoVI device

FindDevices
OpenNeoDevice
ClosePort
FreeObject

ScriptReadTxMessage

Network
Value

HS CAN

1

MS CAN

2

HS CAN 2

4

HS CAN 3

8

SW CAN

16

HS CAN 4

Return Values

None.

Remarks

None.

Examples

Public Declare Function icsneoISO15765_EnableNetworks Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByVal Network As UInt32) As Int32
void _stdcall icsneoISO15765_EnableNetworks(void * hObject, unsigned int iNetwork);
[DllImport(“icsneo40.dll”)]
public static extern Int32 icsneoISO15765_EnableNetworks (IntPtr hObject, UInt32 Network);
Return Values

Returns 1 if successful, 0 if an error occurred.

Remarks

This method returns the firmware version stored in the open neoVI device.

Examples

stAPIFirmwareInfo FirmwareInfo;
int iResult;

iResult = icsneoGetHWFirmwareInfo(m_hObject, &FirmwareInfo);
if(iResult == 0)
{
    MessageBox::Show("Problem getting the neoVI's firmware information");
    
stAPIFirmwareInfo FirmwareInfo = new stAPIFirmwareInfo();
int iResult;

iResult = icsNeoDll.icsneoGetHWFirmwareInfo(m_hObject, ref FirmwareInfo);
if(iResult == 0)
{
    
Dim FirmwareInfo As stAPIFirmwareInfo
Dim iResult As Integer

iResult = icsneoGetHWFirmwareInfo(m_hObject, FirmwareInfo)
If iResult = 0 Then
    MsgBox("Problem getting the neoVI's firmware information")
    Exit Sub
End If
Public Declare Function icsneoGetHWFirmwareInfo Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByRef pInfo As stAPIFirmwareInfo) As Integer
OpenNeoDevice
stAPIFirmwareInfo
int _stdcall icsneoGetHWFirmwareInfo(void * hObject, stAPIFirmwareInfo *pInfo);
[DllImport(“icsneo40.dll”)] public static extern int icsneoGetHWFirmwareInfo(intPtr hObject, ref stAPIFirmwareInfo pInfo);
Remarks

A driver object will be invalid if it was never initialized by OpenNeoDevice. Calling ClosePort will not invalidate a driver object; only FreeObject will do so.

Examples

if(Convert::ToBoolean(icsneoValidateHObject(m_hObject)))
{
    cmdCheckHardwareHandle->Text = "Good";
}
else
{
    cmdCheckHardwareHandle->Text = "Lost";
if (Convert.ToBoolean (icsNeoDll.icsneoValidateHObject(m_hObject)))
{
    cmdCheckHardwareHandle.Text = "Good";
}
else
{
    cmdCheckHardwareHandle.Text =
If (CBool(icsneoValidateHObject(m_hObject))) Then
    cmdCheckHardwareHandle.Text = "Good"
Else
    cmdCheckHardwareHandle.Text = "Lost"
End If
Public Declare Function icsneoValidateHObject Lib “icsneo40.dll” (ByVal hObject As IntPtr) As Integer
OpenNeoDevice
int _stdcall icsneoValidateHObject(void * hObject);
[DllImport(“icsneo40.dll”)] public static extern int icsneoValidateHObject(IntPtr hObject);
Return Values

1 if the function succeeded. 0 if it failed for any reason. GetLastAPIError must be called to obtain the specific error.

Remarks

The specified hardware must support a DoIP activation line

Examples

int iRetVal;
bool bState;

bState = true;
iRetVal = icsneoEnableDOIPLine(hObject,bState);
if(iRetVal == 0)
{
    printf("\nFailed to set DoIP Act"
int iResult;
bool bState;

//Set the bit rate
iResult = icsNeoDll.icsneoEnableDOIPLine(m_hObject,bState);
if (iResult == 0)
{
    MessageBox.Show("Problem setting DoIP Act");
}
Public Declare Function icsneoEnableDOIPLine Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByVal bActivate As Boolean) As Int32
OpenNeoDevice
int _stdcall icsneoEnableDOIPLine(void* hObject, bool bActivate);
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoEnableDOIPLine(IntPtr hObject, bool bActivate);

Downloads a script to a connected neoVI device into a specified location

Clears a script from a specific location on a neoVI device

Starts a function block within a script on a neoVI device

Returns the run status of a function block within a script on a neoVI device

Stops the execution of a function block within a script on a neoVI device

Stops the execution of a function block within a script on a neoVI device

Read an application signal from a script running on a neoVI device

Set the value of an application signal in a script running on a neoVI device

ScriptStart

Starts execution of a script that has been downloaded to a neoVI device

ScriptStop

Stops execution of a script running on a neoVI device

Gets individual parameters for a neoVI device

Sets individual parameters for a neoVI device

Sets callback function pointers for use when flashing a neoVI

Clears callback function pointers for flashing a neoVI

SetBitRate

Set the baud or bit rate for a specific neoVI network

GetHWFirmwareInfo

Gets the firmware version of a neoVI device

GetDLLFirmwareInfo

Gets the firmware version stored in the DLL API

ForceFirmwareUpdate

Forces the firmware to updated on a neoVI device

GetVCAN4Settings Method - neoVI API

This method reads the configuration settings from a ValueCAN4-4 device.

int _stdcall icsneoGetVCAN4Settings(void * hObject, SVCAN4Settings *pSettings, int iNumBytes);
Public Declare Function icsneoGetVCAN4Settings Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByRef pSettings As SVCAN4Settings, ByVal iNumBytes As Int32) As Int32
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoGetVCAN4Settings(IntPtr hObject, ref SVCAN4Settings pSettings, Int32 iNumBytes);

Parameters

hObject __ [in] Specifies the driver object created by OpenNeoDevice.

pSettings [out] Pointer to a SVCAN4Settings structure.

iNumBytes [in] This value is always the size, in bytes, of the SVCAN4Settings structure.

Return Values

Returns 1 if successful, 0 if an error occurred. must be called to obtain the specific error. The errors that can be generated by this function are: NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE = 75

Remarks

After getting the current settings, you may change the parameters defined in the structure and write the settings back to the ValueCAN 4-4 using .

Examples

SetRADGalaxySettings Method - neoVI API

This method reads the configuration settings from a RAD Galaxy device.

int _stdcall icsneoSetRADGalaxySettings(void * hObject, SRADGalaxySettings *pSettings, int iNumBytes, int bSaveToEEPROM);
Public Declare Function icsneoSetRADGalaxySettings Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByRef pSettings As SRADGalaxySettings, ByVal iNumBytes As Int32, ByVal bSaveToEEPROM As Int32) As Int32
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoSetRADGalaxySettings(IntPtr hObject, ref SRADGalaxySettings pSettings, Int32 iNumBytes, Int32 bSaveToEEPROM);

Parameters

hObject

[in] Specifies the driver object created by OpenNeoDevice.

pSettings

[in] The address of an allocated SRADGalaxySettings structure.

iNumBytes

[in] This value is always the size, in bytes, of the structure.

bSaveToEEPROM

[in] If set to 0, the settings changes will revert to the values stored in EEPROM when the ValueCAN3 is power-cycled. If set to 1, the values will overwrite the EEPROM settings and become persistent across power-cycles of the ValueCAN3.

Return Values

Returns 1 if successful, 0 if an error occurred. must be called to obtain the specific error. The errors that can be generated by this function are:

NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE = 75

Remarks

Before using this function, the structure must be initialized with the current neoVI settings using .

Examples

SetFDBitRate Method - neoVI API

This method sets bit rates for networks on neoVI devices

int _stdcall icsneoSetFDBitRate(void * hObject, int iBitRate, int iNetworkID);
Public Declare Function icsneoSetFDBitRate Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByVal BitRate As Int32, ByVal NetworkID As Int32) As Int32
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoSetFDBitRate(IntPtr hObject, Int32 BitRate, Int32 NetworkID);

Parameters

hObject

[in] Specifies the driver object created by OpenNeoDevice.

iBitRate

[in] Specifies bit rate setting. Valid values depend on the network specified.

For the networks HSCAN, MSCAN, HSCAN2, HSCAN3, HSCAN4, HSCAN5, HSCAN6, and HSCAN7 valid bit rates are 1000000, 2000000, 4000000, 5000000, 8000000,and 10000000

iNetworkID

[in] Specifies the network. The valid values are:

NETID_HSCAN, NETID_MSCAN, NETID_HSCAN2, NETID_HSCAN3, NETID_HSCAN4, NETID_HSCAN5, NETID_HSCAN6, and NETID_HSCAN7

These values are defined in the icsnVC40.h file

Return Values

1 if the function succeeded. 0 if it failed for any reason. must be called to obtain the specific error. The errors that can be generated by this function are:

NEOVI_ERROR_DLL_INVALID_NETID = 8

NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE = 75

NEOVI_ERROR_DLL_RED_INVALID_BAUD_SPECIFIED = 122

NEOVI_ERROR_DLL_SEND_DEVICE_CONFIG_ERROR = 229

NEOVI_ERROR_DLL_GET_DEVICE_CONFIG_ERROR = 230

NEOVI_ERROR_DLL_UNKNOWN_NEOVI_TYPE = 231

Remarks

The specified network must exist on the connected neoVI device.

Examples

GetDeviceParameters Method - neoVI API

This method forces the firmware on neoVI device to be updated.

int _stdcall icsneoGetDeviceParameters(void * hObject, char *pParameters, char *pValues, short ValuesLength);
Public Declare Function icsneoGetDeviceParameters Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByRef pParameters As Byte, ByRef pValues As Byte, ByVal ValuesLength As short) As Integer
[DllImport(“icsneo40.dll”)] public static extern int icsneoGetDeviceParameters(IntPtr hObject, ref byte pParameters, ref byte pValues, short ValuesLength);

Parameters

hObject

[in] Specifies the driver object created by OpenNeoDevice.

pParameters

[in] This is an array containing parameter names. Each parameter is separated by a comma. The parameter names are matched without regard to case. All spaces are ignored. The size of this array must be 1024 bytes or less. The format of the array is:

ParameterName,ParameterName, , …

See for a list of parameter names for each device and supported network.

See examples below on how to build a parameter string.

pValues

[out] This array will contain the values requested in the pParameters array. The values will be separated by comma’s and in the order of the parameter names specified in the pParameters array. If a parameter name is not recognized the word “Error” will be placed in that value’s location. If the pValues array length (specified by the ValuesLength parameter) is not long enough to store all of the values, the retrieval of parameter values will end and only a portion of the values will have be read and stored. The return value of the function, if greater than 0, will indicate the number of values read.

Return Values

-1 if there was an error while reading parameter values from the device. A return value greater than 0 indicates the total number of parameters read. A return value of 0 indicates that ValueLength was greater than 1024. must be called to obtain the specific error. The errors that can be generated by this function are:

NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE = 75

Remarks

It is ineffecient to use this function to read one parameter value at a time. If multiple parameters need to be read, combine them into a long string and call this function once.

Examples

GetDLLFirmwareInfo Method - neoVI API

int _stdcall icsneoGetDLLFirmwareInfo(void * hObject, stAPIFirmwareInfo *pInfo);
Public Declare Function icsneoGetDLLFirmwareInfo Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByRef pInfo As stAPIFirmwareInfo) As Integer
[DllImport(“icsneo40.dll”)] public static extern int icsneoGetDLLFirmwareInfo(IntPtr hObject, ref stAPIFirmwareInfo pInfo);

Parameters

hObject

[in] Specifies the driver object created by OpenNeoDevice.

pInfo

[out] Pointer to an stAPIFirmwareInfo structure.

Return Values

Returns 1 if successful, 0 if an error occurred.

Remarks

This method returns the version information for the neoVI firmware stored within the neoVI DLL API. This is the version that will be written to the neoVI device by the method.

Examples

Setting Structures Overview - neoVI API

Setting Structure
Use

neoVI FIRE

neoVI FIRE 2

ValueCAN 3

ValueCAN 4-1 and ValueCAN 4-2

GetTimeStampForMsg Method - neoVI API

This method calculates the timestamp for a message, based on the connected hardware type, and converts it to a usable variable.

int _stdcall icsneoGetTimeStampForMsg(void * hObject, icsSpyMessage *pMsg, icsSpyMessage *pMsg, double *pTimeStamp);
Public Declare Function icsneoGetTimeStampForMsg Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByRef pMsg As icsSpyMessage, ByRef pTimeStamp As Double) As Int32
[DllImport(“icsneo40.dll”)] public static extern IntPtr icsneoGetTimeStampForMsg(Int32 hObject, ref icsSpyMessage pMsg, ref double pTimeStamp);

Parameters

hObject

[in] Specifies the driver object created by OpenNeoDevice.

pMsg

[in] The message to be used for calculating timestamp.

pTimeStamp

[out] The calculated timestamp.

Return Values

Returns 1 if successful, 0 if an error occurred. must be called to obtain the specific error. The errors that can be generated by this function are:

NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE = 75

Remarks

Different models of neoVI devices have different time resolutions. This function uses the proper formula to calculate a timestamp based on the connected device type.

Examples

OpenPortEx Hardware Type Information - neoVI API

This topic discusses which port type can be used with what type of hardware.

A required parameter for the OpenPortEx command is the Port type. Each type is and the hardware it supports is listed below.

Port type type
Applicable hardware
Notes

RS232

  • neoVI Blue (USB or RS232 connection)

  • neoVI Pro (USB or RS232 connection)

  • neoVI Green (RS232)

  • ValueCAN

Devices that use a USB connection listed here have a virtual COM port connection to the PC even though it is connected to the USB port on the PC.

USB

Structures, Types, and Defines Overview - neoVI API

Item
Description

List of Structures for configuring different hardware devices

Structure used by FindNeoDevices and OpenNeoDevice to locate and open neoVI devices

Structure used by FindDevices to find hardware devices

Structure that contains information about neoVI device firmware versions

ScriptStop Method - neoVI API

This method stops the execution of a script that is running on a neoVI device.

int _stdcall icsneoScriptStop(void * hObject);
Public Declare Function icsneoScriptStop Lib “icsneo40.dll” (ByVal hObject As IntPtr) As Int32
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoScriptStop(IntPtr hObject);

Parameters

hObject

[in] Specifies the driver object created by OpenNeoDevice.

Return Values

1 if the function succeeded. 0 if it failed for any reason. GetLastAPIError must be called to obtain the specific error.

Remarks

If a script is executing on the neoVI calling this method will stop it. The script will still be present on the device and can be started again by The errors that can be generated by this function are:

NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE = 75

NEOVI_ERROR_DLL_SCRIPT_NO_SCRIPT_RUNNING = 226

Examples

ForceFirmwareUpdate Method - neoVI API

This method forces the firmware on neoVI device to be updated.

void _stdcall icsneoForceFirmwareUpdate(void * hObject);
Public Declare Function icsneoForceFirmwareUpdate Lib “icsneo40.dll” (ByVal hObject As IntPtr)
[DllImport(“icsneo40.dll”)] public static extern void icsneoForceFirmwareUpdate(IntPtr hObject);

Parameters

hObject

[in] Specifies the driver object created by OpenNeoDevice.

Return Values

int.

Remarks

This method is used to force the firmware on a neoVI device to be updated to the version stored in the DLL API.

Examples

Message Functions Overview - neoVI API

Name
Description

Reads messages from the neoVI device.

Transmits messages to vehicle networks using a neoVI device.

Transmits messages to vehicle networks using a neoVI device. Used with CAN FD and Ethernet

Waits a specified amount of time in milliseconds for a received message

Deprecated Functions Overview - neoVI API

Name
Description

Use OpenNeoDevice

OpenPort

Use OpenNeoDevice

It is no longer necessary to call this before and after calling SendConfiguration

No longer supported. It is present in the API but will always return 0

WaitForRxMessagesWithTimeOut Method - neoVI API

This method is used to wait a specified amount of time for received messages from the neoVI hardware.

Parameters

hObject

[in] Specifies the driver object created by .

iTimeOut

[in] Specifies the amount of time in milliseconds that the function will wait for a received message before returning.

GetFIRE2Settings Method - neoVI API

This method reads the configuration settings from a neoVI FIRE 2 device.

Parameters

hObject

[in] Specifies the driver object created by .

pSettings

[out] Pointer to a structure.

GetVCAN3Settings Method - neoVI API

This method reads the configuration settings from a ValueCAN3 device.

Parameters

hObject

[in] Specifies the driver object created by .

pSettings

[out] Pointer to a structure.

GetRADGalaxySettings Method - neoVI API

This method reads the configuration settings from a RAD Galaxy device.

Parameters

hObject

[in] Specifies the driver object created by .

pSettings

[out] Pointer to a structure.

SetFireSettings Method - neoVI API

This method writes configuration settings to a neoVI Fire device.

Parameters

hObject

[in] Specifies the driver object created by .

pSettings

[out] Pointer to an structure.

ScriptStart Method - neoVI API

This method starts the execution of a script that has been downloaded to a neoVI device.

Parameters

hObject

[in] Specifies the driver object created by .

iLocation

[in] Specifies the physical location of the script to be executed on the neoVI device. Valid values are:

ScriptWriteAppSignal Method - neoVI API

This method is used to set the value of an application signal in a script running on a neoVI device.

Parameters

hObject

[in] Specifies the driver object created by .

iIndex

[in] The index value of the application signal.

GetErrorMessages Method - neoVI API

This method reads the neoVI DLL error message queue.

Parameters

hObject

[in] Specifies the driver object created with .

pErrorMsgs

[out] This is the address of the first element of an array of long variables of at least 600 elements. This array will be loaded with the current error queue. The error queue will contain errors generated by all threads, not just the current thread. A separate topic describes the possible values for

lResult = icsneoISO15765_EnableNetworks(m_hObject,NETID_HSCAN);
lResult = icsNeoDll.icsneoISO15765_EnableNetworks(m_hObject,(int)eNETWORK_ID.NETID_HSCAN);
lResult = icsneoISO15765_EnableNetworks(m_hObject, NETID_HSCAN)
Dim iResult As Integer
Dim bState As Boolean
'//Set the bit rate
iResult = icsneoEnableDOIPLine(m_hObject,bState)
If (iResult = 0) Then MsgBox("Problem setting DoIP Act")
return
;
}
MessageBox
.
Show
(
"Problem getting the neoVI's firmware information"
);
return;
}
}
"Lost"
;
}
);
}
else
{
printf("\nSuccessfully set DoIP Act");
}

20

HS CAN 5

24

HS CAN 6

28

HS CAN 7

32

SW CAN 2

36

  • neoVI Green

These devices use the USB Port type

TCP/IP

  • neoVI Blue

  • neoVI Pro

  • neoVI Green

  • ValueCAN

All ICS devices can be connected via a TCP/IP connection using a second PC as a gateway.

ISO15765EnableNetworks
ISO15765TxMessage
ICS15765RxMessage
Transmitting Long Messages
SetFIRE2Settings
GetVCAN3Settings
SetVCAN3Settings
GetVCAN412Settings
SetVCAN412Settings
GetVCANRFSettings
SetVCANRFSettings
GetRADGalaxySettings
SetRADGalaxySettings
SetBitRate
GetHWFirmwareInfo
GetDLLFirmwareInfo
ForceFirmwareUpdate
GetDeviceParameters
SetDeviceParameters
SetReflashDisplayCallbacks
ClearReflashDisplayCallbacks
GetRTC
SetRTC
ScriptGetFBlockStatus
ScriptStopFBlock
ScriptGetScriptStatus
ScriptReadAppSignal
ScriptWriteAppSignal
ScriptLoad
ScriptClear
ScriptStartFBlock
ScriptGetFBlockStatus
ScriptStopFBlock
ScriptGetScriptStatus
ScriptReadAppSignal
ScriptWriteAppSignal
GetDeviceParameters
SetDeviceParameters
SetReflashDisplayCallbacks
ClearReflashDisplayCallbacks

SVCAN4Settings

ValuecAN 4-4 and ValueCAN 4-2EL

SVCANRFSettings

ValueCAN RF

SRADGalaxySettings

RAD Galaxy

SRADPlutoSettings

RAD Pluto

SRADSuperMoonSettings

Rad SuperMoon

SRADMoon2Settings

Rad Moon2

SDeviceSettings

Multiple devices

SFireSettingsStructure
SFire2Settings
SVCAN3SettingsStructure
SVCAN412Settings

Message Structures

Message structures used for reading and writing vehicle network messages

StatusBitFields

Status bitfields in the Message Structures that define specific attributes of the message

stCM_ISO157652_TxMessage

Message Structure for Transmit ISO15765 packets

stCM_ISO157652_RxMessage

Message Structure for Receive ISO15765 packets

Setting Structures for hardware
NeoDevice
NeoDeviceEx
stAPIFirmwareInfoStructure

GetTimeStampForMsg

Calculates and returns the timestamp for a message

ISO15765 Functions

Functions for ISO15765 transactions.

Transmitting Long Messages

Example for sending longer (<12 bytes) ISO9141/KW2K Messages

GetMessages
TxMessages
TxMessagesEx
WaitForRxMessagesWithTimeOut

FindAllCOMDevices

Use FindNeoDevices instead

FindNeoDevices

Use FindDevices instead

OpenPortEx
EnableNetworkCom
FindAllUSBDevices
ForceFirmwareUpdate
Dim FirmwareInfo As stAPIFirmwareInfo
Dim iResult As Integer

iResult = icsneoGetDLLFirmwareInfo(m_hObject, FirmwareInfo)
If iResult = 0 Then
    MsgBox("Problem getting the version of the firmware stored within the DLL API")
    Exit Sub
End If
stAPIFirmwareInfo FirmwareInfo;
int iResult;

iResult = icsneoGetDLLFirmwareInfo(m_hObject, &FirmwareInfo);
if(iResult == 0)
{
    MessageBox::Show("Problem getting the version of the firmware stored within the DLL API");
    return;
}
stAPIFirmwareInfo FirmwareInfo = new stAPIFirmwareInfo();
int iResult;

iResult = icsNeoDll.icsneoGetDLLFirmwareInfo(m_hObject, ref FirmwareInfo);
if(iResult == 0)
{
    MessageBox.Show("Problem getting the version of the firmware stored within the DLL API");
    return;
}
GetLastAPIError
Dim iResult As Integer
Dim dTimeStamp As Double
icsSpyMessage Msg;

iResult = icsneoGetTimeStampForMsg(m_hObject, Msg, dTimeStamp)
int hObject;
int iResult;
double dTimeStamp;
icsSpyMessage Msg;

iResult = icsneoGetTimeStampForMsg(m_hObject, &Msg, &dTimeStamp);
int iResult;
long lTimeStamp;
icsSpyMessage Msg;

iResult = icsNeoDll.icsneoGetTimeStampForMsg(m_hObject, ref Msg, ref dTimeStamp);
Call icsneoForceFirmwareUpdate(m_hObject)
icsneoForceFirmwareUpdate(hObject);
icsNeoDll.icsneoForceFirmwareUpdate(m_hObject);
iNumBytes

[in] This value is always the size, in bytes, of the SFireSettings structure.

bSaveToEEPROM

[in] If set to 0, the settings changes will revert to the values stored in EEPROM when the neoVI is power-cycled. If set to 1, the values will overwrite the EEPROM settings and become persistent across power-cycles of the neoVI.

Return Values

Returns 1 if successful, 0 if an error occurred. GetLastAPIError must be called to obtain the specific error. The errors that can be generated by this function are:

NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE = 75

Remarks

Before using this function, the SFireSettings structure must be initialized with the current neoVI settings using GetFireSettings.

Examples

Public Declare Function icsneoSetFireSettings Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByRef pSettings As SFireSettings , ByVal iNumBytes As Int32, ByVal bSaveToEEPROM As Int32) As Int32
OpenNeoDevice
SFireSettings
int _stdcall icsneoSetFireSettings(void * hObject, SFireSettings *pSettings, int iNumBytes, int bSaveToEEPROM);
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoSetFireSettings(IntPtr hObject, ref SFireSettings pSettings, Int32 iNumBytes, Int32 bSaveToEEPROM);
SCRIPT_LOCATION_FLASH_MEM = 0 (Valid only on a neoVI Fire or neoVI Red)SCRIPT_LOCATION_SDCARD = 1 (Valid only on a neoVI Fire or neoVI Red)SCRIPT_LOCATION_VCAN3_MEM = 2 (Valid only on a ValueCAN 3 device)

These values are defined in the icsnVC40.h file

Return Values

1 if the function succeeded. 0 if it failed for any reason. GetLastAPIError must be called to obtain the specific error. The errors that can be generated by this function are:

NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE = 75

NEOVI_ERROR_DLL_INVALID_SCRIPT_LOCATION = 213

NEOVI_ERROR_DLL_SDCARD_NOT_INSERTED = 214

NEOVI_ERROR_DLL_SCRIPT_START_ERROR = 218

Remarks

The script must have been successfully downloaded to the neoVI using LoadScript. Use ScriptStop to suspend execution of the script. If the connected device is a ValueCAN 3 and a location other than SCRIPT_LOCATION_VCAN3_MEM will generate an error.

Examples

Public Declare Function icsneoScriptStart Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByVal iLocation As Int32) As Int32
OpenNeoDevice
int _stdcall icsneoScriptStart(void * hObject, int iLocation);
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoScriptStart(IntPtr hObject, Int32 iLocation);
GetLastAPIError
SVCAN4Settings
SetVCAN4Settings
SVCAN4Settings VcanReadSettings;
int iNumberOfBytes;
int iResult;

//Get the settings
iNumberOfBytes=sizeof(VcanReadSettings );
iResult = icsneoGetVCAN4Settings(m_hObject, &VcanReadSettings , iNumberOfBytes);
if(iResult == 0)
{
    MessageBox::Show("Problem reading configuration");
    return;
}
//Declared at form level and previously open with a call to OpenNeoDevice
IntPtr m_hObject; //handle for device,
SVCAN4Settings VcanReadSettings = new SVCAN4Settings();
int iNumberOfBytes;
int iResult;

//Get the settings
iNumberOfBytes = System.Runtime.InteropServices.Marshal.SizeOf(VcanReadSettings);
iResult = icsNeoDll.icsneoGetVCAN4Settings(m_hObject,ref VcanReadSettings , iNumberOfBytes);
if (iResult == 0)
{
    MessageBox.Show("Problem reading configuration");
    return;
}
SRADGalaxySettings
GetLastAPIError
SRADGalaxySettings
GetRADGalaxySettings
GetLastAPIError
Valid Parameters
GetLastAPIError
ScriptStart
int iRetVal;
unsigned long lLastErrNum;

iRetVal = icsneoScriptStop(m_hObject);
if(iRetVal == 0)
{
    printf("Failed to Stop the script API Error\n");
}
else
{
    printf("Successfully stopped the script\n");
}
Int32 iResult;

//Stop CoreMini
iResult = icsNeoDll.icsneoScriptStop(m_hObject);

if(iResult == 0)
{
    lblCMStatus.Text = "CoreMini Failed to Stop";
}
else
{
    lblCMStatus.Text = "CoreMini Stopped";
}
SFireSettings FireReadSettings;
int iNumberOfBytes;
int iResult;

//################################
//FireReadSettings struct is read
//and changed as needed before
//Setting the new values
//################################

iNumberOfBytes=sizeof(SFireSettings);
iResult = icsneoSetFireSettings(m_hObject, &FireReadSettings, iNumberOfBytes, 1);
if(iResult == 0)
{
    MessageBox::Show("Problem Sending FIRE configuration");
    return;
}
SFireSettings FireReadSettings = new SFireSettings();
int iNumberOfBytes;
int iResult;

//################################
//FireReadSettings struct is read
//and changed as needed before
//Setting the new values
//################################

iNumberOfBytes = System.Runtime.InteropServices.Marshal.SizeOf(VcanReadSettings);
iResult = icsNeoDll.icsneoSetFireSettings(m_hObject, ref FireReadSettings, iNumberOfBytes, 1);
if(iResult == 0)
{
    MessageBox.Show("Problem Sending FIRE configuration");
    return;
}
Dim FireReadSettings As SFireSettings
Dim iNumberOfBytes As Integer
Dim iResult As Integer

'//################################
'//FireReadSettings struct is read
'//and changed as needed before
'//Setting the new values
'//################################

iNumberOfBytes = System.Runtime.InteropServices.Marshal.SizeOf(VcanReadSettings)
iResult = icsneoSetFireSettings(m_hObject, FireReadSettings, iNumberOfBytes, 1)
If iResult = 0 Then
    MsgBox("Problem Sending FIRE configuration")
    Exit Sub
End If
int iRetVal;
unsigned long lLastErrNum;

printf("Attempting to start the script\n");
iRetVal = icsneoScriptStart(hObject, DefaultScriptLocation);
if(iRetVal == 0)
{
    printf("Failed to start the script API Error\n");
}
else
{
    printf("Successfully started the script\n");
}
Int32 iResult;

//Start CoreMini
iResult = icsNeoDll.icsneoScriptStart(m_hObject, Convert.ToInt32(CoreMiniStoreLocation.SCRIPT_LOCATION_FLASH_MEM));

if(iResult == 0)
{
    lblCMStatus.Text = "CoreMini Failed to Start";
}
else
{
    lblCMStatus.Text = "CoreMini Started";
}
Dim iResult As Int32

'//Start CoreMini
iResult = icsneoScriptStart(m_hObject, SCRIPT_LOCATION_FLASH_MEM)

If iResult = 0 Then
    lblCMStatus.Text = "CoreMini Failed to Start"
Else
    lblCMStatus.Text = "CoreMini Started"
End If
Private m_hObject As IntPtr '// Declared at form level and previously open with a call to OpenNeoDevice

Dim VcanReadSettings As SVCAN4Settings
Dim iNumberOfBytes As Integer
Dim iResult As Integer

'//Get the settings
iNumberOfBytes = System.Runtime.InteropServices.Marshal.SizeOf(VcanReadSettings)
iResult = icsneoGetVCAN4Settings(m_hObject, VcanReadSettings , iNumberOfBytes)
If iResult = 0 Then
    MsgBox("Problem reading configuration")
    Exit Sub
End If
SRADGalaxySettings RADGalaxyReadSettings;
int iNumberOfBytes;
int iResult;

iNumberOfBytes=sizeof(RADGalaxyReadSettings );
iResult = icsneoSetRADGalaxySettings(m_hObject, &RADGalaxyReadSettings , iNumberOfBytes, 1);
if(iResult == 0)
{
    MessageBox::Show("Problem Sending configuration");
    return;
}
SRADGalaxySettings RADGalaxyReadSettings = new RADGalaxyReadSettings();
int iNumberOfBytes;
int iResult;

iNumberOfBytes = System.Runtime.InteropServices.Marshal.SizeOf(RADGalaxyReadSettings);
iResult = icsNeoDll.icsneoSetRADGalaxySettings(m_hObject, ref RADGalaxyReadSettings , iNumberOfBytes, 1);

if(iResult == 0)
{
    MessageBox.Show("Problem Sending configuration");
    return;
}
Dim RADGalaxyReadSettings As SRADGalaxySettings
Dim iNumberOfBytes As Integer
Dim iResult As Integer

iNumberOfBytes = System.Runtime.InteropServices.Marshal.SizeOf(RADGalaxyReadSettings)
iResult = icsneoSetRADGalaxySettings(m_hObject, RADGalaxyReadSettings , iNumberOfBytes, 1)

If iResult = 0 Then
    MsgBox("Problem Sending configuration")
    Exit Sub
End If
int iRetVal;

iRetVal = icsneoSetFDBitrate(hObject, 5000000, NETID_HSCAN);
if(iRetVal == 0)
{
    printf("\nFailed to set the bit rate");
}
else
{
    printf("\nSuccessfully set the bit rate");
}
int iResult;

//Set the bit rate
iResult = icsNeoDll.icsneoSetFDBitRate(m_hObject, 5000000, NETID_HSCAN);
if (iResult == 0)
{
    MessageBox.Show("Problem setting bit rate");
}
Dim iResult As Integer
'//Set the bit rate
iResult = icsneoSetFDBitRate(m_hObject, 5000000, NETID_HSCAN)
If (iResult = 0) Then MsgBox("Problem setting bit rate")
char pGetFireParms[] = "network_enables,can1/Mode,can1/Baudrate";
char Values[500];
int iRetVal;

iRetVal = icsneoGetDeviceParameters(hObject, pGetFireParms, Values, 499);
Dim iResult As Int32

'//Stop CoreMini
iResult = icsneoScriptStop(m_hObject)

If iResult = 0 Then
    lblCMStatus.Text = "CoreMini Failed to Stop"
Else
    lblCMStatus.Text = "CoreMini Stopped"
End If
Return Values

0 if no message was received during the wait period. 1 if a message was received. -1 will be returned if there is an error condition. GetLastAPIError must be called to obtain the specific error. The errors that can be generated by this function are:

NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE = 75

Remarks

This function allows an application to avoid ‘polling’ for received messages. It will return as soon as a message is received or when the timeout specified has been reached.

Examples

void * hObject = 0; // holds a handle to the neoVI object
icsSpyMessage stMessages[19999]; // holds the received messages
int iResult;
int iNumberOfErrors;
int iNumberOfMessages;
unsigned int iTimeOut = 5; //milliseconds
Public Declare Function icsneoWaitForRxMessagesWithTimeOut Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByVal iTimeOut As UInt32) As Int32
OpenNeoDevice
int _stdcall icsneoWaitForRxMessagesWithTimeOut(void * hObject, unsigned int iTimeOut);
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoWaitForRxMessagesWithTimeOut(IntPtr hObject, UInt32 iTimeOut);
iNumBytes

[in] This value is always the size, in bytes, of the SFIRE2Settings structure.

Return Values

Returns 1 if successful, 0 if an error occurred. GetLastAPIError must be called to obtain the specific error. The errors that can be generated by this function are:

NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE = 75

Remarks

After getting the current settings, you may change the parameters defined in the SFIRE2Settings structure and write the settings back to the neoVI FIRE 2 using SetFIRE2Settings.

Examples

SFIRE2Settings Fire2ReadSettings;
int iNumberOfBytes;
int iResult;

//Get the settings
iNumberOfBytes=sizeof(Fire2ReadSettings );
iResult = icsneoGetFIRE2Settings(m_hObject, &Fire2ReadSettings , iNumberOfBytes);
if(iResult == 0)
//Declared at form level and previously open with a call to OpenNeoDevice
IntPtr m_hObject; //handle for device,
SFIRE2Settings Fire2ReadSettings = new SFIRE2Settings ();
int iNumberOfBytes;
int iResult;

//Get the settings
iNumberOfBytes = System.Runtime.InteropServices
Public Declare Function icsneoGetFIRE2Settings Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByRef pSettings As SFIRE2Settings , ByVal iNumBytes As Int32) As Int32
OpenNeoDevice
SFIRE2Settings
int _stdcall icsneoGetFIRE2Settings(void * hObject, SFIRE2Settings *pSettings, int iNumBytes);
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoGetFIRE2Settings(IntPtr hObject, ref SFIRE2Settings pSettings, Int32 iNumBytes);
iNumBytes

[in] This value is always the size, in bytes, of the SVCAN3Settings structure.

Return Values

Returns 1 if successful, 0 if an error occurred. GetLastAPIError must be called to obtain the specific error. The errors that can be generated by this function are:

NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE = 75

Remarks

After getting the current settings, you may change the parameters defined in the SVCAN3Settings structure and write the settings back to the ValueCAN3 using SetVCAN3Settings.

Examples

SVCAN3Settings VcanReadSettings;
int iNumberOfBytes;
int iResult;

//Get the settings
iNumberOfBytes=sizeof(VcanReadSettings );
iResult = icsneoGetVCAN3Settings(m_hObject, &VcanReadSettings , iNumberOfBytes);
if(iResult == 0)
//Declared at form level and previously open with a call to OpenNeoDevice
IntPtr m_hObject; //handle for device,
SVCAN3Settings VcanReadSettings = new SVCAN3Settings();
int iNumberOfBytes;
int iResult;

//Get the settings
iNumberOfBytes = System.Runtime.InteropServices
Public Declare Function icsneoGetVCAN3Settings Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByRef pSettings As SVCAN3Settings, ByVal iNumBytes As Int32) As Int32
OpenNeoDevice
SVCAN3Settings
int _stdcall icsneoGetVCAN3Settings(void * hObject, SVCAN3Settings *pSettings, int iNumBytes);
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoGetVCAN3Settings(IntPtr hObject, ref SVCAN3Settings pSettings, Int32 iNumBytes);
iNumBytes

[in] This value is always the size, in bytes, of the SRADGalaxySettings structure.

Return Values

Returns 1 if successful, 0 if an error occurred. GetLastAPIError must be called to obtain the specific error. The errors that can be generated by this function are:

NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE = 75

Remarks

After getting the current settings, you may change the parameters defined in the SRADGalaxySettings structure and write the settings back to the RAD Galaxy using SetRADGalaxySettings.

Examples

SRADGalaxySettings RadGalaxyReadSettings;
int iNumberOfBytes;
int iResult;

//Get the settings
iNumberOfBytes=sizeof(RadGalaxyReadSettings );
iResult = icsneoGetRADGalaxySettings(m_hObject, &RadGalaxyReadSettings , iNumberOfBytes);
if(iResult == 0)
{
    MessageBox::Show("Problem reading configuration");
    return;
}
//Declared at form level and previously open with a call to OpenNeoDevice
IntPtr m_hObject; //handle for device,
SRADGalaxySettings RadGalaxyReadSettings = new SRADGalaxySettings();
int iNumberOfBytes;
int iResult;

//Get the settings
iNumberOfBytes = System.Runtime.InteropServices
Public Declare Function icsneoGetRADGalaxySettings Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByRef pSettings As SRADGalaxySettings, ByVal iNumBytes As Int32) As Int32
OpenNeoDevice
SRADGalaxySettings
int _stdcall icsneoGetRADGalaxySettings(void * hObject, SRADGalaxySettings *pSettings, int iNumBytes);
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoGetRADGalaxySettings(IntPtr hObject, ref SRADGalaxySettings pSettings, Int32 iNumBytes);
dValue

[in] The new value of the application signal.

Return Values

1 if the function succeeded. 0 if it failed for any reason. GetLastAPIError must be called to obtain the specific error. The errors that can be generated by this function are:

NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE = 75

NEOVI_ERROR_DLL_SCRIPT_INVALID_APPSIG_INDEX = 225

Remarks

The script containing the specified application signal must have been successfully downloaded to the neoVI using ScriptLoad. The script must also have been started using ScriptStart. This function will fail if ScriptStop has been called. The valid index values for application signals within a script can be found in the cmvspy.vs3cmb.h file that is produced by Vehicle Spy. Please see Vehicle Spy documentation.

Examples

int iRetVal;
unsigned long lLastErrNum;
double dValue;

dValue = 999;
iRetVal = icsneoScriptWriteAppSignal(hObject, App_Signal_1, dValue);
if(iRetVal == 0)
Int32 iResult;
Double ValueToSet;

//Set value to send
ValueToSet = Convert.ToDouble(txtAppSigVal.Text);

//Set App Signal
iResult = icsNeoDll.icsneoScriptWriteAppSignal(m_hObject, Convert
Public Declare Function icsneoScriptWriteAppSignal Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByVal iIndex As UInt32, ByRef dValue As Double) As Int32
OpenNeoDevice
int _stdcall icsneoScriptWriteAppSignal(void * hObject, unsigned int iIndex, double dValue);
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoScriptWriteAppSignal (IntPtr hObject, UInt32 iIndex, double dValue);
. You can get a text description of this error using
.

pNumberOfErrors

[out] Specifies the number of errors copied into the pErrorMsgs buffer. The maximum value will be 600.

Return Values

Returns 1 if successful, 0 on failure.

Remarks

The error queue will be reset after this method is called.

Examples

int iErrors[599];
int lResult;
int lNumberOfErrors;
TCHAR szOut[200];
long lCount;

// Read the errors from the DLL
lResult = icsneoGetErrorMessages(hObject,iErrors,&
Public Declare Function icsneoGetErrorMessages Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByRef pErrorMsgs As Int32, ByRef pNumberOfErrors As Int32) As Int32
OpenNeoDevice
int _stdcall icsneoGetErrorMessages(void * hObject, int *pErrorMsgs, int *pNumberOfErrors);
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoGetErrorMessages(IntPtr hObject, ref Int32 pErrorMsgs, ref Int32 pNumberOfErrors);
error messages
GetErrorInfo

OpenNeoDevice Method - neoVI API

This method returns the neoVI hardware devices connected to the PC.

int _stdcall icsneoOpenDevice(NeoDeviceEx* pNeoDeviceEx, void* hObject, unsigned char* bNetworkIDs, int bConfigRead, int iOptions, OptionsOpenNeoEx* stOptionsOpenNeoEx, unsigned long reserved)
Public Declare Function icsneoOpenDevice Lib "icsneo40.dll" (ByRef pNeoDeviceEx As NeoDeviceEx, ByRef hObject As IntPtr, ByRef bNetworkIDs As Byte, ByVal bConfigRead As Int32, ByVal iOptions As Int32, ByRef stOptionsOpenNeoEx As OptionsOpenNeoEx, ByVal Reserved As UInt32) As Int32
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoOpenDevice(ref NeoDeviceEx pNeoDeviceEx, ref IntPtr hObject, ref byte bNetworkIDs, Int32 bConfigRead,

Parameters

pNeoDevice

[in] A valid NeoDevice structure filled with information about a specific neoVI device. For C++ a “void*” can be used. For .NET, “IntPtr” is used. This must be obtained by calling FindNeoDevices.

hObject

[out] This parameter needs to be 32 bit in a 32 bit program and 64 bit in a 64 bit program. This will be set to the handle of the neoVI driver object that is created. It is needed as an input parameter to other API function calls. Every time you create a new neoVI object you must call and to avoid creating a memory and resource leak.

bNetworkIDs

[in] This is an array of number IDs which specify the NetworkID parameter of each network. This allows you to assign a custom network ID to each network. Normally, you will assign consecutive IDs to each of the networks. See for a list of current network ID’s. _ You may also set this parameter to NULL (zero) and the default network ID’s will be used._

bConfigRead

[in] Specifies whether the DLL should read the neoVI’s device configuration before enabling the device. It is recommended that this value be set to 1.

bSyncToPC

[in] Specifies whether timestamps for messages should be adjusted to the PC’s clock to compensate for time drift. This drift is caused by differences that occur over time between the clocks on the neoVI device and the PC.

Return Values

If the port has been opened successfully, the return value will be 1. Otherwise the return value will be zero.

Remarks

To connect to more than one piece of hardware, multiple calls to can be made. The key is to provide a different for each device you want to open. For other function calls, use the returned hObject to talk to that device.

Each successful call to should be matched with a call to a when you are finished accessing the hardware. methods.

Examples

SetVCAN4Settings Method - neoVI API

This method writes configuration settings to a ValueCAN4-4 device.

int _stdcall icsneoSetVCAN4Settings(void * hObject, SVCAN4Settings *pSettings, int iNumBytes, int bSaveToEEPROM);
Public Declare Function icsneoSetVCAN4Settings Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByRef pSettings As SVCAN4Settings, ByVal iNumBytes As Int32, ByVal bSaveToEEPROM As Int32) As Int32
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoSetVCAN4Settings(IntPtr hObject, ref SVCAN4Settings pSettings, Int32 iNumBytes, Int32 bSaveToEEPROM);

Parameters

hObject

[in] Specifies the driver object created by OpenNeoDevice.

pSettings

[in] The address of an allocated SVCAN4Settings structure.

iNumBytes

[in] This value is always the size, in bytes, of the structure.

bSaveToEEPROM

[in] If set to 0, the settings changes will revert to the values stored in EEPROM when the ValueCAN3 is power-cycled. If set to 1, the values will overwrite the EEPROM settings and become persistent across power-cycles of the ValueCAN4-4.

Return Values

Returns 1 if successful, 0 if an error occurred. must be called to obtain the specific error. The errors that can be generated by this function are:

NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE = 75

Remarks

Before using this function, the structure must be initialized with the current neoVI settings using .

Examples

GetConfiguration Method - neoVI API

This method reads the configuration from the hardware device. Note: This function is only to be used for neoVI Blue and ValueCAN. For neoVI Fire and neoVI Red use the GetFireSettings method. For ValueCAN3 use the GetVCAN3Settings method.

int _stdcall icsneoGetConfiguration(int hObject, unsigned char *pData, int *plNumBytes);
Public Declare Function icsneoGetConfiguration Lib "icsneo40.dll" (ByVal hObject As Int32, ByRef pData As Byte, ByRef lNumBytes As Int32) As Int32
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoGetConfiguration(Int32 hObject, ref byte pData, ref Int32 lNumBytes);

Parameters

hObject

[in] Specifies the driver object created with the OpenNeoDevice method.

pData

[out] Pointer to an array of 1024 bytes. Each index of the array corresponds to a configuration value. For a list of configuration values to change, please see the Configuration Array topic.

plNumBytes

[out] This will return the number of bytes written to the array. For the current version of the API this will be 1024 bytes.

Return Values

Returns 1 if successful, 0 if an error occurred. must be called to obtain the specific error. The errors that can be generated by this function are:

NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE = 75

Remarks

None.

Examples

Displays the Value of CNF1 of ValueCAN/neoVI HSCAN

GetVCAN412Settings Method - neoVI API

This method reads the configuration settings from a ValueCAN4-1 and ValueCAN4-2 device.

int _stdcall icsneoGetVCAN412Settings(void * hObject, SVCAN412Settings *pSettings, int iNumBytes);
Public Declare Function icsneoGetVCAN412Settings Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByRef pSettings As SVCAN412Settings, ByVal iNumBytes As Int32) As Int32
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoGetVCAN412Settings(IntPtr hObject, ref SVCAN412Settings pSettings, Int32 iNumBytes);

Parameters

hObject

[in] Specifies the driver object created by OpenNeoDevice.

pSettings

[out] Pointer to a SVCAN412Settings structure.

iNumBytes

[in] This value is always the size, in bytes, of the structure.

Return Values

Returns 1 if successful, 0 if an error occurred. must be called to obtain the specific error. The errors that can be generated by this function are:

NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE = 75

Remarks

After getting the current settings, you may change the parameters defined in the structure and write the settings back to the ValueCAN 4-1 and ValueCAN 4-2 using .

Examples

SetBitRate Method - neoVI API

This method sets bit rates for networks on neoVI devices

int _stdcall icsneoSetBitRate(void * hObject, int iBitRate, int iNetworkID);
Public Declare Function icsneoSetBitRate Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByVal BitRate As Int32, ByVal NetworkID As Int32) As Int32
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoSetBitRate(IntPtr hObject, Int32 BitRate, Int32 NetworkID);

Parameters

hObject

[in] Specifies the driver object created by OpenNeoDevice.

iBitRate

[in] Specifies bit rate setting. Valid values depend on the network specified.

For the networks NETID_HSCAN, NETID_MSCAN, NETID_SWCAN, NETID_FIRE_HSCAN2, NETID_HSCAN3, NETID_LSFTCAN, valid bit rates are 2000, 33333, 50000, 62500, 83333, 100000, 125000, 250000, 500000, 800000, 1000000

For the networks NETID_LIN, NETID_ISO2, NETID_FIRE_LIN2, NETID_FIRE_LIN3, NETID_FIRE_LIN4, valid bit rates are

For the network NETID_FIRE_CGI valid bit rates are 625000 and 115200

iNetworkID

[in] Specifies the network. The valid values are:

NETID_HSCAN, NETID_MSCAN, NETID_SWCAN, NETID_FIRE_HSCAN2, NETID_HSCAN3, NETID_LSFTCAN, NETID_LIN, NETID_ISO2, NETID_FIRE_LIN2, NETID_FIRE_LIN3, NETID_FIRE_LIN4, NETID_FIRE_CGI

These values are defined in the icsnVC40.h file

Return Values

1 if the function succeeded. 0 if it failed for any reason. must be called to obtain the specific error. The errors that can be generated by this function are:

NEOVI_ERROR_DLL_INVALID_NETID = 8

NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE = 75

NEOVI_ERROR_DLL_RED_INVALID_BAUD_SPECIFIED = 122

NEOVI_ERROR_DLL_SEND_DEVICE_CONFIG_ERROR = 229

NEOVI_ERROR_DLL_GET_DEVICE_CONFIG_ERROR = 230

NEOVI_ERROR_DLL_UNKNOWN_NEOVI_TYPE = 231

Remarks

The specified network must exist on the connected neoVI device.

Examples

ISO15765_ReceiveMessage Method - neoVI API

This method configures a receive message using ISO15765-2 on a CAN network. icsneoISO15765_EnableNetwroks must be called before using icsneoISO15765_ReceiveMessage. PCI bytes and Flow control decoding is taken care of by the dll for the transaction.

void _stdcall icsneoISO15765_ReceiveMessage(void * hObject, unsigned long ulNetworkID,stCM_ISO157652_RxMessage *pMsg);
Public Declare Function icsneoISO15765_ReceiveMessage Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByVal ulNetworkID As Integer, ByRef pMsg As stCM_ISO157652_RxMessage) As Int32
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoISO15765_ReceiveMessage(IntPtr hObject,Int32 ulNetworkID,ref stCM_ISO157652_RxMessage pMsg);

Parameters

hObject

[in] Handle which specifies the driver object created with the OpenPort method.

ulIndex [in] Specifies the Index to configure, 10 elements 0-9.

stCM_ISO157652_RxMessage

[in] This is the address of the structure. The structure contains the properties for the multi frame message transaction.

Return Values

None.

Remarks

None.

Examples

SetVCANRFSettings Method - neoVI API

int _stdcall icsneoSetVCANRFSettings(void * hObject, SVCANRFSettings *pSettings, int iNumBytes, int bSaveToEEPROM);
Public Declare Function icsneoSetVCANRFSettings Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByRef pSettings As SVCANRFSettings, ByVal iNumBytes As Int32, ByVal bSaveToEEPROM As Int32) As Int32
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoSetVCANRFSettings(IntPtr hObject, ref SVCANRFSettings pSettings, Int32 iNumBytes, Int32 bSaveToEEPROM);

Parameters

hObject

[in] Specifies the driver object created by OpenNeoDevice.

pSettings

[in] The address of an allocated SVCANRFSettings structure.

iNumBytes

[in] This value is always the size, in bytes, of the structure.

bSaveToEEPROM

[in] If set to 0, the settings changes will revert to the values stored in EEPROM when the ValueCAN RF is power-cycled. If set to 1, the values will overwrite the EEPROM settings and become persistent across power-cycles of the ValueCAN RF.

Return Values

Returns 1 if successful, 0 if an error occurred. must be called to obtain the specific error. The errors that can be generated by this function are:

NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE = 75

Remarks

Before using this function, the structure must be initialized with the current neoVI settings using .

Examples

FindNeoDevices Method - neoVI API

This method returns the neoVI hardware devices connected to the PC.

int _stdcall icsneoFindNeoDevices(unsigned long DeviceTypes, NeoDevice *pNeoDevices, int *pNumberOfDevices);
Public Declare Function icsneoFindNeoDevices Lib “icsneo40.dll” (ByVal DeviceTypes As UInt32, ByRef pNeoDevice As NeoDevice, ByRef pNumDevices As Int32) As Int32
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoFindNeoDevices(UInt32 DeviceTypes, ref NeoDevice pNeoDevice, ref Int32 pNumDevices);

Parameters

DeviceTypes

[in] Specifies the types of neoVI devices to find. Currently supported values are:

NEODEVICE_BLUE = 0x00000001

NEODEVICE_ECU_AVB = 0x00000002

NEODEVICE_DW_VCAN = 0x00000004

NEODEVICE_RADGIGALOG = 0x00000006

NEODEVICE_FIRE = 0x00000008

NEODEVICE_VCAN3 = 0x00000010

NEODEVICE_RED = 0x00000040

NEODEVICE_ECU = 0x00000080

NEODEVICE_IEVB = 0x00000100

NEODEVICE_PENDANT = 0x00000200

NEODEVICE_OBD2_PRO = 0x00000400

NEODEVICE_PLASMA = 0x00001000

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

Constants are defined in appropriate header or module. You may use logical OR to choose which devices to look for or use NEODEVICE_ALL to specify all devices.

pNeoDevices [out] This is the address of the first element of an array of structure. This array can be as big as 255 devices. You must specify the size of the pNeoDevices array in the pNumberOfDevices parameter. The number of devices found will be limited to the value of pNumberofDevices or 255, whichever is lower. Each returned NeoDevice structure will contain information for each device such as its type, device ‘handle’ and serial number.

pNumberOfDevices[in/out] In: Specifies the size of the pNeoDevices array. Must be in the range 0 to 255.

Out: Specifies the number of neo devices that were found. This can be in the range 0 to 255.

Return Values

1 if the function succeeded. 0 if it failed for any reason. If the function succeeds but no devices are found 1 will still be returned and pNumberOfDevices will equal 0.

Remarks

The NeoDevice array elements that are returned with this function may be passed to so that individual neoVI devices can be opened.

Examples

ScriptStartFBlock Method - neoVI API

This method starts the specified function block within a script on a neoVI device.

int _stdcall icsneoScriptStartFBlock(void * hObject, unsigned int iFunctionBlockIndex);
Public Declare Function icsneoScriptStartFBlock Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByVal fb_index As UInt32) As Int32
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoScriptStartFBlock(IntPtr hObject,UInt32 fb_index);

Parameters

hObject

[in] Specifies the driver object created by OpenNeoDevice.

iFunctionBlockIndex

[in] The index value of the function block to start

Return Values

1 if the function succeeded. 0 if it failed for any reason. must be called to obtain the specific error. The errors that can be generated by this function are:

NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE = 75

NEOVI_ERROR_DLL_SCRIPT_INVALID_FUNCBLOCK_INDEX = 219

NEOVI_ERROR_DLL_SCRIPT_NO_SCRIPT_RUNNING = 226

Remarks

The script containing the specified function block must have been successfully downloaded to the neoVI using . The valid index values for a function blocks within a script can be found in the cmvspy.vs3cmb.h file that is produced by Vehicle Spy. Please see Vehicle Spy documentation.

Examples

SRADSuperMoonSettings Structure

Structure defining the parameter in SRADSuperMoonSettings

typedef struct __declspec (align(2))
{
   uint16_t perf_en;
   OP_ETH_GENERAL_SETTINGS opEthGen;
   OP_ETH_SETTINGS opEth1;
   uint16_t network_enables;
   uint16_t network_enables_2;
   uint16_t network_enabled_on_boot;
   uint16_t network_enables_3;
<StructLayout(LayoutKind.Sequential, Pack:=2)> Public Structure SRADSuperMoonSettings
   Dim perf_en As UInt16
   Dim opEthGen As OP_ETH_GENERAL_SETTINGS
   Dim opEth1 As OP_ETH_SETTINGS
   Dim network_enables As UInt16
   Dim network_enables_2 As UInt16
   Dim network_enabled_on_boot As UInt16
   Dim network_enables_3 As UInt16
   Dim text_api As STextAPISettings
   Dim pc_com_mode As UInt16
   Dim timeSyncSettings As TIMESYNC_ICSHARDWARE_SETTINGS
   Dim hwComLatencyTestEn As UInt16
   Dim gPTP As RAD_GPTP_SETTINGS
End Structure

Remarks

Item
Description

perf_en

ScriptStopFBlock Method - neoVI API

This method stops the execution of a specified function block within a script on a neoVI device.

int _stdcall icsneoScriptStopFBlock(void * hObject, unsigned int iFunctionBlockIndex);
Public Declare Function icsneoScriptStopFBlock Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByVal fb_index As UInt32) As Int32
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoScriptStopFBlock(IntPtr hObject,UInt32 fb_index);

Parameters

hObject

[in] Specifies the driver object created by OpenNeoDevice.

iFunctionBlockIndex

[in] The index value of the function block to stop

Return Values

1 if the function succeeded. 0 if it failed for any reason. must be called to obtain the specific error. The errors that can be generated by this function are:

NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE = 75

NEOVI_ERROR_DLL_SCRIPT_INVALID_FUNCBLOCK_INDEX = 219

NEOVI_ERROR_DLL_SCRIPT_NO_SCRIPT_RUNNING = 226

Remarks

The script containing the specified function block must have been successfully downloaded to the neoVI using . Execution of the script must have been started by . Execution of the function block must have been started using . The valid index values for function blocks within a script can be found in the cmvspy.vs3cmb.h file (Produced by Vehicle Spy. Please see Vehicle Spy documentation).

Examples

SetVCAN3Settings Method - neoVI API

This method reads the configuration settings from a ValueCAN3 device.

int _stdcall icsneoSetVCAN3Settings(void * hObject, SVCAN3Settings *pSettings, int iNumBytes, int bSaveToEEPROM);
Public Declare Function icsneoSetVCAN3Settings Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByRef pSettings As SVCAN3Settings, ByVal iNumBytes As Int32, ByVal bSaveToEEPROM As Int32) As Int32
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoSetVCAN3Settings(IntPtr hObject, ref SVCAN3Settings pSettings, Int32 iNumBytes, Int32 bSaveToEEPROM);

Parameters

hObject

[in] Specifies the driver object created by OpenNeoDevice.

pSettings

[in] The address of an allocated SVCAN3Settings structure.

iNumBytes

[in] This value is always the size, in bytes, of the structure.

bSaveToEEPROM

[in] If set to 0, the settings changes will revert to the values stored in EEPROM when the ValueCAN3 is power-cycled. If set to 1, the values will overwrite the EEPROM settings and become persistent across power-cycles of the ValueCAN3.

Return Values

Returns 1 if successful, 0 if an error occurred. must be called to obtain the specific error. The errors that can be generated by this function are:

NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE = 75

Remarks

Before using this function, the structure must be initialized with the current neoVI settings using .

Examples

ReadWritePhySettings Method - neoVI API

This method allows reading and writing the PHY settings from/to the hardware.

int _stdcall icsneoReadWritePHYSettings(void * hObject, PhyRegPkt_T *PHYSettings, size_t Size, size_t NumEntries);
Public Declare Function icsneoReadWritePHYSettings Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByRef PHYSettings As PhyRegPkt_T, ByVal iSize As IntPtr, ByVal NumEntries As IntPtr) As Int32
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoReadWritePhySettings(IntPtr hObject, ref PhyRegPkt_T PHYSettings, IntPtr iSize, IntPtr NumEntries);

Parameters

hObject

[in] Specifies the driver object created by OpenNeoDevice.

PHYSettings

[out] This is the address of the first element of an array of PhyRegPkt_T structures. This array will be loaded by the application software with entries to be read or written from/to the hardware.

iSize

[in] Specifies the size of the structure used by the application. This is to make sure the structure used in the application and the DLL is same to avoid any buffer overrun.

iNumEntries

[in] Specifies the number of PHY Entries to be read or written.

Return Values

Returns 1 if successful, 0 if an error occurred. must be called to obtain the specific error.

Remarks

This function call sends the PHY Entries to be read or written from/to the hardware.

Examples

GetDeviceSettings Method - neoVI API

This method reads the configuration settings from various devices.

int _stdcall icsneoGetDeviceSettings(void * hObject, SDeviceSettings *pSettings, int iNumBytes, int VnetChan);
Public Declare Function icsneoGetDeviceSettingsLib “icsneo40.dll” (ByVal hObject As IntPtr, ByRef pSettings As SDeviceSettings , ByVal iNumBytes As Int32, ByVal VnetChan As Int32) As Int32
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoGetDeviceSettings(IntPtr hObject, rref SDeviceSettings pSettings, Int32 iNumBytes, Int32 VnetChan);

Parameters

hObject

[in] Specifies the driver object created by OpenNeoDevice.

pSettings

[out] Pointer to a SDeviceSettings structure.

iNumBytes

[in] This value is always the size, in bytes, of the structure.

VnetChan

[in] This value is indicates which Vnet to set the settings to. This parameter is intended for neoVI ION and neoVI Plasma which have more than one Vnet Slot. For all other devices set this to 0.

Return Values

Returns 1 if successful, 0 if an error occurred. must be called to obtain the specific error. The errors that can be generated by this function are:

NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE = 75

Remarks

After getting the current settings, you may change the parameters defined in the structure and write the settings back to the neoVI FIRE 2 using .

Examples

ClosePort Method - neoVI API

This method closes the communication link with the neoVI hardware.

int _stdcall icsneoClosePort(void * hObject, int * pNumberOfErrors);
Public Declare Function icsneoClosePort Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByRef pNumberOfErrors As Int32) As Int32
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoClosePort(IntPtr hObject, ref Int32 pNumberOfErrors);

Parameters

hObject

[in] Specifies the driver object created by OpenNeoDevice.

pNumberOfErrors

[out] Specifies the number of errors in the neoVI DLL error queue. You can read out the errors by calling the GetErrorMessages method.

Return Values

If the port has been closed successfully the return value will be 1. Otherwise, it will return zero. It will also return zero if the port is already closed.

Remarks

Must be called once for each successful call to or memory and resource leaks will occur.

Examples

ScriptGetScriptStatus Method - neoVI API

This method returns the status of the script on a neoVI device.

int _stdcall icsneoScriptGetScriptStatus(void * hObject, unsigned int iFunctionBlockIndex, int *piStatus);
Public Declare Function icsneoScriptGetScriptStatus Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByRef piStatus As Int32) As Int32
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoScriptGetScriptStatus(IntPtr hObject, ref Int32 piStatus);

Parameters

hObject

[in] Specifies the driver object created by OpenNeoDevice.

iFunctionBlockIndex

[in] The index value of the function block

piStatus

[out] 0 = Stopped 1 = Running

Return Values

1 if the function succeeded. 0 if it failed for any reason. must be called to obtain the specific error. The errors that can be generated by this function are:

NEOVI_ERROR_DLL_SCRIPT_NO_SCRIPT_RUNNING = 226

Remarks

The script must have been successfully downloaded to the neoVI using .

Examples

Device Settings Functions Overview - neoVI API

Name
Description

Gets device and network parameters for a neoVI Fire device

Sets device and network parameters for a neoVI Fire device

Gets device and network parameters for a ValueCAN3 device

Sets device and network parameters for a ValueCAN3 device

SetVCAN412Settings Method - neoVI API

This method writes configuration settings to a ValueCAN4-1 and ValueCAN4-2 device.

int _stdcall icsneoSetVCAN412Settings(void * hObject, SVCAN412Settings *pSettings, int iNumBytes, int bSaveToEEPROM);
Public Declare Function icsneoSetVCAN412Settings Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByRef pSettings As SVCAN412Settings, ByVal iNumBytes As Int32, ByVal bSaveToEEPROM As Int32) As Int32
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoSetVCAN412Settings(IntPtr hObject, ref SVCAN412Settings pSettings, Int32 iNumBytes, Int32 bSaveToEEPROM);

Parameters

hObject

[in] Specifies the driver object created by OpenNeoDevice.

pSettings

[in] The address of an allocated SVCAN412Settings structure.

iNumBytes

[in] This value is always the size, in bytes, of the structure.

bSaveToEEPROM

[in] If set to 0, the settings changes will revert to the values stored in EEPROM when the ValueCAN3 is power-cycled. If set to 1, the values will overwrite the EEPROM settings and become persistent across power-cycles of the ValueCAN4-1 and ValueCAN4-2.

Return Values

Returns 1 if successful, 0 if an error occurred. must be called to obtain the specific error. The errors that can be generated by this function are:

NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE = 75

Remarks

Before using this function, the structure must be initialized with the current neoVI settings using .

Examples

GetVCANRFSettings Method - neoVI API

This method reads the configuration settings from a ValueCAN RF device.

int _stdcall icsneoGetVCANRFSettings(void * hObject, SVCANRFSettings *pSettings, int iNumBytes);
Public Declare Function icsneoGetVCANRFSettings Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByRef pSettings As SVCANRFSettings, ByVal iNumBytes As Int32) As Int32e
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoGetVCANRFSettings(IntPtr hObject, ref SVCANRFSettings pSettings, Int32 iNumBytes);

Parameters

hObject

[in] Specifies the driver object created by OpenNeoDevice.

pSettings

[out] Pointer to a SVCANRFSettings structure.

iNumBytes

[in] This value is always the size, in bytes, of the structure.

Return Values

Returns 1 if successful, 0 if an error occurred. must be called to obtain the specific error. The errors that can be generated by this function are:

NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE = 75

Remarks

After getting the current settings, you may change the parameters defined in the structure and write the settings back to the ValueCAN RF using .

Examples

ISO15765_TransmitMessage Method - neoVI API

This method transmits a message using ISO15765-2 on a CAN network. icsneoISO15765_EnableNetwroks must be called before using icsneoISO15765_TransmitMessage. PCI bytes and Flow control decoding is taken care of by the dll for the transaction.

Parameters

hObject

[in] Handle which specifies the driver object created with the OpenPort method.

ulNetwork

[in] Specifies the network to transmit the message on. See

SetFire2Settings Method - neoVI API

Parameters

hObject

[in] Specifies the driver object created by .

pSettings

[in] The address of an allocated structure.

iNumBytes

SetDeviceSettings Method - neoVI API

This method writes configuration settings to various devices.

Parameters

hObject

[in] Specifies the driver object created by .

pSettings

[in] The address of an allocated structure.

ScriptReadAppSignal Method - neoVI API

This method is used to read an application signal from a script running on a neoVI device.

Parameters

hObject

[in] Specifies the driver object created by .

unsigned int iIndex

[in] The index value of the transmit message to read

GetFireSettings Method - neoVI API

This method reads the configuration settings from a neoVI Fire device.

Parameters

hObject

[in] Specifies the driver object created by .

pSettings

[out] Pointer to an structure.

ScriptClear Method - neoVI API

This method clears a script from a specific location on a neoVI device.

Parameters

hObject

[in] Specifies the driver object created by .

iLocation

[in] Specifies the physical location of the script to be cleared on the neoVI device. Valid values are:

Private m_hObject As IntPtr '// Declared at form level and previously open with a call to OpenNeoDevice

Dim iResult As Integer
Dim iTimeOut As UInt32

iTimeOut = Convert.ToUInt32(5000)

lblWaitForRxMessageWithTimeOutResult.Text = "Status"
Application.DoEvents()

'//This function will block until, A: A Message is received by the hardware, or B: the timeout is reached
iResult = icsneoWaitForRxMessagesWithTimeOut(m_hObject, iTimeOut)
If iResult = 1 Then
    'Message received before timeout
    lblWaitForRxMessageWithTimeOutResult.Text = "Message received"
    Call cmdReceive_Click(sender, e)
    '//Do something with the messages received
Else
    'Timeout reached and no messages received
    lblWaitForRxMessageWithTimeOutResult.Text = "Message Not received"
    '//Take action if no messages were received
End If
//Declared at form level and previously open with a call to OpenNeoDevice
IntPtr m_hObject; //handle for device

int iResult;
UInt32 iTimeOut = 5000; //Set timeout to 5 seconds

lblWaitForRxMessageWithTimeOutResult.Text = "Status";
Application.DoEvents();

//This function will block until, A: A Message is received by the hardware, or B: the timeout is reached
iResult = icsNeoDll.icsneoWaitForRxMessagesWithTimeOut(m_hObject, iTimeOut);
if (iResult == 1)
{
    //Message received before timeout
    lblWaitForRxMessageWithTimeOutResult.Text = "Message received";
    //Do something with the messages received
    cmdReceive_Click(sender, e);
}
else
{
    //Timeout reached and no messages received
    lblWaitForRxMessageWithTimeOutResult.Text = "Message Not received";
    //Take action if no messages were received
}
Private m_hObject As IntPtr '// Declared at form level and previously open with a call to OpenNeoDevice

Dim Fire2ReadSettings As SFIRE2Settings
Dim iNumberOfBytes As Integer
Dim iResult As Integer

'//Get the settings
iNumberOfBytes = System.Runtime.InteropServices.Marshal.SizeOf(Fire2ReadSettings)
iResult = icsneoGetFIRE2Settings(m_hObject, Fire2ReadSettings , iNumberOfBytes)
If iResult = 0 Then
    MsgBox("Problem reading configuration")
    Exit Sub
End If
Private m_hObject As IntPtr '// Declared at form level and previously open with a call to OpenNeoDevice

Dim VcanReadSettings As SVCAN3Settings
Dim iNumberOfBytes As Integer
Dim iResult As Integer

'//Get the settings
iNumberOfBytes = System.Runtime.InteropServices.Marshal.SizeOf(VcanReadSettings)
iResult = icsneoGetVCAN3Settings(m_hObject, VcanReadSettings , iNumberOfBytes)
If iResult = 0 Then
    MsgBox("Problem reading VCAN configuration")
    Exit Sub
End If
Private m_hObject As IntPtr '// Declared at form level and previously open with a call to OpenNeoDevice

Dim RadGalaxyReadSettings As SRADGalaxySettings
Dim iNumberOfBytes As Integer
Dim iResult As Integer

'//Get the settings
iNumberOfBytes = System.Runtime.InteropServices.Marshal.SizeOf(RadGalaxyReadSettings)
iResult = icsneoGetRADGalaxySettings(m_hObject, RadGalaxyReadSettings , iNumberOfBytes)
If iResult = 0 Then
    MsgBox("Problem reading configuration")
    Exit Sub
End If
Dim iResult As Int32
Dim ValueToSet As Double

'//Set value to send
ValueToSet = Val(txtAppSigVal.Text)

'//Set App Signal
iResult = icsneoScriptWriteAppSignal(m_hObject, Convert.ToUInt32(cboAppSig.SelectedIndex), ValueToSet)

If iResult = 0 Then
    txtAppSigVal.Text = "Problem!"
Else
    txtAppSigVal.Text = "Set!"
End If
Dim lResult As Integer '//Storage for result of Function Call
Dim lErrors(600) As Integer '//Array for Error information
Dim lNumberOfErrors As Integer '//Storage for Number of Errors

'// Read Out the errors
lResult = icsneoGetErrorMessages(m_hObject, lErrors(0), lNumberOfErrors)

'// Test the returned result
If Not CBool(lResult) Then
    MsgBox("Problem Reading Errors")
End If
int iResult = 0; //Storage for Result of Call
int[] iErrors = new int[600]; //Array for Error Numbers
int iNumberOfErrors = 0; // Storage for number of errors

// Read Out the errors
iResult = icsNeoDll.icsneoGetErrorMessages(m_hObject,ref iErrors[0],ref iNumberOfErrors);
[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;
   public RAD_GPTP_SETTINGS gPTP;
}
bool bDone = false;
while(!bDone)
{
iResult = icsneoWaitForRxMessagesWithTimeOut(hObject, iTimeOut);
if(iResult == 0)
continue; //no messages received
iResult = icsneoGetMessages(hObject,stMessages,&iNumberOfMessages,&iNumberOfErrors);
if(iResult == 0)
MessageBox(hWnd,TEXT("Problem Reading Messages"),TEXT("neoVI Example"),0);
else
MessageBox(hWnd, TEXT("Messages Read Successfully"),TEXT("neoVI Example"),0);
}
return 0;
{
MessageBox::Show("Problem reading configuration");
return;
}
.
Marshal
.
SizeOf
(Fire2ReadSettings);
iResult = icsNeoDll.icsneoGetFIRE2Settings(m_hObject,ref Fire2ReadSettings , iNumberOfBytes);
if (iResult == 0)
{
MessageBox.Show("Problem reading configuration");
return;
}
{
MessageBox::Show("Problem reading VCAN configuration");
return;
}
.
Marshal
.
SizeOf
(VcanReadSettings);
iResult = icsNeoDll.icsneoGetVCAN3Settings(m_hObject,ref VcanReadSettings , iNumberOfBytes);
if (iResult == 0)
{
MessageBox.Show("Problem reading VCAN configuration");
return;
}
.
Marshal
.
SizeOf
(RadGalaxyReadSettings);
iResult = icsNeoDll.icsneoGetRADGalaxySettings(m_hObject,ref RadGalaxyReadSettings , iNumberOfBytes);
if (iResult == 0)
{
MessageBox.Show("Problem reading configuration");
return;
}
{
printf("\nFailed to write the application signal. API Error = %d", lLastErrNum);
}
else
{
printf("\nApplication signal write succeeded\r\n");
}
.
ToUInt32
(
cboAppSig
.
SelectedIndex
)
,
ValueToSet);
if(iResult == 0)
{
txtAppSigVal.Text = "Problem!";
}
else
{
txtAppSigVal.Text = "Set!";
}
lNumberOfErrors);
if (lResult == 0)
MessageBox(hWnd,TEXT("Problem Reading errors"),TEXT("neoVI Example"),0);
// dump the neoVI errors to the debug window
if(lNumberOfErrors > 0)
{
for(lCount=0;lCount <lNumberOfErrors; lCount++)
{
wsprintf(szOut,TEXT("Error %d\n"),iErrors[lCount]);
OutputDebugString(szOut);
}
}
else
OutputDebugString(TEXT("No Errors to report\n"));
STextAPISettings text_api;
uint16_t pc_com_mode;
TIMESYNC_ICSHARDWARE_SETTINGS timeSyncSettings;
uint16_t hwComLatencyTestEn;
RAD_GPTP_SETTINGS gPTP;
}SRADSuperMoonSettings;

Performance test. Default value = 0

opEthGen

See OP_ETH_GENERAL_SETTINGS structure

opEth1

See OP_ETH_SETTINGS structure

network_enables

Not applicable for RAD SuperMoon. Set to 0

network_enables_2

Not applicable for RAD SuperMoon. Set to 0

network_enabled_on_boot

Normally neoVI only initiates its comm channels when CoreMini is running or if neoVI is online with DLL/Vehicle Spy 3. Practically this means the the CAN controllers stay in Listen Only mode until the device goes online. Once online the neoVI loads the user settings. Setting this parameter to 1 will change this behavior so that the neoVI enables its controllers immediately on boot.

Default value = 0

network_enables_3

Bitfield containing the software license enables. Depending on the hardware license purchased the customer may have to conditionally select which hardware channels to enable. For example the neoVI Red license allows the user to enable any 2 Dual Wire CAN channels and any 2 LIN channels. To enable a specific network its corresponding bit must be set (1). In order to transmit or receive on a network it must be enabled.

OP_Ethernet1 : 4

OP_Ethernet2 : 5

text_api

See STextAPISettings structure

pc_com_mode

Not Available

timeSyncSettings

See TIMESYNC_ICSHARDWARE_SETTINGS structure

hwComLatencyTestEn

Not Available

gPTP

See RAD_GPTP_SETTINGS structure

SetBitRate

Set the baud or bit rate for a specific neoVI network

GetHWFirmwareInfo

Gets the firmware version of a neoVI device

GetDLLFirmwareInfo

Gets the firmware version stored in the DLL API

ForceFirmwareUpdate

Forces the firmware to updated on a neoVI device

GetDeviceParameters

Gets individual parameters for a neoVI device

SetDeviceParameters

Sets individual parameters for a neoVI device

SetReflashDisplayCallbacks

Sets callback function pointers for use when flashing a neoVI

ClearReflashDisplayCallbacks

Clears callback function pointers for flashing a neoVI

GetRTC

Gets the current real-time clock value from a connect neoVI device

SetRTC

Sets the current real-time clock value in a connected neoVI device

GetFireSettings
SetFireSettings
GetVCAN3Settings
SetVCAN3Settings
iNumBytes

[in] This value is always the size, in bytes, of the SDeviceSettings structure.

bSaveToEEPROM

[in] If set to 0, the settings changes will revert to the values stored in EEPROM when the neoVI FIRE 2 is power-cycled. If set to 1, the values will overwrite the EEPROM settings and become persistent across power-cycles of the neoVI FIRE 2.

VnetChan

[in] This value is indicates which Vnet to set the settings to. This parameter is intended for neoVI ION and neoVI Plasma which have more than one Vnet Slot. For all other devices set this to 0.

Return Values

Returns 1 if successful, 0 if an error occurred. GetLastAPIError must be called to obtain the specific error. The errors that can be generated by this function are:

NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE = 75

Remarks

Before using this function, the SDeviceSettings structure must be initialized with the current neoVI settings using GetDeviceSettings.

Examples

Public Declare Function icsneoSetDeviceSettings”icsneo40.dll” (ByVal hObject As IntPtr, ByRef pSettings As SDeviceSettings , ByVal iNumBytes As Int32, ByVal bSaveToEEPROM As Int32, ByVal VnetChan As Int32) As Int32
OpenNeoDevice
SDeviceSettings
int _stdcall icsneoSetDeviceSettings(void * hObject, SDeviceSettings *pSettings, int iNumBytes, int bSaveToEEPROM, int VnetChan);
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoSetDeviceSettings(IntPtr hObject, rref SDeviceSettings pSettings, Int32 iNumBytes, Int32 bSaveToEEPROM, Int32 VnetChan);
double *dValue

[in] Contains the current value of the application signal.

Return Values

1 if the function succeeded. 0 if it failed for any reason. GetLastAPIError must be called to obtain the specific error. The errors that can be generated by this function are:

NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE = 75

NEOVI_ERROR_DLL_SCRIPT_INVALID_APPSIG_INDEX = 225

NEOVI_ERROR_DLL_SCRIPT_NO_SCRIPT_RUNNING = 226

Remarks

The script containing the specified application signal must have been successfully downloaded to the neoVI using ScriptLoadScript. The script must also have been started using ScriptStart. This function will fail if ScriptStop has been called. The valid index values for application signals within a script can be found in the cmvspy.vs3cmb.h file that is produced by Vehicle Spy. Please see Vehicle Spy documentation.

Examples

Public Declare Function icsneoScriptReadAppSignal Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByVal iIndex As UInt32, ByRef dValue As Double) As Int32
OpenNeoDevice
int _stdcall icsneoScriptReadAppSignal(void * hObject, unsigned int iIndex, double *dValue);
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoScriptReadAppSignal(IntPtr hObject, UInt32 iIndex, ref double dValue);
SCRIPT_LOCATION_FLASH_MEM = 0 (Valid only on a neoVI Fire or neoVI Red)SCRIPT_LOCATION_SDCARD = 1 (Valid only on a neoVI Fire or neoVI Red)SCRIPT_LOCATION_VCAN3_MEM = 4 (Valid only on a ValueCAN 3 device)

These values are defined in the icsnVC40.h file

Return Values

1 if the function succeeded. 0 if it failed for any reason. GetLastAPIError must be called to obtain the specific error. The errors that can be generated by this function are:

NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE = 75

NEOVI_ERROR_DLL_INVALID_SCRIPT_LOCATION = 213

NEOVI_ERROR_DLL_SDCARD_NOT_INSERTED = 214

NEOVI_ERROR_DLL_SDCARD_WRITE_ERROR = 216

NEOVI_ERROR_DLL_SCRIPT_ERROR_CLEARING_SCRIPT = 221

Remarks

If a script exists in the specified location it will be erased from that location. If the script is running it will be stopped. Any function blocks that are running will be stopped.

Examples

Public Declare Function icsneoScriptClear Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByVal iLocation As Int32) As Int32
OpenNeoDevice
int _stdcall icsneoScriptClear(void * hObject, int iLocation);
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoScriptClear(IntPtr hObject, Int32 iLocation);
Int32
iOptions
,
ref
OptionsOpenNeoEx
stOptionsOpenNeoEx
,
UInt32
uiReserved);
ClosePort
FreeObject
NetworkIDList
OpenNeoDevice
NeoDevice
OpenNeoDevice
ClosePort
FreeObject
SVCAN4Settings
GetLastAPIError
SVCAN4Settings
GetVCAN4Settings
GetLastAPIError
unsigned char bConfigBytes[1024];

int iNumConfigBytes = 1024;

lResult  =  icsneoGetConfiguration(hObject, bConfigBytes, &iNumConfigBytes);
if (lResult == 0)
    MessageBox(hWnd,TEXT("Problem Reading Configuration"),TEXT("neoVI Example"),0);
else
{
    wsprintf(szOut,TEXT("HSCAN CNF1 = %x"),bConfigBytes[NEO_CFG_MPIC_HS_CAN_CNF1]);
    MessageBox(hWnd,szOut,TEXT("neoVI Example"),0);
} 
byte[] bConfigBytes = new byte[1024]; //Storage for Data Bytes from Device
int iNumBytes = 1204; //Storage for Number of Bytes
int lResult; //Storage for Result of Called Function
int Counter;

//Clear listbox
lstConfigInformation.Items.Clear();

//Call Get Configuration
lResult = icsNeoDll.icsneoGetConfiguration(m_hObject, ref bConfigBytes[0],ref iNumBytes);

//Fill ListBox with Data From function Call
for(Counter=0;Counter<1024;Counter++)
{
    lstConfigInformation.Items.Add("Byte Number-" + Counter + " Byte Data-" + bConfigBytes[Counter]);
}
SVCAN412Settings
GetLastAPIError
SVCAN412Settings
SetVCAN412Settings
SVCAN412Settings VcanReadSettings;
int iNumberOfBytes;
int iResult;

//Get the settings
iNumberOfBytes=sizeof(VcanReadSettings );
iResult = icsneoGetVCAN412Settings(m_hObject, &VcanReadSettings , iNumberOfBytes);
if(iResult == 0)
{
    MessageBox::Show("Problem reading configuration");
    return;
}
//Declared at form level and previously open with a call to OpenNeoDevice
IntPtr m_hObject; //handle for device,
SVCAN412Settings VcanReadSettings = new SVCAN412Settings();
int iNumberOfBytes;
int iResult;

//Get the settings
iNumberOfBytes = System.Runtime.InteropServices.Marshal.SizeOf(VcanReadSettings);
iResult = icsNeoDll.icsneoGetVCAN412Settings(m_hObject,ref VcanReadSettings , iNumberOfBytes);
if (iResult == 0)
{
    MessageBox.Show("Problem reading configuration");
    return;
}
GetLastAPIError
stCM_ISO15765_RxMessage
int lResult;
stCM_ISO157652_RxMessage flow_cntrl_msg;

memset(&flow_cntrl_msg,0,sizeof(flow_cntrl_msg));
lResult = icsneoISO15765_EnableNetworks(m_hObject, NETID_HSCAN);

//Build structure for message
flow_cntrl_msg.vs_netid = NETID_HSCAN;
flow_cntrl_msg.padding = 0xAA; //Set Padding Byte
flow_cntrl_msg.id = 0x7E0; //ArbID of the message
flow_cntrl_msg.id_mask = 0xFFF; //The flow control arb filter mask (response id from receiver)
flow_cntrl_msg.fc_id = 0x7E8; //ArbID for the flow control Frame
flow_cntrl_msg.blockSize = 100;
flow_cntrl_msg.stMin = 100;
flow_cntrl_msg.cf_timeout = 1000;

//Set flags for Padding and ID information.
flow_cntrl_msg.paddingEnable = true;
flow_cntrl_msg.id_29_bit_enable = false;
flow_cntrl_msg.fc_id_29_bit_enable = false;
flow_cntrl_msg.ext_address_enable = false;
flow_cntrl_msg.fc_ext_address_enable = false;
flow_cntrl_msg.overrideSTmin = false;
flow_cntrl_msg.overrideBlockSize = false;

lResult = icsneoISO15765_ReceiveMessage(m_hObject, 0, &flow_cntrl_msg);
SVCANRFSettings
GetLastAPIError
SVCANRFSettings
GetVCANRFSettings
SVCANRFSettings VCANReadSettings;
int iNumberOfBytes;
int iResult;

//################################
//VCANReadSettings struct is read
//and changed as needed before
//Setting the new values
//################################

iNumberOfBytes=sizeof(VCANReadSettings );
iResult = icsneoSetVCANRFSettings(m_hObject, &VCANReadSettings , iNumberOfBytes, 1);
if(iResult == 0)
{
    MessageBox::Show("Problem Sending VCAN configuration");
    return;
}
SVCANRFSettings VCANReadSettings = new VCANReadSettings();
int iNumberOfBytes;
int iResult;

//################################
//VCANReadSettings struct is read
//and changed as needed before
//Setting the new values
//################################

iNumberOfBytes = System.Runtime.InteropServices.Marshal.SizeOf(VCANReadSettings);
iResult = icsNeoDll.icsneoSetVCANRFSettings(m_hObject, ref VCANReadSettings , iNumberOfBytes, 1);

if(iResult == 0)
{
    MessageBox.Show("Problem Sending VCAN configuration");
    return;
}
NeoDevice
OpenNeoDevice
GetLastAPIError
LoadScript
int iRetVal;
unsigned long lLastErrNum;

iRetVal = icsneoScriptStartFBlock(hObject, Function_Block_1);
if(iRetVal == 0)
{
    printf("\nFailed to start the function block);
}
else
{
    printf("\nSuccessfully started the function block");
}
Int32 iResult;

//Start Function Block in CoreMini
iResult = icsNeoDll.icsneoScriptStartFBlock(m_hObject, Convert.ToUInt32(cboFBToChange.SelectedIndex));

if (iResult == 0)
{
    lblFBStatus.Text = "Function Block failed to Start";
}
else
{
    lblFBStatus.Text = "Function Block Started";
}
GetLastAPIError
LoadScript
StartScript
StartFBlock
int iRetVal;
unsigned long lLastErrNum;

iRetVal = icsneoScriptStopFBlock(hObject, Function_Block_1);
if(iRetVal == 0)
{
    printf("\nFailed to stop the function block.);
}
else
{
    printf("\nSuccessfully stopped the function block");
}
Int32 iResult;

//Stop Function Block in CoreMini
iResult = icsNeoDll.icsneoScriptStopFBlock(m_hObject, Convert.ToUInt32(cboFBToChange.SelectedIndex));

if(iResult == 0)
{
    lblFBStatus.Text = "Function Block failed to Stop";
}
else
{
    lblFBStatus.Text = "Function Block Stopped";
}
SVCAN3Settings
GetLastAPIError
SVCAN3Settings
GetVCAN3Settings
PhyRegPkt_T
GetLastAPIError
PhySettings.clause22.phyAddrOrPort = 0x6;
PhySettings.clause.regAddr = 0x2;
PhySettings.clause.pageOrDevice = 1;
PhySettings.WriteEnable = 0;
PhySettings.Enabled = 1; //if not enabled, this entry of read/write operation will be ignored even if it is passed in.
PhySettings.Clause45Enable = 0; //Set this to 1 if the application is sending Clause45 type of Entries.

icsneoReadWritePHYSettings(handle, &PhySettings, sizeof(PhyRegPkt_t), 1);
Int32 iResult;
PhyRegPkt_t PhyRegPkt;
int iTempFlags = 0;

//Copy data to the structure
PhyRegPkt.ClausePkt.phyAddrOrPort = 6;
PhyRegPkt.ClausePkt.pageOrDevice = 1;
PhyRegPkt.ClausePkt.regAddr = 2;
PhyRegPkt.ClausePkt.regVal = 0;

//Set for Reading using Clause45 and Enabled
iTempFlags = iTempFlags | (int)PhyRegFlags.Enabled;
iTempFlags = iTempFlags | (int)PhyRegFlags.Clause45Enable;
PhyRegPkt.Flags = (ushort)iTempFlags;

//Get and cast the size of the structrue.
iResult = icsNeoDll.icsneoReadWritePHYSettings(m_hObject, ref PhyRegPkt, (IntPtr)System.Runtime.InteropServices.Marshal.SizeOf(PhyRegPkt), (IntPtr)1);
System.Diagnostics.Debug.WriteLine(Convert.ToString(PhyRegPkt.ClausePkt.regVal));
SDeviceSettings
GetLastAPIError
SDeviceSettings
SetDeviceSettings
OpenNeoDevice
int lNumberOfErrors;    // used to get the number of errors
int iResult;

// Close Communication
iResult = icsneoClosePort(hObject, &iNumberOfErrors);
// Test the Result
if (iResult== 0)
    MessageBox(hWnd,TEXT("Problem Closing Port"),TEXT("neoVI Example"),0);
else
    MessageBox(hWnd,TEXT("Port Closed Successfully"),TEXT("neoVI Example"),0);
//Declared at form level and previously open with a call to OpenNeoDevice
IntPtr m_hObject; //handle for device,

int iResult;
int iNumberOfErrors = 0;

//close the port
iResult = icsNeoDll.icsneoClosePort(m_hObject, ref iNumberOfErrors);
if (iResult == 1)
{
    MessageBox.Show("Port Closed OK!");
}
else
{
    MessageBox.Show("Problem ClosingPort");
}
m_bPortOpen = false;
GetLastAPIError
ScriptLoadScript
int iRetVal;
int iStatus;
unsigned long lLastErrNum;

iRetVal = icsneoScriptGetScriptStatus(hObject, &iStatus);
if(iRetVal == 0)
{
    printf("\nFailed to get the script status. API Error = %d\r\n", lLastErrNum);
}
else
{
    printf("\nScript status = %s\r\n", iStatus == 0 ? "Stopped" : "Running");
}
Int32 iResult;
Int32 iStatus=0;

//Get CoreMini Status
iResult = icsNeoDll.icsneoScriptGetScriptStatus(m_hObject,ref iStatus);

if (iResult == 0)
{
    lblCMStatus.Text = "Failed to get CoreMini Status";
}
else
{
    switch(iStatus)
    {
        case (int)ScriptStates.SCRIPT_STATUS_RUNNING:
            lblCMStatus.Text = "CoreMini Script Running";
            break;
        case (int)ScriptStates.SCRIPT_STATUS_STOPPED:
            lblCMStatus.Text = "CoreMini Script Stopped";
            break;
        default:
            lblCMStatus.Text = "Unhandled State";
            break;
    }
}
SVCAN412Settings
GetLastAPIError
SVCAN412Settings
GetVCAN412Settings
SVCANRFSettings
GetLastAPIError
SVCANRFSettings
SetVCANRFSettings
SVCANRFSettings VcanReadSettings;
int iNumberOfBytes;
int iResult;

//Get the settings
iNumberOfBytes=sizeof(VcanReadSettings );
iResult = icsneoGetVCANRFSettings(m_hObject, &VcanReadSettings , iNumberOfBytes);
if(iResult == 0)
{
    MessageBox::Show("Problem reading VCAN configuration");
    return;
}
//Declared at form level and previously open with a call to OpenNeoDevice
IntPtr m_hObject; //handle for device,
SVCANRFSettings VcanReadSettings = new SVCANRFSettings();
int iNumberOfBytes;
int iResult;

//Get the settings
iNumberOfBytes = System.Runtime.InteropServices.Marshal.SizeOf(VcanReadSettings);
iResult = icsNeoDll.icsneoGetVCANRFSettings(m_hObject,ref VcanReadSettings , iNumberOfBytes);
if (iResult == 0)
{
    MessageBox.Show("Problem reading VCAN configuration");
    return;
}
SDeviceSettings DeviceReadSettings;
int iNumberOfBytes;
int iResult;

//################################
//Read Settings struct first
//and changed as needed before
//Setting the new values
//################################

iNumberOfBytes=sizeof(DeviceReadSettings);
iResult = icsneoSetDeviceSettings(m_hObject, &DeviceReadSettings, iNumberOfBytes, 1, 0);
if(iResult == 0)
{
    MessageBox::Show("Problem Sending Device configuration");
    return;
}
SDeviceSettings DeviceReadSettings = new SDeviceSettings
int iNumberOfBytes;
int iResult;

//################################
//Read Settings struct first
//and changed as needed before
//Setting the new values
//################################

iNumberOfBytes = System.Runtime.InteropServices.Marshal.SizeOf(DeviceReadSettings);
DeviceReadSettings.uiDevice = EDeviceSettingsType.DeviceFireSettingsType;
iResult = icsNeoDll.icsneoSetDeviceSettings(m_hObject, ref DevoceReadSettings, iNumberOfBytes, 1, 0);

if(iResult == 0)
{
    MessageBox.Show("Problem Sending Device configuration");
    return;
}
Dim DeviceReadSettings As SDeviceSettings
Dim iNumberOfBytes As Integer
Dim iResult As Integer

'//################################
'//Read Settings struct first
'//and changed as needed before
'//Setting the new values
'//################################

iNumberOfBytes = System.Runtime.InteropServices.Marshal.SizeOf(DeviceReadSettings)
DeviceReadSettings.uiDevice = EDeviceSettingsType.DeviceFireSettingsType
iResult = icsneoSetDeviceSettings(m_hObject, DeviceReadSettings , iNumberOfBytes, 1, 0)

If iResult = 0 Then
    MsgBox("Problem Sending Device configuration")
    Exit Sub
End If
int iRetVal;
unsigned long lLastErrNum;
double dValue = 0;

iRetVal = icsneoScriptReadAppSignal(hObject, App_Signal_1, &dValue);
if(iRetVal == 0)
{
    printf("\nFailed to read the application signal.);
}
else
{
    printf("\nApplication signal = %f\r\n", dValue);
}
Int32 iResult;
Double ValueToSet=0;

//Read App signal
iResult = icsNeoDll.icsneoScriptReadAppSignal(m_hObject, Convert.ToUInt32(cboAppSig.SelectedIndex),ref ValueToSet);

if (iResult == 0)
{
    txtAppSigVal.Text = "Problem!";
}
else
{
    txtAppSigVal.Text = Convert.ToString(ValueToSet);
}
Dim iResult As Int32
Dim ValueToSet As Double

'//Read App signal
iResult = icsneoScriptReadAppSignal(m_hObject, Convert.ToUInt32(cboAppSig.SelectedIndex), ValueToSet)

If iResult = 0 Then
    txtAppSigVal.Text = "Problem!"
Else
    txtAppSigVal.Text = Convert.ToString(ValueToSet)
End If
int iRetVal;
unsigned long lLastErrNum;
//Clear the script from it's storage location.
//Both SCRIPT_LOCATION_FLASH_MEM and SCRIPT_LOCATION_SDCARD are persistent.
//On a ValueCAN 3, SCRIPT_LOCATION_VCAN3_MEM will clear when the device
//loses power or resets.

iRetVal = icsneoScriptClear(hObject, DefaultScriptLocation);
if(iRetVal == 0)
{
    printf("\nFailed to clear the script);
}
else
{
    printf("\nSuccessfully cleared the script");
}
Int32 iResult;

//clear CoreMini
iResult = icsNeoDll.icsneoScriptClear(m_hObject, Convert.ToInt32(CoreMiniStoreLocation.SCRIPT_LOCATION_FLASH_MEM));

if(iResult == 0)
{
    lblCMStatus.Text = "CoreMini Failed to Clear";
}
else
{
    lblCMStatus.Text = "CoreMini Cleared";
}
Dim iResult As Int32

'//clear CoreMini
iResult = icsneoScriptClear(m_hObject, SCRIPT_LOCATION_FLASH_MEM)

If iResult = 0 Then
    lblCMStatus.Text = "CoreMini Failed to Clear"
Else
    lblCMStatus.Text = "CoreMini Cleared"
End If
void * hObject;  // holds a handle to the neoVI object
int iRetVal;
int iCount;
NeoDevice ndNeoToOpen; //created previously

iRetVal = icsneoOpenDevice(&ndNeoToOpen, &hObject, NULL, 1, 0);
Dim m_hObject As IntPtr '//handle for device
Dim iResult As Integer '//Holds the results from function call
Dim ndNeoToOpen As NeoDevice '//Struct holding detected hardware information
Dim bNetwork(255) As Byte '//List of hardware IDs
Dim iCount As Integer '//counter

'//File NetworkID array
For iCount = 0 To 255
    bNetwork(iCount) = CByte(iCount)
Next iCount
'//Open the first found device, ndNeoToOpen acquired from FindNeoDevices
iResult = icsneoOpenDevice(ndNeoToOpen(0), m_hObject, bNetwork(0), 1, 0)
If CBool(iResult) Then
    MsgBox("Port Opened OK!")
Else
    MsgBox("Problem Opening Port")
    Exit Sub
End If
IntPtr m_hObject; //handle for device
int iResult; //Holds the results from function call
NeoDevice ndNeoToOpen = new NeoDevice(); //Struct holding detected hardware information
byte[] bNetwork = new byte[255]; //List of hardware IDs
int iCount; //counter

//File NetworkID array
for (iCount = 0; iCount < 255; iCount++)
{
    bNetwork[iCount] = Convert.ToByte(iCount);
}
//Open the first found device, ndNeoToOpen acquired from FindNeoDevices
iResult = icsNeoDll.icsneoOpenDevice(ref ndNeoToOpen, ref m_hObject, ref bNetwork[0], 1, 0);
if (iResult == 1)
{
    MessageBox.Show("Port Opened OK!");
}
else
{
    MessageBox.Show("Problem Opening Port");
    return;
}
SVCAN4Settings VCANReadSettings;
int iNumberOfBytes;
int iResult;

//################################
//VCANReadSettings struct is read
//and changed as needed before
//Setting the new values
//################################

iNumberOfBytes=sizeof(VCANReadSettings );
iResult = icsneoSetVCAN4Settings(m_hObject, &VCANReadSettings , iNumberOfBytes, 1);
if(iResult == 0)
{
    MessageBox::Show("Problem Sending VCAN configuration");
    return;
}
SVCAN4Settings VCANReadSettings = new SVCAN4Settings();
int iNumberOfBytes;
int iResult;

//################################
//VCANReadSettings struct is read
//and changed as needed before
//Setting the new values
//################################

iNumberOfBytes = System.Runtime.InteropServices.Marshal.SizeOf(VCANReadSettings);
iResult = icsNeoDll.icsneoSetVCAN4Settings(m_hObject, ref VCANReadSettings , iNumberOfBytes, 1);

if(iResult == 0)
{
    MessageBox.Show("Problem Sending VCAN configuration");
    return;
}
Dim VCANReadSettings As SVCAN4Settings
Dim iNumberOfBytes As Integer
Dim iResult As Integer

'//################################
'//VCANReadSettings struct is read
'//and changed as needed before
'//Setting the new values
'//################################

iNumberOfBytes = System.Runtime.InteropServices.Marshal.SizeOf(VCANReadSettings)
iResult = icsneoSetVCAN4Settings(m_hObject, VCANReadSettings , iNumberOfBytes, 1)

If iResult = 0 Then
    MsgBox("Problem Sending VCAN configuration")
    Exit Sub
End If
byte[] bConfigBytes = new byte[1024]; //Storage for Data Bytes from Device
int iNumBytes = 1204; //Storage for Number of Bytes
int lResult; //Storage for Result of Called Function
int Counter;

//Clear listbox
lstConfigInformation.Items.Clear();

//Call Get Configuration
lResult = icsNeoDll.icsneoGetConfiguration(m_hObject, ref bConfigBytes[0],ref iNumBytes);

//Fill ListBox with Data From function Call
for(Counter=0;Counter<1024;Counter++)
{
    lstConfigInformation.Items.Add("Byte Number-" + Counter + " Byte Data-" + bConfigBytes[Counter]);
} 
Private m_hObject As IntPtr '// Declared at form level and previously open with a call to OpenNeoDevice

Dim VcanReadSettings As SVCAN412Settings
Dim iNumberOfBytes As Integer
Dim iResult As Integer

'//Get the settings
iNumberOfBytes = System.Runtime.InteropServices.Marshal.SizeOf(VcanReadSettings)
iResult = icsneoGetVCAN412Settings(m_hObject, VcanReadSettings , iNumberOfBytes)
If iResult = 0 Then
    MsgBox("Problem reading configuration")
    Exit Sub
End If
int iRetVal;

iRetVal = icsneoSetBitrate(hObject,  500000, NETID_HSCAN);
if(iRetVal == 0)
{
    printf("\nFailed to set the bit rate");
}
else
{
    printf("\nSuccessfully set the bit rate");
}
int iResult;

//Set the bit rate
iResult = icsNeoDll.icsneoSetBitRate(m_hObject, 500000, NETID_HSCAN);
if (iResult == 0)
{
    MessageBox.Show("Problem setting bit rate");
}
Dim iResult As Integer
'//Set the bit rate
iResult = icsneoSetBitRate(m_hObject, 500000, NETID_HSCAN)
If (iResult = 0) Then MsgBox("Problem setting bit rate")
int lResult;
String sTempNetwork;
stCM_ISO157652_RxMessage flow_cntrl_msg = new stCM_ISO157652_RxMessage();

lResult = icsNeoDll.icsneoISO15765_EnableNetworks(m_hObject, Convert.ToInt32(eNETWORK_ID.NETID_HSCAN));

//Build structure for message
flow_cntrl_msg.vs_netid = Convert.ToInt16(eNETWORK_ID.NETID_HSCAN);
flow_cntrl_msg.padding = 0xAA; //Set Padding Byte
flow_cntrl_msg.id = 0x7E0 //ArbID of the message
flow_cntrl_msg.id_mask = 0xFFF; //The flow control arb filter mask (response id from receiver)
flow_cntrl_msg.fc_id = 0x7E8; //ArbID for the flow control Frame
flow_cntrl_msg.blockSize = 100;
flow_cntrl_msg.stMin = 100;
flow_cntrl_msg.cf_timeout = 1000;

//Set flags for Padding and ID information.
flow_cntrl_msg.flags = 0;
int iFlags = Convert.ToInt32(stCM_ISO157652_RxMessage_Flags.enableFlowControlTransmission);
iFlags = (iFlags | Convert.ToInt32(CSnet.stCM_ISO157652_TxMessage_Flags.paddingEnable));
flow_cntrl_msg.flags = Convert.ToUInt16(iFlags);

lResult = icsNeoDll.icsneoISO15765_ReceiveMessage(m_hObject, 0, ref flow_cntrl_msg);
Dim lResult As Integer
Dim flow_cntrl_msg As stCM_ISO157652_RxMessage

lResult = icsneoISO15765_EnableNetworks(m_hObject, NETID_HSCAN)

'//Build structure for message
flow_cntrl_msg.vs_netid = NETID_HSCAN
flow_cntrl_msg.padding = &HAA '//Set Padding Byte
flow_cntrl_msg.id = &H7E0 '//ArbID of the message
flow_cntrl_msg.id_mask = &HFFF '//The flow control arb filter mask (response id from receiver)
flow_cntrl_msg.fc_id = &H7E8 '//ArbID for the flow control Frame
flow_cntrl_msg.blockSize = 100
flow_cntrl_msg.stMin = 100
flow_cntrl_msg.cf_timeout = 1000

'//Set flags for Padding and ID information.
flow_cntrl_msg.flags = Convert.ToUInt32(stCM_ISO157652_RxMessage_Flags.enableFlowControlTransmission)
flow_cntrl_msg.flags = CUShort(flow_cntrl_msg.flags Or stCM_ISO157652_TxMessage_Flags.paddingEnable)

lResult = icsneoISO15765_ReceiveMessage(m_hObject, 0, flow_cntrl_msg)
Dim VCANReadSettings As SVCANRFSettings
Dim iNumberOfBytes As Integer
Dim iResult As Integer

'//################################
'//VCANReadSettings struct is read
'//and changed as needed before
'//Setting the new values
'//################################

iNumberOfBytes = System.Runtime.InteropServices.Marshal.SizeOf(VCANReadSettings)
iResult = icsneoSetVCANRFSettings(m_hObject, VCANReadSettings , iNumberOfBytes, 1)

If iResult = 0 Then
    MsgBox("Problem Sending VCAN configuration")
    Exit Sub
End If
NeoDevice Devices[255];
unsigned long lDevTypes;
int iNumDevices = 255;
int iRetVal = 0;
int lDevTypes;

lDevTypes = NEODEVICE_ALL;

iRetVal = icsneoFindNeoDevices(lDevTypes, Devices, &iNumDevices);
int iResult;//Holds the results from function call
NeoDevice ndNeoToOpen = new NeoDevice(); ; //Struct holding detected hardware information
int iNumberOfDevices; //Number of hardware devices to look for
int lDevTypes; //Holds the device types to look for
lDevTypes = NEODEVICE_ALL;

//Set the number of devices to find
iNumberOfDevices = 1;
//Search for connected hardware
iResult = icsNeoDll.icsneoFindNeoDevices(65535, ref ndNeoToOpen, ref iNumberOfDevices);
if (iResult == 0)
{
    MessageBox.Show("Problem finding devices");
    return;
}
Dim iResult As Integer '//Holds the results from function call
Dim ndNeoToOpen As NeoDevice '//Struct holding detected hardware information
Dim iNumberOfDevices As Integer '//Number of hardware devices to look for
Dim lDevTypes As Integer '//Holds the device types to look for


'//Set the devices to look for
lDevTypes = NEODEVICE_ALL
'//Set the number of devices to find
iNumberOfDevices = 1
'//Search for connected hardware
iResult = icsneoFindNeoDevices(lDevTypes, ndNeoToOpen, iNumberOfDevices)
If (iResult = 0) Then MsgBox("Problem finding devices")
Dim iResult As Int32

'//Start Function Block in CoreMini
iResult = icsneoScriptStartFBlock(m_hObject, Convert.ToUInt32(cboFBToChange.SelectedIndex))

If iResult = 0 Then
    lblFBStatus.Text = "Function Block failed to Start"
Else
    lblFBStatus.Text = "Function Block Started"
End If
Dim iResult As Int32

'//Stop Function Block in CoreMini
iResult = icsneoScriptStopFBlock(m_hObject, Convert.ToUInt32(cboFBToChange.SelectedIndex))

If iResult = 0 Then
    lblFBStatus.Text = "Function Block failed to Stop"
Else
    lblFBStatus.Text = "Function Block Stopped"
End If
SVCAN3Settings VCANReadSettings;
int iNumberOfBytes;
int iResult;

//################################
//VCANReadSettings struct is read
//and changed as needed before
//Setting the new values
//################################

iNumberOfBytes=sizeof(VCANReadSettings );
iResult = icsneoSetVCAN3Settings(m_hObject, &VCANReadSettings , iNumberOfBytes, 1);
if(iResult == 0)
{
    MessageBox::Show("Problem Sending VCAN configuration");
    return;
}
SVCAN3Settings VCANReadSettings = new VCANReadSettings();
int iNumberOfBytes;
int iResult;

//################################
//VCANReadSettings struct is read
//and changed as needed before
//Setting the new values
//################################

iNumberOfBytes = System.Runtime.InteropServices.Marshal.SizeOf(VCANReadSettings);
iResult = icsNeoDll.icsneoSetVCAN3Settings(m_hObject, ref VCANReadSettings , iNumberOfBytes, 1);

if(iResult == 0)
{
    MessageBox.Show("Problem Sending VCAN configuration");
    return;
}
Dim VCANReadSettings As SVCAN3Settings
Dim iNumberOfBytes As Integer
Dim iResult As Integer

'//################################
'//VCANReadSettings struct is read
'//and changed as needed before
'//Setting the new values
'//################################

iNumberOfBytes = System.Runtime.InteropServices.Marshal.SizeOf(VCANReadSettings)
iResult = icsneoSetVCAN3Settings(m_hObject, VCANReadSettings , iNumberOfBytes, 1)

If iResult = 0 Then
    MsgBox("Problem Sending VCAN configuration")
    Exit Sub
End If
Dim iResult As Int32
Dim PhyRegPkt As PhyRegPkt_t
Dim iTempFlags As Int32 = 0
Dim iParamCount As IntPtr = CType(1, IntPtr)

'//Copy data to the structure
PhyRegPkt.ClausePkt.phyAddrOrPort = 6
PhyRegPkt.ClausePkt.pageOrDevice = 1
PhyRegPkt.ClausePkt.regAddr = 3
PhyRegPkt.ClausePkt.regVal = 0

'//Set for Reading using Clause45 and Enabled
iTempFlags = iTempFlags Or PhyRegFlags.Enabled
iTempFlags = iTempFlags Or PhyRegFlags.Clause45Enable
PhyRegPkt.Flags = CUShort(iTempFlags)

'//Get and cast the size of the structrue.
Dim PhyRegSize As IntPtr = CType(System.Runtime.InteropServices.Marshal.SizeOf(PhyRegPkt), IntPtr)
iResult = icsneoReadWritePHYSettings(m_hObject, PhyRegPkt, PhyRegSize, iParamCount)
Debug.Print(CStr(PhyRegPkt.ClausePkt.regVal))
SDeviceSettings DeviceReadSettings;
int iNumberOfBytes;
int iResult;

//Get the settings
iNumberOfBytes=sizeof(DeviceReadSettings);
DeviceReadSettings.DeviceSettingType = DeviceFireSettingsType;
iResult = icsneoGetDeviceSettings(m_hObject, &DeviceReadSettings , iNumberOfBytes, 0);
if(iResult == 0)
{
    MessageBox::Show("Problem reading configuration");
    return;
}
SDeviceSettings DeviceReadSettings = new SDeviceSettings ();
int iNumberOfBytes;
int iResult;

//Get the settings
iNumberOfBytes = System.Runtime.InteropServices.Marshal.SizeOf(DeviceReadSettings);
DeviceReadSettings.uiDevice = EDeviceSettingsType.DeviceFireSettingsType;
iResult = icsNeoDll.icsneoGetDeviceSettings(m_hObject,ref DeviceReadSettings, iNumberOfBytes, 0);
if (iResult == 0)
{
    MessageBox.Show("Problem reading configuration");
    return;
}
Dim DeviceReadSettings As SDeviceSettings
Dim iNumberOfBytes As Integer
Dim iResult As Integer

'//Get the settings
iNumberOfBytes = System.Runtime.InteropServices.Marshal.SizeOf(DeviceReadSettings)
DeviceReadSettings.uiDevice = EDeviceSettingsType.DeviceFireSettingsType
iResult = icsneoGetDeviceSettings(m_hObject, DeviceReadSettings, iNumberOfBytes, 0)
If iResult = 0 Then
    MsgBox("Problem reading configuration")
    Exit Sub
End If
Private m_hObject As IntPtr '// Declared at form level and previously open with a call to OpenNeoDevice

Dim iResult As Integer
Dim iNumberOfErrors As Integer

'//close the port
iResult = icsneoClosePort(m_hObject, iNumberOfErrors)
If CBool(iResult) Then
    MsgBox("Port Closed OK!")
Else
    MsgBox("Problem Closing Port")
End If
Dim iResult As Int32
Dim iStatus As Int32

'//Get CoreMini Status
iResult = icsneoScriptGetScriptStatus(m_hObject, iStatus)

If iResult = 0 Then
    lblCMStatus.Text = "Failed to get CoreMini Status"
Else
    Select Case iStatus
        Case SCRIPT_STATUS_RUNNING
            lblCMStatus.Text = "CoreMini Script Running"
        Case SCRIPT_STATUS_STOPPED
            lblCMStatus.Text = "CoreMini Script Stopped"
        Case Else
            lblCMStatus.Text = "Unhandled State"
    End Select
End If
SVCAN412Settings VCANReadSettings;
int iNumberOfBytes;
int iResult;

//################################
//VCANReadSettings struct is read
//and changed as needed before
//Setting the new values
//################################

iNumberOfBytes=sizeof(VCANReadSettings );
iResult = icsneoSetVCAN412Settings(m_hObject, &VCANReadSettings , iNumberOfBytes, 1);
if(iResult == 0)
{
    MessageBox::Show("Problem Sending VCAN configuration");
    return;
}
SVCAN412Settings VCANReadSettings = new VCANReadSettings();
int iNumberOfBytes;
int iResult;

//################################
//VCANReadSettings struct is read
//and changed as needed before
//Setting the new values
//################################

iNumberOfBytes = System.Runtime.InteropServices.Marshal.SizeOf(VCANReadSettings);
iResult = icsNeoDll.icsneoSetVCAN412Settings(m_hObject, ref VCANReadSettings , iNumberOfBytes, 1);

if(iResult == 0)
{
    MessageBox.Show("Problem Sending VCAN configuration");
    return;
}
Dim VCANReadSettings As SVCAN412Settings
Dim iNumberOfBytes As Integer
Dim iResult As IntPtr

'//################################
'//VCANReadSettings struct is read
'//and changed as needed before
'//Setting the new values
'//################################

iNumberOfBytes = System.Runtime.InteropServices.Marshal.SizeOf(VCANReadSettings)
iResult = icsneoSetVCAN412Settings(m_hObject, VCANReadSettings , iNumberOfBytes, 1)

If iResult = 0 Then
    MsgBox("Problem Sending VCAN configuration")
    Exit Sub
End If
Private m_hObject As IntPtr '// Declared at form level and previously open with a call to OpenNeoDevice

Dim VcanReadSettings As SVCANRFSettings
Dim iNumberOfBytes As Integer
Dim iResult As Integer

'//Get the settings
iNumberOfBytes = System.Runtime.InteropServices.Marshal.SizeOf(VcanReadSettings)
iResult = icsneoGetVCANRFSettings(m_hObject, VcanReadSettings , iNumberOfBytes)
If iResult = 0 Then
    MsgBox("Problem reading VCAN configuration")
    Exit Sub
End If
for a list of valid Network ID values. Network support varies by neoVI device. NETID_DEVICE transmits on to the neoVI Device Virtual Network (see users manual).

stCM_ISO157652_TxMessage

[in] This is the address of the stCM_ISO15765_TxMessage structure. The structure contains the properties for the multi frame message transaction.

ulBlockingTimeout

[in] Amount of time in ms to wait for flow controls before timing out.

Return Values

None.

Remarks

None.

Examples

long lResult;
int iNetwork = 1;
int iCounter = 0;

//Create Message and adjust array to proper size
stCM_ISO157652_TxMessage tx_msg;
::ZeroMemory(&tx_msg,sizeof(stCM_ISO157652_TxMessage));
//enable ISO15765 on HS CAN
Public Declare Function icsneoISO15765_TransmitMessage Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByVal ulNetworkID As Integer, ByRef pMsg As stCM_ISO157652_TxMessage, ByVal ulBlockingTimeout As Integer) As Int32
void _stdcall icsneoISO15765_TransmitMessage(void * hObject, unsigned long ulNetworkID,stCM_ISO157652_TxMessage *pMsg,unsigned long ulBlockingTimeout);
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoISO15765_TransmitMessage(IntPtr hObject,Int32 ulNetworkID,ref stCM_ISO157652_TxMessage pMsg,Int32 ulBlockingTimeout);
NetworkID List
[in] This value is always the size, in bytes, of the
structure.

bSaveToEEPROM

[in] If set to 0, the settings changes will revert to the values stored in EEPROM when the neoVI FIRE 2 is power-cycled. If set to 1, the values will overwrite the EEPROM settings and become persistent across power-cycles of the neoVI FIRE 2.

Return Values

Returns 1 if successful, 0 if an error occurred. GetLastAPIError must be called to obtain the specific error. The errors that can be generated by this function are:

NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE = 75

Remarks

Before using this function, the SFIRE2Settings structure must be initialized with the current neoVI settings using GetFIRE2Settings.

Examples

SFIRE2Settings Fire2ReadSettings;
int iNumberOfBytes;
int iResult;

//################################
//Fire2ReadSettings struct is read
//and changed as needed before
//Setting the new values
//################################

iNumberOfBytes=sizeof(Fire2ReadSettings);
iResult = icsneoSetFIRE2Settings
SFIRE2Settings = new Fire2ReadSettings();
int iNumberOfBytes;
int iResult;

//################################
//Fire2ReadSettings struct is read
//and changed as needed before
//Setting the new values
//################################

iNumberOfBytes = System
Public Declare Function icsneoSetFire2SettingsLib “icsneo40.dll” (ByVal hObject As IntPtr, ByRef pSettings As SFIRE2Settings, ByVal iNumBytes As Int32, ByVal bSaveToEEPROM As Int32) As Int32
OpenNeoDevice
SFIRE2Settings
int _stdcall icsneoSetFire2Settings(void * hObject, SFIRE2Settings *pSettings, int iNumBytes, int bSaveToEEPROM);
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoSetFire2Settings(IntPtr hObject, ref SFIRE2Settings pSettings, Int32 iNumBytes, Int32 bSaveToEEPROM);
SFIRE2Settings
iNumBytes

[in] This value is always the size, in bytes, of the SFireSettings structure.

Return Values

Returns 1 if successful, 0 if an error occurred. GetLastAPIError must be called to obtain the specific error. The errors that can be generated by this function are:

NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE = 75

Remarks

After getting the current settings, you may change the parameters defined in the SFireSettings structure and write the settings back to the neoVI Fire using SetFireSettings.

Examples

SFireSettings FireReadSettings;
int iNumberOfBytes;
int iResult;

//Get the settings
iNumberOfBytes=sizeof(SFireSettings);
iResult = icsneoGetFireSettings(m_hObject, &FireReadSettings, iNumberOfBytes);
if(iResult == 0)
//Declared at form level and previously open with a call to OpenNeoDevice
IntPtr m_hObject; //handle for device,
SFireSettings FireReadSettings= new SFireSettings();
int iNumberOfBytes;
int iResult;

//Get the settings
iNumberOfBytes = System.Runtime.InteropServices
Public Declare Function icsneoGetFireSettings Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByRef pSettings As SFireSettings , ByVal iNumBytes As Int32) As Int32
OpenNeoDevice
SFireSettings
int _stdcall icsneoGetFireSettings(void * hObject, SFireSettings *pSettings, int iNumBytes);
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoSetFireSettings(IntPtr hObject, ref SFireSettings pSettings, Int32 iNumBytes, Int32 bSaveToEEPROM);

ScriptGetFBlockStatus Method - neoVI API

This method returns the run status of a specified function block within a script on a neoVI device.

int _stdcall icsneoScriptGetFBlockStatus(void * hObject, unsigned int iFunctionBlockIndex, int *piStatus);
Public Declare Function icsneoScriptGetFBlockStatus Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByVal fb_index As UInt32, ByRef piRunStatus As Int32) As Int32
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoScriptGetFBlockStatus(IntPtr hObject, UInt32 fb_index, ref Int32 piRunStatus);

Parameters

hObject

[in] Specifies the driver object created by OpenNeoDevice.

iFunctionBlockIndex

[in] The index value of the function block to start

piStatus

[out] 0 = stopped 1 = running

Return Values

1 if the function succeeded. 0 if it failed for any reason. must be called to obtain the specific error. The errors that can be generated by this function are:

NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE = 75

NEOVI_ERROR_DLL_SCRIPT_INVALID_FUNCBLOCK_INDEX = 219

NEOVI_ERROR_DLL_SCRIPT_NO_SCRIPT_RUNNING = 226

Remarks

The script containing the specified function block must have been successfully downloaded to the neoVI using . Execution of the script must have been started by using . The valid index values for function blocks within a script can be found in the cmvspy.vs3cmb.h file (Produced by Vehicle Spy. Please see Vehicle Spy documentation).

Examples

SendConfiguration Method - neoVI API

This method sends configuration information to the hardware.

Parameters

hObject

[in] Specifies the driver object created by .

pData

[in] This is an array configuration bytes. The format of this array is defined in the Configuration Array help topic. This data should be filled in with a call to before calling SendConfiguration. The size of this array must always be 1024 bytes.

OpenPortEx Method - neoVI API

This function is deprecated. Use the method instead.

This function opens a connection to a neoVI device.

Parameters

lPortNumber

[in] Specifies which USB, TCP/IP, or Comm port to use. The USB port is a logic port starting with 1 up to the number of devices. For example, if 3 devices are connected, valid lPortNumber values will be 1,2, and 3. Comm ports also start at 1. For TCP/IP it specifies the TCP/IP port number.

int lResult;
int iCounter;
int iNetwork = 1;
byte[] DataBytes = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};

//Create Message and adjust array to proper size
stCM_ISO157652_TxMessage tx_msg = new stCM_ISO157652_TxMessage();
tx_msg.data = new byte[4096];

//enable ISO15765
lResult = icsNeoDll.icsneoISO15765_EnableNetworks(m_hObject, 1);
tx_msg.id = 0x7E0; //ArbID of the message
tx_msg.vs_netid = 1; //Network to use
tx_msg.num_bytes = 64; //The number of data bytes to use
tx_msg.padding = 0xAA; //Set Padding Byte

//Set Flags
int iFlags=0;
iFlags = (iFlags | Convert.ToInt32(CSnet.stCM_ISO157652_TxMessage_Flags.paddingEnable)); //Enable Padding
tx_msg.flags = Convert.ToUInt16(iFlags);

//Set up Flow control
tx_msg.fc_id = 0x7E8; //ArbID for the flow control Frame
tx_msg.fc_id_mask = 0xFFF; //The flow control arb filter mask (response id from receiver)

tx_msg.fs_timeout = 0x100; //Flow Control Time out in ms
tx_msg.fs_wait = 0x3000; //Flow Control FS=Wait Timeout ms
tx_msg.blockSize = 0;//Block size (for sending flow Control)
tx_msg.stMin = 0;
//Fill data

for (iCounter = 0; iCounter < DataBytes.GetUpperBound(0);iCounter ++)
{
    tx_msg.data[iCounter] = DataBytes[iCounter];
}
lResult = icsNeoDll.icsneoISO15765_TransmitMessage(m_hObject, iNetwork,ref tx_msg, 3000);
Dim lResult As Integer
Dim iCounter As Integer
Dim iNetwork As Integer = 1
Dim DataIn() As Byte = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63}

'//Create Message and adjust array to proper size
Dim tx_msg As stCM_ISO157652_TxMessage
tx_msg.data = New Byte(4096) {}

'//Create Flow Control Receive filter
Dim flow_cntrl_msg As New stCM_ISO157652_RxMessage

'//enable ISO15765
lResult = icsneoISO15765_EnableNetworks(m_hObject, GetNetworkIDfromString(lstISO15765Network.Text))

tx_msg.id = &H7E0 '//ArbID of the message
tx_msg.vs_netid = NETID_HSCAN '//Network to use
tx_msg.num_bytes = 64 '//The number of data bytes to use
tx_msg.padding = &HAA '//Set Padding Byte

tx_msg.flags = 0 '//Clear Flags
tx_msg.flags = CUShort(tx_msg.flags Or stCM_ISO157652_TxMessage_Flags.paddingEnable)'//Enable Padding

'//Configure Flow Control
tx_msg.fc_id = &H7E8 '//ArbID for the flow control Frame
tx_msg.fc_id_mask = &HFFF '//The flow control arb filter mask (response id from receiver)
tx_msg.flowControlExtendedAddress = 0 '//Extended ID
tx_msg.fs_timeout = &H100 '//Flow Control Time out in ms
tx_msg.fs_wait = &H3000 '//Flow Control FS=Wait Timeout ms
tx_msg.blockSize = 0 '//Block size (for sending flow Control)
tx_msg.stMin = 0

'//Fill data
For iCounter = 0 To UBound(DataIn)
    tx_msg.data(iCounter) = DataIn(iCounter)
Next iCounter
lResult = icsneoISO15765_TransmitMessage(m_hObject, iNetwork, tx_msg, 3000)
Dim Fire2ReadSettings As SFIRE2Settings
Dim iNumberOfBytes As Integer
Dim iResult As Integer

'//################################
'//Fire2ReadSettings struct is read
'//and changed as needed before
'//Setting the new values
'//################################

iNumberOfBytes = System.Runtime.InteropServices.Marshal.SizeOf(Fire2ReadSettings)
iResult = icsneoSetFIRE2Settings(m_hObject, Fire2ReadSettings , iNumberOfBytes, 1)

If iResult = 0 Then
    MsgBox("Problem Sending FIRE2 configuration")
    Exit Sub
End If
Private m_hObject As IntPtr '// Declared at form level and previously open with a call to OpenNeoDevice

Dim FireReadSettings As SFireSettings
Dim iNumberOfBytes As Integer
Dim iResult As Integer

'//Get the settings
iNumberOfBytes = System.Runtime.InteropServices.Marshal.SizeOf(FireReadSettings)
iResult = icsneoGetFireSettings(m_hObject, FireReadSettings, iNumberOfBytes)
If iResult = 0 Then
    MsgBox("Problem reading FIRE configuration")
    Exit Sub
End If
lResult = icsneoISO15765_EnableNetworks(m_hObject,NETID_HSCAN);
tx_msg.id = 0x7E0; //ArbID of the message
tx_msg.vs_netid = NETID_HSCAN; //Network to use
tx_msg.num_bytes = 64; //The number of data bytes to use
tx_msg.padding = 0xAA;//Set Padding Byte
//Set the Flags
tx_msg.flags = 0;
tx_msg.paddingEnable = true;
//Set Flow control message
tx_msg.fc_id = 0x7E8; //ArbID for the flow control Frame
tx_msg.fc_id_mask = 0xFFF; //The flow control arb filter mask (response id from receiver)
tx_msg.flowControlExtendedAddress = 0xFE; //Extended ID
tx_msg.fs_timeout = 0x100; //Flow Control Time out in ms
tx_msg.fs_wait = 0x3000; //Flow Control FS=Wait Timeout ms
tx_msg.blockSize = 0; //Block size (for sending flow Control)
tx_msg.stMin = 0;
//Fill data
for(iCounter = 0;iCounter<64;iCounter++)
{
tx_msg.data[iCounter] = iCounter;
}
lResult = icsneoISO15765_TransmitMessage(m_hObject, NETID_HSCAN, &tx_msg, 3000);
(m_hObject
,
&
Fire2ReadSettings
,
iNumberOfBytes
,
1
);
if(iResult == 0)
{
MessageBox::Show("Problem Sending FIRE2 configuration");
return;
}
.
Runtime
.
InteropServices
.
Marshal
.
SizeOf
(Fire2ReadSettings);
iResult = icsNeoDll.icsneoSetFIRE2Settings(m_hObject, ref Fire2ReadSettings , iNumberOfBytes, 1);
if(iResult == 0)
{
MessageBox.Show("Problem Sending FIRE2 configuration");
return;
}
{
MessageBox::Show("Problem reading FIRE configuration");
return;
}
.
Marshal
.
SizeOf
(FireReadSettings);
iResult = icsNeoDll.icsneoGetFireSettings(m_hObject,ref FireReadSettings, iNumberOfBytes);
if (iResult == 0)
{
MessageBox.Show("Problem reading FIRE configuration");
return;
}
lPortType

[in] Specifies the port type of what the device is connected to. This parameter is used with lPortNumber described above. This parameter can be set to NEOVI_COMMTYPE_RS232 (0) for a RS232 Comm port, NEOVI_COMMTYPE_USB_BULK (1) for a USB, or NEOVI_COMMTYPE_TCPIP (3) for a TCP/IP connection. More information on the different types of hardware and the connection it uses can be found in the OpenPortEx Hardware Type help topic.

lDriverType

[in] Specifies which neoVI driver to use. This should always be set to INTREPIDCS_DRIVER_STANDARD (0).

lIPAddressMSB

[in] Specifies upper two bytes of TCP/IP address if the lPortType is set to NEOVI_COMMTYPE_TCPIP (bytes 4 and 3 of this TCP/IP address: 1.2.3.4).

lIPAddressLSBOrBaudRate

[in] Specifies the baud rate if lPortType is NEOVI_COMMTYPE_RS232 and the lower two bytes of the TCP/IP address (bytes 2 and 1 of this TCP/IP address: 1.2.3.4).

bConfigRead

[in] Specifies whether the DLL should read the configuration before enabling the device. It is recommended to set this value to 1. This parameter is ignored when the object is created because the configuration is read by default.

bNetworkIDs

[in] This is an array of number IDs which specify the NetworkID parameter of each network. This allows you to assign a custom network ID to each network. Normally, you will assign consecutive IDs to each of the networks. The network IDs are specified in the following list: NETID_DEVICE = 0, NETID_HSCAN = 1, NETID_MSCAN = 2, NETID_SWCAN = 3, NETID_LSFTCAN = 4, NETID_FORDSCP = 5, NETID_J1708 = 6, NETID_AUX = 7, NETID_JVPW = 8, NETID_ISO = 9. You may also set this parameter to NULL (zero) and the default network ID’s will be used.

The neoVI DLL will use this array when it receives a network message. For example, when the DLL receives a message from HSCAN network it will set the NetworkID parameter of the message structure with the value bNetworkID(NETID_HSCAN).

hObject

[in, out] This is the handle of the neoVI driver object. If this handle is 0, the method will create a new neoVI driver object. This handle will be used in other neoVI API calls to read and transmit messages.

Every time you create a new neoVI driver object you must call icsneoFreeObject (after ClosePort). If you do not you will create a memory leak.

Return Values

If the port has been opened successfully and connection to neoVI is attained, the return value will be 1. If the function fails the return value will be zero. The most common reason for failure is when the neoVI is not connected to the port described in the parameters.

Remarks

Each successful call to OpenPort should be matched with a call to ClosePort. The OpenPort call will reset the timestamp clock.

Examples

OpenNeoDevice
Public Declare Function icsneoOpenPortEx Lib “icsneo40.dll” (ByVal lPortNumber As Integer, ByVal lPortType As Integer, ByVal lDriverID As Integer, ByVal lIPAddressMSB As Integer, ByVal lIPAddressLSBOrBaudRate As Integer, ByVal lForceConfigRead As Integer, ByRef bNetworkID As Byte, ByRef hObject As Integer) As Integer
int _stdcall icsneoOpenPortEx( int lPortNumber, int lPortType, int lDriverType, int lIPAddressMSB, int lIPAddressLSBOrBaudRate, int bConfigRead, unsigned char * bNetworkID, int * hObject);
[DllImport(“icsneo40.dll”)] public static extern int icsneoOpenPortEx(int lPortNumber, int lPortType, int lDriverID,int lIPAddressMSB, int lIPAddressLSBOrBaudRate, int lForceConfigRead, ref byte bNetworkID,ref int hObject);
GetLastAPIError
ScriptLoadScript
ScriptStartScript
unsigned char bNetworkID[16];     // array of network ids
int hObject = 0;         // holds a handle to the neoVI object
unsigned long lCount;            // counter variable
int iIPLSB;
int iIPMSB;

// initialize the networkid array
for (lCount=0;lCount<16;lCount++)
    bNetworkID[lCount] = lCount;


if (!m_bPortOpen) // only if not already opened
{
    iIPLSB = 57600;
    iIPMSB = 0;

    lResult = icsneoOpenPortEx(1 ,NEOVI_COMMTYPE_RS232,INTREPIDCS_DRIVER_STANDARD,iIPMSB,iIPLSB,1,bNetworkID,&hObject);
    if (lResult == 0)
        MessageBox(hWnd,TEXT("Problem Opening Port"),TEXT("neoVI Example"),0);
    else
    {
        m_bPortOpen =true;
        MessageBox(hWnd,TEXT("Port Opened Successfully"),TEXT("neoVI Example"),0);
    }
}
Dim lResult As Long
Dim iIPMSB As Integer
Dim iIPLSB As Integer

iIPMSB = 0
iIPLSB = 0
lResult = 0

''command To Open up the port
If optUsbDevice.Checked = False Then
    iIPLSB = 57600  ''Set Baud Rate for Serial Communication
    lResult = icsneoOpenPortEx(Val(txtCommPortNum.Text), NEOVI_COMMTYPE_RS232, _
        INTREPIDCS_DRIVER_STANDARD, iIPMSB, iIPLSB, 1, NETID_HSCAN, m_hObject)
Else
    lResult = icsneoOpenPortEx(Val(txtCommPortNum.Text), NEOVI_COMMTYPE_USB_BULK, _
            INTREPIDCS_DRIVER_STANDARD, iIPMSB, iIPLSB, 1, NETID_HSCAN, m_hObject)
End If

''Check the status of the opened port
If CBool(lResult) Then
    MsgBox("Port Opened OK!")
Else
    MsgBox("Problem Opening Port")
End If
m_bPortOpen = True
byte bNetworkIDs = 1;
int iPortNumber = 0;
int iReturnVal = 0; //iReturn value tells status of the function call
int iIPMSB = 0;
int iIPLSB = 0;

iPortNumber = Convert.ToInt32( txtCommPortNum.Text); //Convert type of Textbox Value
//Open the Device on the Port indicated in the Text box
if(optUsbDevice.Checked == false)
{
    iIPLSB = 57600;
    iReturnVal = icsNeoDll.icsneoOpenPortEx(iPortNumber, Convert.ToInt32(ePORT_TYPE.NEOVI_COMMTYPE_RS232),
        Convert.ToInt32(eDRIVER_TYPE.INTREPIDCS_DRIVER_STANDARD),iIPMSB ,iIPLSB,1, ref bNetworkIDs,     ref m_hObject);
}
else
{
    iReturnVal = icsNeoDll.icsneoOpenPortEx(iPortNumber, Convert.ToInt32(ePORT_TYPE.NEOVI_COMMTYPE_USB_BULK ),
        Convert.ToInt32(eDRIVER_TYPE.INTREPIDCS_DRIVER_STANDARD),iIPMSB , iIPLSB, 1, ref    bNetworkIDs,ref m_hObject);
}

if (iReturnVal == 0) // test the returned result
{
    MessageBox.Show("Problem Opening Port"); //Error, Show message
}
else
{
    MessageBox.Show("Port opened OK!");
    m_bPortOpen = true; //Set Port Opened Flag
}
int iRetVal;
int iRunStatus;
unsigned long lLastErrNum;

iRetVal = icsneoScriptGetFBlockStatus(hObject, Function_Block_1, &iRunStatus);
if(iRetVal == 0)
{
    printf("\nFailed to check function block status);
}
else
{
    printf("\nFunction block status = %s\r\n", iRunStatus == 0 ? "Stopped" : "Running");
}
Int32 iResult;
Int32 iStatus=0;

//Get Status of Function Block in CoreMini
iResult = icsNeoDll.icsneoScriptGetFBlockStatus(m_hObject, Convert.ToUInt32(cboFBToChange.SelectedIndex), ref iStatus);

if(iResult == 0)
{
    lblFBStatus.Text = "Failed to get CoreMini Status";
}
else
{
    switch(iStatus)
    {
        case (int)ScriptStates.SCRIPT_STATUS_RUNNING:
            lblFBStatus.Text = "CoreMini Function Block Running";
            break;
        case (int)ScriptStates.SCRIPT_STATUS_STOPPED:
            lblFBStatus.Text = "CoreMini Function Block Stopped";
            break;
        default:
            lblFBStatus.Text = "Unhandled State";
            break;
    }
}
Dim iResult As Int32
Dim iStatus As Int32

'//Get Status of Function Block in CoreMini
iResult = icsneoScriptGetFBlockStatus(m_hObject, Convert.ToUInt32(cboFBToChange.SelectedIndex), iStatus)

If iResult = 0 Then
    lblFBStatus.Text = "Failed to get CoreMini Status"
Else
    Select Case iStatus
        Case SCRIPT_STATUS_RUNNING
            lblFBStatus.Text = "CoreMini Function Block Running"
        Case SCRIPT_STATUS_STOPPED
            lblFBStatus.Text = "CoreMini Function Block Stopped"
        Case Else
            lblFBStatus.Text = "Unhandled State"
    End Select
End If

lNumBytes

[in] This must always be set to 1024.

Return Values

Returns 1 if successful, 0 if an error occurred. GetLastAPIError must be called to obtain the specific error. The errors that can be generated by this function are:

NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE = 75

Remarks

This method will only update the configuration defined in the Configuration Array topic. It will also apply checking to the data so that a neoVI is not programmed to an illegal state. For example, setting the CAN controller to an illegal operating mode.

Examples

unsigned char bConfigBytes[1024];
int iNumConfigBytes = 1024;

if(m_bPortOpen)
{
   lResult = icsneoGetConfiguration(hObject, bConfigBytes, &iNumConfigBytes);
   
Public Declare Function icsneoSendConfiguration Lib “icsneo40.dll” (ByVal hObject As Int32, ByRef pData As Byte, ByVal lNumBytes As Int32) As Int32
OpenNeoDevice
GetConfiguration
int _stdcall icsneoSendConfiguration(int hObject, unsigned char *pData, int lNumBytes);
[DllImport("icsneo40.dll")]
public static extern Int32 icsneoSetFireSettings(Int32 hObject, ref SFireSettings pSettings, Int32 iNumBytes, Int32 bSaveToEEPROM);

GetErrorInfo Method - neoVI API

This method returns a text description of an neoVI API error number.

int _stdcall icsneoGetErrorInfo(int lErrorNumber, 
            TCHAR *szErrorDescriptionShort,  
            TCHAR  *szErrorDescriptionLong,
            int *lMaxLengthShort,
            int *lMaxLengthLong,

Public Declare Function icsneoGetErrorInfo Lib "icsneo40.dll" _
            (ByVal lErrorNumber As Int32, _
            ByVal sErrorDescriptionShort As String, _
            ByVal sErrorDescriptionLong As String, _
            ByRef lMaxLengthShort As Int32, _
            ByRef lMaxLengthLong As Int32, _
            ByRef lErrorSeverity As Int32, _
            ByRef lRestartNeeded As Int32) As Int32
[DllImport("icsneo40.dll")]
public static extern int icsneoGetErrorInfo(int iErrorNumber,
            StringBuilder sErrorDescriptionShort, 
            StringBuilder sErrorDescriptionLong, 
            ref 

Parameters

lErrorNumber [in] This is the number of the error message returned from GetErrorMessages. A separate topic describes the possible values for error messages.

sErrorDescriptionShort [out] This is short description of the error. This parameter should be sized to include up to 255 characters including the NULL terminator.

sErrorDescriptionLong [out] This is longer more detailed description of the error. This parameter should be sized to include up to 255 characters including the NULL terminator. lMaxLengthShort [in] This is the size in characters of the sErrorDescriptionShort array that is being passed in. This value must be 255 or less. lMaxLengthLong [in] This is the size in characters of the sErrorDescriptionLong array that is being passed in. This value must be 255 or less.

lErrorSeverity [out] This indicates the error severity. This is estimated severity for the application and doesn't have significant meaning. See Table 1 below for more information.

lRestartNeeded [out] If 1 it is recommend that the application close communications with the DLL and reopen it.

Return Values

If the error number was found successfully the return value will be non-zero.

Remarks

None.

Table 1 - Descriptions of Error Severity

Error Severity
Description

Examples

SVCAN3Settings Structure

his structure defines various settings for the ValueCAN3 device.

typedef VS_MODIFIER struct _SVCAN3Settings
{
    CAN_SETTINGS can1;
    CAN_SETTINGS can2;
    icscm_uint16 network_enables;
    icscm_uint16 network_enabled_on_boot;
    icscm_int16 iso15765_separation_time_offset;
    icscm_uint16 perf_en;
    icscm_uint16 misc_io_initial_ddr;
    icscm_uint16 misc_io_initial_latch;
    icscm_uint16 misc_io_report_period;
    icscm_uint16 misc_io_on_report_events;
Public Structure SVCAN3Settings
    Dim Can1 As CAN_SETTINGS
    Dim Can2 As CAN_SETTINGS
    Dim Network_enables As Int16
    Dim Network_enabled_on_boot As Int16
    Dim Iso15765_separation_time_offset As Int16
    Dim Perf_en As Int16
    Dim Misc_io_initial_ddr As Int16
    Dim Misc_io_initial_latch As Int16
    Dim Misc_io_report_period As Int16
    Dim Misc_io_on_report_events As Int16
End Structure

Remarks

Structure Element

Item
Description

FindAllCOMDevices Method - neoVI API

This function is deprecated. Use FindNeoDevices instead.

This method returns the number of COM (both serial and USB serial) hardware devices connected to the PC.

int _stdcall icsneoFindAllCOMDevices(int lDriverType,
int lGetSerialNumbers,
int lStopAtFirst,
int lUSBCommOnly,
int *p_lDeviceTypes,
int *p_lComPorts,
int 
Public Declare Function icsneoFindAllCOMDevices Lib “icsneo40.dll” _
(ByVal lDriverID As Integer, ByVal lGetSerialNumbers As Integer, _
ByVal lStopAtFirst As Integer, ByVal iUSBCommOnly As Integer, _
ByRef p_lDeviceTypes As Integer, ByRef p_lComPorts As Integer, _
ByRef p_lSerialNumbers As Integer, ByRef lNumDevices As Integer) As Integer
[DllImport(“icsneo40.dll”)] public static extern int icsneoFindAllCOMDevices(int lDriverID, int lGetSerialNumbers,int lStopAtFirst, int iUSBCommOnly, ref int p_lDeviceTypes, 

Parameters

lDriverType

[in] Specifies which neoVI driver to use. This should always be set to INTREPIDCS_DRIVER_STANDARD (0).

lGetSerialNumbers

[in] Specifies whether the serial numbers should be read from the device (iGetSerialNumbers=1). Getting serial numbers will take longer than not doing it therefore so set this to zero if not required for the application. If a device is already opened the serial number cannot be read.

lStopAtFirst

[in] Indicates whether the function should stop at the first device found (lStopAtFirst=1). This is useful when you only have one device connected to the PC.

lUSBCommOnly

[in] Indicates to search USB serial devices only (lUSBCommOnly=1). Normal COM ports will not be searched. Normal COM port searches will take longer to execute.

p_lDeviceTypes

[out] Pointer to array of at least 255 elements. This array will be filled in with the type of device found. The valid device types include INTREPIDCS_DEVICE_NEO4 (0), INTREPIDCS_DEVICE_VCAN (1), or INTREPIDCS_DEVICE_NEO6 (2).

p_lComPorts

[out] Pointer to array of at least 255 elements. This array will be filled in with the com port numbers of each connected device.

p_lSerialNumbers

[out] Pointer to array of at least 255 elements. This array will be filled in with the serial number of each device if argument lGetSerialNumbers=1.

iNumDevices

[out] Points to a value which contains the number of devices found.

Return Values

If this function operates successfully the return value will be 1. If the function fails the return value will be zero.

Remarks

None.

Examples

ScriptLoad Method - neoVI API

This method downloads a script to a connected neoVI device into a specified location.

int _stdcall icsneoScriptLoad(void * hObject, const unsigned char *bin, unsigned long len_bytes, int iLocation);
Public Declare Function icsneoScriptLoad Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByRef bin As Byte, ByVal Len_Bytes As UInt32, ByVal iLocation As Int32) As Int32
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoScriptLoad(IntPtr hObject, ref byte bin, UInt32 len_bytes, Int32 iLocation);

Parameters

hObject

[in] Specifies the driver object created by OpenNeoDevice.

bin[in] An array of bytes that represent a compiled script. These bytes are contained in a header file called cmvspy.h.

This file is created by Vehicle Spy when a script is compiled. Please see Vehicle Spy documentation for details.

len_bytes

[in] Specifies the number of bytes represented by the bin parameter

iLocation

[in] Specifies the physical location to where the script will be loaded on the neoVI device. Valid values are as follows:

SCRIPT_LOCATION_FLASH_MEM = 0 (Valid only on a neoVI Fire or neoVI Red)SCRIPT_LOCATION_SDCARD = 1 (Valid only on a neoVI Fire or neoVI Red)SCRIPT_LOCATION_VCAN3_MEM = 4 (Valid only on a ValueCAN 3 device)

These values are defined in the icsnVC40.h file

Return Values

1 if the function succeeded. 0 if it failed for any reason. must be called to obtain the specific error. The errors that can be generated by this function are:

NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE = 75

NEOVI_ERROR_DLL_INVALID_SCRIPT_LOCATION = 213

NEOVI_ERROR_DLL_SDCARD_NOT_INSERTED = 214

NEOVI_ERROR_DLL_SDCARD_WRITE_ERROR = 216

NEOVI_ERROR_DLL_SCRIPT_ERROR_DOWNLOADING_SCRIPT = 220

NEOVI_ERROR_DLL_SDCARD_READ_ERROR = 217

Remarks

The script will be stored on the device in the specified location. If the location is SCRIPT_LOCATION_FLASH_MEM or SCRIPT_LOCATION_SDCARD the script will persist in the device in that location until cleared by . If the neoVI device is booted (plugged in to power) without being connected to a USB port the stored script will execute. The location SCRIPT_LOCATION_VCAN3_MEM applies only to the ValueCAN 3 device and the storage will be cleared when power is removed from the device.

Examples

TxMessages Method - neoVI API

This method transmits messages asynchronously to vehicle networks using the neoVI hardware.

int _stdcall icsneoTxMessages(void * hObject, icsSpyMessage *pMsg, int lNetworkID, int lNumMessages);c+
Public Declare Function icsneoTxMessages Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByRef pMsg As icsSpyMessage, ByVal lNetworkID As Int32, ByVal lNumMessages As Int32) As Int32
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoTxMessages(IntPtr hObject, ref icsSpyMessage pMsg, Int32 lNetworkID, Int32 lNumMessages);

Parameters

hObject

[in] Handle which specifies the driver object created by OpenNeoDevice.

pMsg

[in] This is the address of the first element of an array of icsSpyMessage structures. This array will be loaded by the application software with messages that are to be transmitted by the hardware.

lNetworkID

[in] Specifies the network to transmit the message on. See List for a list of valid Network ID values. Network support varies by neoVI device. NETID_DEVICE transmits on to the neoVI Device Virtual Network (see users manual).

lNumMessages

[in] Specifies the number of messages to be transmitted. This parameter should always be set to one unless you are transmitting a long Message. Transmitting long messages on ISO or J1708 is described in a .

Return Values

Returns 1 if successful, 0 if an error occurred. must be called to obtain the specific error. The errors that can be generated by this function are:

NEOVI_ERROR_DLL_ISOTX_DATA_BUFFER_ALLOC = 13

NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE = 75

NEOVI_ERROR_DLL_ILLEGAL_TX_NETWORK= 90

NEOVI_ERROR_DLL_3G_DEVICE_LICENSE_NEEDS_TO_BE_UPGRADED = 190

Remarks

This function call adds a transmit message to the transmit queue. The message will be transmitted when the network is free and all previously transmitted messages have been transmitted. Transmitting long messages which are greater than 12 bytes on ISO or J1708 is described in a .

Transmit Report

After the messages has been transmitted there will be a transmit report message returned from the device. The transmit report will be read out with . Any message read which has the SPY_STATUS_TX_MSG (icsSpyStatusTx) bit set in the is a transmit report.

You can also identify a particular transmitted message with DescriptionID field. This two byte field (only 14 bits are used) allows the programmer to assign an arbitrary number to a message. This number is then returned in the transmit report.

The transmit report does not necessarily mean the message was transmitted successfully. For example, the Ford SCP network will return a Transmit Report if it had tried to send a message. Therefore, the programmer should always check the GlobalError Flag in the .

To transmit different messages, set the appropriate bits in the . For example, there are bits for init waveforms, extended identifiers and remote frames.

Examples

GetMessages Method - neoVI API

int _stdcall icsneoGetMessages(void * hObject, icsSpyMessage *pMsg, int *pNumberOfMessages, int *pNumberOfErrors);
Public Declare Function icsneoGetMessages Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByRef pMsg As icsSpyMessage, ByRef pNumberOfMessages As Int32, ByRef pNumberOfErrors As Int32) As Int32
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoGetMessages(IntPtr hObject, ref icsSpyMessage pMsg, ref Int32 pNumberOfMessages, ref Int32 pNumberOfErrors);

Parameters

hObject

[in] Specifies the driver object created by OpenNeoDevice.

pMsg

[out] This is the address of the first element of an array of icsSpyMessage structures. This array will be loaded with messages received by the hardware. This array must be sized to fit 20,000 icsSpyMessage structures.

pNumberOfMessages

[out] Specifies the number of messages the driver has loaded in the pMsg array. This number can be up to 20,000 messages.

pNumberOfErrors

[out] Specifies the number of errors in the neoVI DLL error queue. Errors are obtained using .

Return Values

Returns 1 if successful, 0 if an error occurred. must be called to obtain the specific error. This function will return 1 even if no messages were received, provided there are no errors. The errors that can be generated by this function are:

NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE = 75

Remarks

The driver object will hold 20,000 received messages before it will generate an rx buffer overflow error (indicated by a error message in the error queue). It is the job of the application software to read this buffer at regular intervals. The rate that the application needs to read these messages is dependant on the rate messages are received on the bus. For example, a high bandwidth CAN bus can generate 5000 messages per second. In this case you must read out the messages at least every four seconds or overflow errors will result.

Examples

SVCAN412Settings Structure

This structure defines various settings for the ValueCAN4-1 and ValueCAN4-2 devices.

Remarks

Item
Description

TxMessagesEx Method - neoVI API

This method transmits longer messages asynchronously to vehicle networks using the neoVI hardware. Method supports CAN FD and Ethernet networks.

Parameters

hObject

[in] Handle which specifies the driver object created by

pMsg

[in] This is the address of the first element of an array of structures. This array will be loaded by the application software with messages that are to be transmitted by the hardware.

Dim bConfigBytes(1024) As Byte ''Storage for Data bytes from device
Dim iNumBytes As Integer ''Storage for Number of Bytes
Dim lResult As Integer ''Storage for Result of Called Function
Dim Counter As Integer
Dim iNumberOfErrors As Long ''Storage for Number of Errors Received

''Clear ListBox
lstConfigInformation.Items.Clear()
''Call Get Configuration
lResult = icsneoGetConfiguration(m_hObject, bConfigBytes(0), iNumBytes)
''Fill Listbox with Data From Function Call
For Counter = 0 To 1024
   lstConfigInformation.Items.Add("Byte Number-" & Counter & " Byte Data-" & bConfigBytes(Counter))
Next Counter

'/---------------------READ CONFIGURATION -----------------------------------------------

''Set HS CAN Baud Rate Information
bConfigBytes(NEO_CFG_MPIC_HS_CAN_CNF1) = Val("&H" & txtCNF1.Text)
bConfigBytes(NEO_CFG_MPIC_HS_CAN_CNF2) = Val("&H" & txtCNF2.Text)
bConfigBytes(NEO_CFG_MPIC_HS_CAN_CNF3) = Val("&H" & txtCNF3.Text)

'/---------------------SEND CONFIGURATION -----------------------------------------------
''Call Sned configuration
lResult = icsneoSendConfiguration(m_hObject, bConfigBytes(0), iNumBytes)

'// make sure the read was successful
If Not CBool(lResult) Then
   MsgBox("Problem sending configuration")
   lResult = icsneoClosePort(m_hObject, iNumberOfErrors)
   Exit Sub
Else
   MsgBox("Configuration Successfull")
End If
byte[] bConfigBytes= new byte[1024]; //Storage for Data bytes from device
int iNumBytes = 0; //Storage for Number of Bytes
int lResult = 0; //Storage for Result of Called Function
int Counter;
int lNumberOfErrors = 0; //Storage for Number of Errors Received

//Clear ListBox
lstConfigInformation.Items.Clear();

//---------------------READ CONFIGURATION -----------------------------------------------

//Call Get Configuration
lResult = icsNeoDll.icsneoGetConfiguration(m_hObject, ref bConfigBytes[0],ref iNumBytes);

//Fill Listbox with Data From Function Call
for(Counter=0; Counter<1024;Counter++)
{
   lstConfigInformation.Items.Add("Byte Number-" + Counter + " Byte Data-" + bConfigBytes[Counter]);
}

//Set HS CAN Baud Rate Information
bConfigBytes[Convert.ToInt32(icsConfigSetup.NEO_CFG_MPIC_HS_CAN_CNF1)] = Convert.ToByte(ConvertFromHex(txtCNF1.Text));
bConfigBytes[Convert.ToInt32(icsConfigSetup.NEO_CFG_MPIC_HS_CAN_CNF2)] = Convert.ToByte(ConvertFromHex(txtCNF2.Text));
bConfigBytes[Convert.ToInt32(icsConfigSetup.NEO_CFG_MPIC_HS_CAN_CNF3)] = Convert.ToByte(ConvertFromHex(txtCNF3.Text));

//---------------------SEND CONFIGURATION -----------------------------------------------
//Call Sned configuration
lResult = icsNeoDll.icsneoSendConfiguration(m_hObject, ref bConfigBytes[0], iNumBytes);

// make sure the read was successful
if(lResult==0)
{
   MessageBox.Show("Problem sending configuration");
   lResult = icsNeoDll.icsneoClosePort(m_hObject, ref lNumberOfErrors);
}
else
{
   MessageBox.Show("Configuration Successfull");
}
[StructLayout(LayoutKind.Sequential)]
public struct SVCAN3Settings
{
    public CAN_SETTINGS can1;
    public CAN_SETTINGS 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;
}
if
(lResult
==
0
)
MessageBox(hWnd,TEXT("Problem Reading Configuration"),TEXT("neoVI Example"),0);
else
{
iOldCNF1=bConfigBytes[NEO_CFG_MPIC_HS_CAN_CNF1];
iOldCNF2=bConfigBytes[NEO_CFG_MPIC_HS_CAN_CNF2];
iOldCNF3=bConfigBytes[NEO_CFG_MPIC_HS_CAN_CNF3];
// 250 K for Value CAN 500k for neoVI (neoVI and valuecan use different CAN controller rates)
bConfigBytes[NEO_CFG_MPIC_HS_CAN_CNF1] = 0x03;
bConfigBytes[NEO_CFG_MPIC_HS_CAN_CNF2] = 0xB8;
bConfigBytes[NEO_CFG_MPIC_HS_CAN_CNF3] = 0x05;
lResult = icsneoSendConfiguration(hObject, bConfigBytes, iNumConfigBytes);
if (lResult == 0)
MessageBox(hWnd,TEXT("Problem Updating Configuration"),TEXT("neoVI Example"),0);
else
{
wsprintf(szOut,TEXT("Old Values: HSCAN CNF1 = %x HSCAN CNF2 = %x HSCAN CNF3 = %x \n\nNew Values HSCAN CNF1 = %x HSCAN CNF2 = %x HSCAN CNF3 = %x "),
iOldCNF1,
iOldCNF2,
iOldCNF3,
bConfigBytes[NEO_CFG_MPIC_HS_CAN_CNF1],
bConfigBytes[NEO_CFG_MPIC_HS_CAN_CNF2],
bConfigBytes[NEO_CFG_MPIC_HS_CAN_CNF3]);
MessageBox(hWnd,szOut,TEXT("neoVI Example"),0);
}
}
}
else
MessageBox(hWnd,TEXT("Port Not Open"),TEXT("neoVI Example"),0);

lNetworkID

[in] Specifies the network to transmit the message on. See NetworkID List for a list of valid Network ID values. Network support varies by neoVI device. NETID_DEVICE transmits on to the neoVI Device Virtual Network (see users manual).

lNumMessages

[in] Specifies the number of messages to be transmitted. This parameter should always be set to one unless you are transmitting a long Message. Transmitting long messages on ISO or J1708 is described in a different topic.

NumTxed

[out] Specifies the number of messages that have been transmitted.

reserved

[in] Reserved parameter for future use. Set to 0.

Return Values

Returns 1 if successful, 0 if an error occurred. GetLastAPIError must be called to obtain the specific error. The errors that can be generated by this function are:

NEOVI_ERROR_DLL_ISOTX_DATA_BUFFER_ALLOC = 13

NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE = 75

NEOVI_ERROR_DLL_ILLEGAL_TX_NETWORK= 90

NEOVI_ERROR_DLL_3G_DEVICE_LICENSE_NEEDS_TO_BE_UPGRADED = 190

Remarks

This function call adds a transmit message to the transmit queue for CAN FD (more than 8 bytes) and Ethernet. The message will be transmitted when the network is free and all previously transmitted messages have been transmitted.

Transmit Report

After the messages has been transmitted there will be a transmit report message returned from the device. The transmit report will be read out with GetMessages. Any message read which has the SPY_STATUS_TX_MSG (icsSpyStatusTx) bit set in the status bitfield is a transmit report.

You can also identify a particular transmitted message with DescriptionID field. This two byte field (only 14 bits are used) allows the programmer to assign an arbitrary number to a message. This number is then returned in the transmit report.

The transmit report does not necessarily mean the message was transmitted successfully. For example, the Ford SCP network will return a Transmit Report if it had tried to send a message. Therefore, the programmer should always check the GlobalError Flag in the status bitfield.

To transmit different messages, set the appropriate bits in the status bitfield. For example, there are bits for init waveforms, extended identifiers and remote frames.

Examples

Public Declare Function icsneoTxMessagesEx Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByRef pMsg As icsSpyMessage, ByVal lNetworkID As Int32, ByVal lNumMessages As Int32, ByRef NumTxed As Int32, ByVal reserved As Int32) As Int32int _stdcall icsneoTxMessagesEx(void * hObject, icsSpyMessage *pMsg, int lNetworkID, int lNumMessages, int *NumTxed, int reserved);
OpenNeoDevice
icsSpyMessage
int _stdcall icsneoTxMessagesEx(void * hObject, icsSpyMessage *pMsg, int lNetworkID, int lNumMessages, int *NumTxed, int reserved);
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoTxMessagesEx(IntPtr hObject, ref icsSpyMessage pMsg, Int32 lNetworkID, Int32 lNumMessages, ref Int32 NumTxed, Int32 reserved);
int *lErrorSeverity,
int *lRestartNeeded);
int
iMaxLengthShort
,
ref int iMaxLengthLong,
ref int lErrorSeverity ,
ref int lRestartNeeded);

const unsigned long icsspyErrCritical=0x10;

A critical error which affects operation or accuracy

const unsigned long icsspyErrExclamation=0x30;

An important error which may be critical depending on the application.

const unsigned long icsspyErrInformation=0x40;

An error which probably does not need attention.

const unsigned long icsspyErrQuestion=0x20;

An error which is not understood.

*
p_lSerialNumbers
,
int *lNumDevices);
ref
int
p_lComPorts
,
ref
int
p_lSerialNumber
,
ref
int
lNumDevices);
GetLastAPIError
ScriptClear
NetworkIDList
different topic
GetLastAPIError
different topic
GetMessages
status bitfield
status bitfield
status bitfields
GetErrorMessages
GetLastAPIError
NEOVI_ERROR_DLL_RX_MSG_BUFFER_OVERFLOW
Dim lResult As Long ''Storage for Result of Call
Dim iNumberOfErrors As Long ''Storage for number of errors
Dim lNumberOfMessages As Long ''Storage for number of messages
Dim stMessages(20000) As icsSpyMessage '// Array of message structures to hold the received data

lResult = icsneoGetMessages(m_hObject, stMessages(0), lNumberOfMessages, iNumberOfErrors) ''Call get message function
If Not CBool(lResult) Then ''See if Call was successful
    MsgBox("Problem Getting Messages")
    Exit Sub
End If
void * hObject = 0;                 // holds a handle to the neoVI object
icsSpyMessage stMessages[20000]; // holds the received messages
int iResult;
int iNumberOfErrors;
int iNumberOfMessages;

// read out the messages
iResult = icsneoGetMessages(hObject,stMessages,&iNumberOfMessages,&iNumberOfErrors);
if (iResult == 0)
    MessageBox(hWnd,TEXT("Problem Reading Messages"),TEXT("neoVI Example"),0);
else
    MessageBox(hWnd, TEXT("Messages Read Successfully"),TEXT("neoVI Example"),0);
long lResult;
icsSpyMessage stMessagesTx;
int lNetworkID;
unsigned int iNumberTxed;
unsigned char iDataBytes[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63}; //Data to send

//Send on HS CAN
lNetworkID = NETID_HSCAN;

//Set the ID
stMessagesTx.ArbIDOrHeader = 0x123;
stMessagesTx.NumberBytesHeader = 0;
stMessagesTx.StatusBitField = 0; //11 bit ID
stMessagesTx.Protocol = SPY_PROTOCOL_CANFD;
stMessagesTx.StatusBitField3 = 16; //Enable bitrate switch

// The number of Data Bytes
//NOTE: CAN FD is limited to lengths of 0,1,2,3,4,5,6,7,8,12,16,20,24,32,48,64
stMessagesTx.NumberBytesData = 64;

//Enable Extra Data Pointer
stMessagesTx.ExtraDataPtrEnabled = 1;
stMessagesTx.ExtraDataPtr = &iDataBytes;
lResult = icsneoTxMessagesEx(m_hObject, &stMessagesTx, lNetworkID, 1, &iNumberTxed, 0);

if (iResult == 0)
    MessageBox(hWnd,TEXT("Problem Transmitting Messages"),TEXT("neoVI Example"),0);
Dim lResult As Long
Dim stMessagesTx As New icsSpyMessage
Dim lNetworkID As Integer
Dim iNumberTxed As Int32
Dim sSplitString() As String
Dim iDataBytes() As Byte = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63}
Dim iCounter As Int32


'//Get pointer to data
Dim gcHandle As System.Runtime.InteropServices.GCHandle = System.Runtime.InteropServices.GCHandle.Alloc(iDataBytes, System.Runtime.InteropServices.GCHandleType.Pinned)
Dim CanFDptr As IntPtr = gcHandle.AddrOfPinnedObject

'//Send on HS CAN
lNetworkID = GetNetworkIDfromString(lstCANFDNetwork.Text)

'//Set the ID
stMessagesTx.ArbIDOrHeader = &h7E0

'// The number of Data Bytes
'//NOTE: CAN FD is limited to lengths of 0,1,2,3,4,5,6,7,8,12,16,20,24,32,48,64
stMessagesTx.NumberBytesData = 64

stMessagesTx.NumberBytesHeader = 0
stMessagesTx.iExtraDataPtr = CanFDptr
stMessagesTx.Protocol = SPY_PROTOCOL_CANFD

'//Use Normal ID
stMessagesTx.StatusBitField = 0
stMessagesTx.StatusBitField2 = 0
stMessagesTx.StatusBitField3 = 16 '//Enable bitrate switch

'// Transmit the assembled message
'//CAN FD More than 8 bytes
'//Enable Extra Data Pointer
stMessagesTx.ExtraDataPtrEnabled = 1
lResult = icsneoTxMessagesEx(m_hObject, stMessagesTx, lNetworkID, 1, iNumberTxed, 0)

If Not CBool(lResult) Then
    MsgBox("Problem Transmitting Message")
End If
gcHandle.Free()
//Hardware must have CAN FD support for this tor work.

int lResult;
icsSpyMessage stMessagesTx = new icsSpyMessage();
int lNetworkID;
uint iNumberTxed = 0;
byte[] iDataBytes = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
int iCounter;

//Get pointer to data (could also be done with Unsafe code)
System.Runtime.InteropServices.GCHandle gcHandle = System.Runtime.InteropServices.GCHandle.Alloc(iDataBytes, System.Runtime.InteropServices.GCHandleType.Pinned);
IntPtr CanFDptr = gcHandle.AddrOfPinnedObject();

//Send on HS CAN

string sNetIDToUse = 1;
lNetworkID = icsNeoDll.GetNetworkIDfromString(ref sNetIDToUse);

//Set the ID
stMessagesTx.ArbIDOrHeader = 0x7E0;

// The number of Data Bytes
//NOTE: CAN FD is limited to lengths of 0,1,2,3,4,5,6,7,8,12,16,20,24,32,48,64
stMessagesTx.NumberBytesData = 64;
stMessagesTx.NumberBytesHeader = 0;
stMessagesTx.iExtraDataPtr = CanFDptr;
stMessagesTx.Protocol = Convert.ToByte(CSnet.ePROTOCOL.SPY_PROTOCOL_CANFD);

//Use Normal ID
stMessagesTx.StatusBitField = 0;
stMessagesTx.StatusBitField2 = 0;
stMessagesTx.StatusBitField3 = 16; //Enable bitrate switch

//CAN FD More than 8 bytes
//Enable Extra Data Pointer
stMessagesTx.ExtraDataPtrEnabled = 1;
lResult = icsNeoDll.icsneoTxMessagesEx(m_hObject, ref stMessagesTx, Convert.ToUInt32(lNetworkID), 1, ref iNumberTxed, 0);

// Test the returned result
if (lResult != 1)
{
    MessageBox.Show("Problem Transmitting Message");
}
gcHandle.Free();
// Read the errors from the DLL
lResult = icsneoGetErrorMessages(hObject,iErrors,&lNumberOfErrors);

if (lResult == 0)
    MessageBox(hWnd,TEXT("Problem Reading errors"),TEXT("neoVI Example"),0);

// dump the neoVI errors
if (lNumberOfErrors > 0)
{
    for (lCount=0;lCount <lNumberOfErrors;lCount++)
    {

        wsprintf(szOut,TEXT("Error %d - "),iErrors[lCount]);
            OutputDebugString(szOut);
            icsneoGetErrorInfo(iErrors[lCount],szDescriptionShort,szDescriptionLong,
                        &lMaxLengthShort,&lMaxLengthLong,&lErrorSeverity,&lRestartNeeded);

        OutputDebugString(szDescriptionShort);
        OutputDebugString(TEXT("\n"));
    }
}
else
    OutputDebugString(TEXT("No Errors to report\n"));
Public Function icsneoGetDLLErrorInfo(ByVal lErrorNum As Int32, ByRef sErrorShort As String, ByRef sErrorLong As String, ByRef lSeverity As Int32, ByRef bRestart As Int32) As Boolean

Dim lErrorLongLength As Int32
Dim lErrorShortLength As Int32
Dim lRestart As Int32
Dim lResult As Int32

    sErrorLong = New String(Chr(0), 255)
    sErrorShort = New String(Chr(0), 255)
    lErrorLongLength = 255
    lErrorShortLength = 255
    lResult = icsneoGetErrorInfo(lErrorNum, sErrorShort, sErrorLong, lErrorShortLength, lErrorLongLength, lSeverity, lRestart)

    sErrorShort = Left(sErrorShort, lErrorShortLength)
    sErrorLong = Left(sErrorLong, lErrorLongLength)
    bRestart = CBool(lRestart)
    icsneoGetDLLErrorInfo = CBool(lResult)
End Function

**This function reads errors and loads them into a list box**

Private Sub cmdGetErrors_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdGetErrors.Click

Dim lResult As Integer '//Storage for result of Function Call
Dim lErrors(600) As Int32 '//Array for Error information
Dim lNumberOfErrors As Integer '//Storage for Number of Errors
Dim lCount As Integer '//Counter
Dim sErrorShort As String '//String Holding Short Error Name
Dim sErrorLong As String '//String Holding Long Error Name
Dim iSeverity As Int32 '//Storage for Level of error
Dim bRestart As Int32 '//flag for if Restart is required

    '// Read Out the errors
    lResult = icsneoGetErrorMessages(m_hObject, lErrors(0), lNumberOfErrors)
    '// Test the returned result
    If Not CBool(lResult) Then
        MsgBox("Problem Reading Errors")
    Else
        '//List Error information
        lstErrorHolder.Items.Clear()
        For lCount = 1 To lNumberOfErrors
            Call icsneoGetDLLErrorInfo(lErrors(lCount - 1), sErrorShort, sErrorLong, iSeverity, bRestart)
            lstErrorHolder.Items.Add(sErrorShort + " - Description" + _
                    sErrorLong + " - Errornum: " + Convert.ToString(lErrors(lCount - 1)))
        Next lCount
    End If
End Sub
private void cmdGetErrors_Click(object sender, System.EventArgs e)
{
    int iResult = 0; //Storage for Result of Call
    int[] iErrors = new int[600]; //Array for Error Numbers
    int iNumberOfErrors = 0; // Storage for number of errors
    int iCount= 0; //Counter
    int iSeverity =0; //tells the Severity of Error
    int iMaxLengthShort = 0; //Tells Max length of Error String
    int iMaxLengthLong = 0; //Tells Max Length of Error String
    int lRestart = 0; //tells if a restart is needed
    StringBuilder sErrorShort = new StringBuilder(256); //String for Error
    StringBuilder sErrorLong = new StringBuilder(256); //String for Error
    iMaxLengthShort = 1; //Set initial conditions
    iMaxLengthLong = 1; //Set initial conditions
    // Read Out the errors
    iResult = icsNeoDll.icsneoGetErrorMessages(m_hObject,ref iErrors[0],ref iNumberOfErrors);
    // Test the returned result
    if(iResult == 0)
    {
        MessageBox.Show ("Problem Reading Errors");
    }
    else
    {
        if(iNumberOfErrors != 0)
        {
            for(iCount=0;iCount< iNumberOfErrors;iCount++)
            {
                //Get Text Description of the Error
                iResult = icsNeoDll.icsneoGetErrorInfo(iErrors[iCount],
                    sErrorShort, sErrorLong ,ref iMaxLengthShort , ref iMaxLengthLong, ref iSeverity,ref lRestart);
                lstErrorHolder.Items.Add (sErrorShort + " - Description " + sErrorLong + " - Errornum: " + iErrors[iCount]);
            }
        }
    }
}
Opens first device on USB Com port either a ValueCAN or neoVI PRO

int iDeviceTypes[255];
int iComPort[255];
int iSerialNum[255];
int iOpenedStates[255];
int iDeviceNumbers[255];
int iNumDevices;

if (icsneoFindAllCOMDevices(INTREPIDCS_DRIVER_STANDARD, 0,1,1,iDeviceTypes,iComPort,iSerialNum,&iNumDevices))
{

    if (iNumDevices > 0)
    {

        lResult = icsneoOpenPortEx(iComPort[0] ,NEOVI_COMMTYPE_RS232,
                                                                        INTREPIDCS_DRIVER_STANDARD,0,57600,1,bNetworkID, &hObject);

    if (lResult == 0)
        MessageBox(hWnd,TEXT("Problem Opening Port"),TEXT("neoVI Example"),0);
    else
    {

            MessageBox(hWnd,TEXT("Port Opened Successfully"),TEXT("neoVI Example"),0);
        }

    }
}
else
    MessageBox(hWnd,TEXT("Problem Opening Port"),TEXT("neoVI Example"),0);

}
else

    MessageBox(hWnd,TEXT("Problem Opening Port"),TEXT("neoVI Example"),0);
This example demonstrates loading a list box with all the devices connected to the PC

int lResult = 0; //Storage for Result of Function call
int[] iDevices = new int[127]; //Array for the device numbers
int[] iSerialNumbers = new int[127]; //Araay for serial numbers of attached devices
int[] iOpenedStatus = new int[127]; //Array of the status of the driver
int iNumDevices = 0; //Storage for the number of devices
int[] iCommPortNumbers = new int[127]; //Array of Comm Port numbers in use
int Counter = 0; //Counter for Counting things

//Call function for Finding all Comm deivces
lResult = icsNeoDll.icsneoFindAllCOMDevices(Convert.ToInt32 (eDRIVER_TYPE.INTREPIDCS_DRIVER_STANDARD), 1,0,0,ref iDevices[0],ref iCommPortNumbers[0], ref iSerialNumbers[0],ref
iNumDevices)

//Check the status of the funciton call
if(lResult==1)
{
    //Fill in list box with device findings
    for(Counter=0;Counter<127; Counter++)
    {
        lstCommDevices.Items.Add("Device Type-" + Convert.ToString(iDevices[Counter]) + " SN-" + Convert.ToString(iSerialNumbers[Counter]) + " Port #" + Convert.ToString(iCommPortNumbers[Counter]));
    }
}
else
{
    //display error box if could not find anything
    MessageBox.Show("Could Not Find anything");
}
This example demonstrates loading a list box with all the devices connected to the PC

Dim lResult As Integer ''Storage for Result of Function call
Dim iDevices(127) As Integer ''Array for the device numbers
Dim iSerialNumbers(127) As Integer ''Array for Serial numbers of attached devices
Dim iOpenedStatus(127) As Integer ''Array of Status of Driver
Dim iNumDevices As Integer ''Storage for the number of devices
Dim iCommPortNumbers(127) As Integer ''Array of Comm port numbers in use
Dim Counter As Integer ''Counter for counting things

''Function call for Finding all of the Comm devices
lResult = icsneoFindAllCOMDevices(INTREPIDCS_DRIVER_STANDARD, 1, 0, 0, iDevices(0), iCommPortNumbers(0), iSerialNumbers(0), iNumDevices)
''check the results
If lResult = 1 Then
    For Counter = 0 To 127
    ''Fill list box with device findings
    lstCommDevices.Items.Add("Device Type-" + Convert.ToString(iDevices(Counter)) + _
        " SN-" + Convert.ToString(iSerialNumbers(Counter)) + " Port #" + Convert.ToString(iCommPortNumbers(Counter)))
Next Counter
Else
    ''Display error message if could not find anything
    MsgBox("Could not find anything")
End If
int iRetVal;
unsigned long lLastErrNum;
unsigned long NumBinBytes;
NumBinBytes = CM_EXE_SIZE; //from the cmvspy.h file. The length of the compiled script
//ucharConfigurationArrayPM is defined in cmvspy.h.
//It is a pointer to the array of compiled script bytes

iRetVal = icsneoScriptLoad(hObject, ucharConfigurationArrayPM, NumBinBytes, DefaultScriptLocation);
if(iRetVal == 0)
{
    printf("\nFailed to load the script into the neo device);
}
else
{
    printf("\nSuccessfully loaded the script into the neoVI");
}
Int32 iResult;
UInt32 iLength=0;
byte[] CoreMiniData=new byte[1];

'//Helper function
iResult = GetCoreMiniData(ref CoreMiniData,ref iLength);

if(iResult != 1)
{
    MessageBox.Show("Problem Loading CoreMini");
    return;
}

iResult = icsNeoDll.icsneoScriptLoad(m_hObject,ref CoreMiniData[0], iLength, Convert.ToInt32(CoreMiniStoreLocation.SCRIPT_LOCATION_FLASH_MEM));

if(iResult == 0)
{
    lblCMStatus.Text = "CoreMini Not Loaded";
}
else
{
    lblCMStatus.Text = "CoreMini loaded into hardware";
}


//Helper function for reading the *.vs3cmbeMini file

private Int32 GetCoreMiniData(ref byte[] DataArray,ref UInt32 DataLength)
{
string sNameOfFile;
System.IO.FileStream ReadFileStream;
System.IO.BinaryReader ReadBinaryData;

    //Open file Dialog
    OpenFileDialog.ShowDialog();
    sNameOfFile = OpenFileDialog.FileName;
    // Check for the file to exist
    if(!System.IO.File.Exists(sNameOfFile)) return 0;
    //Read data in
    try
    {
        ReadFileStream = new System.IO.FileStream(sNameOfFile, System.IO.FileMode.Open);
        ReadBinaryData = new System.IO.BinaryReader(ReadFileStream);
        DataLength = Convert.ToUInt32(ReadFileStream.Length);
        DataArray = ReadBinaryData.ReadBytes(Convert.ToInt32(DataLength));
        ReadFileStream.Close();
        return 1;
    }
    catch(System.Exception ex)
    {
        return 0;
    }
}
Dim iResult As Int32
Dim iLength As UInt32
Dim CoreMiniData(1) As Byte

'//Helper function
iResult = GetCoreMiniData(CoreMiniData, iLength)

If iResult <> 1 Then MsgBox("Problem Loading CoreMini", MsgBoxStyle.OKOnly) : Exit Sub

Select Case iOpenDeviceType
    Case NEODEVICE_VCAN3
        iResult = icsneoScriptLoad(m_hObject, CoreMiniData(0), iLength, SCRIPT_LOCATION_VCAN3_MEM)
    Case NEODEVICE_FIRE
        iResult = icsneoScriptLoad(m_hObject, CoreMiniData(0), iLength, SCRIPT_LOCATION_FLASH_MEM)
    Case Else
        MsgBox("Hardware does not support CoreMini")
        iResult = 0
End Select

If iResult = 0 Then
    lblCMStatus.Text = "CoreMini Not Loaded"
Else
    lblCMStatus.Text = "CoreMini loaded into hardware"
End If

'//Helper function for reading the \*.vs3cmbeMini file
Private Function GetCoreMiniData(ByRef DataArray() As Byte, ByRef DataLength As UInt32) As Int32
Dim sNameOfFile As String
Dim ReadFileStream As IO.FileStream

'//Open file Dialog
OpenFileDialog.ShowDialog()
sNameOfFile = OpenFileDialog.FileName

'// Check for the file to exist
If Not IO.File.Exists(sNameOfFile) Then Return 0
'//get the data length
DataLength = Convert.ToUInt32(FileLen(sNameOfFile))
'//Read data in
Try
    ReadFileStream = New IO.FileStream(sNameOfFile, IO.FileMode.Open)
    Dim ReadBinaryData As New IO.BinaryReader(ReadFileStream)
    DataArray = ReadBinaryData.ReadBytes(Convert.ToInt32(DataLength))
    ReadFileStream.Close()
Catch ex As Exception
    ReadFileStream.Close()
    Return 0
End Try

Return 1
End Function
void * hObject = 0; // holds a handle to the neoVI object


icsSpyMessage stMsg;
int iResult;

// Load the message to be transmitted ArbID = FF standard data 0x22 0x52 0x12 0x28
stMsg.ArbIDOrHeader = 0xFF;
stMsg.NumberBytesData = 4;
stMsg.Data[0] = 0x22;
stMsg.Data[1] = 0x52;
stMsg.Data[2] = 0x12;
stMsg.Data[3] = 0x28;

// Status Bitfield standard ID no remote frame
stMsg.StatusBitField = 0;
stMsg.StatusBitField2 = 0;


// Transmit the message on high speed can
iResult = icsneoTxMessages(hObject,&stMsg,NETID_HSCAN,1);
if (iResult == 0)
    MessageBox(hWnd,TEXT("Problem Transmitting Messages"),TEXT("neoVI Example"),0);
Dim lResult As Long
Dim stMessagesTx As icsSpyMessage
Dim lNumberBytes As Long
Dim sDataArray(7) As String

sDataArray(0) = txtDataByte1.Text ''Put data from form in
sDataArray(1) = txtDataByte2.Text ''form of Array
sDataArray(2) = txtDataByte3.Text
sDataArray(3) = txtDataByte4.Text

stMessagesTx.ArbIDOrHeader = Val("&H" & txtArbID.Text) ''Set ArbID in structur

stMessagesTx.NumberBytesData = 4 ''Set the number of Data bytes

stMessagesTx.Data1 = Val("&H" & sDataArray(0)) ''Set data bytes in structure
stMessagesTx.Data2 = Val("&H" & sDataArray(1))
stMessagesTx.Data3 = Val("&H" & sDataArray(2))
stMessagesTx.Data4 = Val("&H" & sDataArray(3))

lResult = icsneoTxMessages(m_hObject, stMessagesTx, 1, 1) ''Send message
If Not CBool(lResult) Then ''Check the status of sent message
    MsgBox("Problem Transmitting Message")
End If
int iResult; //Storage for the Result from function call
icsSpyMessage stMessagesTx = new icsSpyMessage(); //Storage for TXMessage


//Set the ArbID information for TX message
stMessagesTx.ArbIDOrHeader = ConvertFromHex(txtArbID.Text);

//Set the number of Data Bytes and set the Data Bytes values
stMessagesTx.NumberBytesData = Convert.ToByte(4);
stMessagesTx.Data1=Convert.ToByte(ConvertFromHex(txtDataByte1.Text));
stMessagesTx.Data2=Convert.ToByte(ConvertFromHex(txtDataByte2.Text));
stMessagesTx.Data3=Convert.ToByte(ConvertFromHex(txtDataByte3.Text));
stMessagesTx.Data4=Convert.ToByte(ConvertFromHex(txtDataByte4.Text));

//Clear the Status BitFields
stMessagesTx.StatusBitField = 0;
stMessagesTx.StatusBitField2 = 0;

//Call the Tx funciton
iResult=icsNeoDll.icsneoTxMessages(m_hObject,ref stMessagesTx,1,0);

if(iResult== 0) //Check the status of the Function Call
{
    MessageBox.Show ("Problem Transmitting Message");
}
long lResult; //Storage the Result for the function call
int lNumberOfErrors = 0; //Storage for the number of Errors
int lNumberOfMessages = 0; //Storage for the number of messages

//Call Get messages
lResult = icsNeoDll.icsneoGetMessages(m_hObject, ref stMessages[0],ref lNumberOfMessages,ref lNumberOfErrors);
if(lResult == 0) //Check the Results to see if there is a problem
{
    MessageBox.Show ("Problem Getting Messages");
    return;
}
} SVCAN3Settings;

CAN_SETTINGS can1

See CAN_SETTINGS structure

CAN_SETTINGS can2

See CAN_SETTINGS structure

icscm_uint16 network_enables

Bitfield containing the software license enables. Depending on the hardware license purchased the customer may have to conditionally select which hardware channels to enable. For example the neoVI Red license allows the user to enable any 2 Dual Wire CAN channels and any 2 LIN channels. To enable a specific network its corresponding bit must be set (1). In order to transmit or receive on a network it must be enabled.

Bit field values:

HSCAN1 : 0 MSCAN : 1

icscm_uint16 network_enabled_on_boot

Normally neoVI only initiates its comm channels when CoreMini is running or if neoVI is online with DLL/Vehicle Spy 3. Practically this means the the CAN controllers stay in Listen Only mode until the device goes online. Once online the neoVI loads the user settings. Setting this parameter to 1 will change this behavior so that the neoVI enables its controllers immediately on boot.

Default value = 0.

icscm_int16 iso15765_separation_time_offset

In an ISO15765-2 Transmission, the receiver transmits a flow control message that informs that transmitter how much time there should be between individual CAN messages. This parameter allows the user to shift that spacing to make it smaller or larger. Valid range is -1563 to 1563 units where each unit represents 6.4us. Defaults to 0. If IFS plus the offset is negative than the Tx Messages will be back to back.

Default value = 0.

Examples:

ISO15765-2 Tx Message Inner frame spacing is exactly what is specified in flow control message: iso15765_separation_time_offset = 0

ISO15765-2 Tx Message Inner frame spacing is what’s specified in flow control message.+ 998.4 us: iso15765_separation_time_offset = 156

ISO15765-2 Tx Message Inner frame spacing is what’s specified in flow control message.- 998.4 us: iso15765_separation_time_offset = -156

icscm_uint16 perf_en

icscm_uint16 misc_io_initial_ddr

MISC IO Initial Data Direction Register. Controls the initial data direction of the tristates on all misc digital pins. Each bit corresponds to an individual misc pin. Bit value of 0 signifies an input and bit value 1 signifies and output. Bit values corresponding to non existent pins (EX MISC7-MISC15 on FIRE) have no effect.

Default value = 0.

Examples:

Set MISC1 to be output, all else input: misc_io_initial_ddr = 1

Set MISC1and MISC2 to be output, all else input: misc_io_initial_ddr = 3 (11 binary)

Set all MISC pins to output: misc_io_initial_ddr = 65535 (1111111111111111 binary)

icscm_uint16 misc_io_initial_latch

MISC IO Initial Latch Register. Controls the initial output latch value on all misc digital pins. Each bit corresponds to an individual misc pin. Bit value of 0 signifies an low voltage (ground) and bit value 1 signifies high voltage (3.3 V). Bit values corresponding to non existent pins (EX MISC7-MISC15 on FIRE) have no effect.

Default value = 0.

Examples:

Set MISC1 to be high, all else low: misc_io_initial_latch = 1

Set MISC1and MISC2 to be high, all else low: misc_io_initial_latch = 3 (11 binary)

Set all MISC pins to high: misc_io_initial_latch = 65535 (1111111111111111 binary)

Note: In order for digital outputs to work correctly the corresponding bit in misc_io_initial_ddr must be set to output and corresponding bit in misc_io_analog_enable must be cleared.

icscm_uint16 misc_io_report_period

Period in milliseconds of device report message holding digital and analog data.

Note: Periodic reporting requires misc_io_on_report_events[0] to be set.

icscm_uint16 misc_io_on_report_events

Bitfield holding enables for various report triggers for the General IO report.

Default value = 0.

Bit field values:

REPORT_ON_PERIODIC : 0

REPORT_ON_LED2 : 8

REPORT_ON_MISC1 : 1

REPORT_ON_KLINE : 9

REPORT_ON_MISC2 : 2

REPORT_ON_MISC3_AIN : 10

REPORT_ON_MISC3 : 3

REPORT_ON_MISC4_AIN : 11

can1

See structure

canfd1

See structure

can2

See structure

canfd2

See structure

network_enables

Bitfield containing the software license enables. To enable a specific network its corresponding bit must be set (1). In order to transmit or receive on a network it must be enabled.

termination_enables

Bitfield containing the enables for CAN Termination. To enable a specific channel its corresponding bit must be set (1). .

pwr_man_timeout

Number of milliseconds of no bus activity required before neoVI enters low power mode. Note pwr_man_enable must be set for power management to be enabled.

Default value = 10000

pwr_man_enable

1 = enable Power Management, 0 = disable.

Default value = 0

network_enabled_on_boot

Normally neoVI only initiates its comm channels when CoreMini is running or if neoVI is online with DLL/Vehicle Spy 3. Practically this means the the CAN controllers stay in Listen Only mode until the device goes online. Once online the neoVI loads the user settings. Setting this parameter to 1 will change this behavior so that the neoVI enables its controllers immediately on boot.

Default value = 0

iso15765_separation_time_offset

In an ISO15765-2 Transmission, the receiver transmits a flow control message that informs that transmitter how much time there should be between individual CAN messages. This parameter allows the user to shift that spacing to make it smaller or larger. Valid range is -1563 to 1563 units where each unit represents 6.4us. Defaults to 0. If IFS plus the offset is negative than the Tx Messages will be back to back.

Default value = 0

Examples:

ISO15765-2 Tx Message Inner frame spacing is exactly what is specified in flow control message: iso15765_separation_time_offset = 0

ISO15765-2 Tx Message Inner frame spacing is what’s specified in flow control message.+ 998.4 us: iso15765_separation_time_offset = 156

ISO15765-2 Tx Message Inner frame spacing is what’s specified in flow control message.- 998.4 us: iso15765_separation_time_offset = -156

text_api

See structure

flags

Bitfield with misc settings for the device. List below gives the parameter with the bit number to have set to enable.

Disable USB Check On Boot : 0

perf_en

<StructLayout(LayoutKind.Sequential, Pack:=2)> Public Structure SVCAN412Settings
Dim perf_en As Int64
Dim can1 As CAN_SETTINGS
Dim canfd1 As CANFD_SETTINGS
Dim can2 As CAN_SETTINGS
Dim canfd2 As CANFD_SETTINGS
Dim network_enables As UInt64
Dim termination_enables As UInt64
Dim pwr_man_timeout As UInt32
Dim pwr_man_enable As UInt16
Dim network_enabled_on_boot As UInt16
Dim iso15765_separation_time_offset As UInt16
Dim text_api As STextAPISettings
Dim flags As UInt32
End Structure
typedef struct __declspec (align(2))
{

int64_t perf_en;
CAN_SETTINGS can1;
CANFD_SETTINGS canfd1;
CAN_SETTINGS can2;
CANFD_SETTINGS canfd2;
uint64_t network_enables;
uint64_t termination_enables;
uint32_t pwr_man_timeout;
uint16_t pwr_man_enable;
uint16_t network_enabled_on_boot;
uint16_t iso15765_separation_time_offset;
STextAPISettings text_api;
uint32_t flags;
}

SVCAN412Settings;

Performance test. Default value = 0

[StructLayout(LayoutKind.Sequential,Pack=2)]
public struct SVCAN412Settings
{
public Int64 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 UInt16 pwr_man_enable;
public UInt16 network_enabled_on_boot;
public UInt16 iso15765_separation_time_offset;
public STextAPISettings text_api;
public UInt32 flags;
}

REPORT_ON_MISC4 : 4

REPORT_ON_MISC5_AIN : 12

REPORT_ON_MISC5 : 5

REPORT_ON_MISC6_AIN : 13

REPORT_ON_MISC6 : 6

REPORT_ON_LED1 : 7

HSCAN : Bit 0

HSCAN2 : Bit 5

HSCAN : Bit 0

HSCAN2 : Bit 5

CAN_SETTINGS
CANFD_SETTINGS
CAN_SETTINGS
CANFD_SETTINGS
STextAPISettings

SRADPlutoSettings Structure

This structure defines various settings for the RAD Pluto device.

typedef struct __declspec (align(2))

{
  unsigned short perf_en;
  CAN_SETTINGS can1;
  CANFD_SETTINGS canfd1;
  CAN_SETTINGS can2;
  CANFD_SETTINGS canfd2;
  LIN_SETTINGS lin1;
  unsigned short network_enables;

Remarks

Description

perf_en

<StructLayout(LayoutKind.Sequential, Pack:=2)> Public Structure SRADPlutoSettings
  Dim perf_en As UInt16
  Dim can1 As CAN_SETTINGS
  Dim canfd1 As CANFD_SETTINGS
  Dim can2 As CAN_SETTINGS
  Dim canfd2 As CANFD_SETTINGS
  Dim lin1 As LIN_SETTINGS
  Dim network_enables As UInt16
  Dim network_enables_2 As UInt16
  Dim network_enables_3 As UInt16
  Dim termination_enables As UInt64
  Dim misc_io_analog_enable As UInt16
  Dim pwr_man_timeout As UInt32
  Dim pwr_man_enable As UInt16
  Dim network_enabled_on_boot As UInt16
  Dim iso15765_separation_time_offset As UInt16
  Dim iso9141_kwp_enable_reserved As UInt16
  Dim iso_tester_pullup_enable As UInt16
  Dim iso_parity As UInt16
  Dim iso_msg_termination As UInt16
  Dim iso9141_kwp_settings_1 As ISO9141_KEYWORD2000_SETTINGS
  Dim ethernet As ETHERNET_SETTINGS
  Dim text_api As STextAPISettings
  Dim Flags As UInt32
  Dim custom As SPluto_CustomParams
End Structure
[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;
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;
public SPluto_CustomParams custom;
}
unsigned short network_enables_2;
unsigned short network_enables_3;
uint64_t termination_enables;
unsigned short misc_io_analog_enable;
unsigned int pwr_man_timeout;
unsigned short pwr_man_enable;
unsigned short network_enabled_on_boot;
unsigned short iso15765_separation_time_offset;
unsigned short iso9141_kwp_enable_reserved;
unsigned short iso_tester_pullup_enable;
unsigned short iso_parity;
unsigned short iso_msg_termination;
ISO9141_KEYWORD2000_SETTINGS iso9141_kwp_settings_1;
ETHERNET_SETTINGS ethernet;
STextAPISettings text_api;
unsigned int Flags;
SPluto_CustomParams custom;
}SRADPlutoSettings;

Performance test. Default value = 0

can1

See CAN_SETTINGS structure

canfd1

See CANFD_SETTINGS structure

can2

See CAN_SETTINGS structure

canfd2

See CANFD_SETTINGS structure

lin1

See LIN_SETTINGS structure

network_enables

Bitfield containing the software license enables. Depending on the hardware license purchased the customer may have to conditionally select which hardware channels to enable. For example the neoVI Red license allows the user to enable any 2 Dual Wire CAN channels and any 2 LIN channels. To enable a specific network its corresponding bit must be set (1). In order to transmit or receive on a network it must be enabled.

HSCAN : 0

LIN1 : 2

HSCAN2 : 5

network_enables_2

Bitfield containing the software license enables. Depending on the hardware license purchased the customer may have to conditionally select which hardware channels to enable. For example the neoVI Red license allows the user to enable any 2 Dual Wire CAN channels and any 2 LIN channels. To enable a specific network its corresponding bit must be set (1). In order to transmit or receive on a network it must be enabled.

Ethernet : 13

network_enables_3

Not used. Set to 0

termination_enables

Bitfield containing the termination enables.

HSCAN : 0

HSCAN2 : 5

misc_io_analog_enable

Not Used, set to 0.

pwr_man_timeout

Number of milliseconds of no bus activity required before neoVI enters low power mode. Note pwr_man_enable must be set for power management to be enabled.

Default value = 10000

pwr_man_enable

1 = enable Power Management, 0 = disable.

Default value = 0

network_enabled_on_boot

Normally neoVI only initiates its comm channels when CoreMini is running or if neoVI is online with DLL/Vehicle Spy 3. Practically this means the the CAN controllers stay in Listen Only mode until the device goes online. Once online the neoVI loads the user settings. Setting this parameter to 1 will change this behavior so that the neoVI enables its controllers immediately on boot.

Default value = 0

iso15765_separation_time_offset

In an ISO15765-2 Transmission, the receiver transmits a flow control message that informs that transmitter how much time there should be between individual CAN messages. This parameter allows the user to shift that spacing to make it smaller or larger. Valid range is -1563 to 1563 units where each unit represents 6.4us. Defaults to 0. If IFS plus the offset is negative than the Tx Messages will be back to back.

Default value = 0

Examples:

ISO15765-2 Tx Message Inner frame spacing is exactly what is specified in flow control message: iso15765_separation_time_offset = 0

ISO15765-2 Tx Message Inner frame spacing is what’s specified in flow control message.+ 998.4 us: iso15765_separation_time_offset = 156

ISO15765-2 Tx Message Inner frame spacing is what’s specified in flow control message.- 998.4 us: iso15765_separation_time_offset = -156

iso9141_kwp_enable_reserved

Reserved

iso_tester_pullup_enable

Not used Set to 0

iso_parity

ISO9141 Parity setting: 0 - no parity, 1 - even, 2 - odd

iso_msg_termination

ISO9141 message termination setting: 0 - use inner frame time 1 - GME CIM-SCL

iso9141_kwp_settings_1

See ISO9141_KEYWORD2000_SETTINGS structure

ethernet

See ETHERNET_SETTINGS structure

text_api

See STextAPISettings structure

Flags

Set to 0

custom

See SPluto_CustomParams structure

SVCAN4IndSettings Structure

typedef struct __declspec (align(2))
{
   CAN_SETTINGS can1;
   CANFD_SETTINGS canfd1;
   CAN_SETTINGS can2;
   CANFD_SETTINGS canfd2;
   ETHERNET_SETTINGS ethernet;
   LIN_SETTINGS lin1;
   ISO9141_KEYWORD2000_SETTINGS iso9141_kwp_settings;
   uint16_t iso_parity;
   uint16_t iso_msg_termination;

Remarks

Item
Description
<StructLayout(LayoutKind.Sequential, Pack:=2)> Public Structure SVCAN4IndSettings
   Dim can1 As CAN_SETTINGS
   Dim canfd1 As CANFD_SETTINGS
   Dim can2 As CAN_SETTINGS
   Dim canfd2 As CANFD_SETTINGS
   Dim ethernet As ETHERNET_SETTINGS
   Dim lin1 As LIN_SETTINGS
   Dim iso9141_kwp_settings As ISO9141_KEYWORD2000_SETTINGS
   Dim iso_parity As UInt16
   Dim iso_msg_termination As UInt16
   Dim pwr_man_timeout As UInt32
   Dim pwr_man_enable As UInt16
   Dim perf_en As UInt16
   Dim iso15765_separation_time_offset As UInt16
   Dim network_enabled_on_boot As UInt16
   Dim network_enables As UInt16
   Dim network_enables_2 As UInt16
   Dim network_enables_3 As UInt16
   Dim Reserved As UInt16
   Dim termination_enables As UInt64
   Dim flags As UInt32
   Dim ethernet2 As ETHERNET_SETTINGS
End Structure
[StructLayout(LayoutKind.Sequential,Pack=2)]
public struct SVCAN4IndSettings
{
   public CAN_SETTINGS can1;
   public CANFD_SETTINGS canfd1;
   public CAN_SETTINGS can2;
   public CANFD_SETTINGS canfd2;
   public ETHERNET_SETTINGS ethernet;
   public LIN_SETTINGS lin1;
   public ISO9141_KEYWORD2000_SETTINGS iso9141_kwp_settings;
   public UInt16 iso_parity;
   public UInt16 iso_msg_termination;
   public UInt32 pwr_man_timeout;
   public UInt16 pwr_man_enable;
   public UInt16 perf_en;
   public UInt16 iso15765_separation_time_offset;
   public UInt16 network_enabled_on_boot;
   public UInt16 network_enables;
   public UInt16 network_enables_2;
   public UInt16 network_enables_3;
   public UInt16 Reserved;
   public UInt64 termination_enables;
   public UInt32 flags;
   public ETHERNET_SETTINGS ethernet2;
}

iso_parity

ISO9141 Parity setting: 0 - no parity, 1 - even, 2 - odd

iso_msg_termination

ISO9141 message termination setting: 0 - use inner frame time 1 - GME CIM-SCL

pwr_man_timeout

Number of milliseconds of no bus activity required before neoVI enters low power mode. Note pwr_man_enable must be set for power management to be enabled.

Default value = 10000

pwr_man_enable

1 = enable Power Management, 0 = disable.

Default value = 0

perf_en

Performance test.?Default value = 0?

iso15765_separation_time_offset

In an ISO15765-2 Transmission, the receiver transmits a flow control message that informs that transmitter how much time there should be between individual CAN messages. This parameter allows the user to shift that spacing to make it smaller or larger. Valid range is -1563 to 1563 units where each unit represents 6.4us. Defaults to 0. If IFS plus the offset is negative than the Tx Messages will be back to back.

Default value = 0

Examples:

ISO15765-2 Tx Message Inner frame spacing is exactly what is specified in flow control message: iso15765_separation_time_offset = 0

ISO15765-2 Tx Message Inner frame spacing is what's specified in flow control message.+ 998.4 us: iso15765_separation_time_offset = 156

ISO15765-2 Tx Message Inner frame spacing is what's specified in flow control message.- 998.4 us: iso15765_separation_time_offset = -156

network_enabled_on_boot

Not Defined

network_enables

Bitfield containing the software license enables. Depending on the hardware license purchased the customer may have to conditionally select which hardware channels to enable. For example the neoVI Red license allows the user to enable any 2 Dual Wire CAN channels and any 2 LIN channels. To enable a specific network its corresponding bit must be set (1). In order to transmit or receive on a network it must be enabled.

HSCAN : 0
MSCAN : 1
LIN1 : 2

network_enables_2

Bitfield containing the software license enables. Depending on the hardware license purchased the customer may have to conditionally select which hardware channels to enable. For example the neoVI Red license allows the user to enable any 2 Dual Wire CAN channels and any 2 LIN channels. To enable a specific network its corresponding bit must be set (1). In order to transmit or receive on a network it must be enabled.

KLINE1 : 0
KLINE2 : 1
KLINE3 : 2

network_enables_3

Bitfield containing the software license enables. Depending on the hardware license purchased the customer may have to conditionally select which hardware channels to enable. For example the neoVI Red license allows the user to enable any 2 Dual Wire CAN channels and any 2 LIN channels. To enable a specific network its corresponding bit must be set (1). In order to transmit or receive on a network it must be enabled.

Reserved

Reserved

termination_enables

Bitfield containing the termination enables. For the neoVI Fire 2, the termination is grouped into banks. Only 2 form a single bank can be neabled.

HSCAN (Bank0): 0
MSCAN (Bank1): 1
HSCAN2 (BANK1) : 5

flags

Not used

ethernet2

See ETHERNET_SETTINGS structure

uint32_t pwr_man_timeout;
uint16_t pwr_man_enable;
uint16_t perf_en;
uint16_t iso15765_separation_time_offset;
uint16_t network_enabled_on_boot;
uint16_t network_enables;
uint16_t network_enables_2;
uint16_t network_enables_3;
uint16_t Reserved;
uint64_t termination_enables;
uint32_t flags;
ETHERNET_SETTINGS ethernet2;
}SVCAN4IndSettings;

can1

See CAN_SETTINGS structure

canfd1

See CANFD_SETTINGS structure

can2

See CAN_SETTINGS structure

canfd2

See CANFD_SETTINGS structure

ethernet

See ETHERNET_SETTINGS structure

lin1

See LIN_SETTINGS structure

iso9141_kwp_settings

See structure

SVCAN4Settings Structure

This structure defines various settings for the ValueCAN 4-4 and 4-2EL device.

typedef struct __declspec
{
  uint16_t perf_en;
  CAN_SETTINGS can1;
  CANFD_SETTINGS canFD1;
  CAN_SETTINGS can2;
  CANFD_SETTINGS canFD2;
  CAN_SETTINGS can3;
  CANFD_SETTINGS canFD3;
  CAN_SETTINGS can4;
  CANFD_SETTINGS canFD4;
  unsigned

Remarks

Item
Description

perf_en

<StructLayout(LayoutKind.Sequential, Pack:=2)> Public Structure SVCAN4Settings
  Dim perf_en As UInt16
  Dim can1 As CAN_SETTINGS
  Dim canFD1 As CANFD_SETTINGS
  Dim can2 As CAN_SETTINGS
  Dim canFD2 As CANFD_SETTINGS
  Dim can3 As CAN_SETTINGS
  Dim canFD3 As CANFD_SETTINGS
  Dim can4 As CAN_SETTINGS
  Dim canFD4 As CANFD_SETTINGS
  Dim network_enables As UInt16
  Dim network_enables_2 As UInt16
  Dim lin1 As LIN_SETTINGS
  Dim network_enabled_on_boot As UInt16
  Dim iso_9141_kwp_enable_reserved As UInt16
  Dim iso9141_kwp_settings As ISO9141_KEYWORD2000_SETTINGS
  Dim iso_parity As UInt16
  Dim iso_msg_termination_1 As UInt16
  Dim network_enables_3 As UInt16
  Dim text_api As STextAPISettings
  Dim ethernet As ETHERNET_SETTINGS
  Dim Flags As UInt32
  Dim pwr_man_enable As UInt16
  Dim pwr_man_timeout As UInt16
End Structure
[StructLayout(LayoutKind.Sequential,Pack=2)]
public struct SVCAN4Settings
{
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 UInt16 network_enables;
public UInt16 network_enables_2;
public LIN_SETTINGS lin1;
public UInt16 network_enabled_on_boot;
public UInt16 iso_9141_kwp_enable_reserved;
public ISO9141_KEYWORD2000_SETTINGS iso9141_kwp_settings;
public UInt16 iso_parity;
public UInt16 iso_msg_termination_1;
public UInt16 network_enables_3;
public STextAPISettings text_api;
public ETHERNET_SETTINGS ethernet;
public UInt32 Flags;
public UInt16 pwr_man_enable;
public UInt16 pwr_man_timeout;
}

NA : 9

NA : 10

LIN3 : 11

LIN4 : 12

NA : 13

HSCAN4 : 14

HSCAN5 : 15

NA : 9

NA : 10

SWCAN2 : 11

ETHERNET_DAQ : 12

ETHERNET : 13

NA : 14

NA : 15

NA : 10

NA : 11

NA : 12

NA : 13

NA : 14

NA : 15

LIN2 : 3

NA : 4

HSCAN2 : 5

LSFTCAN1 : 6

SWCAN1 : 7

HSCAN3 : 8

KLINE4 : 3

NA : 4

NA : 5

NA : 6

NA : 7

NA : 8

HSCAN6 : 0

HSCAN7 : 1

LIN6 : 2

LSFTCAN2 : 3

NA : 4

NA : 5

NA : 6

NA : 7

NA : 8

HSCAN3 (Bank0) : 8

HSCAN4 (Bank1): 14

HSCAN5 (Bank0) : 15

HSCAN6 (Bank1) : 32

HSCAN7 (Bank0): 33

ISO9141_KEYWORD2000_SETTINGS

NA : 9

short
network_enables;
unsigned short network_enables_2;
LIN_SETTINGS lin1;
unsigned short network_enabled_on_boot;
unsigned short iso_9141_kwp_enable_reserved;
ISO9141_KEYWORD2000_SETTINGS iso9141_kwp_settings;
unsigned short iso_parity;
unsigned short iso_msg_termination_1;
unsigned short network_enables_3;
STextAPISettings text_api;
ETHERNET_SETTINGS ethernet;
unsigned int Flags;
unsigned short pwr_man_enable;
unsigned short pwr_man_timeout;
}
SVCAN4Settings;

Performance test. Default value = 0

can1

See CAN_SETTINGS structure

canFD1

See CANFD_SETTINGS structure

can2

See CAN_SETTINGS structure

canFD2

See CANFD_SETTINGS structure

can3

See CAN_SETTINGS structure

canFD3

See CANFD_SETTINGS structure

can4

See CAN_SETTINGS structure

canFD4

See CANFD_SETTINGS structure

network_enables

Bitfield containing the software license enables. Depending on the hardware license purchased the customer may have to conditionally select which hardware channels to enable. For example the neoVI Red license allows the user to enable any 2 Dual Wire CAN channels and any 2 LIN channels. To enable a specific network its corresponding bit must be set (1). In order to transmit or receive on a network it must be enabled.

HSCAN : 0

MSCAN : 1

LIN1 : 2

LIN2 : 3

VIRTUAL : 4

HSCAN2 : 5

LSFTCAN1 : 6

SWCAN1 : 7

HSCAN3 : 8

network_enables_2

Bitfield containing the software license enables. Depending on the hardware license purchased the customer may have to conditionally select which hardware channels to enable. For example the neoVI Red license allows the user to enable any 2 Dual Wire CAN channels and any 2 LIN channels. To enable a specific network its corresponding bit must be set (1). In order to transmit or receive on a network it must be enabled.

KLINE1 : 0

KLINE2 : 1

KLINE3 : 2

KLINE4 : 3

FLEXRAY1A : 4

UART : 5

UART2 : 6

LIN5 : 7

MOST25 : 8

lin1

See LIN_SETTINGS structure

network_enabled_on_boot

Normally neoVI only initiates its comm channels when CoreMini is running or if neoVI is online with DLL/Vehicle Spy 3. Practically this means the the CAN controllers stay in Listen Only mode until the device goes online. Once online the neoVI loads the user settings. Setting this parameter to 1 will change this behavior so that the neoVI enables its controllers immediately on boot.

Default value = 0

iso_9141_kwp_enable_reserved

Reserved

iso9141_kwp_settings

See ISO9141_KEYWORD2000_SETTINGS structure

iso_parity

ISO9141 Parity setting: 0 - no parity, 1 - even, 2 - odd

iso_msg_termination_1

ISO9141 message termination setting: 0 - use inner frame time 1 - GME CIM-SCL

network_enables_3

Bitfield containing the software license enables. Depending on the hardware license purchased the customer may have to conditionally select which hardware channels to enable. For example the neoVI Red license allows the user to enable any 2 Dual Wire CAN channels and any 2 LIN channels. To enable a specific network its corresponding bit must be set (1). In order to transmit or receive on a network it must be enabled.

HSCAN6 : 0

HSCAN7 : 1

LIN6 : 2

LSFTCAN2 : 3

OP_ETH1 : 4

OP_ETH2 : 5

OP_ETH3 : 6

OP_ETH4 : 7

OP_ETH5 : 8

text_api

See STextAPISettings structure

ethernet

See ETHERNET_SETTINGS structure

Flags

Not used

pwr_man_enable

1 = enable Power Management, 0 = disable.

Default value = 0

pwr_man_timeout

Number of milliseconds of no bus activity required before neoVI enters low power mode. Note pwr_man_enable must be set for power management to be enabled.

Default value = 10000

SRADStar2Settings Structure

Structure defining the parameters in SRADStar2Settings

Remarks

GMCGI : 9

J1850 : 10

LIN3 : 11

LIN4 : 12

J1708 : 13

HSCAN4 : 14

HSCAN5 : 15

MOST50 : 9

FLEXRAY1B : 10

SWCAN2 : 11

ETHERNET_DAQ : 12

ETHERNET : 13

FLEXRAY2A : 14

FLEXRAY2B : 15

OP_ETH6 : 9

OP_ETH7 : 10

OP_ETH8 : 11

OP_ETH9 : 12

OP_ETH10 : 13

OP_ETH11 : 14

OP_ETH12 : 15

Item
Description

perf_en

Performance test. Default value = 0

opEthGen

See structure

opEth1

See structure

opEth2

See structure

can1

See structure

canfd1

See structure

can2

See S structure

canfd2

See structure

typedef struct __declspec (align(2))
{
   uint16_t perf_en;
   OP_ETH_GENERAL_SETTINGS opEthGen;
   OP_ETH_SETTINGS opEth1;
   OP_ETH_SETTINGS opEth2;
   CAN_SETTINGS can1;
   CANFD_SETTINGS canfd1;
   CAN_SETTINGS can2;
   CANFD_SETTINGS canfd2;
   uint16_t network_enables;
   uint16_t network_enables_2;
   LIN_SETTINGS lin1;
   uint16_t misc_io_initial_ddr;
   uint16_t misc_io_initial_latch;
   uint16_t misc_io_report_period;
   uint16_t misc_io_on_report_events;
   uint16_t misc_io_analog_enable;
   uint16_t ain_sample_period;
   uint16_t ain_threshold;
   uint32_t pwr_man_timeout;
   uint16_t pwr_man_enable;
   uint16_t network_enabled_on_boot;
   uint16_t iso15765_separation_time_offset;
   uint16_t iso_9141_kwp_enable_reserved;
   ISO9141_KEYWORD2000_SETTINGS iso9141_kwp_settings_1;
   uint16_t iso_parity_1;
   uint16_t iso_msg_termination_1;
   uint16_t idle_wakeup_network_enables_1;
   uint16_t idle_wakeup_network_enables_2;
   uint16_t network_enables_3;
   uint16_t idle_wakeup_network_enables_3;
   uint16_t can_switch_mode;
   STextAPISettings text_api;
   uint16_t pc_com_mode;
   TIMESYNC_ICSHARDWARE_SETTINGS timeSyncSettings;
   unsigned short hwComLatencyTestEn;
   RAD_REPORTING_SETTINGS reporting;
   ETHERNET_SETTINGS2 ethernet;
   RAD_GPTP_SETTINGS gPTP;
}SRADStar2Settings;
<StructLayout(LayoutKind.Sequential, Pack:=2)> Public Structure SRADStar2Settings
   Dim perf_en As UInt16
   Dim opEthGen As OP_ETH_GENERAL_SETTINGS
   Dim opEth1 As OP_ETH_SETTINGS
   Dim opEth2 As OP_ETH_SETTINGS
   Dim can1 As CAN_SETTINGS
   Dim canfd1 As CANFD_SETTINGS
   Dim can2 As CAN_SETTINGS
   Dim canfd2 As CANFD_SETTINGS
   Dim network_enables As UInt16
   Dim network_enables_2 As UInt16
   Dim lin1 As LIN_SETTINGS
   Dim misc_io_initial_ddr As UInt16
   Dim misc_io_initial_latch As UInt16
   Dim misc_io_report_period As UInt16
   Dim misc_io_on_report_events As UInt16
   Dim misc_io_analog_enable As UInt16
   Dim ain_sample_period As UInt16
   Dim ain_threshold As UInt16
   Dim pwr_man_timeout As UInt32
   Dim pwr_man_enable As UInt16
   Dim network_enabled_on_boot As UInt16
   Dim iso15765_separation_time_offset As UInt16
   Dim iso_9141_kwp_enable_reserved As UInt16
   Dim iso9141_kwp_settings_1 As ISO9141_KEYWORD2000_SETTINGS
   Dim iso_parity_1 As UInt16
   Dim iso_msg_termination_1 As UInt16
   Dim idle_wakeup_network_enables_1 As UInt16
   Dim idle_wakeup_network_enables_2 As UInt16
   Dim network_enables_3 As UInt16
   Dim idle_wakeup_network_enables_3 As UInt16
   Dim can_switch_mode As UInt16
   Dim text_api As STextAPISettings
   Dim pc_com_mode As UInt16
   Dim timeSyncSettings As TIMESYNC_ICSHARDWARE_SETTINGS
   Dim hwComLatencyTestEn As UInt16
   Dim reporting As RAD_REPORTING_SETTINGS
   Dim ethernet As ETHERNET_SETTINGS2
   Dim gPTP As RAD_GPTP_SETTINGS
End Structure
[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;
   public UInt16 pc_com_mode;
   public TIMESYNC_ICSHARDWARE_SETTINGS timeSyncSettings;
   public UInt16 hwComLatencyTestEn;
   public RAD_REPORTING_SETTINGS reporting;
   public ETHERNET_SETTINGS2 ethernet;
   public RAD_GPTP_SETTINGS gPTP;
}

network_enables

Bitfield containing the software license enables. Depending on the hardware license purchased the customer may have to conditionally select which hardware channels to enable. For example the neoVI Red license allows the user to enable any 2 Dual Wire CAN channels and any 2 LIN channels. To enable a specific network its corresponding bit must be set (1). In order to transmit or receive on a network it must be enabled.

HSCAN : 0

MSCAN : 1

LIN1 : 2

LIN2 : 3

VIRTUAL : 4

HSCAN2 : 5

LSFTCAN1 : 6

SWCAN1 : 7

HSCAN3 : 8

GMCGI : 9

J1850 : 10

network_enables_2

Bitfield containing the software license enables. Depending on the hardware license purchased the customer may have to conditionally select which hardware channels to enable. For example the neoVI Red license allows the user to enable any 2 Dual Wire CAN channels and any 2 LIN channels. To enable a specific network its corresponding bit must be set (1). In order to transmit or receive on a network it must be enabled.

KLINE1 : 0

KLINE2 : 1

KLINE3 : 2

KLINE4 : 3

FLEXRAY1A : 4

UART : 5

UART2 : 6

LIN5 : 7

MOST25 : 8

MOST50 : 9

FLEXRAY1B : 10

lin1

See LIN_SETTINGS structure

misc_io_initial_ddr

Not Used

misc_io_initial_latch

Not Used

misc_io_report_period

Not Used

misc_io_on_report_events

Not Used

misc_io_analog_enable

Not Used

ain_sample_period

Not Used

ain_threshold

Not Used

pwr_man_timeout

Not Used

pwr_man_enable

Not Used

network_enabled_on_boot

Normally neoVI only initiates its comm channels when CoreMini is running or if neoVI is online with DLL/Vehicle Spy 3. Practically this means the the CAN controllers stay in Listen Only mode until the device goes online. Once online the neoVI loads the user settings. Setting this parameter to 1 will change this behavior so that the neoVI enables its controllers immediately on boot.

Default value = 0

iso15765_separation_time_offset

In an ISO15765-2 Transmission, the receiver transmits a flow control message that informs that transmitter how much time there should be between individual CAN messages. This parameter allows the user to shift that spacing to make it smaller or larger. Valid range is -1563 to 1563 units where each unit represents 6.4us. Defaults to 0. If IFS plus the offset is negative than the Tx Messages will be back to back.

Default value = 0

Examples:

ISO15765-2 Tx Message Inner frame spacing is exactly what is specified in flow control message: iso15765_separation_time_offset = 0

ISO15765-2 Tx Message Inner frame spacing is what's specified in flow control message.+ 998.4 us: iso15765_separation_time_offset = 156

ISO15765-2 Tx Message Inner frame spacing is what's specified in flow control message.- 998.4 us: iso15765_separation_time_offset = -156

iso_9141_kwp_enable_reserved

Not Available

iso9141_kwp_settings_1

See ISO9141_KEYWORD2000_SETTINGS structure

iso_parity_1

ISO9141 Parity setting: 0 - no parity, 1 - even, 2 - odd

iso_msg_termination_1

Not Available

idle_wakeup_network_enables_1

Bitfield containing list of hardware networks to look at for sleep enable. To enable a specific network its corresponding bit must be set (1). In order to transmit or receive on a network it must be enabled.

KLINE1 : 0

KLINE2 : 1

KLINE3 : 2

KLINE4 : 3

FLEXRAY1A : 4

UART : 5

UART2 : 6

LIN5 : 7

MOST25 : 8

MOST50 : 9

FLEXRAY1B : 10

SWCAN2 : 11

idle_wakeup_network_enables_2

Bitfield containing list of hardware networks to look at for sleep enable. To enable a specific network its corresponding bit must be set (1). In order to transmit or receive on a network it must be enabled.

KLINE1 : 0

KLINE2 : 1

KLINE3 : 2

KLINE4 : 3

FLEXRAY1A : 4

UART : 5

UART2 : 6

LIN5 : 7

MOST25 : 8

MOST50 : 9

FLEXRAY1B : 10

SWCAN2 : 11

network_enables_3

Bitfield containing the software license enables. Depending on the hardware license purchased the customer may have to conditionally select which hardware channels to enable. For example the neoVI Red license allows the user to enable any 2 Dual Wire CAN channels and any 2 LIN channels. To enable a specific network its corresponding bit must be set (1). In order to transmit or receive on a network it must be enabled.

HSCAN6 : 0

HSCAN7 : 1

LIN6 : 2

LSFTCAN2 : 3

OP_ETH1 : 4

OP_ETH2 : 5

OP_ETH3 : 6

OP_ETH4 : 7

OP_ETH5 : 8

OP_ETH6 : 9

OP_ETH7 : 10

idle_wakeup_network_enables_3

Not Available

can_switch_mode

Not Available

text_api

See STextAPISettings structure

pc_com_mode

Not Available

timeSyncSettings

See TIMESYNC_ICSHARDWARE_SETTINGS structure

hwComLatencyTestEn

Not Available

reporting

See RAD_REPORTING_SETTINGS structure

ethernet

See ETHERNET_SETTINGS2 structure

gPTP

See RAD_GPTP_SETTINGS structure

OP_ETH_GENERAL_SETTINGS
OP_ETH_SETTINGS
OP_ETH_SETTINGS
CAN_SETTINGS
CANFD_SETTINGS
CAN_SETTING
CANFD_SETTINGS

LIN3 : 11

LIN4 : 12

J1708 : 13

HSCAN4 : 14

HSCAN5 : 15

SWCAN2 : 11

ETHERNET_DAQ : 12

ETHERNET : 13

FLEXRAY2A : 14

FLEXRAY2B : 15

ETHERNET_DAQ : 12

ETHERNET : 13

FLEXRAY2A : 14

FLEXRAY2B : 15

ETHERNET_DAQ : 12

ETHERNET : 13

FLEXRAY2A : 14

FLEXRAY2B : 15

OP_ETH8 : 11

OP_ETH9 : 12

OP_ETH10 : 13

OP_ETH11 : 14

OP_ETH12 : 15

SFireSettings Structure

This structure defines various settings for the neoVI Fire device.

typedef VS_MODIFIER struct _SFireSettings
{ 
    CAN_SETTINGS can1;   
    CAN_SETTINGS can2;
    CAN_SETTINGS can3;
    CAN_SETTINGS can4;
    SWCAN_SETTINGS swcan;    
    CAN_SETTINGS lsftcan;
    LIN_SETTINGS lin1;      
    LIN_SETTINGS lin2;
    LIN_SETTINGS lin3;
    LIN_SETTINGS lin4;

Remarks

Structure Elements

Item
Description

SVCANRFSettings Structure

This structure defines various settings for the ValueCAN RF device

typedef struct __declspec (align(2))
{
CAN_SETTINGS can1;
CAN_SETTINGS can2;
CAN_SETTINGS can3;
CAN_SETTINGS can4;
LIN_SETTINGS lin1;
LIN_SETTINGS lin2;
unsigned short network_enables;
unsigned short network_enabled_on_boot;

Remarks

Item
Description

can1

<StructLayout(LayoutKind.Sequential, Pack:=2)> Public Structure SFireSettings
    Dim can1 As CAN_SETTINGS
    Dim can2 As CAN_SETTINGS
    Dim can3 As CAN_SETTINGS
    Dim can4 As CAN_SETTINGS
    Dim swcan As SWCAN_SETTINGS 
    Dim lsftcan As CAN_SETTINGS
    Dim lin1 As LIN_SETTINGS
    Dim lin2 As LIN_SETTINGS
    Dim lin3 As LIN_SETTINGS
    Dim lin4 As LIN_SETTINGS
    Dim cgi_enable_reserved As UInt16
    Dim cgi_baud As UInt16
    Dim cgi_tx_ifs_bit_times As UInt16
    Dim cgi_rx_ifs_bit_times As UInt16
    Dim cgi_chksum_enable As UInt16
    Dim network_enables As UInt16
    Dim network_enabled_on_boot As UInt16
    Dim pwm_man_timeout As UInt16
    Dim pwr_man_enable As UInt16
    Dim misc_io_initial_ddr As UInt16
    Dim misc_io_initial_latch As UInt16
    Dim misc_io_analog_enable As UInt16
    Dim misc_io_report_period As UInt16
    Dim misc_io_on_report_events As UInt16
    Dim ain_sample_period As UInt16
    Dim ain_threshold As UInt16
    Dim iso15765_separation_time_offset As UInt16
    Dim iso9141_kwp_enable_reserved As UInt16
    iso9141_kwp_settings As ISO9141_KEYWORD2000_SETTINGS
    Dim perf_en As UInt16
    Dim iso_parity As UInt16
    Dim iso_msg_termination As UInt16
    Dim iso_tester_pullup_enable As UInt16
    Dim network_enables_2 As UInt16
    Dim iso9141_kwp_settings2 As ISO9141_KEYWORD2000_SETTINGS
    Dim iso_parity_2 As UInt16
    Dim iso_msg_termination_2 As UInt16
    Dim iso9141_kwp_settings_3 As ISO9141_KEYWORD2000_SETTINGS
    Dim iso_parity_3 As UInt16
    Dim iso_msg_termination_3 As UInt16
    Dim iso9141_kwp_settings_4 As ISO9141_KEYWORD2000_SETTINGS
    Dim iso_parity_4 As UInt16
    Dim iso_msg_termination_4 As UInt16
    Dim fast_init_network_enables_1 As UInt16
    Dim fast_init_network_enables_2 As UInt16
    Dim uart As UART_SETTINGS
    Dim uart2 As UART_SETTINGS
    Dim text_api As STextAPISettings
End Structure
[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 UInt16 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;
    public UInt16 iso15765_separation_time_offset;
    public UInt16 iso9141_kwp_enable_reserved;
    public ISO9141_KEYWORD2000_SETTINGS iso9141_kwp_settings;
    public UInt16 perf_en;
    public UInt16 iso_parity;
    public UInt16 iso_msg_termination;
    public UInt16 iso_tester_pullup_enable;
    public UInt16 network_enables_2;
    public ISO9141_KEYWORD2000_SETTINGS iso9141_kwp_settings2;
    public UInt16 iso_parity_2;
    public UInt16 iso_msg_termination_2;
    public ISO9141_KEYWORD2000_SETTINGS iso9141_kwp_settings3;
    public UInt16 iso_parity_3;
    public UInt16 iso_msg_termination_3;
    public ISO9141_KEYWORD2000_SETTINGS iso9141_kwp_settings_4;
    public UInt16 iso_parity_4;
    public UInt16 iso_msg_termination_4; 
    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;
}
<StructLayout(LayoutKind.Sequential, Pack:=2)> Public Structure SVCANRFSettings
Dim can1 As CAN_SETTINGS
Dim can2 As CAN_SETTINGS
Dim can3 As CAN_SETTINGS
Dim can4 As CAN_SETTINGS
Dim lin1 As LIN_SETTINGS
Dim lin2 As LIN_SETTINGS
Dim network_enables As UInt16
Dim network_enabled_on_boot As UInt16
Dim pwr_man_timeout As UInt32
Dim pwr_man_enable As UInt16
Dim misc_io_initial_ddr As UInt16
Dim misc_io_initial_latch As UInt16
Dim misc_io_analog_enable As UInt16
Dim misc_io_report_period As UInt16
Dim misc_io_on_report_events As UInt16
Dim iso15765_separation_time_offset As UInt16
Dim iso9141_kwp_settings As ISO9141_KEYWORD2000_SETTINGS
Dim perf_en As UInt16
Dim iso_parity As UInt16
Dim iso_msg_termination As UInt16
Dim iso_tester_pullup_enable As UInt16
Dim network_enables_2 As UInt16
Dim iso9141_kwp_settings_2 As ISO9141_KEYWORD2000_SETTINGS
Dim iso_parity_2 As UInt16
Dim iso_msg_termination_2 As UInt16
Dim idle_wakeup_network_enables_1 As UInt16
Dim idle_wakeup_network_enables_2 As UInt16
Dim disableFwLEDs As UInt16
End Structure
[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;
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 iso15765_separation_time_offset;
public ISO9141_KEYWORD2000_SETTINGS iso9141_kwp_settings;
public UInt16 perf_en;
public UInt16 iso_parity;
public UInt16 iso_msg_termination;
public UInt16 iso_tester_pullup_enable;
public UInt16 network_enables_2;
public ISO9141_KEYWORD2000_SETTINGS iso9141_kwp_settings_2;
public UInt16 iso_parity_2;
public UInt16 iso_msg_termination_2;
public UInt16 idle_wakeup_network_enables_1;
public UInt16 idle_wakeup_network_enables_2;
public UInt16 disableFwLEDs;
}

lin1

See structure

lin2

See structure

lin3

See structure

lin4

See structure

cgi_enable_reserved

Deprecated. Enable and disable CGI using the network_enables element.

cgi_baud

CGI network baud rate: 625 = 625,000kb 115 = 115,200kb

cgi_tx_ifs_bit_times

CGI network - Number of bits separating transmit frames. neoVI will ensure this number of idle bit times in between successive transmitted frames. Valid values (1-65535). Default value = 13

cgi_rx_ifs_bit_times

CGI network - Number of bits separating received frames. neoVI identifies the end of a rx frame when there is no CGI bus activity for this given number of bit times. Valid values (1-65535). Default value = 13

cgi_chksum_enable

If enabled neoVI will append a 16 bit checksum to all transmitted frames. 1 to enable, 0 to disable. Default value = 1

network_enables

Bitfield containing the software license enables. Depending on the hardware license purchased the customer may have to conditionally select which hardware channels to enable. For example the neoVI Red license allows the user to enable any 2 Dual Wire CAN channels and any 2 LIN channels. To enable a specific network its corresponding bit must be set (1). In order to transmit or receive on a network it must be enabled. Bit field values:

network_enabled_on_boot

Normally neoVI only initiates its comm channels when CoreMini is running or if neoVI is online with DLL/Vehicle Spy 3. Practically this means the the CAN controllers stay in Listen Only mode until the device goes online. Once online the neoVI loads the user settings. Setting this parameter to 1 will change this behavior so that the neoVI enables its controllers immediately on boot. Default value = 0

pwm_man_timeout

Number of milliseconds of no bus activity required before neoVI enters low power mode. Note pwr_man_enable must be set for power management to be enabled. Default value = 10000

pwr_man_enable

1 = enable Power Management, 0 = disable. Default value = 0

misc_io_initial_ddr

MISC IO Initial Data Direction Register. Controls the initial data direction of the tri-states on all misc digital pins. Each bit corresponds to an individual misc pin. Bit value of 0 signifies an input and bit value 1 signifies and output. Bit values corresponding to non existent pins (EX MISC7-MISC15 on FIRE) have no effect. Default value = 0 Examples: Set MISC1 to be output, all else input: misc_io_initial_ddr = 1 Set MISC1and MISC2 to be output, all else input: misc_io_initial_ddr = 3 (11 binary) Set all MISC pins to output: misc_io_initial_ddr = 65535 (1111111111111111 binary)

misc_io_initial_latch

MISC IO Initial Latch Register. Controls the initial output latch value on all misc digital pins. Each bit corresponds to an individual misc pin. Bit value of 0 signifies an low voltage (ground) and bit value 1 signifies high voltage (3.3 V). Bit values corresponding to non existent pins (EX MISC7-MISC15 on FIRE) have no effect. Default value = 0 Examples: Set MISC1 to be high, all else low: misc_io_initial_latch = 1 Set MISC1and MISC2 to be high, all else low: misc_io_initial_latch = 3 (11 binary) Set all MISC pins to high: misc_io_initial_latch = 65535 (1111111111111111 binary) Note: In order for digital outputs to work correctly the corresponding bit in misc_io_initial_ddr must be set to output and corresponding bit in misc_io_analog_enable must be cleared.

misc_io_analog_enable

MISC IO Analog Enable Register. Controls the initial analog enables on all misc analog pins. Each bit corresponds to an individual misc pin that supports analog input. Bit value of 0 signifies that corresponding misc pin is digital only, and bit value 1 signifies corresponding misc pin is analog. Note that because some MISC pins are not capable of analog they are not included in the register. For example neoVI FIRE's analog pins are MISC3-MISC6, therefore bit 0 corresponds to MISC3's analog enable. Bit values corresponding to non existent pins have no effect. Default value = 0 Examples: Set MISC3 to be analog, all else digital. (neoVI FIRE) : misc_io_analog_enable = 1 Set MISC3 and MISC4 to be analog, all else digital. (neoVI FIRE): misc_io_analog_enable = 3 (11 binary) Set all MISC pins to high: misc_io_analog_enable = 65535 (1111111111111111 binary)

Note: that in order for analog inputs to work correctly the corresponding bit in misc_io_analog_enable must be set to 1.

misc_io_report_period

Period in milliseconds of device report message holding digital and analog data. Default value = 100 Note: Periodic reporting requires misc_io_on_report_events[0] to be set.

misc_io_on_report_events

Bitfield holding enables for various report triggers for the General IO report. Default value = 0 Bit field values:

ain_sample_period

Controls how long the Analog to Digital Converter samples before preforming a convert in milliseconds. If it is set to zero the hardware will perform the conversion immediately after sampling. This option defaults to 0 but is accessible so that high impedance analog sources can still be used by manually increasing the sample period. Default value = 0

ain_threshold

Percent of full voltage change required to trigger a REPORT_ON_MISCX_AIN event. Valid range is 0-100. Default value = 0 Examples: Report fires every time ADC value changes: ain_threshold = 0 Report fires every time ADC value changes by 33 mV: ain_threshold = 1 Report fires every time ADC value changes by 66 mV: ain_threshold = 2 Report fires every time ADC value changes by 3.3 V (Unpractical): ain_threshold = 100 Note: Periodic reporting requires proper misc_io_on_report_events bit to be set.

iso15765_separation_time_offset

In an ISO15765-2 Transmission, the receiver transmits a flow control message that informs that transmitter how much time there should be between individual CAN messages. This parameter allows the user to shift that spacing to make it smaller or larger. Valid range is -1563 to 1563 units where each unit represents 6.4us. Defaults to 0. If IFS plus the offset is negative than the Tx Messages will be back to back. Default value = 0 Examples: ISO15765-2 Tx Message Inner frame spacing is exactly what is specified in flow control message: iso15765_separation_time_offset = 0 ISO15765-2 Tx Message Inner frame spacing is what's specified in flow control message.+ 998.4 us: iso15765_separation_time_offset = 156 ISO15765-2 Tx Message Inner frame spacing is what's specified in flow control message.- 998.4 us: iso15765_separation_time_offset = -156

network_enables_2

Bitfield containing the software license enables. Depending on the hardware license purchased the customer may have to conditionally select which hardware channels to enable. For example the neoVI Red license allows the user to enable any 2 Dual Wire CAN channels and any 2 LIN channels. To enable a specific network its corresponding bit must be set (1). In order to transmit or receive on a network it must be enabled. Bit field values:

iso9141_kwp_settings

See structure

iso_parity;

ISO9141 Parity setting: 0 - no parity, 1 - even, 2 - odd

iso_msg_termination;

ISO9141 message termination setting: 0 - use inner frame time 1 - GME CIM-SCL

iso_tester_pullup_enable;

enables the 510 ohm pull-up resistor on K Line

network_enables_2;

iso9141_kwp_settings2;

See structure

iso_parity_2;

ISO9141 Parity setting: 0 - no parity, 1 - even, 2 - odd

iso_msg_termination_2;

ISO9141 message termination setting: 0 - use inner frame time 1 - GME CIM-SCL

iso9141_kwp_settings_3;

See structure

iso_parity_3;

ISO9141 Parity setting: 0 - no parity, 1 - even, 2 - odd

iso_msg_termination_3;

ISO9141 message termination setting: 0 - use inner frame time 1 - GME CIM-SCL

iso9141_kwp_settings_4;

See structure

iso_parity_4;

ISO9141 Parity setting: 0 - no parity, 1 - even, 2 - odd

iso_msg_termination_4;

ISO9141 message termination setting: 0 - use inner frame time 1 - GME CIM-SCL

fast_init_network_enables;

Bitfield containing the channels to fast wakeup on. Currently only HS and MS CAN are supported

Power management must be enabled for this feature to work.

UART;

See structure

Text_API;

See structure

icscm_uint16 cgi_enable_reserved;
icscm_uint16 cgi_baud;
icscm_uint16 cgi_tx_ifs_bit_times;
icscm_uint16 cgi_rx_ifs_bit_times;
icscm_uint16 cgi_chksum_enable;
icscm_uint16 network_enables;
icscm_uint16 network_enabled_on_boot;
icscm_uint16 pwm_man_timeout;
icscm_uint16 pwr_man_enable;
icscm_uint16 misc_io_initial_ddr;
icscm_uint16 misc_io_initial_latch;
icscm_uint16 misc_io_analog_enable;
icscm_uint16 misc_io_report_period;
icscm_uint16 misc_io_on_report_events;
icscm_uint16 ain_sample_period;
icscm_uint16 ain_threshold;
icscm_uint16 iso15765_separation_time_offset;
icscm_uint16 iso9141_kwp_enable_reserved;
ISO9141_KW2000SETTINGS iso9141_kwp_settings;
icscm_uint16 perf_en;
icscm_uint16 iso_parity;
icscm_uint16 iso_msg_termination;
icscm_uint16 iso_tester_pullup_enable;
icscm_uint16 network_enables_2;
ISO9141_KW2000SETTINGS iso9141_kwp_settings2;
icscm_uint16 iso_parity_2;
icscm_uint16 iso_msg_termination_2;
ISO9141_KW2000SETTINGS iso9141_kwp_settings_3;
icscm_uint16 iso_parity_3;
icscm_uint16 iso_msg_termination_3;
ISO9141_KW2000SETTINGS iso9141_kwp_settings_4;
icscm_uint16 iso_parity_4;
icscm_uint16 iso_msg_termination_4;
icscm_uint16 fast_init_network_enables_1;
icscm_uint16 fast_init_network_enables_2;
UART_SETTINGS uart;
UART_SETTINGS uart2;
STextAPISettings text_api;
}SFireSettings;

CAN_SETTINGS can1

See CAN_SETTINGS structure

CAN_SETTINGS can2

See CAN_SETTINGS structure

CAN_SETTINGS can3

See CAN_SETTINGS structure

CAN_SETTINGS can4

See CAN_SETTINGS structure

SWCAN_SETTINGS swcan

See SWCAN_SETTINGS structure

CAN_SETTINGS lsftcan

See structure

unsigned int pwr_man_timeout;
unsigned short pwr_man_enable;
unsigned short misc_io_initial_ddr;
unsigned short misc_io_initial_latch;
unsigned short misc_io_analog_enable;
unsigned short misc_io_report_period;
unsigned short misc_io_on_report_events;
unsigned short iso15765_separation_time_offset;
ISO9141_KEYWORD2000_SETTINGS iso9141_kwp_settings;
unsigned short perf_en;
unsigned short iso_parity;
unsigned short iso_msg_termination;
unsigned short iso_tester_pullup_enable;
unsigned short network_enables_2;
ISO9141_KEYWORD2000_SETTINGS iso9141_kwp_settings_2;
unsigned short iso_parity_2;
unsigned short iso_msg_termination_2;
unsigned short idle_wakeup_network_enables_1;
unsigned short idle_wakeup_network_enables_2;
unsigned short disableFwLEDs;
}SVCANRFSettings;

See CAN_SETTINGS structure

can2

See CAN_SETTINGS structure

can3

See CAN_SETTINGS structure

can4

See CAN_SETTINGS structure

lin1

See LIN_SETTINGS structure

lin2

See LIN_SETTINGS structure

network_enables

Bitfield containing the software license enables. Depending on the hardware license purchased the customer may have to conditionally select which hardware channels to enable. For example the neoVI Red license allows the user to enable any 2 Dual Wire CAN channels and any 2 LIN channels. To enable a specific network its corresponding bit must be set (1). In order to transmit or receive on a network it must be enabled.

HSCAN : 0

MSCAN : 1

LIN1 : 2

LIN2 : 3

VIRTUAL : 4

HSCAN2 : 5

LSFTCAN1 : 6

SWCAN1 : 7

HSCAN3 : 8

network_enabled_on_boot

Normally neoVI only initiates its comm channels when CoreMini is running or if neoVI is online with DLL/Vehicle Spy 3. Practically this means the the CAN controllers stay in Listen Only mode until the device goes online. Once online the neoVI loads the user settings. Setting this parameter to 1 will change this behavior so that the neoVI enables its controllers immediately on boot.

Default value = 0

pwr_man_timeout

Number of milliseconds of no bus activity required before neoVI enters low power mode. Note pwr_man_enable must be set for power management to be enabled.

Default value = 10000

pwr_man_enable

1 = enable Power Management, 0 = disable.

Default value = 0

misc_io_initial_ddr

MISC IO Initial Data Direction Register. Controls the initial data direction of the tri-states on all misc digital pins. Each bit corresponds to an individual misc pin. Bit value of 0 signifies an input and bit value 1 signifies and output. Bit values corresponding to non existent pins (EX MISC7-MISC15 on FIRE) have no effect.

Default value = 0

Examples:

Set MISC1 to be output, all else input: misc_io_initial_ddr = 1

Set MISC1and MISC2 to be output, all else input: misc_io_initial_ddr = 3 (11 binary)

Set all MISC pins to output: misc_io_initial_ddr = 65535 (1111111111111111 binary)

misc_io_initial_latch

MISC IO Initial Latch Register. Controls the initial output latch value on all misc digital pins. Each bit corresponds to an individual misc pin. Bit value of 0 signifies an low voltage and bit value 1 signifies high voltage. Bit values corresponding to non existent pins (EX MISC7-MISC15 on FIRE) have no effect.

Default value = 0

Examples:

Set MISC1 to be high, all else low: misc_io_initial_latch = 1

Set MISC1and MISC2 to be high, all else low: misc_io_initial_latch = 3 (11 binary)

Set all MISC pins to high: misc_io_initial_latch = 65535 (1111111111111111 binary)

Note: In order for digital outputs to work correctly the corresponding bit in misc_io_initial_ddr must be set to output and corresponding bit in misc_io_analog_enable must be cleared.

misc_io_analog_enable

MISC IO Analog Enable Register. Controls the initial analog enables on all misc analog pins. Each bit corresponds to an individual misc pin that supports analog input. Bit value of 0 signifies that corresponding misc pin is digital only, and bit value 1 signifies corresponding misc pin is analog. Note that because some MISC pins are not capable of analog they are not included in the register. For example neoVI FIRE’s analog pins are MISC3-MISC6, therefore bit 0 corresponds to MISC3’s analog enable. Bit values corresponding to non existent pins have no effect.

Default value = 0

Examples:

Set MISC3 to be analog, all else digital. (neoVI FIRE) : misc_io_analog_enable = 1

Set MISC3 and MISC4 to be analog, all else digital. (neoVI FIRE): misc_io_analog_enable = 3 (11 binary)

Set all MISC pins to high: misc_io_analog_enable = 65535 (1111111111111111 binary) Note: that in order for analog inputs to work correctly the corresponding bit in misc_io_analog_enable must be set to 1.

misc_io_report_period

Period in milliseconds of device report message holding digital and analog data.

Default value = 100

Note: Periodic reporting requires misc_io_on_report_events[0] to be set.

misc_io_on_report_events

Period in milliseconds of device report message holding digital and analog data.

Default value = 100

Note: Periodic reporting requires misc_io_on_report_events[0] to be set.

iso15765_separation_time_offset

In an ISO15765-2 Transmission, the receiver transmits a flow control message that informs that transmitter how much time there should be between individual CAN messages. This parameter allows the user to shift that spacing to make it smaller or larger. Valid range is -1563 to 1563 units where each unit represents 6.4us. Defaults to 0. If IFS plus the offset is negative than the Tx Messages will be back to back.

Default value = 0

Examples:

ISO15765-2 Tx Message Inner frame spacing is exactly what is specified in flow control message: iso15765_separation_time_offset = 0

ISO15765-2 Tx Message Inner frame spacing is what’s specified in flow control message.+ 998.4 us: iso15765_separation_time_offset = 156

ISO15765-2 Tx Message Inner frame spacing is what’s specified in flow control message.- 998.4 us: iso15765_separation_time_offset = -156

iso9141_kwp_settings

See ISO9141_KEYWORD2000_SETTINGS structure

perf_en

Performance test. Default value = 0

iso_parity

ISO9141 Parity setting: 0 - no parity, 1 - even, 2 - odd

iso_msg_termination

ISO9141 message termination setting: 0 - use inner frame time 1 - GME CIM-SCL

iso_tester_pullup_enable

Not Available

network_enables_2

Bitfield containing the software license enables. Depending on the hardware license purchased the customer may have to conditionally select which hardware channels to enable. For example the neoVI Red license allows the user to enable any 2 Dual Wire CAN channels and any 2 LIN channels. To enable a specific network its corresponding bit must be set (1). In order to transmit or receive on a network it must be enabled.

KLINE1 : 0

KLINE2 : 1

KLINE3 : 2

KLINE4 : 3

FLEXRAY1A : 4

UART : 5

UART2 :6

LIN5 : 7

MOST25 : 8

iso9141_kwp_settings_2

See ISO9141_KEYWORD2000_SETTINGS structure

iso_parity_2

ISO9141 Parity setting: 0 - no parity, 1 - even, 2 - odd

iso_msg_termination_2

ISO9141 message termination setting: 0 - use inner frame time 1 - GME CIM-SCL

idle_wakeup_network_enables_1

Bitfield containing list of hardware networks to look at for sleep enable. To enable a specific network its corresponding bit must be set (1). In order to transmit or receive on a network it must be enabled.

HSCAN : 0

MSCAN : 1

LIN1 : 2

LIN2 : 3

VIRTUAL : 4

HSCAN2 : 5

LSFTCAN1 : 6

SWCAN1 : 7

HSCAN3 : 8

GMCGI : 9

idle_wakeup_network_enables_2

Bitfield containing list of hardware networks to look at for sleep enable. To enable a specific network its corresponding bit must be set (1). In order to transmit or receive on a network it must be enabled.

KLINE1 : 0

KLINE2 : 1

KLINE3 : 2

KLINE4 : 3

FLEXRAY1A : 4

UART : 5

UART2 :6

LIN5 : 7

MOST25 : 8

MOST50 : 9

disableFwLEDs

Disables the LEDs on the device.

GMCGI : 9

J1850 : 10

LIN3 : 11

LIN4 : 12

J1708 : 13

HSCAN4 : 14

HSCAN5 :15

MOST50 : 9

FLEXRAY1B : 10

SWCAN2 : 11

ETHERNET_DAQ : 12

ETHERNET : 13

FLEXRAY2A : 14

FLEXRAY2B :15

J1850 : 10

LIN3 : 11

LIN4 : 12

J1708 : 13

HSCAN4 : 14

HSCAN5 : 15

FLEXRAY1B : 10

SWCAN2 : 11

ETHERNET_DAQ : 12

ETHERNET : 13

FLEXRAY2A : 14

FLEXRAY2B :15

HSCAN2 : 5

NA : 13

LSFT : 6

NA : 14

SW_CAN : 7

NA : 15

Examples: Enable HSCAN1 and HSCAN2: network_enables = 33 (21 hex) (0000000000100001 binary) Enable all networks: network_enables = 65535 (FFFF hex) (1111111111111111 binary)

REPORT_ON_MISC5 : 5

REPORT_ON_MISC6_AIN : 13

REPORT_ON_MISC6 : 6

REPORT_ON_LED1 : 7

HSCAN1 : 0

HSCAN3 : 8

MSCAN : 1

CGI : 9

LIN1 : 2

NA : 10

LIN2 : 3

LIN3 : 11

reserved : 4

REPORT_ON_PERIODIC : 0

REPORT_ON_LED2 : 8

REPORT_ON_MISC1 : 1

REPORT_ON_KLINE : 9

REPORT_ON_MISC2 : 2

REPORT_ON_MISC3_AIN : 10

REPORT_ON_MISC3 : 3

REPORT_ON_MISC4_AIN : 11

REPORT_ON_MISC4 : 4

REPORT_ON_MISC5_AIN : 12

KLINE1 : 0

Reserved : 4

KLINE2 : 1

Reserved : 5

KLIN3 : 2

Reserved : 6

LIN2 : 3

HSCAN1 : 0

MSCAN : 1

CAN_SETTINGS
LIN_SETTING
LIN_SETTINGS
LIN_SETTING
LIN_SETTINGS
LIN_SETTING
LIN_SETTINGS
LIN_SETTING
LIN_SETTINGS
icscm_uint16
icscm_uint16
icscm_uint16
icscm_uint16
icscm_uint16
icscm_uint16
icscm_uint16
icscm_uint16
icscm_uint16
icscm_uint16
icscm_uint16
icscm_uint16
icscm_uint16
icscm_uint16
icscm_uint16
icscm_uint16
icscm_uint16
icscm_uint16
ISO9141_KW2000SETTINGS
ISO9141_KW2000SETTINGS
icscm_uint16
icscm_uint16
icscm_uint16
icscm_uint16
ISO9141_KW2000SETTINGS
ISO9141_KW2000SETTINGS
icscm_uint16
icscm_uint16
ISO9141_KW2000SETTINGS
ISO9141_KW2000SETTINGS
icscm_uint16
icscm_uint16
ISO9141_KW2000SETTINGS
ISO9141_KW2000SETTINGS
icscm_uint16
icscm_uint16
icscm_uint16
UART_SETTINGS
UART_SETTINGS
STextAPISettings
STextAPISettings

LIN4 : 12

SRADGalaxySettings Structure

Structure defining the parameter in SRADGalaxySettings

typedef struct __declspec (align(2))
{
   unsigned short perf_en;
   OP_ETH_GENERAL_SETTINGS opEthGen;
   OP_ETH_SETTINGS opEth1;
   OP_ETH_SETTINGS opEth2;
   OP_ETH_SETTINGS opEth3;
   OP_ETH_SETTINGS opEth4;
   OP_ETH_SETTINGS opEth5;
   OP_ETH_SETTINGS opEth6;
   OP_ETH_SETTINGS opEth7;

Remarks

Item
Description

perf_en

<StructLayout(LayoutKind.Sequential, Pack:=2)> Public Structure SRADGalaxySettings
   Dim perf_en As UInt16
   Dim opEthGen As OP_ETH_GENERAL_SETTINGS
   Dim opEth1 As OP_ETH_SETTINGS
   Dim opEth2 As OP_ETH_SETTINGS
   Dim opEth3 As OP_ETH_SETTINGS
   Dim opEth4 As OP_ETH_SETTINGS
   Dim opEth5 As OP_ETH_SETTINGS
   Dim opEth6 As OP_ETH_SETTINGS
   Dim opEth7 As OP_ETH_SETTINGS
   Dim opEth8 As OP_ETH_SETTINGS
   Dim opEth9 As OP_ETH_SETTINGS
   Dim opEth10 As OP_ETH_SETTINGS
   Dim opEth11 As OP_ETH_SETTINGS
   Dim opEth12 As OP_ETH_SETTINGS
   Dim can1 As CAN_SETTINGS
   Dim canfd1 As CANFD_SETTINGS
   Dim can2 As CAN_SETTINGS
   Dim canfd2 As CANFD_SETTINGS
   Dim can3 As CAN_SETTINGS
   Dim canfd3 As CANFD_SETTINGS
   Dim can4 As CAN_SETTINGS
   Dim canfd4 As CANFD_SETTINGS
   Dim can5 As CAN_SETTINGS
   Dim canfd5 As CANFD_SETTINGS
   Dim can6 As CAN_SETTINGS
   Dim canfd6 As CANFD_SETTINGS
   Dim can7 As CAN_SETTINGS
   Dim canfd7 As CANFD_SETTINGS
   Dim can8 As CAN_SETTINGS
   Dim canfd8 As CANFD_SETTINGS
   Dim swcan1 As SWCAN_SETTINGS
   Dim network_enables As UInt16
   Dim swcan2 As SWCAN_SETTINGS
   Dim network_enables_2 As UInt16
   Dim lin1 As LIN_SETTINGS
   Dim misc_io_initial_ddr As UInt16
   Dim misc_io_initial_latch As UInt16
   Dim misc_io_report_period As UInt16
   Dim misc_io_on_report_events As UInt16
   Dim misc_io_analog_enable As UInt16
   Dim ain_sample_period As UInt16
   Dim ain_threshold As UInt16
   Dim pwr_man_timeout As UInt32
   Dim pwr_man_enable As UInt16
   Dim network_enabled_on_boot As UInt16
   Dim iso15765_separation_time_offset As UInt16
   Dim iso_9141_kwp_enable_reserved As UInt16
   Dim iso9141_kwp_settings_1 As ISO9141_KEYWORD2000_SETTINGS
   Dim iso_parity_1 As UInt16
   Dim iso_msg_termination_1 As UInt16
   Dim idle_wakeup_network_enables_1 As UInt16
   Dim idle_wakeup_network_enables_2 As UInt16
   Dim network_enables_3 As UInt16
   Dim idle_wakeup_network_enables_3 As UInt16
   Dim can_switch_mode As UInt16
   Dim text_api As STextAPISettings
   Dim timeSyncSettings As TIMESYNC_ICSHARDWARE_SETTINGS
   Dim hwComLatencyTestEn As UInt16
   Dim reporting As RAD_REPORTING_SETTINGS
   Dim disk As DISK_SETTINGS
   Dim logger As LOGGER_SETTINGS
   Dim ethernet1 As ETHERNET_SETTINGS2
   Dim ethernet2 As ETHERNET_SETTINGS2
   Dim network_enables_4 As Int16
   Dim gPTP As RAD_GPTP_SETTINGS
End Structure
[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;
   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 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;
   public RAD_REPORTING_SETTINGS reporting;
   public DISK_SETTINGS disk;
   public LOGGER_SETTINGS logger;
   public ETHERNET_SETTINGS2 ethernet1;
   public ETHERNET_SETTINGS2 ethernet2;
   public Int16 network_enables_4;
   public RAD_GPTP_SETTINGS gPTP;
}
OP_ETH_SETTINGS opEth8;
OP_ETH_SETTINGS opEth9;
OP_ETH_SETTINGS opEth10;
OP_ETH_SETTINGS opEth11;
OP_ETH_SETTINGS opEth12;
CAN_SETTINGS can1;
CANFD_SETTINGS canfd1;
CAN_SETTINGS can2;
CANFD_SETTINGS canfd2;
CAN_SETTINGS can3;
CANFD_SETTINGS canfd3;
CAN_SETTINGS can4;
CANFD_SETTINGS canfd4;
CAN_SETTINGS can5;
CANFD_SETTINGS canfd5;
CAN_SETTINGS can6;
CANFD_SETTINGS canfd6;
CAN_SETTINGS can7;
CANFD_SETTINGS canfd7;
CAN_SETTINGS can8;
CANFD_SETTINGS canfd8;
SWCAN_SETTINGS swcan1;
unsigned short network_enables;
SWCAN_SETTINGS swcan2;
unsigned short network_enables_2;
LIN_SETTINGS lin1;
unsigned short misc_io_initial_ddr;
unsigned short misc_io_initial_latch;
unsigned short misc_io_report_period;
unsigned short misc_io_on_report_events;
unsigned short misc_io_analog_enable;
unsigned short ain_sample_period;
unsigned short ain_threshold;
unsigned int pwr_man_timeout;
unsigned short pwr_man_enable;
unsigned short network_enabled_on_boot;
unsigned short iso15765_separation_time_offset;
unsigned short iso_9141_kwp_enable_reserved;
ISO9141_KEYWORD2000_SETTINGS iso9141_kwp_settings_1;
unsigned short iso_parity_1;
unsigned short iso_msg_termination_1;
unsigned short idle_wakeup_network_enables_1;
unsigned short idle_wakeup_network_enables_2;
unsigned short network_enables_3;
unsigned short idle_wakeup_network_enables_3;
unsigned short can_switch_mode;
STextAPISettings text_api;
TIMESYNC_ICSHARDWARE_SETTINGS timeSyncSettings;
unsigned short hwComLatencyTestEn;
RAD_REPORTING_SETTINGS reporting;
DISK_SETTINGS disk;
LOGGER_SETTINGS logger;
ETHERNET_SETTINGS2 ethernet1;
ETHERNET_SETTINGS2 ethernet2;
int16_t network_enables_4;
RAD_GPTP_SETTINGS gPTP;
}SRADGalaxySettings;

Performance test. Default value = 0

opEthGen

See OP_ETH_GENERAL_SETTINGS structure

opEth1

See OP_ETH_SETTINGS structure

opEth2

See OP_ETH_SETTINGS structure

opEth3

See OP_ETH_SETTINGS structure

opEth4

See OP_ETH_SETTINGS structure

opEth5

See OP_ETH_SETTINGS structure

opEth6

See OP_ETH_SETTINGS structure

opEth7

See OP_ETH_SETTINGS structure

opEth8

See OP_ETH_SETTINGS structure

opEth9

See OP_ETH_SETTINGS structure

opEth10

See OP_ETH_SETTINGS structure

opEth11

See OP_ETH_SETTINGS structure

opEth12

See OP_ETH_SETTINGS structure

can1

See CAN_SETTINGS structure

canfd1

See CANFD_SETTINGS structure

can2

See CAN_SETTINGS structure

canfd2

See CANFD_SETTINGS structure

can3

See CAN_SETTINGS structure

canfd3

See CANFD_SETTINGS structure

can4

See CAN_SETTINGS structure

canfd4

See CANFD_SETTINGS structure

can5

See CAN_SETTINGS structure

canfd5

See CANFD_SETTINGS structure

can6

See CAN_SETTINGS structure

canfd6

See CANFD_SETTINGS structure

can7

See CAN_SETTINGS structure

canfd7

See CANFD_SETTINGS structure

can8

See CAN_SETTINGS structure

canfd8

See CANFD_SETTINGS structure

swcan1

See SWCAN_SETTINGS structure

network_enables

Bitfield containing the software license enables. Depending on the hardware license purchased the customer may have to conditionally select which hardware channels to enable. For example the neoVI Red license allows the user to enable any 2 Dual Wire CAN channels and any 2 LIN channels. To enable a specific network its corresponding bit must be set (1). In order to transmit or receive on a network it must be enabled.

HSCAN : 0

MSCAN : 1

LIN1 : 2

LIN2 : 3

VIRTUAL : 4

HSCAN2 : 5

LSFTCAN1 : 6

SWCAN1 : 7

HSCAN3 : 8

swcan2

See SWCAN_SETTINGS structure

network_enables_2

Bitfield containing the software license enables. Depending on the hardware license purchased the customer may have to conditionally select which hardware channels to enable. For example the neoVI Red license allows the user to enable any 2 Dual Wire CAN channels and any 2 LIN channels. To enable a specific network its corresponding bit must be set (1). In order to transmit or receive on a network it must be enabled.

KLINE1 : 0

KLINE2 : 1

KLINE3 : 2

KLINE4 : 3

FLEXRAY1A : 4

UART: 5

UART2 : 6

LIN5 : 7

MOST25 : 8

lin1

See LIN_SETTINGS structure

misc_io_initial_ddr

MISC IO Initial Data Direction Register. Controls the initial data direction of the tri-states on all misc digital pins. Each bit corresponds to an individual misc pin. Bit value of 0 signifies an input and bit value 1 signifies and output. Bit values corresponding to non existent pins (EX MISC7-MISC15 on FIRE) have no effect.

Default value = 0

Examples:

Set MISC1 to be output, all else input: misc_io_initial_ddr = 1

Set MISC1and MISC2 to be output, all else input: misc_io_initial_ddr = 3 (11 binary)

Set all MISC pins to output: misc_io_initial_ddr = 65535 (1111111111111111 binary)

misc_io_initial_latch

MISC IO Initial Latch Register. Controls the initial output latch value on all misc digital pins. Each bit corresponds to an individual misc pin. Bit value of 0 signifies an low voltage and bit value 1 signifies high voltage. Bit values corresponding to non existent pins (EX MISC7-MISC15 on FIRE) have no effect.

Default value = 0

Examples:

Set MISC1 to be high, all else low: misc_io_initial_latch = 1

Set MISC1and MISC2 to be high, all else low: misc_io_initial_latch = 3 (11 binary)

Set all MISC pins to high: misc_io_initial_latch = 65535 (1111111111111111 binary)

Note: In order for digital outputs to work correctly the corresponding bit in misc_io_initial_ddr must be set to output and corresponding bit in misc_io_analog_enable must be cleared.

misc_io_report_period

Period in milliseconds of device report message holding digital and analog data.

Default value = 100

Note: Periodic reporting requires misc_io_on_report_events[0] to be set.

misc_io_on_report_events

Bitfield holding enables for various report triggers for the General IO report. Default value = 0 Bit field values:

REPORT_ON_PERIODIC : 0

REPORT_ON_MISC1 : 1

REPORT_ON_MISC2 : 2

REPORT_ON_MISC3 : 3

REPORT_ON_MISC4 : 4

REPORT_ON_MISC5 : 5

REPORT_ON_MISC6 : 6

REPORT_ON_LED1 : 7

REPORT_ON_LED2 : 8

REPORT_ON_KLINE : 9

misc_io_analog_enable

MISC IO Initial Latch Register. Controls the initial output latch value on all misc digital pins. Each bit corresponds to an individual misc pin. Bit value of 0 signifies an low voltage and bit value 1 signifies high voltage. Bit values corresponding to non existent pins (EX MISC7-MISC15 on FIRE) have no effect.

Default value = 0

Examples:

Set MISC1 to be high, all else low: misc_io_initial_latch = 1

Set MISC1and MISC2 to be high, all else low: misc_io_initial_latch = 3 (11 binary)

Set all MISC pins to high: misc_io_initial_latch = 65535 (1111111111111111 binary)

Note: In order for digital outputs to work correctly the corresponding bit in misc_io_initial_ddr must be set to output and corresponding bit in misc_io_analog_enable must be cleared.

ain_sample_period

Controls how long the Analog to Digital Converter samples before preforming a convert in milliseconds. If it is set to zero the hardware will perform the conversion immediately after sampling. This option defaults to 0 but is accessible so that high impedance analog sources can still be used by manually increasing the sample period.

Default value = 0

ain_threshold

Percent of full voltage change required to trigger a REPORT_ON_MISCX_AIN event. Valid range is 0-100.

Default value = 0

Examples:

Report fires every time ADC value changes: ain_threshold = 0

Report fires every time ADC value changes by 400 mV: ain_threshold = 1

Report fires every time ADC value changes by 800 mV: ain_threshold = 2

Report fires every time ADC value changes by 40 V (Unpractical): ain_threshold = 100

Note: Periodic reporting requires proper misc_io_on_report_events bit to be set.

pwr_man_timeout

Number of milliseconds of no bus activity required before neoVI enters low power mode. Note pwr_man_enable must be set for power management to be enabled.

Default value = 10000

pwr_man_enable

1 = enable Power Management, 0 = disable.

Default value = 0

network_enabled_on_boot

Normally neoVI only initiates its comm channels when CoreMini is running or if neoVI is online with DLL/Vehicle Spy 3. Practically this means the the CAN controllers stay in Listen Only mode until the device goes online. Once online the neoVI loads the user settings. Setting this parameter to 1 will change this behavior so that the neoVI enables its controllers immediately on boot.

Default value = 0

iso15765_separation_time_offset

In an ISO15765-2 Transmission, the receiver transmits a flow control message that informs that transmitter how much time there should be between individual CAN messages. This parameter allows the user to shift that spacing to make it smaller or larger. Valid range is -1563 to 1563 units where each unit represents 6.4us. Defaults to 0. If IFS plus the offset is negative than the Tx Messages will be back to back.

Default value = 0

Examples:

ISO15765-2 Tx Message Inner frame spacing is exactly what is specified in flow control message: iso15765_separation_time_offset = 0

ISO15765-2 Tx Message Inner frame spacing is what’s specified in flow control message.+ 998.4 us: iso15765_separation_time_offset = 156

ISO15765-2 Tx Message Inner frame spacing is what’s specified in flow control message.- 998.4 us: iso15765_separation_time_offset = -156

iso_9141_kwp_enable_reserved

ISO9141 Parity setting: 0 - no parity, 1 - even, 2 - odd

iso9141_kwp_settings_1

See ISO9141_KEYWORD2000_SETTINGS structure

iso_parity_1

ISO9141 Parity setting: 0 - no parity, 1 - even, 2 - odd

iso_msg_termination_1

Not Available

idle_wakeup_network_enables_1

Bitfield containing list of hardware networks to look at for sleep enable. To enable a specific network its corresponding bit must be set (1). In order to transmit or receive on a network it must be enabled.

HSCAN : 0

MSCAN : 1

LIN1 : 2

LIN2 : 3

VIRTUAL : 4

HSCAN2 : 5

LSFTCAN1 : 6

SWCAN1 : 7

HSCAN3 : 8

GMCGI : 9

idle_wakeup_network_enables_2

Bitfield containing list of hardware networks to look at for sleep enable. To enable a specific network its corresponding bit must be set (1). In order to transmit or receive on a network it must be enabled.

KLINE1 : 0

KLINE2 : 1

KLINE3 : 2

KLINE4 : 3

FLEXRAY1A : 4

UART: 5

UART2 : 6

LIN5 : 7

MOST25 : 8

MOST50 : 9

network_enables_3

Bitfield containing the software license enables. Depending on the hardware license purchased the customer may have to conditionally select which hardware channels to enable. For example the neoVI Red license allows the user to enable any 2 Dual Wire CAN channels and any 2 LIN channels. To enable a specific network its corresponding bit must be set (1). In order to transmit or receive on a network it must be enabled.

HSCAN6 : 0

HSCAN7 : 1

LIN6 : 2

LSFTCAN2 : 3

OP_ETH1: 4

OP_ETH2 : 5

OP_ETH3 : 6

OP_ETH4 : 7

OP_ETH5 : 8

idle_wakeup_network_enables_3

Not Available

can_switch_mode

Not Available

text_api

See STextAPISettings structure

timeSyncSettings

See TIMESYNC_ICSHARDWARE_SETTINGS structure

hwComLatencyTestEn

Not Available

reporting

See RAD_REPORTING_SETTINGS structure

disk

See DISK_SETTINGS structure

logger

See LOGGER_SETTINGS structure

ethernet1

See ETHERNET_SETTINGS2 structure

ethernet2

See ETHERNET_SETTINGS2 structure

network_enables_4

Not Available

gPTP

See RAD_GPTP_SETTINGS structure

SFire2Settings Structure

This structure defines various settings for the neoVI FIRE2 device.

Remarks

Item
Description

GMCGI : 9

J1850 : 10

LIN3 : 11

LIN4 : 12

J1708 : 13

HSCAN4 : 14

HSCAN5 : 15

MOST50 : 9

FLEXRAY1B : 10

SWCAN2 : 11

ETHERNET_DAQ : 12

ETHERNET : 13

FLEXRAY2A : 14

FLEXRAY2B : 15

REPORT_ON_MISC3_AIN : 10

REPORT_ON_MISC4_AIN : 11

REPORT_ON_MISC5_AIN : 12

REPORT_ON_MISC6_AIN : 13

J1850 : 10

LIN3 : 11

LIN4 : 12

J1708 : 13

HSCAN4 : 14

HSCAN5 : 15

FLEXRAY1B : 10

SWCAN2 : 11

ETHERNET_DAQ : 12

ETHERNET : 13

FLEXRAY2A : 14

FLEXRAY2B : 15

OP_ETH6 : 9

OP_ETH7 : 10

OP_ETH8 : 11

OP_ETH9 : 12

OP_ETH10 : 13

OP_ETH11: 14

OP_ETH12: 15

can1

See structure

canfd1

See structure

can2

See structure

canfd2

See structure

can3

See structure

canfd3

See structure

can4

See structure

canfd4

See structure

can5

See structure

canfd5

See structure

can6

See structure

canfd6

See structure

can7

See structure

canfd7

See structure

can8

See structure

canfd8

See structure

swcan1

See structure

network_enables

Bitfield containing the software license enables. Depending on the hardware license purchased the customer may have to conditionally select which hardware channels to enable. For example the neoVI Red license allows the user to enable any 2 Dual Wire CAN channels and any 2 LIN channels. To enable a specific network its corresponding bit must be set (1). In order to transmit or receive on a network it must be enabled.

swcan2

See structure

network_enables_2

Bitfield containing the software license enables. Depending on the hardware license purchased the customer may have to conditionally select which hardware channels to enable. For example the neoVI Red license allows the user to enable any 2 Dual Wire CAN channels and any 2 LIN channels. To enable a specific network its corresponding bit must be set (1). In order to transmit or receive on a network it must be enabled.

lsftcan1

See structure

lsftcan2

See structure

lin1

See structure

misc_io_initial_ddr

MISC IO Initial Data Direction Register. Controls the initial data direction of the tri-states on all misc digital pins. Each bit corresponds to an individual misc pin. Bit value of 0 signifies an input and bit value 1 signifies and output. Bit values corresponding to non existent pins (EX MISC7-MISC15 on FIRE) have no effect. Default value = 0 Examples: Set MISC1 to be output, all else input: misc_io_initial_ddr = 1 Set MISC1and MISC2 to be output, all else input: misc_io_initial_ddr = 3 (11 binary) Set all MISC pins to output: misc_io_initial_ddr = 65535 (1111111111111111 binary)

lin2

See structure

misc_io_initial_latch

MISC IO Initial Latch Register. Controls the initial output latch value on all misc digital pins. Each bit corresponds to an individual misc pin. Bit value of 0 signifies an low voltage and bit value 1 signifies high voltage. Bit values corresponding to non existent pins (EX MISC7-MISC15 on FIRE) have no effect. Default value = 0 Examples: Set MISC1 to be high, all else low: misc_io_initial_latch = 1 Set MISC1and MISC2 to be high, all else low: misc_io_initial_latch = 3 (11 binary) Set all MISC pins to high: misc_io_initial_latch = 65535 (1111111111111111 binary) Note: In order for digital outputs to work correctly the corresponding bit in misc_io_initial_ddr must be set to output and corresponding bit in misc_io_analog_enable must be cleared.

lin3

See structure

misc_io_report_period

Period in milliseconds of device report message holding digital and analog data. Default value = 100 Note: Periodic reporting requires misc_io_on_report_events[0] to be set.

lin4

See structure

misc_io_on_report_events

Bitfield holding enables for various report triggers for the General IO report. Default value = 0 Bit field values:

lin5

See structure

misc_io_analog_enable

MISC IO Analog Enable Register. Controls the initial analog enables on all misc analog pins. Each bit corresponds to an individual misc pin that supports analog input. Bit value of 0 signifies that corresponding misc pin is digital only, and bit value 1 signifies corresponding misc pin is analog. Note that because some MISC pins are not capable of analog they are not included in the register. For example neoVI FIRE's analog pins are MISC3-MISC6, therefore bit 0 corresponds to MISC3's analog enable. Bit values corresponding to non existent pins have no effect. Default value = 0 Examples: Set MISC3 to be analog, all else digital. (neoVI FIRE) : misc_io_analog_enable = 1 Set MISC3 and MISC4 to be analog, all else digital. (neoVI FIRE): misc_io_analog_enable = 3 (11 binary) Set all MISC pins to high: misc_io_analog_enable = 65535 (1111111111111111 binary) Note: that in order for analog inputs to work correctly the corresponding bit in misc_io_analog_enable must be set to 1.

ain_sample_period

Controls how long the Analog to Digital Converter samples before preforming a convert in milliseconds. If it is set to zero the hardware will perform the conversion immediately after sampling. This option defaults to 0 but is accessible so that high impedance analog sources can still be used by manually increasing the sample period. Default value = 0

ain_threshold

Percent of full voltage change required to trigger a REPORT_ON_MISCX_AIN event. Valid range is 0-100. Default value = 0 Examples: Report fires every time ADC value changes: ain_threshold = 0 Report fires every time ADC value changes by 400 mV: ain_threshold = 1 Report fires every time ADC value changes by 800 mV: ain_threshold = 2 Report fires every time ADC value changes by 40 V (Unpractical): ain_threshold = 100 Note: Periodic reporting requires proper misc_io_on_report_events bit to be set.

pwr_man_timeout

Number of milliseconds of no bus activity required before neoVI enters low power mode. Note pwr_man_enable must be set for power management to be enabled. Default value = 10000

pwr_man_enable

1 = enable Power Management, 0 = disable. Default value = 0

network_enabled_on_boot

Normally neoVI only initiates its comm channels when CoreMini is running or if neoVI is online with DLL/Vehicle Spy 3. Practically this means the the CAN controllers stay in Listen Only mode until the device goes online. Once online the neoVI loads the user settings. Setting this parameter to 1 will change this behavior so that the neoVI enables its controllers immediately on boot. Default value = 0

iso15765_separation_time_offset

In an ISO15765-2 Transmission, the receiver transmits a flow control message that informs that transmitter how much time there should be between individual CAN messages. This parameter allows the user to shift that spacing to make it smaller or larger. Valid range is -1563 to 1563 units where each unit represents 6.4us. Defaults to 0. If IFS plus the offset is negative than the Tx Messages will be back to back. Default value = 0 Examples: ISO15765-2 Tx Message Inner frame spacing is exactly what is specified in flow control message: iso15765_separation_time_offset = 0 ISO15765-2 Tx Message Inner frame spacing is what's specified in flow control message.+ 998.4 us: iso15765_separation_time_offset = 156 ISO15765-2 Tx Message Inner frame spacing is what's specified in flow control message.- 998.4 us: iso15765_separation_time_offset = -156

iso_9141_kwp_enable_reserved

Reserved

iso9141_kwp_settings_1

See structure

iso_parity_1

ISO9141 Parity setting: 0 - no parity, 1 - even, 2 - odd

iso9141_kwp_settings_2

See structure

iso_parity_2

ISO9141 Parity setting: 0 - no parity, 1 - even, 2 - odd

iso9141_kwp_settings_3

See structure

iso_parity_3

ISO9141 Parity setting: 0 - no parity, 1 - even, 2 - odd

iso9141_kwp_settings_4

See structure

iso_parity_4

ISO9141 Parity setting: 0 - no parity, 1 - even, 2 - odd

iso_msg_termination_1

ISO9141 message termination setting: 0 - use inner frame time 1 - GME CIM-SCL

iso_msg_termination_2

ISO9141 message termination setting: 0 - use inner frame time 1 - GME CIM-SCL

iso_msg_termination_3

ISO9141 message termination setting: 0 - use inner frame time 1 - GME CIM-SCL

iso_msg_termination_4

ISO9141 message termination setting: 0 - use inner frame time 1 - GME CIM-SCL

idle_wakeup_network_enables_1

Bitfield containing list of hardware networks to look at for sleep enable. To enable a specific network its corresponding bit must be set (1). In order to transmit or receive on a network it must be enabled.

idle_wakeup_network_enables_2

Bitfield containing list of hardware networks to look at for sleep enable. To enable a specific network its corresponding bit must be set (1). In order to transmit or receive on a network it must be enabled.

network_enables_3

Bitfield containing the software license enables. Depending on the hardware license purchased the customer may have to conditionally select which hardware channels to enable. For example the neoVI Red license allows the user to enable any 2 Dual Wire CAN channels and any 2 LIN channels. To enable a specific network its corresponding bit must be set (1). In order to transmit or receive on a network it must be enabled.

idle_wakeup_network_enables_3

Bitfield containing list of hardware networks to look at for sleep enable. To enable a specific network its corresponding bit must be set (1). In order to transmit or receive on a network it must be enabled.

can_switch_mode

Not Available

text_api

See structure

termination_enables

Bitfield containing the termination enables. For the neoVI Fire 2, the termination is grouped into banks. Only 2 form a single bank can be neabled.

lin6

See structure

ethernet

See structure

slaveVnetA

Sets the type of VNET is in slot A for ION and Plasma devices eNoVnet = 0 eAinVnet = 1 eFlexRayVnet = 2 eSlaveFireVnet =3 eSlaveFireVnetEP = 4 eSlaveFire2Vnet = 5 eSlaveFire2VnetZ = 6 eSlaveMost150 = 7

slaveVnetB

Sets the type of VNET is in slot B for Plasma devices eNoVnet = 0 eAinVnet = 1 eFlexRayVnet = 2 eSlaveFireVnet =3 eSlaveFireVnetEP = 4 eSlaveFire2Vnet = 5 eSlaveFire2VnetZ = 6 eSlaveMost150 = 7

flags

Bitfield with misc settings for the device. List below gives the parameter with the bit number to have set to enable. Disable USB Check On Boot : 0 Bus Messages To Android (ION and Plasma) : 2

digitalIoThresholdTicks

Ticks needed to trigger digital change

digitalIoThresholdEnable

Enable digital change thresholding

timeSync

See structure

disk

See structure

ethernet2

See structure

perf_en

typedef struct __declspec (align(2))
{
   uint16_t perf_en;
   CAN_SETTINGS can1;
   CANFD_SETTINGS canfd1;
   CAN_SETTINGS can2;
   CANFD_SETTINGS canfd2;
   CAN_SETTINGS can3;
   CANFD_SETTINGS canfd3;
   CAN_SETTINGS can4;
   CANFD_SETTINGS canfd4;
   CAN_SETTINGS can5;
   CANFD_SETTINGS canfd5;
   CAN_SETTINGS can6;
   CANFD_SETTINGS canfd6;
   CAN_SETTINGS can7;
   CANFD_SETTINGS canfd7;
   CAN_SETTINGS can8;
   CANFD_SETTINGS canfd8;
   SWCAN_SETTINGS swcan1;
   uint16_t network_enables;
   SWCAN_SETTINGS swcan2;
   uint16_t network_enables_2;
   CAN_SETTINGS lsftcan1;
   CAN_SETTINGS lsftcan2;
   LIN_SETTINGS lin1;
   uint16_t misc_io_initial_ddr;
   LIN_SETTINGS lin2;
   uint16_t misc_io_initial_latch;
   LIN_SETTINGS lin3;
   uint16_t misc_io_report_period;
   LIN_SETTINGS lin4;
   uint16_t misc_io_on_report_events;
   LIN_SETTINGS lin5;
   uint16_t misc_io_analog_enable;
   uint16_t ain_sample_period;
   uint16_t ain_threshold;
   uint32_t pwr_man_timeout;
   uint16_t pwr_man_enable;
   uint16_t network_enabled_on_boot;
   uint16_t iso15765_separation_time_offset;
   uint16_t iso_9141_kwp_enable_reserved;
   ISO9141_KEYWORD2000_SETTINGS iso9141_kwp_settings_1;
   uint16_t iso_parity_1;
   ISO9141_KEYWORD2000_SETTINGS iso9141_kwp_settings_2;
   uint16_t iso_parity_2;
   ISO9141_KEYWORD2000_SETTINGS iso9141_kwp_settings_3;
   uint16_t iso_parity_3;
   ISO9141_KEYWORD2000_SETTINGS iso9141_kwp_settings_4;
   uint16_t iso_parity_4;
   uint16_t iso_msg_termination_1;
   uint16_t iso_msg_termination_2;
   uint16_t iso_msg_termination_3;
   uint16_t iso_msg_termination_4;
   uint16_t idle_wakeup_network_enables_1;
   uint16_t idle_wakeup_network_enables_2;
   uint16_t network_enables_3;
   uint16_t idle_wakeup_network_enables_3;
   uint16_t can_switch_mode;
   STextAPISettings text_api;
   uint64_t termination_enables;
   LIN_SETTINGS lin6;
   ETHERNET_SETTINGS ethernet;
   uint16_t slaveVnetA;
   uint16_t slaveVnetB;
   uint32_t flags;
   uint16_t digitalIoThresholdTicks;
   uint16_t digitalIoThresholdEnable;
}SFire2Settings; 

Performance test. Default value = 0

<StructLayout(LayoutKind.Sequential, Pack:=2)> Public Structure SFire2Settings
   Dim perf_en As UInt16
   Dim can1 As CAN_SETTINGS
   Dim canfd1 As CANFD_SETTINGS
   Dim can2 As CAN_SETTINGS
   Dim canfd2 As CANFD_SETTINGS
   Dim can3 As CAN_SETTINGS
   Dim canfd3 As CANFD_SETTINGS
   Dim can4 As CAN_SETTINGS
   Dim canfd4 As CANFD_SETTINGS
   Dim can5 As CAN_SETTINGS
   Dim canfd5 As CANFD_SETTINGS
   Dim can6 As CAN_SETTINGS
   Dim canfd6 As CANFD_SETTINGS
   Dim can7 As CAN_SETTINGS
   Dim canfd7 As CANFD_SETTINGS
   Dim can8 As CAN_SETTINGS
   Dim canfd8 As CANFD_SETTINGS
   Dim swcan1 As SWCAN_SETTINGS
   Dim network_enables As UInt16
   Dim swcan2 As SWCAN_SETTINGS
   Dim network_enables_2 As UInt16
   Dim lsftcan1 As CAN_SETTINGS
   Dim lsftcan2 As CAN_SETTINGS
   Dim lin1 As LIN_SETTINGS
   Dim misc_io_initial_ddr As UInt16
   Dim lin2 As LIN_SETTINGS
   Dim misc_io_initial_latch As UInt16
   Dim lin3 As LIN_SETTINGS
   Dim misc_io_report_period As UInt16
   Dim lin4 As LIN_SETTINGS
   Dim misc_io_on_report_events As UInt16
   Dim lin5 As LIN_SETTINGS
   Dim misc_io_analog_enable As UInt16
   Dim ain_sample_period As UInt16
   Dim ain_threshold As UInt16
   Dim pwr_man_timeout As UInt32
   Dim pwr_man_enable As UInt16
   Dim network_enabled_on_boot As UInt16
   Dim iso15765_separation_time_offset As UInt16
   Dim iso_9141_kwp_enable_reserved As UInt16
   Dim iso9141_kwp_settings_1 As ISO9141_KEYWORD2000_SETTINGS
   Dim iso_parity_1 As UInt16
   Dim iso9141_kwp_settings_2 As ISO9141_KEYWORD2000_SETTINGS
   Dim iso_parity_2 As UInt16
   Dim iso9141_kwp_settings_3 As ISO9141_KEYWORD2000_SETTINGS
   Dim iso_parity_3 As UInt16
   Dim iso9141_kwp_settings_4 As ISO9141_KEYWORD2000_SETTINGS
   Dim iso_parity_4 As UInt16
   Dim iso_msg_termination_1 As UInt16
   Dim iso_msg_termination_2 As UInt16
   Dim iso_msg_termination_3 As UInt16
   Dim iso_msg_termination_4 As UInt16
   Dim idle_wakeup_network_enables_1 As UInt16
   Dim idle_wakeup_network_enables_2 As UInt16
   Dim network_enables_3 As UInt16
   Dim idle_wakeup_network_enables_3 As UInt16
   Dim can_switch_mode As UInt16
   Dim text_api As STextAPISettings
   Dim termination_enables As UInt64
   Dim lin6 As LIN_SETTINGS
   Dim ethernet As ETHERNET_SETTINGS
   Dim slaveVnetA As UInt16
   Dim slaveVnetB As UInt16
   Dim flags As UInt32
   Dim digitalIoThresholdTicks As UInt16
   Dim digitalIoThresholdEnable As UInt16
End Structure 
[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;
}

NA : 10

LIN3 : 11

LIN4 : 12

NA : 13

HSCAN4 : 14

HSCAN5 : 15

NA : 10

SWCAN2 : 11

ETHERNET_DAQ : 12

ETHERNET : 13

NA : 14

NA : 15

REPORT_ON_MISC4_AIN : 11

REPORT_ON_MISC5_AIN : 12

REPORT_ON_MISC6_AIN : 13

LIN3 : 11

LIN4 : 12

NA : 13

HSCAN4 : 14

HSCAN5 : 15

SWCAN2 : 11

ETHERNET_DAQ : 12

ETHERNET : 13

NA : 14

NA : 15

NA : 10

NA : 11

NA : 12

NA : 13

NA : 14

NA : 15

NA : 11

NA : 12

NA : 13

NA : 14

NA : 15

HSCAN : 0

MSCAN : 1

LIN1 : 2

LIN2 : 3

NA : 4

HSCAN2 : 5

LSFTCAN1 : 6

SWCAN1 : 7

HSCAN3 : 8

KLINE1 : 0

KLINE2 : 1

KLINE3 : 2

KLINE4 : 3

NA : 4

NA : 5

NA : 6

NA : 7

NA : 8

REPORT_ON_PERIODIC : 0

REPORT_ON_MISC1 : 1

REPORT_ON_MISC2 : 2

REPORT_ON_MISC3 : 3

REPORT_ON_MISC4 : 4

REPORT_ON_MISC5 : 5

REPORT_ON_MISC6 : 6

REPORT_ON_LED1 : 7

REPORT_ON_LED2 : 8

REPORT_ON_KLINE : 9

HSCAN : 0

MSCAN : 1

LIN1 : 2

LIN2 : 3

NA : 4

HSCAN2 : 5

LSFTCAN1 : 6

SWCAN1 : 7

HSCAN3 : 8

NA : 9

KLINE1 : 0

KLINE2 : 1

KLINE3 : 2

KLINE4 : 3

NA : 4

NA : 5

NA : 6

NA : 7

NA : 8

NA : 9

HSCAN6 : 0

HSCAN7 : 1

LIN6 : 2

LSFTCAN2 : 3

NA : 4

NA : 5

NA : 6

NA : 7

NA : 8

HSCAN6 : 0

HSCAN7 : 1

LIN6 : 2

LSFTCAN2 : 3

NA : 4

NA : 5

NA : 6

NA : 7

NA : 8

NA : 9

HSCAN (Bank0): 0

MSCAN (Bank1): 1

HSCAN2 (BANK1) : 5

HSCAN3 (Bank0) : 8

HSCAN4 (Bank1): 14

HSCAN5 (Bank0) : 15

HSCAN6 (Bank1) : 32

HSCAN7 (Bank0): 33

CAN_SETTINGS
CANFD_SETTINGS
CAN_SETTINGS
CANFD_SETTINGS
CAN_SETTINGS
CANFD_SETTINGS
CAN_SETTINGS
CANFD_SETTINGS
CAN_SETTINGS
CANFD_SETTINGS
CAN_SETTINGS
CANFD_SETTINGS
CAN_SETTINGS
CANFD_SETTINGS
CAN_SETTINGS
CANFD_SETTINGS
SWCAN_SETTINGS
SWCAN_SETTINGS
CAN_SETTINGS
CAN_SETTINGS
LIN_SETTINGS
LIN_SETTINGS
LIN_SETTINGS
LIN_SETTINGS
LIN_SETTINGS
ISO9141_KEYWORD2000_SETTINGS
ISO9141_KEYWORD2000_SETTINGS
ISO9141_KEYWORD2000_SETTINGS
ISO9141_KEYWORD2000_SETTINGS
STextAPISettings
LIN_SETTINGS
ETHERNET_SETTINGS
TIMESYNC_ICSHARDWARE_SETTINGS
DISK_SETTINGS
ETHERNET_SETTINGS2

NA : 9

NA : 9

REPORT_ON_MISC3_AIN : 10

NA : 10

NA : 10

NA : 9

NA : 10

Error Messages - neoVI API

Table 1 lists the possible error messages returned in the GetErrorMessages API call. Some of these errors may also be returned by the GetLastAPIError API call.

Table 1 - Error Messages

NEOVI_ERROR_DLL_TX_BUFFER_OVERFLOW =0

The transmit buffer in the DLL has overflowed. This could occur if the USB connection was lost. It also could occur if you transmit more messages than can be sent on the vehicle networks.

NEOVI_ERROR_DLL_ERROR_BUFFER_OVERFLOW =1

This error occurs when the error queue overflows.

NEOVI_ERROR_DLL_USB_SEND_DATA_ERROR =2

This error occurs when there is a problem sending data on USB.

NEOVI_ERROR_DLL_ISO_DATA_BUFFER_ALLOC =3

Internal Driver Error.

NEOVI_ERROR_DLL_ISO_DATA_READ_BUFFER =4

Internal Driver Error.

NEOVI_ERROR_DLL_ISO_DATA_ZERO_PACKETS =5

Internal Driver Error.

NEOVI_ERROR_DLL_RX_MSG_BUFFER_OVERFLOW =6

This error occurs if the DLL overflows it’s receive message buffer. Solve this error by calling GetMessages at a faster interval.

NEOVI_ERROR_DLL_STOP_ISO_STREAM =7

Internal Driver Error.

NEOVI_ERROR_DLL_INVALID_NETID =8

Internal Driver Error.

NEOVI_ERROR_DLL_PROBLEM_STOPPING_RX_THREAD =9

Internal Driver Error.

NEOVI_ERROR_DLL_PROBLEM_STOPPING_TX_THREAD =10

Internal Driver Error.

NEOVI_ERROR_DLL_MAIN_PIC_BUFFER_OVERFLOW =11

This error occurs if there is an overflow in the neoVI internal buffer.

NEOVI_ERROR_DLL_INVALID_DEVICE_RESPONSE =12

Internal Driver Error.

NEOVI_ERROR_DLL_ISOTX_DATA_BUFFER_ALLOC =13

Internal Driver Error.

NEOVI_ERROR_DLL_RX_CMD_BUFFER_OVERFLOW=14

Internal Driver Error.

NEOVI_ERROR_DLL_RS232_RX_BUFFER_OVERFLOW=15

RS232 Buffer Overflow Error

NEOVI_ERROR_DLL_RS232_ERR_READCOMERR =16

Internal Driver Error.

NEOVI_ERROR_DLL_RS232_ERR_READ=17

Internal Driver Error.

NEOVI_ERROR_DLL_RS232_BUFFER_ALLOC=18

Internal Driver Error.

NEOVI_ERROR_DLL_RS232_TX_BUFFER_OVERFLOW=19

Internal Driver Error.

NEOVI_ERROR_DLL_RS232_MISC_ERROR=20

Internal Driver Error.

NEOVI_ERROR_DLL_RS232_FIND_WRITE=21

Internal Driver Error.

NEOVI_ERROR_DLL_RS232_FIND_BUFFER_ALLOC=22

Internal Driver Error.

NEOVI_ERROR_DLL_RS232_FIND_CLEARCOMM=23

Internal Driver Error.

NEOVI_ERROR_DLL_RS232_FIND_READCOMM=24

Internal Driver Error.

NEOVI_ERROR_DLL_RS232_FIND_TIMEOUT=25

This error occurs if the neoVI DLL could not find the neoVI device on the specified RS232 port.

NEOVI_ERROR_DLL_RS232_ERR_BREAK=26

RS232 Break Error.

NEOVI_ERROR_DLL_RS232_ERR_FRAME=27

RS232 Framing Error.

NEOVI_ERROR_DLL_RS232_ERR_IOE=28

RS232 IOE Error.

NEOVI_ERROR_DLL_RS232_ERR_OVERRUN=29

RS232 Overrun Error.

NEOVI_ERROR_DLL_RS232_ERR_PARITY=30

RS232 Parity Error.

NEOVI_ERROR_DLL_RS232_TXBUFFER_ALLOC=31

Internal Driver Error.

NEOVI_ERROR_DLL_USB_TX_RS232_ERROR=32

Internal Driver Error.

NEOVI_ERROR_DLL_RS232_CREATE_FILE=33

Problem opening RS232 port. This is probably caused by another application using the port or the port not being valid.

NEOVI_ERROR_DLL_RS232_GET_COMM_STATE=34

Internal Driver Error.

NEOVI_ERROR_DLL_RS232_SET_COMM_STATE=35

Internal Driver Error.

NEOVI_ERROR_DLL_RS232_START_COMM_RX_THREAD=36

Internal Driver Error.

NEOVI_ERROR_DLL_RS232_START_COMM_TX_THREAD=37

Internal Driver Error.

NEOVI_ERROR_DLL_SYNC_COUNT_ERR=38

A message rollover timestamp was missed. This is caused if the neoVI device is disconnected or powered down when in RS232 mode. It will also be caused if two neoVI applications open up the same USB port.

NEOVI_ERROR_DLL_RX_MSG_FRAME_ERR=39

A neoVI message packet was not properly formatted.

NEOVI_ERROR_DLL_RX_MSG_FIFO_OVER=40

The internal DLL FIFO used to store data received before parsing has overflowed.

NEOVI_ERROR_DLL_RX_MSG_CHK_SUM_ERR=41

A neoVI message packet was properly formatted but had an incorrect checksum.

NEOVI_ERROR_DLL_PROBLEM_STOPPING_BULKIN_THREAD=42

Internal Driver Error.

NEOVI_ERROR_DLL_BULKIN_ERR_READ=43

Internal Driver Error.

NEOVI_ERROR_DLL_MAIN51_RX_FIFO_OVERFLOW=44

The Rx FIFO used to store network data before it is sent to the PC has overflowed.

NEOVI_ERROR_DLL_MAIN51_TX_FIFO_OVERFLOW=45

Each network has a FIFO on the Main51 controller for transmission. If you send messages to neoVI faster than neoVI can transmit them, you will receive this error.

NEOVI_ERROR_DLL_MAIN51_DEV_FIFO_OVERFLOW=46

This is a FIFO over error related to messages passed from the Main51 uController to the Main PIC uController

NEOVI_ERROR_DLL_RESET_STATUS_CHANGED=47

The neoVI reset status has changed. This error would occur if the neoVI had a watchdog reset.

NEOVI_ERROR_DLL_ISO_LONG_CACHE_OVERFLOW=48

Internal Driver Error.

NEOVI_ERROR_DLL_ISORX_LONG_BUFFER_ALLOC=49

Internal Driver Error.

NEOVI_ERROR_DLL_J1708_LONG_CACHE_OVERFLOW=50

Internal Driver Error.

NEOVI_ERROR_DLL_J1708_LONG_BUFFER_ALLOC=51

Internal Driver Error.

NEOVI_ERROR_DLL_MAIN51_TX_FIFO_OVERFLOW_DEVICE=52

Internal Driver Error.

NEOVI_ERROR_DLL_MAIN51_TX_FIFO_OVERFLOW_HSCAN=53

Internal Driver Error.

NEOVI_ERROR_DLL_MAIN51_TX_FIFO_OVERFLOW_MSCAN=54

Internal Driver Error.

NEOVI_ERROR_DLL_MAIN51_TX_FIFO_OVERFLOW_SWCAN=55

Internal Driver Error.

NEOVI_ERROR_DLL_MAIN51_TX_FIFO_OVERFLOW_LSFTCAN=56

Internal Driver Error.

NEOVI_ERROR_DLL_MAIN51_TX_FIFO_OVERFLOW_FORDSCP=57

Internal Driver Error.

NEOVI_ERROR_DLL_MAIN51_TX_FIFO_OVERFLOW_J1708=58

Internal Driver Error.

NEOVI_ERROR_DLL_MAIN51_TX_FIFO_OVERFLOW_AUX=5

Internal Driver Error.

NEOVI_ERROR_DLL_MAIN51_TX_FIFO_OVERFLOW_JVPW=60

Internal Driver Error.

NEOVI_ERROR_DLL_MAIN51_TX_FIFO_OVERFLOW_ISO=61

Internal Driver Error.

NEOVI_ERROR_DLL_MAIN51_TX_FIFO_OVERFLOW_ISOPIC=62

Internal Driver Error.

NEOVI_ERROR_DLL_MAIN51_TX_FIFO_OVERFLOW_MAIN51=63

Internal Driver Error.

NEOVI_ERROR_DLL_MAIN51_TX_FIFO_OVERFLOW_HOST=64

Internal Driver Error.

NEOVI_ERROR_DLL_READ_ENTIRE_DEEPROM_ERROR=65

Internal Driver Error.

NEOVI_ERROR_DLL_WRITE_ENTIRE_DEEPROM_ERROR=66

Internal Driver Error.

NEOVI_ERROR_DLL_USB_PORT_ALREADY_OPEN=67

Internal Driver Error.

NEOVI_ERROR_DLL_JVPW_TX_REPORT_FIFO_ERR_IN=68

Internal Driver Error.

NEOVI_ERROR_DLL_ISOJ_TX_REPORT_FIFO_ERR_IN=69

Internal Driver Error.

NEOVI_ERROR_DLL_JVPW_TX_REPORT_FIFO_ERR_OUT=70

Internal Driver Error.

NEOVI_ERROR_DLL_ISOJ_TX_REPORT_FIFO_ERR_OUT=71

Internal Driver Error.

NEOVI_ERROR_DLL_MAIN51_TX_IN_FROM_HOST_FIFO=72

Internal Driver Error.

NEOVI_ERROR_DLL_MAIN51_TX_HOST_CHKSUM=73

Internal Driver Error.

NEOVI_ERROR_DLL_ISOJ_TX_HOST_MISSED_BYTE=74

Internal Driver Error.

NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE=75

Internal Driver Error.

NEOVI_ERROR_DLL_RX_SOCKET_FIFO_OVER=76

Internal Driver Error.

NEOVI_ERROR_DLL_PROBLEM_STOPPING_TXSOCKET_THREAD=77

Internal Driver Error.

NEOVI_ERROR_DLL_PROBLEM_STOPPING_RXSOCKET_THREAD=78

Internal Driver Error.

NEOVI_ERROR_DLL_PROBLEM_STOPPING_TXSOCKET_CLIENT_THREAD=78

Internal Driver Error.

NEOVI_ERROR_DLL_PROBLEM_STOPPING_RXSOCKET_CLIENT_THREAD=79

Internal Driver Error.

NEOVI_ERROR_DLL_TCP_CLIENT_TX=80

Internal Driver Error.

NEOVI_ERROR_DLL_TCP_CLIENT_RX=81

Internal Driver Error.

NEOVI_ERROR_DLL_TCP_CLIENT_RX_SOCK=82

Internal Driver Error.

NEOVI_ERROR_DLL_UNABLE_CONNECT_TO_SRVR=83

Internal Driver Error.

NEOVI_ERROR_DLL_UNABLE_CREATE_CLIENT_SOCK=84

Internal Driver Error.

NEOVI_ERROR_DLL_UNABLE_WSASTARTUP=85

Internal Driver Error.

NEOVI_ERROR_DLL_SOCK_CL_RD_BUFFER_ALLOC=86

Internal Driver Error.

NEOVI_ERROR_DLL_SOCK_CL_TX_BUFFER_ALLOC=87

Internal Driver Error.

NEOVI_ERROR_DLL_SOCK_SRVR_RX_BUFFER_ALLOC=88

Internal Driver Error.

NEOVI_ERROR_DLL_SOCK_SRVR_TX_BUFFER_ALLOC=89

Internal Driver Error.

NEOVI_ERROR_DLL_ILLEGAL_TX_NETWORK=90

Internal Driver Error.

NEOVI_ERROR_DLL_MAIN51_TX_HOST_OVERRUN=91

Internal Driver Error.

NEOVI_ERROR_DLL_OPEN_GET_COMM_TIMEOUT=92

Internal Driver Error.

NEOVI_ERROR_DLL_OPEN_SET_COMM_TIMEOUT=93

Internal Driver Error.

NEOVI_ERROR_DLL_OPEN_READ_DEVICE_TYPE=94

Internal Driver Error.

NEOVI_ERROR_DLL_OPEN_READ_DEVICE_TYPE_TOUT=95

Internal Driver Error.

NEOVI_ERROR_DLL_CLOSE_PURGE_COMM=96

Internal Driver Error.

NEOVI_ERROR_DLL_TX_COM_FIFO_OVERFLOW=97

Internal Driver Error.

NEOVI_ERROR_DLL_GET_USBSERIAL_DEVICES=98

Internal Driver Error.

NEOVI_ERROR_DLL_USB_TX_RS232_BCOUNT = 99

Internal Driver Error.

NEOVI_ERROR_DLL_OPEN_INBOOTLOADER = 100

Internal Driver Error.

NEOVI_ERROR_DLL_TOO_MANY_PERIODICS = 101

Internal Driver Error.

NEOVI_ERROR_DLL_PROBLEM_FIRMWARE_INFO = 102

Internal Driver Error.

NEOVI_ERROR_DLL_NRED_ODDNUMBYTES = 103

Internal Driver Error.

NEOVI_ERROR_DLL_NRED_UNKNOWN_RED_NETID = 104

Internal Driver Error.

NEOVI_ERROR_DLL_RED_NOT_SUPPORTED = 105

Internal Driver Error.

NEOVI_ERROR_DLL_RED_BL_START_INDEX = 106

Internal Driver Error.

NEOVI_ERROR_DLL_3G_BL_FAILURE = 107

Internal Driver Error.

NEOVI_ERROR_DLL_RED_BL_END_INDEX = 116

Internal Driver Error.

NEOVI_ERROR_DLL_RED_FAILED_TO_ENTER_BL = 117

Internal Driver Error.

NEOVI_ERROR_DLL_RED_REQ_SERIAL_NUMBER = 118

Internal Driver Error.

NEOVI_ERROR_DLL_RED_AUTHENTICATE = 119

Internal Driver Error.

NEOVI_ERROR_DLL_RED_APP_VERSION = 120

Internal Driver Error.

NEOVI_ERROR_DLL_RED_SET_BAUD_COMM_FAILURE = 121

Internal Driver Error.

NEOVI_ERROR_DLL_RED_INVALID_BAUD_SPECIFIED = 122

Internal Driver Error.

NEOVI_ERROR_DLL_RED_INVALID_BAUD_SPECIFIED = 122

Internal Driver Error.

NEOVI_ERROR_DLL_RED_READ_BAUD_COMM_FAILURE = 123

Internal Driver Error.

NEOVI_ERROR_DLL_RED_FAILED_TO_SAVE_EEPROM = 124

Internal Driver Error.

NEOVI_ERROR_DLL_RED_FAILED_TO_UPDATE_WAVEFORM_CHANNEL = 125

Internal Driver Error.

NEOVI_ERROR_DLL_RED_RX_MSG_FULL_UNKNOWN_NETWORK = 126

Internal Driver Error.

NEOVI_ERROR_DLL_RED_TX_MSG_FULL_UNKNOWN_NETWORK = 127

Internal Driver Error.

NEOVI_ERROR_DLL_RED_TX_REPORT_MSG_FULL_UNKNOWN_NETWORK = 128

Internal Driver Error.

NEOVI_ERROR_DLL_RED_RX_MSG_FULL_HSCAN1 = 129

Internal Driver Error.

NEOVI_ERROR_DLL_RED_TX_MSG_FULL_HSCAN1 = 130

Internal Driver Error.

NEOVI_ERROR_DLL_RED_TX_REPORT_MSG_FULL_HSCAN1 = 131

Internal Driver Error.

NEOVI_ERROR_DLL_RED_DRIVER_OVERFLOW_HSCAN1 = 132

Internal Driver Error.

NEOVI_ERROR_DLL_RED_RX_MSG_FULL_HSCAN2 = 133

Internal Driver Error.

NEOVI_ERROR_DLL_RED_TX_MSG_FULL_HSCAN2 = 134

Internal Driver Error.

NEOVI_ERROR_DLL_RED_TX_REPORT_MSG_FULL_HSCAN2 = 135

Internal Driver Error.

NEOVI_ERROR_DLL_RED_DRIVER_OVERFLOW_HSCAN2 = 136

Internal Driver Error.

NEOVI_ERROR_DLL_RED_RX_MSG_FULL_MSCAN1 = 137

Internal Driver Error.

NEOVI_ERROR_DLL_RED_TX_MSG_FULL_MSCAN1 = 138

Internal Driver Error.

NEOVI_ERROR_DLL_RED_TX_REPORT_MSG_FULL_MSCAN1 = 139

Internal Driver Error.

NEOVI_ERROR_DLL_RED_DRIVER_OVERFLOW_MSCAN1 = 140

Internal Driver Error.

NEOVI_ERROR_DLL_RED_RX_MSG_FULL_HSCAN3 = 141

Internal Driver Error.

NEOVI_ERROR_DLL_RED_TX_MSG_FULL_HSCAN3 = 142

Internal Driver Error.

NEOVI_ERROR_DLL_RED_TX_REPORT_MSG_FULL_HSCAN3 = 143

Internal Driver Error.

NEOVI_ERROR_DLL_RED_DRIVER_OVERFLOW_HSCAN3 = 144

Internal Driver Error.

NEOVI_ERROR_DLL_RED_RX_MSG_FULL_SWCAN = 145

Internal Driver Error.

NEOVI_ERROR_DLL_RED_TX_MSG_FULL_SWCAN = 146

Internal Driver Error.

NEOVI_ERROR_DLL_RED_TX_REPORT_MSG_FULL_SWCAN = 147

Internal Driver Error.

NEOVI_ERROR_DLL_RED_DRIVER_OVERFLOW_SWCAN = 148

Internal Driver Error.

NEOVI_ERROR_DLL_RED_RX_MSG_FULL_LSFTCAN = 149

Internal Driver Error.

NEOVI_ERROR_DLL_RED_TX_MSG_FULL_LSFTCAN = 150

Internal Driver Error.

NEOVI_ERROR_DLL_RED_TX_REPORT_MSG_FULL_LSFTCAN = 151

Internal Driver Error.

NEOVI_ERROR_DLL_RED_DRIVER_OVERFLOW_LSFTCAN = 152

Internal Driver Error.

NEOVI_ERROR_DLL_RED_RX_MSG_FULL_LIN1 = 153

Internal Driver Error.

NEOVI_ERROR_DLL_RED_TX_MSG_FULL_LIN1 = 154

Internal Driver Error.

NEOVI_ERROR_DLL_RED_TX_REPORT_MSG_FULL_LIN1 = 155

Internal Driver Error.

NEOVI_ERROR_DLL_RED_DRIVER_OVERFLOW_LIN1 = 156

Internal Driver Error.

NEOVI_ERROR_DLL_RED_RX_MSG_FULL_LIN2 = 157

Internal Driver Error.

NEOVI_ERROR_DLL_RED_TX_MSG_FULL_LIN2 = 158

Internal Driver Error.

NEOVI_ERROR_DLL_RED_TX_REPORT_MSG_FULL_LIN2 = 159

Internal Driver Error.

NEOVI_ERROR_DLL_RED_DRIVER_OVERFLOW_LIN2 = 160

Internal Driver Error.

NEOVI_ERROR_DLL_RED_RX_MSG_FULL_LIN3 = 161

Internal Driver Error.

NEOVI_ERROR_DLL_RED_TX_MSG_FULL_LIN3 = 162

Internal Driver Error.

NEOVI_ERROR_DLL_RED_TX_REPORT_MSG_FULL_LIN3 = 163

Internal Driver Error.

NEOVI_ERROR_DLL_RED_DRIVER_OVERFLOW_LIN3 = 164

Internal Driver Error.

NEOVI_ERROR_DLL_RED_RX_MSG_FULL_LIN4 = 165

Internal Driver Error.

NEOVI_ERROR_DLL_RED_TX_MSG_FULL_LIN4 = 166

Internal Driver Error.

NEOVI_ERROR_DLL_RED_TX_REPORT_MSG_FULL_LIN4 = 167

Internal Driver Error.

NEOVI_ERROR_DLL_RED_DRIVER_OVERFLOW_LIN4 = 168

Internal Driver Error.

NEOVI_ERROR_DLL_USB_PURGE_FAILED = 169

Internal Driver Error.

NEOVI_ERROR_FIRE_COMM_BAD_PACKET = 170

Internal Driver Error.

NEOVI_ERROR_FIRE_CGI_COMM_BAD_PACKET = 171

Internal Driver Error.

NEOVI_ERROR_DLL_RED_SETTINGS_NOT_SET_HSCAN1 = 172

Internal Driver Error.

NEOVI_ERROR_DLL_RED_SETTINGS_NOT_SET_HSCAN2 = 173

Internal Driver Error.

NEOVI_ERROR_DLL_RED_SETTINGS_NOT_SET_HSCAN3 = 174

Internal Driver Error.

NEOVI_ERROR_DLL_RED_SETTINGS_NOT_SET_MSCAN = 175

Internal Driver Error.

NEOVI_ERROR_DLL_RED_SETTINGS_NOT_SET_SWCAN = 176

Internal Driver Error.

NEOVI_ERROR_DLL_RED_SETTINGS_NOT_SET_LSFTCAN = 177

Internal Driver Error.

NEOVI_ERROR_DLL_RED_SETTINGS_NOT_SET_LIN1 = 178

Internal Driver Error.

NEOVI_ERROR_DLL_RED_SETTINGS_NOT_SET_LIN2 = 179

Internal Driver Error.

NEOVI_ERROR_DLL_RED_SETTINGS_NOT_SET_LIN3 = 180

Internal Driver Error.

NEOVI_ERROR_DLL_RED_SETTINGS_NOT_SET_LIN4 = 181

Internal Driver Error.

NEOVI_ERROR_DLL_RED_SETTINGS_NOT_SET_UNKNOWN_NETWORK = 182

Internal Driver Error.

NEOVI_ERROR_DLL_RED_RX_MSG_FULL_JVPW = 183

Internal Driver Error.

NEOVI_ERROR_DLL_RED_TX_MSG_FULL_JVPW = 184

Internal Driver Error.

NEOVI_ERROR_DLL_RED_TX_REPORT_MSG_FULL_JVPW = 185

Internal Driver Error.

NEOVI_ERROR_DLL_RED_DRIVER_OVERFLOW_JVPW = 186

Internal Driver Error.

NEOVI_ERROR_DLL_INTERNAL_SERIAL_NO_DOES_NOT_MATCH_REGISTRY_SERIAL_NO = 187

Internal Driver Error.

NEOVI_ERROR_DLL_JVPW_LONG_CACHE_OVERFLOW = 188

Internal Driver Error.

NEOVI_ERROR_DLL_FAILED_TO_SET_LICENSE = 189

Internal Driver Error.

NEOVI_ERROR_DLL_3G_DEVICE_LICENSE_NEEDS_TO_BE_UPGRADED = 190

Internal Driver Error.

NEOVI_ERROR_DLL_NETWORK_NOT_ENABLED_HSCAN = 191

Internal Driver Error.

NEOVI_ERROR_DLL_NETWORK_NOT_ENABLED_MSCAN = 192

Internal Driver Error.

NEOVI_ERROR_DLL_NETWORK_NOT_ENABLED_HSCAN2 = 193

Internal Driver Error.

NEOVI_ERROR_DLL_NETWORK_NOT_ENABLED_HSCAN3 = 194

Internal Driver Error.

NEOVI_ERROR_DLL_NETWORK_NOT_ENABLED_LSFT = 195

Internal Driver Error.

NEOVI_ERROR_DLL_NETWORK_NOT_ENABLED_SW = 196

Internal Driver Error.

NEOVI_ERROR_DLL_NETWORK_NOT_ENABLED_LIN1 = 197

Internal Driver Error.

NEOVI_ERROR_DLL_NETWORK_NOT_ENABLED_LIN2 = 198

Internal Driver Error.

NEOVI_ERROR_DLL_NETWORK_NOT_ENABLED_LIN3 = 199

Internal Driver Error.

NEOVI_ERROR_DLL_NETWORK_NOT_ENABLED_LIN4 = 200

Internal Driver Error.

NEOVI_ERROR_DLL_NETWORK_NOT_ENABLED_JVPW = 201

Internal Driver Error.

NEOVI_ERROR_DLL_NETWORK_NOT_ENABLED_KYW = 202

Internal Driver Error.

NEOVI_ERROR_DLL_NETWORK_NOT_ENABLED_J1708 = 203

Internal Driver Error.

NEOVI_ERROR_DLL_MAIN51_RTC_INVALID = 204

Internal Driver Error.

NEOVI_ERROR_DLL_MAIN51_LOADED_DEFAULT_SETTINGS = 205

Internal Driver Error.

NEOVI_ERROR_DLL_RED_RX_MSG_FULL_CGI = 206

Internal Driver Error.

NEOVI_ERROR_DLL_RED_TX_MSG_FULL_CGI = 207

Internal Driver Error.

NEOVI_ERROR_DLL_RED_TX_REPORT_MSG_FULL_CGI = 208

Internal Driver Error.

NEOVI_ERROR_DLL_RED_DRIVER_OVERFLOW_CGI = 209

Internal Driver Error.

NEOVI_ERROR_DLL_RED_SETTINGS_NOT_SET_CGI = 210

Internal Driver Error.

NEOVI_ERROR_DLL_NETWORK_NOT_ENABLED_CGI = 211

Internal Driver Error.

NEOVI_ERROR_DLL_RED_SETTINGS_NOT_SET_JVPW = 212

Internal Driver Error.

NEOVI_ERROR_DLL_INVALID_SCRIPT_LOCATION = 213

Internal Driver Error.

NEOVI_ERROR_DLL_SDCARD_NOT_INSERTED = 214

Internal Driver Error.

NEOVI_ERROR_DLL_SDCARD_NOT_FORMATTED = 215

Internal Driver Error.

NEOVI_ERROR_DLL_SDCARD_WRITE_ERROR = 216

Internal Driver Error.

NEOVI_ERROR_DLL_SDCARD_READ_ERROR = 217

Internal Driver Error.

NEOVI_ERROR_DLL_SCRIPT_START_ERROR = 218

Internal Driver Error.

NEOVI_ERROR_DLL_SCRIPT_INVALID_FUNCBLOCK_INDEX = 219

Internal Driver Error.

NEOVI_ERROR_DLL_SCRIPT_ERROR_DOWNLOADING_SCRIPT = 220

Internal Driver Error.

NEOVI_ERROR_DLL_SCRIPT_ERROR_CLEARING_SCRIPT = 221

Internal Driver Error.

NEOVI_ERROR_DLL_RED_RX_MSG_FULL_ISO = 222

Internal Driver Error.

NEOVI_ERROR_DLL_NETWORK_NOT_ENABLED_ISO = 223

Internal Driver Error.

NEOVI_ERROR_DLL_SCRIPT_INVALID_MSG_INDEX = 224

Internal Driver Error.

NEOVI_ERROR_DLL_SCRIPT_INVALID_APPSIG_INDEX = 225

Internal Driver Error.

NEOVI_ERROR_DLL_SCRIPT_NO_SCRIPT_RUNNING = 226

Internal Driver Error.

NEOVI_ERROR_DLL_COULD_NOT_SET_SETTINGS_FIRMWARE_MISMATCH = 227

Internal Driver Error.

NEOVI_ERROR_DLL_FIRE_CGI_TX_NOT_ENABLED = 228

Internal Driver Error.

NEOVI_ERROR_DLL_SEND_DEVICE_CONFIG_ERROR = 229

Internal Driver Error.

NEOVI_ERROR_DLL_GET_DEVICE_CONFIG_ERROR = 230

Internal Driver Error.

NEOVI_ERROR_DLL_UNKNOWN_NEOVI_TYPE = 231

Internal Driver Error.

NEOVI_ERROR_DLL_NETWORK_NOT_ENABLED_ISO2 = 232

Internal Driver Error.

NEOVI_ERROR_DLL_NETWORK_NOT_ENABLED_ISO3 = 233

Internal Driver Error.

NEOVI_ERROR_DLL_NETWORK_NOT_ENABLED_ISO4 = 234

Internal Driver Error.

NEOVI_ERROR_DLL_RED_RX_MSG_FULL_ISO2 = 235

Internal Driver Error.

NEOVI_ERROR_DLL_RED_TX_MSG_FULL_ISO2 = 236

Internal Driver Error.

NEOVI_ERROR_DLL_RED_TX_REPORT_MSG_FULL_ISO2 = 237

Internal Driver Error.

NEOVI_ERROR_DLL_RED_DRIVER_OVERFLOW_ISO2 = 238

Internal Driver Error.

NEOVI_ERROR_DLL_RED_SETTINGS_NOT_SET_ISO2 = 239

Internal Driver Error.

NEOVI_ERROR_DLL_RED_RX_MSG_FULL_ISO3 = 240

Internal Driver Error.

NEOVI_ERROR_DLL_RED_TX_MSG_FULL_ISO3 = 241

Internal Driver Error.

NEOVI_ERROR_DLL_RED_TX_REPORT_MSG_FULL_ISO3 = 242

Internal Driver Error.

NEOVI_ERROR_DLL_RED_DRIVER_OVERFLOW_ISO3 = 243

Internal Driver Error.

NEOVI_ERROR_DLL_RED_SETTINGS_NOT_SET_ISO3 = 244

Internal Driver Error.

NEOVI_ERROR_DLL_RED_RX_MSG_FULL_ISO4 = 245

Internal Driver Error.

NEOVI_ERROR_DLL_RED_TX_MSG_FULL_ISO4 = 246

Internal Driver Error.

NEOVI_ERROR_DLL_RED_TX_REPORT_MSG_FULL_ISO4 = 247

Internal Driver Error.

NEOVI_ERROR_DLL_RED_DRIVER_OVERFLOW_ISO4 = 248

Internal Driver Error.

NEOVI_ERROR_DLL_RED_SETTINGS_NOT_SET_ISO4 = 249

Internal Driver Error.

NEOVI_ERROR_DLL_RED_FAILED_TO_CLEAR_LIN_SLAVE_DATA = 250

Internal Driver Error.

NEOVI_ERROR_DLL_NETWORK_NOT_ENABLED_ISO1 = 251

Internal Driver Error.

NEOVI_ERROR_DLL_RED_RX_MSG_FULL_ISO1 = 252

Internal Driver Error.

NEOVI_ERROR_DLL_RED_TX_MSG_FULL_ISO1 = 253

Internal Driver Error.

NEOVI_ERROR_DLL_RED_TX_REPORT_MSG_FULL_ISO1 = 254

Internal Driver Error.

NEOVI_ERROR_DLL_RED_SETTINGS_NOT_SET_ISO1 = 255

Internal Driver Error.

NEOVI_ERROR_DLL_DROPPED_RTC_CMD = 256

Internal Driver Error.

NEOVI_ERROR_DLL_J1850_TX_REQUESTS_FLUSHED = 257

Internal Driver Error.

NEOVI_ERROR_J1708_COMM_BAD_PACKET = 258

Internal Driver Error.

NEOVI_ERROR_DLL_NETWORK_NOT_SUPPORTED_BY_HARDWARE = 259

Internal Driver Error.

NEOVI_ERROR_DLL_FEATURE_NOT_UNLOCKED = 260

Internal Driver Error.

NEOVI_ERROR_DLL_DEVICE_NOT_POWERED = 261

Internal Driver Error.

NEOVI_ERROR_DLL_3GCANDOWNLOADER_OK = 262

Internal Driver Error.

NEOVI_ERROR_DLL_3GCANDOWNLOADER_ERRORBADINIT = 263

Internal Driver Error.

NEOVI_ERROR_DLL_3GCANDOWNLOADER_ERRORNOCANPIPE = 264

Internal Driver Error.

NEOVI_ERROR_DLL_3GCANDOWNLOADER_ERRORISONEG7FRESPONSE = 265

Internal Driver Error.

NEOVI_ERROR_DLL_3GCANDOWNLOADER_ERRORTOOLNOTSELECTED = 266

Internal Driver Error.

NEOVI_ERROR_DLL_3GCANDOWNLOADER_ERRORINVALIDDEVICESELECTED = 267

Internal Driver Error.

NEOVI_ERROR_DLL_3GCANDOWNLOADER_ERRORCOULDNOTOPENTOOL = 268

Internal Driver Error.

NEOVI_ERROR_DLL_3GCANDOWNLOADER_ERRORNOFLOWCONTROL = 269

Internal Driver Error.

NEOVI_ERROR_DLL_3GCANDOWNLOADER_ERRORUNSPECIFIC = 270

Internal Driver Error.

NEOVI_ERROR_DLL_3GCANDOWNLOADER_ERRORCOREMININULLPTR = 271

Internal Driver Error.

NEOVI_ERROR_DLL_3GCANDOWNLOADER_ERRORCOREMINIZEROLEN = 272

Internal Driver Error.

NEOVI_ERROR_DLL_3GCANDOWNLOADER_ERRORRESERVED3 = 273

Internal Driver Error.

NEOVI_ERROR_DLL_3GCANDOWNLOADER_ERRORRESERVED4 = 274

Internal Driver Error.

NEOVI_ERROR_DLL_YELLOW_DEPRECATED = 275

Internal Driver Error.

NEOVI_ERROR_DLL_HARDWARE_FAILURE_SRAM = 276

Internal Driver Error.

NEOVI_ERROR_ACTIVE_CONNECTION_ALREADY_EXISTS = 277

Internal Driver Error.

NEOVI_ERROR_DLL_MAIN51_RTC_FAILED_READ = 278

Internal Driver Error.

NEOVI_ERROR_DLL_MAIN51_RTC_AUTO_RTC = 279

Internal Driver Error.

NEOVI_ERROR_DLL_SEND_DEVICE_CONFIG_NOTPOSSIBLE = 287

Internal Driver Error.

NEOVI_ERROR_CHANNEL_LOCKED_BY_OTHER_CLIENT = 288

Occurs when an application tries to acquire a lock on a channel that has already been locked.

NEOVI_ERROR_NEOVISERVER_GENERAL_ERROR = 289

A general error has occurred with the neoVIServer.

NEOVI_ERROR_CHANNEL_LOCKING_NOT_SUPPORTED_FOR_DEVICE = 290

The connected device does not support channel locking.