Trigger transmission of enqueued data.
- Note
- Groups channels by clock pin, acquires DMA buffers, calls transmit()
Implements fl::IChannelDriver.
Definition at line 229 of file spi_channel_adapter.cpp.hpp.
229 {
231 return;
232 }
233
235
236
239
240
241
243
244 FL_DBG(
"SpiChannelEngineAdapter: Grouped into " << groups.size() <<
" clock pin groups");
245
246
247 for (size_t i = 0; i < groups.size(); i++) {
249
250 FL_DBG(
"SpiChannelEngineAdapter: Transmitting group with clock pin "
251 << group.clockPin << " (" << group.channels.size() << " channels)");
252
254 FL_WARN(
"SpiChannelEngineAdapter: Failed to transmit batch for clock pin " << group.clockPin);
255
256 }
257 }
258
259 FL_DBG(
"SpiChannelEngineAdapter: show() complete");
260}
fl::vector< ClockPinGroup > groupByClockPin(fl::span< const ChannelDataPtr > channels)
Group channels by clock pin for efficient transmission.
fl::vector< ChannelDataPtr > mEnqueuedChannels
Channels waiting for show()
bool transmitBatch(fl::span< const ChannelDataPtr > channels)
Transmit a batch of channels (all same clock pin)
fl::vector< ChannelDataPtr > mTransmittingChannels
Channels currently transmitting.
Group data structure for channels with same clock pin.
constexpr remove_reference< T >::type && move(T &&t) FL_NOEXCEPT
References fl::SpiChannelEngineAdapter::ClockPinGroup::channels, fl::SpiChannelEngineAdapter::ClockPinGroup::clockPin, FL_DBG, FL_WARN, groupByClockPin(), mEnqueuedChannels, fl::fl::move(), mTransmittingChannels, fl::vector_basic::size(), and transmitBatch().