use crate::adcbattery::AdcCfg;
use crate::i2s::I2sTxConfig;
use esp_hal::analog::adc::Attenuation;
use esp_hal::clock::CpuClock;
use esp_hal::ledc::timer::config::Duty;
use esp_hal::time::Rate;
use fugit::RateExtU32;
use mipidsi::options::{RefreshOrder, Rotation, TearingEffect};
#[derive(Clone, Copy)]
pub struct BuzzerConfig {
pub frequency: Rate,
pub duty_pct: u8,
pub timer_duty: Duty,
}
impl Default for BuzzerConfig {
fn default() -> Self {
Self {
frequency: Rate::from_hz(4_000),
duty_pct: 50,
timer_duty: Duty::Duty8Bit,
}
}
}
pub struct Configuration {
pub cpu_clock: CpuClock,
pub spi_frequency: fugit::HertzU32,
pub display_refresh_order: RefreshOrder,
pub display_rotation: Rotation,
pub display_tearing: TearingEffect,
pub adc_cfg: AdcCfg,
pub i2s_tx_config: I2sTxConfig,
pub buzzer_config: BuzzerConfig,
}
impl Default for Configuration {
fn default() -> Configuration {
Configuration {
cpu_clock: Default::default(),
spi_frequency: 60.MHz(),
display_refresh_order: RefreshOrder::default(),
display_rotation: Rotation::Deg270,
display_tearing: TearingEffect::Off,
adc_cfg: AdcCfg {
attenuation: Attenuation::_11dB,
},
i2s_tx_config: I2sTxConfig::default(),
buzzer_config: BuzzerConfig::default(),
}
}
}
impl Configuration {
pub fn new(
spi_frequency: fugit::HertzU32,
cpu_clock: CpuClock,
display_refresh_order: RefreshOrder,
display_rotation: Rotation,
display_tearing: TearingEffect,
adc_cfg: AdcCfg,
i2s_tx_config: I2sTxConfig,
buzzer_config: BuzzerConfig,
) -> Configuration {
Configuration {
cpu_clock,
spi_frequency,
display_refresh_order,
display_rotation,
display_tearing,
adc_cfg,
i2s_tx_config,
buzzer_config,
}
}
}