detect_jumps/
detect_jumps.rs1use msf60_utils::MSFUtils;
5
6fn main() {
7 let mut msf = MSFUtils::default();
8 const MSGS: [&str; 2] = [
9 "4 00000000.00000000 0010.0100 0.0100 01.0010 101 10.0000 000.0010 01313330",
10 "4 20000000.00000000 0010.0100 0.0100 01.0010 101 10.0001 000.1000 01313130",
11 ];
12 for msg in MSGS {
13 for m in msg.chars() {
14 match m {
15 '0' => {
16 msf.set_current_bit_a(Some(false));
17 msf.set_current_bit_b(Some(false));
18 }
19 '1' => {
20 msf.set_current_bit_a(Some(true));
21 msf.set_current_bit_b(Some(false));
22 }
23 '2' => {
24 msf.set_current_bit_a(Some(false));
25 msf.set_current_bit_b(Some(true));
26 }
27 '3' => {
28 msf.set_current_bit_a(Some(true));
29 msf.set_current_bit_b(Some(true));
30 }
31 '4' => msf.force_past_new_minute(),
32 '_' => {
33 msf.set_current_bit_a(None);
34 msf.set_current_bit_b(None);
35 }
36 _ => continue,
37 }
39 if msf.end_of_minute_marker_present() {
41 let fm = msf.is_first_minute();
42 msf.decode_time(true, false);
44 let rdt = msf.get_radio_datetime();
45 println!(
46 "Date/time={:?}-{:?}-{:?} {:?}:{:?} {:?} DUT1={:?}",
47 rdt.get_year(),
48 rdt.get_month(),
49 rdt.get_day(),
50 rdt.get_hour(),
51 rdt.get_minute(),
52 rdt.get_weekday(),
53 rdt.get_dut1()
54 );
55 if !fm {
56 println!(
57 "Jumps={} {} {} {} {} {} {}",
58 rdt.get_jump_year(),
59 rdt.get_jump_month(),
60 rdt.get_jump_day(),
61 rdt.get_jump_hour(),
62 rdt.get_jump_minute(),
63 rdt.get_jump_weekday(),
64 rdt.get_jump_dut1()
65 );
66 }
67 msf.force_new_minute();
68 }
69 if !msf.increase_second() {
70 println!("Bad increase_second at second {}", msf.get_second());
71 }
72 }
73 }
74}