You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
|`ble_status_parse`| Decode and parse the status; empty or invalid status fails |
13
+
|`ble_selected_match`| Compare parsed status with the selected PC; `succeeded` or `not_matched`|
14
+
|`ble_resolution`| Find and prepare the selected connection; `started`, `succeeded`, `failed`, or `timed_out`|
12
15
|`ble_connect`| Connection to the selected device |
13
16
|`ble_priority`| Optional Android priority request; failure is nonfatal |
14
17
|`ble_mtu`| Android MTU negotiation |
15
18
|`ble_services`| Service discovery for the control connection |
16
19
|`ble_notifications`| Local notification listener registration, or a listener error |
17
20
|`ble_notification_ready`| Android CCCD read and enabled-value check |
18
21
19
-
Each stage has `_started`, `_succeeded` and `_failed` outcomes. Listener registration success does not prove that the peripheral enabled notifications; Android checks its descriptor separately. Status-read success records a completed GATT read, not successful parsing. Scan probes can interleave; no device identifiers are included. Stop discovery and make one selected-device attempt for diagnosis.
22
+
Unless noted above, stages have `_started`, `_succeeded` and `_failed` outcomes. Listener registration success does not prove that the peripheral enabled notifications; Android checks its descriptor separately. Status-read success records a completed GATT read, not successful parsing. Scan probes can interleave; no device identifiers are included. Stop discovery and make one selected-device attempt for diagnosis.
23
+
24
+
Resolution spans both discovery and connection preparation, including priority, MTU and service setup. Its timeout is the overall deadline, not necessarily a missing device. A successful selected match means identity equality, not authentication or completed handoff. Nonmatching candidates are informational and normal when other PCs are nearby. A parse failure after a successful read distinguishes invalid/empty status from a native read failure, but does not expose the rejected value or parsing reason. Cancellation may leave only `ble_resolution_started`; stale operations do not report terminal outcomes into newer attempts.
25
+
26
+
The S26 beta.22 test showed successful reads but no priority/MTU/notification stages for the selected probe, while the Linux probe recorded no writes or notification channel. Its log had no explicit resolution outcome, so timeout and matching/parsing causes were not distinguishable. These new events require an updated app build; the test does not establish a root cause or completed Linux support.
20
27
21
28
Cancelled operations cannot later append success/failure into a newer operation. Unsubscribed notification callbacks cannot append stage diagnostics. Cancellation may leave a started entry without an outcome; that is not proof of Bluetooth failure. Native rejection and timeout both count as failure of the relevant stage. Raw errors/codes, addresses, PC names, descriptor values, payloads and credentials are never added to stage diagnostics.
it.each(['','private malformed','{"protocolVersion":2}','{"protocolVersion":1,"desktopId":"other-private"}'])('diagnoses rejected or nonmatching status (%s)',async(raw)=>{
0 commit comments