rn2903/examples/nvm_set_get.rs

46 lines
1.5 KiB
Rust

use rn2903::{NvmAddress, Rn2903};
use std::env::args;
use std::process::exit;
use std::thread;
use std::time::Duration;
fn main() {
let args: Vec<_> = args().collect();
if args.len() <= 1 {
eprintln!("rn2903_nvm_set_get <serial port>");
eprintln!("\tGet, modify, check, and restore the contents of NVM::0x300.");
exit(1);
}
let mut txvr = Rn2903::new_at(&args[1]).expect("Could not open device. Error");
println!(
"Successfully connected. Version: {}",
txvr.system_version()
.expect("Could not read from device. Error:")
);
txvr.system_module_reset().unwrap();
txvr.transact(b"mac pause").unwrap();
let addr = NvmAddress::new(0x300);
txvr.transact(b"sys set pindig GPIO10 1").unwrap();
let prev = txvr.system_get_nvm(addr).unwrap();
println!("Previous value: {:#x}", prev);
txvr.transact(b"sys set pindig GPIO10 0").unwrap();
txvr.transact(b"sys set pindig GPIO11 1").unwrap();
txvr.system_set_nvm(addr, 0xAB).unwrap();
println!("Wrote new value");
txvr.transact(b"sys set pindig GPIO11 0").unwrap();
txvr.transact(b"sys set pindig GPIO10 1").unwrap();
let new = txvr.system_get_nvm(addr).unwrap();
println!("New value: {:#x}", new);
txvr.transact(b"sys set pindig GPIO10 0").unwrap();
txvr.transact(b"sys set pindig GPIO11 1").unwrap();
txvr.system_set_nvm(addr, prev).unwrap();
println!("Restored old value");
txvr.transact(b"sys set pindig GPIO11 0").unwrap();
}