feat: usb device auto disconnect

This commit is contained in:
awalol
2026-04-26 14:33:06 +08:00
parent fe1c1cd6a5
commit 17627eebe4
3 changed files with 7 additions and 2 deletions
+2 -2
View File
@@ -15,7 +15,7 @@
- 开启麦克风静音为禁用静默断连 - 开启麦克风静音为禁用静默断连
# 当前问题: # 当前问题:
- 声音有点小卡顿 - 声音可能有点小卡顿
# 未来计划 # 未来计划
@@ -25,4 +25,4 @@
# 致谢 # 致谢
- [rafaelvaloto/Pico_W-Dualsense](https://github.com/rafaelvaloto/Pico_W-Dualsense) - 灵感来源 - [rafaelvaloto/Pico_W-Dualsense](https://github.com/rafaelvaloto/Pico_W-Dualsense) - 灵感来源
- [egormanga/SAxense](https://github.com/egormanga/SAxense) - 震动报文 - [egormanga/SAxense](https://github.com/egormanga/SAxense) - 震动报文
- [https://controllers.fandom.com/wiki/Sony_DualSense](https://controllers.fandom.com/wiki/Sony_DualSense) 数据报文结构 - [https://controllers.fandom.com/wiki/Sony_DualSense](https://controllers.fandom.com/wiki/Sony_DualSense) - 数据报文结构
+3
View File
@@ -294,6 +294,7 @@ static void hci_packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *p
} }
case HCI_EVENT_DISCONNECTION_COMPLETE: { case HCI_EVENT_DISCONNECTION_COMPLETE: {
tud_disconnect();
gap_connectable_control(1); gap_connectable_control(1);
gap_discoverable_control(1); gap_discoverable_control(1);
const uint8_t reason = hci_event_disconnection_complete_get_reason(packet); const uint8_t reason = hci_event_disconnection_complete_get_reason(packet);
@@ -390,6 +391,8 @@ static void l2cap_packet_handler(uint8_t packet_type, uint16_t channel, uint8_t
}; };
memcpy(report32 + 2, packet_0x10, sizeof(packet_0x10)); memcpy(report32 + 2, packet_0x10, sizeof(packet_0x10));
bt_write(report32, sizeof(report32)); bt_write(report32, sizeof(report32));
tud_connect();
} else { } else {
printf("[L2CAP] Unknown Channel psm: 0x%02X", psm); printf("[L2CAP] Unknown Channel psm: 0x%02X", psm);
} }
+2
View File
@@ -94,6 +94,8 @@ int main() {
}; };
tusb_init(BOARD_TUD_RHPORT, &dev_init); tusb_init(BOARD_TUD_RHPORT, &dev_init);
tud_disconnect();
board_init_after_tusb(); board_init_after_tusb();
bt_init(); bt_init();