Releases: ZeroOneLab/EmbATlink
Releases · ZeroOneLab/EmbATlink
Release list
EmbATlink v2.1
v2.1 — API 简化与端口层增强
API 变更(不兼容)
at_cmd_exec()移除out_resp参数,需要响应数据时直接调用at_recv_get()获取,职责更清晰
新增
at_port_init()端口函数,由at_channel_init()内部调用,用于初始化通道硬件资源(互斥锁、中断、NVIC 等),保持高内聚低耦合
文档
- 通道注册示例改用
sizeof替代ARRAY_SIZE宏,更纯粹 - 补充通道号参数说明,明确
channel参数的作用 - 新增"未知响应内容获取"示例,演示
expect=NULL的使用场景 - 所有示例代码统一使用具体通道号(如
0)替代变量channel - Demo 工程新增
AT+VERSION未知响应演示
工程
- 驱动源文件移至项目根目录,去除冗余
EmbATlink/嵌套层 - 新增
.gitignore,忽略.o/.d等编译产物 - 移植指南端口函数数量从 6 个更新为 7 个
- 更新资源占用数据
EmbATlink v2.0
EmbATlink v2.0 正式发布,本次大版本对框架进行了自底向上的重构,
API 不兼容 v1.x。
架构变更
- 驱动层扁平化至项目根目录,Demo 从 HAL+CubeMX 切换为 StdPeriph Library(体积精简 95%+)
- 修复文件命名:at_deriver.h → at_driver.h
API 不兼容变更
- 用 at_channel_t 通道结构体替代旧版全局宏,缓冲区与 URC 关键字按通道配置
- at_cmd_config_t 字段全面重命名,初始化由 at_init() 改为 at_channel_init(channel, cfg)
- 所有端口函数新增 channel 参数,支持多通道适配
新增
- at_recv_buf_swap() 支持 OTA 大数据场景零额外内存开销
- at_recv_remove() 支持多条 URC 混在同一缓冲区时各自独立消费
- at_resp_param_get() 支持 JSON 等含逗号字符串参数的安全提取
- at_session_lock/unlock() 递归会话锁保护 RTOS 下多步事务原子性
- 日志宏默认关闭,用户侧按需覆盖,消除强制 printf 依赖
- 新增 at_port_send_line_ending() / at_port_recv_done() 按通道定制
资源占用
- 驱动核心:~1.3KB Flash / 16 bytes RAM
- Demo 工程总计:~8.6KB Flash / ~1.3KB RAM
从 v1.x 迁移
详见 README 中的 移植指南
EmbATlink v1.1
优化了打印信息,原本:
- 指令发送成功:`[AT][SUCC] CMD:AT`
- 指令发送超时重发:`[AT][RETRY][1] CMD:AT, TIME OUT`
- 响应匹配失败:`[AT][ERR][1] CMD:AT, RECV: ERROR`
- 缓冲区溢出:`[ERR] RECV BUFFER OVERFLOW (LUN:0)`
现在:
- 指令发送成功:`[AT:{LUN}][SUCC] CMD:AT`
- 指令发送超时重发:`[AT:{LUN}][WARN][1] CMD:AT, TIME OUT`
- 响应匹配失败:`[AT:{LUN}][WARN][1] CMD:AT, RECV: ERROR`
- 指令执行失败:`[AT:{LUN}][ERR] CMD:AT`
- 缓冲区溢出:`[AT:{LUN}][ERR] RECV BUFFER OVERFLOW`
并增加了不同状况打印的颜色:
// #define AT_LOG_I(fmt, ...) printf(fmt, ##__VA_ARGS__)
// #define AT_LOG_W(fmt, ...) printf(fmt, ##__VA_ARGS__)
// #define AT_LOG_E(fmt, ...) printf(fmt, ##__VA_ARGS__)
/* 颜色打印可参考:https://github.com/ZeroOneLab/MicroLOG.git */
#define AT_LOG_I(fmt, ...) printf("\x1b[32m" fmt "\x1b[0m", ##__VA_ARGS__) // 绿色打印
#define AT_LOG_W(fmt, ...) printf("\x1b[33m" fmt "\x1b[0m", ##__VA_ARGS__) // 黄色打印
#define AT_LOG_E(fmt, ...) printf("\x1b[31m" fmt "\x1b[0m", ##__VA_ARGS__) // 红色打印