diff --git a/src/b15f.rs b/src/b15f.rs index 52e2914..986d39d 100644 --- a/src/b15f.rs +++ b/src/b15f.rs @@ -119,8 +119,31 @@ impl B15F { /// .iter() /// .for_each(|info| println!("{info}")); /// ``` - pub fn get_board_info(&self) -> Vec<&str> { - todo!(); + pub fn get_board_info(&mut self) -> Vec { + let mut info: Vec = vec![]; + + self.usart.write(build_request!(Request::Info)).unwrap(); + + let mut data_count: [u8; 1] = [0;1]; + self.usart.read(&mut data_count).unwrap(); + + while data_count[0] > 0 { + let mut len: [u8; 1] = [0;1]; + self.usart.read(&mut len).unwrap(); + + let mut data: Vec = vec![0; len[0] as usize]; + self.usart.read(data.as_mut_slice()).unwrap(); + + info.push( + data.into_iter() + .map(|c| char::from(c)) + .collect::() + ); + + data_count[0] -= 1; + } + + info } /// Clears data in the USART buffers on this device and on the B15 diff --git a/src/request.rs b/src/request.rs index 3ff2d71..25e624f 100644 --- a/src/request.rs +++ b/src/request.rs @@ -18,5 +18,6 @@ macro_rules! build_request { #[repr(u8)] pub enum Request { Discard = 0, - Test = 1 + Test = 1, + Info = 2 } \ No newline at end of file