28 size_t num_lanes = config.data_pins.size();
29 if (num_lanes < 1 || num_lanes > 8) {
30 FL_WARN(
"fl::Spi: Invalid number of data pins (" << num_lanes <<
"), must be 1-8");
37 ml_config.
clock_pin =
static_cast<u8>(config.clock_pin);
39 for (
size_t i = 0; i < config.data_pins.size(); i++) {
40 ml_config.
data_pins[i] =
static_cast<u8>(config.data_pins[i]);
43 ml_config.
mode = config.spi_mode;
47 FL_DBG(
"fl::Spi: Created MultiLaneDevice with " << num_lanes <<
" lane(s)");
50 auto begin_result =
device->begin();
53 FL_WARN(
"fl::Spi: begin() failed");
83 return device->waitComplete(timeout_ms);
Multi-lane SPI interface for LED output Hardware (SPI_HW): 1-8 parallel data lanes Software (SPI_BITB...
Spi() FL_NO_EXCEPT
Default constructor - creates device in error state.
Spi & operator=(Spi &&other) FL_NO_EXCEPT
Move assignment.
fl::unique_ptr< spi::MultiLaneDevice > device
~Spi() FL_NO_EXCEPT
Destructor (defined out-of-line in spi.cpp.hpp to keep MultiLaneDevice destructor out of callers' com...
bool wait(u32 timeout_ms=0xFFFFFFFF) FL_NO_EXCEPT
Wait for async write operation to complete.
void resize(fl::size n) FL_NO_EXCEPT
Centralized logging categories for FastLED hardware interfaces and subsystems.
Multi-lane SPI device for 2-8 independent LED strips.
constexpr remove_reference< T >::type && move(T &&t) FL_NO_EXCEPT
fl::enable_if<!fl::is_array< T >::value, unique_ptr< T > >::type make_unique(Args &&... args) FL_NO_EXCEPT
spi_output_mode_t
SPI output mode for multi-lane devices.
u8 u8 fract8 blur_amount FL_NO_EXCEPT
Base definition for an LED controller.
Configuration for SPI device (supports 1-8 lanes)
u32 clock_speed_hz
Clock speed in Hz (0xffffffff = as fast as possible)
u8 mode
SPI mode (CPOL/CPHA)
u8 clock_pin
Shared clock pin (SCK)
fl::vector< u8 > data_pins
Data pins (1-8 pins)
Configuration for multi-lane SPI.