feat: config manager

This commit is contained in:
awalol
2026-05-05 01:17:15 +08:00
parent 572d017ec5
commit fb8624b61b
9 changed files with 263 additions and 15 deletions
+14
View File
@@ -12,6 +12,8 @@
#include "hardware/vreg.h"
#include "hardware/watchdog.h"
#include "pico/cyw43_arch.h"
#include "config.h"
#include "cmd.h"
// Pico SDK speciifically for waiting on conditions
#include "pico/critical_section.h"
@@ -94,6 +96,10 @@ uint16_t tud_hid_get_report_cb(uint8_t itf, uint8_t report_id, hid_report_type_t
(void) buffer;
(void) reqlen;
if (is_pico_cmd(report_id)) {
return pico_cmd_get(report_id,buffer,reqlen);
}
std::vector<uint8_t> feature_data = get_feature_data(report_id, reqlen);
if (!feature_data.empty()) {
memcpy(buffer, feature_data.data() + 1, feature_data.size() - 1);
@@ -112,6 +118,12 @@ void tud_hid_set_report_cb(uint8_t itf, uint8_t report_id, hid_report_type_t rep
(void) buffer;
(void) bufsize;
if (is_pico_cmd(report_id)) {
printf("[HID] Receive 0xf6 setting config, funcid:0x%02X\n",buffer[0]);
pico_cmd_set(report_id,buffer,bufsize);
return;
}
// INTERRUPT OUT
if (report_id == 0) {
switch (buffer[0]) {
@@ -173,6 +185,8 @@ int main() {
// Initialize the critical section for the report buffer
critical_section_init(&report_cs);
config_load();
bt_init();
bt_register_data_callback(on_bt_data);