Expand description
Simple heapless command line interface parser for embedded devices
This crates makes use of a serial interface that implements the read trait
of the embedded-hal
crate.
§Usage
First define an instance of the CLI by initializing a LightCliInput
and a
LightCliOutput
. The output instance requires the serial write instance
which should implement the embedded-hal Write<u8>
trait:
let mut cl_in : LightCliInput<U32> = LightCliInput::new();
let mut cl_out = LightCliOutput::new(tx);
Periodically copy all contents of the serial device into the cli buffer by using
the fill
method, passing it the serial read instance rx
, which implements
the embedded-hal Read<u8>
trait. In addition it is necessary to try to empty
the output buffer, by calling the flush
method on the console output instance:
let _ = cl_in.fill(&mut rx);
let _ = cl_out.flush();
Periodically parse the data in the buffer using the lightcli!
macro:
let mut name : String<U32> = String;:new();
loop {
/* fill, flush, etc. */
lightcli!(cl_in, cl_out, cmd, key, val, [
"HELLO" => [
"Name" => name = String::from(val)
] => { writeln!(cl_out, "Name set").unwrap(); };
"EHLO" => [
] => { writeln!(cl_out, "EHLO Name={}", name.as_str()).unwrap(); }
]);
}
A serial communication may then look like:
>> EHLO
<< EHLO Name=
>> HELLO Name=Johnson
<< Name set
>> EHLO
<< EHLO Name=Johnson
§Examples
See the examples module.
Re-exports§
pub extern crate embedded_hal as hal;
pub extern crate heapless;
pub extern crate nb;
Macros§
- This macro allows for an easy way to define key value commands.
- This macro allows for an easy way to define key value commands while still allowing to define custom error handlers.