diff --git a/firmware/application/external/flex/ui_flex_rx.cpp b/firmware/application/external/flex/ui_flex_rx.cpp index c2c82fa30..923388097 100644 --- a/firmware/application/external/flex/ui_flex_rx.cpp +++ b/firmware/application/external/flex/ui_flex_rx.cpp @@ -75,7 +75,7 @@ void FlexRxView::on_packet(const FlexPacketMessage& message) { auto bitrate = packet.bitrate(); std::string str_log = timestamp + " " + to_string_dec_uint(bitrate) + " "; - if (batch.size() < 8) return; // Ensure full block + if (batch.size() < 8) return; // Ensure full block uint32_t frame_info = batch[0]; size_t vsa = (frame_info >> 10) & 0x3F; @@ -174,7 +174,7 @@ void FlexRxView::on_packet(const FlexPacketMessage& message) { console.writeln(display_text); if (logger && logging) logger->log_decoded(packet.timestamp(), str_log + display_text); - if (vector_type == 5) { // Alpha message + if (vector_type == 5) { // Alpha message int w1 = (vector_data >> 7) & 0x7F; int w2 = ((vector_data >> 14) & 0x7F) + w1 - 1; if (w1 < 0 || w2 < 0 || static_cast(w1) >= batch.size() || static_cast(w2) >= batch.size()) continue; @@ -233,20 +233,19 @@ void FlexRxView::on_stats(const FlexStatsMessage& stats) { str_console += "SYNC LOST"; } console.writeln(str_console); - + sync_status.set_color(stats.has_sync ? Color::green() : Color::red()); } - - if (stats.baud_rate != last_baud_rate || + + if (stats.baud_rate != last_baud_rate || stats.has_sync != last_has_sync || stats.current_frames != last_frames || stats.current_bits != last_bits) { - std::string debug_text = "BR:" + to_string_dec_uint(stats.baud_rate) + - " Sync:" + (stats.has_sync ? "Y" : "N") + - " Fr:" + to_string_dec_uint(stats.current_frames); + " Sync:" + (stats.has_sync ? "Y" : "N") + + " Fr:" + to_string_dec_uint(stats.current_frames); text_debug.set(debug_text); - + last_baud_rate = stats.baud_rate; last_has_sync = stats.has_sync; last_frames = stats.current_frames; diff --git a/firmware/application/external/flex/ui_flex_rx.hpp b/firmware/application/external/flex/ui_flex_rx.hpp index ecee3c025..ce7e5dba5 100644 --- a/firmware/application/external/flex/ui_flex_rx.hpp +++ b/firmware/application/external/flex/ui_flex_rx.hpp @@ -51,7 +51,7 @@ class FlexRxView : public View { bool logging{false}; std::string current_message{}; uint32_t last_address{0}; - + uint16_t last_baud_rate{0}; bool last_has_sync{false}; uint8_t last_frames{0}; diff --git a/firmware/baseband/proc_flex.cpp b/firmware/baseband/proc_flex.cpp index fed31c76e..3c90e0892 100644 --- a/firmware/baseband/proc_flex.cpp +++ b/firmware/baseband/proc_flex.cpp @@ -248,7 +248,7 @@ void FlexCodewordExtractor::handle_sync() { void FlexCodewordExtractor::save_current_codeword() { batch_[word_count_++] = data_; clear_data_bits(); - + if (word_count_ >= flex_batch_size) { handle_batch_complete(); } @@ -291,7 +291,7 @@ void FlexProcessor::execute(const buffer_c8_t& buffer) { for (size_t i = 0; i < audio.count; ++i) { float sample = audio.p[i]; - + sync_buffer64 = (sync_buffer64 << 2); if (sample >= 0.66f) sync_buffer64 |= 0x0; @@ -340,9 +340,9 @@ void FlexProcessor::execute(const buffer_c8_t& buffer) { block_buffer[word_count] |= 0x2; else block_buffer[word_count] |= 0x3; - + bit_count += 2; - + if (bit_count >= 32) { word_count++; bit_count = 0; @@ -358,7 +358,7 @@ void FlexProcessor::execute(const buffer_c8_t& buffer) { FlexPacketMessage message(packet); shared_memory.application_queue.push(message); word_count = 0; - state = State::Idle; // Reset to find next sync + state = State::Idle; // Reset to find next sync } } break; @@ -408,7 +408,7 @@ void FlexProcessor::configure() { decim_0.configure(taps_200k_decim_0.taps); decim_1.configure(taps_16k0_decim_1.taps); channel_filter.configure(taps_16k0_channel.taps, 2); - + demod.configure(demod_input_fs, 4800); audio_output.configure(false); @@ -427,7 +427,7 @@ void FlexProcessor::reset() { frame_buffer.clear(); current_word = 0; bit_count = 0; - + bits.reset(); bit_extractor.reset(); word_extractor.reset(); diff --git a/firmware/baseband/proc_flex.hpp b/firmware/baseband/proc_flex.hpp index 46af1e76b..c3dbd7922 100644 --- a/firmware/baseband/proc_flex.hpp +++ b/firmware/baseband/proc_flex.hpp @@ -59,7 +59,8 @@ class FlexBitQueue { class FlexBitExtractor { public: - FlexBitExtractor(FlexBitQueue& bits) : bits_{bits} {} + FlexBitExtractor(FlexBitQueue& bits) + : bits_{bits} {} void extract_bits(const buffer_f32_t& audio); void configure(uint32_t sample_rate); void reset(); @@ -67,7 +68,7 @@ class FlexBitExtractor { private: static constexpr uint32_t sync1_pattern = 0xA6C6AAAA; - + struct RateInfo { enum class State : uint8_t { WaitForSample, @@ -93,7 +94,8 @@ class FlexCodewordExtractor { public: using batch_t = flex_batch_t; using batch_handler_t = std::function; - FlexCodewordExtractor(FlexBitQueue& bits, batch_handler_t on_batch) : bits_{bits}, on_batch_{on_batch} {} + FlexCodewordExtractor(FlexBitQueue& bits, batch_handler_t on_batch) + : bits_{bits}, on_batch_{on_batch} {} void process_bits(); void flush(); void reset(); @@ -162,14 +164,14 @@ class FlexProcessor : public BasebandProcessor { FlexBitQueue bits{}; FlexBitExtractor bit_extractor{bits}; FlexCodewordExtractor word_extractor{bits, [this](FlexCodewordExtractor&) { send_packet(); }}; - + State state = State::Idle; uint32_t sync_buffer = 0; std::vector frame_buffer; uint32_t current_word = 0; uint8_t bit_count = 0; uint16_t current_baud_rate = 1600; - + BasebandThread baseband_thread{baseband_fs, this, baseband::Direction::Receive}; RSSIThread rssi_thread{}; };