1 unstable release
Uses old Rust 2015
0.1.0 | Mar 15, 2019 |
---|
#90 in #embedded-devices
33KB
620 lines
light-cli
A lightweight and heapless command line interface / command passing tool. Probably more useful for machine to machine communication.
Documentation
[Example]
The following definition allows for the commands:
HELLO Name=<Name>
: Set the name to<Name>
EHLO
: Return the name
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 typical serial communication could look like:
>> EHLO
<< EHLO Name=
>> HELLO Name=Johnson
<< Name set
>> EHLO
<< EHLO Name=Johnson
It is recommended to use this in conjunction with the program rlwrap
.
What works
- Read key value style commands in the form:
COMMAND KEY=VALUE
- UTF-8 encoding.
- Specify the heapless string length.
- Partial command evaluation as data is received through the serial connection.
TODO
- Writing to output
- Improve UTF-8 error detection / code.
- Any form of autocompletion / backspaces etc.
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT) at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Dependencies
~1MB
~17K SLoC