From 5e9d92d65ce0b1df70b81df3ba1836af9e48b12a Mon Sep 17 00:00:00 2001 From: Totoo Date: Sun, 10 Dec 2023 23:40:11 +0100 Subject: [PATCH] Set sr to 4m (#1636) * Set sr to 4m * Rename variable --- firmware/application/apps/ui_weatherstation.cpp | 1 + firmware/baseband/proc_weather.cpp | 9 +++++---- firmware/baseband/proc_weather.hpp | 5 ++--- firmware/common/message.hpp | 1 - 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/firmware/application/apps/ui_weatherstation.cpp b/firmware/application/apps/ui_weatherstation.cpp index a8fffe0f2..5b573df80 100644 --- a/firmware/application/apps/ui_weatherstation.cpp +++ b/firmware/application/apps/ui_weatherstation.cpp @@ -101,6 +101,7 @@ WeatherView::WeatherView(NavigationView& nav) nav_.push(entry); }; baseband::set_weather(); + receiver_model.set_sampling_rate(4'000'000); // needed too receiver_model.enable(); signal_token_tick_second = rtc_time::signal_tick_second += [this]() { on_tick_second(); diff --git a/firmware/baseband/proc_weather.cpp b/firmware/baseband/proc_weather.cpp index 708a335ae..1b6302315 100644 --- a/firmware/baseband/proc_weather.cpp +++ b/firmware/baseband/proc_weather.cpp @@ -47,10 +47,10 @@ void WeatherProcessor::execute(const buffer_c8_t& buffer) { tm += mag; if (meashl == currentHiLow && currentDuration < 10'000'000) // allow pass 'end' signal { - if (currentDuration < UINT32_MAX) currentDuration += usperTick; + if (currentDuration < UINT32_MAX) currentDuration += nsPerDecSamp; } else { // called on change, so send the last duration and dir. protoList.feed(currentHiLow, currentDuration / 1000); - currentDuration = usperTick; + currentDuration = nsPerDecSamp; currentHiLow = meashl; } } @@ -71,8 +71,9 @@ void WeatherProcessor::on_message(const Message* const message) { } void WeatherProcessor::configure(const WeatherRxConfigureMessage& message) { - constexpr size_t decim_0_output_fs = baseband_fs / decim_0.decimation_factor; - constexpr size_t decim_1_output_fs = decim_0_output_fs / decim_1.decimation_factor; + // unused: + // constexpr size_t decim_0_output_fs = baseband_fs / decim_0.decimation_factor; + // constexpr size_t decim_1_output_fs = decim_0_output_fs / decim_1.decimation_factor; decim_0.configure(taps_200k_wfm_decim_0.taps); decim_1.configure(taps_200k_wfm_decim_1.taps); diff --git a/firmware/baseband/proc_weather.hpp b/firmware/baseband/proc_weather.hpp index 4fed02173..c8372bc50 100644 --- a/firmware/baseband/proc_weather.hpp +++ b/firmware/baseband/proc_weather.hpp @@ -40,9 +40,8 @@ class WeatherProcessor : public BasebandProcessor { void on_message(const Message* const message) override; private: - static constexpr size_t baseband_fs = 4'000'000; // it works, I think we need to write that master clock in the baseband_threat , even later we decimate it. - static constexpr uint32_t usperTick = 500 * 8; // In current sw , we do not scale it due to clock. We scaled it due to less array buffer sampes due to /8 decimation. - // TODO , Pending to investigate , why ticks are not proportional to the SR clock, 500 nseg (2Mhz) , 250 nseg (4Mhz) ??? ;previous comment : "we nees ms to has to divide by 1000" + static constexpr size_t baseband_fs = 4'000'000; // it works, I think we need to write that master clock in the baseband_threat , even later we decimate it. + static constexpr uint32_t nsPerDecSamp = 1'000'000'000 / baseband_fs * 8; // Scaled it due to less array buffer sampes due to /8 decimation. 250 nseg (4Mhz) * 8 /* Array Buffer aux. used in decim0 and decim1 IQ c16 signed data ; (decim0 defines the max length of the array) */ std::array dst{}; // decim0 /4 , 2048/4 = 512 complex I,Q diff --git a/firmware/common/message.hpp b/firmware/common/message.hpp index 3b0c05036..b2193be65 100644 --- a/firmware/common/message.hpp +++ b/firmware/common/message.hpp @@ -1242,7 +1242,6 @@ class WeatherRxConfigureMessage : public Message { public: constexpr WeatherRxConfigureMessage() : Message{ID::WeatherRxConfigure} { - // todoh give some more info } };