From d18b6d135d020642b4b4a62914264352a9dc32eb Mon Sep 17 00:00:00 2001 From: furrtek Date: Mon, 5 Dec 2016 12:56:41 +0100 Subject: [PATCH] Restoring jammer and RDS functionalities, please wait... Started work on frequency manager and numbers station simulator --- firmware/application/CMakeLists.txt | 5 +- firmware/application/Makefile | 108 +++++++ firmware/application/adsb.cpp | 135 ++++++++ firmware/application/adsb.hpp | 42 +++ firmware/application/baseband_api.cpp | 7 + firmware/application/baseband_api.hpp | 1 + firmware/application/main.cpp | 6 +- firmware/application/rds.cpp | 175 ++++++++++ firmware/application/rds.hpp | 49 +++ firmware/application/string_format.cpp | 15 + firmware/application/string_format.hpp | 1 + firmware/application/ui_adsbtx.cpp | 189 +++-------- firmware/application/ui_adsbtx.hpp | 79 +++-- firmware/application/ui_alphanum.cpp | 3 +- firmware/application/ui_alphanum.hpp | 3 +- firmware/application/ui_freqman.cpp | 10 - firmware/application/ui_freqman.hpp | 5 +- firmware/application/ui_jammer.cpp | 333 ++++++++------------ firmware/application/ui_jammer.hpp | 70 ++-- firmware/application/ui_navigation.cpp | 31 +- firmware/application/ui_numbers.cpp | 88 +++++- firmware/application/ui_numbers.hpp | 66 +++- firmware/application/ui_rds.cpp | 208 +++--------- firmware/application/ui_rds.hpp | 29 +- firmware/application/ui_soundboard.cpp | 7 +- firmware/application/ui_xylos.cpp | 4 - firmware/baseband/baseband_ads.img | Bin 9060 -> 9060 bytes firmware/baseband/proc_adsbtx.cpp | 13 +- firmware/baseband/proc_dtmf_tx.cpp | 2 +- firmware/baseband/proc_jammer.cpp | 13 +- firmware/baseband/proc_jammer.hpp | 5 +- firmware/baseband/proc_rds.cpp | 40 +-- firmware/baseband/proc_rds.hpp | 4 +- firmware/baseband/proc_xylos.cpp | 16 +- firmware/baseband/proc_xylos.hpp | 2 +- firmware/common/lcd_ili9341.cpp | 2 +- firmware/common/message.hpp | 4 +- firmware/common/portapack_shared_memory.hpp | 13 +- firmware/common/ui_widget.cpp | 31 +- firmware/common/ui_widget.hpp | 3 + firmware/portapack-h1-havoc.bin | Bin 791196 -> 792652 bytes sdcard/numbers/anounce.wav | Bin 0 -> 231878 bytes sdcard/yosemitesam.wav | Bin 1009388 -> 0 bytes 43 files changed, 1083 insertions(+), 734 deletions(-) create mode 100644 firmware/application/adsb.cpp create mode 100644 firmware/application/adsb.hpp create mode 100644 firmware/application/rds.cpp create mode 100644 firmware/application/rds.hpp create mode 100644 sdcard/numbers/anounce.wav delete mode 100644 sdcard/yosemitesam.wav diff --git a/firmware/application/CMakeLists.txt b/firmware/application/CMakeLists.txt index 7fbabb12..4b02659f 100644 --- a/firmware/application/CMakeLists.txt +++ b/firmware/application/CMakeLists.txt @@ -135,7 +135,9 @@ set(CPPSRC touch_adc.cpp encoder.cpp audio.cpp + adsb.cpp afsk.cpp + rds.cpp ${COMMON}/lcd_ili9341.cpp ${COMMON}/ui.cpp ${COMMON}/ui_text.cpp @@ -170,7 +172,8 @@ set(CPPSRC ui_rds.cpp ui_lcr.cpp ui_xylos.cpp - # ui_freqman.cpp + ui_numbers.cpp + ui_freqman.cpp ui_encoders.cpp ui_jammer.cpp # ui_loadmodule.cpp diff --git a/firmware/application/Makefile b/firmware/application/Makefile index 5e619c84..b4bb4d0c 100644 --- a/firmware/application/Makefile +++ b/firmware/application/Makefile @@ -2478,6 +2478,30 @@ __/common/wm8731.cpp.s: cd /home/furrtek/portapack-hackrf && $(MAKE) -f firmware/application/CMakeFiles/application.elf.dir/build.make firmware/application/CMakeFiles/application.elf.dir/__/common/wm8731.cpp.s .PHONY : __/common/wm8731.cpp.s +adsb.obj: adsb.cpp.obj +.PHONY : adsb.obj + +# target to build an object file +adsb.cpp.obj: + cd /home/furrtek/portapack-hackrf && $(MAKE) -f firmware/application/CMakeFiles/application.elf.dir/build.make firmware/application/CMakeFiles/application.elf.dir/adsb.cpp.obj +.PHONY : adsb.cpp.obj + +adsb.i: adsb.cpp.i +.PHONY : adsb.i + +# target to preprocess a source file +adsb.cpp.i: + cd /home/furrtek/portapack-hackrf && $(MAKE) -f firmware/application/CMakeFiles/application.elf.dir/build.make firmware/application/CMakeFiles/application.elf.dir/adsb.cpp.i +.PHONY : adsb.cpp.i + +adsb.s: adsb.cpp.s +.PHONY : adsb.s + +# target to generate assembly for a file +adsb.cpp.s: + cd /home/furrtek/portapack-hackrf && $(MAKE) -f firmware/application/CMakeFiles/application.elf.dir/build.make firmware/application/CMakeFiles/application.elf.dir/adsb.cpp.s +.PHONY : adsb.cpp.s + afsk.obj: afsk.cpp.obj .PHONY : afsk.obj @@ -3150,6 +3174,30 @@ radio.cpp.s: cd /home/furrtek/portapack-hackrf && $(MAKE) -f firmware/application/CMakeFiles/application.elf.dir/build.make firmware/application/CMakeFiles/application.elf.dir/radio.cpp.s .PHONY : radio.cpp.s +rds.obj: rds.cpp.obj +.PHONY : rds.obj + +# target to build an object file +rds.cpp.obj: + cd /home/furrtek/portapack-hackrf && $(MAKE) -f firmware/application/CMakeFiles/application.elf.dir/build.make firmware/application/CMakeFiles/application.elf.dir/rds.cpp.obj +.PHONY : rds.cpp.obj + +rds.i: rds.cpp.i +.PHONY : rds.i + +# target to preprocess a source file +rds.cpp.i: + cd /home/furrtek/portapack-hackrf && $(MAKE) -f firmware/application/CMakeFiles/application.elf.dir/build.make firmware/application/CMakeFiles/application.elf.dir/rds.cpp.i +.PHONY : rds.cpp.i + +rds.s: rds.cpp.s +.PHONY : rds.s + +# target to generate assembly for a file +rds.cpp.s: + cd /home/furrtek/portapack-hackrf && $(MAKE) -f firmware/application/CMakeFiles/application.elf.dir/build.make firmware/application/CMakeFiles/application.elf.dir/rds.cpp.s +.PHONY : rds.cpp.s + receiver_model.obj: receiver_model.cpp.obj .PHONY : receiver_model.obj @@ -3798,6 +3846,30 @@ ui_font_fixed_8x16.cpp.s: cd /home/furrtek/portapack-hackrf && $(MAKE) -f firmware/application/CMakeFiles/application.elf.dir/build.make firmware/application/CMakeFiles/application.elf.dir/ui_font_fixed_8x16.cpp.s .PHONY : ui_font_fixed_8x16.cpp.s +ui_freqman.obj: ui_freqman.cpp.obj +.PHONY : ui_freqman.obj + +# target to build an object file +ui_freqman.cpp.obj: + cd /home/furrtek/portapack-hackrf && $(MAKE) -f firmware/application/CMakeFiles/application.elf.dir/build.make firmware/application/CMakeFiles/application.elf.dir/ui_freqman.cpp.obj +.PHONY : ui_freqman.cpp.obj + +ui_freqman.i: ui_freqman.cpp.i +.PHONY : ui_freqman.i + +# target to preprocess a source file +ui_freqman.cpp.i: + cd /home/furrtek/portapack-hackrf && $(MAKE) -f firmware/application/CMakeFiles/application.elf.dir/build.make firmware/application/CMakeFiles/application.elf.dir/ui_freqman.cpp.i +.PHONY : ui_freqman.cpp.i + +ui_freqman.s: ui_freqman.cpp.s +.PHONY : ui_freqman.s + +# target to generate assembly for a file +ui_freqman.cpp.s: + cd /home/furrtek/portapack-hackrf && $(MAKE) -f firmware/application/CMakeFiles/application.elf.dir/build.make firmware/application/CMakeFiles/application.elf.dir/ui_freqman.cpp.s +.PHONY : ui_freqman.cpp.s + ui_handwrite.obj: ui_handwrite.cpp.obj .PHONY : ui_handwrite.obj @@ -3918,6 +3990,30 @@ ui_navigation.cpp.s: cd /home/furrtek/portapack-hackrf && $(MAKE) -f firmware/application/CMakeFiles/application.elf.dir/build.make firmware/application/CMakeFiles/application.elf.dir/ui_navigation.cpp.s .PHONY : ui_navigation.cpp.s +ui_numbers.obj: ui_numbers.cpp.obj +.PHONY : ui_numbers.obj + +# target to build an object file +ui_numbers.cpp.obj: + cd /home/furrtek/portapack-hackrf && $(MAKE) -f firmware/application/CMakeFiles/application.elf.dir/build.make firmware/application/CMakeFiles/application.elf.dir/ui_numbers.cpp.obj +.PHONY : ui_numbers.cpp.obj + +ui_numbers.i: ui_numbers.cpp.i +.PHONY : ui_numbers.i + +# target to preprocess a source file +ui_numbers.cpp.i: + cd /home/furrtek/portapack-hackrf && $(MAKE) -f firmware/application/CMakeFiles/application.elf.dir/build.make firmware/application/CMakeFiles/application.elf.dir/ui_numbers.cpp.i +.PHONY : ui_numbers.cpp.i + +ui_numbers.s: ui_numbers.cpp.s +.PHONY : ui_numbers.s + +# target to generate assembly for a file +ui_numbers.cpp.s: + cd /home/furrtek/portapack-hackrf && $(MAKE) -f firmware/application/CMakeFiles/application.elf.dir/build.make firmware/application/CMakeFiles/application.elf.dir/ui_numbers.cpp.s +.PHONY : ui_numbers.cpp.s + ui_nuoptix.obj: ui_nuoptix.cpp.obj .PHONY : ui_nuoptix.obj @@ -4534,6 +4630,9 @@ help: @echo "... __/common/wm8731.obj" @echo "... __/common/wm8731.i" @echo "... __/common/wm8731.s" + @echo "... adsb.obj" + @echo "... adsb.i" + @echo "... adsb.s" @echo "... afsk.obj" @echo "... afsk.i" @echo "... afsk.s" @@ -4618,6 +4717,9 @@ help: @echo "... radio.obj" @echo "... radio.i" @echo "... radio.s" + @echo "... rds.obj" + @echo "... rds.i" + @echo "... rds.s" @echo "... receiver_model.obj" @echo "... receiver_model.i" @echo "... receiver_model.s" @@ -4699,6 +4801,9 @@ help: @echo "... ui_font_fixed_8x16.obj" @echo "... ui_font_fixed_8x16.i" @echo "... ui_font_fixed_8x16.s" + @echo "... ui_freqman.obj" + @echo "... ui_freqman.i" + @echo "... ui_freqman.s" @echo "... ui_handwrite.obj" @echo "... ui_handwrite.i" @echo "... ui_handwrite.s" @@ -4714,6 +4819,9 @@ help: @echo "... ui_navigation.obj" @echo "... ui_navigation.i" @echo "... ui_navigation.s" + @echo "... ui_numbers.obj" + @echo "... ui_numbers.i" + @echo "... ui_numbers.s" @echo "... ui_nuoptix.obj" @echo "... ui_nuoptix.i" @echo "... ui_nuoptix.s" diff --git a/firmware/application/adsb.cpp b/firmware/application/adsb.cpp new file mode 100644 index 00000000..d1e8ccab --- /dev/null +++ b/firmware/application/adsb.cpp @@ -0,0 +1,135 @@ +/* + * Copyright (C) 2014 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 "adsb.hpp" + +#include "portapack_persistent_memory.hpp" + +namespace adsb { + +void make_frame_mode_s(uint8_t * adsb_frame, uint32_t ICAO_address) { + adsb_frame[0] = 0x8D; // DF and CA + adsb_frame[1] = ICAO_address >> 16; + adsb_frame[2] = (ICAO_address >> 8) & 0xFF; + adsb_frame[3] = ICAO_address & 0xFF; +} + +void generate_frame_id(uint8_t * adsb_frame, uint32_t ICAO_address, char * callsign) { + uint8_t c, s; + char ch; + std::string callsign_formatted(8, '_'); + uint64_t callsign_coded = 0; + + make_frame_mode_s(adsb_frame, ICAO_address); + + adsb_frame[4] = 0x20; // TC + + // Translate and code callsign + for (c = 0; c < 8; c++) { + ch = callsign[c]; + for (s = 0; s < 64; s++) { + if (ch == icao_id_lut[s]) break; + } + if (s < 64) { + ch = icao_id_lut[s]; + } else { + ch = ' '; + s = 32; + } + callsign_coded |= ((uint64_t)s << ((7 - c) * 6)); + callsign_formatted[c] = ch; + } + + // Insert callsign in frame + for (c = 0; c < 6; c++) + adsb_frame[c + 5] = (callsign_coded >> ((5 - c) * 8)) & 0xFF; + + ADSB_generate_CRC(adsb_frame); +} + +void generate_frame_pos(uint8_t * adsb_frame, uint32_t ICAO_address, uint32_t altitude, float latitude, float longitude) { + uint8_t c, time_parity; + uint32_t altitude_coded; + uint32_t LAT, LON; + float delta_lat, yz, rlat, delta_lon, xz; + + LAT = 0; + + make_frame_mode_s(adsb_frame, ICAO_address); + + adsb_frame[4] = 0x58; // TC, SS and NICsb + + altitude_coded = (altitude + 1000) / 25; // Can be coded in 100ft steps also + + // LAT: + // index j = floor(59*latcprE-60*latcprO+0.50) + // latE = DlatE*(mod(j,60)+latcprE) + // latO = DlatO*(mod(j,59)+latcprO) + // if latE >= 270 -> latE -= 360 + // if latO >= 270 -> latO -= 360 + //time_parity = 0; // 0~1 + //delta_lat = 90.0 / (60.0 - (time_parity / 4.0)); + //yz = 524288.0 * (mod(lat, delta_lat) / delta_lat); // Round to int ! + //rlat = delta_lat * ((yz / 524288.0) + int(lat / delta_lat)); + //delta_lon = 360.0 / (NL(rlat) - time_parity); + //xz = 524288.0 * (mod(lon, delta_lon) / delta_lon); // Round to int ! + /*if (time_parity) { + A = sign(rlat0)[NL(rlat0) - NL(rlat1)]; + }*/ + // int xz and yz, then: + // xz >>= 2; + // yz >>= 2; + // To get 17 bits + + // aaaaaaa Q bbbb + adsb_frame[5] = ((altitude_coded & 0x7F0) >> 3) | 1; + adsb_frame[6] = ((altitude_coded & 0x00F) << 4) | (LAT >> 15); // Then 0, even/odd, and the 2 LAT-CPR MSBs +} + +void ADSB_generate_CRC(uint8_t * in_frame) { + uint8_t adsb_crc[14]; // Temp buffer + uint8_t b, c, s, bitn; + const uint32_t crc_poly = 0x1205FFF; + + in_frame[11] = 0x00; // Clear CRC + in_frame[12] = 0x00; + in_frame[13] = 0x00; + + // Compute CRC + memcpy(adsb_crc, in_frame, 14); + for (c = 0; c < 11; c++) { + for (b = 0; b < 8; b++) { + if ((adsb_crc[c] << b) & 0x80) { + for (s = 0; s < 25; s++) { + bitn = (c * 8) + b + s; + if ((crc_poly >> s) & 1) adsb_crc[bitn >> 3] ^= (0x80 >> (bitn & 7)); + } + } + } + } + // Insert CRC in frame + for (c = 0; c < 3; c++) + in_frame[c + 11] = adsb_crc[c + 11]; + +} + +} /* namespace adsb */ diff --git a/firmware/application/adsb.hpp b/firmware/application/adsb.hpp new file mode 100644 index 00000000..b2f134d1 --- /dev/null +++ b/firmware/application/adsb.hpp @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2014 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 +#include + +#ifndef __ADSB_H__ +#define __ADSB_H__ + +namespace adsb { + + const char icao_id_lut[65] = "#ABCDEFGHIJKLMNOPQRSTUVWXYZ##### ###############0123456789######"; + + void make_frame_mode_s(uint8_t * adsb_frame, uint32_t ICAO_address); + + void generate_frame_id(uint8_t * adsb_frame, uint32_t ICAO_address, char * callsign); + void generate_frame_pos(uint8_t * adsb_frame, uint32_t ICAO_address, uint32_t altitude, float latitude, float longitude); + + void ADSB_generate_CRC(uint8_t * in_message); + +} /* namespace adsb */ + +#endif/*__ADSB_H__*/ diff --git a/firmware/application/baseband_api.cpp b/firmware/application/baseband_api.cpp index 0719f239..04131f28 100644 --- a/firmware/application/baseband_api.cpp +++ b/firmware/application/baseband_api.cpp @@ -151,6 +151,13 @@ void set_adsb() { send_message(&message); } +void set_rds_data(const uint16_t message_length) { + const RDSConfigureMessage message { + message_length + }; + send_message(&message); +} + void set_dtmf_data(const uint32_t bw, const uint32_t tone_length, const uint32_t pause_length) { const DTMFTXConfigMessage message { bw, diff --git a/firmware/application/baseband_api.hpp b/firmware/application/baseband_api.hpp index 59a3fdb7..6b329f4c 100644 --- a/firmware/application/baseband_api.hpp +++ b/firmware/application/baseband_api.hpp @@ -63,6 +63,7 @@ void set_ook_data(const uint32_t stream_length, const uint32_t samples_per_bit, const uint32_t pause_symbols); void set_pocsag(); void set_adsb(); +void set_rds_data(const uint16_t message_length); void set_dtmf_data(const uint32_t bw, const uint32_t tone_length, const uint32_t pause_length); void run_image(const portapack::spi_flash::image_tag_t image_tag); diff --git a/firmware/application/main.cpp b/firmware/application/main.cpp index 68d21301..cedaed35 100755 --- a/firmware/application/main.cpp +++ b/firmware/application/main.cpp @@ -23,9 +23,14 @@ // Bitmaps generated with: // Gimp image > indexed colors (16), then "xxd -i *.bmp" +//TEST: Numbers +//TEST: Jammer +//TEST: RDS + //BUG: Unistroke text entry screen doesn't care about string max length parameter //BUG (fixed ?): No audio in about when shown second time //BUG: POCSAG RX sometimes misses the first codeword after SYNC +//BUG: Soundboard crashes on exit if no wav files on sd card //TODO: Use ModalMessageView with yes/no for TX //TODO: Show address/data bit fields in OOK TX @@ -33,7 +38,6 @@ //TODO: Check more OOK encoders //TODO: POCSAG 512 and 2400 (all 3 at the same time, or parameter ?) //TODO: Check AFSK transmit end, skips last bits ? -//TODO: Check jammer bandwidths //TODO: Use msgpack for settings, lists... on sd card //TODO: Frequency manager //TODO: Morse coder diff --git a/firmware/application/rds.cpp b/firmware/application/rds.cpp new file mode 100644 index 00000000..151ff82b --- /dev/null +++ b/firmware/application/rds.cpp @@ -0,0 +1,175 @@ +/* + * Copyright (C) 2014 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 "rds.hpp" + +#include "portapack_shared_memory.hpp" + +namespace rds { + +uint32_t makeblock(uint32_t blockdata, uint16_t offset) { + uint16_t CRC = 0; + uint8_t doinv; + + for (uint8_t i = 0; i < 16; i++) { + doinv = (((blockdata << i) & 0x8000) >> 15) ^ (CRC >> 9); + if (doinv) CRC ^= 0b0011011100; + CRC = ((CRC << 1) | doinv) & 0x3FF; + } + + return (blockdata << 10) | (CRC ^ offset); +} + +// Todo: +// Make PI +// TA/TP flags +// Group selection + +// Boolean to binary +uint8_t b2b(const bool in) { + if (in) + return 1; + else + return 0; +} + +void make_0B_group(uint32_t group[], const uint16_t PI_code, const bool TP, const uint8_t PTY, const bool TA, + const bool MS, const bool DI, const uint8_t C, const char * chars) { + + group[0] = PI_code; + group[1] = (0x0 << 12) | (1 << 11) | (b2b(TP) << 10) | (PTY << 5) | (b2b(TA) << 4) | (b2b(MS) << 3) | (b2b(DI) << 2) | (C & 3); + group[2] = PI_code; + group[3] = (chars[0] << 8) | chars[1]; +} + +void make_2A_group(uint32_t group[], const uint16_t PI_code, const bool TP, const uint8_t PTY, const bool AB, + const uint8_t segment, const char * chars) { + + group[0] = PI_code; + group[1] = (0x0 << 12) | (1 << 11) | (b2b(TP) << 10) | (PTY << 5) | (b2b(AB) << 4) | (segment & 15); + group[2] = (chars[0] << 8) | chars[1]; + group[3] = (chars[2] << 8) | chars[3]; +} + +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); + group[c][1] = makeblock(group[c][1], RDS_OFFSET_B); + group[c][2] = makeblock(group[c][2], RDS_OFFSET_Cp); // C' ! + 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]; + + return 4 * 4 * 26; +} + +uint16_t gen_RadioText(const char * radiotext, const uint8_t pty) { + size_t c, i; + uint32_t * group; + char radiotext_buffer[65] = { 0 }; + uint8_t rtlen, groups; + + strcpy(radiotext_buffer, radiotext); + + rtlen = strlen(radiotext_buffer); + + radiotext_buffer[rtlen] = 0x0D; + + // Pad to multiple of 4 + while (rtlen & 3) + radiotext_buffer[rtlen++] = ' '; + + groups = rtlen >> 2; // 4 characters per group + + group = (uint32_t*)chHeapAlloc(0x0, 4 * groups * sizeof(uint32_t)); + + for (c = 0; c < groups; c++) + make_2A_group(&group[c << 2], 0xF849, true, pty, false, c, &radiotext_buffer[c * 4]); + + // Generate checkbits + for (c = 0; c < groups; c++) { + i = c * 4; + group[i + 0] = makeblock(group[i + 0], RDS_OFFSET_A); + group[i + 1] = makeblock(group[i + 1], RDS_OFFSET_B); + group[i + 2] = makeblock(group[i + 2], RDS_OFFSET_C); + group[i + 3] = makeblock(group[i + 3], RDS_OFFSET_D); + } + + uint32_t * tx_data_u32 = (uint32_t*)shared_memory.tx_data; + + for (c = 0; c < (groups * 4); c++) + tx_data_u32[c] = group[c]; + + return groups * 4 * 26; +} + +} /* namespace rds */ diff --git a/firmware/application/rds.hpp b/firmware/application/rds.hpp new file mode 100644 index 00000000..f5fcc7f9 --- /dev/null +++ b/firmware/application/rds.hpp @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2014 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 +#include +#include "ch.h" + +#ifndef __RDS_H__ +#define __RDS_H__ + +namespace rds { + +#define RDS_OFFSET_A 0b0011111100 +#define RDS_OFFSET_B 0b0110011000 +#define RDS_OFFSET_C 0b0101101000 +#define RDS_OFFSET_Cp 0b1101010000 +#define RDS_OFFSET_D 0b0110110100 + +uint32_t makeblock(uint32_t blockdata, uint16_t offset); +uint8_t b2b(const bool in); +void make_0B_group(uint32_t group[], const uint16_t PI_code, const bool TP, const uint8_t PTY, const bool TA, + const bool MS, const bool DI, const uint8_t C, const char * chars); +void make_2A_group(uint32_t group[], const uint16_t PI_code, const bool TP, const uint8_t PTY, const bool AB, + const uint8_t segment, const char * chars); +uint16_t gen_PSN(const char * psname, const uint8_t pty); +uint16_t gen_RadioText(const char * radiotext, const uint8_t pty); + +} /* namespace rds */ + +#endif/*__RDS_H__*/ diff --git a/firmware/application/string_format.cpp b/firmware/application/string_format.cpp index 0a3a9400..53a9d76f 100644 --- a/firmware/application/string_format.cpp +++ b/firmware/application/string_format.cpp @@ -55,6 +55,21 @@ static char* to_string_dec_uint_pad_internal( return q; } +std::string to_string_bin( + const uint32_t n, + const uint8_t l) +{ + char p[33]; + for (uint8_t c = 0; c < l; c++) { + if (n & (1 << (l - c))) + p[c] = '1'; + else + p[c] = '0'; + } + p[l] = 0; + return p; +} + std::string to_string_dec_uint( const uint32_t n, const int32_t l, diff --git a/firmware/application/string_format.hpp b/firmware/application/string_format.hpp index 75f5457c..3fa96277 100644 --- a/firmware/application/string_format.hpp +++ b/firmware/application/string_format.hpp @@ -30,6 +30,7 @@ using namespace lpc43xx; // TODO: Allow l=0 to not fill/justify? Already using this way in ui_spectrum.hpp... +std::string to_string_bin(const uint32_t n, const uint8_t l = 0); std::string to_string_dec_uint(const uint32_t n, const int32_t l = 0, const char fill = 0); std::string to_string_dec_int(const int32_t n, const int32_t l = 0, const char fill = 0); std::string to_string_hex(const uint64_t n, const int32_t l = 0); diff --git a/firmware/application/ui_adsbtx.cpp b/firmware/application/ui_adsbtx.cpp index deb93ac3..e94e1114 100644 --- a/firmware/application/ui_adsbtx.cpp +++ b/firmware/application/ui_adsbtx.cpp @@ -23,6 +23,7 @@ #include "ui_adsbtx.hpp" #include "ui_alphanum.hpp" +#include "adsb.hpp" #include "string_format.hpp" #include "portapack.hpp" #include "baseband_api.hpp" @@ -31,6 +32,7 @@ #include #include +using namespace adsb; using namespace portapack; namespace ui { @@ -45,149 +47,27 @@ ADSBTxView::~ADSBTxView() { } void ADSBTxView::paint(Painter& painter) { + (void)painter; button_callsign.set_text(callsign); } -void ADSBTxView::generate_frame_pos() { - uint8_t b, c, s, time_parity, bitn; - char ch; +void ADSBTxView::generate_frame() { + uint8_t c; std::string str_debug; - uint16_t altitude_coded = (38000 + 1000) / 25; - uint32_t LAT, LON; - float delta_lat, yz, rlat, delta_lon, xz; - uint8_t adsb_crc[14]; // Temp buffer - uint32_t crc_poly = 0x1205FFF; - - LAT = 0; - - adsb_frame[0] = (options_format.selected_index_value() << 3) | 5; // DF and CA - adsb_frame[1] = 0x48; // ICAO24 - adsb_frame[2] = 0x40; - adsb_frame[3] = 0xD6; - adsb_frame[4] = 0x58; // TC, SS and NICsb - - // altitude = (feet + 1000) / 25 - - // LAT: - // index j = floor(59*latcprE-60*latcprO+0.50) - // latE = DlatE*(mod(j,60)+latcprE) - // latO = DlatO*(mod(j,59)+latcprO) - // if latE >= 270 -> latE -= 360 - // if latO >= 270 -> latO -= 360 - //time_parity = 0; // 0~1 - //delta_lat = 90.0 / (60.0 - (time_parity / 4.0)); - //yz = 524288.0 * (mod(lat, delta_lat) / delta_lat); // Round to int ! - //rlat = delta_lat * ((yz / 524288.0) + int(lat / delta_lat)); - //delta_lon = 360.0 / (NL(rlat) - time_parity); - //xz = 524288.0 * (mod(lon, delta_lon) / delta_lon); // Round to int ! - /*if (time_parity) { - A = sign(rlat0)[NL(rlat0) - NL(rlat1)]; - }*/ - // int xz and yz, then: - // xz >>= 2; - // yz >>= 2; - // To get 17 bits - - // aaaaaaa Q bbbb - adsb_frame[5] = ((altitude_coded & 0x7F0) >> 3) | 1; - adsb_frame[6] = ((altitude_coded & 0x00F) << 4) | (LAT >> 15); // Then 0, even/odd, and the 2 LAT-CPR MSBs - - adsb_frame[11] = 0x00; // Clear CRC - adsb_frame[12] = 0x00; - adsb_frame[13] = 0x00; - - // Compute CRC - memcpy(adsb_crc, adsb_frame, 14); - for (c = 0; c < 11; c++) { - for (b = 0; b < 8; b++) { - if ((adsb_crc[c] << b) & 0x80) { - for (s = 0; s < 25; s++) { - bitn = (c * 8) + b + s; - if ((crc_poly >> s) & 1) adsb_crc[bitn >> 3] ^= (0x80 >> (bitn & 7)); - } - } - } - } - // Insert CRC in frame - for (c = 0; c < 3; c++) - adsb_frame[c + 11] = adsb_crc[c + 11]; - - // Convert to binary - for (c = 0; c < 112; c++) - adsb_bin[c] = (adsb_frame[c >> 3] >> (7 - (c & 7))) & 1; - - // Display for debug - str_debug = ""; - for (c = 0; c < 7; c++) - str_debug += to_string_hex(adsb_frame[c], 2); - text_frame_a.set(str_debug); - str_debug = ""; - for (c = 0; c < 7; c++) - str_debug += to_string_hex(adsb_frame[c + 7], 2); - text_frame_b.set(str_debug); -} -void ADSBTxView::generate_frame_id() { - uint8_t b, c, s, bitn; - char ch; - std::string str_debug; - std::string callsign_formatted(8, '_'); - uint64_t callsign_coded = 0; - uint8_t adsb_crc[14]; // Temp buffer - uint32_t crc_poly = 0x1205FFF; + if (options_format.selected_index() == 2) + button_transmit.hidden(true); - // Init frame - //memset(adsb_frame, 0, 120); - - adsb_frame[0] = (options_format.selected_index_value() << 3) | 5; // DF and CA - adsb_frame[1] = 0x48; // ICAO24 - adsb_frame[2] = 0x40; - adsb_frame[3] = 0xD6; - adsb_frame[4] = 0x20; // TC - - adsb_frame[11] = 0x00; // Clear CRC - adsb_frame[12] = 0x00; - adsb_frame[13] = 0x00; - - // Translate and code callsign - for (c = 0; c < 8; c++) { - ch = callsign[c]; - for (s = 0; s < 64; s++) { - if (ch == icao_id_lut[s]) break; - } - if (s < 64) { - ch = icao_id_lut[s]; - } else { - ch = ' '; - s = 32; - } - callsign_coded |= ((uint64_t)s << ((7 - c) * 6)); - callsign_formatted[c] = ch; - } - - // Insert callsign in frame - for (c = 0; c < 6; c++) - adsb_frame[c + 5] = (callsign_coded >> ((5 - c) * 8)) & 0xFF; - - // Compute CRC - memcpy(adsb_crc, adsb_frame, 14); - for (c = 0; c < 11; c++) { - for (b = 0; b < 8; b++) { - if ((adsb_crc[c] << b) & 0x80) { - for (s = 0; s < 25; s++) { - bitn = (c * 8) + b + s; - if ((crc_poly >> s) & 1) adsb_crc[bitn >> 3] ^= (0x80 >> (bitn & 7)); - } - } + generate_frame_id(adsb_frame, sym_icao.value_hex_u64(), callsign); + + memset(adsb_bin, 0, 112); + + // Convert to binary (1 bit per byte, faster for baseband code) + for (c = 0; c < 112; c++) { + if ((adsb_frame[c >> 3] << (c & 7)) & 0x80) { + adsb_bin[c] = 0xFF; } } - // Insert CRC in frame - for (c = 0; c < 3; c++) - adsb_frame[c + 11] = adsb_crc[c + 11]; - - // Convert to binary - for (c = 0; c < 112; c++) - adsb_bin[c] = (adsb_frame[c >> 3] >> (7 - (c & 7))) & 1; // Display for debug str_debug = ""; @@ -199,7 +79,7 @@ void ADSBTxView::generate_frame_id() { str_debug += to_string_hex(adsb_frame[c + 7], 2); text_frame_b.set(str_debug); - text_message.set(callsign_formatted); + //text_message.set(callsign_formatted); } void ADSBTxView::start_tx() { @@ -224,13 +104,13 @@ void ADSBTxView::on_txdone(const int n) { if (n == 200) { transmitter_model.disable(); - progress.set_value(0); + //progress.set_value(0); tx_mode = IDLE; button_transmit.set_style(&style_val); button_transmit.set_text("START"); } else { - progress.set_value(n); + //progress.set_value(n); } } @@ -245,32 +125,49 @@ ADSBTxView::ADSBTxView(NavigationView& nav) { &text_format, &options_format, &text_icaolabel, - &button_icao, + &sym_icao, &text_callsign, &button_callsign, + &text_altitude, + &field_altitude, + &text_latitude, + &field_lat_degrees, + &field_lat_minutes, + &field_lat_seconds, + &text_longitude, + &field_lon_degrees, + &field_lon_minutes, + &field_lon_seconds, &text_frame_a, &text_frame_b, - &progress, - &text_message, &button_transmit } }); options_format.set_by_value(17); // Mode S - progress.set_max(122); - options_format.on_change = [this](size_t i, int32_t v) { (void)i; (void)v; - generate_frame_id(); + generate_frame(); + }; + sym_icao.on_change = [this]() { + generate_frame(); }; button_callsign.on_select = [this, &nav](Button&) { textentry(nav, callsign, 9); }; + field_altitude.set_value(11000); + field_lat_degrees.set_value(0); + field_lat_minutes.set_value(0); + field_lat_seconds.set_value(0); + field_lon_degrees.set_value(0); + field_lon_minutes.set_value(0); + field_lon_seconds.set_value(0); + button_transmit.set_style(&style_val); - generate_frame_id(); + generate_frame(); // Single transmit button_transmit.on_select = [this, &nav](Button&) { @@ -278,7 +175,7 @@ ADSBTxView::ADSBTxView(NavigationView& nav) { tx_mode = SINGLE; button_transmit.set_style(&style_cancel); button_transmit.set_text("Wait"); - generate_frame_id(); + generate_frame(); start_tx(); } }; diff --git a/firmware/application/ui_adsbtx.hpp b/firmware/application/ui_adsbtx.hpp index 3e263125..26ebf141 100644 --- a/firmware/application/ui_adsbtx.hpp +++ b/firmware/application/ui_adsbtx.hpp @@ -57,10 +57,8 @@ private: uint8_t adsb_frame[14]; // 112 bit data block as 14 bytes uint8_t adsb_bin[112]; // 112 bit data block - const char icao_id_lut[65] = "#ABCDEFGHIJKLMNOPQRSTUVWXYZ##### ###############0123456789######"; - void start_tx(); - void generate_frame_id(); + void generate_frame(); void generate_frame_pos(); void on_txdone(const int n); @@ -74,18 +72,13 @@ private: .background = Color::red(), .foreground = Color::black(), }; - const Style style_grey { - .font = font::fixed_8x16, - .background = Color::black(), - .foreground = Color::grey(), - }; Text text_format { - { 4 * 8, 1 * 16, 7 * 8, 16 }, + { 2 * 8, 1 * 16, 7 * 8, 16 }, "Format:" }; OptionsField options_format { - { 12 * 8, 1 * 16 }, + { 10 * 8, 1 * 16 }, 10, { { "17: ADS-B", 17 }, @@ -95,40 +88,72 @@ private: }; Text text_icaolabel { - { 4 * 8, 3 * 16, 7 * 8, 16 }, + { 2 * 8, 2 * 16, 7 * 8, 16 }, "ICAO24:" }; - Button button_icao { - { 12 * 8, 2 * 16 + 12, 8 * 8, 24 }, - "012345" // 7277A9 + SymField sym_icao { + { 10 * 8, 2 * 16 }, + 6, + true // Hex }; Text text_callsign { - { 4 * 8, 4 * 16 + 8, 3 * 8, 16 }, + { 2 * 8, 3 * 16 + 8, 3 * 8, 16 }, "ID:" }; Button button_callsign { - { 8 * 8, 4 * 16 + 4, 10 * 8, 24 }, - "" // "KOR151 " + { 6 * 8, 3 * 16 + 4, 10 * 8, 24 }, + "" + }; + + Text text_altitude { + { 2 * 8, 5 * 16, 20 * 8, 16 }, + "Altitude: feet" + }; + NumberField field_altitude { + { 12 * 8, 5 * 16 }, + 5, + { -1000, 50000 }, + 250, + ' ' + }; + + Text text_latitude { + { 2 * 8, 6 * 16, 20 * 8, 16 }, + "Latitude: * ' \"" // No ° symbol in 8x16 font + }; + NumberField field_lat_degrees { + { 12 * 8, 6 * 16 }, 3, { -90, 90 }, 1, ' ' + }; + NumberField field_lat_minutes { + { 16 * 8, 6 * 16 }, 2, { 0, 59 }, 1, ' ' + }; + NumberField field_lat_seconds { + { 19 * 8, 6 * 16 }, 2, { 0, 59 }, 1, ' ' + }; + Text text_longitude { + { 2 * 8, 7 * 16, 20 * 8, 16 }, + "Longitude: * ' \"" // No ° symbol in 8x16 font + }; + NumberField field_lon_degrees { + { 12 * 8, 7 * 16 }, 3, { -90, 90 }, 1, ' ' + }; + NumberField field_lon_minutes { + { 16 * 8, 7 * 16 }, 2, { 0, 59 }, 1, ' ' + }; + NumberField field_lon_seconds { + { 19 * 8, 7 * 16 }, 2, { 0, 59 }, 1, ' ' }; Text text_frame_a { - { 4 * 8, 10 * 16, 14 * 8, 16 }, + { 4 * 8, 12 * 16, 14 * 8, 16 }, "-" }; Text text_frame_b { - { 4 * 8, 11 * 16, 14 * 8, 16 }, + { 4 * 8, 13 * 16, 14 * 8, 16 }, "-" }; - ProgressBar progress { - { 5 * 8, 13 * 16, 20 * 8, 16 }, - }; - Text text_message { - { 5 * 8, 14 * 16, 20 * 8, 16 }, - "--------------------" - }; - Button button_transmit { { 2 * 8, 16 * 16, 64, 32 }, "START" diff --git a/firmware/application/ui_alphanum.cpp b/firmware/application/ui_alphanum.cpp index 6e49ce7d..3c3c5cf3 100644 --- a/firmware/application/ui_alphanum.cpp +++ b/firmware/application/ui_alphanum.cpp @@ -1,5 +1,6 @@ /* * Copyright (C) 2015 Jared Boone, ShareBrained Technology, Inc. + * Copyright (C) 2016 Furrtek * * This file is part of PortaPack. * @@ -77,7 +78,7 @@ AlphanumView::AlphanumView( }; n = 0; - for(auto& button : buttons) { + for (auto& button : buttons) { button.on_select = button_fn; button.set_parent_rect({ static_cast((n % 5) * button_w), diff --git a/firmware/application/ui_alphanum.hpp b/firmware/application/ui_alphanum.hpp index 24aed4d0..f3fee639 100644 --- a/firmware/application/ui_alphanum.hpp +++ b/firmware/application/ui_alphanum.hpp @@ -1,5 +1,6 @@ /* * Copyright (C) 2015 Jared Boone, ShareBrained Technology, Inc. + * Copyright (C) 2016 Furrtek * * This file is part of PortaPack. * @@ -54,7 +55,7 @@ private: bool _lowercase = false; static constexpr size_t button_w = 240 / 5; static constexpr size_t button_h = 28; - char txtinput[25] = {0}; + char txtinput[29] = { 0 }; // 28 chars max void char_add(const char c); void char_delete(); diff --git a/firmware/application/ui_freqman.cpp b/firmware/application/ui_freqman.cpp index cb8b6218..1665f242 100644 --- a/firmware/application/ui_freqman.cpp +++ b/firmware/application/ui_freqman.cpp @@ -23,11 +23,9 @@ #include "ui_freqman.hpp" #include "ch.h" - #include "ff.h" #include "portapack.hpp" #include "event_m0.hpp" -#include "hackrf_hal.hpp" #include "portapack_shared_memory.hpp" #include @@ -69,12 +67,4 @@ FreqManView::FreqManView( } -void FreqManView::on_show() { - -} - -void FreqManView::on_hide() { - -} - } diff --git a/firmware/application/ui_freqman.hpp b/firmware/application/ui_freqman.hpp index f18b385a..d22208d7 100644 --- a/firmware/application/ui_freqman.hpp +++ b/firmware/application/ui_freqman.hpp @@ -32,11 +32,12 @@ class FreqManView : public View { public: FreqManView(NavigationView& nav); //~FreqManView(); + std::string title() const override { return "Frequency list"; }; void paint(Painter& painter) override; - void on_show() override; - void on_hide() override; + //void on_show() override; + //void on_hide() override; private: std::array text_list; diff --git a/firmware/application/ui_jammer.cpp b/firmware/application/ui_jammer.cpp index 066953a1..c48451da 100644 --- a/firmware/application/ui_jammer.cpp +++ b/firmware/application/ui_jammer.cpp @@ -23,8 +23,6 @@ #include "ui_jammer.hpp" #include "ui_receiver.hpp" -//#include "ch.h" -//#include "evtimer.h" #include "baseband_api.hpp" #include "string_format.hpp" @@ -47,10 +45,12 @@ JammerView::~JammerView() { baseband::shutdown(); } -void JammerView::updfreq(uint8_t id, rf::Frequency f) { +void JammerView::update_text(uint8_t id, rf::Frequency f) { char finalstr[25] = {0}; + rf::Frequency center; + std::string bw; uint8_t c; - + auto mhz = to_string_dec_int(f / 1000000, 3); auto hz100 = to_string_dec_int((f / 100) % 10000, 4, '0'); @@ -59,64 +59,14 @@ void JammerView::updfreq(uint8_t id, rf::Frequency f) { strcat(finalstr, hz100.c_str()); strcat(finalstr, "M"); - while (strlen(finalstr) < 10) { + while (strlen(finalstr) < 10) strcat(finalstr, " "); - } - if (id == 0) { - range1_min = f; - this->button_setfreq1_min.set_text(finalstr); - } - if (id == 1) { - range1_max = f; - this->button_setfreq1_max.set_text(finalstr); - } - if (id == 2) { - range2_min = f; - this->button_setfreq2_min.set_text(finalstr); - } - if (id == 3) { - range2_max = f; - this->button_setfreq2_max.set_text(finalstr); - } - if (id == 4) { - range3_min = f; - this->button_setfreq3_min.set_text(finalstr); - } - if (id == 5) { - range3_max = f; - this->button_setfreq3_max.set_text(finalstr); - } - - rf::Frequency center; - std::string bw; - + buttons_freq[id].set_text(finalstr); + for (c = 0; c < 3; c++) { - if (c == 0) { - center = (range1_min + range1_max) / 2; - range1_center = center; - } - if (c == 1) { - center = (range2_min + range2_max) / 2; - range2_center = center; - } - if (c == 2) { - center = (range3_min + range3_max) / 2; - range3_center = center; - } - - if (c == 0) { - range1_width = abs(range1_max - range1_min) / 1000; - bw = to_string_dec_int(range1_width, 5); - } - if (c == 1) { - range2_width = abs(range2_max - range2_min) / 1000; - bw = to_string_dec_int(range2_width, 5); - } - if (c == 2) { - range3_width = abs(range3_max - range3_min) / 1000; - bw = to_string_dec_int(range3_width, 5); - } + center = (frequency_range[c].min + frequency_range[c].max) / 2; + bw = to_string_dec_int(abs(frequency_range[c].max - frequency_range[c].min) / 1000, 5); auto center_mhz = to_string_dec_int(center / 1000000, 4); auto center_hz100 = to_string_dec_int((center / 100) % 10000, 4, '0'); @@ -129,23 +79,23 @@ void JammerView::updfreq(uint8_t id, rf::Frequency f) { strcat(finalstr, bw.c_str()); strcat(finalstr, "kHz"); - while (strlen(finalstr) < 23) { + while (strlen(finalstr) < 23) strcat(finalstr, " "); - } - if (c == 0) this->text_info1.set(finalstr); - if (c == 1) this->text_info2.set(finalstr); - if (c == 2) this->text_info3.set(finalstr); + if (c == 0) text_info1.set(finalstr); + if (c == 1) text_info2.set(finalstr); + if (c == 2) text_info3.set(finalstr); } } void JammerView::on_retune(const int64_t freq) { - if (freq > 0) { - radio::set_tuning_frequency(freq); - } + if (freq > 0) + transmitter_model.set_tuning_frequency(freq); } JammerView::JammerView(NavigationView& nav) { + size_t n; + baseband::run_image(portapack::spi_flash::image_tag_jammer); static constexpr Style style_val { @@ -166,6 +116,8 @@ JammerView::JammerView(NavigationView& nav) { .foreground = Color::grey(), }; + JammerRange * jammer_ranges = (JammerRange*)shared_memory.tx_data; + add_children({ { &text_type, &options_modulation, @@ -178,158 +130,139 @@ JammerView::JammerView(NavigationView& nav) { &checkbox_range1, &checkbox_range2, &checkbox_range3, - &button_setfreq1_min, - &button_setfreq1_max, &text_info1, - &button_setfreq2_min, - &button_setfreq2_max, &text_info2, - &button_setfreq3_min, - &button_setfreq3_max, &text_info3, &button_transmit, &button_exit } }); + const auto button_freq_fn = [this, &nav](Button& button) { + uint16_t id = button.id; + rf::Frequency * value_ptr; + + if (id & 1) + value_ptr = &frequency_range[id].max; + else + value_ptr = &frequency_range[id].min; + auto new_view = nav.push(*value_ptr); + new_view->on_changed = [this, value_ptr](rf::Frequency f) { + *value_ptr = f; + }; + }; + + n = 0; + for (auto& button : buttons_freq) { + button.on_select = button_freq_fn; + button.set_parent_rect({ + static_cast(13 * 8), + static_cast((n * 52) + 91 + (17 * (n & 1))), + 88, 18 + }); + button.id = n; + button.set_text("----.----M"); + add_child(&button); + n++; + } + button_transmit.set_style(&style_val); text_info1.set_style(&style_info); text_info2.set_style(&style_info); text_info3.set_style(&style_info); - - options_preset.set_selected_index(8); options_preset.on_change = [this](size_t n, OptionsField::value_t v) { (void)n; - uint8_t c; + for (uint8_t c = 0; c < 3; c++) { + frequency_range[c].min = range_presets[v][c].min; + frequency_range[c].max = range_presets[v][c].max; + } + checkbox_range1.set_value(range_presets[v][0].enabled); + checkbox_range2.set_value(range_presets[v][1].enabled); + checkbox_range3.set_value(range_presets[v][2].enabled); + }; + + options_preset.set_selected_index(8); // Sigfox, because they deserve it + + button_transmit.on_select = [this, &nav, jammer_ranges](Button&) { + uint8_t c, i = 0; + size_t num_ranges; + rf::Frequency start_freq, range_bw, ch_width; + bool out_of_ranges = false; + + // Disable all ranges by default + for (i = 0; i < 9; i++) + jammer_ranges[i].enabled = false; + + // Generate jamming "channels", maximum: 9 + // Convert ranges min/max to center/bw for (c = 0; c < 3; c++) { - updfreq(c*2, range_presets[v][c].min); - updfreq((c*2)+1, range_presets[v][c].max); - if (c == 0) checkbox_range1.set_value(range_presets[v][c].active); - if (c == 1) checkbox_range2.set_value(range_presets[v][c].active); - if (c == 2) checkbox_range3.set_value(range_presets[v][c].active); - } - }; - - button_setfreq1_min.on_select = [this,&nav](Button&){ - auto new_view = nav.push(range1_min); - new_view->on_changed = [this](rf::Frequency f) { - updfreq(0, f); - }; - }; - button_setfreq1_max.on_select = [this,&nav](Button&){ - auto new_view = nav.push(range1_max); - new_view->on_changed = [this](rf::Frequency f) { - updfreq(0, f); - }; - }; - - button_transmit.on_select = [this](Button&) { - uint8_t i = 0; - rf::Frequency t, range_lower; - - for (i = 0; i < 16; i++) { - shared_memory.jammer_ranges[i].active = false; - } - - // Swap - if (range1_min > range1_max) { - t = range1_min; - range1_min = range1_max; - range1_max = t; - } - i = 0; - range_lower = range1_min; -// for (i = 0; i < 3; i++) { - - if (range1_max - range_lower > 1000000) { - shared_memory.jammer_ranges[i].center = range_lower + (1000000/2); - shared_memory.jammer_ranges[i].width = 1000000 / 10; - shared_memory.jammer_ranges[i].active = true; - shared_memory.jammer_ranges[i].duration = 2280000 / 10; - range_lower += 1000000; + range_bw = abs(frequency_range[c].max - frequency_range[c].min); // Total bw for range + if (frequency_range[c].min < frequency_range[c].max) + start_freq = frequency_range[c].min; + else + start_freq = frequency_range[c].max; + if (range_bw > 500000) { + // Example: 600kHz + // int(600000 / 500000) = 2 + // CH-BW = 600000 / 2 = 300000 + // Center-A = min + CH-BW / 2 = 150000 + // BW-A = CH-BW = 300000 + // Center-B = min + CH-BW + Center-A = 450000 + // BW-B = CH-BW = 300000 + num_ranges = 0; + while (range_bw > 500000) { + range_bw -= 500000; + num_ranges++; + } + ch_width = range_bw / num_ranges; + for (c = 0; c < num_ranges; c++) { + if (i >= 9) { + out_of_ranges = true; + break; + } + jammer_ranges[i].enabled = true; + jammer_ranges[i].width = ch_width; + jammer_ranges[i].center = start_freq + (ch_width / 2) + (ch_width * c); + jammer_ranges[i].duration = 2280000 / 10; // ? + i++; + } } else { - shared_memory.jammer_ranges[i].center = (range1_max + range_lower) / 2; - shared_memory.jammer_ranges[i].width = (range1_max - range_lower) / 10; // ? - shared_memory.jammer_ranges[i].active = true; - shared_memory.jammer_ranges[i].duration = 2280000 / 10; - //break; + if (i >= 9) { + out_of_ranges = true; + } else { + jammer_ranges[i].enabled = true; + jammer_ranges[i].width = range_bw; + jammer_ranges[i].center = start_freq + (range_bw / 2); + jammer_ranges[i].duration = 2280000 / 10; // ? + i++; + } } -// } - - // Swap - if (range2_min > range2_max) { - t = range2_min; - range2_min = range2_max; - range2_max = t; - } - i = 1; - range_lower = range2_min; -// for (i = 0; i < 3; i++) { - - if (range1_max - range_lower > 1000000) { - shared_memory.jammer_ranges[i].center = range_lower + (1000000/2); - shared_memory.jammer_ranges[i].width = 1000000 / 10; - shared_memory.jammer_ranges[i].active = true; - shared_memory.jammer_ranges[i].duration = 2280000 / 10; - range_lower += 1000000; - } else { - shared_memory.jammer_ranges[i].center = (range1_max + range_lower) / 2; - shared_memory.jammer_ranges[i].width = (range1_max - range_lower) / 10; // ? - shared_memory.jammer_ranges[i].active = true; - shared_memory.jammer_ranges[i].duration = 2280000 / 10; - //break; - } -// } - - // Swap - if (range3_min > range3_max) { - t = range3_min; - range3_min = range3_max; - range3_max = t; - } - i = 2; - range_lower = range3_min; -// for (i = 0; i < 3; i++) { - - if (range1_max - range_lower > 1000000) { - shared_memory.jammer_ranges[i].center = range_lower + (1000000/2); - shared_memory.jammer_ranges[i].width = 1000000 / 10; - shared_memory.jammer_ranges[i].active = true; - shared_memory.jammer_ranges[i].duration = 2280000 / 10; - range_lower += 1000000; - } else { - shared_memory.jammer_ranges[i].center = (range1_max + range_lower) / 2; - shared_memory.jammer_ranges[i].width = (range1_max - range_lower) / 10; // ? - shared_memory.jammer_ranges[i].active = true; - shared_memory.jammer_ranges[i].duration = 2280000 / 10; - //break; - } -// } - - if (jamming == true) { - jamming = false; - button_transmit.set_style(&style_val); - button_transmit.set_text("START"); - radio::disable(); - } else { - jamming = true; - button_transmit.set_style(&style_cancel); - button_transmit.set_text("STOP"); - - /*baseband::set_jammer_data( - - );*/ - //transmitter_model.set_tuning_frequency(433920000); // TODO - transmitter_model.set_baseband_configuration({ - .mode = 0, - .sampling_rate = 1536000U, - .decimation_factor = 1, - }); - transmitter_model.set_rf_amp(true); - transmitter_model.set_baseband_bandwidth(1750000); - transmitter_model.enable(); + if (!out_of_ranges) { + if (jamming == true) { + jamming = false; + button_transmit.set_style(&style_val); + button_transmit.set_text("START"); + radio::disable(); + } else { + jamming = true; + button_transmit.set_style(&style_cancel); + button_transmit.set_text("STOP"); + + //transmitter_model.set_tuning_frequency(433920000); // TODO + transmitter_model.set_baseband_configuration({ + .mode = 0, + .sampling_rate = 1536000U, + .decimation_factor = 1, + }); + transmitter_model.set_rf_amp(true); + transmitter_model.set_baseband_bandwidth(1750000); + transmitter_model.enable(); + } + } else { + nav.display_modal("Error", "Jamming bandwidth too high."); + } } }; diff --git a/firmware/application/ui_jammer.hpp b/firmware/application/ui_jammer.hpp index 6e14a204..0a4ea5cd 100644 --- a/firmware/application/ui_jammer.hpp +++ b/firmware/application/ui_jammer.hpp @@ -34,35 +34,26 @@ public: JammerView(NavigationView& nav); ~JammerView(); - void updfreq(uint8_t id, rf::Frequency f); void focus() override; std::string title() const override { return "Jammer"; }; private: - void on_retune(const int64_t freq); - - rf::Frequency range1_min; - rf::Frequency range1_max; - rf::Frequency range2_min; - rf::Frequency range2_max; - rf::Frequency range3_min; - rf::Frequency range3_max; - - rf::Frequency range1_center; - rf::Frequency range1_width; - rf::Frequency range2_center; - rf::Frequency range2_width; - rf::Frequency range3_center; - rf::Frequency range3_width; - - typedef struct rangepreset { - bool active; + // range_t from utility.hpp is const only + typedef struct freq_range { + bool enabled; rf::Frequency min; rf::Frequency max; - } rangepreset; + } freq_range_t; + + freq_range_t frequency_range[3]; - const rangepreset range_presets[10][3] = { + void update_text(uint8_t id, rf::Frequency f); + void on_retune(const int64_t freq); + + // TODO: TDD UMTS, voir doc Arcep + // TODO: Wifi, BT: 2 400 et 2 483,5 MHz + const freq_range_t range_presets[10][3] = { // Orange {{ true, 935000000, 945000000 }, // GSM 900 { true, 1808000000, 1832000000 }, // GSM 1800 @@ -80,7 +71,7 @@ private: // Free {{ true, 945000000, 950000000 }, // GSM 900 - { false, 0, 0 }, // GSM 1800 + { false, 0, 0 }, // GSM 1800 ? { true, 2144900000, 2149900000 }}, // UMTS // GSM-R @@ -88,9 +79,6 @@ private: { false, 0, 0 }, // GSM 1800 { false, 0, 0 }}, // UMTS - // TODO: TDD UMTS, voir doc Arcep - // TODO: Wifi, BT: 2 400 et 2 483,5 MHz - // DECT {{ true, 1880000000, 1900000000 }, // BW: 20MHz { false, 0, 0 }, @@ -102,12 +90,12 @@ private: { false, 0, 0 }}, // ISM 433 - {{ true, 433050000, 434790000 }, // BW: 0.2% + {{ true, 433050000, 434790000 }, // Center: 433.92MHz BW: 0.2% { false, 0, 0 }, { false, 0, 0 }}, // Sigfox - {{ true, 868150000, 868250000 }, // BW: 40kHz (50kHz) + {{ true, 868000000, 868220000 }, // Center: 868.2MHz BW: 40kHz { false, 0, 0 }, { false, 0, 0 }}, @@ -131,7 +119,7 @@ private: { { "Ramp ", 0 }, { "FM ", 1 }, - { "PSK ", 2 }, + { "Phase", 2 }, { "Tones", 3 } } }; @@ -209,40 +197,18 @@ private: "Range 3" }; - Button button_setfreq1_min { - { 13 * 8, 6 * 16 - 4 - 1, 11 * 8, 18 }, - "----.----M" - }; - Button button_setfreq1_max { - { 13 * 8, 7 * 16 - 4, 11 * 8, 18 }, - "----.----M" - }; + std::array buttons_freq; + Text text_info1 { { 3 * 8, 8 * 16 - 4 + 2, 25 * 8, 16 }, "C:----.----M W:-----kHz" }; - Button button_setfreq2_min { - { 13 * 8, 9 * 16 - 1, 11 * 8, 18 }, - "----.----M" - }; - Button button_setfreq2_max { - { 13 * 8, 10 * 16, 11 * 8, 18 }, - "----.----M" - }; Text text_info2 { { 3 * 8, 11 * 16 + 2, 25 * 8, 16 }, "C:----.----M W:-----kHz" }; - Button button_setfreq3_min { - { 13 * 8, 12 * 16 + 4 - 1, 11 * 8, 18 }, - "----.----M" - }; - Button button_setfreq3_max { - { 13 * 8, 13 * 16 + 4, 11 * 8, 18 }, - "----.----M" - }; Text text_info3 { { 3 * 8, 14 * 16 + 4 + 2, 25 * 8, 16 }, "C:----.----M W:-----kHz" diff --git a/firmware/application/ui_navigation.cpp b/firmware/application/ui_navigation.cpp index 045a4307..0c00aadd 100644 --- a/firmware/application/ui_navigation.cpp +++ b/firmware/application/ui_navigation.cpp @@ -35,8 +35,9 @@ #include "ui_setup.hpp" #include "ui_debug.hpp" +#include "ui_numbers.hpp" //#include "ui_closecall.hpp" // DEBUG -//#include "ui_freqman.hpp" // DEBUG +#include "ui_freqman.hpp" #include "ui_nuoptix.hpp" #include "ui_soundboard.hpp" @@ -51,7 +52,6 @@ #include "ui_adsbtx.hpp" #include "ui_jammer.hpp" -#include "analog_audio_app.hpp" #include "ais_app.hpp" #include "ert_app.hpp" #include "tpms_app.hpp" @@ -143,7 +143,7 @@ void SystemStatusView::on_camera() { return; } - for(int i=0; i<320; i++) { + for (int i=0; i<320; i++) { std::array row; portapack::display.read_pixels({ 0, i, 240, 1 }, row); png.write_scanline(row); @@ -233,14 +233,14 @@ TranspondersMenuView::TranspondersMenuView(NavigationView& nav) { /* ReceiverMenuView ******************************************************/ ReceiverMenuView::ReceiverMenuView(NavigationView& nav) { - add_items<7>({ { + add_items<6>({ { + // { "AFSK", ui::Color::grey(), [&nav](){ nav.push(); } }, // AFSKRXView { "Audio", ui::Color::green(), [&nav](){ nav.push(); } }, - { "Transponders", ui::Color::green(), [&nav](){ nav.push(); } }, - { "POCSAG 1200", ui::Color::cyan(), [&nav](){ nav.push(); } }, - { "Nordic/BTLE", ui::Color::grey(), [&nav](){ nav.push(); } }, - { "SIGFOX", ui::Color::grey(), [&nav](){ nav.push(); } }, // SIGFRXView { "CCIR", ui::Color::grey(), [&nav](){ nav.push(); } }, // XylosRXView - { "AFSK", ui::Color::grey(), [&nav](){ nav.push(); } }, // AFSKRXView + { "Nordic/BTLE", ui::Color::grey(), [&nav](){ nav.push(); } }, + { "POCSAG 1200", ui::Color::cyan(), [&nav](){ nav.push(); } }, + { "SIGFOX", ui::Color::grey(), [&nav](){ nav.push(); } }, // SIGFRXView + { "Transponders", ui::Color::green(), [&nav](){ nav.push(); } }, } }); on_left = [&nav](){ nav.pop(); }; } @@ -264,8 +264,8 @@ TransmitterCodedMenuView::TransmitterCodedMenuView(NavigationView& nav) { TransmitterAudioMenuView::TransmitterAudioMenuView(NavigationView& nav) { add_items<4>({ { - { "Soundboard", ui::Color::yellow(), [&nav](){ nav.push(); } }, - { "Numbers station", ui::Color::grey(), [&nav](){ nav.push(); } }, //nav.push(); + { "Soundboard", ui::Color::green(), [&nav](){ nav.push(); } }, + { "Numbers station", ui::Color::yellow(), [&nav](){ nav.push(); } }, { "Microphone", ui::Color::grey(), [&nav](){ nav.push(); } }, { "Whistle", ui::Color::grey(), [&nav](){ nav.push(); } }, } }); @@ -275,16 +275,15 @@ TransmitterAudioMenuView::TransmitterAudioMenuView(NavigationView& nav) { /* SystemMenuView ********************************************************/ SystemMenuView::SystemMenuView(NavigationView& nav) { - add_items<10>({ { + add_items<11>({ { { "Play dead", ui::Color::red(), [&nav](){ nav.push(false); } }, { "Receivers", ui::Color::cyan(), [&nav](){ nav.push(); } }, { "Capture", ui::Color::cyan(), [&nav](){ nav.push(); } }, - { "Code transmitters", ui::Color::purple(), [&nav](){ nav.push(); } }, - { "Audio transmitters", ui::Color::purple(), [&nav](){ nav.push(); } }, + { "Code transmitters", ui::Color::green(), [&nav](){ nav.push(); } }, + { "Audio transmitters", ui::Color::green(), [&nav](){ nav.push(); } }, //{ "Close Call RX", ui::Color::cyan(), [&nav](){ nav.push(); } }, { "Jammer", ui::Color::orange(), [&nav](){ nav.push(); } }, - //{ "Frequency manager", ui::Color::white(), [&nav](){ nav.push(); } }, - //{ "EPAR TX", ui::Color::green(), [&nav](){ nav.push(md5_baseband_tx, EPAR); } }, + { "Frequency manager", ui::Color::white(), [&nav](){ nav.push(); } }, //{ "Analyze", ui::Color::white(), [&nav](){ nav.push(); } }, { "Setup", ui::Color::white(), [&nav](){ nav.push(); } }, { "Debug", ui::Color::white(), [&nav](){ nav.push(); } }, diff --git a/firmware/application/ui_numbers.cpp b/firmware/application/ui_numbers.cpp index 54fe7843..5da6f5de 100644 --- a/firmware/application/ui_numbers.cpp +++ b/firmware/application/ui_numbers.cpp @@ -23,20 +23,15 @@ #include "ui_numbers.hpp" #include "ch.h" -#include "evtimer.h" - #include "ff.h" -#include "hackrf_gpio.hpp" #include "portapack.hpp" -#include "radio.hpp" - #include "hackrf_hal.hpp" #include "portapack_shared_memory.hpp" -#include "portapack_persistent_memory.hpp" #include #include +using namespace portapack; using namespace hackrf::one; namespace ui { @@ -47,25 +42,96 @@ void NumbersStationView::focus() { NumbersStationView::~NumbersStationView() { transmitter_model.disable(); + baseband::shutdown(); } void NumbersStationView::paint(Painter& painter) { (void)painter; } +void NumbersStationView::on_tuning_frequency_changed(rf::Frequency f) { + transmitter_model.set_tuning_frequency(f); +} + +void NumbersStationView::prepare_audio() { + if (cnt >= sample_duration) { + /*if (!check_loop.value()) { + transmitter_model.disable(); + return; + } else { + file.seek(44); + cnt = 0; + }*/ + + // DEBUG + file.seek(44); + cnt = 0; + + } + + file.read(audio_buffer, 1024); + + // Unsigned to signed, pretty stupid :/ + for (size_t n = 0; n < 1024; n++) + audio_buffer[n] -= 0x80; + + cnt += 1024; + + baseband::set_fifo_data(audio_buffer); +} + +void NumbersStationView::play_sound(uint16_t id) { + uint32_t divider; + + if (sounds[id].size == 0) return; + + auto error = file.open("/numbers/" + filenames[id] + ".wav"); + if (error.is_valid()) return; + + sample_duration = sounds[id].sample_duration; + + cnt = 0; + file.seek(44); // Skip header + + prepare_audio(); + + transmitter_model.set_baseband_configuration({ + .mode = 0, + .sampling_rate = 1536000, + .decimation_factor = 1, + }); + transmitter_model.set_rf_amp(true); + transmitter_model.set_lna(40); + transmitter_model.set_vga(40); + transmitter_model.set_baseband_bandwidth(1750000); + transmitter_model.enable(); + + divider = (1536000 / 44100) - 1; + + baseband::set_audiotx_data( + divider, + number_bw.value(), + false, + 0 + ); +} + NumbersStationView::NumbersStationView( - NavigationView& nav, - TransmitterModel& transmitter_model -) : transmitter_model(transmitter_model) -{ + NavigationView& nav +) { uint8_t m, d, dayofweek; uint16_t y; + baseband::run_image(portapack::spi_flash::image_tag_audio_tx); + add_children({ { &text_title, + &number_bw, &button_exit } }); - + + number_bw.set_value(15); + rtc::RTC datetime; rtcGetTime(&RTCD1, &datetime); diff --git a/firmware/application/ui_numbers.hpp b/firmware/application/ui_numbers.hpp index e380cac1..7c797632 100644 --- a/firmware/application/ui_numbers.hpp +++ b/firmware/application/ui_numbers.hpp @@ -20,34 +20,66 @@ * Boston, MA 02110-1301, USA. */ +#ifndef __UI_NUMBERS_H__ +#define __UI_NUMBERS_H__ + #include "ui.hpp" #include "ui_widget.hpp" #include "ui_painter.hpp" -#include "ui_menu.hpp" #include "ui_navigation.hpp" #include "ui_font_fixed_8x16.hpp" #include "clock_manager.hpp" #include "message.hpp" -#include "rf_path.hpp" -#include "max2837.hpp" -#include "volume.hpp" -#include "transmitter_model.hpp" +#include "baseband_api.hpp" +#include "file.hpp" namespace ui { class NumbersStationView : public View { public: - NumbersStationView(NavigationView& nav, TransmitterModel& transmitter_model); + NumbersStationView(NavigationView& nav); ~NumbersStationView(); void focus() override; void paint(Painter& painter) override; + std::string title() const override { return "Numbers station"; }; + private: - TransmitterModel& transmitter_model; + // Different from the one in ui_soundboard.hpp, simpler + struct sound { + uint32_t size = 0; + uint32_t sample_duration = 0; + }; + + sound sounds[11]; + + const std::string filenames[11] = { + "zero", + "one", + "two", + "three", + "four", + "five", + "six", + "seven", + "eight", + "nine", + "anounce" + }; + const uint8_t month_table[12] = { 0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4 }; const char * day_of_week[7] = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" }; + File file; + uint32_t cnt; + uint32_t sample_duration; + int8_t audio_buffer[1024]; + + void on_tuning_frequency_changed(rf::Frequency f); + void prepare_audio(); + void play_sound(uint16_t id); + // Schedule: save on sd card // For each day of the week, max 8 messages ? // For each message: Normal, accent. Can chose accent on first or last digit @@ -63,10 +95,30 @@ private: "Schedule:" }; + NumberField number_bw { + { 11 * 8, 3 * 16 }, + 3, + {1, 150}, + 1, + ' ' + }; + Button button_exit { { 21 * 8, 16 * 16, 64, 32 }, "Exit" }; + + MessageHandlerRegistration message_handler_fifo_signal { + Message::ID::FIFOSignal, + [this](const Message* const p) { + const auto message = static_cast(p); + if (message->signaltype == 1) { + this->prepare_audio(); + } + } + }; }; } /* namespace ui */ + +#endif/*__UI_NUMBERS_H__*/ diff --git a/firmware/application/ui_rds.cpp b/firmware/application/ui_rds.cpp index 2bdf5252..cbda38ad 100644 --- a/firmware/application/ui_rds.cpp +++ b/firmware/application/ui_rds.cpp @@ -22,7 +22,7 @@ #include "ui_rds.hpp" -#include "ch.h" +#include "rds.hpp" #include "ff.h" #include "hackrf_gpio.hpp" #include "portapack.hpp" @@ -35,6 +35,7 @@ #include using namespace portapack; +using namespace rds; namespace ui { @@ -42,186 +43,49 @@ void RDSView::focus() { button_editpsn.focus(); } +void RDSView::on_tuning_frequency_changed(rf::Frequency f) { + transmitter_model.set_tuning_frequency(f); +} + RDSView::~RDSView() { - radio::disable(); + transmitter_model.disable(); baseband::shutdown(); } -std::string to_string_bin(const uint32_t n, const uint8_t l) { - char p[33]; - for (uint8_t c = 0; c < l; c++) { - if ((n << c) & (1 << l)) - p[c] = '1'; - else - p[c] = '0'; - } - p[l] = 0; - return p; -} - -uint32_t makeblock(uint32_t blockdata, uint16_t offset) { - uint16_t CRC = 0; - uint8_t doinv; - - for (uint8_t i = 0; i < 16; i++) { - doinv = (((blockdata << i) & 0x8000) >> 15) ^ (CRC >> 9); - if (doinv) CRC ^= 0b0011011100; - CRC = ((CRC << 1) | doinv) & 0x3FF; - } - - return (blockdata << 10) | (CRC ^ offset); -} - -// Todo: -// Make PI -// Set frequency -// TA/TP flags -// Group selection - -uint8_t RDSView::b2b(const bool in) { - if (in) - return 1; - else - return 0; -} - -void RDSView::make_0B_group(uint32_t group[], const uint16_t PI_code, const bool TP, const uint8_t PTY, const bool TA, - const bool MS, const bool DI, const uint8_t C, const char * chars) { - - group[0] = PI_code; - group[1] = (0x0 << 12) | (1 << 11) | (b2b(TP) << 10) | (PTY << 5) | (b2b(TA) << 4) | (b2b(MS) << 3) | (b2b(DI) << 2) | (C & 3); - group[2] = PI_code; - group[3] = (chars[0] << 8) | chars[1]; -} - -void RDSView::make_2A_group(uint32_t group[], const uint16_t PI_code, const bool TP, const uint8_t PTY, const bool AB, - const bool segment, const char * chars) { - - group[0] = PI_code; - group[1] = (0x0 << 12) | (1 << 11) | (b2b(TP) << 10) | (PTY << 5) | (b2b(AB) << 4) | (segment & 15); - group[2] = (chars[0] << 8) | chars[1]; - group[3] = (chars[2] << 8) | chars[3]; -} - -void RDSView::gen_PSN(const char * psname) { - uint8_t c; - uint32_t group[4][4] = { 0 }; - - make_0B_group(&group[0][0], 0xF849, true, options_pty.selected_index(), false, true, false, 0, &psname[0]); - make_0B_group(&group[1][0], 0xF849, true, options_pty.selected_index(), false, true, false, 1, &psname[2]); - make_0B_group(&group[2][0], 0xF849, true, options_pty.selected_index(), false, true, false, 2, &psname[4]); - make_0B_group(&group[3][0], 0xF849, true, options_pty.selected_index(), false, true, false, 3, &psname[6]); +void RDSView::start_tx() { + transmitter_model.set_baseband_configuration({ + .mode = 0, + .sampling_rate = 2280000, + .decimation_factor = 1, + }); + transmitter_model.set_rf_amp(true); + transmitter_model.set_lna(40); + transmitter_model.set_vga(40); + transmitter_model.set_baseband_bandwidth(1750000); + transmitter_model.enable(); - /*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 (c = 0; c < 4; c++) { - group[c][0] = makeblock(group[c][0], RDS_OFFSET_A); - group[c][1] = makeblock(group[c][1], RDS_OFFSET_B); - group[c][2] = makeblock(group[c][2], RDS_OFFSET_Cp); // C' ! - 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]; - - shared_memory.bit_length = 4 * 4 * 26; -} - -void RDSView::gen_RadioText(const char * radiotext) { - size_t c, i; - uint32_t * group; - char radiotext_buffer[65] = { 0 }; - uint8_t rtlen, groups; - - strcpy(radiotext_buffer, radiotext); - - rtlen = strlen(radiotext_buffer); - - radiotext_buffer[rtlen] = 0x0D; - - // Pad to multiple of 4 - while(rtlen & 3) { - radiotext_buffer[rtlen] = ' '; - rtlen++; - } - - groups = rtlen >> 2; // 4 characters per group - - group = (uint32_t*)chHeapAlloc(0x0, 4 * groups * sizeof(uint32_t)); - - for (c = 0; c < groups; c++) - make_2A_group(&group[c << 2], 0xF849, true, options_pty.selected_index(), false, c, &radiotext_buffer[c << 2]); - - // Generate checkbits - for (c = 0; c < groups; c++) { - i = c * 4; - group[i + 0] = makeblock(group[i + 0], RDS_OFFSET_A); - group[i + 1] = makeblock(group[i + 1], RDS_OFFSET_B); - group[i + 2] = makeblock(group[i + 2], RDS_OFFSET_C); - group[i + 3] = makeblock(group[i + 3], RDS_OFFSET_D); - } - - // Todo - //for (c = 0; c < (groups * 4); c++) - // shared_memory.radio_data[c] = group[c]; - - shared_memory.bit_length = groups * 4 * 26; + baseband::set_rds_data(message_length); } void RDSView::paint(Painter& painter) { char RadioTextA[17]; - (void)painter; text_psn.set(PSN); + memcpy(RadioTextA, RadioText, 16); RadioTextA[16] = 0; text_radiotexta.set(RadioTextA); - text_radiotextb.set(&RadioText[16]); + memcpy(RadioTextA, RadioText + 16, 8); + RadioTextA[8] = 0; + text_radiotextb.set(RadioTextA); } RDSView::RDSView(NavigationView& nav) { baseband::run_image(portapack::spi_flash::image_tag_rds); strcpy(PSN, "TEST1234"); - strcpy(RadioText, "Radiotext test !"); + strcpy(RadioText, "Radiotext test ABCD1234"); add_children({ { &field_frequency, @@ -239,12 +103,16 @@ RDSView::RDSView(NavigationView& nav) { &button_exit } }); - rds_radio_config.tuning_frequency = tuning_frequency; - field_frequency.set_step(100000); + field_frequency.set_value(transmitter_model.tuning_frequency()); + field_frequency.set_step(50000); // 50kHz steps + field_frequency.on_change = [this](rf::Frequency f) { + this->on_tuning_frequency_changed(f); + }; field_frequency.on_edit = [this, &nav]() { - auto new_view = nav.push(tuning_frequency); + auto new_view = nav.push(field_frequency.value()); new_view->on_changed = [this](rf::Frequency f) { this->field_frequency.set_value(f); + this->on_tuning_frequency_changed(f); }; }; @@ -257,16 +125,15 @@ RDSView::RDSView(NavigationView& nav) { }; button_txpsn.on_select = [this](Button&){ if (txing) { - radio::disable(); button_txpsn.set_text("PSN"); button_txradiotext.set_text("Radiotext"); + transmitter_model.disable(); txing = false; } else { - gen_PSN(PSN); - rds_radio_config.tuning_frequency = tuning_frequency; + message_length = gen_PSN(PSN, options_pty.selected_index()); button_txpsn.set_text("STOP"); txing = true; - radio::disable(); + start_tx(); } }; @@ -275,16 +142,15 @@ RDSView::RDSView(NavigationView& nav) { }; button_txradiotext.on_select = [this](Button&){ if (txing) { - radio::disable(); button_txpsn.set_text("PSN"); button_txradiotext.set_text("Radiotext"); + transmitter_model.disable(); txing = false; } else { - gen_RadioText(RadioText); - rds_radio_config.tuning_frequency = tuning_frequency; + message_length = gen_RadioText(RadioText, options_pty.selected_index()); button_txradiotext.set_text("STOP"); txing = true; - radio::enable(rds_radio_config); + start_tx(); } }; diff --git a/firmware/application/ui_rds.hpp b/firmware/application/ui_rds.hpp index 0440465e..b1f7cf11 100644 --- a/firmware/application/ui_rds.hpp +++ b/firmware/application/ui_rds.hpp @@ -33,12 +33,6 @@ #include "volume.hpp" #include "transmitter_model.hpp" -#define RDS_OFFSET_A 0b0011111100 -#define RDS_OFFSET_B 0b0110011000 -#define RDS_OFFSET_C 0b0101101000 -#define RDS_OFFSET_Cp 0b1101010000 -#define RDS_OFFSET_D 0b0110110100 - namespace ui { class RDSView : public View { @@ -54,28 +48,11 @@ private: char PSN[9]; char RadioText[25]; bool txing = false; - int64_t tuning_frequency = 92200000; // TODO: CHANGE ! - uint8_t b2b(const bool in); + uint16_t message_length; - void gen_PSN(const char * psname); - void gen_RadioText(const char * radiotext); - - void make_0B_group(uint32_t group[], const uint16_t PI_code, const bool TP, const uint8_t PTY, const bool TA, - const bool MS, const bool DI, const uint8_t C, const char * chars); - void make_2A_group(uint32_t group[], const uint16_t PI_code, const bool TP, const uint8_t PTY, const bool AB, - const bool segment, const char * chars); - - radio::Configuration rds_radio_config = { - 0, - 2280000, // ? - 2500000, // ? - rf::Direction::Transmit, - true, - 0, - 0, - 1, - }; + void start_tx(); + void on_tuning_frequency_changed(rf::Frequency f); FrequencyField field_frequency { { 1 * 8, 1 * 16 }, diff --git a/firmware/application/ui_soundboard.cpp b/firmware/application/ui_soundboard.cpp index 72931fc0..59df3272 100644 --- a/firmware/application/ui_soundboard.cpp +++ b/firmware/application/ui_soundboard.cpp @@ -25,8 +25,6 @@ #include "ui_soundboard.hpp" #include "ch.h" -#include "file.hpp" - #include "lfsr_random.hpp" #include "ui_alphanum.hpp" #include "portapack.hpp" @@ -258,6 +256,11 @@ SoundBoardView::SoundBoardView( } } + if (!c) { + nav.display_modal("No files", "No files in /wav/ directory"); + nav.pop(); + } + max_sound = c; max_page = max_sound / 21; // 21 buttons per page diff --git a/firmware/application/ui_xylos.cpp b/firmware/application/ui_xylos.cpp index 40a844a5..22aa5f45 100644 --- a/firmware/application/ui_xylos.cpp +++ b/firmware/application/ui_xylos.cpp @@ -329,8 +329,6 @@ XylosView::XylosView(NavigationView& nav) { generate_message(); }; - subfamily_code.hidden(true); - text_subfamily.set_style(&style_grey); checkbox_wcsubfamily.on_select = [this](Checkbox&) { if (checkbox_wcsubfamily.value() == true) { receiver_code.set_focusable(false); @@ -342,8 +340,6 @@ XylosView::XylosView(NavigationView& nav) { generate_message(); }; - receiver_code.hidden(true); - text_receiver.set_style(&style_grey); checkbox_wcid.on_select = [this](Checkbox&) { if (checkbox_wcid.value() == true) { receiver_code.set_focusable(false); diff --git a/firmware/baseband/baseband_ads.img b/firmware/baseband/baseband_ads.img index 0152fd763644dd87122dfd73465b78f2fc881324..cedfc1fa27e43b7cfd52ceeb862bcf9f48d503bc 100644 GIT binary patch delta 407 zcmaFj_QY+&9me{U3*H$F+KCr*Uw-gsP;K78=f>g|;J?C6^1{sMQ9id#Pz3>dAr9Q;3U@G<{jdT{Fp2S~TTtse{u5i;I# z%nnRHm?zx&!6I<$M?Htatse{w-f~PvQVxe+Gji|#$j;xf|Fav*M;m5IHvyL@w;B6S zzvkm)oXq%P!e7SOAk|)O%&)l_89#LV-TyhhA7nh2@u?pi1`HqE{{^@)epvHk({qOX x1#%1wGsGAK7?1#WhMYF%MFwR?rG_6$28UZ3xPNFEH2hFjU@9(fU!20M008gZsAB*C delta 407 zcmaFj_QY+&9maZw59=GeGjv~maA(jCxDe_c>L;7Qpd{|*|ACQD_Q8=J*4HdNJYOfr zQ!iZKQJ;k{LnDCyzy`r^GEvrZ8&D^KmMAJ)6q@B#mbHGL)Tv~H;&irjG;fc7#Ke^|K0yNzJGBBm+|5Rh7T_P z6x= 112) { // Stop + message.n = 200; + shared_memory.application_queue.push(message); + configured = false; cur_bit = 0; } else { - cur_bit = shared_memory.tx_data[bit_pos]; + cur_bit = 0; //shared_memory.tx_data[bit_pos]; bit_pos++; bit_part = 1; } @@ -66,7 +69,7 @@ void ADSBTXProcessor::execute(const buffer_c8_t& buffer) { // 1001010110100110 0110010110010101 if (cur_bit) { - phase = (phase + 0x1FE0000); // What ? + phase = (phase + 0x1FE00); // What ? sphase = phase + (64 << 18); re = (sine_table_i8[(sphase & 0x03FC0000) >> 18]); @@ -78,17 +81,13 @@ void ADSBTXProcessor::execute(const buffer_c8_t& buffer) { buffer.p[i] = {(int8_t)re, (int8_t)im}; } - - // TEST - message.n = 200; - shared_memory.application_queue.push(message); - configured = false; } void ADSBTXProcessor::on_message(const Message* const p) { const auto message = *reinterpret_cast(p); if (message.id == Message::ID::ADSBConfigure) { + bit_part = 0; bit_pos = 0; cur_bit = 0; preamble = true; diff --git a/firmware/baseband/proc_dtmf_tx.cpp b/firmware/baseband/proc_dtmf_tx.cpp index 0a320e2b..9d9e5708 100644 --- a/firmware/baseband/proc_dtmf_tx.cpp +++ b/firmware/baseband/proc_dtmf_tx.cpp @@ -93,7 +93,7 @@ void DTMFTXProcessor::execute(const buffer_c8_t& buffer) { } void DTMFTXProcessor::on_message(const Message* const msg) { - char * tone_ptr; + uint8_t * tone_ptr; const auto message = *reinterpret_cast(msg); if (message.id == Message::ID::DTMFTXConfig) { diff --git a/firmware/baseband/proc_jammer.cpp b/firmware/baseband/proc_jammer.cpp index b3b01ab1..f13e601a 100644 --- a/firmware/baseband/proc_jammer.cpp +++ b/firmware/baseband/proc_jammer.cpp @@ -40,11 +40,11 @@ void JammerProcessor::execute(const buffer_c8_t& buffer) { for (;;) { ir++; if (ir > 15) ir = 0; - if (shared_memory.jammer_ranges[ir].active == true) break; + if (jammer_ranges[ir].enabled == true) break; } - jammer_bw = shared_memory.jammer_ranges[ir].width / 2; + jammer_bw = jammer_ranges[ir].width / 2; - message.freq = shared_memory.jammer_ranges[ir].center; + message.freq = jammer_ranges[ir].center; shared_memory.application_queue.push(message); } else { s++; @@ -73,9 +73,9 @@ void JammerProcessor::execute(const buffer_c8_t& buffer) { sample = sine_table_i8[(sphase & 0x03FC0000) >> 18]; // FM - frq = sample * jammer_bw; + delta = sample * jammer_bw; - phase = (phase + frq); + phase = (phase + delta); sphase = phase + (64 << 18); re = (sine_table_i8[(sphase & 0x03FC0000) >> 18]); @@ -86,6 +86,9 @@ void JammerProcessor::execute(const buffer_c8_t& buffer) { }; void JammerProcessor::on_message(const Message* const msg) { + + jammer_ranges = (JammerRange*)shared_memory.tx_data; + /*const auto message = *reinterpret_cast(msg); if (message.id == Message::ID::DTMFTXConfig) { diff --git a/firmware/baseband/proc_jammer.hpp b/firmware/baseband/proc_jammer.hpp index 7b6ba8c7..7257d448 100644 --- a/firmware/baseband/proc_jammer.hpp +++ b/firmware/baseband/proc_jammer.hpp @@ -25,6 +25,7 @@ #include "baseband_processor.hpp" #include "baseband_thread.hpp" +#include "portapack_shared_memory.hpp" class JammerProcessor : public BasebandProcessor { public: @@ -37,6 +38,8 @@ private: BasebandThread baseband_thread { 1536000, this, NORMALPRIO + 20, baseband::Direction::Transmit }; + JammerRange * jammer_ranges; + int32_t lfsr32 = 0xABCDE; uint32_t s; int8_t r, ir, re, im; @@ -45,7 +48,7 @@ private: int32_t lfsr; uint32_t sample_count; uint32_t aphase, phase, sphase; - int32_t sample, frq; + int32_t sample, delta; RetuneMessage message; }; diff --git a/firmware/baseband/proc_rds.cpp b/firmware/baseband/proc_rds.cpp index 5bf0e82a..34d6232d 100644 --- a/firmware/baseband/proc_rds.cpp +++ b/firmware/baseband/proc_rds.cpp @@ -22,7 +22,7 @@ #include "proc_rds.hpp" #include "portapack_shared_memory.hpp" -#include "sine_table.hpp" +#include "sine_table_int8.hpp" #include "event_m4.hpp" #include @@ -31,18 +31,18 @@ void RDSProcessor::execute(const buffer_c8_t& buffer) { for (size_t i = 0; i < buffer.count; i++) { - //Sample generation 2.28M/10=228kHz - if(s >= 9) { + // Sample generation at 2.28M / 10 = 228kHz + if (s >= 9) { s = 0; - if(sample_count >= SAMPLES_PER_BIT) { + if (sample_count >= SAMPLES_PER_BIT) { cur_bit = (rdsdata[(bit_pos / 26) & 15] >> (25 - (bit_pos % 26))) & 1; prev_output = cur_output; cur_output = prev_output ^ cur_bit; - const int32_t *src = waveform_biphase; // const ok ? + const int32_t * src = waveform_biphase; int idx = in_sample_index; - for(int j = 0; j < FILTER_SIZE; j++) { + for (int j = 0; j < FILTER_SIZE; j++) { val = (*src++); if (cur_output) val = -val; sample_buffer[idx++] += val; @@ -52,10 +52,11 @@ 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 < shared_memory.bit_length) + if (bit_pos < message_length) bit_pos++; else bit_pos = 0; + sample_count = 0; } @@ -64,38 +65,39 @@ void RDSProcessor::execute(const buffer_c8_t& buffer) { out_sample_index++; if (out_sample_index >= SAMPLE_BUFFER_SIZE) out_sample_index = 0; - //AM @ 228k/4 = 57kHz - switch (mphase) { + // AM @ 228k/4 = 57kHz + // 0, sample, 0, -sample... + switch (mphase & 3) { case 0: case 2: sample = 0; break; case 1: break; - case 3: sample = -sample; break; + case 3: sample = -sample; // break; } mphase++; - if (mphase >= 4) mphase = 0; sample_count++; } else { s++; } - //FM - frq = (sample>>16) * 386760; + // FM + delta = (sample >> 16) * 386760; // ? - phase = (phase + frq); - sphase = phase + (256<<16); + phase += delta; + sphase = phase + (64 << 18); - re = (sine_table_f32[(sphase & 0x03FF0000)>>18]*127); - im = (sine_table_f32[(phase & 0x03FF0000)>>18]*127); + re = (sine_table_i8[(sphase & 0x03FF0000) >> 18]); + im = (sine_table_i8[(phase & 0x03FF0000) >> 18]); - buffer.p[i] = {(int8_t)re,(int8_t)im}; + buffer.p[i] = {(int8_t)re, (int8_t)im}; } } void RDSProcessor::on_message(const Message* const msg) { if (msg->id == Message::ID::RDSConfigure) { - //const auto message = *reinterpret_cast(p); + const auto message = *reinterpret_cast(msg); rdsdata = (uint32_t*)shared_memory.tx_data; + message_length = message.length; configured = true; } } diff --git a/firmware/baseband/proc_rds.hpp b/firmware/baseband/proc_rds.hpp index c959ad46..53e84663 100644 --- a/firmware/baseband/proc_rds.hpp +++ b/firmware/baseband/proc_rds.hpp @@ -41,6 +41,7 @@ private: BasebandThread baseband_thread { 2280000, this, NORMALPRIO + 20, baseband::Direction::Transmit }; + uint16_t message_length; int8_t re, im; uint8_t mphase, s; uint32_t bit_pos; @@ -54,8 +55,7 @@ private: int32_t sample; int out_sample_index = SAMPLE_BUFFER_SIZE - 1; uint32_t phase, sphase; - int32_t sig, frq, frq_im, rdsc; - int32_t k; + int32_t delta; bool configured { false }; diff --git a/firmware/baseband/proc_xylos.cpp b/firmware/baseband/proc_xylos.cpp index c77c3285..1dae9151 100644 --- a/firmware/baseband/proc_xylos.cpp +++ b/firmware/baseband/proc_xylos.cpp @@ -55,7 +55,7 @@ void XylosProcessor::execute(const buffer_c8_t& buffer) { message.n = 25; // End of message code shared_memory.application_queue.push(message); } else { - message.n = byte_pos; // Inform UI about progress (just as eye candy) + message.n = byte_pos; // Inform UI about progress (just as eye candy) shared_memory.application_queue.push(message); } @@ -74,7 +74,7 @@ void XylosProcessor::execute(const buffer_c8_t& buffer) { re = 0; im = 0; } else { - tone_sample = (sine_table_i8[(tone_phase & 0x03FC0000)>>18]); + tone_sample = (sine_table_i8[(tone_phase & 0x03FC0000) >> 18]); // Audio preview sample generation: 1536000/48000 = 32 /*if (as >= 31) { @@ -87,16 +87,16 @@ void XylosProcessor::execute(const buffer_c8_t& buffer) { // FM // 1<<18 = 262144 // m = (262144 * BW) / 1536000 / 2 - frq = tone_sample * 853; // 10kHz BW + delta = tone_sample * 853; // 10kHz BW - phase = (phase + frq); - sphase = phase + (64<<18); + phase += delta; + sphase = phase + (64 << 18); - re = (sine_table_i8[(sphase & 0x03FC0000)>>18]); - im = (sine_table_i8[(phase & 0x03FC0000)>>18]); + re = (sine_table_i8[(sphase & 0x03FC0000) >> 18]); + im = (sine_table_i8[(phase & 0x03FC0000) >> 18]); } - buffer.p[i] = {(int8_t)re,(int8_t)im}; + buffer.p[i] = {(int8_t)re, (int8_t)im}; } //audio_output.write(audio_buffer); diff --git a/firmware/baseband/proc_xylos.hpp b/firmware/baseband/proc_xylos.hpp index f6c226fc..6d107dcb 100644 --- a/firmware/baseband/proc_xylos.hpp +++ b/firmware/baseband/proc_xylos.hpp @@ -68,7 +68,7 @@ private: uint8_t digit = 0; uint32_t sample_count = 0; uint32_t tone_phase, phase, sphase; - int32_t tone_sample, frq; + int32_t tone_sample, delta; bool silence = true; TXDoneMessage message; diff --git a/firmware/common/lcd_ili9341.cpp b/firmware/common/lcd_ili9341.cpp index 612e2780..4c32e565 100644 --- a/firmware/common/lcd_ili9341.cpp +++ b/firmware/common/lcd_ili9341.cpp @@ -295,7 +295,7 @@ void ILI9341::drawBMP(const ui::Point p, const uint8_t * bitmap, const bool tran uint32_t data_idx; uint8_t by, c, count, transp_idx = 0; ui::Color line_buffer[240]; - ui::Coord px = 0, py; + uint16_t px = 0, py; ui::Color palette[16]; // Abort if bad depth or no RLE diff --git a/firmware/common/message.hpp b/firmware/common/message.hpp index efb9104b..3fb3f6cd 100644 --- a/firmware/common/message.hpp +++ b/firmware/common/message.hpp @@ -539,13 +539,13 @@ public: class RDSConfigureMessage : public Message { public: constexpr RDSConfigureMessage( - const uint32_t length + const uint16_t length ) : Message { ID::RDSConfigure }, length(length) { } - const uint32_t length = 0; + const uint16_t length = 0; }; class RetuneMessage : public Message { diff --git a/firmware/common/portapack_shared_memory.hpp b/firmware/common/portapack_shared_memory.hpp index 882c7d1b..52283f5e 100644 --- a/firmware/common/portapack_shared_memory.hpp +++ b/firmware/common/portapack_shared_memory.hpp @@ -28,9 +28,9 @@ #include "message_queue.hpp" struct JammerRange { - bool active; - int64_t center; - int64_t width; + bool enabled; + uint64_t center; + uint32_t width; uint32_t duration; }; @@ -46,12 +46,9 @@ struct SharedMemory { MessageQueue app_local_queue { app_local_queue_data, app_local_queue_k }; char m4_panic_msg[32] { 0 }; - - size_t bit_length; - JammerRange jammer_ranges[16]; - - char tx_data[512] { 0 }; + // struct tx_data union for 9x JammerRange ? + uint8_t tx_data[512] { 0 }; }; extern SharedMemory& shared_memory; diff --git a/firmware/common/ui_widget.cpp b/firmware/common/ui_widget.cpp index 769480d3..178d9f90 100644 --- a/firmware/common/ui_widget.cpp +++ b/firmware/common/ui_widget.cpp @@ -103,7 +103,7 @@ void Widget::hidden(bool hide) { if( hide ) { // TODO: Instead of dirtying parent entirely, dirty only children // that overlap with this widget. - parent()->dirty_overlapping_children_in_rect(parent_rect); + dirty_overlapping_children_in_rect(parent_rect); /* TODO: Notify self and all non-hidden children that they're * now effectively hidden? */ @@ -1116,6 +1116,35 @@ SymField::SymField( set_focusable(true); } +SymField::SymField( + Point parent_pos, + size_t length, + bool hex +) : Widget { { parent_pos, { static_cast(8 * length), 16 } } }, + length_ { length }, + hex_ { hex } +{ + uint8_t c; + + // Hex field auto-init + for (c = 0; c < length; c++) + set_symbol_list(c, "0123456789ABCDEF"); + + set_focusable(true); +} + +uint64_t SymField::value_hex_u64() { + uint8_t c; + uint64_t v = 0; + + if (hex_) { + for (c = 0; c < length_; c++) + v += values_[c] << (4 * (length_ - 1 - c)); + return v; + } else + return 0; +} + uint32_t SymField::value(const uint32_t index) { if (index >= length_) return 0; diff --git a/firmware/common/ui_widget.hpp b/firmware/common/ui_widget.hpp index ff9001cb..7360d88a 100644 --- a/firmware/common/ui_widget.hpp +++ b/firmware/common/ui_widget.hpp @@ -447,6 +447,7 @@ public: std::function on_change; SymField(Point parent_pos, size_t length); + SymField(Point parent_pos, size_t length, bool hex); SymField(const SymField&) = delete; SymField(SymField&&) = delete; @@ -455,6 +456,7 @@ public: void set_value(const uint32_t index, const uint32_t new_value); void set_length(const uint32_t new_length); void set_symbol_list(const uint32_t index, const std::string symbol_list); + uint64_t value_hex_u64(); void paint(Painter& painter) override; @@ -468,6 +470,7 @@ private: uint32_t selected_ = 0; size_t length_, prev_length_; bool erase_prev_ = false; + bool hex_ = false; int32_t clip_value(const uint32_t index, const uint32_t value); }; diff --git a/firmware/portapack-h1-havoc.bin b/firmware/portapack-h1-havoc.bin index 990d84b0a9707b0689c231fc67c06002db2abaa4..6311d0d928452313c560be009d175c5b49700111 100644 GIT binary patch delta 69120 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

&Fdh4WPZF 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