#![no_std]
#![no_main]

use ch32v00x_hal as hal;

use hal::debug::SDIPrint;
use hal::gpio::PinState;
use hal::i2c::{I2c, I2cConfig};
use hal::pac::Peripherals;
use hal::prelude::*;
use hal::serial::Config as SerialConfig;

use panic_halt as _;

#[qingke_rt::entry]
fn main() -> ! {
    SDIPrint::enable();

    let p = Peripherals::take().unwrap();

    let mut rcc = p.RCC.constrain();
    let clocks = rcc.config.freeze();

    let gpioa = p.GPIOA.split(&mut rcc);
    let mut _fan = gpioa.pa2.into_push_pull_output_in_state(PinState::High);

    let gpioc = p.GPIOC.split(&mut rcc);
    let _i2c = I2c::i2c1(
        p.I2C1,
        gpioc.pc2.into_alternate_open_drain(),
        gpioc.pc1.into_alternate_open_drain(),
        I2cConfig::fast_mode(),
        &mut rcc,
        &clocks,
    );
    let mut _tec = gpioc.pc4.into_push_pull_output();

    let gpiod = p.GPIOD.split(&mut rcc);
    let mut _usart = p.USART1.usart(
        gpiod.pd5.into_alternate(),
        gpiod.pd6.into_floating_input(),
        SerialConfig::default(),
        &mut rcc,
        &clocks,
    );

    loop {}
}
