diff --git a/.gitignore b/.gitignore index 9ef387496..d75397669 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +/firmware/application/application.bin /CMakeCache.txt /Makefile /firmware/baseband/Makefile diff --git a/firmware/application/pocsag_app.cpp b/firmware/application/pocsag_app.cpp index 11b94c617..d5dd5fa1d 100644 --- a/firmware/application/pocsag_app.cpp +++ b/firmware/application/pocsag_app.cpp @@ -59,6 +59,10 @@ void POCSAGLogger::on_packet(const pocsag::POCSAGPacket& packet, const uint32_t log_file.write_entry(packet.timestamp(), entry); } +void POCSAGLogger::on_decoded(const pocsag::POCSAGPacket& packet, const std::string text) { + log_file.write_entry(packet.timestamp(), text); +} + namespace ui { void POCSAGAppView::update_freq(rf::Frequency f) { @@ -69,7 +73,7 @@ void POCSAGAppView::update_freq(rf::Frequency f) { portapack::persistent_memory::set_tuned_frequency(f); // Maybe not ? - auto mhz = to_string_dec_int(f / 1000000, 3); + auto mhz = to_string_dec_int(f / 1000000, 4); auto hz100 = to_string_dec_int((f / 100) % 10000, 4, '0'); strcat(finalstr, mhz.c_str()); @@ -141,12 +145,10 @@ void POCSAGAppView::on_packet(const POCSAGPacketMessage * message) { bool eom = false; uint32_t codeword; std::string alphanum_text = ""; - std::string output_text = ""; + std::string output_text = "MSG:"; char ascii_char; - if( logger ) { - logger->on_packet(message->packet, target_frequency()); - } + if( logger ) logger->on_packet(message->packet, target_frequency()); for (size_t i = 0; i < 16; i++) { codeword = message->packet[i]; @@ -187,6 +189,9 @@ void POCSAGAppView::on_packet(const POCSAGPacketMessage * message) { } console.writeln(output_text); + + if (logger) logger->on_decoded(message->packet, output_text); + } else { // Address if (codeword == POCSAG_IDLE) { @@ -199,7 +204,11 @@ void POCSAGAppView::on_packet(const POCSAGPacketMessage * message) { } if (eom) { - console.writeln("ADDR:" + to_string_hex(address, 6) + " F:" + to_string_dec_uint(function) + " "); + if (address || function) + console.writeln(to_string_time(message->packet.timestamp()) + " ADDR:" + to_string_hex(address, 6) + " F:" + to_string_dec_uint(function) + " "); + else + console.writeln(to_string_time(message->packet.timestamp()) + " Tone only "); + ascii_idx = 0; ascii_data = 0; batch_cnt = 0; diff --git a/firmware/application/pocsag_app.hpp b/firmware/application/pocsag_app.hpp index dea54ba61..06c650bd9 100644 --- a/firmware/application/pocsag_app.hpp +++ b/firmware/application/pocsag_app.hpp @@ -42,6 +42,7 @@ public: } void on_packet(const pocsag::POCSAGPacket& packet, const uint32_t frequency); + void on_decoded(const pocsag::POCSAGPacket& packet, const std::string text); private: LogFile log_file; @@ -104,7 +105,7 @@ private: }; Button button_setfreq { { 0, 20, 12 * 8, 20 }, - "---.----M" + "----.----" }; Console console { diff --git a/firmware/application/string_format.cpp b/firmware/application/string_format.cpp index 156faaa87..ff4959fb1 100644 --- a/firmware/application/string_format.cpp +++ b/firmware/application/string_format.cpp @@ -121,6 +121,11 @@ std::string to_string_datetime(const rtc::RTC& value) { to_string_dec_uint(value.second(), 2, '0'); } +std::string to_string_time(const rtc::RTC& value) { + return to_string_dec_uint(value.hour(), 2, '0') + ":" + + to_string_dec_uint(value.minute(), 2, '0'); +} + std::string to_string_timestamp(const rtc::RTC& value) { return to_string_dec_uint(value.year(), 4, '0') + to_string_dec_uint(value.month(), 2, '0') + diff --git a/firmware/application/string_format.hpp b/firmware/application/string_format.hpp index 40c591623..011a2f9a6 100644 --- a/firmware/application/string_format.hpp +++ b/firmware/application/string_format.hpp @@ -35,6 +35,7 @@ std::string to_string_dec_int(const int32_t n, const int32_t l = 0, const char f std::string to_string_hex(const uint32_t n, const int32_t l = 0); std::string to_string_datetime(const rtc::RTC& value); +std::string to_string_time(const rtc::RTC& value); std::string to_string_timestamp(const rtc::RTC& value); #endif/*__STRING_FORMAT_H__*/ diff --git a/firmware/application/ui_afsksetup.cpp b/firmware/application/ui_afsksetup.cpp index b6dfa95f5..1cae5ade3 100644 --- a/firmware/application/ui_afsksetup.cpp +++ b/firmware/application/ui_afsksetup.cpp @@ -44,11 +44,11 @@ void AFSKSetupView::focus() { } void AFSKSetupView::update_freq(rf::Frequency f) { - char finalstr[9] = {0}; + char finalstr[10] = {0}; portapack::persistent_memory::set_tuned_frequency(f); - auto mhz = to_string_dec_int(f / 1000000, 3); + auto mhz = to_string_dec_int(f / 1000000, 4); auto hz100 = to_string_dec_int((f / 100) % 10000, 4, '0'); strcat(finalstr, mhz.c_str()); diff --git a/firmware/application/ui_afsksetup.hpp b/firmware/application/ui_afsksetup.hpp index 2d85cf000..b83498197 100644 --- a/firmware/application/ui_afsksetup.hpp +++ b/firmware/application/ui_afsksetup.hpp @@ -47,7 +47,7 @@ private: }; Button button_setfreq { { 8, 48, 104, 32 }, - "---.----M" + "----.----" }; Text text_bps { diff --git a/firmware/portapack-h1-havoc.bin b/firmware/portapack-h1-havoc.bin index 56ef9cbd3..4a4be71a3 100644 Binary files a/firmware/portapack-h1-havoc.bin and b/firmware/portapack-h1-havoc.bin differ