39个版本 (22个破坏性版本)

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日

#424 in 编码

Download history 160/week @ 2024-05-01 313/week @ 2024-05-08 268/week @ 2024-05-15 303/week @ 2024-05-22 334/week @ 2024-05-29 412/week @ 2024-06-05 384/week @ 2024-06-12 225/week @ 2024-06-19 486/week @ 2024-06-26 253/week @ 2024-07-03 255/week @ 2024-07-10 380/week @ 2024-07-17 283/week @ 2024-07-24 301/week @ 2024-07-31 248/week @ 2024-08-07 365/week @ 2024-08-14

每月1,249次下载
4 个crate中使用 (3 个直接使用)

MIT/Apache

97KB
2.5K SLoC

ATAT

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

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-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 的平台无关设备驱动程序,这些驱动程序还实现了本仓的特质

设备名称 描述 组件 + 文档
ublox-short-range-rs U-Blox基于主机的短距离设备(Wi-Fi和蓝牙)的驱动程序组件,具有AT命令接口 crates.io docs.rs
ublox-cellular-rs 基于AT命令接口的U-Blox主机蜂窝设备驱动器仓 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-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-2.0许可证定义的,您有意提交以包含在作品中的任何贡献,将如上所述双重许可,不附加任何额外条款或条件。

依赖项

~205–660KB
~14K SLoC