From 0a549c819219409dcc615a896e3d2368897b55b6 Mon Sep 17 00:00:00 2001 From: furrtek Date: Tue, 23 Aug 2016 11:27:10 +0200 Subject: [PATCH] Manual frequency input in POCSAG RX Changed firmware file name --- .gitignore | 2 +- firmware/CMakeLists.txt | 2 +- firmware/application/main.cpp | 1 + firmware/application/pocsag_app.cpp | 98 ++++++++++++++---- firmware/application/pocsag_app.hpp | 19 ++-- ...h1-firmware.bin => portapack-h1-havoc.bin} | Bin 765996 -> 766652 bytes 6 files changed, 93 insertions(+), 29 deletions(-) rename firmware/{portapack-h1-firmware.bin => portapack-h1-havoc.bin} (87%) diff --git a/.gitignore b/.gitignore index 2d7331e0..9ef38749 100644 --- a/.gitignore +++ b/.gitignore @@ -33,8 +33,8 @@ *.exe *.out *.app -*.bin *.img +/firmware/baseband/*.bin # Other compiler/linker outputs *.cmake diff --git a/firmware/CMakeLists.txt b/firmware/CMakeLists.txt index 9a7bb2d1..d035513a 100644 --- a/firmware/CMakeLists.txt +++ b/firmware/CMakeLists.txt @@ -36,7 +36,7 @@ set(STRIP_DFU ${PROJECT_SOURCE_DIR}/tools/strip_dfu.py) set(MAKE_SPI_IMAGE ${PROJECT_SOURCE_DIR}/tools/make_spi_image.py) set(MAKE_IMAGE_CHUNK ${PROJECT_SOURCE_DIR}/tools/make_image_chunk.py) -set(FIRMWARE_NAME portapack-h1-firmware) +set(FIRMWARE_NAME portapack-h1-havoc) set(FIRMWARE_FILENAME ${FIRMWARE_NAME}.bin) add_subdirectory(application) diff --git a/firmware/application/main.cpp b/firmware/application/main.cpp index 16afe649..23a3181d 100755 --- a/firmware/application/main.cpp +++ b/firmware/application/main.cpp @@ -25,6 +25,7 @@ //BUG: No audio in about when shown second time +//TODO: Make frequency set button in afsksetup accept GHz frequencies (longer label buffer) //TODO: Check AFSK transmit end, skips last bits ? //TODO: Use msgpack for settings, lists... on sd card //TODO: Frequency manager diff --git a/firmware/application/pocsag_app.cpp b/firmware/application/pocsag_app.cpp index 940b89cd..11b94c61 100644 --- a/firmware/application/pocsag_app.cpp +++ b/firmware/application/pocsag_app.cpp @@ -25,6 +25,7 @@ #include "baseband_api.hpp" #include "portapack.hpp" +#include "portapack_persistent_memory.hpp" using namespace portapack; #include "string_format.hpp" @@ -50,8 +51,8 @@ static std::string signal_rate_str(SignalRate signal_rate) { } /* namespace pocsag */ -void POCSAGLogger::on_packet(const pocsag::POCSAGPacket& packet) { - std::string entry = pocsag::format::signal_rate_str(packet.signal_rate()) + " "; +void POCSAGLogger::on_packet(const pocsag::POCSAGPacket& packet, const uint32_t frequency) { + std::string entry = pocsag::format::signal_rate_str(packet.signal_rate()) + " " + to_string_dec_uint(frequency) + "Hz "; for (size_t c = 0; c < 16; c++) entry += to_string_hex(packet[c], 8) + " "; @@ -60,17 +61,35 @@ void POCSAGLogger::on_packet(const pocsag::POCSAGPacket& packet) { namespace ui { +void POCSAGAppView::update_freq(rf::Frequency f) { + char finalstr[10] = {0}; + + options_freq.set_selected_index(0); + set_target_frequency(f); + + portapack::persistent_memory::set_tuned_frequency(f); // Maybe not ? + + auto mhz = to_string_dec_int(f / 1000000, 3); + auto hz100 = to_string_dec_int((f / 100) % 10000, 4, '0'); + + strcat(finalstr, mhz.c_str()); + strcat(finalstr, "."); + strcat(finalstr, hz100.c_str()); + + this->button_setfreq.set_text(finalstr); +} + POCSAGAppView::POCSAGAppView(NavigationView& nav) { baseband::run_image(portapack::spi_flash::image_tag_pocsag); add_children({ { &rssi, &channel, - &options_band, + &options_freq, + &button_setfreq, &field_rf_amp, &field_lna, &field_vga, - //&text_debug, &console } }); @@ -85,10 +104,17 @@ POCSAGAppView::POCSAGAppView(NavigationView& nav) { 1, }); - options_band.on_change = [this](size_t, OptionsField::value_t v) { + options_freq.on_change = [this](size_t, OptionsField::value_t v) { this->on_band_changed(v); }; - options_band.set_by_value(target_frequency()); + options_freq.set_by_value(target_frequency()); + + button_setfreq.on_select = [this,&nav](Button&) { + auto new_view = nav.push(target_frequency_); + new_view->on_changed = [this](rf::Frequency f) { + update_freq(f); + }; + }; logger = std::make_unique(); if( logger ) { @@ -104,7 +130,7 @@ POCSAGAppView::~POCSAGAppView() { } void POCSAGAppView::focus() { - options_band.focus(); + options_freq.focus(); } void POCSAGAppView::set_parent_rect(const Rect new_parent_rect) { @@ -114,18 +140,53 @@ void POCSAGAppView::set_parent_rect(const Rect new_parent_rect) { void POCSAGAppView::on_packet(const POCSAGPacketMessage * message) { bool eom = false; uint32_t codeword; + std::string alphanum_text = ""; + std::string output_text = ""; + char ascii_char; if( logger ) { - logger->on_packet(message->packet); + logger->on_packet(message->packet, target_frequency()); } - for (size_t c = 0; c < 16; c++) { - codeword = message->packet[c]; + for (size_t i = 0; i < 16; i++) { + codeword = message->packet[i]; if (codeword & 0x80000000) { // Message - console.writeln("Message !"); + ascii_data |= ((codeword >> 11) & 0xFFFFF); // 20 bits + ascii_idx += 20; + // AAAAAAABBBBBBBCCCCCC C + // 20 -> 13 -> 6 + // CCCCCC CDDDDDDDEEEEEEEFFFFF FF + // 26 -> 19 -> 12 -> 5 + // FFFFF FFGGGGGGGHHHHHHHIIII III + // 25 -> 18 -> 11 -> 4 + // IIII IIIJJJJJJJKKKKKKKLLL LLLL + // 24 -> 17 -> 10 -> 3 + // LLL LLLLMMMMMMMNNNNNNNOO OOOOO + // 23 -> 16 -> 9 -> 2 + // OO OOOOOPPPPPPPQQQQQQQR RRRRRR + // 22 -> 15 -> 8 -> 1 + // R RRRRRRSSSSSSSTTTTTTT UUUUUUU + // 21 -> 14 -> 7 -> 0 + + while (ascii_idx >= 7) { + ascii_idx -= 7; + ascii_char = (ascii_data >> ascii_idx) & 0x7F; + alphanum_text += ascii_char; + } + ascii_data = ascii_data << 20; + + // Todo: same code in ui_lcr, make function in string_format ! + for(const auto c : alphanum_text) { + if ((c < 32) || (c > 126)) + output_text += "[" + to_string_dec_uint(c) + "]"; + else + output_text += c; + } + + console.writeln(output_text); } else { // Address if (codeword == POCSAG_IDLE) { @@ -137,19 +198,18 @@ void POCSAGAppView::on_packet(const POCSAGPacketMessage * message) { } } - if (eom) - console.writeln("Address:" + to_string_hex(address, 6) + " Function:" + to_string_dec_uint(function)); - //console.writeln("EOM"); - //console.writeln(to_string_hex(message->packet[0], 8) + "/"+ to_string_hex(message->packet[1], 8)); - - if (eom) + if (eom) { + console.writeln("ADDR:" + to_string_hex(address, 6) + " F:" + to_string_dec_uint(function) + " "); + ascii_idx = 0; + ascii_data = 0; batch_cnt = 0; - else + } else { batch_cnt++; + } } void POCSAGAppView::on_band_changed(const uint32_t new_band_frequency) { - set_target_frequency(new_band_frequency); + if (new_band_frequency) set_target_frequency(new_band_frequency); } void POCSAGAppView::set_target_frequency(const uint32_t new_value) { diff --git a/firmware/application/pocsag_app.hpp b/firmware/application/pocsag_app.hpp index dc2e399a..dea54ba6 100644 --- a/firmware/application/pocsag_app.hpp +++ b/firmware/application/pocsag_app.hpp @@ -41,7 +41,7 @@ public: return log_file.append(filename); } - void on_packet(const pocsag::POCSAGPacket& packet); + void on_packet(const pocsag::POCSAGPacket& packet, const uint32_t frequency); private: LogFile log_file; @@ -69,6 +69,7 @@ private: uint32_t batch_cnt = 0; uint32_t address, function; + uint32_t ascii_data, ascii_idx; MessageHandlerRegistration message_handler_packet { Message::ID::POCSAGPacket, @@ -88,10 +89,11 @@ private: { 21 * 8, 5, 6 * 8, 4 }, }; - OptionsField options_band { + OptionsField options_freq { { 0 * 8, 0 * 16 }, - 7, + 8, { + { "Entered", 0 }, { "FR .025", 466025000 }, { "FR .050", 466050000 }, { "FR .075", 466075000 }, @@ -100,14 +102,13 @@ private: { "FR .231", 466231250 } } }; - - Text text_debug { - { 0, 40, 240, 16 }, - "Debug..." + Button button_setfreq { + { 0, 20, 12 * 8, 20 }, + "---.----M" }; Console console { - { 0, 32, 240, 272 } + { 0, 48, 240, 256 } }; RFAmpField field_rf_amp { @@ -125,6 +126,8 @@ private: std::unique_ptr logger; uint32_t target_frequency_ = initial_target_frequency; + + void update_freq(rf::Frequency f); void on_packet(const POCSAGPacketMessage * message); void on_show_list(); diff --git a/firmware/portapack-h1-firmware.bin b/firmware/portapack-h1-havoc.bin similarity index 87% rename from firmware/portapack-h1-firmware.bin rename to firmware/portapack-h1-havoc.bin index d257526b34617bdaf2fef61117d3451d85f286f8..56ef9cbd3f5cfc175255e16faa6ea3a6442fe279 100644 GIT binary patch delta 31969 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 Olc0X%9+dzc!T$pv)y@0> delta 31432 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 mt+*l!>!`=u8=xfu7uH*^