diff --git a/ch32v-insert-coin/src/app.rs b/ch32v-insert-coin/src/app.rs index 2eb5de9..5775a60 100644 --- a/ch32v-insert-coin/src/app.rs +++ b/ch32v-insert-coin/src/app.rs @@ -193,7 +193,6 @@ pub struct TimerConfig { pub usb_adc_timer_ms: usize, pub led0_timer_ms: usize, pub led1_timer_ms: usize, - pub shutdown_timer_ms: usize, // pub led2_timer_ms: usize, } @@ -204,7 +203,6 @@ pub struct Timers { usb_adc_timer: TickTimerService, led0_timer: TickTimerService, led1_timer: TickTimerService, - shutdown_timer: TickTimerService, // led2_timer: TickTimerService, } @@ -235,13 +233,10 @@ impl Timers { TickServiceData::new(config.led1_timer_ms * system_tick_rate_hz / 1000), true, ), - shutdown_timer: TickTimerService::new( - TickServiceData::new(config.shutdown_timer_ms * system_tick_rate_hz / 1000), - false, - ), // led2_timer: TickTimerService::new( - // TickServiceData::new(config.led2_timer_ms * system_tick_rate_hz / 1000), - // true, - // ), + // led2_timer: TickTimerService::new( + // TickServiceData::new(config.led2_timer_ms * system_tick_rate_hz / 1000), + // true, + // ), } } pub fn tick(&mut self) { @@ -251,7 +246,6 @@ impl Timers { self.usb_adc_timer.tick(); self.led0_timer.tick(); self.led1_timer.tick(); - self.shutdown_timer.tick(); // self.led2_timer.tick(); } pub fn need_service(&self) -> bool { @@ -261,7 +255,6 @@ impl Timers { | self.usb_adc_timer.need_service() | self.led0_timer.need_service() | self.led1_timer.need_service() - | self.shutdown_timer.need_service() // | self.led2_timer.need_service() } pub fn init(&mut self) { @@ -309,7 +302,6 @@ pub struct Sequences { pub struct Interfaces { pub pwm_core: SimplePwmCore<'static, ch32_hal::peripherals::TIM1>, pub adc_core: crate::AdcCore, - pub amp: crate::Amplifier, } pub struct App { @@ -353,9 +345,6 @@ impl App { self.timers.led1_timer.reset(); self.timers.led1_timer.enable(true); - self.timers.shutdown_timer.reset(); - self.timers.shutdown_timer.enable(true); - // self.timers.led2_timer.reset(); // self.timers.led2_timer.enable(true); @@ -405,8 +394,14 @@ impl App { // #[cfg(feature = "enable_print")] // println!("batt adc service: {bv}, {avg}"); if avg < 421 { + // self.services + // .sequencer + // .play_sequence(&crate::sequences::COIN_CHIRP, 0); self.set_state(State::DeepSleep); } + + // TODO: + // do stuff if the battery voltage is below some threshold } if self.timers.usb_adc_timer.need_service() { self.timers.usb_adc_timer.service(); @@ -447,11 +442,6 @@ impl App { // #[cfg(feature = "enable_print")] // println!("led1 service"); } - if self.timers.shutdown_timer.need_service() { - self.timers.shutdown_timer.service(); - self.timers.shutdown_timer.reset(); - self.set_state(State::DeepSleep); - } // if self.timers.led2_timer.need_service() { // let out = match self.settings.brightness { // Level::Off => 0, @@ -503,14 +493,10 @@ impl App { } else { self.services.sequencer.disable(); self.services.synth0.disable(); - self.interfaces.amp.disable(); } } if self.services.synth0.need_service() { - if !self.interfaces.amp.enabled() { - self.interfaces.amp.enable(); - } let out = match self.services.synth0.service() { Some(value) => value / 6 / self.settings.volume.as_volume_divisor(), None => 0, @@ -545,21 +531,16 @@ impl App { self.interfaces .pwm_core .disable(ch32_hal::timer::Channel::Ch4); - self.interfaces.amp.disable(); } pub fn volume_button(&mut self) { self.settings.volume.next(); #[cfg(feature = "enable_print")] println!("new volume: {:?}", self.settings.volume); - self.timers.shutdown_timer.reset(); - self.timers.shutdown_timer.enable(true); } pub fn brightness_button(&mut self) { self.settings.brightness.next(); #[cfg(feature = "enable_print")] println!("new brightness: {:?}", self.settings.brightness); - self.timers.shutdown_timer.reset(); - self.timers.shutdown_timer.enable(true); } pub fn main_button_press(&mut self) { // TODO @@ -567,10 +548,8 @@ impl App { println!("main button press"); self.timers.sp_timer.reset(); self.timers.lp_timer.reset(); - self.timers.shutdown_timer.reset(); self.timers.sp_timer.enable(true); self.timers.lp_timer.enable(true); - self.timers.shutdown_timer.enable(true); self.main_button_click(); } pub fn main_button_release(&mut self) { @@ -602,8 +581,6 @@ impl App { self.services .sequencer .play_sequence(&crate::sequences::COIN_CHIRP, 0); - self.timers.shutdown_timer.reset(); - self.timers.shutdown_timer.enable(true); } } diff --git a/ch32v-insert-coin/src/main.rs b/ch32v-insert-coin/src/main.rs index 6a29a7a..5d75d4f 100644 --- a/ch32v-insert-coin/src/main.rs +++ b/ch32v-insert-coin/src/main.rs @@ -44,27 +44,6 @@ use crate::app::sequencer::{DynamicSequence, SequenceEntry}; static LED0_SEQ: [u8; 8] = [0u8, 25u8, 50u8, 75u8, 100u8, 75u8, 50u8, 25u8]; -pub struct Amplifier { - amp_en: Output<'static>, -} - -impl Amplifier { - pub fn new(amp_en: Output<'static>) -> Self { - let mut amp = Self { amp_en }; - amp.disable(); - amp - } - pub fn enable(&mut self) { - self.amp_en.set_low(); - } - pub fn disable(&mut self) { - self.amp_en.set_high(); - } - pub fn enabled(&self) -> bool { - !self.amp_en.is_set_high() - } -} - use hal::adc::Adc; use hal::peripherals::{ADC1, PD4}; @@ -292,7 +271,7 @@ fn app_main(mut p: hal::Peripherals) -> ! { let extra_io_2 = p.PD3; let mut amp_en_output = Output::new(amp_en, Level::Low, Default::default()); - let amp = Amplifier::new(amp_en_output); + amp_en_output.set_low(); // set up interrupts unsafe { system::init_gpio_irq(sense_coin_pin.pin(), sense_coin_pin.port(), true, false) }; @@ -318,7 +297,6 @@ fn app_main(mut p: hal::Peripherals) -> ! { usb_adc_timer_ms: 10000, led0_timer_ms: 100, led1_timer_ms: 100, - shutdown_timer_ms: 4 * 60 * 60 * 1000, // led2_timer_ms: 100, }; @@ -356,11 +334,7 @@ fn app_main(mut p: hal::Peripherals) -> ! { audio: &SEQUENCE_LIST, }; - let app_interfaces = Interfaces { - pwm_core, - adc_core, - amp, - }; + let app_interfaces = Interfaces { pwm_core, adc_core }; let mut app = App::new(app_config, app_services, app_sequences, app_interfaces);