M5Unit-KEYBOARD 0.1.0 git rev:b58d024
Loading...
Searching...
No Matches
unit_CardKB2UART.hpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2026 M5Stack Technology CO LTD
3 *
4 * SPDX-License-Identifier: MIT
5 */
10#ifndef M5_UNIT_KEYBOARD_UNIT_CARD_KB2_UART_HPP
11#define M5_UNIT_KEYBOARD_UNIT_CARD_KB2_UART_HPP
12
13#include "unit_CardKB2_defs.hpp"
16#include <m5_utility/container/circular_buffer.hpp>
17#include <array>
18
19namespace m5 {
20namespace unit {
42class UnitCardKB2UART : public UnitKeyboardBitwise {
43 M5_UNIT_COMPONENT_HPP_BUILDER(UnitCardKB2UART, 0x5F);
44
45public:
47 using Packet = std::array<uint8_t, 5>;
48
53 struct config_t {
55 bool start_periodic{true};
57 uint32_t interval{10};
58 };
59
64 explicit UnitCardKB2UART(const uint8_t addr = DEFAULT_ADDRESS) : UnitKeyboardBitwise(addr)
65 {
66 }
68 virtual bool begin() override;
70 virtual void update(const bool force = false) override;
71
74
75 inline config_t config() const
76 {
77 return _cfg;
78 }
83 inline void config(const config_t& cfg)
84 {
85 _cfg = cfg;
86 }
88
90 inline virtual keyboard::key_index_t toKeyIndex(const char ch) const override
91 {
92 return cardkb2::character_to_key_index(ch);
93 }
94
97
102 virtual bool readFirmwareVersion(uint8_t& ver) override;
104
107
111 virtual bool readMode(keyboard::Mode&) override
112 {
113 return false;
114 }
119 virtual bool writeMode(const keyboard::Mode) override
120 {
121 return false;
122 }
124
125protected:
126 void update_uart(const bool force);
127 uint8_t read_data(Packet& rbuf);
128
129 inline virtual uint8_t to_mode_bits(const char ch) const override
130 {
131 return cardkb2::character_to_mode_bits(ch);
132 }
133
134protected:
135 config_t _cfg{};
136
137private:
138 m5::unit::cardkb2::CardKB2ModifierState _mod{};
139};
140
141} // namespace unit
142} // namespace m5
143#endif
Host-side port of the iot_button v4.1.4 click/long-press FSM.
CardKB2 Sym/Caps/Fn modifier state machine (firmware-parity), event-driven and native-testable.
UnitCardKB2UART(const uint8_t addr=DEFAULT_ADDRESS)
Constructor.
Definition unit_CardKB2UART.hpp:64
virtual bool begin() override
Definition unit_CardKB2UART.cpp:107
virtual bool writeMode(const keyboard::Mode) override
Not supported on CardKB2UART.
Definition unit_CardKB2UART.hpp:119
config_t config() const
Gets the configuration.
Definition unit_CardKB2UART.hpp:75
virtual void update(const bool force=false) override
Definition unit_CardKB2UART.cpp:330
virtual bool readMode(keyboard::Mode &) override
Not supported on CardKB2UART.
Definition unit_CardKB2UART.hpp:111
virtual keyboard::key_index_t toKeyIndex(const char ch) const override
Obtains the key index corresponding to the specified character.
Definition unit_CardKB2UART.hpp:90
void config(const config_t &cfg)
Set the configuration.
Definition unit_CardKB2UART.hpp:83
virtual bool readFirmwareVersion(uint8_t &ver) override
Read the firmware version.
Definition unit_CardKB2UART.cpp:133
std::array< uint8_t, 5 > Packet
5-byte UART packet: {0xAA, 0x03, key_id, key_state, checksum}
Definition unit_CardKB2UART.hpp:47
Class supporting keyboard state acquisition by key press bits.
Top level namespace of M5Stack.
Unit-related namespace.
Settings for begin.
Definition unit_CardKB2UART.hpp:53
uint32_t interval
Periodic interval (ms)
Definition unit_CardKB2UART.hpp:57
bool start_periodic
Start periodic measurement on begin?
Definition unit_CardKB2UART.hpp:55
Shared constants and types for CardKB2 I2C and UART classes.
uint8_t key_index_t
Key index (Not character)
Definition unit_Keyboard.hpp:26
Mode
Operation mode for M5Unit-KEYBOARD firmware.
Definition unit_Keyboard.hpp:58