#![no_std]
#![no_main]

use esp_backtrace as _;
use esp_hal::{
    delay::Delay,
    gpio::{Input, Output, Pin, PullUp, IO},
    peripherals::Peripherals,
    prelude::*,
    system::SystemControl,
    main,
};
use esp_println::println;
use embedded_hal::delay::DelayNs;

#[main]
fn main() -> ! {
    let peripherals = Peripherals::take();
    let system = peripherals.SYSTEM.split();
    let clocks = esp_hal::clock::ClockControl::boot_defaults(system.clock_control).freeze();

    let io = IO::new(peripherals.GPIO, peripherals.IO_MUX);
    let mut delay = Delay::new(&clocks);

    // DHT22 en GPIO4
    let mut pin = io.pins.gpio4.into_open_drain_output();

    loop {
        // Simula señal de inicio al sensor
        pin.set_low().unwrap();
        delay.delay_ms(18u32);
        pin.set_high().unwrap();
        delay.delay_us(30u32);

        // Cambia el pin a entrada
        let mut pin = pin.into_pull_up_input();

        println!("Intentando leer del DHT22...");
        // Aquí debería venir la lectura manual de bits (a implementar si quieres)

        delay.delay_ms(2000u32);
    }
}