rp-sys 0.28.1

FFI bindings to redpitaya API
use std::env;

use rp_sys as rp;
use std::thread::sleep;
use std::time::Duration;
use std::mem;

fn main() {
    let period = Duration::from_millis(500);
    let led: rp::rp_dpin_t = match env::args().nth(1) {
        Some(arg) => unsafe {
            mem::transmute(arg.parse::<u32>().unwrap())
        },
        None => rp::rp_dpin_t::RP_LED0,
    };

    println!("Blinking {:?}", led);

    unsafe {
        rp::rp_Init();
    }

    let mut retries: i8 = 5;

    while retries > 0 {
        unsafe {
            rp::rp_DpinSetState(led, rp::rp_pinState_t::RP_HIGH);
        }
        sleep(period / 2);

        unsafe {
            rp::rp_DpinSetState(led, rp::rp_pinState_t::RP_LOW);
        }
        sleep(period / 2);

        retries -= 1;
    }

    unsafe {
        rp::rp_Release();
    }
}