#![no_std]
#![no_main]

use esp_hal::{
    delay::Delay,
    gpio::{Level, Output},
    main,
};
use log::info;
use panic_handler; 

#[panic_handler] 
fn panic(info: &core::panic::PanicInfo) -> ! {
    log::error!("{}", info);
    loop {}
}

#[main]
fn main() -> ! {
    let peripherals = esp_hal::init(esp_hal::Config::default());
    esp_println::logger::init_logger_from_env();

   
   
    let mut red_led = Output::new(peripherals.GPIO8, Level::Low); 
    let mut amber_led = Output::new(peripherals.GPIO6, Level::Low); 
    let mut green_led = Output::new(peripherals.GPIO4, Level::Low); 

    let  delay = Delay::new();

  

    loop {
       info!("hello officer cjw take note of traffic lights kindly !");
        info!("sorry you have to stop for some moment");
        red_led.set_high();
        amber_led.set_low();
        green_led.set_low();
        delay.delay_millis(1000); 

        
        info!("just a second please");
        red_led.set_low();
        amber_led.set_high();
        green_led.set_low();
        delay.delay_millis(500); 

        
        info!("you gotta roll now");
        red_led.set_low();
        amber_led.set_low();
        green_led.set_high();
        delay.delay_millis(1200); 

       
        info!("calm down fella");
        red_led.set_low();
        amber_led.set_high();
        green_led.set_low();
        delay.delay_millis(500);  
    }
}