GPS feature webapp side: GPS mode selector, fixed mode lat/lon, API endpoint. Merging with Wifi client and webdav features

This commit is contained in:
Carlos Guerra
2026-03-28 17:55:39 +01:00
committed by Will Greenberg
parent ac33ebaf53
commit c107314194
8 changed files with 255 additions and 1 deletions
+17
View File
@@ -5,6 +5,7 @@ mod crypto_provider;
mod diag;
mod display;
mod error;
mod gps;
mod key_input;
mod notifications;
mod pcap;
@@ -23,6 +24,7 @@ use crate::error::RayhunterError;
use crate::notifications::{NotificationService, run_notification_worker};
use crate::pcap::get_pcap;
use crate::qmdl_store::RecordingStore;
use crate::gps::{get_gps, post_gps};
use crate::server::{
ServerState, debug_set_display_state, get_config, get_qmdl, get_time, get_wifi_status, get_zip,
scan_wifi, serve_static, set_config, set_time_offset, test_notification,
@@ -78,6 +80,8 @@ fn get_router() -> AppRouter {
.route("/api/time", get(get_time))
.route("/api/time-offset", post(set_time_offset))
.route("/api/debug/display-state", post(debug_set_display_state))
.route("/api/gps", get(get_gps))
.route("/api/gps", post(post_gps))
.route("/", get(|| async { Redirect::permanent("/index.html") }))
.route("/{*path}", get(serve_static))
}
@@ -296,6 +300,18 @@ async fn run_with_config(
config.webdav.clone().into(),
);
}
let initial_gps = if config.gps_mode == 1 {
match (config.gps_fixed_latitude, config.gps_fixed_longitude) {
(Some(lat), Some(lon)) => Some(gps::GpsData {
latitude: lat,
longitude: lon,
timestamp: "fixed".to_string(),
}),
_ => None,
}
} else {
None
};
let state = Arc::new(ServerState {
config_path: args.config_path.clone(),
@@ -308,6 +324,7 @@ async fn run_with_config(
ui_update_sender: Some(ui_update_tx),
wifi_status,
wifi_scan_lock: tokio::sync::Mutex::new(()),
gps_state: Arc::new(tokio::sync::RwLock::new(initial_gps)),
});
run_server(&task_tracker, state, shutdown_token.clone()).await;