use std::error::Error;
use std::thread;
use std::time::Duration;

use gpio_cdev::{Chip, LineRequestFlags};

const GPIO_LED: u32 = 23;

fn main() -> Result<(), Box<dyn Error>> {
    let mut chip = Chip::new("/dev/gpiochip0")?;
    let led_handle = chip
        .get_line(GPIO_LED)?
        .request(LineRequestFlags::OUTPUT, 0, "led")?;

    loop {
        led_handle.set_value(1)?;
        thread::sleep(Duration::from_millis(500));
        led_handle.set_value(0)?;
        thread::sleep(Duration::from_millis(500));
    }
}
