M5Unit-KEYBOARD 0.0.1 git rev:a483db1
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"
14#include <m5_utility/container/circular_buffer.hpp>
15#include <array>
16
17namespace m5 {
18namespace unit {
40class UnitCardKB2UART : public UnitKeyboardBitwise {
41 M5_UNIT_COMPONENT_HPP_BUILDER(UnitCardKB2UART, 0x5F);
42
43public:
44 using Packet = std::array<uint8_t, 5>;
45
50 struct config_t {
52 bool start_periodic{true};
54 uint32_t interval{10};
55 };
56
57 explicit UnitCardKB2UART(const uint8_t addr = DEFAULT_ADDRESS) : UnitKeyboardBitwise(addr)
58 {
59 _repeat_start_at.resize(cardkb2::NUMBER_OF_KEYS);
60 _hold_start_at.resize(cardkb2::NUMBER_OF_KEYS);
61 }
63 virtual bool begin() override;
65 virtual void update(const bool force = false) override;
66
69
71 {
72 return _cfg;
73 }
75 inline void config(const config_t& cfg)
76 {
77 _cfg = cfg;
78 }
80
82 inline virtual keyboard::key_index_t toKeyIndex(const char ch) const override
83 {
84 return cardkb2::character_to_key_index(ch);
85 }
86
89
94 virtual bool readFirmwareVersion(uint8_t& ver) override;
96
99
103 virtual bool readMode(keyboard::Mode&) override
104 {
105 return false;
106 }
108 virtual bool writeMode(const keyboard::Mode) override
109 {
110 return false;
111 }
113
114protected:
115 void update_uart(const bool force);
116 uint8_t read_data(Packet& rbuf);
117
118 inline virtual uint8_t to_mode_bits(const char ch) const override
119 {
120 return cardkb2::character_to_mode_bits(ch);
121 }
122
123protected:
124 config_t _cfg{};
125
126private:
127 bool _sym_was_pressed{false};
128 bool _caps_shift_once{false};
129 bool _caps_lock{false};
130 bool _caps_hold_active{false};
131 bool _caps_pressing{false};
132 uint8_t _caps_click_count{0};
133 uint32_t _caps_pressed_at{0};
134 uint32_t _caps_last_release_at{0};
135};
136
137} // namespace unit
138} // namespace m5
139#endif
Card-size 42 key QWERTY keyboard — UART mode (SKU:U215)
virtual bool begin() override
Definition unit_CardKB2UART.cpp:110
virtual bool writeMode(const keyboard::Mode) override
Not supported on CardKB2UART.
Definition unit_CardKB2UART.hpp:108
config_t config()
Gets the configuration.
Definition unit_CardKB2UART.hpp:70
virtual void update(const bool force=false) override
Definition unit_CardKB2UART.cpp:345
virtual bool readMode(keyboard::Mode &) override
Not supported on CardKB2UART.
Definition unit_CardKB2UART.hpp:103
virtual keyboard::key_index_t toKeyIndex(const char ch) const override
Obtains the key index corresponding to the specified character.
Definition unit_CardKB2UART.hpp:82
void config(const config_t &cfg)
Set the configuration.
Definition unit_CardKB2UART.hpp:75
virtual bool readFirmwareVersion(uint8_t &ver) override
Read the firmware version.
Definition unit_CardKB2UART.cpp:136
Class supporting keyboard state acquisition by key press bits.
Top level namespace of M5stack.
Unit-related namespace.
Settings for begin.
Definition unit_CardKB2UART.hpp:50
uint32_t interval
Periodic interval (ms)
Definition unit_CardKB2UART.hpp:54
bool start_periodic
Start periodic measurement on begin?
Definition unit_CardKB2UART.hpp:52
Shared constants and types for CardKB2 I2C and UART classes.
uint8_t key_index_t
Key index (Not character)
Definition unit_Keyboard.hpp:24
Mode
Operation mode for M5Unit-KEYBOARD firmware.
Definition unit_Keyboard.hpp:50