11#ifndef COMPONENT_HANDLER_ISF15ACP4_HANDLER_H_
12#define COMPONENT_HANDLER_ISF15ACP4_HANDLER_H_
17#include "base/BaseGpio.h"
18#include "base/BaseSpi.h"
19#include "core/hf-core-drivers/external/hf-isf15acp4-driver/inc/isf15acp4.hpp"
36 BaseGpio* vcc_enable =
nullptr, BaseGpio* switch_in =
nullptr,
37 bool switch_active_low =
true)
noexcept;
43 bool WriteBytes(
const uint8_t* data, std::size_t len)
noexcept;
44 void GpioSet(isf15acp4::CtrlPin pin, isf15acp4::GpioSignal signal)
noexcept;
45 bool GpioRead(isf15acp4::CtrlPin pin)
noexcept;
46 void DelayUs(uint32_t us)
noexcept;
58 static void setGpio(BaseGpio& gpio,
bool electrical_high)
noexcept;
59 static bool readGpio(BaseGpio& gpio,
bool active_low)
noexcept;
64 isf15acp4::ProductVariant
variant{isf15acp4::ProductVariant::Isf15acp4};
65 isf15acp4::GraphicsBackend
graphics{isf15acp4::GraphicsBackend::BuiltinCanvas};
85 BaseGpio* vcc_enable =
nullptr, BaseGpio* switch_in =
nullptr,
86 bool switch_active_low =
true)
noexcept;
105 bool FillScreen(isf15acp4::Color565 color) noexcept;
110 bool Present(const isf15acp4::GraphicsContext& gfx) noexcept;
119 [[nodiscard]]
bool IsPressed() const noexcept;
121 template <typename Fn>
130 [[nodiscard]] isf15acp4::SmartDisplay<HalIsf15acp4SpiAdapter>*
GetDriver() noexcept {
133 [[nodiscard]]
const isf15acp4::SmartDisplay<HalIsf15acp4SpiAdapter>*
GetDriver() const noexcept {
136 [[nodiscard]] isf15acp4::SmartDisplay<HalIsf15acp4SpiAdapter>*
GetDisplay() noexcept {
CRTP SPI/GPIO adapter bridging BaseSpi + BaseGpio to isf15acp4::SpiInterface.
Definition Isf15acp4Handler.h:33
static bool readGpio(BaseGpio &gpio, bool active_low) noexcept
Definition Isf15acp4Handler.cpp:21
void EndTransaction() noexcept
Definition Isf15acp4Handler.cpp:70
static void setGpio(BaseGpio &gpio, bool electrical_high) noexcept
Definition Isf15acp4Handler.cpp:11
BaseSpi & spi_
Definition Isf15acp4Handler.h:49
bool EnsureInitialized() noexcept
Definition Isf15acp4Handler.cpp:42
void GpioSet(isf15acp4::CtrlPin pin, isf15acp4::GpioSignal signal) noexcept
Definition Isf15acp4Handler.cpp:80
bool WriteBytes(const uint8_t *data, std::size_t len) noexcept
Definition Isf15acp4Handler.cpp:72
bool GpioRead(isf15acp4::CtrlPin pin) noexcept
Definition Isf15acp4Handler.cpp:105
bool ready_
Definition Isf15acp4Handler.h:56
BaseGpio & dc_
Definition Isf15acp4Handler.h:51
void DelayUs(uint32_t us) noexcept
Definition Isf15acp4Handler.cpp:112
BaseGpio & reset_
Definition Isf15acp4Handler.h:52
bool switch_active_low_
Definition Isf15acp4Handler.h:55
BaseGpio & cs_
Definition Isf15acp4Handler.h:50
BaseGpio * vcc_enable_
Definition Isf15acp4Handler.h:53
bool BeginCommand() noexcept
Definition Isf15acp4Handler.cpp:58
BaseGpio * switch_in_
Definition Isf15acp4Handler.h:54
bool BeginData() noexcept
Definition Isf15acp4Handler.cpp:64
Unified handler for ISF15ACP4 SmartDisplay modules.
Definition Isf15acp4Handler.h:81
void ClearErrorFlags(uint16_t mask=0xFFFF) noexcept
Definition Isf15acp4Handler.cpp:219
Isf15acp4Handler & operator=(const Isf15acp4Handler &)=delete
std::unique_ptr< isf15acp4::SmartDisplay< HalIsf15acp4SpiAdapter > > display_
Definition Isf15acp4Handler.h:158
Isf15acp4HandlerConfig config_
Definition Isf15acp4Handler.h:155
BaseGpio * switch_in_
Definition Isf15acp4Handler.h:153
bool visitDriver(Fn &&fn) noexcept
Definition Isf15acp4Handler.h:122
BaseSpi & spi_ref_
Definition Isf15acp4Handler.h:148
std::unique_ptr< HalIsf15acp4SpiAdapter > adapter_
Definition Isf15acp4Handler.h:157
BaseGpio * vcc_enable_
Definition Isf15acp4Handler.h:152
Isf15acp4Handler(const Isf15acp4Handler &)=delete
uint16_t GetErrorFlags() const noexcept
Definition Isf15acp4Handler.cpp:214
bool switch_active_low_
Definition Isf15acp4Handler.h:154
const isf15acp4::SmartDisplay< HalIsf15acp4SpiAdapter > * GetDriver() const noexcept
Definition Isf15acp4Handler.h:133
isf15acp4::SmartDisplay< HalIsf15acp4SpiAdapter > * GetDriver() noexcept
Definition Isf15acp4Handler.h:130
BaseGpio & cs_ref_
Definition Isf15acp4Handler.h:149
void DumpDiagnostics() const noexcept
Definition Isf15acp4Handler.cpp:226
Isf15acp4Handler & operator=(Isf15acp4Handler &&)=delete
bool DisplayOn() noexcept
Definition Isf15acp4Handler.cpp:179
void deinitializeUnlocked() noexcept
Definition Isf15acp4Handler.cpp:126
bool ensureInitializedUnlocked() noexcept
Definition Isf15acp4Handler.cpp:136
Isf15acp4Handler(Isf15acp4Handler &&)=delete
bool EnsureInitialized() noexcept
Definition Isf15acp4Handler.cpp:166
bool IsPressed() const noexcept
Definition Isf15acp4Handler.cpp:209
bool EnsureDeinitialized() noexcept
Definition Isf15acp4Handler.cpp:177
RtosMutex handler_mutex_
Definition Isf15acp4Handler.h:159
BaseGpio & dc_ref_
Definition Isf15acp4Handler.h:150
bool DisplayOff() noexcept
Definition Isf15acp4Handler.cpp:184
bool initialized_
Definition Isf15acp4Handler.h:160
bool Deinitialize() noexcept
Definition Isf15acp4Handler.cpp:171
bool Present(const isf15acp4::GraphicsContext &gfx) noexcept
Blit the graphics context to the panel.
Definition Isf15acp4Handler.cpp:194
isf15acp4::SmartDisplay< HalIsf15acp4SpiAdapter > * GetDisplay() noexcept
Definition Isf15acp4Handler.h:136
bool FillScreen(isf15acp4::Color565 color) noexcept
Fill the panel with a packed RGB565 color.
Definition Isf15acp4Handler.cpp:189
bool IsInitialized() const noexcept
Definition Isf15acp4Handler.h:97
isf15acp4::GraphicsContext CreateGraphicsContext() const noexcept
Canvas matching the configured variant and graphics backend.
Definition Isf15acp4Handler.cpp:199
BaseGpio & reset_ref_
Definition Isf15acp4Handler.h:151
Handler configuration mirroring driver SmartDisplayConfig.
Definition Isf15acp4Handler.h:63
isf15acp4::ProductVariant variant
Definition Isf15acp4Handler.h:64
bool enable_vcc_on_init
Definition Isf15acp4Handler.h:66
isf15acp4::GraphicsBackend graphics
Definition Isf15acp4Handler.h:65