move led services inside app

This commit is contained in:
sigil-03 2025-11-02 13:41:46 -07:00
parent 791d5db4c8
commit e1943accd2
4 changed files with 117 additions and 51 deletions

View file

@ -14,10 +14,12 @@ mod synthesizer;
use synthesizer::AppSynthesizers;
mod app;
use app::{App, Config, State, TimerConfig};
use app::{
sequencer::BasicSequence, App, Config, Interfaces, Sequences, Services, State, TimerConfig,
};
use ch32_hal::{adc::AdcChannel, interrupt::typelevel::Handler, timer::low_level::OutputPolarity};
use insert_coin::{CoreConfig, InsertCoin, SimplePwmCore};
use insert_coin::{CoreConfig, InsertCoin, LedService, SimplePwmCore};
use ch32_hal as hal;
use hal::bind_interrupts;
@ -31,6 +33,8 @@ use hal::println;
use qingke::riscv;
static LED0_SEQ: [u8; 8] = [0u8, 25u8, 50u8, 75u8, 100u8, 75u8, 50u8, 25u8];
struct DebouncedGPIO<'a> {
input: Input<'a>,
// value of the GPIO
@ -498,8 +502,8 @@ fn app_main(mut p: hal::Peripherals) -> ! {
let mut light_ctrl_btn_input =
DebouncedGPIO::new(light_ctrl_btn_pin.degrade(), core_config.tick_rate_hz, 100);
let mut interfaces = InsertCoin::new(core_config, pwm_core);
interfaces.set_active(true);
// let mut interfaces = InsertCoin::new(core_config, pwm_core);
// interfaces.set_active(true);
let mut led0_index = 0;
let led0_dcs = [0u8, 25u8, 50u8, 75u8, 100u8, 75u8, 50u8, 25u8];
@ -514,14 +518,12 @@ fn app_main(mut p: hal::Peripherals) -> ! {
// adc1_timer.reset();
// adc1_timer.enable(true);
let tick_interval_us = 1000000 / interfaces.config.tick_rate_hz - 10;
let timer_config = TimerConfig {
sp_timer_ms: 2000,
lp_timer_ms: 5000,
batt_adc_timer_ms: 10000,
usb_adc_timer_ms: 10000,
led0_timer_ms: 1000,
led0_timer_ms: 100,
led1_timer_ms: 300,
led2_timer_ms: 1100,
};
@ -531,7 +533,21 @@ fn app_main(mut p: hal::Peripherals) -> ! {
timers: timer_config,
};
let mut app = App::new(app_config);
let app_services = Services {
led0: LedService::new(led0_ch),
led1: LedService::new(led1_ch),
led2: LedService::new(led2_ch),
};
let app_sequences = Sequences {
led0: BasicSequence::new(&LED0_SEQ),
led1: BasicSequence::new(&LED0_SEQ),
led2: BasicSequence::new(&LED0_SEQ),
};
let app_interfaces = Interfaces { pwm_core };
let mut app = App::new(app_config, app_services, app_sequences, app_interfaces);
// dac data
// let coin_sound = include_bytes!("../audio/coin2.raw");
@ -542,9 +558,9 @@ fn app_main(mut p: hal::Peripherals) -> ! {
// let button_sound_2 = include_bytes!("../audio/button_2.raw");
// let button_sound_3 = include_bytes!("../audio/button_3.raw");
interfaces.led0.set_amplitude(0);
interfaces.led1.set_amplitude(0);
interfaces.service();
// interfaces.led0.set_amplitude(0);
// interfaces.led1.set_amplitude(0);
// interfaces.service();
// init systick
systick_init(tick_rate_hz);
@ -590,17 +606,12 @@ fn app_main(mut p: hal::Peripherals) -> ! {
#[allow(static_mut_refs)]
INPUT_FLAGS.systick_flag.clear();
}
// #[cfg(feature = "enable_print")]
// println!("tick!");
// app tick
app.tick();
// interfaces
}
app.service();
interfaces.service();
// interfaces.service();
}
// // edge detector
@ -774,31 +785,7 @@ fn app_main(mut p: hal::Peripherals) -> ! {
// }
// State::Idle => {}
// State::Active => {
// // tt0.tick();
// // tt1.tick();
// // if tt0.need_service() {
// // interfaces.led0.set_amplitude(led0_dcs[led0_index]);
// // led0_index += 1;
// // if led0_index > led0_dcs.len() - 1 {
// // led0_index = 0;
// // }
// // tt0.service();
// // }
// // if tt1.need_service() {
// // interfaces.led1.set_amplitude(led1_dcs[led1_index]);
// // led1_index += 1;
// // if led1_index > led1_dcs.len() - 1 {
// // led1_index = 0;
// // }
// // tt1.service()
// // }
// }
// }
// }
}
#[qingke_rt::entry]
fn main() -> ! {
#[cfg(feature = "enable_print")]