move led services inside app
This commit is contained in:
parent
791d5db4c8
commit
e1943accd2
4 changed files with 117 additions and 51 deletions
|
|
@ -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")]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue