headless?
This commit is contained in:
40
src/main.rs
40
src/main.rs
@@ -2,13 +2,14 @@
|
||||
#![no_main]
|
||||
|
||||
mod webee;
|
||||
|
||||
use webee::{Webee};
|
||||
|
||||
|
||||
use arduino_hal::{delay_ms, Peripherals};
|
||||
use arduino_hal::prelude::*;
|
||||
use ufmt::{uDisplay};
|
||||
use panic_halt as _;
|
||||
use crate::webee::SimpleVec;
|
||||
|
||||
|
||||
#[arduino_hal::entry]
|
||||
@@ -16,32 +17,41 @@ fn main() -> ! {
|
||||
let dp = Peripherals::take().unwrap();
|
||||
let pins = arduino_hal::pins!(dp);
|
||||
let _status = pins.d13.into_output();
|
||||
let webee_rx = pins.d2;
|
||||
let webee_rx = pins.d2.forget_imode();
|
||||
let mut serial = arduino_hal::default_serial!(dp, pins, 57600);
|
||||
|
||||
let mut test = Webee::new(
|
||||
dp.USART1,
|
||||
pins.d19.forget_imode(),
|
||||
pins.d18.into_output()
|
||||
pins.d18.into_output(),
|
||||
);
|
||||
|
||||
ufmt::uwriteln!(&mut serial, "Webee initialized: {}", webee_rx.is_high()).void_unwrap();
|
||||
let ready = webee_rx.is_high();
|
||||
ufmt::uwriteln!(&mut serial, "Webee initialized: {}", ready).void_unwrap();
|
||||
delay_ms(1000);
|
||||
|
||||
{
|
||||
let x = SimpleVec::from_slice(&[0x5a, 0xaa, 0xb1]);
|
||||
ufmt::uwrite!(&mut serial, "Vector ({}): ", x.len());
|
||||
for byte in &x.items()[..x.len()] {
|
||||
ufmt::uwrite!(&mut serial, "{:02X} ", *byte);
|
||||
}
|
||||
ufmt::uwrite!(&mut serial, "\n");
|
||||
if (!ready) {
|
||||
ufmt::uwriteln!(&mut serial, "Webee initialized: {}", webee_rx.is_high()).void_unwrap();
|
||||
}
|
||||
|
||||
let role = test.send(&[0x5a, 0xaa, 0xb1]);
|
||||
let func = |byte : u8| {
|
||||
ufmt::uwriteln!(&mut serial, "R {}", byte);
|
||||
};
|
||||
|
||||
test.send_void(&[0x5a, 0xaa, 0xb1]);
|
||||
ufmt::uwrite!(&mut serial, "Role: ");
|
||||
for byte in role.items() {
|
||||
ufmt::uwrite!(&mut serial, "{:02X}", byte);
|
||||
let role = test.recv();
|
||||
for i in 0..role.len() {
|
||||
let byte = *role.get(i).unwrap();
|
||||
ufmt::uwrite!(&mut serial, "{} ", byte);
|
||||
}
|
||||
ufmt::uwriteln!(&mut serial, "");
|
||||
|
||||
let data = test.recv();
|
||||
ufmt::uwrite!(&mut serial, "{}", data.len());
|
||||
|
||||
// for byte in role.items() {
|
||||
// ufmt::uwrite!(&mut serial, "{:02X}", byte);
|
||||
// }
|
||||
|
||||
// for byte in [0x5a, 0xaa, 0xb1].iter() {
|
||||
// webee.write_byte(*byte);
|
||||
|
||||
39
src/webee.rs
39
src/webee.rs
@@ -4,13 +4,15 @@ use arduino_hal::port::mode::{Input, Output};
|
||||
use arduino_hal::usart::{Usart, UsartOps};
|
||||
use arduino_hal::prelude::*;
|
||||
|
||||
mod simple_vector;
|
||||
pub use simple_vector::SimpleVec;
|
||||
use heapless::Vec;
|
||||
|
||||
// mod simple_vector;
|
||||
// pub use simple_vector::SimpleVec;
|
||||
|
||||
|
||||
pub struct Webee<USART: UsartOps<Atmega, RX, TX>, RX, TX>
|
||||
{
|
||||
webee: Usart<USART, RX, TX>,
|
||||
pub webee: Usart<USART, RX, TX>,
|
||||
}
|
||||
|
||||
enum SendCmd {}
|
||||
@@ -34,7 +36,7 @@ where
|
||||
}
|
||||
}
|
||||
|
||||
pub fn send(&mut self, data: &[u8]) -> SimpleVec {
|
||||
pub fn send(&mut self, data: &[u8]) -> Vec<u8, 128> {
|
||||
for byte in data {
|
||||
self.webee.write_byte(*byte);
|
||||
}
|
||||
@@ -42,12 +44,31 @@ where
|
||||
return self.recv();
|
||||
}
|
||||
|
||||
fn recv(&mut self) -> SimpleVec {
|
||||
let mut byte: u8 = self.webee.read_byte();
|
||||
let mut buffer = SimpleVec::new();
|
||||
pub fn send_void(&mut self, data: &[u8]) {
|
||||
for byte in data {
|
||||
self.webee.write_byte(*byte);
|
||||
}
|
||||
}
|
||||
|
||||
while byte != STOP {
|
||||
buffer.push(byte);
|
||||
pub fn recv(&mut self) -> Vec<u8, 128> {
|
||||
let mut byte: u8 = self.webee.read_byte();
|
||||
let mut buffer = Vec::new();
|
||||
|
||||
while byte != STOP && !buffer.is_full() {
|
||||
buffer.push(byte).unwrap();
|
||||
byte = self.webee.read_byte();
|
||||
}
|
||||
|
||||
return buffer;
|
||||
}
|
||||
|
||||
pub fn recv_debug(&mut self, callback: fn(u8)) -> Vec<u8, 128> {
|
||||
let mut byte: u8 = self.webee.read_byte();
|
||||
callback(byte);
|
||||
let mut buffer = Vec::new();
|
||||
|
||||
while byte != STOP && !buffer.is_full() {
|
||||
buffer.push(byte).unwrap();
|
||||
byte = self.webee.read_byte();
|
||||
}
|
||||
|
||||
|
||||
@@ -34,6 +34,10 @@ impl SimpleVec {
|
||||
len
|
||||
}
|
||||
|
||||
pub fn full(&self) -> bool {
|
||||
self.items.len() == self.len()
|
||||
}
|
||||
|
||||
|
||||
pub fn push(&mut self, value: u8) {
|
||||
let vec_item = VecItem {
|
||||
|
||||
Reference in New Issue
Block a user