- Remove 5-attempt drop limit — retry forever until success
- Exponential backoff for retries: 5s → 10s → 20s → 40s → 60s (capped)
- Only drop detections if queue exceeds 2000 (memory protection)
- Drop oldest first when over limit (FIFO eviction)
- Show retry countdown in error message
- Reset backoff on successful send
Handles intermittent 502s from ADAMaps gracefully by holding queue
until server recovers.
Root cause: Server expects flat array of detections with device_id on each
item, but client was sending nested {device_id, detections: [...]}.
The /health endpoint worked (ADAMaps showed green) but /api/ingest failed
validation: 'Missing required fields: device_id, lat, lon' on every request.
Items queued indefinitely, sent=0.
Fixed by:
- Adding device_id field to AdaMapsDetection
- Changed AdaMapsIngestRequest to typealias for List<AdaMapsDetection>
- Updated toAdaMapsDetection() to accept deviceId parameter
- Updated ForwardingService to send flat array format
FIXES:
- Restored port 5000 (Bee's odc-api runs on 5000, not 5001)
- Restored multi-IP discovery (primary: Bee AP, alt: home WiFi)
- Added custom DNS resolver for ADAMaps (hardcodes 142.44.213.229)
This fixes the '0 sent' bug - DNS fails on Bee AP (no upstream)
- Restored alt URL field in settings
- Kept exponential backoff and retry queue from v3
The DNS fix is the key: when connected to Bee's AP (192.168.0.10),
Android's DNS resolver can't resolve api.adamaps.org because
the AP has no internet. Custom Dns object bypasses this.
Root cause: odc-api binds to localhost only, not accessible from AP clients.
Solution: socat/python proxy on Bee forwards 0.0.0.0:5001 → 127.0.0.1:5000
App changes:
- Default URL now http://192.168.0.10:5001 (proxy port)
- Exponential backoff: 5s → 60s max when offline
- Clean 'Bee offline' status instead of red errors
- Retry queue: Failed ADAMaps sends retry up to 5x
- Camera shows 'Bee offline' when disconnected
- Simplified settings (removed dual-IP, single URL)
Requires running bee-proxy-setup.sh on the Bee first.
Fixes:
- Multi-IP discovery: Try both primary (AP) and alt (home WiFi) IPs in parallel
with 3-4s timeouts each. First responder wins.
- Exponential backoff: When Bee is offline, retry with increasing delays
(5s → 60s max) instead of hammering every 10s
- Clean offline state: Show 'Bee offline' status instead of ugly red errors
- Retry queue: Failed ADAMaps sends are queued and retried (up to 5 attempts)
instead of being silently dropped
- Camera shows 'Bee offline' instead of spinning 'Awaiting frame...'
- Settings: Added 'Bee Alt URL' field for configuring home WiFi IP
- Better connection status display showing which mode is active
Fixes the '206 collected, 0 sent' bug - detections now queue and retry
Full rewrite of bee-debug-app as ADAMaps data proxy.
- Detection forwarder to ADAMaps API (polls landmarks/last/200, dedup by id+ts)
- 30s camera snapshot with 4-endpoint auto-detect
- GPS mini-map via osmdroid/OpenStreetMap
- Device status panel (firmware, GPS, AI ready flags)
- Connection status bar + forwarding toggle
- Foreground service with persistent notification
- Dark amber theme, no Google Play Services
- Package: com.adamaps.varroa, minSdk 26