Delete nfct_test.rs
This branch is for the driver interface.
This commit is contained in:
@@ -1,69 +0,0 @@
|
||||
#![no_std]
|
||||
|
||||
extern crate alloc;
|
||||
extern crate lang_items;
|
||||
|
||||
use core::fmt::Write;
|
||||
use libtock_drivers::console::Console;
|
||||
use libtock_drivers::nfc::NfcTag;
|
||||
|
||||
#[allow(dead_code)]
|
||||
/// Helper function to write a slice into a fixed
|
||||
/// length transmission buffer.
|
||||
fn write_tx_buffer(buf: &mut [u8], slice: &[u8]) {
|
||||
for (i, &byte) in slice.iter().enumerate() {
|
||||
buf[i] = byte;
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let mut console = Console::new();
|
||||
|
||||
writeln!(console, "****************************************").unwrap();
|
||||
writeln!(console, "nfct_test application is installed").unwrap();
|
||||
|
||||
// 1. Configure Type 4 tag
|
||||
if NfcTag::configure(4) {
|
||||
writeln!(console, " -- TAG CONFIGURED").unwrap();
|
||||
}
|
||||
// 2. Subscribe to a SELECTED CALLBACK
|
||||
if NfcTag::selected() {
|
||||
writeln!(console, " -- TAG SELECTED").unwrap();
|
||||
// 0xfffff results in 1048575 / 13.56e6 = 77ms
|
||||
NfcTag::set_framedelaymax(0xfffff);
|
||||
}
|
||||
/*
|
||||
[_.] TODO: Enable Tag emulation (currently the tag is always activated)
|
||||
needs field detection support in the driver level.
|
||||
*/
|
||||
let mut rx_buf = [0; 64];
|
||||
let mut unknown_cmd_cntr = 0;
|
||||
loop {
|
||||
NfcTag::receive(&mut rx_buf);
|
||||
match rx_buf[0] {
|
||||
0xe0 /* RATS */=> {
|
||||
let mut answer_to_select = [0x05, 0x78, 0x80, 0xB1, 0x00];
|
||||
let amount = answer_to_select.len();
|
||||
NfcTag::transmit(&mut answer_to_select, amount);
|
||||
}
|
||||
0xc2 /* DESELECT */ => {
|
||||
// Ignore the request
|
||||
let mut command_error = [0x6A, 0x81];
|
||||
let amount = command_error.len();
|
||||
NfcTag::transmit(&mut command_error, amount);
|
||||
}
|
||||
0x02 | 0x03 /* APDU Prefix */ => {
|
||||
let mut reply = [rx_buf[0], 0x90, 0x00];
|
||||
let amount = reply.len();
|
||||
NfcTag::transmit(&mut reply, amount);
|
||||
}
|
||||
_ => {
|
||||
unknown_cmd_cntr += 1;
|
||||
}
|
||||
}
|
||||
if unknown_cmd_cntr > 50 {
|
||||
break;
|
||||
}
|
||||
}
|
||||
writeln!(console, "****************************************").unwrap();
|
||||
}
|
||||
Reference in New Issue
Block a user