Build the handshake push from shared_data.config — only keys the user has actually set (missing keys leave firmware defaults alone).
(self)
| 1873 | except Exception: |
| 1874 | pass |
| 1875 | |
| 1876 | |
| 1877 | class WardrivingEngine: |
| 1878 | """Main wardriving engine that coordinates WiFi scanning and GPS.""" |
| 1879 | |
| 1880 | def __init__(self, shared_data): |
| 1881 | self.shared_data = shared_data |
| 1882 | self.data_dir = getattr(shared_data, 'data_dir', 'data') |
| 1883 | self._running = False |
| 1884 | # True while start() is bringing radios/GPS up but the scan loop isn't |
| 1885 | # live yet. The display uses this to switch to wardriving mode (a |
| 1886 | # "Starting..." screen) the instant a manual start is requested, instead |
| 1887 | # of waiting out the several-second interface+GPS bring-up — matching how |
| 1888 | # wardriving-on-boot already behaves. Auto-expires (see get_status) so a |
| 1889 | # start() that dies mid-way can't strand the panel on "Starting...". |
| 1890 | self._starting = False |
no test coverage detected