diff options
Diffstat (limited to 'sw/picardy/src/main.rs')
-rw-r--r-- | sw/picardy/src/main.rs | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/sw/picardy/src/main.rs b/sw/picardy/src/main.rs index 66c00c5..e6d2469 100644 --- a/sw/picardy/src/main.rs +++ b/sw/picardy/src/main.rs @@ -67,6 +67,8 @@ enum FilterShift { Custom(u32), } +const VHF_BAND_EDGE : u32 = 144_000_000; +const VHF_LO : u32 = 114_286_000; const BFO_LSB : u32 = 4_915_940; const BFO_USB : u32 = 4_914_910; @@ -74,7 +76,7 @@ struct State { mode : Mode, filter_shift : FilterShift, bfo_tune_fail : bool, - qrg : u32, + vhf_qrg : u32, tune_speed : TuneSpeed, transmit : bool, @@ -89,8 +91,12 @@ impl State { } } + fn if_qrg(&self) -> u32 { + self.vhf_qrg - VHF_LO + } + fn vfo(&self) -> u32 { - self.qrg - self.bfo() + self.if_qrg() - self.bfo() } fn vfo_incr(&self) -> i32 { @@ -138,9 +144,11 @@ fn update_disp<T: hd44780_driver::bus::DataBus>(lcd: &mut HD44780<T>, state: &St lcd.write_str(&string, delay).unwrap(); string.clear(); + /* Shorten the QRG to avoid using three digits for nothing */ + let disp_freq = (state.vhf_qrg as i32) - (VHF_BAND_EDGE as i32); match state.mode { - Mode::BFO => write!(string, " {:<10}", state.qrg).unwrap(), - Mode::VFO => write!(string, ">{:<10}", state.qrg).unwrap(), + Mode::BFO => write!(string, " .{:<06} ", disp_freq).unwrap(), + Mode::VFO => write!(string, ">.{:<06} ", disp_freq).unwrap(), } match state.tune_speed { @@ -159,7 +167,7 @@ fn main() -> ! { mode : Mode::VFO, filter_shift : FilterShift::USB, bfo_tune_fail : false, - qrg : 28_000_000, + vhf_qrg : VHF_BAND_EDGE, tune_speed : TuneSpeed::Mid, transmit : false, }; @@ -293,7 +301,7 @@ fn main() -> ! { match state.mode { Mode::VFO => { - state.qrg = (state.qrg as i32 + delta * state.vfo_incr()) as u32; + state.vhf_qrg = (state.vhf_qrg as i32 + delta * state.vfo_incr()) as u32; }, Mode::BFO => { let new_bfo = (state.bfo() as i32 + delta * state.bfo_incr()) as u32; |