35#if defined(CONFIG_IDF_TARGET_ESP32)
43#elif defined(CONFIG_IDF_TARGET_ESP32S2)
51#elif defined(CONFIG_IDF_TARGET_ESP32S3)
59#elif defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C6) || \
60 defined(CONFIG_IDF_TARGET_ESP32H2)
164#define HF_RMT_IS_VALID_CHANNEL(ch) ((ch) < HF_RMT_MAX_CHANNELS)
167#if defined(CONFIG_IDF_TARGET_ESP32) || defined(CONFIG_IDF_TARGET_ESP32S2)
169#define HF_RMT_IS_VALID_TX_CHANNEL(ch) ((ch) < HF_RMT_MAX_CHANNELS)
170#define HF_RMT_IS_VALID_RX_CHANNEL(ch) ((ch) < HF_RMT_MAX_CHANNELS)
171#elif defined(CONFIG_IDF_TARGET_ESP32S3)
173#define HF_RMT_IS_VALID_TX_CHANNEL(ch) ((ch) >= 0 && (ch) < 4)
174#define HF_RMT_IS_VALID_RX_CHANNEL(ch) ((ch) >= 4 && (ch) < 8)
175#elif defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C6) || \
176 defined(CONFIG_IDF_TARGET_ESP32H2)
178#define HF_RMT_IS_VALID_TX_CHANNEL(ch) ((ch) >= 0 && (ch) < 2)
179#define HF_RMT_IS_VALID_RX_CHANNEL(ch) ((ch) >= 2 && (ch) < 4)
182#define HF_RMT_IS_VALID_TX_CHANNEL(ch) ((ch) >= 0 && (ch) < 2)
183#define HF_RMT_IS_VALID_RX_CHANNEL(ch) ((ch) >= 2 && (ch) < 4)
186#define HF_RMT_IS_VALID_RESOLUTION(res) \
187 ((res) >= HF_RMT_MIN_RESOLUTION_HZ && (res) <= HF_RMT_MAX_RESOLUTION_HZ)
188#define HF_RMT_IS_VALID_MEM_BLOCK_SIZE(size) \
189 ((size) >= HF_RMT_MIN_MEM_BLOCK_SYMBOLS && (size) <= HF_RMT_MAX_MEM_BLOCK_SYMBOLS)
190#define HF_RMT_IS_VALID_QUEUE_DEPTH(depth) ((depth) >= 1 && (depth) <= HF_RMT_MAX_QUEUE_DEPTH)
191#define HF_RMT_IS_VALID_INTR_PRIORITY(prio) ((prio) <= HF_RMT_MAX_INTERRUPT_PRIORITY)
247#if defined(CONFIG_IDF_TARGET_ESP32)
249#elif defined(CONFIG_IDF_TARGET_ESP32S2)
251#elif defined(CONFIG_IDF_TARGET_ESP32S3)
253#elif defined(CONFIG_IDF_TARGET_ESP32C3)
255#elif defined(CONFIG_IDF_TARGET_ESP32C6)
257#elif defined(CONFIG_IDF_TARGET_ESP32H2)
260 return "Unknown ESP32";
Abstract base class for Programmable IO Channel implementations in the HardFOC system.
hf_pio_direction_t
PIO channel direction.
Definition BasePio.h:113
@ Receive
Receive mode (input)
@ Transmit
Transmit mode (output)
@ Bidirectional
Bidirectional mode (if supported)
ESP32 base type definitions for hardware abstraction.
static constexpr size_t HF_RMT_MIN_MEM_BLOCK_SYMBOLS
Definition EspTypes_PIO.h:78
constexpr const char * HfRmtGetVariantName() noexcept
Get ESP32 variant name for debugging.
Definition EspTypes_PIO.h:246
hf_rmt_clock_source_t
ESP32 RMT clock source selection.
Definition EspTypes_PIO.h:94
@ HF_RMT_CLK_SRC_DEFAULT
Default clock source (APB)
@ HF_RMT_CLK_SRC_RC_FAST
RC fast clock (~8MHz)
@ HF_RMT_CLK_SRC_APB
APB clock (80MHz)
@ HF_RMT_CLK_SRC_XTAL
Crystal clock (40MHz)
#define HF_RMT_IS_VALID_RX_CHANNEL(ch)
Definition EspTypes_PIO.h:183
static constexpr size_t HF_RMT_MAX_MEM_BLOCK_SYMBOLS
Definition EspTypes_PIO.h:79
static constexpr uint8_t HF_RMT_MAX_QUEUE_DEPTH
Definition EspTypes_PIO.h:84
constexpr int8_t HfRmtGetRxChannel(uint8_t index) noexcept
Get the recommended RX channel for the current ESP32 variant.
Definition EspTypes_PIO.h:210
constexpr bool HfRmtIsChannelValidForDirection(uint8_t channel_id, hf_pio_direction_t direction) noexcept
Validate channel for specific direction on current ESP32 variant.
Definition EspTypes_PIO.h:223
static constexpr uint8_t HF_RMT_TX_CHANNEL_START
Definition EspTypes_PIO.h:73
#define HF_RMT_IS_VALID_TX_CHANNEL(ch)
Definition EspTypes_PIO.h:182
static constexpr uint32_t HF_RMT_MIN_RESOLUTION_HZ
Definition EspTypes_PIO.h:82
static constexpr uint8_t HF_RMT_MAX_RX_CHANNELS
Definition EspTypes_PIO.h:72
static constexpr size_t HF_RMT_DEFAULT_MEM_BLOCK_SYMBOLS
Definition EspTypes_PIO.h:80
static constexpr uint8_t HF_RMT_MAX_TX_CHANNELS
Definition EspTypes_PIO.h:71
static constexpr uint8_t HF_RMT_MAX_INTERRUPT_PRIORITY
Definition EspTypes_PIO.h:85
static constexpr uint8_t HF_RMT_RX_CHANNEL_START
Definition EspTypes_PIO.h:74
hf_rmt_channel_direction_t
ESP32 RMT channel direction.
Definition EspTypes_PIO.h:104
@ HF_RMT_CHANNEL_DIRECTION_TX
Transmit direction.
@ HF_RMT_CHANNEL_DIRECTION_RX
Receive direction.
#define HF_RMT_IS_VALID_CHANNEL(ch)
RMT validation macros for ESP32 variants.
Definition EspTypes_PIO.h:164
constexpr int8_t HfRmtGetTxChannel(uint8_t index) noexcept
Get the recommended TX channel for the current ESP32 variant.
Definition EspTypes_PIO.h:198
static constexpr uint32_t HF_RMT_MAX_RESOLUTION_HZ
Definition EspTypes_PIO.h:81
static constexpr uint32_t HF_RMT_DEFAULT_RESOLUTION_HZ
Definition EspTypes_PIO.h:83
static constexpr uint8_t HF_RMT_MAX_CHANNELS
Definition EspTypes_PIO.h:70
Platform-agnostic hardware type definitions for the HardFOC system.
Centralized MCU platform selection and configuration header.
ESP32 RMT carrier configuration for IR protocols.
Definition EspTypes_PIO.h:147
uint8_t polarity_active_low
Carrier polarity (0=high, 1=low)
Definition EspTypes_PIO.h:150
bool always_on
Always on carrier mode.
Definition EspTypes_PIO.h:151
hf_rmt_carrier_config_t() noexcept
Definition EspTypes_PIO.h:153
float duty_cycle
Duty cycle (0.0 to 1.0)
Definition EspTypes_PIO.h:149
uint32_t frequency_hz
Carrier frequency in Hz.
Definition EspTypes_PIO.h:148
ESP32 RMT reception configuration.
Definition EspTypes_PIO.h:132
hf_rmt_receive_config_t() noexcept
Definition EspTypes_PIO.h:139
bool allow_pd
Allow power down in sleep modes.
Definition EspTypes_PIO.h:137
bool with_dma
Enable DMA mode for large transfers.
Definition EspTypes_PIO.h:135
uint8_t intr_priority
Interrupt priority (0-7)
Definition EspTypes_PIO.h:136
uint32_t signal_range_min_ns
Minimum signal range in nanoseconds.
Definition EspTypes_PIO.h:133
uint32_t signal_range_max_ns
Maximum signal range in nanoseconds.
Definition EspTypes_PIO.h:134
ESP32 RMT transmission configuration.
Definition EspTypes_PIO.h:116
hf_rmt_transmit_config_t() noexcept
Definition EspTypes_PIO.h:124
uint32_t queue_depth
TX queue depth (1-32)
Definition EspTypes_PIO.h:120
bool with_dma
Enable DMA mode for large transfers.
Definition EspTypes_PIO.h:119
bool allow_pd
Allow power down in sleep modes.
Definition EspTypes_PIO.h:122
bool invert_signal
Invert output signal.
Definition EspTypes_PIO.h:118
uint32_t loop_count
Loop count (0 = no loop)
Definition EspTypes_PIO.h:117
uint8_t intr_priority
Interrupt priority (0-7)
Definition EspTypes_PIO.h:121