Bluetooth-Devices
habluetooth
Blog
Docs
Changelog
Blog
Docs
Changelog
Overview
Branches
Benchmarks
Runs
Performance History
Latest Results
6.25.1 Automatically generated by python-semantic-release
main
3 hours ago
fix(manager): don't fold missing rssi into the smoothed average (#586)
main
3 hours ago
fix(manager): don't fold missing rssi into the smoothed average When a proxy drops the RSSI on an advert, service_info.rssi is 0 and rssi or NO_RSSI_VALUE turns it into -127, which was folded into the per-source EWMA. Because the average remembers it, one dropped reading dragged the smoothed value down for several adverts, manufacturing phantom weak readings that flapped ownership; smoothing made this worse than the old instantaneous path, which forgot the bad sample on the next packet. A no-RSSI advert now keeps the last good smoothed value and writes nothing, so it can never poison the average. A no-RSSI first cross-source sighting seeds only the existing owner and loses arbitration via NO_RSSI_VALUE rather than stealing ownership or priming the bucket with -127; the source's next real advert seeds it cleanly.
fix-missing-rssi-smoothing
3 hours ago
6.25.0 Automatically generated by python-semantic-release
main
4 hours ago
feat(manager): add asymmetric rssi switch hysteresis to stop reclaim flapping (#585)
main
4 hours ago
feat(manager): add asymmetric rssi switch hysteresis to stop reclaim flapping Per-source RSSI smoothing removes single-sample noise, but a heavily multipathed stationary device whose smoothed RSSI to two proxies genuinely straddles the 16 dB ADV_RSSI_SWITCH_THRESHOLD still ping-pongs, because each leg of the A->B->A switch only needs 16 dB. Add ADV_RSSI_SWITCH_DEADBAND (6 dB) and charge it only to a challenger that is reclaiming the ownership it was just demoted from, tracked per address in _demoted_source. A boundary device must now swing its smoothed signal through a wider band to reclaim, killing the residual oscillation, while a genuine one-way move (never the demoted source) still hands off at the plain 16 dB threshold and is not slowed. The demotion is recorded inside the predicate's active RSSI branch, so a stale-path handoff records nothing (a strong owner recovering from transient silence still reclaims at THRESHOLD) and only a currently-registered source is ever recorded (the predicate already verified it is in _sources). A record_demotion flag keeps the connectable history re-check from recording an all-history demotion. _demoted_source is evicted with the device and per source on unregister, mirroring _smoothed_rssi.
rssi-switch-deadband
4 hours ago
feat(manager): add asymmetric rssi switch hysteresis to stop reclaim flapping Per-source RSSI smoothing removes single-sample noise, but a heavily multipathed stationary device whose smoothed RSSI to two proxies genuinely straddles the 16 dB ADV_RSSI_SWITCH_THRESHOLD still ping-pongs, because each leg of the A->B->A switch only needs 16 dB. Add ADV_RSSI_SWITCH_DEADBAND (6 dB) and charge it only to a challenger that is reclaiming the ownership it was just demoted from, tracked per address in _demoted_source. A boundary device must now swing its smoothed signal through a wider band to reclaim, killing the residual oscillation, while a genuine one-way move (never the demoted source) still hands off at the plain 16 dB threshold and is not slowed. The demotion is recorded inside the predicate's active RSSI branch, so a stale-path handoff records nothing (a strong owner recovering from transient silence still reclaims at THRESHOLD) and only a currently-registered source is ever recorded (the predicate already verified it is in _sources). A record_demotion flag keeps the connectable history re-check from recording an all-history demotion. _demoted_source is evicted with the device and per source on unregister, mirroring _smoothed_rssi.
rssi-switch-deadband
4 hours ago
feat(manager): add asymmetric rssi switch hysteresis to stop reclaim flapping Per-source RSSI smoothing removes single-sample noise, but a heavily multipathed stationary device whose smoothed RSSI to two proxies genuinely straddles the 16 dB ADV_RSSI_SWITCH_THRESHOLD still ping-pongs, because each leg of the A->B->A switch only needs 16 dB. Add ADV_RSSI_SWITCH_DEADBAND (6 dB) and charge it only to a challenger that is reclaiming the ownership it was just demoted from, tracked per address in _demoted_source. A boundary device must now swing its smoothed signal through a wider band to reclaim, killing the residual oscillation, while a genuine one-way move (never the demoted source) still hands off at the plain 16 dB threshold and is not slowed. The deadband applies on the active RSSI path only; the stale-path comparable handoff is unchanged. _demoted_source is evicted with the device and per source on unregister, mirroring _smoothed_rssi.
rssi-switch-deadband
5 hours ago
Latest Branches
CodSpeed Performance Gauge
0%
fix(manager): don't fold missing rssi into the smoothed average
#586
3 hours ago
d35d149
fix-missing-rssi-smoothing
CodSpeed Performance Gauge
0%
feat(manager): add asymmetric rssi switch hysteresis to stop reclaim flapping
#585
6 hours ago
e6e1ac6
rssi-switch-deadband
CodSpeed Performance Gauge
-16%
feat(manager): smooth per-source RSSI for advertisement owner selection
#584
13 hours ago
114ca35
rssi-smoothing-arbitration
© 2026 CodSpeed Technology
Home
Terms
Privacy
Docs