add 4 hour shutdown timer

This commit is contained in:
sigil-03 2025-11-14 13:14:02 -07:00
parent 17d6f156db
commit 1c2823eb1b
2 changed files with 28 additions and 10 deletions

View file

@ -193,6 +193,7 @@ 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,
}
@ -203,6 +204,7 @@ pub struct Timers {
usb_adc_timer: TickTimerService,
led0_timer: TickTimerService,
led1_timer: TickTimerService,
shutdown_timer: TickTimerService,
// led2_timer: TickTimerService,
}
@ -233,10 +235,13 @@ impl Timers {
TickServiceData::new(config.led1_timer_ms * system_tick_rate_hz / 1000),
true,
),
// led2_timer: TickTimerService::new(
// TickServiceData::new(config.led2_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,
// ),
}
}
pub fn tick(&mut self) {
@ -246,6 +251,7 @@ 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 {
@ -255,6 +261,7 @@ 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) {
@ -345,6 +352,9 @@ 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);
@ -394,14 +404,8 @@ 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();
@ -442,6 +446,11 @@ 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,
@ -536,11 +545,15 @@ impl App {
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
@ -548,8 +561,10 @@ 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) {
@ -581,6 +596,8 @@ impl App {
self.services
.sequencer
.play_sequence(&crate::sequences::COIN_CHIRP, 0);
self.timers.shutdown_timer.reset();
self.timers.shutdown_timer.enable(true);
}
}

View file

@ -297,6 +297,7 @@ 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,
};