From 335cace13764a3de8e65ba0f9a4541bd22cc7abb Mon Sep 17 00:00:00 2001 From: RocketGod <57732082+RocketGod-git@users.noreply.github.com> Date: Wed, 26 Mar 2025 21:33:24 -0700 Subject: [PATCH] Remove RF TX and use PATX baseband for audio --> speaker out only (#2601) * Force 433.92 and remove metadata check We already know the frequency for all files so don't need a million metadata files to match. * Remove RF TX. Improve PATX baseband. * code formatting of course --- .../external/shoppingcart_lock/main.cpp | 12 +++-- .../shoppingcart_lock/shoppingcart_lock.cpp | 51 +++++++++---------- .../shoppingcart_lock/shoppingcart_lock.hpp | 11 ++-- 3 files changed, 37 insertions(+), 37 deletions(-) diff --git a/firmware/application/external/shoppingcart_lock/main.cpp b/firmware/application/external/shoppingcart_lock/main.cpp index 170b4e0fb..300c4b217 100644 --- a/firmware/application/external/shoppingcart_lock/main.cpp +++ b/firmware/application/external/shoppingcart_lock/main.cpp @@ -1,6 +1,8 @@ +// CVS Spam app by RocketGod (@rocketgod-git) https://betaskynet.com +// Original .cu8 files by @jimilinuxguy https://github.com/jimilinuxguy/customer-assistance-buttons-sdr +// If you can read this, you're a nerd. :P +// Come join us at https://discord.gg/thepiratesreborn -// RocketGod's Shopping Cart Lock app -// https://betaskynet.com #include "ui.hpp" #include "shoppingcart_lock.hpp" #include "ui_navigation.hpp" @@ -57,10 +59,10 @@ __attribute__((section(".external_app.app_shoppingcart_lock.application_informat 0x00, }, /*.icon_color = */ ui::Color::red().v, - /*.menu_location = */ app_location_t::TX, + /*.menu_location = */ app_location_t::UTILITIES, /*.desired_menu_position = */ -1, - /*.m4_app_tag = portapack::spi_flash::image_tag_afsk_rx */ {'P', 'A', 'T', 'X'}, - /*.m4_app_offset = */ 0x00000000, // will be filled at compile time + /*.m4_app_tag = portapack::spi_flash::image_tag_audio_tx */ {'P', 'A', 'T', 'X'}, + /*.m4_app_offset = */ 0x00000000, }; } \ No newline at end of file diff --git a/firmware/application/external/shoppingcart_lock/shoppingcart_lock.cpp b/firmware/application/external/shoppingcart_lock/shoppingcart_lock.cpp index 886c90544..9a734d278 100644 --- a/firmware/application/external/shoppingcart_lock/shoppingcart_lock.cpp +++ b/firmware/application/external/shoppingcart_lock/shoppingcart_lock.cpp @@ -1,5 +1,8 @@ -// RocketGod's Shopping Cart Lock app -// https://betaskynet.com +// CVS Spam app by RocketGod (@rocketgod-git) https://betaskynet.com +// Original .cu8 files by @jimilinuxguy https://github.com/jimilinuxguy/customer-assistance-buttons-sdr +// If you can read this, you're a nerd. :P +// Come join us at https://discord.gg/thepiratesreborn + #include "shoppingcart_lock.hpp" using namespace portapack; @@ -48,7 +51,6 @@ void ShoppingCartLock::stop() { audio::output::stop(); log_event("... Resetting State Variables"); - transmitter_model.disable(); ready_signal = false; thread_sync_complete = false; looping = false; @@ -110,18 +112,24 @@ std::string ShoppingCartLock::list_wav_files() { } void ShoppingCartLock::wait_for_thread() { - uint32_t timeout = 100; + uint32_t timeout = 1000; while (!ready_signal && timeout > 0) { chThdYield(); timeout--; } + if (!ready_signal) { + log_event("!!! Timeout waiting for ReplayThread"); + } } void ShoppingCartLock::restart_playback() { auto reader = std::make_unique(); std::string file_path = (wav_dir / current_file).string(); - if (!reader->open(file_path)) return; + if (!reader->open(file_path)) { + log_event("!!! Failed to reopen " + current_file + " for restart"); + return; + } replay_thread = std::make_unique( std::move(reader), @@ -133,9 +141,8 @@ void ShoppingCartLock::restart_playback() { EventDispatcher::send_message(message); }); - log_event(">> SENDING <<"); + log_event(">> RESTARTING AUDIO <<"); audio::output::start(); - transmitter_model.enable(); } void ShoppingCartLock::play_audio(const std::string& filename, bool loop) { @@ -166,33 +173,24 @@ void ShoppingCartLock::play_audio(const std::string& filename, bool loop) { wait_for_thread(); - log_event("... Configuring Baseband"); - - const uint32_t bb_sample_rate = 1536000; - const uint32_t decimation = bb_sample_rate / wav_sample_rate; - + baseband::set_sample_rate(wav_sample_rate); + audio::set_rate(wav_sample_rate <= 12000 ? audio::Rate::Hz_12000 : wav_sample_rate <= 24000 ? audio::Rate::Hz_24000 + : audio::Rate::Hz_48000); baseband::set_audiotx_config( - bb_sample_rate / decimation, + wav_sample_rate, + 0.0f, 0.0f, - 5.0f, wav_bits_per_sample, wav_bits_per_sample, 0, - true, + false, false, false, false); - baseband::set_sample_rate(wav_sample_rate); - - log_event("... Starting Audio Output"); audio::output::start(); - log_event("... Setting Max Volume"); - audio::headphone::set_volume(audio::headphone::volume_range().max); - - transmitter_model.enable(); - - log_event(">>> Playback Started <<<"); + volume_t max_volume = audio::headphone::volume_range().max; + audio::headphone::set_volume(max_volume); } ShoppingCartLock::ShoppingCartLock(NavigationView& nav) @@ -225,9 +223,6 @@ ShoppingCartLock::ShoppingCartLock(NavigationView& nav) log_event("[+] INITIALIZATION COMPLETE"); log_event("[+] PORTAPACK ARMED"); log_event("[*] STATUS: READY"); - log_event("This app use speaker to"); - log_event("produce LF signal, but"); - log_event("also trigger radio TX"); } ShoppingCartLock::~ShoppingCartLock() { @@ -235,4 +230,4 @@ ShoppingCartLock::~ShoppingCartLock() { baseband::shutdown(); } -} // namespace ui::external_app::shoppingcart_lock +} // namespace ui::external_app::shoppingcart_lock \ No newline at end of file diff --git a/firmware/application/external/shoppingcart_lock/shoppingcart_lock.hpp b/firmware/application/external/shoppingcart_lock/shoppingcart_lock.hpp index abea3ca74..dc88d2cdd 100644 --- a/firmware/application/external/shoppingcart_lock/shoppingcart_lock.hpp +++ b/firmware/application/external/shoppingcart_lock/shoppingcart_lock.hpp @@ -1,5 +1,8 @@ -// RocketGod's Shopping Cart Lock app -// https://betaskynet.com +// CVS Spam app by RocketGod (@rocketgod-git) https://betaskynet.com +// Original .cu8 files by @jimilinuxguy https://github.com/jimilinuxguy/customer-assistance-buttons-sdr +// If you can read this, you're a nerd. :P +// Come join us at https://discord.gg/thepiratesreborn + #pragma once #include "ui_widget.hpp" @@ -27,8 +30,8 @@ class ShoppingCartLock : public View { void focus() override; private: - static constexpr size_t BUFFER_SIZE = 8192; - static constexpr size_t NUM_BUFFERS = 8; + static constexpr size_t BUFFER_SIZE = 512; + static constexpr size_t NUM_BUFFERS = 2; const std::string shoppingcart_lock_file{"shopping_cart_lock.wav"}; const std::string shoppingcart_unlock_file{"shopping_cart_unlock.wav"};