Skip to content

Commit 9c706ea

Browse files
Support PGM in tracking signals tab[DIP-64]
1 parent 1aebe7b commit 9c706ea

File tree

2 files changed

+33
-2
lines changed

2 files changed

+33
-2
lines changed

console_backend/src/process_messages.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ use sbp::{
3131
observation::{MsgObsDepA, MsgSvAzEl},
3232
orientation::{MsgAngularRate, MsgBaselineHeading, MsgOrientEuler},
3333
piksi::{MsgDeviceMonitor, MsgNetworkStateResp, MsgThreadState},
34-
system::{MsgHeartbeat, MsgInsStatus, MsgInsUpdates, MsgStartup},
34+
system::{MsgHeartbeat, MsgInsStatus, MsgInsUpdates, MsgStartup, MsgStatusReport},
3535
tracking::{MsgMeasurementState, MsgTrackingState},
3636
},
3737
};
@@ -321,6 +321,12 @@ fn register_events(link: sbp::link::Link<Tabs>) {
321321
.unwrap()
322322
.handle_specan(msg);
323323
});
324+
link.register(|tabs: &Tabs, msg: MsgStatusReport| {
325+
tabs.tracking_signals
326+
.lock()
327+
.unwrap()
328+
.handle_msg_status_report(msg);
329+
});
324330
link.register(|tabs: &Tabs, msg: MsgSvAzEl| {
325331
tabs.tracking_sky_plot.lock().unwrap().handle_sv_az_el(msg);
326332
});

console_backend/src/tabs/tracking_tab/tracking_signals_tab.rs

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,10 @@ use std::{
2424

2525
use capnp::message::Builder;
2626
use log::warn;
27-
use sbp::messages::tracking::{MeasurementState, TrackingChannelState};
27+
use sbp::messages::{
28+
system::{msg_status_report::System, MsgStatusReport},
29+
tracking::{MeasurementState, TrackingChannelState},
30+
};
2831

2932
use crate::client_sender::BoxedClientSender;
3033
use crate::constants::{
@@ -43,6 +46,8 @@ use crate::utils::{serialize_capnproto_builder, signal_key_color, signal_key_lab
4346
pub struct TrackingSignalsTab {
4447
/// Whether a MsgTrackingState has been received. If so block Obs Msgs from being processed.
4548
pub at_least_one_track_received: bool,
49+
/// Whether to disable processing of MsgTrackingState and MsgMeasurementState messages.
50+
pub disable_track: bool,
4651

4752
pub check_labels: [&'static str; 13],
4853
pub client_sender: BoxedClientSender,
@@ -85,6 +90,7 @@ impl TrackingSignalsTab {
8590
pub fn new(shared_state: SharedState, client_sender: BoxedClientSender) -> TrackingSignalsTab {
8691
TrackingSignalsTab {
8792
at_least_one_track_received: false,
93+
disable_track: false,
8894
check_labels: [
8995
GPS_L1CA_STR,
9096
GPS_L2CM_STR,
@@ -221,6 +227,9 @@ impl TrackingSignalsTab {
221227
///
222228
/// - `states`: All states contained within the measurementstate message.
223229
pub fn handle_msg_measurement_state(&mut self, states: Vec<MeasurementState>) {
230+
if self.disable_track {
231+
return;
232+
}
224233
self.at_least_one_track_received = true;
225234
let mut codes_that_came: Vec<(SignalCodes, i16)> = Vec::new();
226235
let t = (Instant::now()).duration_since(self.t_init).as_secs_f64();
@@ -258,12 +267,28 @@ impl TrackingSignalsTab {
258267
self.update_plot();
259268
self.send_data();
260269
}
270+
271+
/// Handle MsgStatusReport message states.
272+
///
273+
/// # Parameters:
274+
///
275+
/// - `msg`: The full SBP message cast as an MsgStatusReport variant.
276+
pub fn handle_msg_status_report(&mut self, msg: MsgStatusReport) {
277+
if let Ok(system) = msg.system() {
278+
self.disable_track = system == System::PrecisionGnssModule;
279+
self.at_least_one_track_received = false;
280+
}
281+
}
282+
261283
/// Handle MsgTrackingState message states.
262284
///
263285
/// # Parameters:
264286
///
265287
/// - `states`: All states contained within the trackingstate message.
266288
pub fn handle_msg_tracking_state(&mut self, states: Vec<TrackingChannelState>) {
289+
if self.disable_track {
290+
return;
291+
}
267292
self.at_least_one_track_received = true;
268293
let mut codes_that_came: Vec<(SignalCodes, i16)> = Vec::new();
269294
let t = (Instant::now()).duration_since(self.t_init).as_secs_f64();

0 commit comments

Comments
 (0)