From bb29efeda6efb3cd6bc87b612a2858865949313b Mon Sep 17 00:00:00 2001 From: furrtek Date: Fri, 23 Sep 2016 17:34:50 +0200 Subject: [PATCH] Added Nuoptix DTMF sync transmit (Disney parades, light shows...) Soundboard ignores stereo files --- firmware/application/CMakeLists.txt | 1 + firmware/application/Makefile | 27 ++++ firmware/application/baseband_api.cpp | 9 ++ firmware/application/baseband_api.hpp | 1 + firmware/application/ui_navigation.cpp | 4 +- firmware/application/ui_nuoptix.cpp | 164 +++++++++++++++++++++++++ firmware/application/ui_nuoptix.hpp | 128 +++++++++++++++++++ firmware/application/ui_soundboard.cpp | 74 ++++++----- firmware/application/ui_soundboard.hpp | 7 +- firmware/baseband/CMakeLists.txt | 7 ++ firmware/baseband/proc_dtmf_tx.cpp | 136 ++++++++++++++++++++ firmware/baseband/proc_dtmf_tx.hpp | 86 +++++++++++++ firmware/common/message.hpp | 19 +++ firmware/common/spi_image.hpp | 1 + firmware/portapack-h1-havoc.bin | Bin 772604 -> 775100 bytes 15 files changed, 620 insertions(+), 44 deletions(-) create mode 100644 firmware/application/ui_nuoptix.cpp create mode 100644 firmware/application/ui_nuoptix.hpp create mode 100644 firmware/baseband/proc_dtmf_tx.cpp create mode 100644 firmware/baseband/proc_dtmf_tx.hpp diff --git a/firmware/application/CMakeLists.txt b/firmware/application/CMakeLists.txt index 87a169487..f754a6f4b 100644 --- a/firmware/application/CMakeLists.txt +++ b/firmware/application/CMakeLists.txt @@ -161,6 +161,7 @@ set(CPPSRC ui_alphanum.cpp ui_spectrum.cpp ui_about.cpp + ui_nuoptix.cpp # ui_jammer.cpp ui_handwrite.cpp ui_afsksetup.cpp diff --git a/firmware/application/Makefile b/firmware/application/Makefile index e2d0e61b6..7ad789f1a 100644 --- a/firmware/application/Makefile +++ b/firmware/application/Makefile @@ -3894,6 +3894,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_nuoptix.obj: ui_nuoptix.cpp.obj +.PHONY : ui_nuoptix.obj + +# target to build an object file +ui_nuoptix.cpp.obj: + cd /home/furrtek/portapack-hackrf && $(MAKE) -f firmware/application/CMakeFiles/application.elf.dir/build.make firmware/application/CMakeFiles/application.elf.dir/ui_nuoptix.cpp.obj +.PHONY : ui_nuoptix.cpp.obj + +ui_nuoptix.i: ui_nuoptix.cpp.i +.PHONY : ui_nuoptix.i + +# target to preprocess a source file +ui_nuoptix.cpp.i: + cd /home/furrtek/portapack-hackrf && $(MAKE) -f firmware/application/CMakeFiles/application.elf.dir/build.make firmware/application/CMakeFiles/application.elf.dir/ui_nuoptix.cpp.i +.PHONY : ui_nuoptix.cpp.i + +ui_nuoptix.s: ui_nuoptix.cpp.s +.PHONY : ui_nuoptix.s + +# target to generate assembly for a file +ui_nuoptix.cpp.s: + cd /home/furrtek/portapack-hackrf && $(MAKE) -f firmware/application/CMakeFiles/application.elf.dir/build.make firmware/application/CMakeFiles/application.elf.dir/ui_nuoptix.cpp.s +.PHONY : ui_nuoptix.cpp.s + ui_rds.obj: ui_rds.cpp.obj .PHONY : ui_rds.obj @@ -4663,6 +4687,9 @@ help: @echo "... ui_navigation.obj" @echo "... ui_navigation.i" @echo "... ui_navigation.s" + @echo "... ui_nuoptix.obj" + @echo "... ui_nuoptix.i" + @echo "... ui_nuoptix.s" @echo "... ui_rds.obj" @echo "... ui_rds.i" @echo "... ui_rds.s" diff --git a/firmware/application/baseband_api.cpp b/firmware/application/baseband_api.cpp index e30e1392a..a117285eb 100644 --- a/firmware/application/baseband_api.cpp +++ b/firmware/application/baseband_api.cpp @@ -141,6 +141,15 @@ void set_pocsag() { 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, + tone_length, + pause_length + }; + send_message(&message); +} + static bool baseband_image_running = false; void run_image(const portapack::spi_flash::image_tag_t image_tag) { diff --git a/firmware/application/baseband_api.hpp b/firmware/application/baseband_api.hpp index c4d959c72..d1c185020 100644 --- a/firmware/application/baseband_api.hpp +++ b/firmware/application/baseband_api.hpp @@ -61,6 +61,7 @@ void set_afsk_data(const uint32_t afsk_samples_per_bit, const uint32_t afsk_phas void set_ook_data(const uint32_t stream_length, const uint32_t samples_per_bit, const uint8_t repeat, const uint32_t pause_symbols); void set_pocsag(); +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); void shutdown(); diff --git a/firmware/application/ui_navigation.cpp b/firmware/application/ui_navigation.cpp index ce4b69773..b394fa05b 100644 --- a/firmware/application/ui_navigation.cpp +++ b/firmware/application/ui_navigation.cpp @@ -37,6 +37,7 @@ //#include "ui_closecall.hpp" // DEBUG //#include "ui_freqman.hpp" // DEBUG +#include "ui_nuoptix.hpp" #include "ui_soundboard.hpp" #include "ui_encoders.hpp" @@ -241,7 +242,7 @@ ReceiverMenuView::ReceiverMenuView(NavigationView& nav) { /* SystemMenuView ********************************************************/ SystemMenuView::SystemMenuView(NavigationView& nav) { - add_items<12>({ { + add_items<13>({ { { "Play dead", ui::Color::red(), [&nav](){ nav.push(false); } }, { "Receiver RX", ui::Color::cyan(), [&nav](){ nav.push(); } }, { "Capture RX", ui::Color::cyan(), [&nav](){ nav.push(); } }, @@ -255,6 +256,7 @@ SystemMenuView::SystemMenuView(NavigationView& nav) { { "Xylos TX", ui::Color::green(), [&nav](){ nav.push(); } }, { "TEDI/LCR TX", ui::Color::yellow(), [&nav](){ nav.push(); } }, { "OOK encoders TX", ui::Color::orange(), [&nav](){ nav.push(); } }, + { "Nuoptix DTMF sync TX", ui::Color::purple(), [&nav](){ nav.push(); } }, { "RDS TX", ui::Color::red(), [&nav](){ nav.push(); } }, //{ "Analyze", ui::Color::white(), [&nav](){ nav.push(); } }, { "Setup", ui::Color::white(), [&nav](){ nav.push(); } }, diff --git a/firmware/application/ui_nuoptix.cpp b/firmware/application/ui_nuoptix.cpp new file mode 100644 index 000000000..e2aa27f4e --- /dev/null +++ b/firmware/application/ui_nuoptix.cpp @@ -0,0 +1,164 @@ +/* + * 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 "ui_nuoptix.hpp" + +#include "ch.h" + +//#include "lfsr_random.hpp" +#include "ui_alphanum.hpp" +#include "portapack.hpp" +#include "string_format.hpp" + +#include "portapack_shared_memory.hpp" + +#include +#include + +using namespace portapack; + +namespace ui { + +void NuoptixView::focus() { + number_timecode.focus(); +} + +void NuoptixView::on_tuning_frequency_changed(rf::Frequency f) { + transmitter_model.set_tuning_frequency(f); +} + +void NuoptixView::transmit(bool setup) { + uint8_t mod; + uint8_t c; + + if (!txing) { + transmitter_model.disable(); + return; + } + + if (setup) { + pbar.set_max(4); + + timecode = number_timecode.value(); + + 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(); + + shared_memory.tx_data[0] = '*'; // "Pre-tone for restart" method #1 + shared_memory.tx_data[1] = 'A'; // "Restart" method #1 + } else { + shared_memory.tx_data[0] = '#'; + shared_memory.tx_data[1] = (timecode / 1000) % 10; + chThdSleepMilliseconds(92); // 141-49ms + number_timecode.set_value(timecode); + } + + pbar.set_value(0); + + //strcpy("#00028", shared_memory.tx_data); + shared_memory.tx_data[2] = (timecode / 100) % 10; + shared_memory.tx_data[3] = (timecode / 10) % 10; + shared_memory.tx_data[4] = timecode % 10; + + mod = 0; + for (c = 1; c < 5; c++) + if (shared_memory.tx_data[c] <= 9) + mod += shared_memory.tx_data[c]; + + mod = 10 - (mod % 10); + if (mod == 10) mod = 0; // Is this right ? + text_mod.set("Mod: " + to_string_dec_uint(mod)); + + shared_memory.tx_data[5] = mod; + + shared_memory.tx_data[6] = 0xFF; + + baseband::set_dtmf_data(number_bw.value(), 49, 49); // 49ms tone, 49ms space + + timecode++; +} + +NuoptixView::NuoptixView( + NavigationView& nav +) +{ + + baseband::run_image(portapack::spi_flash::image_tag_dtmf_tx); + + add_children({ { + &field_frequency, + &number_bw, + &text_kHz, + &number_timecode, + &text_timecode, + &text_mod, + &pbar, + &button_tx, + &button_exit + } }); + + //check_loop.set_value(false); + number_bw.set_value(15); + number_timecode.set_value(1); + + field_frequency.set_value(transmitter_model.tuning_frequency()); + field_frequency.set_step(10000); + field_frequency.on_change = [this](rf::Frequency f) { + this->on_tuning_frequency_changed(f); + }; + field_frequency.on_edit = [this, &nav]() { + // TODO: Provide separate modal method/scheme? + auto new_view = nav.push(transmitter_model.tuning_frequency()); + new_view->on_changed = [this](rf::Frequency f) { + this->on_tuning_frequency_changed(f); + this->field_frequency.set_value(f); + }; + }; + + button_tx.on_select = [this](Button&){ + if (txing) { + txing = false; + } else { + txing = true; + transmit(true); + } + }; + + button_exit.on_select = [&nav](Button&){ + nav.pop(); + }; +} + +NuoptixView::~NuoptixView() { + transmitter_model.disable(); + baseband::shutdown(); +} + +} diff --git a/firmware/application/ui_nuoptix.hpp b/firmware/application/ui_nuoptix.hpp new file mode 100644 index 000000000..514daeeae --- /dev/null +++ b/firmware/application/ui_nuoptix.hpp @@ -0,0 +1,128 @@ +/* + * 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 __UI_NUOPTIX_H__ +#define __UI_NUOPTIX_H__ + +#include "ui.hpp" +#include "ui_widget.hpp" +#include "ui_font_fixed_8x16.hpp" +#include "baseband_api.hpp" +#include "ui_navigation.hpp" +#include "ui_receiver.hpp" +#include "message.hpp" + +namespace ui { + +class NuoptixView : public View { +public: + NuoptixView(NavigationView& nav); + ~NuoptixView(); + + void focus() override; + + std::string title() const override { return "Nuoptix sync"; }; + +private: + /*enum tx_modes { + NORMAL = 0, + RANDOM + }; + + tx_modes tx_mode = NORMAL;*/ + + void on_tuning_frequency_changed(rf::Frequency f); + void transmit(bool setup); + + bool txing = false; + uint32_t timecode; + + FrequencyField field_frequency { + { 1 * 8, 4 }, + }; + + NumberField number_bw { + { 13 * 8, 4 }, + 3, + {1, 150}, + 1, + ' ' + }; + + Text text_kHz { + { 16 * 8, 4, 3 * 8, 16 }, + "kHz" + }; + + Text text_timecode { + { 10 * 8, 32, 9 * 8, 16 }, + "Timecode:" + }; + + NumberField number_timecode { + { 13 * 8, 48 }, + 4, + { 1, 9999 }, + 1, + '0' + }; + + Text text_mod { + { 10 * 8, 80, 6 * 8, 16 }, + "Mod: " + }; + + ProgressBar pbar { + { 16, 236, 208, 16 } + }; + + /*Checkbox check_loop { + { 16, 274 }, + 4, + "Loop" + };*/ + + Button button_tx { + { 32, 270, 64, 32 }, + "TX" + }; + + Button button_exit { + { 160, 270, 64, 32 }, + "Exit" + }; + + MessageHandlerRegistration message_handler_tx_done { + Message::ID::TXDone, + [this](const Message* const p) { + const auto message = *reinterpret_cast(p); + if (message.n == 64) + transmit(false); + else + pbar.set_value(message.n); + } + }; +}; + +} /* namespace ui */ + +#endif/*__UI_NUOPTIX_H__*/ diff --git a/firmware/application/ui_soundboard.cpp b/firmware/application/ui_soundboard.cpp index a0d32c579..e78e87a15 100644 --- a/firmware/application/ui_soundboard.cpp +++ b/firmware/application/ui_soundboard.cpp @@ -29,14 +29,9 @@ #include "lfsr_random.hpp" #include "ui_alphanum.hpp" -//#include "ff.h" -//#include "hackrf_gpio.hpp" #include "portapack.hpp" -//#include "radio.hpp" -//#include "event_m0.hpp" #include "string_format.hpp" -//#include "hackrf_hal.hpp" #include "portapack_shared_memory.hpp" #include @@ -206,43 +201,44 @@ SoundBoardView::SoundBoardView( auto error = file.open("/wav/" + file_name); - file.seek(40); - file.read(file_buffer, 4); - size = fb_to_uint32(file_buffer); - sounds[c].size = size; - - file.seek(22); - file.read(file_buffer, 2); - if (fb_to_uint16(file_buffer) > 1) { - sounds[c].stereo = true; - size /= 2; - } else - sounds[c].stereo = false; - - file.seek(24); - file.read(file_buffer, 4); - sounds[c].sample_rate = fb_to_uint32(file_buffer); - - file.seek(34); - file.read(file_buffer, 2); - if (fb_to_uint16(file_buffer) > 8) { - sounds[c].sixteenbit = true; - size /= 2; - } else - sounds[c].sixteenbit = false; - - sounds[c].ms_duration = (size * 1000) / sounds[c].sample_rate; - sounds[c].sample_duration = size; - - sounds[c].filename = file_name; - sounds[c].shortname = remove_filename_extension(file_name); - - c++; - if (c == 100) break; + if (!error.is_valid()) { + + file.seek(22); + file.read(file_buffer, 2); + + // Is file mono ? + if (fb_to_uint16(file_buffer) == 1) { + file.seek(40); + file.read(file_buffer, 4); + size = fb_to_uint32(file_buffer); + sounds[c].size = size; + + file.seek(24); + file.read(file_buffer, 4); + sounds[c].sample_rate = fb_to_uint32(file_buffer); + + file.seek(34); + file.read(file_buffer, 2); + if (fb_to_uint16(file_buffer) > 8) { + sounds[c].sixteenbit = true; + size /= 2; + } else + sounds[c].sixteenbit = false; + + sounds[c].ms_duration = (size * 1000) / sounds[c].sample_rate; + sounds[c].sample_duration = size; + + sounds[c].filename = file_name; + sounds[c].shortname = remove_filename_extension(file_name); + + c++; + if (c == 100) break; // Limit to 100 files + } + } } max_sound = c; - max_page = max_sound / 21; + max_page = max_sound / 21; // 21 buttons per page add_children({ { &field_frequency, diff --git a/firmware/application/ui_soundboard.hpp b/firmware/application/ui_soundboard.hpp index c4934c11f..9f07c2f93 100644 --- a/firmware/application/ui_soundboard.hpp +++ b/firmware/application/ui_soundboard.hpp @@ -54,7 +54,6 @@ private: struct sound { std::string filename = ""; std::string shortname = ""; - bool stereo = false; bool sixteenbit = false; uint32_t sample_rate = 0; uint32_t size = 0; @@ -120,9 +119,9 @@ private: }; NumberField number_bw { - { 14 * 8, 4 }, - 2, - {1, 50}, + { 13 * 8, 4 }, + 3, + {1, 150}, 1, ' ' }; diff --git a/firmware/baseband/CMakeLists.txt b/firmware/baseband/CMakeLists.txt index 548a28313..4b7dc0884 100644 --- a/firmware/baseband/CMakeLists.txt +++ b/firmware/baseband/CMakeLists.txt @@ -375,6 +375,13 @@ set(MODE_CPPSRC ) DeclareTargets(PXYL xylos) +### DTMF TX + +set(MODE_CPPSRC + proc_dtmf_tx.cpp +) +DeclareTargets(PDTX dtmf_tx) + ### RDS set(MODE_CPPSRC diff --git a/firmware/baseband/proc_dtmf_tx.cpp b/firmware/baseband/proc_dtmf_tx.cpp new file mode 100644 index 000000000..0bcb64e5a --- /dev/null +++ b/firmware/baseband/proc_dtmf_tx.cpp @@ -0,0 +1,136 @@ +/* + * 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 "proc_dtmf_tx.hpp" +#include "portapack_shared_memory.hpp" +#include "sine_table_int8.hpp" +//#include "audio_output.hpp" +#include "event_m4.hpp" + +#include + +// 153600 = 1000ms +// + +void DTMFTXProcessor::execute(const buffer_c8_t& buffer){ + + // This is called at 1536000/2048 = 750Hz + // DTMF samplerate = 153600Hz + + if (!configured) return; + + //ai = 0; + for (size_t i = 0; i> 18] >> 1; + sample += sine_table_i8[(tone_b_phase & 0x03FC0000) >> 18] >> 1; + + tone_a_phase += DTMF_LUT[tone_code][0]; + tone_b_phase += DTMF_LUT[tone_code][1]; + } else { + sample = 0; + } + } else { + as--; + } + + // FM + frq = sample * bw; + + phase = (phase + frq); + sphase = phase + (64 << 18); + + re = (sine_table_i8[(sphase & 0x03FC0000) >> 18]); + im = (sine_table_i8[(phase & 0x03FC0000) >> 18]); + + buffer.p[i] = {(int8_t)re, (int8_t)im}; + } + + //AudioOutput::fill_audio_buffer(preview_audio_buffer, true); +} + +void DTMFTXProcessor::on_message(const Message* const msg) { + const auto message = *reinterpret_cast(msg); + + if (message.id == Message::ID::DTMFTXConfig) { + // 1<<18 = 262144 + // m = (262144 * a) / 1536000 + // a = 262144 / 1536000 (*1000 = 171) + bw = 171 * (message.bw); + tone_length = message.tone_length; + pause_length = message.pause_length; + as = 0; + //memcpy(tone_list, shared_memory.tx_data, 32); + //tone_list[31] = 0; + tone = false; + timer = 0; + tone_idx = 0; + + configured = true; + } +} + +int main() { + EventDispatcher event_dispatcher { std::make_unique() }; + event_dispatcher.run(); + return 0; +} diff --git a/firmware/baseband/proc_dtmf_tx.hpp b/firmware/baseband/proc_dtmf_tx.hpp new file mode 100644 index 000000000..8389f205c --- /dev/null +++ b/firmware/baseband/proc_dtmf_tx.hpp @@ -0,0 +1,86 @@ +/* + * 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 __PROC_DTMFTX_H__ +#define __PROC_DTMFTX_H__ + +#include "baseband_processor.hpp" +#include "baseband_thread.hpp" + +#define DTMF_PHASEINC (436.91) // (65536*1024)/1536000*10 + +class DTMFTXProcessor : public BasebandProcessor { +public: + void execute(const buffer_c8_t& buffer) override; + + void on_message(const Message* const msg) override; + +private: + bool configured = false; + + BasebandThread baseband_thread { 1536000, this, NORMALPRIO + 20, baseband::Direction::Transmit }; + + // 0123456789ABCD#* + const uint32_t DTMF_LUT[16][2] = { + { (uint32_t)(1336*DTMF_PHASEINC), (uint32_t)(941*DTMF_PHASEINC) }, + { (uint32_t)(1209*DTMF_PHASEINC), (uint32_t)(697*DTMF_PHASEINC) }, + { (uint32_t)(1336*DTMF_PHASEINC), (uint32_t)(697*DTMF_PHASEINC) }, + { (uint32_t)(1477*DTMF_PHASEINC), (uint32_t)(697*DTMF_PHASEINC) }, + { (uint32_t)(1209*DTMF_PHASEINC), (uint32_t)(770*DTMF_PHASEINC) }, + { (uint32_t)(1336*DTMF_PHASEINC), (uint32_t)(770*DTMF_PHASEINC) }, + { (uint32_t)(1477*DTMF_PHASEINC), (uint32_t)(770*DTMF_PHASEINC) }, + { (uint32_t)(1209*DTMF_PHASEINC), (uint32_t)(852*DTMF_PHASEINC) }, + { (uint32_t)(1336*DTMF_PHASEINC), (uint32_t)(852*DTMF_PHASEINC) }, + { (uint32_t)(1477*DTMF_PHASEINC), (uint32_t)(852*DTMF_PHASEINC) }, + { (uint32_t)(1633*DTMF_PHASEINC), (uint32_t)(697*DTMF_PHASEINC) }, + { (uint32_t)(1633*DTMF_PHASEINC), (uint32_t)(770*DTMF_PHASEINC) }, + { (uint32_t)(1633*DTMF_PHASEINC), (uint32_t)(852*DTMF_PHASEINC) }, + { (uint32_t)(1633*DTMF_PHASEINC), (uint32_t)(941*DTMF_PHASEINC) }, + { (uint32_t)(1477*DTMF_PHASEINC), (uint32_t)(941*DTMF_PHASEINC) }, + { (uint32_t)(1209*DTMF_PHASEINC), (uint32_t)(941*DTMF_PHASEINC) } + }; + + uint32_t tone_length, pause_length; + uint32_t as, bw; + uint8_t tone_list[32]; + uint8_t tone_idx = 0, tone_code = 0; + + uint32_t timer = 0; + + bool tone = false; + + int8_t re, im; + int8_t sample; + + //int16_t audio_data[64]; + /*const buffer_s16_t preview_audio_buffer { + audio_data, + sizeof(int16_t)*64 + };*/ + + TXDoneMessage txdone_message; + + uint32_t tone_a_phase, tone_b_phase, phase, sphase; + int32_t frq; +}; + +#endif diff --git a/firmware/common/message.hpp b/firmware/common/message.hpp index 0f0c438a5..fc85fa82e 100644 --- a/firmware/common/message.hpp +++ b/firmware/common/message.hpp @@ -75,6 +75,7 @@ public: RDSConfigure = 26, AudioTXConfig = 27, POCSAGConfigure = 28, + DTMFTXConfig = 29, POCSAGPacket = 30, @@ -633,6 +634,24 @@ public: const uint32_t rate; }; +class DTMFTXConfigMessage : public Message { +public: + constexpr DTMFTXConfigMessage( + const uint32_t bw, + const uint32_t tone_length, + const uint32_t pause_length + ) : Message { ID::DTMFTXConfig }, + bw(bw), + tone_length(tone_length), + pause_length(pause_length) + { + } + + const uint32_t bw; + const uint32_t tone_length; + const uint32_t pause_length; +}; + // TODO: use streaming buffer instead class FIFOSignalMessage : public Message { public: diff --git a/firmware/common/spi_image.hpp b/firmware/common/spi_image.hpp index 90ccd4529..a74732061 100644 --- a/firmware/common/spi_image.hpp +++ b/firmware/common/spi_image.hpp @@ -79,6 +79,7 @@ constexpr image_tag_t image_tag_epar { 'P', 'E', 'P', 'R' }; constexpr image_tag_t image_tag_xylos { 'P', 'X', 'Y', 'L' }; constexpr image_tag_t image_tag_rds { 'P', 'R', 'D', 'S' }; constexpr image_tag_t image_tag_ook { 'P', 'O', 'O', 'K' }; +constexpr image_tag_t image_tag_dtmf_tx { 'P', 'D', 'T', 'X' }; constexpr image_tag_t image_tag_hackrf { 'H', 'R', 'F', '1' }; diff --git a/firmware/portapack-h1-havoc.bin b/firmware/portapack-h1-havoc.bin index adef30c299cfd8c27dbdc867b6ee1f7acbf74127..55c13bcb1871892de56f421c445456f65e70fa70 100644 GIT binary patch delta 61670 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 WV%}t->Bq|S8u8HhKI?X5aQ_9;ZSjZz delta 57618 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τx`&S?86! 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 Z6~8>>6FW>Sc(Ov=;`8x9