diff --git a/firmware/baseband/spectrum_collector.cpp b/firmware/baseband/spectrum_collector.cpp index 7c55126c..364cb44b 100644 --- a/firmware/baseband/spectrum_collector.cpp +++ b/firmware/baseband/spectrum_collector.cpp @@ -29,6 +29,30 @@ #include +void SpectrumCollector::feed( + const buffer_c16_t& channel, + const uint32_t filter_pass_frequency, + const uint32_t filter_stop_frequency +) { + channel_filter_pass_frequency = filter_pass_frequency; + channel_filter_stop_frequency = filter_stop_frequency; + channel_spectrum_decimator.feed( + channel, + [this](const buffer_c16_t& data) { + this->post_message(data); + } + ); +} + +void SpectrumCollector::post_message(const buffer_c16_t& data) { + if( !channel_spectrum_request_update ) { + fft_swap(data, channel_spectrum); + channel_spectrum_sampling_rate = data.sampling_rate; + channel_spectrum_request_update = true; + events_flag(EVT_MASK_SPECTRUM); + } +} + void SpectrumCollector::update() { // Called from idle thread (after EVT_MASK_SPECTRUM is flagged) if( channel_spectrum_request_update ) { @@ -53,27 +77,3 @@ void SpectrumCollector::update() { shared_memory.application_queue.push(spectrum_message); } } - -void SpectrumCollector::feed( - const buffer_c16_t& channel, - const uint32_t filter_pass_frequency, - const uint32_t filter_stop_frequency -) { - channel_filter_pass_frequency = filter_pass_frequency; - channel_filter_stop_frequency = filter_stop_frequency; - channel_spectrum_decimator.feed( - channel, - [this](const buffer_c16_t& data) { - this->post_message(data); - } - ); -} - -void SpectrumCollector::post_message(const buffer_c16_t& data) { - if( !channel_spectrum_request_update ) { - fft_swap(data, channel_spectrum); - channel_spectrum_sampling_rate = data.sampling_rate; - channel_spectrum_request_update = true; - events_flag(EVT_MASK_SPECTRUM); - } -} diff --git a/firmware/baseband/spectrum_collector.hpp b/firmware/baseband/spectrum_collector.hpp index a072b529..203f337a 100644 --- a/firmware/baseband/spectrum_collector.hpp +++ b/firmware/baseband/spectrum_collector.hpp @@ -38,14 +38,14 @@ public: { } - void update(); - void feed( const buffer_c16_t& channel, const uint32_t filter_pass_frequency, const uint32_t filter_stop_frequency ); + void update(); + private: BlockDecimator<256> channel_spectrum_decimator;