mirror of
https://github.com/smittix/intercept.git
synced 2026-07-12 19:48:14 -07:00
Fix multiple UI bugs and improve error handling
Issues fixed: - #113: Display RTL-SDR serial numbers in device selector - #112: Kill all processes now stops Bluetooth scans - #111: BLE device list no longer overflows container bounds - #109: WiFi scanner panels maintain minimum width (no more "imploding") - #108: Radar device hover no longer causes violent shaking - #106: "Use GPS" button now uses gpsd for USB GPS devices - #105: Meter trend text no longer overlaps adjacent columns - #104: dump1090 errors now provide specific troubleshooting guidance Changes: - app.py: Add Bluetooth cleanup to /killall endpoint - routes/adsb.py: Parse dump1090 stderr for specific error messages - templates/index.html: Show SDR serial numbers in device dropdown - static/css/index.css: Fix WiFi/BT panel layouts with proper min-width - static/css/components/signal-cards.css: Fix meter grid overflow - static/css/components/proximity-viz.css: Fix radar hover transform - static/css/settings.css: Add GPS detection spinner - static/js/components/proximity-radar.js: Add invisible hit areas - static/js/core/settings-manager.js: Use gpsd before browser geolocation Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -645,19 +645,21 @@ def health_check() -> Response:
|
||||
|
||||
@app.route('/killall', methods=['POST'])
|
||||
def kill_all() -> Response:
|
||||
"""Kill all decoder and WiFi processes."""
|
||||
"""Kill all decoder, WiFi, and Bluetooth processes."""
|
||||
global current_process, sensor_process, wifi_process, adsb_process, ais_process, acars_process
|
||||
global aprs_process, aprs_rtl_process, dsc_process, dsc_rtl_process
|
||||
global aprs_process, aprs_rtl_process, dsc_process, dsc_rtl_process, bt_process
|
||||
|
||||
# Import adsb and ais modules to reset their state
|
||||
from routes import adsb as adsb_module
|
||||
from routes import ais as ais_module
|
||||
from utils.bluetooth import reset_bluetooth_scanner
|
||||
|
||||
killed = []
|
||||
processes_to_kill = [
|
||||
'rtl_fm', 'multimon-ng', 'rtl_433',
|
||||
'airodump-ng', 'aireplay-ng', 'airmon-ng',
|
||||
'dump1090', 'acarsdec', 'direwolf', 'AIS-catcher'
|
||||
'dump1090', 'acarsdec', 'direwolf', 'AIS-catcher',
|
||||
'hcitool', 'bluetoothctl'
|
||||
]
|
||||
|
||||
for proc in processes_to_kill:
|
||||
@@ -701,6 +703,26 @@ def kill_all() -> Response:
|
||||
dsc_process = None
|
||||
dsc_rtl_process = None
|
||||
|
||||
# Reset Bluetooth state (legacy)
|
||||
with bt_lock:
|
||||
if bt_process:
|
||||
try:
|
||||
bt_process.terminate()
|
||||
bt_process.wait(timeout=2)
|
||||
except Exception:
|
||||
try:
|
||||
bt_process.kill()
|
||||
except Exception:
|
||||
pass
|
||||
bt_process = None
|
||||
|
||||
# Reset Bluetooth v2 scanner
|
||||
try:
|
||||
reset_bluetooth_scanner()
|
||||
killed.append('bluetooth_scanner')
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# Clear SDR device registry
|
||||
with sdr_device_registry_lock:
|
||||
sdr_device_registry.clear()
|
||||
|
||||
Reference in New Issue
Block a user