|
| virtual | ~BasePio () noexcept=default |
| | Virtual destructor.
|
| |
| | BasePio (const BasePio &)=delete |
| |
| BasePio & | operator= (const BasePio &)=delete |
| |
| | BasePio (BasePio &&) noexcept=default |
| |
| BasePio & | operator= (BasePio &&) noexcept=default |
| |
| virtual hf_pio_err_t | Initialize () noexcept=0 |
| | Initialize the PIO peripheral.
|
| |
| virtual hf_pio_err_t | Deinitialize () noexcept=0 |
| | Deinitialize the PIO peripheral.
|
| |
| bool | IsInitialized () const noexcept |
| | Check if the PIO is initialized.
|
| |
| bool | EnsureInitialized () noexcept |
| | Ensures that the PIO is initialized (lazy initialization).
|
| |
| bool | EnsureDeinitialized () noexcept |
| | Ensures that the PIO is deinitialized (lazy deinitialization).
|
| |
| virtual hf_pio_err_t | ConfigureChannel (hf_u8_t channel_id, const hf_pio_channel_config_t &config) noexcept=0 |
| | Configure a PIO channel.
|
| |
| virtual hf_pio_err_t | Transmit (hf_u8_t channel_id, const hf_pio_symbol_t *symbols, size_t symbol_count, bool wait_completion=false) noexcept=0 |
| | Transmit a sequence of symbols.
|
| |
| virtual hf_pio_err_t | StartReceive (hf_u8_t channel_id, hf_pio_symbol_t *buffer, size_t buffer_size, hf_u32_t timeout_us=0) noexcept=0 |
| | Start receiving symbols.
|
| |
| virtual hf_pio_err_t | StopReceive (hf_u8_t channel_id, size_t &symbols_received) noexcept=0 |
| | Stop receiving and get the number of symbols received.
|
| |
| virtual bool | IsChannelBusy (hf_u8_t channel_id) const noexcept=0 |
| | Check if a channel is currently busy.
|
| |
| virtual hf_pio_err_t | GetChannelStatus (hf_u8_t channel_id, hf_pio_channel_status_t &status) const noexcept=0 |
| | Get channel status information.
|
| |
| virtual hf_pio_err_t | GetCapabilities (hf_pio_capabilities_t &capabilities) const noexcept=0 |
| | Get PIO capabilities.
|
| |
| virtual void | SetTransmitCallback (hf_u8_t channel_id, hf_pio_transmit_callback_t callback, void *user_data=nullptr) noexcept=0 |
| | Set callback for transmission complete events.
|
| |
| virtual void | SetReceiveCallback (hf_u8_t channel_id, hf_pio_receive_callback_t callback, void *user_data=nullptr) noexcept=0 |
| | Set callback for reception complete events.
|
| |
| virtual void | SetErrorCallback (hf_u8_t channel_id, hf_pio_error_callback_t callback, void *user_data=nullptr) noexcept=0 |
| | Set callback for error events.
|
| |
| virtual void | ClearChannelCallbacks (hf_u8_t channel_id) noexcept=0 |
| | Clear all callbacks for a specific channel.
|
| |
| virtual void | ClearCallbacks () noexcept=0 |
| | Clear all callbacks.
|
| |
| virtual hf_pio_err_t | ResetStatistics () noexcept |
| | Reset PIO operation statistics.
|
| |
| virtual hf_pio_err_t | ResetDiagnostics () noexcept |
| | Reset PIO diagnostic information.
|
| |
| virtual hf_pio_err_t | GetStatistics (hf_u8_t channel_id, hf_pio_statistics_t &statistics) const noexcept |
| | Get PIO operation statistics.
|
| |
| virtual hf_pio_err_t | GetDiagnostics (hf_u8_t channel_id, hf_pio_diagnostics_t &diagnostics) const noexcept |
| | Get PIO diagnostic information.
|
| |
Abstract base class for Programmable IO Channel implementations.
This class defines the interface for precise, buffered digital signal I/O that can handle timing-critical operations like WS2812 LED driving, IR communication, stepper motor control, and custom protocols.
The abstraction is designed to work with various hardware backends:
- Dedicated peripherals (e.g. RMT or PIO engines)
- Timer + DMA + GPIO combinations
- Fully software-based implementations
Key features:
- Precise timing control down to nanosecond resolution
- Buffered symbol transmission and reception
- Asynchronous operation with callbacks
- Platform-agnostic interface
- Support for complex waveform generation and decoding