25#include <interfaces-impl/gpio_impl.h>
30#ifndef USE_MOCK_PERIPHERALS
33#include <utils/TestUtils/MockGpioPin.h>
34using GpioType = Boardcore::MockGpioPin;
110 return !(*
this == other);
187 virtual void read(uint8_t* data,
size_t size) = 0;
195 virtual void read16(uint16_t* data,
size_t size) = 0;
202 virtual void write(uint8_t data) = 0;
231 virtual void write(
const uint8_t* data,
size_t size) = 0;
239 virtual void write16(
const uint16_t* data,
size_t size) = 0;
279 virtual void transfer(uint8_t* data,
size_t size) = 0;
RAII Interface for SPI bus acquisition.
SPIAcquireLock(SPIBusInterface &bus, SPIBusConfig cfg)
SPIAcquireLock(SPISlave slave)
Interface for low level access of a SPI bus as a master.
virtual uint16_t transfer16(uint16_t data)=0
Full duplex transmission of 16 bits on the bus.
virtual void write24(uint32_t data)=0
Writes 24 bits to the bus.
virtual void write16(uint16_t data)=0
Writes 16 bits to the bus.
virtual void write32(uint32_t data)=0
Writes 32 bits to the bus.
virtual void read(uint8_t *data, size_t size)=0
Reads multiple bytes from the bus.
virtual uint32_t transfer24(uint32_t data)=0
Full duplex transmission of 24 bits on the bus.
SPIBusInterface()
Delete copy/move constructors/operators.
virtual uint16_t read16()=0
Reads 16 bits from the bus.
virtual void deselect(GpioType cs)=0
Deselects the slave.
virtual uint32_t read24()=0
Reads 24 bits from the bus.
virtual uint8_t read()=0
Reads 8 bits from the bus.
virtual void select(GpioType cs)=0
Selects the slave.
virtual uint32_t read32()=0
Reads 32 bits from the bus.
SPIBusInterface & operator=(const SPIBusInterface &)=delete
virtual void read16(uint16_t *data, size_t size)=0
Reads multiple half words from the bus.
SPIBusInterface(SPIBusInterface &&)=delete
virtual void write(uint8_t data)=0
Writes 8 bits to the bus.
virtual void transfer16(uint16_t *data, size_t size)=0
Full duplex transmission of multiple half words on the bus.
SPIBusInterface(const SPIBusInterface &)=delete
virtual void write(const uint8_t *data, size_t size)=0
Writes multiple bytes to the bus.
virtual uint32_t transfer32(uint32_t data)=0
Full duplex transmission of 32 bits on the bus.
virtual uint8_t transfer(uint8_t data)=0
Full duplex transmission of 8 bits on the bus.
virtual void write16(const uint16_t *data, size_t size)=0
Writes multiple half words to the bus.
virtual void transfer(uint8_t *data, size_t size)=0
Full duplex transmission of multiple bytes on the bus.
virtual void configure(SPIBusConfig config)=0
Configures the bus with the provided configuration parameters.
SPIBusInterface & operator=(SPIBusInterface &&)=delete
RAII Interface for SPI chip selection.
SPISelectLock(SPIBusInterface &bus, GpioType cs)
SPISelectLock(SPISlave slave)
@ MODE_0
CPOL = 0, CPHA = 0 -> Clock low when idle, sample on first edge.
ClockDivider
SPI Clock divider.
@ NORMAL
Normal write bit settings (0 for write, 1 for reads)
This file includes all the types the logdecoder script will decode.
SPI Bus configuration for a specific slave.
unsigned int csHoldTimeUs
SPI::Order byteOrder
MSByte or LSByte first.
SPIBusConfig(SPI::ClockDivider clockDivider=SPI::ClockDivider::DIV_256, SPI::Mode mode=SPI::Mode::MODE_0, SPI::Order bitOrder=SPI::Order::MSB_FIRST, SPI::Order byteOrder=SPI::Order::MSB_FIRST, SPI::WriteBit writeBit=SPI::WriteBit::NORMAL, unsigned int csSetupTimeUs=0, unsigned int csHoldTimeUs=0)
bool operator!=(const SPIBusConfig &other) const
unsigned int csSetupTimeUs
How long to hold cs after the end of a tranmission (us)
bool operator==(const SPIBusConfig &other) const
SPI::Mode mode
MSBit or LSBit first.
SPI::ClockDivider clockDivider
< Peripheral clock division
SPI::WriteBit writeBit
How long to wait before starting a tranmission after CS is set (us)
Contains information about a single SPI slave device.
SPISlave(SPIBusInterface &bus, GpioType cs, SPIBusConfig config={})
GpioType cs
Chip select pin.
SPIBusInterface & bus
Bus on which the slave is connected.