24#ifndef VORTEX_BOARD_BIND_H_
25#define VORTEX_BOARD_BIND_H_
30#include "base/BaseCan.h"
31#include "base/BaseGpio.h"
32#include "base/BaseI2c.h"
33#include "base/BaseNvs.h"
34#include "base/BaseSpi.h"
35#include "base/BaseTemperature.h"
36#include "base/BaseUart.h"
37#include "core/hf-core-drivers/internal/hf-pincfg/src/hf_functional_pin_config_vortex_v1.hpp"
99BaseUart*
UartOpen(
const UartSpec& spec)
noexcept;
108bool SpiOpen(const SpiBusSpec& spec) noexcept;
121bool I2cOpen(const I2cBusSpec& spec) noexcept;
129bool I2cProbe(uint8_t address, uint32_t timeout_ms) noexcept;
136size_t I2cScan(uint8_t* out,
size_t max, uint8_t first, uint8_t last, uint32_t timeout_ms) noexcept;
147BaseCan*
CanOpen(const CanSpec& spec) noexcept;
159BaseGpio*
McuGpioOpen(HfFunctionalGpioPin pin, hf_gpio_direction_t direction, hf_gpio_active_state_t active,
160 hf_gpio_output_mode_t output_mode, hf_gpio_pull_mode_t pull) noexcept;
212bool StatusLedOpen(
int data_pin, uint32_t led_count) noexcept;
220bool StatusLedShow(const uint32_t* rgb, uint32_t count, uint8_t brightness) noexcept;
Definition VortexBoardBindEsp32c6.cpp:32
BaseGpio * McuGpioOpen(HfFunctionalGpioPin pin, hf_gpio_direction_t direction, hf_gpio_active_state_t active, hf_gpio_output_mode_t output_mode, hf_gpio_pull_mode_t pull) noexcept
Create the MCU GPIO for a functional pin (one slot per pin; a second call returns the same object).
Definition VortexBoardBindEsp32c6.cpp:264
uint64_t MonotonicMicros() noexcept
Monotonic microseconds since boot, at the MCU's high-resolution timer (not the RTOS tick).
Definition VortexBoardBindEsp32c6.cpp:317
void I2cClose() noexcept
Remove every device and release the bus (idempotent).
Definition VortexBoardBindEsp32c6.cpp:225
void SpiClose() noexcept
Remove every device and release the bus (idempotent).
Definition VortexBoardBindEsp32c6.cpp:145
bool I2cRemoveDevice(int index) noexcept
Remove one device.
Definition VortexBoardBindEsp32c6.cpp:195
bool I2cProbe(uint8_t address, uint32_t timeout_ms) noexcept
Address-only probe.
Definition VortexBoardBindEsp32c6.cpp:200
BaseNvs & Nvs(NvsRegion region) noexcept
The NVS object of a region. Constructing it touches no hardware; call EnsureInitialized() on it.
Definition VortexBoardBindEsp32c6.cpp:293
void McuGpioCloseAll() noexcept
Destroy every MCU GPIO created by McuGpioOpen(). Pointers handed out become invalid.
Definition VortexBoardBindEsp32c6.cpp:283
bool I2cReset() noexcept
Recover a stuck bus (clock pulses + re-init).
Definition VortexBoardBindEsp32c6.cpp:220
BaseCan * CanOpen(const CanSpec &spec) noexcept
Open the CAN controller.
Definition VortexBoardBindEsp32c6.cpp:231
constexpr const char * NvsNamespace(NvsRegion region) noexcept
Namespace name of a region.
Definition VortexBoardBind.h:177
NvsRegion
The persistent-storage regions of the board.
Definition VortexBoardBind.h:169
@ Calibration
namespace "vortex_cal"
@ Config
namespace "vortex_cfg"
BaseSpi * SpiDevice(int index) noexcept
The device at index, or nullptr.
Definition VortexBoardBindEsp32c6.cpp:140
int SpiAddDevice(const SpiDeviceSpec &spec) noexcept
Add a chip select.
Definition VortexBoardBindEsp32c6.cpp:128
size_t I2cScan(uint8_t *out, size_t max, uint8_t first, uint8_t last, uint32_t timeout_ms) noexcept
Probe every address in [first, last].
Definition VortexBoardBindEsp32c6.cpp:205
BaseI2c * I2cDevice(int index) noexcept
The device at index, or nullptr.
Definition VortexBoardBindEsp32c6.cpp:190
void CanClose() noexcept
Close the CAN controller (idempotent).
Definition VortexBoardBindEsp32c6.cpp:249
BaseUart * UartOpen(const UartSpec &spec) noexcept
Open the board UART.
Definition VortexBoardBindEsp32c6.cpp:69
bool StatusLedOpen(int data_pin, uint32_t led_count) noexcept
Open the addressable status LED chain on data_pin.
Definition VortexBoardBindEsp32c6.cpp:323
bool SpiOpen(const SpiBusSpec &spec) noexcept
Initialise the SPI bus.
Definition VortexBoardBindEsp32c6.cpp:107
void StatusLedClose() noexcept
Turn the chain off and release it (idempotent).
Definition VortexBoardBindEsp32c6.cpp:360
bool StatusLedShow(const uint32_t *rgb, uint32_t count, uint8_t brightness) noexcept
Latch colours onto the chain.
Definition VortexBoardBindEsp32c6.cpp:345
int I2cAddDevice(const I2cDeviceSpec &spec) noexcept
Add a device.
Definition VortexBoardBindEsp32c6.cpp:174
void UartClose() noexcept
Close the UART opened by UartOpen() (idempotent).
Definition VortexBoardBindEsp32c6.cpp:101
BaseTemperature * McuTemperature() noexcept
The MCU's on-chip temperature sensor (not yet initialised), or nullptr if the MCU has none.
Definition VortexBoardBindEsp32c6.cpp:308
bool I2cOpen(const I2cBusSpec &spec) noexcept
Initialise the I2C bus.
Definition VortexBoardBindEsp32c6.cpp:151
Classic CAN controller.
Definition VortexBoardBind.h:88
uint32_t bitrate
Definition VortexBoardBind.h:91
int tx_pin
Definition VortexBoardBind.h:89
int rx_pin
Definition VortexBoardBind.h:90
I2C master bus.
Definition VortexBoardBind.h:73
int scl_pin
Definition VortexBoardBind.h:76
bool internal_pullups
Definition VortexBoardBind.h:77
uint8_t port
Definition VortexBoardBind.h:74
int sda_pin
Definition VortexBoardBind.h:75
One 7-bit device on the I2C bus.
Definition VortexBoardBind.h:81
uint16_t address
Definition VortexBoardBind.h:82
uint32_t scl_wait_us
Clock-stretch allowance; 0 = driver default.
Definition VortexBoardBind.h:84
uint32_t scl_hz
Definition VortexBoardBind.h:83
SPI master bus (one per board on Vortex: SPI2).
Definition VortexBoardBind.h:57
uint32_t timeout_ms
Definition VortexBoardBind.h:62
int mosi_pin
Definition VortexBoardBind.h:60
uint8_t host
Controller index; 1 is SPI2 on the ESP32-C6.
Definition VortexBoardBind.h:58
int miso_pin
Definition VortexBoardBind.h:59
int sclk_pin
Definition VortexBoardBind.h:61
One chip select on the SPI bus.
Definition VortexBoardBind.h:66
uint8_t mode
SPI mode 0..3 (CPOL/CPHA)
Definition VortexBoardBind.h:69
int cs_pin
Definition VortexBoardBind.h:67
uint32_t clock_hz
Definition VortexBoardBind.h:68
UART port, framing 8N1, no flow control.
Definition VortexBoardBind.h:46
uint16_t rx_buffer_bytes
Definition VortexBoardBind.h:52
uint8_t port
Definition VortexBoardBind.h:47
uint32_t baud
Definition VortexBoardBind.h:48
uint32_t timeout_ms
Definition VortexBoardBind.h:53
int tx_pin
Definition VortexBoardBind.h:49
int rx_pin
Definition VortexBoardBind.h:50
uint16_t tx_buffer_bytes
Definition VortexBoardBind.h:51