From c692bbd21783b0015adaec96dc537fc870a7ea33 Mon Sep 17 00:00:00 2001 From: John Michael Burke Date: Fri, 21 Jul 2023 19:34:03 -0700 Subject: [PATCH] Support PGM in tracking signals tab[DIP-64] --- console_backend/src/process_messages.rs | 8 +++++- .../tabs/tracking_tab/tracking_signals_tab.rs | 27 ++++++++++++++++++- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/console_backend/src/process_messages.rs b/console_backend/src/process_messages.rs index e51560459..f4a3df10d 100644 --- a/console_backend/src/process_messages.rs +++ b/console_backend/src/process_messages.rs @@ -31,7 +31,7 @@ use sbp::{ observation::{MsgObsDepA, MsgSvAzEl}, orientation::{MsgAngularRate, MsgBaselineHeading, MsgOrientEuler}, piksi::{MsgDeviceMonitor, MsgNetworkStateResp, MsgThreadState}, - system::{MsgHeartbeat, MsgInsStatus, MsgInsUpdates, MsgStartup}, + system::{MsgHeartbeat, MsgInsStatus, MsgInsUpdates, MsgStartup, MsgStatusReport}, tracking::{MsgMeasurementState, MsgTrackingState}, }, }; @@ -321,6 +321,12 @@ fn register_events(link: sbp::link::Link) { .unwrap() .handle_specan(msg); }); + link.register(|tabs: &Tabs, msg: MsgStatusReport| { + tabs.tracking_signals + .lock() + .unwrap() + .handle_msg_status_report(msg); + }); link.register(|tabs: &Tabs, msg: MsgSvAzEl| { tabs.tracking_sky_plot.lock().unwrap().handle_sv_az_el(msg); }); diff --git a/console_backend/src/tabs/tracking_tab/tracking_signals_tab.rs b/console_backend/src/tabs/tracking_tab/tracking_signals_tab.rs index c9c2d2e57..91040205b 100644 --- a/console_backend/src/tabs/tracking_tab/tracking_signals_tab.rs +++ b/console_backend/src/tabs/tracking_tab/tracking_signals_tab.rs @@ -24,7 +24,10 @@ use std::{ use capnp::message::Builder; use log::warn; -use sbp::messages::tracking::{MeasurementState, TrackingChannelState}; +use sbp::messages::{ + system::{msg_status_report::System, MsgStatusReport}, + tracking::{MeasurementState, TrackingChannelState}, +}; use crate::client_sender::BoxedClientSender; use crate::constants::{ @@ -43,6 +46,8 @@ use crate::utils::{serialize_capnproto_builder, signal_key_color, signal_key_lab pub struct TrackingSignalsTab { /// Whether a MsgTrackingState has been received. If so block Obs Msgs from being processed. pub at_least_one_track_received: bool, + /// Whether to disable processing of MsgTrackingState and MsgMeasurementState messages. + pub disable_track: bool, pub check_labels: [&'static str; 13], pub client_sender: BoxedClientSender, @@ -85,6 +90,7 @@ impl TrackingSignalsTab { pub fn new(shared_state: SharedState, client_sender: BoxedClientSender) -> TrackingSignalsTab { TrackingSignalsTab { at_least_one_track_received: false, + disable_track: false, check_labels: [ GPS_L1CA_STR, GPS_L2CM_STR, @@ -221,6 +227,9 @@ impl TrackingSignalsTab { /// /// - `states`: All states contained within the measurementstate message. pub fn handle_msg_measurement_state(&mut self, states: Vec) { + if self.disable_track { + return; + } self.at_least_one_track_received = true; let mut codes_that_came: Vec<(SignalCodes, i16)> = Vec::new(); let t = (Instant::now()).duration_since(self.t_init).as_secs_f64(); @@ -258,12 +267,28 @@ impl TrackingSignalsTab { self.update_plot(); self.send_data(); } + + /// Handle MsgStatusReport message states. + /// + /// # Parameters: + /// + /// - `msg`: The full SBP message cast as an MsgStatusReport variant. + pub fn handle_msg_status_report(&mut self, msg: MsgStatusReport) { + if let Ok(system) = msg.system() { + self.disable_track = system == System::PrecisionGnssModule; + self.at_least_one_track_received = false; + } + } + /// Handle MsgTrackingState message states. /// /// # Parameters: /// /// - `states`: All states contained within the trackingstate message. pub fn handle_msg_tracking_state(&mut self, states: Vec) { + if self.disable_track { + return; + } self.at_least_one_track_received = true; let mut codes_that_came: Vec<(SignalCodes, i16)> = Vec::new(); let t = (Instant::now()).duration_since(self.t_init).as_secs_f64();