# NEOVI Interface

Warning

This `ICS NeoVI` documentation is a work in progress. Feedback and revisions are most welcome!

Interface to Intrepid Control Systems neoVI API range of devices via python-ics wrapper on Windows.

## Installation

This neovi interface requires the installation of the ICS neoVI DLL and python-ics package.

- Download and install the Intrepid Product Drivers

    Intrepid Product Drivers

- Install python-ics

        pip install python-ics

## Configuration

An example can.ini file for windows 7:

    [default]
    interface = neovi
    channel = 1

## Bus

class `can.interfaces.ics_neovi.``NeoViBus`(channel, can_filters=None, **kwargs)

  Bases: `can.bus.BusABC`

  The CAN Bus implemented for the python_ics interface https://github.com/intrepidcs/python_ics

  Parameters:

  - channel (int or str or list(int) or list(str)) – The channel ids to create this bus with. Can also be a single integer, netid name or a comma separated string.
  - can_filters (list) – See `can.BusABC.set_filters()` for details.
  - receive_own_messages (bool) – If transmitted messages should also be received by this bus.
  - use_system_timestamp (bool) – Use system timestamp for can messages instead of the hardware time stamp
  - serial (str) – Serial to connect (optional, will use the first found if not supplied)
  - bitrate (int) – Channel bitrate in bit/s. (optional, will enable the auto bitrate feature if not supplied)
  - fd (bool) – If CAN-FD frames should be supported.
  - data_bitrate (int) – Which bitrate to use for data phase in CAN FD. Defaults to arbitration bitrate.
  - override_library_name – Absolute path or relative path to the library including filename.

  static `get_serial_number`(device)

    Decode (if needed) and return the ICS device serial string

    Parameters: | device – ics device
    Returns: | ics device serial string
    Return type: | str

  `send`(msg, timeout=None)

    Transmit a message to the CAN bus.

    Override this method to enable the transmit path.

    Parameters:

    - msg (can.Message) – A message object.
    - timeout (float or None) – If > 0, wait up to this many seconds for message to be ACK’ed or for transmit queue to be ready depending on driver implementation. If timeout is exceeded, an exception will be raised. Might not be supported by all interfaces. None blocks indefinitely.

    Raises: | can.CanError – if the message could not be sent

  `shutdown`()

    Called to carry out any interface specific cleanup required in shutting down a bus.