pub struct B15F { /* private fields */ }
Expand description
Structure representing the driver for the board 15
Implementations
sourceimpl B15F
impl B15F
sourcepub fn new() -> Result<B15F, Error>
pub fn new() -> Result<B15F, Error>
Creates a new instance of the B15
This function will establish a connection to a connected B15 and return
a handle to interact with it. Only one such instance should exist per
program; calling B15F::new()
more than once might lead to unexpected
behaviour.
Returns
A new B15F object is returned. It contains an already active USART connection, so calling this function multiple times will create an Error
Errors
An error::Error
is generated if the connection to the board cannot be
established, or if testing of that connection fails.
Examples
use b15f::B15F;
let drv = B15F::new().unwrap();
sourcepub fn self_test(&mut self) -> Result<(), Error>
pub fn self_test(&mut self) -> Result<(), Error>
Enables the self test mode of the B15
IMPORTANT: Nothing must be connected to the B15 during this self check routine.
Errors
This function returns an error::Error
when communication with
the board or the self check fails.
sourcepub fn digital_write<const PORT: usize>(
&mut self,
value: u8
) -> Result<(), Error>
pub fn digital_write<const PORT: usize>(
&mut self,
value: u8
) -> Result<(), Error>
Sets the value of the specified port
Errors
PORT
can either be 0 or 1, other values will cause a compile-time
error. Otherwise an error::Error
is generated if communication
with the B15 fails.
Examples
use b15f::B15F;
fn main() -> Result<(), String> {
let mut drv = B15F::new()?;
drv.digital_write::<0>(0xFF)?; // Turn on all bits of port 0
drv.digital_write::<1>(0x0F)?; // Turn on bits 0-4 of port 1
// drv.digital_write::<2>(0xFF); // Compiler error
Ok(())
}
sourcepub fn digital_read<const PORT: usize>(&mut self) -> Result<u8, Error>
pub fn digital_read<const PORT: usize>(&mut self) -> Result<u8, Error>
Reads the value of the specified port
Errors
PORT
can either be 0 or 1, other values will cause a compile-time
error. Otherwise an error::Error
is generated if communication
with the B15 fails.
Examples
use b15f::B15F;
fn main() -> Result<(), String> {
let mut drv = B15F::new()?;
let _ = drv.digital_read::<0>()?; // Read inputs of port 0
let _ = drv.digital_read::<1>()?; // Read inputs of port 1
// drv.digital_read::<2>(); // Compiler error
Ok(())
}
sourcepub fn read_dip_switch(&mut self) -> Result<u8, Error>
pub fn read_dip_switch(&mut self) -> Result<u8, Error>
Reads the value of the DIP switch (S7)
Returns
A bitfield representing the value of all 8 DIP switches. The least significant bit represents switch 1.
Errors
When communication with the board fails an error::Error
is returned.
Example
use b15f::B15F;
fn main() -> Result<(), String> {
let mut drv = B15F::new()?;
println!("{}", drv.read_dip_switch()?);
Ok(())
}
sourcepub fn get_board_info(&mut self) -> Result<Vec<String>, Error>
pub fn get_board_info(&mut self) -> Result<Vec<String>, Error>
Yields information about the installed firmware on the B15
Returns an array of strings, where each string contains a piece of information stored on the B15
Returns
A list of strings where each string contains a piece of information about the board. What string contains what information is determined, but not explicitly listed.
Errors
An error::Error
is generated if the communication with the board fails.
Examples
use b15f::B15F;
let mut drv = B15F::new().unwrap();
// Print each bit of information on a new line
drv.get_board_info()
.unwrap()
.iter()
.for_each(|info| println!("{info}"));
sourcepub fn discard(&mut self) -> Result<(), Error>
pub fn discard(&mut self) -> Result<(), Error>
Clears data in the USART buffers on this device and on the B15
sourcepub fn test_int_conv(&mut self) -> Result<(), Error>
pub fn test_int_conv(&mut self) -> Result<(), Error>
Test the integer conversion of the USART connection
Errors
If an error occurs in the conversion or the communication with the
board, an error::Error
will be returned.
sourcepub fn test_connection(&mut self) -> Result<(), Error>
pub fn test_connection(&mut self) -> Result<(), Error>
Tests the connetion to the B15
To test the connection a Request::Test
request will be sent
to the board together with a randomly generated value. If the
board returns that value the connection is working correctly.
Errors
An error::Error
is returned if the test fails, or if the
communication itself fails.
Examples
use b15f::B15F;
fn main() {
let mut drv = B15F::new().unwrap();
if let Err(err) = drv.test_connection() {
panic!("Connection is not working: {err}");
}
}