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