33个版本 (20个破坏性更新)

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日

#37嵌入式开发

Download history 217/week @ 2024-05-05 319/week @ 2024-05-12 355/week @ 2024-05-19 178/week @ 2024-05-26 468/week @ 2024-06-02 380/week @ 2024-06-09 235/week @ 2024-06-16 406/week @ 2024-06-23 287/week @ 2024-06-30 278/week @ 2024-07-07 360/week @ 2024-07-14 242/week @ 2024-07-21 558/week @ 2024-07-28 264/week @ 2024-08-04 398/week @ 2024-08-11 389/week @ 2024-08-18

每月下载1,617次
8 crates 中使用

MIT/Apache

245KB
5K SLoC

ATAT

Test Crates.io Version Crates.io Downloads chat No Std

ATAT

#![no_std] crate for parsing AT commands (Hayes命令集)

基于AT命令的串行模块的驱动支持crate。

AT最佳实践

此crate尝试遵循这些AT最佳实践

  • DTE应在发送新的AT命令之前清除AT通道(即检查是否有等待读取的数据)
  • DTE应检测/处理完整的行(请参阅S3、S4和V0/V1设置),以便它们可以用处理响应的函数进行处理
  • DTE应处理意外空格或行结束的情况
  • DTE应处理所有URC:它可以简单地忽略它们(不建议)或,更好的是,采取适当的行动
  • DTE应知道预期的答案,并等待其接收(即仅最终结果代码或信息文本响应+最终结果代码)
  • 最终结果代码标志着AT命令的结束,可以是OK、ERROR或ABORTED:当最终结果是错误时,在继续下一个AT命令之前,务必处理它
  • 信息文本响应格式是命令特定的。DTE需要为每个命令进行显式处理。建议查阅u-blox AT命令手册[1]
  • 建议不要严格解析信息文本响应,而应检查它们是否包含有趣的密钥词和/或参数
  • DTE应知道发出的AT命令是否可以取消
  • 某些AT命令可能在几秒钟后输出最终结果代码,在这种情况下,请检查AT手册中建议的估计响应时间。如果超时过期,则应根据相应的情况做出决定:例如,如果命令可以取消,则尝试取消它等...
  • 对于调试应用程序来说,记录发送到DCE的所有命令行以及从它接收的内容非常有用
  • 为AT解析器创建一个状态机(即空闲、等待响应、数据模式)
  • 在接收AT命令最终响应或URC后,DTE应等待一段时间(建议至少20毫秒)再发送新的AT命令,以便模块有机会传输缓冲的URCs。否则,URCs与随后的AT命令发生冲突的可能性仍然存在。
  • DTE应意识到,在使用不带硬件流控制的串口时,第一个字符用于唤醒模块从省电模式。

文档

测试

机架经过测试。这些测试可以通过以下命令运行: cargo test --tests,CI在每次推送时都会运行这些测试。

示例

该机架为与embassy一起使用提供了示例,用于#![no_std],并为tokio提供了用于std的示例。

可以使用以下命令构建示例: cargo +nightly run --bin embassy --features embedded --target thumbv6m-none-eabicargo +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。新版本发布涉及以下步骤:

  1. 运行cargo release --dry-run -- major|minor|patch,并验证输出
  2. 运行cargo release -- major|minor|patch,以发布

关于

  • 最小rustc版本1.79
  • 使用稳定工具链测试和构建

支持的Crates

以下依赖Crates提供基于embedded-hal的平台无关设备驱动程序,同时也实现了此Crates的特质

设备名称 描述 Crates + 文档
ublox-short-range-rs 基于AT命令界面的U-Blox主机短距离设备(Wi-Fi和蓝牙)的驱动程序Crates crates.io docs.rs
ublox-cellular-rs 基于AT命令界面的U-Blox主机蜂窝设备的驱动程序Crates crates.io docs.rs
esp-at-nal 适用于no_std的ESP-AT网络层驱动程序 crates.io docs.rs
moko-mkl62ba Moko MKL62BA LoRaWAN 模块驱动程序包 crates.io docs.rs
seeed-lora-e5 Seeed Lora-E5 LoRaWAN 模块驱动程序包 crates.io docs.rs

功能

  • derive:默认启用。重新导出 atat_derive 以允许派生 Atat__ 特性。
  • bytes:默认启用。重新导出 serde-bytesheapless-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 的开发有任何疑问或想基于它编写驱动程序,请随时加入我们位于 #atat:matrix.org 的矩阵房间!

许可

根据您选择以下之一获得许可

自行决定。

贡献

除非您明确说明,否则您有意提交给作品的所有贡献,根据 Apache-2.0 许可证定义,将按照上述方式双重许可,不附加任何其他条款或条件。

依赖项

~3.5MB
~66K SLoC