Device Control Host API#

The following structures and functions are used to initialize and call a control instance on the host.

control_ret_t control_init_i2c(unsigned char i2c_slave_address)#

Initialize the I2C host (master) interface

Parameters:
  • i2c_slave_address – I2C address of the slave (controlled device)

Returns:

Whether the initialization was successful or not

control_ret_t control_cleanup_i2c(void)#

Shutdown the I2C host (master) interface connection

Returns:

Whether the shutdown was successful or not

control_ret_t control_init_usb(int vendor_id, int product_id, int interface_num)#

Initialize the USB host interface

Parameters:
  • vendor_id – Vendor ID of controlled USB device

  • product_id – Product ID of controlled USB device

  • interface_num – USB Control interface number of controlled device

Returns:

Whether the initialization was successful or not

control_ret_t control_cleanup_usb(void)#

Shutdown the USB host interface connection

Returns:

Whether the shutdown was successful or not

control_ret_t control_init_spi_pi(spi_mode_t spi_mode, bcm2835SPIClockDivider clock_divider, long intertransation_delay_ns)#

Initialize the SPI host (master) interface for the Raspberry Pi

Parameters:
  • spi_mode – Mode that the SPI will run in

  • clock_divider – The amount to divide the Raspberry Pi’s clock by, e.g. BCM2835_SPI_CLOCK_DIVIDER_1024 gives a clock of ~122kHz on the RPI 2.

  • intertransaction_delay – Delay in nanoseconds that will be applied between each spi transaction. This is implemented with nanosleep() from time.h.

Returns:

Whether the initialization was successful or not

control_ret_t control_cleanup_spi(void)#

Shutdown the SPI host (master) interface connection

Returns:

Whether the shutdown was successful or not

control_ret_t control_query_version(control_version_t *version)#

Checks to see that the version of control library in the device is the same as the host

Parameters:
  • version – Reference to control version variable that is set on this call

Returns:

Whether the checking of control library version was successful or not

control_ret_t control_write_command(control_resid_t resid, control_cmd_t cmd, const uint8_t payload[], size_t payload_len)#

Request to write to controllable resource inside the device. The command consists of a resource ID, command and a byte payload of length payload_len.

Parameters:
  • resid – Resource ID. Indicates which resource the command is intended for

  • cmd – Command code. Note that this will be in the range 0x80 to 0xFF because bit 7 set indiciates a write command

  • payload – Array of bytes which constitutes the data payload

  • payload_len – Size of the payload in bytes

Returns:

Whether the write to the device was successful or not

control_ret_t control_read_command(control_resid_t resid, control_cmd_t cmd, uint8_t payload[], size_t payload_len)#

Request to read from controllable resource inside the device. The command consists of a resource ID, command and a byte payload of length payload_len.

Parameters:
  • resid – Resource ID. Indicates which resource the command is intended for

  • cmd – Command code. Note that this will be in the range 0x80 to 0xFF because bit 7 set indiciates a write command

  • payload – Array of bytes which constitutes the data payload

  • payload_len – Size of the payload in bytes

Returns:

Whether the read from the device was successful or not