34个版本 (21个破坏性更新)
| 0.23.0 | 2024年6月26日 |
|---|---|
| 0.22.0 | 2024年3月15日 |
| 0.21.0 | 2024年1月9日 |
| 0.20.0 | 2023年10月17日 |
| 0.3.0 | 2020年3月13日 |
#10 in #at
1,665 每月下载量
用于 2 crate
175KB
4K SLoC
ATAT
#![no_std] crate 用于解析AT命令 (Hayes命令集)
基于AT命令的串行模块的驱动程序支持crate。
AT最佳实践
此crate尝试遵循这些AT最佳实践
- DTE应在发送新的AT命令之前清除AT通道(即检查是否有等待读取的数据)
- DTE应检测/处理完整的行(见S3、S4和V0/V1设置),以便可以使用处理响应的函数进行处理
- DTE应处理意外的空格或行结束符的情况
- DTE应处理所有URCs:它可以简单地忽略它们(不建议)或,更好的是,采取适当的行动
- DTE应知道预期的答案,并等待其接收(即最终结果代码或信息文本响应 + 最终结果代码)
- 最终结果代码标志着AT命令的结束,可以是OK、ERROR或ABORTED:当最终结果是错误时,务必在继续下一个AT命令之前处理它
- 信息文本响应的格式是命令特定的。DTE将需要为每个命令进行显式的处理。建议查阅u-blox AT命令手册[1]
- 建议不要严格解析信息文本响应,而是检查它们是否包含有趣的密钥字和/或参数
- DTE应知道所发出的AT命令是否可以被取消
- 一些AT命令可能在几秒后输出最终结果代码,在这种情况下请查阅AT手册中建议的估计响应时间。如果超时到期,则应根据情况做出决定:例如,如果可以取消该命令,则尝试取消它等。
- 对于调试应用程序非常有用,记录所有发送给DCE的命令行以及从它接收到的信息。
- 为AT解析器创建一个状态机(即空闲、等待响应、数据模式)。
- DTE应在收到AT命令最终响应或URC后等待一段时间(建议至少20毫秒),然后发出新的AT命令,以便给模块传输缓存的URCs的机会。否则,URC与后续AT命令的冲突仍然可能发生。
- DTE应意识到,当使用不带硬件流控制的串行端口时,第一个字符用于唤醒模块从省电模式。
文档
测试
该组件已通过测试。这些测试可以通过以下命令运行:
cargo test --tests,并且每次推送时都由CI运行。
示例
该组件为使用embassy和no_std以及tokio和std提供了示例。
可以使用以下命令构建示例:cargo +nightly run --bin embassy --features embedded --target thumbv6m-none-eabi和cargo +nightly run --example std-tokio --features std。
此外,该组件已用于构建U-Blox蜂窝模块(ublox-cellular-rs)和U-Blox短距离模块(ublox-short-range-rs)的初始驱动程序。
发布到crates.io
此工作空间使用cargo-release将工作空间发布到crates.io。可以通过以下命令使用cargo安装:cargo install cargo-release。新版本发布涉及的步骤包括
- 运行
cargo release --dry-run -- major|minor|patch,并验证输出。 - 运行
cargo release -- major|minor|patch以发布。
关于
- 最低rustc版本1.79
- 使用稳定工具链测试和构建
支持的Crates
以下依赖Crates提供基于embedded-hal的平台无关设备驱动程序,这些驱动程序也实现了此Crates的特质
| 设备名称 | 描述 | Crates + 文档 |
|---|---|---|
| ublox-short-range-rs | U-Blox 基于主机短距离设备(Wi-Fi 和蓝牙)的驱动框架,具有AT命令接口 | |
| ublox-cellular-rs | U-Blox 基于主机蜂窝设备的驱动框架,具有AT命令接口 | |
| esp-at-nal | 为 no_std 优化的 ESP-AT 网络层驱动程序 | |
| moko-mkl62ba | Moko MKL62BA LoRaWAN 模块的驱动框架 | |
| seeed-lora-e5 | Seeed Lora-E5 LoRaWAN 模块的驱动框架 |
特性
derive:默认启用。重新导出atat_derive以允许派生Atat__特性。bytes:默认启用。重新导出serde-bytes和heapless-bytes以允许正确序列化和反序列化非引号字节切片。log:默认禁用。启用各种日志级别的日志语句以帮助调试。由log驱动。defmt:默认禁用。启用 defmt 日志语句以各种日志级别帮助调试。由defmt驱动。custom-error-messages:默认禁用。允许错误包含最多 64 个字符的自定义错误消息,由AtDigest::custom_error解析。hex_str_arrays:默认禁用。需要#![feature(generic_const_exprs)]Nightly 功能。这允许将十六进制字符串序列化为固定宽度的字节数组。heapless:在serde_at上启用 heapless 功能。这启用了 heapless 支持,并添加了一些专用的解析结构。
聊天/寻求帮助
如果您对 ATAT 的发展有疑问或想基于它编写驱动程序,欢迎加入我们的 matrix 房间 #atat:matrix.org!
许可协议
根据您的选择,许可协议为以下之一
- Apache License,版本 2.0(《LICENSE-APACHE》或《https://apache.ac.cn/licenses/LICENSE-2.0》)
- MIT 许可协议(《LICENSE-MIT》或《https://open-source.org.cn/licenses/MIT》)
。
贡献
除非您明确声明,否则您有意提交给作品以包含在内的任何贡献,根据 Apache-2.0 许可证定义,应按上述方式双重许可,不附加任何额外条款或条件。
依赖项
~0.5–1MB
~24K SLoC