mirror of
https://github.com/eried/portapack-mayhem.git
synced 2025-08-14 01:15:38 -04:00
Radio state initialization (#1236)
* WIP RadioState init * TX/RX cleanup * Update all apps using RadioState and setting modulation mode * Set apps to use AM mode * Don't push modulation update in RadioState. * Support passing overrides to Audio and MicTX * Support set_nearest on OptionsField, fix recon step * Fix audio, typo --------- Co-authored-by: kallanreed <kylereed@manzana.lan> Co-authored-by: kallanreed <kallanreed@noreply.github.com>
This commit is contained in:
parent
80c769b97d
commit
9b665a43c5
35 changed files with 500 additions and 496 deletions
|
@ -1,6 +1,7 @@
|
|||
/*
|
||||
* Copyright (C) 2015 Jared Boone, ShareBrained Technology, Inc.
|
||||
* Copyright (C) 2016 Furrtek
|
||||
* Copyright (C) 2023 Kyle Reed
|
||||
*
|
||||
* This file is part of PortaPack.
|
||||
*
|
||||
|
@ -26,77 +27,68 @@
|
|||
#include <cstdint>
|
||||
#include <cstddef>
|
||||
|
||||
#include "receiver_model.hpp"
|
||||
#include "app_settings.hpp"
|
||||
#include "message.hpp"
|
||||
#include "rf_path.hpp"
|
||||
#include "max2837.hpp"
|
||||
#include "volume.hpp"
|
||||
#include "message.hpp"
|
||||
#include "receiver_model.hpp"
|
||||
#include "rf_path.hpp"
|
||||
#include "signal.hpp"
|
||||
|
||||
class TransmitterModel {
|
||||
public:
|
||||
struct settings_t {
|
||||
uint32_t baseband_bandwidth = max283x::filter::bandwidth_minimum;
|
||||
uint32_t sampling_rate = 3'072'000;
|
||||
uint32_t channel_bandwidth = 1;
|
||||
/* 35 should give approx 1m transmission range. */
|
||||
uint8_t tx_gain_db = 35;
|
||||
bool rf_amp = false;
|
||||
};
|
||||
|
||||
/* The frequency to transmit on. */
|
||||
rf::Frequency target_frequency() const;
|
||||
void set_target_frequency(rf::Frequency f);
|
||||
|
||||
void set_antenna_bias();
|
||||
|
||||
bool rf_amp() const;
|
||||
void set_rf_amp(bool enabled);
|
||||
|
||||
// TODO: does this make sense on TX?
|
||||
int32_t lna() const;
|
||||
void set_lna(int32_t v_db);
|
||||
|
||||
uint32_t baseband_bandwidth() const;
|
||||
void set_baseband_bandwidth(uint32_t v);
|
||||
|
||||
// TODO: does this make sense on TX?
|
||||
int32_t vga() const;
|
||||
void set_vga(int32_t v_db);
|
||||
|
||||
int32_t tx_gain() const;
|
||||
void set_tx_gain(int32_t v_db);
|
||||
|
||||
// TODO: Doesn't actually affect radio.
|
||||
uint32_t channel_bandwidth() const;
|
||||
void set_channel_bandwidth(uint32_t v);
|
||||
|
||||
// TODO: does this make sense on TX?
|
||||
uint32_t sampling_rate() const;
|
||||
void set_sampling_rate(uint32_t v);
|
||||
|
||||
uint8_t tx_gain() const;
|
||||
void set_tx_gain(uint8_t v_db);
|
||||
|
||||
bool rf_amp() const;
|
||||
void set_rf_amp(bool enabled);
|
||||
|
||||
void set_antenna_bias();
|
||||
|
||||
void enable();
|
||||
void disable();
|
||||
|
||||
/* Sets the model values without updating the radio. */
|
||||
void set_configuration_without_update(
|
||||
uint32_t baseband_bandwidth,
|
||||
uint32_t sampling_rate);
|
||||
void initialize();
|
||||
|
||||
void configure_from_app_settings(const app_settings::AppSettings& settings);
|
||||
|
||||
/* Get access to the underlying settings to allow
|
||||
* values to be set directly without calling update. */
|
||||
settings_t& settings() { return settings_; }
|
||||
|
||||
private:
|
||||
bool enabled_{false};
|
||||
bool rf_amp_{false};
|
||||
int32_t lna_gain_db_{0};
|
||||
uint32_t channel_bandwidth_{1};
|
||||
uint32_t baseband_bandwidth_{max2837::filter::bandwidth_minimum};
|
||||
int32_t vga_gain_db_{8};
|
||||
/* 35 should give approx 1m transmission range. */
|
||||
int32_t tx_gain_db_{35};
|
||||
uint32_t sampling_rate_{3072000};
|
||||
settings_t settings_{};
|
||||
bool enabled_ = false;
|
||||
SignalToken signal_token_tick_second{};
|
||||
|
||||
void update_tuning_frequency();
|
||||
void update_antenna_bias();
|
||||
void update_rf_amp();
|
||||
void update_lna();
|
||||
void update_baseband_bandwidth();
|
||||
void update_vga();
|
||||
void update_tx_gain();
|
||||
void update_sampling_rate();
|
||||
void update_tx_gain();
|
||||
void update_rf_amp();
|
||||
void update_antenna_bias();
|
||||
void on_tick_second();
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue