CDC Badge OS
Firmware for the CDC Badge v1.0 hardware security key
Loading...
Searching...
No Matches
IKeypad.h
Go to the documentation of this file.
1#pragma once
2
3#include "cdc_core/IService.h"
4#include <cstdint>
5
6namespace cdc::hal {
7
16enum class Key : char {
17 KEY_1 = '1', KEY_2 = '2', KEY_3 = '3',
18 KEY_4 = '4', KEY_5 = '5', KEY_6 = '6',
19 KEY_7 = '7', KEY_8 = '8', KEY_9 = '9',
20 KEY_NO = 'N', KEY_0 = '0', KEY_YES = 'Y',
22};
23
27using KeyCallback = void(*)(Key key, bool pressed);
28
32class IKeypad : public core::IService {
33public:
34 virtual ~IKeypad() = default;
35
40 virtual void poll() = 0;
41
45 virtual bool isKeyPressed(Key key) const = 0;
46
51 virtual Key getNextKey() = 0;
52
56 virtual bool hasKey() const = 0;
57
61 virtual bool anyKeyDown() const = 0;
62
67 virtual void setCallback(KeyCallback callback) = 0;
68
74 virtual void setLongPressEnabled(bool enabled, uint32_t thresholdMs = 800) = 0;
75
79 using LongPressCallback = void(*)(Key key);
80 virtual void setLongPressCallback(LongPressCallback callback) = 0;
81
86 using PanicChordCallback = void(*)();
87 virtual void setPanicChordCallback(PanicChordCallback callback) = 0;
88
90 static constexpr uint32_t DEFER_SRC_VIEW = 1u << 0;
91 static constexpr uint32_t DEFER_SRC_EVENT = 1u << 1;
92
102 virtual void setDeferShortPress(uint32_t source, bool enabled) {
103 (void)source;
104 (void)enabled;
105 }
106
115 virtual void setKeyRepeat(uint16_t initial_ms, uint16_t period_ms) {
116 (void)initial_ms;
117 (void)period_ms;
118 }
119
124 virtual void prepareForSleep() = 0;
125
130 virtual void recoverFromSleep() = 0;
131
135 virtual void clearBuffer() = 0;
136};
137
138// Factory function to get keypad instance
140
141} // namespace cdc::hal
virtual ~IKeypad()=default
static constexpr uint32_t DEFER_SRC_EVENT
plugin KEY_LONG_PRESS subscription
Definition IKeypad.h:91
virtual void prepareForSleep()=0
virtual void setDeferShortPress(uint32_t source, bool enabled)
Definition IKeypad.h:102
virtual void setLongPressCallback(LongPressCallback callback)=0
void(*)() PanicChordCallback
Definition IKeypad.h:86
virtual void clearBuffer()=0
virtual void recoverFromSleep()=0
virtual void setKeyRepeat(uint16_t initial_ms, uint16_t period_ms)
Definition IKeypad.h:115
virtual bool anyKeyDown() const =0
virtual void poll()=0
void(*)(Key key) LongPressCallback
Definition IKeypad.h:79
static constexpr uint32_t DEFER_SRC_VIEW
active view (e.g. canvas long-press)
Definition IKeypad.h:90
virtual void setLongPressEnabled(bool enabled, uint32_t thresholdMs=800)=0
virtual bool isKeyPressed(Key key) const =0
virtual void setPanicChordCallback(PanicChordCallback callback)=0
virtual bool hasKey() const =0
virtual Key getNextKey()=0
virtual void setCallback(KeyCallback callback)=0
#define KEY_4
Definition host_api.h:1254
#define KEY_2
Definition host_api.h:1252
#define KEY_6
Definition host_api.h:1256
#define KEY_0
Definition host_api.h:1250
#define KEY_7
Definition host_api.h:1257
#define KEY_1
Definition host_api.h:1251
#define KEY_3
Definition host_api.h:1253
#define KEY_5
Definition host_api.h:1255
#define KEY_8
Definition host_api.h:1258
#define KEY_9
Definition host_api.h:1259
void(*)(Key key, bool pressed) KeyCallback
Definition IKeypad.h:27
IKeypad * getKeypadInstance()
Returns the singleton keypad service instance.