FastLED 3.9.15
Loading...
Searching...
No Matches

◆ initializeControllerIfNeeded()

bool fl::SpiChannelEngineAdapter::initializeControllerIfNeeded ( ControllerInfo & ctrl,
int clockPin,
int dataPin )
private

Initialize controller if needed for this clock pin.

Parameters
ctrlController to initialize
clockPinClock pin for configuration
dataPinData pin for configuration
Returns
true on success, false on error

Definition at line 151 of file spi_channel_adapter.cpp.hpp.

152 {
153
154 if (ctrl.isInitialized) {
155 // Verify compatibility
156 for (int pin : ctrl.assignedClockPins) {
157 if (pin == clockPin) {
158 return true; // Already configured for this pin
159 }
160 }
161 FL_WARN("SpiChannelEngineAdapter: Controller " << ctrl.name
162 << " already initialized with different clock pin");
163 return false;
164 }
165
166 // Initialize controller based on lane count
167 u8 lanes = ctrl.controller->getLaneCount();
168
169 if (lanes == 1) {
170 SpiHw1::Config config;
171 config.bus_num = static_cast<fl::u8>(ctrl.controller->getBusId());
172 config.clock_pin = clockPin;
173 config.data_pin = dataPin;
174 config.clock_speed_hz = 20000000; // 20 MHz for APA102
175 config.max_transfer_sz = 65536;
176
177 if (!ctrl.controller->begin(&config)) {
178 FL_WARN("SpiChannelEngineAdapter: Failed to initialize " << ctrl.name);
179 return false;
180 }
181 } else {
182 // TODO: Multi-lane initialization (SpiHw2/4/8/16)
183 FL_WARN("SpiChannelEngineAdapter: Multi-lane init not yet implemented");
184 return false;
185 }
186
187 ctrl.isInitialized = true;
188 ctrl.assignedClockPins.push_back(clockPin);
189
190 FL_DBG("SpiChannelEngineAdapter: Initialized " << ctrl.name
191 << " with clock pin " << clockPin);
192
193 return true;
194}
#define FL_WARN(X)
Definition log.h:276
#define FL_DBG
Definition log.h:388
unsigned char u8
Definition s16x16x4.h:132
unsigned char u8
Definition stdint.h:131

References fl::SpiChannelEngineAdapter::ControllerInfo::assignedClockPins, fl::SpiChannelEngineAdapter::ControllerInfo::controller, FL_DBG, FL_WARN, fl::SpiChannelEngineAdapter::ControllerInfo::isInitialized, fl::SpiChannelEngineAdapter::ControllerInfo::name, and fl::vector< T >::push_back().

Referenced by transmitBatch().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: