sl-ios 12338f491e fix: parse HAL two-anchor ranging format (8-byte int32×2)
The app's old parser expected a multi-anchor protocol:
  [count][anchorID+rangeMM+RSSI+age]×N (min 10 bytes)
HAL's firmware sends a fixed 8-byte packet:
  [int32 front_mm LE][int32 back_mm LE]

With the old parser data[0] was interpreted as anchor count
(e.g. 0xF8 = 248 for a 4.6m reading), the loop guard failed
immediately, and every notify returned [] — hence "waiting for
ranging data" despite the tag showing live ranges on OLED.

Changes:
- BLEPackets: detect 8-byte HAL format by length; decode as
  anchor id=0 (Front) and id=1 (Back); legacy multi-anchor path
  retained for forward compatibility
- AnchorInfo: rssiDBm is now Optional (nil when not reported);
  label maps id 0→"F", 1→"B" for the two-anchor HAL format
- BLEStatusView: guard on optional rssiString before rendering

Auto-reconnect confirmed correct (2s delay, bluetooth-central
background mode declared in Info.plist).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06 16:25:35 -04:00
2026-04-03 16:46:32 -04:00

saltylab-ios

SaltyBot iOS Companion App (Sul-Tee) — Swift/SwiftUI, sensor streaming for follow-me mode

Description
SaltyBot iOS Companion App (Sul-Tee) — Swift/SwiftUI, sensor streaming for follow-me mode
Readme 233 KiB