Skip to content

Commit 31f6ea8

Browse files
Update to reflect new GpsTime changes. (#56)
* Update to reflect new GpsTime changes. * Respond to review requests.
1 parent 80108d5 commit 31f6ea8

File tree

7 files changed

+40
-105
lines changed

7 files changed

+40
-105
lines changed

Cargo.lock

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

console_backend/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ chrono = { version = "0.4", features = ["serde"] }
1717
csv = "1"
1818
paste = "1"
1919
pyo3 = { version = "0.13", features = ["extension-module"] }
20-
sbp = { git = "https://github.com/swift-nav/libsbp.git", rev = "983e98b17b89dc2c688ef201703978535c6b86af", features = ["swiftnav-rs"]}
20+
sbp = { git = "https://github.com/swift-nav/libsbp.git", rev = "629974666b1aa5fdab9fdbd517e180a2aee3809b", features = ["swiftnav-rs"]}
2121
serde = { version = "1.0.123", features = ["derive"] }
2222
tempfile = "3.2.0"
2323
ordered-float = "2.0"

console_backend/benches/cpu_benches.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#![allow(unused_imports)]
22
use criterion::{criterion_group, criterion_main, Criterion};
33
use glob::glob;
4+
use sbp::sbp_tools::SBPTools;
45
use std::{
56
fs,
67
path::Path,
@@ -55,7 +56,9 @@ fn run_process_messages(file_in_name: &str, failure: bool) {
5556
if failure {
5657
thread::sleep(time::Duration::from_millis(FAILURE_CASE_SLEEP_MILLIS));
5758
}
58-
let messages = sbp::iter_messages(Box::new(fs::File::open(file_in_name).unwrap()));
59+
let messages = sbp::iter_messages(Box::new(fs::File::open(file_in_name).unwrap()))
60+
.log_errors(log::Level::Debug)
61+
.with_rover_time();
5962
let shared_state = SharedState::new();
6063
let client_send = ClientSender {
6164
inner: client_send_,

console_backend/src/main_tab.rs

Lines changed: 3 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use log::debug;
2-
use sbp::messages::GpsTime;
2+
use sbp::time::GpsTime;
33
use std::{result::Result, thread::sleep, time::Instant};
44

55
use crate::observation_tab::ObservationTab;
@@ -37,25 +37,8 @@ impl<'a, S: MessageSender> MainTab<'a, S> {
3737
/// # Parameters
3838
/// - `gps_time`: The GpsTime corresponding to a message.
3939
pub fn realtime_delay<T>(&mut self, gps_time: Option<Result<GpsTime, T>>) {
40-
if let Some(Ok(mut g_time)) = gps_time {
41-
if let Some(mut l_time) = self.last_gps_time {
42-
let gps_time_tow = g_time.tow();
43-
let gps_time_week = g_time.wn();
44-
let last_gps_time_tow = l_time.tow();
45-
let last_gps_time_week = l_time.wn();
46-
47-
if gps_time_week != 0 && last_gps_time_week == 0 {
48-
let l_time_ = GpsTime::new(gps_time_week, last_gps_time_tow);
49-
if let Ok(l_time_ok) = l_time_ {
50-
l_time = l_time_ok;
51-
}
52-
} else if gps_time_week == 0 && last_gps_time_week != 0 {
53-
let g_time_ = GpsTime::new(last_gps_time_week, gps_time_tow);
54-
if let Ok(g_time_ok) = g_time_ {
55-
g_time = g_time_ok;
56-
}
57-
}
58-
40+
if let Some(Ok(g_time)) = gps_time {
41+
if let Some(l_time) = self.last_gps_time {
5942
if l_time < g_time {
6043
let diff = g_time - l_time;
6144
let elapsed = self.last_gps_update.elapsed();
@@ -122,46 +105,6 @@ mod tests {
122105
> Duration::from_secs_f64(gps_s.later_gps_tow_good - gps_s.early_gps_tow_good)
123106
);
124107
}
125-
#[test]
126-
fn realtime_delay_bad_last_test() {
127-
let shared_state = SharedState::new();
128-
let (client_send_, _) = mpsc::channel::<Vec<u8>>();
129-
let client_send = ClientSender {
130-
inner: client_send_,
131-
};
132-
let gps_s = GpsTimeTests::new();
133-
let mut main = MainTab::new(shared_state, client_send);
134-
let early_gps_time_good = GpsTime::new(gps_s.zero_week, gps_s.early_gps_tow_good).unwrap();
135-
let later_gps_time_good = GpsTime::new(gps_s.good_week, gps_s.later_gps_tow_good);
136-
main.last_gps_time = Some(early_gps_time_good);
137-
let now = Instant::now();
138-
main.last_gps_update = Instant::now();
139-
main.realtime_delay(Some(later_gps_time_good));
140-
assert!(
141-
now.elapsed()
142-
> Duration::from_secs_f64(gps_s.later_gps_tow_good - gps_s.early_gps_tow_good)
143-
);
144-
}
145-
#[test]
146-
fn realtime_delay_bad_current_test() {
147-
let shared_state = SharedState::new();
148-
let (client_send_, _) = mpsc::channel::<Vec<u8>>();
149-
let client_send = ClientSender {
150-
inner: client_send_,
151-
};
152-
let gps_s = GpsTimeTests::new();
153-
let mut main = MainTab::new(shared_state, client_send);
154-
let early_gps_time_good = GpsTime::new(gps_s.good_week, gps_s.early_gps_tow_good).unwrap();
155-
let later_gps_time_good = GpsTime::new(gps_s.zero_week, gps_s.later_gps_tow_good);
156-
main.last_gps_time = Some(early_gps_time_good);
157-
let now = Instant::now();
158-
main.last_gps_update = Instant::now();
159-
main.realtime_delay(Some(later_gps_time_good));
160-
assert!(
161-
now.elapsed()
162-
> Duration::from_secs_f64(gps_s.later_gps_tow_good - gps_s.early_gps_tow_good)
163-
);
164-
}
165108

166109
#[test]
167110
fn realtime_delay_no_last_test() {

console_backend/src/process_messages.rs

Lines changed: 7 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,23 @@
11
use log::debug;
2-
use sbp::messages::{SBPMessage, SBP};
2+
use sbp::{
3+
messages::{SBPMessage, SBP},
4+
time::GpsTime,
5+
};
36
use std::{thread::sleep, time::Duration};
47

58
use crate::constants::PAUSE_LOOP_SLEEP_DURATION_MS;
69
use crate::log_panel::handle_log_msg;
710
use crate::main_tab::*;
811
use crate::types::*;
912

10-
/// SBP messages preprocessor to filter Result Ok and log Err.
11-
///
12-
/// Taken from ICBINS/src/lib.rs.
13-
///
14-
/// # Parameters:
15-
/// - `messages`: The iterator of messages to process.
16-
///
17-
/// # Returns:
18-
/// - The filtered out Ok messages iterator.
19-
fn strip_errors_iter(
20-
log_errors: bool,
21-
messages: impl Iterator<Item = sbp::Result<SBP>>,
22-
) -> impl Iterator<Item = SBP> {
23-
messages
24-
.inspect(move |msg| {
25-
if let Err(e) = msg {
26-
if log_errors {
27-
eprintln!("error reading message: {}", e);
28-
}
29-
}
30-
})
31-
.filter_map(sbp::Result::ok)
32-
}
33-
pub fn process_messages<S: MessageSender>(
34-
messages: impl Iterator<Item = sbp::Result<SBP>>,
13+
pub fn process_messages<S: MessageSender, T>(
14+
messages: impl Iterator<Item = (SBP, Option<std::result::Result<GpsTime, T>>)>,
3515
shared_state: SharedState,
3616
client_send: S,
3717
realtime_delay: RealtimeDelay,
3818
) {
3919
let mut main = MainTab::new(shared_state.clone(), client_send);
40-
let messages = strip_errors_iter(true, messages);
41-
for message in messages {
20+
for (message, gps_time) in messages {
4221
if !shared_state.is_running() {
4322
break;
4423
}
@@ -50,7 +29,6 @@ pub fn process_messages<S: MessageSender>(
5029
sleep(Duration::from_millis(PAUSE_LOOP_SLEEP_DURATION_MS));
5130
}
5231
}
53-
let gps_time = message.gps_time();
5432
let msg_name = message.get_message_name();
5533
let mut attempt_delay = true;
5634
match message {

console_backend/src/types.rs

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,15 @@ use crate::utils::{close_frontend, ms_to_sec, set_connected_frontend};
77
use chrono::{DateTime, Utc};
88
use log::{info, warn};
99
use ordered_float::OrderedFloat;
10-
use sbp::messages::{
11-
navigation::{MsgDops, MsgDopsDepA, MsgPosLLH, MsgPosLLHDepA, MsgVelNED, MsgVelNEDDepA},
12-
observation::{
13-
MsgObs, MsgObsDepB, MsgObsDepC, MsgOsr, PackedObsContent, PackedObsContentDepB,
14-
PackedObsContentDepC, PackedOsrContent,
10+
use sbp::{
11+
messages::{
12+
navigation::{MsgDops, MsgDopsDepA, MsgPosLLH, MsgPosLLHDepA, MsgVelNED, MsgVelNEDDepA},
13+
observation::{
14+
MsgObs, MsgObsDepB, MsgObsDepC, MsgOsr, PackedObsContent, PackedObsContentDepB,
15+
PackedObsContentDepC, PackedOsrContent,
16+
},
1517
},
18+
sbp_tools::SBPTools,
1619
};
1720
use serde::Serialize;
1821
use serialport::FlowControl as SPFlowControl;
@@ -147,7 +150,9 @@ impl ServerState {
147150
if let Ok(stream) = fs::File::open(filename) {
148151
println!("Opened file successfully!");
149152
let shared_state_clone_ = shared_state.clone();
150-
let messages = sbp::iter_messages(stream);
153+
let messages = sbp::iter_messages(stream)
154+
.log_errors(log::Level::Debug)
155+
.with_rover_time();
151156
process_messages(
152157
messages,
153158
shared_state_clone_,
@@ -183,7 +188,9 @@ impl ServerState {
183188
let handle = thread::spawn(move || {
184189
if let Ok(stream) = TcpStream::connect(host_port.clone()) {
185190
info!("Connected to the server {}!", host_port);
186-
let messages = sbp::iter_messages(stream);
191+
let messages = sbp::iter_messages(stream)
192+
.log_errors(log::Level::Debug)
193+
.with_rover_time();
187194
process_messages(
188195
messages,
189196
shared_state_clone,
@@ -226,7 +233,9 @@ impl ServerState {
226233
{
227234
Ok(port) => {
228235
println!("Connected to serialport {}.", device);
229-
let messages = sbp::iter_messages(port);
236+
let messages = sbp::iter_messages(port)
237+
.log_errors(log::Level::Debug)
238+
.with_rover_time();
230239
process_messages(
231240
messages,
232241
shared_state_clone,

console_backend/tests/mem_benches.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
mod mem_bench_impl {
33

44
use ndarray::{ArrayView, Axis, Dim};
5-
5+
use sbp::sbp_tools::SBPTools;
66
use std::{
77
error::Error,
88
fs,
@@ -95,7 +95,9 @@ mod mem_bench_impl {
9595
.send(client_recv)
9696
.expect("sending client recv handle should succeed");
9797

98-
let messages = sbp::iter_messages(Box::new(fs::File::open(BENCH_FILEPATH).unwrap()));
98+
let messages = sbp::iter_messages(Box::new(fs::File::open(BENCH_FILEPATH).unwrap()))
99+
.log_errors(log::Level::Debug)
100+
.with_rover_time();
99101
let client_send = ClientSender {
100102
inner: client_send_,
101103
};

0 commit comments

Comments
 (0)