feat(native-usb): add 32-frame HD gameplay rumble and USB flight diagnostics
Preserve native frequency/amplitude timelines for DualSense PCM output, remove the unsupported 64-frame path, and retain compatibility rumble for other controllers. Use the validated 300 MHz sampling phase and restrict non-bondable Classic discovery autoconnect to previously paired peers. Buffer native-hub UART stdout and release USB IRQs around port-reset callbacks. Add observer liveness and pre-SETUP root-response observations without changing recovery behavior. Cover transport and haptics boundaries. Record the user-accepted 0.108 trial: controls remained responsive and rumble felt fine. Instrumentation changes timing; the disconnect root cause and long-term reliability remain unqualified. Validation: 624 tests, 11 affected firmware/probe builds, and on-device concurrent USB and HD-auto-start checks. Private captures, generated images, and unrelated working-tree files are intentionally excluded.
This commit is contained in:
parent
ae1ca51b9a
commit
80b788099b
46 changed files with 2873 additions and 412 deletions
|
|
@ -125,6 +125,24 @@ diff --git a/src/components/bluepad32/bt/uni_bt_bredr.c b/src/components/bluepad
|
|||
uni_hid_device_disconnect(device);
|
||||
uni_hid_device_delete(device);
|
||||
/* 'device' is destroyed, don't use */
|
||||
@@ -562,6 +567,17 @@ void uni_bt_bredr_on_gap_inquiry_result(uint16_t channel, const uint8_t* packet, uin
|
||||
logi(", name '%s'", name_buffer);
|
||||
}
|
||||
logi("\n");
|
||||
|
||||
+ // Reconnect discovery is not a pairing request. Avoid paging nearby
|
||||
+ // unpaired devices outside the explicit bondable window: their connection
|
||||
+ // attempts compete with live controller input and native PCM for airtime.
|
||||
+ if (!gap_get_bondable_mode()) {
|
||||
+ link_key_t key;
|
||||
+ link_key_type_t type;
|
||||
+ if (!gap_get_link_key_for_bd_addr(addr, key, &type)) {
|
||||
+ return;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
supported = uni_hid_device_on_device_discovered(addr, name_buffer, cod, rssi) == UNI_ERROR_SUCCESS;
|
||||
if (supported) {
|
||||
diff --git a/src/components/bluepad32/bt/uni_bt_le.c b/src/components/bluepad32/bt/uni_bt_le.c
|
||||
--- a/src/components/bluepad32/bt/uni_bt_le.c
|
||||
+++ b/src/components/bluepad32/bt/uni_bt_le.c
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue