Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion console_backend/src/process_messages.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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},
},
};
Expand Down Expand Up @@ -321,6 +321,12 @@ fn register_events(link: sbp::link::Link<Tabs>) {
.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);
});
Expand Down
27 changes: 26 additions & 1 deletion console_backend/src/tabs/tracking_tab/tracking_signals_tab.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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::{
Expand All @@ -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,
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -221,6 +227,9 @@ impl TrackingSignalsTab {
///
/// - `states`: All states contained within the measurementstate message.
pub fn handle_msg_measurement_state(&mut self, states: Vec<MeasurementState>) {
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();
Expand Down Expand Up @@ -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<TrackingChannelState>) {
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();
Expand Down