Repository navigation
Default partial-device-allowed to true across SDK and viewer - for back compat IMU BMI 088 support - #15070
Conversation
Nir-Az
left a comment
There was a problem hiding this comment.
rs-agentic bot automated review
Summary of findings (3 inline comments below):
- 🐛 Inconsistent default in constructor — the class-level default parameter () was not updated alongside the call-site default.
⚠️ Silent partial-device exposure — SDK consumers that don't set the flag explicitly will now silently receive partial devices (e.g., no IMU). No public API/changelog note.- 🧪 No unit tests — no automated test for the new default or for ensuring
partial-device-allowed: falsestill rejects partials. - 📝 Missing newline at EOF in
src/ds/ds-private.cpp(pre-existing, but could be fixed in this PR). - 🔗 Undeclared dependency on PR #15058 — the PR body mentions
MAX_DEFERRALfrom #15058 as a prerequisite; consider adding a hard dependency or merge order note.
This comment was auto-generated by the rs-agentic bot
🧪 Missing Test Coverage — rs-agentic botThis PR changes a behavioural default that affects all SDK consumers and the Viewer, but no automated tests are added or updated. Specifically, the test plan checks (in the PR body) are all manual:
Suggested automated tests (aligned with the existing pytest /
Without regression tests, a future change that accidentally reverts the default back to 🔗 Merge-order dependency on PR #15058The PR description correctly states that this change "relies on the watcher-level HID-binding deferral from #15058 (5 s Suggestion: Either:
|
… across SDK and viewer (#15070)
@
TL;DR: Flip the default of
partial-device-allowedfromfalsetotruein the three places its read. With the watcher-level HID-binding deferral from #15058 (5 sMAX_DEFERRAL) in place, partial enumeration is the rare slow-HID corner case rather than the common path — surfacing the partial device and letting the supersede event upgrade it ~3 s later is a better UX than rejecting it outright and showing "no device" for that window.Changes
Three one-line flips, no logic changes:
src/ds/ds-private.cppis_partial_device_allowed()fallbackfalse→truesrc/dds/rsdds-device-factory.cpppartial_capabilities_allowedfallbackfalse→truecommon/viewer.cppfalse→trueAligning all three keeps UI and SDK behavior coherent: fresh users see a checked box and the SDK behaves as the box says.
Existing-user behavior
Users who have already toggled the checkbox have
context.partial-device-allowedwritten in theirrealsense-config.json— the SDK reads that explicit value and the new defaults dont apply to them.Verification
Hot-plug stress on D455 via Acroname hub, 10 iterations (
partial-device-allowed: true, observing bothaddedevents per cycle):With the new default, the 2/10 slow-HID cases produce a brief no-IMU window that auto-recovers, instead of a 3–4 s "device not found" gap under the old default.
Test plan
"partial-device-allowed": falseincontextJSON still rejects partials@