From cf887189b3c5ed938bf269989bd9ad83f971b5b4 Mon Sep 17 00:00:00 2001 From: Oliver Jowett Date: Thu, 6 Oct 2022 15:41:46 +0800 Subject: [PATCH 1/3] Fix command-line processing of p/P option. Update docs to describe the p/P options. Fixes #4 (better late than never..) --- README.md | 1 + splitter_main.cc | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 821d7a9..81898fd 100644 --- a/README.md +++ b/README.md @@ -92,6 +92,7 @@ The available settings are: * i/I: FEC enabled / FEC disabled * j/J: Mode A/C disabled / Mode A/C enabled * k/K: no special filtering / do not send DF0/4/5 (only in Beast-Classic mode) + * p/P: disable/enable position-message reporting (only in Radarcape mode) The h/H setting is understood but ignored; hardware flow control is always used. diff --git a/splitter_main.cc b/splitter_main.cc index a4ec657..c4c539d 100644 --- a/splitter_main.cc +++ b/splitter_main.cc @@ -111,7 +111,7 @@ namespace beast { po::validators::check_first_occurrence(v); const std::string &s = po::validators::get_single_string(values); - static const boost::regex r("[cdefghijbrvCDEFGHIJBRV]*"); + static const boost::regex r("[cdefghijbrvpCDEFGHIJBRVP]*"); if (boost::regex_match(s, r)) { v = boost::any(beast::Settings(s)); } else { From 45760bbf700b9a5c8efce866298eabe7e15f8444 Mon Sep 17 00:00:00 2001 From: Oliver Jowett Date: Thu, 6 Oct 2022 15:48:10 +0800 Subject: [PATCH 2/3] More p/P fixes --- beast_settings.cc | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/beast_settings.cc b/beast_settings.cc index 49b779c..c8bd22c 100644 --- a/beast_settings.cc +++ b/beast_settings.cc @@ -118,6 +118,12 @@ namespace beast { case 'V': verbatim = true; break; + case 'p': + position_enable = false; + break; + case 'P': + position_enable = true; + break; } } @@ -141,6 +147,7 @@ namespace beast { s.filter_0_4_5 |= other.filter_0_4_5; s.radarcape |= other.radarcape; s.verbatim |= other.verbatim; + s.position_enable |= other.position_enable; return s; } @@ -209,6 +216,7 @@ namespace beast { add_setting(msg, fec_disable); add_setting(msg, modeac_enable); add_setting(msg, verbatim); + // p/P is not a real setting return msg; } @@ -226,6 +234,7 @@ namespace beast { s.radarcape = (bool)radarcape; s.filter_0_4_5 = (bool)filter_0_4_5; s.verbatim = (bool)verbatim; + s.position_enable = (bool)position_enable; return s; } @@ -233,5 +242,5 @@ namespace beast { return radarcape == other.radarcape && binary_format == other.binary_format && filter_11_17_18 == other.filter_11_17_18 && avrmlat == other.avrmlat && crc_disable == other.crc_disable && gps_timestamps == other.gps_timestamps && rts_handshake == other.rts_handshake && fec_disable == other.fec_disable && modeac_enable == other.modeac_enable && filter_0_4_5 == other.filter_0_4_5 && position_enable == other.position_enable && verbatim == other.verbatim; } - std::ostream &operator<<(std::ostream &os, const Settings &s) { return (os << s.radarcape << s.binary_format << s.filter_11_17_18 << s.avrmlat << s.crc_disable << s.gps_timestamps << s.rts_handshake << s.fec_disable << s.modeac_enable << s.filter_0_4_5 << s.verbatim); } + std::ostream &operator<<(std::ostream &os, const Settings &s) { return (os << s.radarcape << s.binary_format << s.filter_11_17_18 << s.avrmlat << s.crc_disable << s.gps_timestamps << s.rts_handshake << s.fec_disable << s.modeac_enable << s.filter_0_4_5 << s.verbatim << s.position_enable); } }; // namespace beast From f71f645653044f18f89882cac0fe689f82fec3fe Mon Sep 17 00:00:00 2001 From: Oliver Jowett Date: Thu, 6 Oct 2022 15:53:07 +0800 Subject: [PATCH 3/3] More different p/P fixes --- beast_settings.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/beast_settings.cc b/beast_settings.cc index c8bd22c..ecd1241 100644 --- a/beast_settings.cc +++ b/beast_settings.cc @@ -32,7 +32,7 @@ namespace beast { Settings::Settings(std::uint8_t b) : radarcape(true), binary_format((b & 0x01) != 0), filter_11_17_18((b & 0x02) != 0), avrmlat((b & 0x04) != 0), crc_disable((b & 0x08) != 0), gps_timestamps((b & 0x10) != 0), rts_handshake((b & 0x20) != 0), fec_disable((b & 0x40) != 0), modeac_enable((b & 0x80) != 0) {} - Settings::Settings(const modes::Filter &filter) : filter_11_17_18(true), crc_disable(filter.receive_bad_crc), gps_timestamps(filter.receive_gps_timestamps), fec_disable(!filter.receive_fec), modeac_enable(filter.receive_modeac), filter_0_4_5(!filter.receive_df[0] && !filter.receive_df[4] && filter.receive_df[5]) { + Settings::Settings(const modes::Filter &filter) : filter_11_17_18(true), crc_disable(filter.receive_bad_crc), gps_timestamps(filter.receive_gps_timestamps), fec_disable(!filter.receive_fec), modeac_enable(filter.receive_modeac), filter_0_4_5(!filter.receive_df[0] && !filter.receive_df[4] && filter.receive_df[5]), position_enable(filter.receive_positions) { for (auto i = 0; i < 32; ++i) { if (filter.receive_df[i] && i != 11 && i != 17 && i != 18) { filter_11_17_18 = false; @@ -130,7 +130,9 @@ namespace beast { // ensure settings are selfconsistent if (radarcape.off() && !gps_timestamps.dontcare()) gps_timestamps = false; - else if (radarcape.on() && !filter_0_4_5.dontcare()) + if (radarcape.off() && !position_enable.dontcare()) + position_enable = false; + if (radarcape.on() && !filter_0_4_5.dontcare()) filter_0_4_5 = false; }