AT Commands builder and parser for Rust #![no_std] [![crates.io](https://img.shields.io/crates/v/at-commands.svg)](https://crates.io/crates/at-commands) Documentation

This crate can be used to build and parse at command style messages efficiently.

Help would be appreciated! Interested in new features, efficiency improvements and API improvements.

Usage

Builder: ```rust use at_commands::builder::CommandBuilder;

let mut buffer = [0; 128];

// Make a query command let result = CommandBuilder::create_query(&mut buffer, true) .named("+MYQUERY") .finish() .unwrap();

// Buffer now contains "AT+MYQUERY?" // Copy or DMA the resulting slice to the device.

// Make a set command let result = CommandBuilder::createset(&mut buffer, false) .named("+MYSET") .withint_parameter(42) .finish() .unwrap();

// Buffer now contains "+MYSET=42" // Copy or DMA the resulting slice to the device. ```

Parser: ```rust use at_commands::parser::CommandParser;

let (x, y, z) = CommandParser::parse(b"+SYSGPIOREAD:654,\"true\",-65154\r\nOK\r\n") .expectidentifier(b"+SYSGPIOREAD:") .expectintparameter() .expectstringparameter() .expectintparameter() .expectidentifier(b"\r\nOK\r\n") .finish() .unwrap();

// x = 654 // y = "true" // z = -65154 ```

License

Licensed under either of

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.