From 28ea2179f4d1001f2665f41d14bcc1599b35dfa1 Mon Sep 17 00:00:00 2001 From: furrtek Date: Thu, 8 Dec 2016 16:13:27 +0100 Subject: [PATCH] Re-enabled closecall even if it's still not working well RDS PSN works again but update issue (UI ?) Moved CTCSS stuff to dedicated file --- firmware/application/CMakeLists.txt | 1 + firmware/application/Makefile | 27 ++++ firmware/application/ctcss.cpp | 76 +++++++++++ firmware/application/ctcss.hpp | 38 ++++++ firmware/application/main.cpp | 6 +- firmware/application/rds.cpp | 46 +------ firmware/application/ui_about.cpp | 2 +- firmware/application/ui_afsksetup.cpp | 2 - firmware/application/ui_afsksetup.hpp | 2 - firmware/application/ui_closecall.cpp | 154 +++++++++-------------- firmware/application/ui_closecall.hpp | 18 +-- firmware/application/ui_navigation.cpp | 2 +- firmware/application/ui_rds.cpp | 5 - firmware/application/ui_rds.hpp | 12 +- firmware/application/ui_soundboard.cpp | 14 ++- firmware/application/ui_soundboard.hpp | 56 +-------- firmware/application/wavfile.cpp | 3 +- firmware/baseband/CMakeLists.txt | 7 ++ firmware/baseband/baseband_closecall.img | Bin 0 -> 10276 bytes firmware/baseband/proc_closecall.cpp | 1 + firmware/baseband/proc_closecall.hpp | 4 + firmware/baseband/proc_rds.cpp | 10 +- firmware/common/spi_image.hpp | 1 + firmware/portapack-h1-havoc.bin | Bin 796812 -> 795700 bytes 24 files changed, 258 insertions(+), 229 deletions(-) create mode 100644 firmware/application/ctcss.cpp create mode 100644 firmware/application/ctcss.hpp create mode 100644 firmware/baseband/baseband_closecall.img diff --git a/firmware/application/CMakeLists.txt b/firmware/application/CMakeLists.txt index 18d1823b5..baa0072e9 100644 --- a/firmware/application/CMakeLists.txt +++ b/firmware/application/CMakeLists.txt @@ -138,6 +138,7 @@ set(CPPSRC adsb.cpp afsk.cpp rds.cpp + ctcss.cpp ${COMMON}/lcd_ili9341.cpp ${COMMON}/ui.cpp ${COMMON}/ui_text.cpp diff --git a/firmware/application/Makefile b/firmware/application/Makefile index aeac8d74f..1be1dcc29 100644 --- a/firmware/application/Makefile +++ b/firmware/application/Makefile @@ -2766,6 +2766,30 @@ cpld_update.cpp.s: cd /home/furrtek/portapack-hackrf && $(MAKE) -f firmware/application/CMakeFiles/application.elf.dir/build.make firmware/application/CMakeFiles/application.elf.dir/cpld_update.cpp.s .PHONY : cpld_update.cpp.s +ctcss.obj: ctcss.cpp.obj +.PHONY : ctcss.obj + +# target to build an object file +ctcss.cpp.obj: + cd /home/furrtek/portapack-hackrf && $(MAKE) -f firmware/application/CMakeFiles/application.elf.dir/build.make firmware/application/CMakeFiles/application.elf.dir/ctcss.cpp.obj +.PHONY : ctcss.cpp.obj + +ctcss.i: ctcss.cpp.i +.PHONY : ctcss.i + +# target to preprocess a source file +ctcss.cpp.i: + cd /home/furrtek/portapack-hackrf && $(MAKE) -f firmware/application/CMakeFiles/application.elf.dir/build.make firmware/application/CMakeFiles/application.elf.dir/ctcss.cpp.i +.PHONY : ctcss.cpp.i + +ctcss.s: ctcss.cpp.s +.PHONY : ctcss.s + +# target to generate assembly for a file +ctcss.cpp.s: + cd /home/furrtek/portapack-hackrf && $(MAKE) -f firmware/application/CMakeFiles/application.elf.dir/build.make firmware/application/CMakeFiles/application.elf.dir/ctcss.cpp.s +.PHONY : ctcss.cpp.s + debounce.obj: debounce.cpp.obj .PHONY : debounce.obj @@ -4762,6 +4786,9 @@ help: @echo "... cpld_update.obj" @echo "... cpld_update.i" @echo "... cpld_update.s" + @echo "... ctcss.obj" + @echo "... ctcss.i" + @echo "... ctcss.s" @echo "... debounce.obj" @echo "... debounce.i" @echo "... debounce.s" diff --git a/firmware/application/ctcss.cpp b/firmware/application/ctcss.cpp new file mode 100644 index 000000000..760e2fe77 --- /dev/null +++ b/firmware/application/ctcss.cpp @@ -0,0 +1,76 @@ +/* + * Copyright (C) 2015 Jared Boone, ShareBrained Technology, Inc. + * Copyright (C) 2016 Furrtek + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#include "ctcss.hpp" + +ctcss_tone ctcss_tones[CTCSS_TONES_NB] = { + { "XZ", 0, 67000 }, + { "WZ", 1, 69400 }, + { "XA", 39, 71900 }, + { "WA", 3, 74400 }, + { "XB", 4, 77000 }, + { "WB", 5, 79700 }, + { "YZ", 6, 82500 }, + { "YA", 7, 85400 }, + { "YB", 8, 88500 }, + { "ZZ", 9, 91500 }, + { "ZA", 10, 94800 }, + { "ZB", 11, 97400 }, + { "1Z", 12, 100000 }, + { "1A", 13, 103500 }, + { "1B", 14, 107200 }, + { "2Z", 15, 110900 }, + { "2Z", 16, 114800 }, + { "2B", 17, 118800 }, + { "3Z", 18, 123000 }, + { "3A", 19, 127300 }, + { "3B", 20, 131800 }, + { "4Z", 21, 136500 }, + { "4A", 22, 141300 }, + { "4B", 23, 146200 }, + { "5Z", 24, 151400 }, + { "5A", 25, 156700 }, + { "--", 40, 159800 }, + { "5B", 26, 162200 }, + { "--", 41, 165500 }, + { "6Z", 27, 167900 }, + { "--", 42, 171300 }, + { "6A", 28, 173800 }, + { "--", 43, 177300 }, + { "6B", 29, 179900 }, + { "--", 44, 183500 }, + { "7Z", 30, 186200 }, + { "--", 45, 189900 }, + { "7A", 31, 192800 }, + { "--", 46, 196600 }, + { "--", 47, 199500 }, + { "M1", 32, 203500 }, + { "8Z", 48, 206500 }, + { "M2", 33, 210700 }, + { "M3", 34, 218100 }, + { "M4", 35, 225700 }, + { "9Z", 49, 229100 }, + { "--", 36, 233600 }, + { "--", 37, 241800 }, + { "--", 38, 250300 }, + { "0Z", 50, 254100 } +}; diff --git a/firmware/application/ctcss.hpp b/firmware/application/ctcss.hpp new file mode 100644 index 000000000..67c9cb631 --- /dev/null +++ b/firmware/application/ctcss.hpp @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2015 Jared Boone, ShareBrained Technology, Inc. + * Copyright (C) 2016 Furrtek + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __CTCSS_H_ +#define __CTCSS_H_ + +#include "ui.hpp" + +#define CTCSS_TONES_NB 50 + +struct ctcss_tone { + char PL_code[3]; + uint16_t num_code; + uint32_t frequency; // Hz * 1000 +}; + +extern ctcss_tone ctcss_tones[CTCSS_TONES_NB]; + +#endif/*__CTCSS_H_*/ diff --git a/firmware/application/main.cpp b/firmware/application/main.cpp index 83976b52a..4951518ea 100755 --- a/firmware/application/main.cpp +++ b/firmware/application/main.cpp @@ -23,12 +23,11 @@ // Bitmaps generated with: // Gimp image > indexed colors (16), then "xxd -i *.bmp" -//TODO: CTCSS file/module +//TEST: RDS //TEST: Imperial in whipcalc //TEST: Numbers //TEST: Jammer -//TEST: RDS -//TEST: Morse coder/beacon +//TODO: Morse coder/beacon //BUG (fixed ?): Soundboard crashes on exit if no wav files on sd card //BUG (fixed ?): No audio in about when shown second time @@ -43,7 +42,6 @@ //TODO: Check AFSK transmit end, skips last bits ? //TODO: Use msgpack for settings, lists... on sd card //TODO: Frequency manager -//TODO: Morse coder //TODO: Replay //Multimon-style stuff: diff --git a/firmware/application/rds.cpp b/firmware/application/rds.cpp index 151ff82b2..e2c37a6be 100644 --- a/firmware/application/rds.cpp +++ b/firmware/application/rds.cpp @@ -73,50 +73,13 @@ void make_2A_group(uint32_t group[], const uint16_t PI_code, const bool TP, cons uint16_t gen_PSN(const char * psname, const uint8_t pty) { uint8_t c; uint32_t group[4][4] = { 0 }; - + // 4 groups with 2 PSN characters in each make_0B_group(&group[0][0], 0xF849, true, pty, false, true, false, 0, &psname[0]); make_0B_group(&group[1][0], 0xF849, true, pty, false, true, false, 1, &psname[2]); make_0B_group(&group[2][0], 0xF849, true, pty, false, true, false, 2, &psname[4]); make_0B_group(&group[3][0], 0xF849, true, pty, false, true, false, 3, &psname[6]); - /*uint32_t group[4][4] = { - { - 0b1111100001001001, //PI - 0b0000110011101000, //Address - 0b1111100001001001, //PI - 0b0000000000000000 //Replaced - }, - - { - 0b1111100001001001, //PI - 0b0000110011101001, //Address - 0b1111100001001001, //PI - 0b0000000000000000 //Replaced - }, - - { - 0b1111100001001001, //PI - 0b0000110011101010, //Address - 0b1111100001001001, //PI - 0b0000000000000000 //Replaced - }, - - { - 0b1111100001001001, //PI - 0b0000110011101011, //Address - 0b1111100001001001, //PI - 0b0000000000000000 //Replaced - }, - }; - - //Insert PSN data in groups - group[0][3] = (psname[0] << 8) | psname[1]; - group[1][3] = (psname[2] << 8) | psname[3]; - group[2][3] = (psname[4] << 8) | psname[5]; - group[3][3] = (psname[6] << 8) | psname[7]; - */ - // Generate checkbits for all blocks for (c = 0; c < 4; c++) { group[c][0] = makeblock(group[c][0], RDS_OFFSET_A); @@ -125,9 +88,10 @@ uint16_t gen_PSN(const char * psname, const uint8_t pty) { group[c][3] = makeblock(group[c][3], RDS_OFFSET_D); } - // Todo - //for (c = 0; c < 16; c++) - // shared_memory.radio_data[c] = group[c >> 2][c & 3]; + uint32_t * tx_data_u32 = (uint32_t*)shared_memory.tx_data; + + for (c = 0; c < 4 * 4; c++) + tx_data_u32[c] = group[c >> 2][c & 3]; return 4 * 4 * 26; } diff --git a/firmware/application/ui_about.cpp b/firmware/application/ui_about.cpp index 4c8afe79e..fe16df3f7 100644 --- a/firmware/application/ui_about.cpp +++ b/firmware/application/ui_about.cpp @@ -47,7 +47,7 @@ using namespace portapack; namespace ui { void AboutView::on_show() { - transmitter_model.set_tuning_frequency(92200000); + transmitter_model.set_tuning_frequency(1337000000); // TODO: Change transmitter_model.set_baseband_configuration({ .mode = 0, .sampling_rate = 1536000, diff --git a/firmware/application/ui_afsksetup.cpp b/firmware/application/ui_afsksetup.cpp index 1cae5ade3..db26346e4 100644 --- a/firmware/application/ui_afsksetup.cpp +++ b/firmware/application/ui_afsksetup.cpp @@ -23,8 +23,6 @@ #include "ui_afsksetup.hpp" #include "ui_receiver.hpp" -#include "ch.h" - #include "portapack.hpp" #include "string_format.hpp" diff --git a/firmware/application/ui_afsksetup.hpp b/firmware/application/ui_afsksetup.hpp index b83498197..77fa79604 100644 --- a/firmware/application/ui_afsksetup.hpp +++ b/firmware/application/ui_afsksetup.hpp @@ -24,9 +24,7 @@ #include "ui.hpp" #include "ui_widget.hpp" -#include "ui_painter.hpp" #include "ui_navigation.hpp" -#include "ui_font_fixed_8x16.hpp" namespace ui { diff --git a/firmware/application/ui_closecall.cpp b/firmware/application/ui_closecall.cpp index 1563f354b..44fab6869 100644 --- a/firmware/application/ui_closecall.cpp +++ b/firmware/application/ui_closecall.cpp @@ -46,8 +46,9 @@ void CloseCallView::focus() { } CloseCallView::~CloseCallView() { - receiver_model.disable(); time::signal_tick_second -= signal_token_tick_second; + receiver_model.disable(); + baseband::shutdown(); } void CloseCallView::do_detection() { @@ -88,42 +89,37 @@ void CloseCallView::do_detection() { // Staying around the same frequency (+/- 25.4kHz) if (detect_counter >= (5 / slices_max)) { if ((imax != locked_imax) || (!locked)) { - char finalstr[29] = {0}; + std::string finalstr; - // 236 steps = 3MHz - // Resolution = 12.7kHz - if (locked) + // 236 steps = 3.072MHz + // Resolution = 13.1kHz + if (locked) { resolved_frequency = (resolved_frequency + slice_start + (CC_BIN_WIDTH * (imax - 118))) / 2; // Mean - else + } else { resolved_frequency = slice_start + (CC_BIN_WIDTH * (imax - 118)); // Init - - //text_debug.set(to_string_dec_int(CC_BIN_WIDTH * (imax - 118))); - - // Correct according to DC spike mask width (4 for now) - if (iraw > 118) - resolved_frequency -= (2 * CC_BIN_WIDTH); - else - resolved_frequency += (2 * CC_BIN_WIDTH); + if ((resolved_frequency >= f_min) && (resolved_frequency <= f_max)) { + // Correct according to DC spike mask width (8 for now) + if (iraw > 118) + resolved_frequency -= (4 * CC_BIN_WIDTH); + else + resolved_frequency += (4 * CC_BIN_WIDTH); - text_infos.set("Locked !"); - big_display.set_style(&style_locked); - big_display.set(resolved_frequency); - - // Approximation/error display - freq_low = (resolved_frequency - 6355) / 1000; - freq_high = (resolved_frequency + 6355) / 1000; - strcat(finalstr, "~12.7kHz "); - strcat(finalstr, to_string_dec_uint(freq_low / 1000).c_str()); - strcat(finalstr, "."); - strcat(finalstr, to_string_dec_uint(freq_low % 1000).c_str()); - strcat(finalstr, "/"); - strcat(finalstr, to_string_dec_uint(freq_high / 1000).c_str()); - strcat(finalstr, "."); - strcat(finalstr, to_string_dec_uint(freq_high % 1000).c_str()); - text_precision.set(finalstr); - - locked = true; - locked_imax = imax; + text_infos.set("Locked !"); + big_display.set_style(&style_locked); + big_display.set(resolved_frequency); + + // Approximation/error display + freq_low = (resolved_frequency - 6000) / 1000; + freq_high = (resolved_frequency + 6000) / 1000; + finalstr = "~12kHz: " + to_string_dec_uint(freq_low / 1000) + "." + to_string_dec_uint(freq_low % 1000); + finalstr += "/" + to_string_dec_uint(freq_high / 1000) + "." + to_string_dec_uint(freq_high % 1000); + text_precision.set(finalstr); + + locked = true; + locked_imax = imax; + } + } + //text_debug.set(to_string_dec_int(CC_BIN_WIDTH * (imax - 118))); } release_counter = 0; } else { @@ -134,7 +130,7 @@ void CloseCallView::do_detection() { if (locked) { if (release_counter == 6) { locked = false; - text_infos.set("Lost "); + text_infos.set("Lost"); big_display.set_style(&style_grey); big_display.set(resolved_frequency); } else { @@ -159,18 +155,16 @@ void CloseCallView::on_channel_spectrum(const ChannelSpectrum& spectrum) { baseband::spectrum_streaming_stop(); - // Spectrum line (for debug) + // Draw spectrum line (for debug), 2 black pixels left and right std::array pixel_row; for(i = 0; i < 118; i++) { - const auto pixel_color = spectrum_rgb3_lut[spectrum.db[256 - 120 + i]]; + const auto pixel_color = spectrum_rgb3_lut[spectrum.db[256 - 120 + i]]; // 136~253 in 2~119 pixel_row[i + 2] = pixel_color; } - for(i = 122; i < 240; i++) { - const auto pixel_color = spectrum_rgb3_lut[spectrum.db[i - 120]]; + const auto pixel_color = spectrum_rgb3_lut[spectrum.db[i - 120]]; // 2~119 in 120~237 pixel_row[i - 2] = pixel_color; } - display.draw_pixels( { { 0, 96 + slices_counter * 4 }, { pixel_row.size(), 1 } }, pixel_row @@ -179,12 +173,12 @@ void CloseCallView::on_channel_spectrum(const ChannelSpectrum& spectrum) { // Find max for this slice: // Check if left of slice needs to be trimmed (masked) - if (slices_counter == 0) - i = slice_trim; - else + //if (slices_counter == 0) + // i = slice_trim; + //else i = 0; for ( ; i < 118; i++) { - threshold = spectrum.db[256 - 120 + i]; // 128+8 = 136 ~254 + threshold = spectrum.db[256 - 120 + i]; // 128+8 = 136~254 if (threshold > xmax) { xmax = threshold; imax = i; @@ -197,7 +191,7 @@ void CloseCallView::on_channel_spectrum(const ChannelSpectrum& spectrum) { m = 240; for (i = 122 ; i < m; i++) { threshold = spectrum.db[i - 120]; // 240-120 = 120 -> +8 = 128 - if (threshold > xmax) { // (0~2) 2~120 (120~136) 136~254 (254~256) + if (threshold > xmax) { // (0~2) 2~120 (120~136) 136~254 (254~256) xmax = threshold; imax = i - 4; } @@ -238,7 +232,6 @@ void CloseCallView::on_hide() { } void CloseCallView::on_range_changed() { - rf::Frequency f_min, f_max; rf::Frequency slices_span; rf::Frequency resolved_frequency; int64_t offset; @@ -262,13 +255,13 @@ void CloseCallView::on_range_changed() { slice_start = slice_frequency; receiver_model.set_tuning_frequency(slice_frequency); - resolved_frequency = (CC_SLICE_WIDTH - scan_span) / 2; // Trim frequency span (for both sides) - resolved_frequency /= CC_BIN_WIDTH; // Convert to bin span - slice_trim = resolved_frequency; + //resolved_frequency = (CC_SLICE_WIDTH - scan_span) / 2; // Trim frequency span (for both sides) + //resolved_frequency /= CC_BIN_WIDTH; // Convert to bin span + //slice_trim = resolved_frequency; - portapack::display.fill_rectangle({0, 97, 240, 4}, Color::black()); - portapack::display.fill_rectangle({0, 97, slice_trim, 4}, Color::orange()); - portapack::display.fill_rectangle({240 - slice_trim, 97, slice_trim, 4}, Color::orange()); + //portapack::display.fill_rectangle({0, 97, 240, 4}, Color::black()); + //portapack::display.fill_rectangle({0, 97, slice_trim, 4}, Color::orange()); + //portapack::display.fill_rectangle({240 - slice_trim, 97, slice_trim, 4}, Color::orange()); slices_max = 1; slices_counter = 0; @@ -310,6 +303,8 @@ CloseCallView::CloseCallView( NavigationView& nav ) { + baseband::run_image(portapack::spi_flash::image_tag_closecall); + add_children({ { &text_labels_a, &text_labels_b, @@ -329,39 +324,6 @@ CloseCallView::CloseCallView( &button_exit } }); - // DEBUG ------------------------------------------------------------------------- - /*uint8_t testbuffer[] = { 0xDE, 0x00, 0x02, - 0xCD, 0x00, 0x00, // Key 0000 = False - 0xC2, - 0xCD, 0x00, 0x01, // Key 0001 = True - 0xC3, - 0xCD, 0x00, 0x02, // Key 0002 = False - 0xC2, - 0xCD, 0x00, 0x03, // Key 0003 = fixnum 19 - 19 - };*/ - - uint8_t testbuffer[100]; - uint8_t debug_v = 7; - size_t bptr; - MsgPack msgpack; - - bptr = 0; - - msgpack.msgpack_init(&testbuffer, &bptr); - msgpack.msgpack_add(&testbuffer, &bptr, MsgPack::TestListA, false); - msgpack.msgpack_add(&testbuffer, &bptr, MsgPack::TestListB, true); - msgpack.msgpack_add(&testbuffer, &bptr, MsgPack::TestListC, false); - msgpack.msgpack_add(&testbuffer, &bptr, MsgPack::TestListD, (uint8_t)19); - - msgpack.msgpack_get(&testbuffer, bptr, MsgPack::TestListD, &debug_v); - if (debug_v == 19) - text_debug.set("OK!"); - else - text_debug.set(to_string_dec_uint(testbuffer[0])); - - // DEBUG ------------------------------------------------------------------------- - text_labels_a.set_style(&style_grey); text_labels_b.set_style(&style_grey); text_labels_c.set_style(&style_grey); @@ -370,7 +332,8 @@ CloseCallView::CloseCallView( text_mhz.set_style(&style_grey); big_display.set_style(&style_grey); - receiver_model.set_tuning_frequency(467000000); + // DEBUG + receiver_model.set_tuning_frequency(464400000); field_threshold.set_value(80); field_threshold.on_change = [this](int32_t v) { @@ -380,32 +343,30 @@ CloseCallView::CloseCallView( field_frequency_min.set_value(receiver_model.tuning_frequency()); field_frequency_min.set_step(100000); field_frequency_min.on_change = [this](rf::Frequency f) { - (void) f; + (void)f; this->on_range_changed(); }; field_frequency_min.on_edit = [this, &nav]() { auto new_view = nav.push(receiver_model.tuning_frequency()); new_view->on_changed = [this](rf::Frequency f) { - this->on_range_changed(); + //this->on_range_changed(); this->field_frequency_min.set_value(f); }; }; - field_frequency_max.set_focusable(false); // DEBUG - - field_frequency_max.set_value(receiver_model.tuning_frequency() + 3000000); + field_frequency_max.set_value(receiver_model.tuning_frequency() + 2000000); field_frequency_max.set_step(100000); - /*field_frequency_max.on_change = [this](rf::Frequency f) { - (void) f; + field_frequency_max.on_change = [this](rf::Frequency f) { + (void)f; this->on_range_changed(); }; field_frequency_max.on_edit = [this, &nav]() { auto new_view = nav.push(receiver_model.tuning_frequency()); new_view->on_changed = [this](rf::Frequency f) { - this->on_range_changed(); + //this->on_range_changed(); this->field_frequency_max.set_value(f); }; - };*/ + }; field_lna.set_value(receiver_model.lna()); field_lna.on_change = [this](int32_t v) { @@ -426,7 +387,10 @@ CloseCallView::CloseCallView( signal_token_tick_second = time::signal_tick_second += [this]() { this->on_tick_second(); }; - receiver_model.set_baseband_bandwidth(CC_SLICE_WIDTH); + + receiver_model.set_modulation(ReceiverModel::Mode::SpectrumAnalysis); + receiver_model.set_sampling_rate(3072000); + receiver_model.set_baseband_bandwidth(2500000); receiver_model.enable(); } diff --git a/firmware/application/ui_closecall.hpp b/firmware/application/ui_closecall.hpp index aa16b5c1a..61fa71dbc 100644 --- a/firmware/application/ui_closecall.hpp +++ b/firmware/application/ui_closecall.hpp @@ -27,13 +27,12 @@ #include "ui_receiver.hpp" #include "ui_spectrum.hpp" #include "ui_record_view.hpp" - #include "ui_font_fixed_8x16.hpp" namespace ui { -#define CC_SLICE_WIDTH 3000000 // Radio bandwidth -#define CC_BIN_NB 236 // Total power bins +#define CC_SLICE_WIDTH 3072000 // Radio bandwidth +#define CC_BIN_NB 256 // Total power bins #define CC_BIN_WIDTH CC_SLICE_WIDTH/CC_BIN_NB class CloseCallView : public View { @@ -58,6 +57,8 @@ private: .background = Color::black(), .foreground = Color::green(), }; + + rf::Frequency f_min, f_max; Coord last_pos = 0; ChannelSpectrumFIFO* fifo { nullptr }; uint8_t detect_counter = 0, release_counter = 0; @@ -78,6 +79,7 @@ private: bool ignore = true; bool slicing; bool locked = false; + void on_channel_spectrum(const ChannelSpectrum& spectrum); void on_range_changed(); void do_detection(); @@ -134,11 +136,11 @@ private: }; Text text_rate { { 24 * 8, 3 * 16, 2 * 8, 16 }, - "--2" + "--" }; Text text_infos { - { 1 * 8, 6 * 16, 8 * 8, 16 }, + { 1 * 8, 6 * 16, 28 * 8, 16 }, "..." }; @@ -148,18 +150,18 @@ private: }; Text text_mhz { - { 26 * 8, 12 * 16, 3 * 8, 16 }, + { 26 * 8, 12 * 16 - 4, 3 * 8, 16 }, "MHz" }; Text text_precision { { 1 * 8, 13 * 16, 28 * 8, 16 }, - "" + "..." }; Text text_debug { { 1 * 8, 14 * 16, 28 * 8, 16 }, - "DEBUG: Error" + "DEBUG: -" }; Button button_exit { diff --git a/firmware/application/ui_navigation.cpp b/firmware/application/ui_navigation.cpp index 0ec2e9a5d..3f5f7a563 100644 --- a/firmware/application/ui_navigation.cpp +++ b/firmware/application/ui_navigation.cpp @@ -300,7 +300,7 @@ TransmitterAudioMenuView::TransmitterAudioMenuView(NavigationView& nav) { UtilitiesView::UtilitiesView(NavigationView& nav) { add_items<3>({ { - { "Frequency manager", ui::Color::white(), [&nav](){ nav.push(); } }, + { "Frequency manager", ui::Color::grey(), [&nav](){ nav.push(); } }, { "Whip antenna length", ui::Color::green(), [&nav](){ nav.push(); } }, { "Notepad", ui::Color::grey(), [&nav](){ nav.push(); } }, } }); diff --git a/firmware/application/ui_rds.cpp b/firmware/application/ui_rds.cpp index cbda38ad5..c0273a750 100644 --- a/firmware/application/ui_rds.cpp +++ b/firmware/application/ui_rds.cpp @@ -23,13 +23,8 @@ #include "ui_rds.hpp" #include "rds.hpp" -#include "ff.h" -#include "hackrf_gpio.hpp" #include "portapack.hpp" -#include "radio.hpp" #include "baseband_api.hpp" - -#include "hackrf_hal.hpp" #include "portapack_shared_memory.hpp" #include diff --git a/firmware/application/ui_rds.hpp b/firmware/application/ui_rds.hpp index b1f7cf115..78e2afe93 100644 --- a/firmware/application/ui_rds.hpp +++ b/firmware/application/ui_rds.hpp @@ -26,12 +26,7 @@ #include "ui_font_fixed_8x16.hpp" #include "ui_receiver.hpp" #include "ui_textentry.hpp" -#include "clock_manager.hpp" #include "message.hpp" -#include "rf_path.hpp" -#include "max2837.hpp" -#include "volume.hpp" -#include "transmitter_model.hpp" namespace ui { @@ -39,11 +34,12 @@ class RDSView : public View { public: RDSView(NavigationView& nav); ~RDSView(); - std::string title() const override { return "RDS transmit"; }; void focus() override; void paint(Painter& painter) override; + std::string title() const override { return "RDS transmit"; }; + private: char PSN[9]; char RadioText[25]; @@ -168,12 +164,12 @@ private: OptionsField options_coverage { { 1 * 8, 4 * 16 }, - 8, + 13, { { "Local", 0 }, { "International", 1 }, { "National", 2 }, - { "Supra-regional", 3 }, + { "Sup-regional", 3 }, { "R11", 4 }, { "R12", 5 }, { "R13", 6 }, diff --git a/firmware/application/ui_soundboard.cpp b/firmware/application/ui_soundboard.cpp index c58d4ad13..d196899b7 100644 --- a/firmware/application/ui_soundboard.cpp +++ b/firmware/application/ui_soundboard.cpp @@ -25,7 +25,6 @@ #include "ui_soundboard.hpp" #include "lfsr_random.hpp" -#include "ui_alphanum.hpp" #include "portapack.hpp" #include "string_format.hpp" @@ -199,6 +198,11 @@ SoundBoardView::SoundBoardView( NavigationView& nav ) : nav_ (nav) { + using name_t = std::string; + using value_t = int32_t; + using option_t = std::pair; + using options_t = std::vector; + options_t ctcss_options; std::vector file_list; uint8_t c; @@ -243,11 +247,17 @@ SoundBoardView::SoundBoardView( &button_random, &button_exit } }); + + ctcss_options.emplace_back(std::make_pair("None", 0)); + + for (c = 0; c < CTCSS_TONES_NB; c++) + ctcss_options.emplace_back(std::make_pair(ctcss_tones[c].PL_code, c)); + + options_ctcss.set_options(ctcss_options); options_ctcss.on_change = [this](size_t, OptionsField::value_t v) { this->on_ctcss_changed(v); }; - options_ctcss.set_selected_index(0); const auto button_fn = [this](Button& button) { diff --git a/firmware/application/ui_soundboard.hpp b/firmware/application/ui_soundboard.hpp index 67936cc70..dd85822df 100644 --- a/firmware/application/ui_soundboard.hpp +++ b/firmware/application/ui_soundboard.hpp @@ -32,6 +32,7 @@ #include "utility.hpp" #include "message.hpp" #include "wavfile.hpp" +#include "ctcss.hpp" namespace ui { @@ -138,60 +139,7 @@ private: OptionsField options_ctcss { { 18 * 8, 4 }, 6, - { - { "None ", 0 }, - { "XZ 000", 67000 }, - { "WZ 001", 69400 }, - { "XA 039", 71900 }, - { "WA 003", 74400 }, - { "XB 004", 77000 }, - { "WB 005", 79700 }, - { "YZ 006", 82500 }, - { "YA 007", 85400 }, - { "YB 008", 88500 }, - { "ZZ 009", 91500 }, - { "ZA 010", 94800 }, - { "ZB 011", 97400 }, - { "1Z 012", 100000 }, - { "1A 013", 103500 }, - { "1B 014", 107200 }, - { "2Z 015", 110900 }, - { "2Z 016", 114800 }, - { "2B 017", 118800 }, - { "3Z 018", 123000 }, - { "3A 019", 127300 }, - { "3B 020", 131800 }, - { "4Z 021", 136500 }, - { "4A 022", 141300 }, - { "4B 023", 146200 }, - { "MIL ", 150000 }, - { "5Z 024", 151400 }, - { "5A 025", 156700 }, - { "-- 040", 159800 }, - { "5B 026", 162200 }, - { "-- 041", 165500 }, - { "6Z 027", 167900 }, - { "-- 042", 171300 }, - { "6A 028", 173800 }, - { "-- 043", 177300 }, - { "6B 029", 179900 }, - { "-- 044", 183500 }, - { "7Z 030", 186200 }, - { "-- 045", 189900 }, - { "7A 031", 192800 }, - { "-- 046", 196600 }, - { "-- 047", 199500 }, - { "M1 032", 203500 }, - { "8Z 048", 206500 }, - { "M2 033", 210700 }, - { "M3 034", 218100 }, - { "M4 035", 225700 }, - { "9Z 049", 229100 }, - { "-- 036", 233600 }, - { "-- 037", 241800 }, - { "-- 038", 250300 }, - { "0Z 050", 254100 } - } + { } }; Text text_page { diff --git a/firmware/application/wavfile.cpp b/firmware/application/wavfile.cpp index 9cae58acf..558af3704 100644 --- a/firmware/application/wavfile.cpp +++ b/firmware/application/wavfile.cpp @@ -74,8 +74,7 @@ uint32_t WAVFileReader::ms_duration() { } int WAVFileReader::seek_mss(const uint16_t minutes, const uint8_t seconds, const uint32_t samples) { - - auto result = file.seek(data_start + ((((minutes * 60) + seconds) * sample_rate_) + samples) * bytes_per_sample); + const auto result = file.seek(data_start + ((((minutes * 60) + seconds) * sample_rate_) + samples) * bytes_per_sample); if (result.is_error()) return 0; diff --git a/firmware/baseband/CMakeLists.txt b/firmware/baseband/CMakeLists.txt index c04e1a5e5..a81ba439e 100644 --- a/firmware/baseband/CMakeLists.txt +++ b/firmware/baseband/CMakeLists.txt @@ -333,6 +333,13 @@ set(MODE_CPPSRC ) DeclareTargets(PSPE wideband_spectrum) +### Close Call + +set(MODE_CPPSRC + proc_closecall.cpp +) +DeclareTargets(PCLC closecall) + ### OOK set(MODE_CPPSRC diff --git a/firmware/baseband/baseband_closecall.img b/firmware/baseband/baseband_closecall.img new file mode 100644 index 0000000000000000000000000000000000000000..7447ef0d0a9e52d841b386dd2d95f6fe0e39a77f GIT binary patch literal 10276 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 E12F$Hp8x;= literal 0 HcmV?d00001 diff --git a/firmware/baseband/proc_closecall.cpp b/firmware/baseband/proc_closecall.cpp index 1ee1dae00..9695d2fab 100644 --- a/firmware/baseband/proc_closecall.cpp +++ b/firmware/baseband/proc_closecall.cpp @@ -1,5 +1,6 @@ /* * Copyright (C) 2015 Jared Boone, ShareBrained Technology, Inc. + * Copyright (C) 2016 Furrtek * * This file is part of PortaPack. * diff --git a/firmware/baseband/proc_closecall.hpp b/firmware/baseband/proc_closecall.hpp index f00e6ff72..50345afaf 100644 --- a/firmware/baseband/proc_closecall.hpp +++ b/firmware/baseband/proc_closecall.hpp @@ -1,5 +1,6 @@ /* * Copyright (C) 2015 Jared Boone, ShareBrained Technology, Inc. + * Copyright (C) 2016 Furrtek * * This file is part of PortaPack. * @@ -23,6 +24,7 @@ #define __PROC_CLOSECALLPROCESSOR_H__ #include "baseband_processor.hpp" +#include "baseband_thread.hpp" #include "spectrum_collector.hpp" #include "message.hpp" @@ -38,6 +40,8 @@ public: void on_message(const Message* const message) override; private: + BasebandThread baseband_thread { 3072000, this, NORMALPRIO + 20, baseband::Direction::Receive }; + SpectrumCollector channel_spectrum; std::array spectrum; diff --git a/firmware/baseband/proc_rds.cpp b/firmware/baseband/proc_rds.cpp index 34d6232df..c05b0b05e 100644 --- a/firmware/baseband/proc_rds.cpp +++ b/firmware/baseband/proc_rds.cpp @@ -35,6 +35,11 @@ void RDSProcessor::execute(const buffer_c8_t& buffer) { if (s >= 9) { s = 0; if (sample_count >= SAMPLES_PER_BIT) { + if (bit_pos >= message_length) { + bit_pos = 0; + cur_output = 0; + } + cur_bit = (rdsdata[(bit_pos / 26) & 15] >> (25 - (bit_pos % 26))) & 1; prev_output = cur_output; cur_output = prev_output ^ cur_bit; @@ -52,10 +57,7 @@ void RDSProcessor::execute(const buffer_c8_t& buffer) { in_sample_index += SAMPLES_PER_BIT; if (in_sample_index >= SAMPLE_BUFFER_SIZE) in_sample_index -= SAMPLE_BUFFER_SIZE; - if (bit_pos < message_length) - bit_pos++; - else - bit_pos = 0; + bit_pos++; sample_count = 0; } diff --git a/firmware/common/spi_image.hpp b/firmware/common/spi_image.hpp index c5a29e055..9e7b23047 100644 --- a/firmware/common/spi_image.hpp +++ b/firmware/common/spi_image.hpp @@ -71,6 +71,7 @@ constexpr image_tag_t image_tag_tpms { 'P', 'T', 'P', 'M' }; constexpr image_tag_t image_tag_pocsag { 'P', 'P', 'O', 'C' }; constexpr image_tag_t image_tag_wfm_audio { 'P', 'W', 'F', 'M' }; constexpr image_tag_t image_tag_wideband_spectrum { 'P', 'S', 'P', 'E' }; +constexpr image_tag_t image_tag_closecall { 'P', 'C', 'L', 'C' }; constexpr image_tag_t image_tag_jammer { 'P', 'J', 'A', 'M' }; constexpr image_tag_t image_tag_audio_tx { 'P', 'A', 'T', 'X' }; diff --git a/firmware/portapack-h1-havoc.bin b/firmware/portapack-h1-havoc.bin index 92f8c9bf6d4c118f405ebf9d51e3d1c59d38eb12..f1b4b063757d1dcc711a673b3ba315901f0a83b4 100644 GIT binary patch delta 77635 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

MVHdNy{=PyF`e=og0l;+U{Rp?=c`u$9 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 delta 77725 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