HardFOC Vortex V1 HAL
Unified HAL API for the HardFOC Vortex motor-control platform (ESP32-C6, TMC9660)
Loading...
Searching...
No Matches
VortexBoardBindHost.h
Go to the documentation of this file.
1
13#ifndef VORTEX_BOARD_BIND_HOST_H_
14#define VORTEX_BOARD_BIND_HOST_H_
15
16#include <cstdint>
17#include <vector>
18
19#include "HfCoreMocks.h"
21
22namespace vortex::bsp::host {
23
25struct OpenLog {
28 std::vector<SpiDeviceSpec> spi_devices;
30 std::vector<I2cDeviceSpec> i2c_devices;
32 int led_pin{-1};
33 uint32_t led_count{0};
34};
35
37struct LedFrame {
38 uint32_t rgb;
39 uint8_t brightness;
40};
41
43struct Failures {
44 bool uart{false};
45 bool spi{false};
46 bool i2c{false};
47 bool can{false};
48 bool led{false};
49 bool led_show{false};
50};
51
53void Reset() noexcept;
54
56Failures& Fail() noexcept;
57
59const OpenLog& Log() noexcept;
60
67void SetI2cPresent(uint8_t address, bool present = true) noexcept;
68
69hf::host::MockUart* Uart() noexcept;
70hf::host::MockCan* Can() noexcept;
72hf::host::MockSpi* Spi(int index) noexcept;
74hf::host::MockI2c* I2c(int index) noexcept;
76hf::host::MockI2c* I2cAt(uint8_t address) noexcept;
78hf::host::MockGpio* Gpio(HfFunctionalGpioPin pin) noexcept;
79hf::host::MockNvs& NvsMock(NvsRegion region) noexcept;
80hf::host::MockTemperature& Temperature() noexcept;
82const std::vector<LedFrame>& LedFrames() noexcept;
84bool LedOpen() noexcept;
85
86} // namespace vortex::bsp::host
87
88#endif // VORTEX_BOARD_BIND_HOST_H_
The board binding: the only way the Vortex managers reach MCU peripherals.
Definition VortexBoardBindHost.cpp:236
Failures & Fail() noexcept
Failure injection for the next Open() calls (cleared by Reset()).
Definition VortexBoardBindHost.cpp:260
const OpenLog & Log() noexcept
What the managers asked the binding for since the last Reset().
Definition VortexBoardBindHost.cpp:261
MockUart * Uart() noexcept
Definition VortexBoardBindHost.cpp:271
MockI2c * I2c(int index) noexcept
I2C device by the index I2cAddDevice() returned.
Definition VortexBoardBindHost.cpp:274
MockCan * Can() noexcept
Definition VortexBoardBindHost.cpp:272
bool LedOpen() noexcept
True while the status LED is open.
Definition VortexBoardBindHost.cpp:293
MockTemperature & Temperature() noexcept
Definition VortexBoardBindHost.cpp:291
MockI2c * I2cAt(uint8_t address) noexcept
I2C device added at address, or nullptr.
Definition VortexBoardBindHost.cpp:275
MockNvs & NvsMock(NvsRegion region) noexcept
Definition VortexBoardBindHost.cpp:287
void Reset() noexcept
Close every object, forget the log and the failures, and remove every simulated I2C chip.
Definition VortexBoardBindHost.cpp:238
MockGpio * Gpio(HfFunctionalGpioPin pin) noexcept
MCU GPIO of a functional pin, or nullptr if McuGpioOpen() was not called for it.
Definition VortexBoardBindHost.cpp:283
void SetI2cPresent(uint8_t address, bool present) noexcept
Simulate a chip that acknowledges address on the I2C bus (probe and scan see it).
Definition VortexBoardBindHost.cpp:263
const std::vector< LedFrame > & LedFrames() noexcept
Frames latched onto the status LED since the last Reset().
Definition VortexBoardBindHost.cpp:292
NvsRegion
The persistent-storage regions of the board.
Definition VortexBoardBind.h:169
Classic CAN controller.
Definition VortexBoardBind.h:88
I2C master bus.
Definition VortexBoardBind.h:73
SPI master bus (one per board on Vortex: SPI2).
Definition VortexBoardBind.h:57
UART port, framing 8N1, no flow control.
Definition VortexBoardBind.h:46
Which Open() calls fail (the binding returns failure without creating the object).
Definition VortexBoardBindHost.h:43
bool spi
Definition VortexBoardBindHost.h:45
bool uart
Definition VortexBoardBindHost.h:44
bool led_show
Definition VortexBoardBindHost.h:49
bool i2c
Definition VortexBoardBindHost.h:46
bool led
Definition VortexBoardBindHost.h:48
bool can
Definition VortexBoardBindHost.h:47
One frame latched onto the status LED.
Definition VortexBoardBindHost.h:37
uint8_t brightness
Definition VortexBoardBindHost.h:39
uint32_t rgb
Definition VortexBoardBindHost.h:38
Every Open() call the managers made, and what the binding was asked to configure.
Definition VortexBoardBindHost.h:25
std::vector< SpiDeviceSpec > spi_devices
Definition VortexBoardBindHost.h:28
SpiBusSpec spi
Definition VortexBoardBindHost.h:27
int led_pin
Definition VortexBoardBindHost.h:32
uint32_t led_count
Definition VortexBoardBindHost.h:33
std::vector< I2cDeviceSpec > i2c_devices
Definition VortexBoardBindHost.h:30
I2cBusSpec i2c
Definition VortexBoardBindHost.h:29
UartSpec uart
Definition VortexBoardBindHost.h:26
CanSpec can
Definition VortexBoardBindHost.h:31