lilkaoxide 0.1.0

Rust support library for Lilka console
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 {
    ///For creating 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,
        }
    }
}