Synopsis
typedef struct {
  CTL_MUTEX_t *mutex;
  CTL_SPI_SET_PROTOCOL_FN_t __set_protocol;
  CTL_SPI_EXCHANGE_FN_t __exchange;
  CTL_SPI_DEVICE_t *__head;
  CTL_SPI_DEVICE_t *__dev;
  CTL_SPI_PROTOCOL_t __protocol;
} CTL_SPI_BUS_t;
Description

CTL_SPI_BUS_t contains the bus state and methods that implement an SPI bus. Clients that use the SPI bus should consider all data in this structure private.

Structure
mutex
If this mutex is non-zero, the SPI functions will acquire the mutex proceeding to use the SPI bus. For systems that do not share the SPI bus between tasks, the mutex can be zero and it's the user's responsibility to ensure mutual exclusion on the SPI bus.
__set_protocol
Private method to set the SPI bus protocol for a selected device. Client code must not call this method directly. See CTL_SPI_SET_PROTOCOL_FN_t.
__exchange
Private method to exchange data over the SPI bus. Client code must not call this method directly. See CTL_SPI_EXCHANGE_FN_t.
__head
Private member which is the head of the chain of devices attached to this SPI bus.
__dev
Private member that stores the currently-selected device on the SPI bus; if null, no device is selected.
__protocol
Private member that stores the protocol that the SPI bus is currently configured for.