rn2xx3 0.2.1

Rust driver for Microchip RN2483 and RN2903 LoRaWAN modules. [WIP]
Documentation
mod common;

use std::env;
use std::time::Duration;

use env_logger;
use rn2xx3::errors::Error;

fn main() {
    env_logger::init();

    let args: Vec<String> = env::args().collect();
    if args.len() != 2 {
        println!("Usage: {} <path-to-serial>", args[0]);
        println!("Example: {} /dev/ttyUSB0", args[0]);
        std::process::exit(1);
    }
    let mut rn = common::init_rn(&args[1]);

    println!("Resetting module...\n");
    rn.reset().expect("Could not reset");

    println!("Reading hweui...");
    let hweui = rn.hweui().expect("Could not read hweui");
    println!("> HW-EUI: {}", hweui);

    println!("\nPutting module to sleep for 2 seconds...");
    rn.sleep(Duration::from_secs(2))
        .expect("Could not enable sleep mode");
    println!("> Done");

    println!("\nReading hweui...");
    match rn.hweui().unwrap_err() {
        Error::SleepMode => println!("> Failed: Module still in sleep mode"),
        other => println!("> Failed: Unexpected error: {:?}", other),
    }

    println!("Waiting for wakeup...");
    rn.wait_for_wakeup(false)
        .expect("Waiting for wakeup failed");
    println!("> Ok");

    println!("Reading hweui...");
    let hweui = rn.hweui().expect("Could not read hweui");
    println!("> HW-EUI: {}", hweui);
}