ISF15ACP4 Driver 1.0.0
API reference
Loading...
Searching...
No Matches
isf15acp4_button_ui.hpp
Go to the documentation of this file.
1
6#pragma once
7
8#include <cstdint>
9
11
12namespace isf15acp4 {
13
22
27enum class ButtonEvent : uint8_t {
28 None = 0,
29 Pressed,
31 Click,
33};
34
39class ButtonUI {
40public:
41 ButtonUI(uint32_t debounce_ms = 25, uint32_t long_press_ms = 800) noexcept;
42
48 ButtonEvent Update(bool pressed, uint32_t elapsed_ms) noexcept;
49
51 void DrawStatus(GraphicsContext& gfx, const char* label, bool active) const noexcept;
52
54 static void DrawGauge(GraphicsContext& gfx, uint8_t cx, uint8_t cy, uint8_t radius,
55 float value_0_to_1, Color565 fg, Color565 bg) noexcept;
56
57 [[nodiscard]] uint32_t PressCount() const noexcept { return press_count_; }
58 [[nodiscard]] bool IsDown() const noexcept { return is_down_; }
59
60private:
61 uint32_t debounce_ms_;
63 uint32_t stable_ms_{0};
64 uint32_t hold_ms_{0};
65 uint32_t press_count_{0};
66 bool is_down_{false};
67 bool long_fired_{false};
68};
69
70} // namespace isf15acp4
71
72#define ISF15ACP4_BUTTON_UI_HEADER_INCLUDED
73#include "../src/isf15acp4_button_ui.ipp"
74#undef ISF15ACP4_BUTTON_UI_HEADER_INCLUDED
Debounced switch handling with visual feedback on the OLED.
Definition isf15acp4_button_ui.hpp:39
uint32_t long_press_ms_
Definition isf15acp4_button_ui.hpp:62
uint32_t PressCount() const noexcept
Definition isf15acp4_button_ui.hpp:57
uint32_t stable_ms_
Definition isf15acp4_button_ui.hpp:63
uint32_t press_count_
Definition isf15acp4_button_ui.hpp:65
uint32_t debounce_ms_
Definition isf15acp4_button_ui.hpp:61
bool is_down_
Definition isf15acp4_button_ui.hpp:66
bool IsDown() const noexcept
Definition isf15acp4_button_ui.hpp:58
void DrawStatus(GraphicsContext &gfx, const char *label, bool active) const noexcept
Draw idle/active visual using graphics context.
Definition isf15acp4_button_ui.ipp:45
static void DrawGauge(GraphicsContext &gfx, uint8_t cx, uint8_t cy, uint8_t radius, float value_0_to_1, Color565 fg, Color565 bg) noexcept
Draw a compact gauge arc and numeric value.
Definition isf15acp4_button_ui.ipp:54
ButtonEvent Update(bool pressed, uint32_t elapsed_ms) noexcept
Poll raw pressed state and return edge/event classification.
Definition isf15acp4_button_ui.ipp:12
bool long_fired_
Definition isf15acp4_button_ui.hpp:67
uint32_t hold_ms_
Definition isf15acp4_button_ui.hpp:64
Owns the active graphics backend selected at construction time.
Definition isf15acp4_graphics_context.hpp:42
Runtime-selectable graphics backend for SmartDisplay applications.
Definition isf15acp4.hpp:19
ButtonEvent
Edge-qualified button events from debounced polling.
Definition isf15acp4_button_ui.hpp:27
ProductVariant
Supported NKK SmartDisplay OLED product variants.
Definition isf15acp4_types.hpp:19
@ Isf15acp4
Frameless OLED pushbutton, 96x64 (ISF15ACP4)
uint16_t Color565
16-bit RGB565 color value (R5G6B5).
Definition isf15acp4_types.hpp:50
GraphicsBackend
Selectable graphics engine used by SmartDisplay and UI helpers.
Definition isf15acp4_graphics_surface.hpp:22
Configuration for SmartDisplay construction.
Definition isf15acp4_button_ui.hpp:17
bool enable_vcc_on_init
Definition isf15acp4_button_ui.hpp:20
ProductVariant variant
Definition isf15acp4_button_ui.hpp:18
GraphicsBackend graphics
Definition isf15acp4_button_ui.hpp:19