diff options
Diffstat (limited to 'sw/picardy/src/state.rs')
-rw-r--r-- | sw/picardy/src/state.rs | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/sw/picardy/src/state.rs b/sw/picardy/src/state.rs index ed99087..239cf18 100644 --- a/sw/picardy/src/state.rs +++ b/sw/picardy/src/state.rs @@ -3,6 +3,8 @@ pub const VHF_INITIAL_VFO : u32 = 144_300_000; pub const VHF_LO : u32 = 114_286_400; pub const BFO_LSB : u32 = 6_000_700 + 1_100; pub const BFO_USB : u32 = 6_000_700 - 1_100; +pub const BFO_CW : u32 = 6_000_700 - 1_100; +pub const QRG_CORRECTION : i32 = -1_600; // Defines which parameter is changed by the encoder #[derive(Clone, Copy, PartialEq, Eq)] @@ -18,20 +20,22 @@ pub enum VFOSelection { B, } +#[derive(Clone)] pub enum TuneSpeed { Slow, Mid, Fast } -#[derive(Clone, Copy)] -pub enum FilterShift { +#[derive(PartialEq, Eq, Clone, Copy)] +pub enum Mode { LSB, USB, - Custom(u32), + CustomShift(u32), + CW, } -#[derive(PartialEq, Eq)] +#[derive(Clone, PartialEq, Eq)] pub enum SequenceState { Rx, Switching, @@ -44,16 +48,17 @@ impl SequenceState { } } +#[derive(Clone)] pub struct State { pub ui_sel : UISelection, pub vfo_a : u32, pub vfo_b : u32, pub vfo_sel : VFOSelection, pub rit : i32, - pub filter_shift : FilterShift, - pub bfo_tune_fail : bool, + pub mode : Mode, pub tune_speed : TuneSpeed, pub sequence_state : SequenceState, + pub update_disp_counter : u8, } impl State { @@ -61,21 +66,22 @@ impl State { State { rit : 0, ui_sel : UISelection::VFO, - filter_shift : FilterShift::USB, - bfo_tune_fail : false, + mode : Mode::USB, vfo_sel : VFOSelection::A, vfo_a : VHF_INITIAL_VFO, vfo_b : VHF_INITIAL_VFO, tune_speed : TuneSpeed::Mid, sequence_state : SequenceState::Rx, + update_disp_counter : 0, } } pub fn bfo(&self) -> u32 { - match self.filter_shift { - FilterShift::LSB => BFO_LSB, - FilterShift::USB => BFO_USB, - FilterShift::Custom(fs) => fs, + match self.mode { + Mode::LSB => BFO_LSB, + Mode::USB => BFO_USB, + Mode::CustomShift(fs) => fs, + Mode::CW => BFO_CW, } } |