// firmware/src/ble_scanner.h #pragma once #include #include struct BLEHourlyRecord { uint32_t period_start; uint32_t period_end; int unique_devices; int max_concurrent; int near_count; // RSSI > -65 dBm int mid_count; // RSSI -65 to -80 dBm int far_count; // RSSI < -80 dBm std::vector device_hashes; // SHA256(MAC) first 16 hex chars }; // Start continuous passive BLE scan (call once at boot). void ble_scanner_start(); // Pause scan for ~3s during HTTP upload. void ble_scanner_pause(); void ble_scanner_resume(); // Collect current hour's record and reset accumulators. Thread-safe. BLEHourlyRecord ble_scanner_collect(uint32_t period_start, uint32_t period_end);