diff --git a/firmware/application/apps/analog_audio_app.cpp b/firmware/application/apps/analog_audio_app.cpp index 9e6e8f187..b613d358a 100644 --- a/firmware/application/apps/analog_audio_app.cpp +++ b/firmware/application/apps/analog_audio_app.cpp @@ -265,6 +265,7 @@ void AnalogAudioView::set_spec_trigger(uint16_t trigger) { } AnalogAudioView::~AnalogAudioView() { + receiver_model.set_hidden_offset(0); audio::output::stop(); receiver_model.disable(); baseband::shutdown(); @@ -431,6 +432,8 @@ void AnalogAudioView::update_modulation(ReceiverModel::Mode modulation) { receiver_model.set_sampling_rate(is_wideband_spectrum_mode ? spec_bw : 3072000); receiver_model.set_baseband_bandwidth(is_wideband_spectrum_mode ? spec_bw / 2 : 1750000); + receiver_model.set_hidden_offset(modulation == ReceiverModel::Mode::AMAudioFMApt ? -2200 : 0); // wefax needs to be shifted, see wefax rx app. + receiver_model.enable(); // TODO: This doesn't belong here! There's a better way. diff --git a/firmware/application/receiver_model.cpp b/firmware/application/receiver_model.cpp index 0be59fdee..a905210f5 100644 --- a/firmware/application/receiver_model.cpp +++ b/firmware/application/receiver_model.cpp @@ -282,6 +282,11 @@ void ReceiverModel::update_tuning_frequency() { radio::set_tuning_frequency(target_frequency() + hidden_offset + tuning_offset()); } +void ReceiverModel::set_hidden_offset(rf::Frequency offset) { + hidden_offset = offset; + update_tuning_frequency(); +} + void ReceiverModel::update_baseband_bandwidth() { radio::set_baseband_filter_bandwidth_rx(baseband_bandwidth()); } diff --git a/firmware/application/receiver_model.hpp b/firmware/application/receiver_model.hpp index b13647b8a..fd1142bd3 100644 --- a/firmware/application/receiver_model.hpp +++ b/firmware/application/receiver_model.hpp @@ -110,7 +110,7 @@ class ReceiverModel { uint8_t normalized_headphone_volume() const; void set_normalized_headphone_volume(uint8_t v); - void set_hidden_offset(rf::Frequency offset) { hidden_offset = offset; } + void set_hidden_offset(rf::Frequency offset); void enable(); void disable();