#![cfg_attr(any(feature = "enable_panic", feature = "osal_rs"), no_std)]
#[cfg(any(feature = "enable_panic", feature = "osal_rs"))]
extern crate alloc;
#[cfg(feature = "osal_rs")]
extern crate osal_rs;
#[cfg(any(feature = "enable_panic", feature = "osal_rs"))]
use core::prelude::rust_2021::*;
use core::iter::Iterator;
use core::option::Option;
use core::result::Result;
#[cfg(feature = "enable_panic")]
#[panic_handler]
fn panic(_info: &core::panic::PanicInfo) -> ! {
loop {}
}
pub mod context;
pub mod parser;
#[derive(Debug)]
pub enum AtError {
UnknownCommand,
NotSupported,
InvalidArgs,
}
pub type AtResult<'a> = Result<&'a str, AtError>;
pub struct Args<'a> {
pub raw: &'a str,
}
impl<'a> Args<'a> {
pub fn get(&self, index: usize) -> Option<&'a str> {
self.raw.split(',').nth(index)
}
}
#[macro_export]
macro_rules! at_modules {
(
$( $name:expr => $module:ident ),* $(,)?
) => {
static COMMANDS: &[(&'static str, &mut dyn AtContext)] = unsafe {
&[
$(
($name, &mut $module),
)*
]
};
};
}