#![no_std] #![no_main] mod webee; use webee::{Webee}; use arduino_hal::{delay_ms, Peripherals}; use arduino_hal::prelude::*; use ufmt::{uDisplay}; use panic_halt as _; #[arduino_hal::entry] fn main() -> ! { let dp = Peripherals::take().unwrap(); let pins = arduino_hal::pins!(dp); let _status = pins.d13.into_output(); 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(), ); let ready = webee_rx.is_high(); ufmt::uwriteln!(&mut serial, "Webee initialized: {}", ready).void_unwrap(); delay_ms(1000); if (!ready) { ufmt::uwriteln!(&mut serial, "Webee initialized: {}", webee_rx.is_high()).void_unwrap(); } let func = |byte : u8| { ufmt::uwriteln!(&mut serial, "R {}", byte); }; test.send_void(&[0x5a, 0xaa, 0xb1]); ufmt::uwrite!(&mut serial, "Role: "); 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); // ufmt::uwriteln!(&mut serial, "Wrote byte: {:X}", *byte).void_unwrap(); // } // // ufmt::uwrite!(&mut serial, "Role:").void_unwrap(); // let mut result: u8 = webee.read_byte(); // // while result != 0xFF { // ufmt::uwrite!(&mut serial, " {:02X}", result).void_unwrap(); // result = webee.read_byte(); // } loop { let b = nb::block!(serial.read()).void_unwrap(); ufmt::uwriteln!(&mut serial, "Got {:X}!", b).void_unwrap(); } } // fn readBytesUntil() // struct Webee { // serial: Usart, // } // // impl Webee { // pub fn new(usart: USART, rx: RX, tx: TX) -> Self { // Webee { // serial: crate::Usart::new(usart, rx, tx, Baudrate::new(38400)), // } // } // } // struct Webee<'a> { // serial: &'a usart // } // // impl Webee { // fn new(serial: usart) -> Self { // Self { // serial // } // } // // fn send_cmd(&mut self, cmd: u8) -> ! { // let frame: [u8; 3] = [0x55, 0xAA, cmd]; // self.serial.write(&frame) // } // // fn recv(&mut self) -> ! { // self.serial.read() // } // }