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

◆ poll()

IChannelDriver::DriverState fl::SpiChannelEngineAdapter::poll ( )
overridevirtual

Query driver state and perform maintenance.

Returns
Current driver state (READY, BUSY, DRAINING, or ERROR)
Note
Checks isBusy(), releases buffers when complete

Implements fl::IChannelDriver.

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

262 {
263 // Check if ANY controller is busy
264 bool anyBusy = false;
265 for (const auto& ctrl : mControllers) {
266 if (ctrl.controller && ctrl.controller->isBusy()) {
267 anyBusy = true;
268 break;
269 }
270 }
271
272 if (anyBusy) {
273 return DriverState::BUSY;
274 }
275
276 // All controllers idle - release transmitting channels
277 if (!mTransmittingChannels.empty()) {
278 FL_DBG("SpiChannelEngineAdapter: Releasing " << mTransmittingChannels.size()
279 << " completed channels");
280
281 for (const auto& channel : mTransmittingChannels) {
282 if (channel) {
283 channel->setInUse(false);
284 }
285 }
286 mTransmittingChannels.clear();
287 }
288
289 // Check for draining state
290 if (!mEnqueuedChannels.empty()) {
291 return DriverState::DRAINING;
292 }
293
294 return DriverState::READY;
295}
fl::vector< ControllerInfo > mControllers
All managed controllers.
fl::vector< ChannelDataPtr > mEnqueuedChannels
Channels waiting for show()
fl::vector< ChannelDataPtr > mTransmittingChannels
Channels currently transmitting.
#define FL_DBG
Definition log.h:388

References FL_DBG, mControllers, mEnqueuedChannels, and mTransmittingChannels.

Referenced by ~SpiChannelEngineAdapter().

+ Here is the caller graph for this function: