refactor: unified controller state by state_mgr

This commit is contained in:
awalol
2026-05-15 20:07:12 +08:00
parent 9a2c2b45e1
commit 7bbe37ba1c
8 changed files with 360 additions and 119 deletions
+11 -2
View File
@@ -12,6 +12,7 @@
#include "hardware/vreg.h"
#include "hardware/watchdog.h"
#include "pico/cyw43_arch.h"
#include "state_mgr.h"
#if ENABLE_SERIAL
#include "pico/stdio_usb.h"
#endif
@@ -26,6 +27,7 @@
int reportSeqCounter = 0;
uint8_t packetCounter = 0;
bool spk_active = false;
uint8_t interrupt_in_data[63] = {
0x7f, 0x7d, 0x7f, 0x7e, 0x00, 0x00, 0xa7,
@@ -140,6 +142,7 @@ bool tud_audio_set_itf_cb(uint8_t rhport, tusb_control_request_t const *p_reques
if (itf == 1) {
printf("[AUDIO] Set interface Speaker to alternate setting %d\n", alt);
spk_active = alt;
}
return true;
@@ -165,14 +168,19 @@ void tud_hid_set_report_cb(uint8_t itf, uint8_t report_id, hid_report_type_t rep
if (report_id == 0) {
switch (buffer[0]) {
case 0x02: {
uint8_t outputData[78];
state_update(buffer + 1, bufsize - 1);
if (spk_active) {
break;
}
uint8_t outputData[78]{};
outputData[0] = 0x31;
outputData[1] = reportSeqCounter << 4;
if (++reportSeqCounter == 256) {
reportSeqCounter = 0;
}
outputData[2] = 0x10;
memcpy(outputData + 3, buffer + 1, bufsize - 1);
// memcpy(outputData + 3, buffer + 1, bufsize - 1);
state_set(outputData + 3,sizeof(SetStateData));
bt_write(outputData, sizeof(outputData));
break;
}
@@ -243,6 +251,7 @@ int main() {
bt_register_data_callback(on_bt_data);
audio_init();
state_init();
#if !ENABLE_SERIAL
watchdog_enable(1000, true);