3.0 KiB
3.0 KiB
Changelog
[Unreleased]
⚠ Breaking Changes
- API 前缀重命名:所有
datarouter_*/DATAROUTER_*改为dr_*/DR_*datarouter_init()→dr_init()datarouter_port_create()→dr_port_create()datarouter_send_<id>()→dr_send_<id>()datarouter_on_recv_<id>()→dr_on_recv_<id>()DATAROUTER_SEND_sensor→DR_SEND_sensordatarouter_port_t→dr_port_t- 配置宏
DATAROUTER_SEND(...)/DATAROUTER_RECV(...)→DR_SEND(...)/DR_RECV(...)
- 发送函数不再接收 port_id:
dr_send_<id>(data, len)自动广播到所有 send_type 匹配的端口 - 端口移除
recv_type:端口只保留send_type+ handler 列表,接收侧由用户自行调用dr_on_recv_<id>()
🚀 新功能
- 自动广播路由:调用
dr_send_<id>(data, len)时遍历所有端口,自动匹配send_type,逐一调用 handler - 外部配置覆盖:
datarouter.h通过__has_include(<datarouter_config.h>)优先加载用户配置,找不到时回退到库默认配置 - 配置模板:新增
datarouter_config_template.h供用户快速自定义 - CMake Presets:新增
CMakePresets.json,覆盖 7 种构建配置 - Cortex-M 编译矩阵:
DR_COMPILE_CHECK=ON自动检测arm-none-eabi-gcc,验证 CM3 / CM4(soft/hard) / CM7(soft/hard-sp/hard-dp) 6 个变体的编译兼容性 - 嵌入式源文件直用模式:
DR_SOURCE_ONLY=ON只暴露源码路径,用户将datarouter.c加入自身 target 以继承全部编译标志,消除 VFP/Thumb ABI 不匹配 - Gitea CI 工作流:新增
.gitea/workflows/ci.yml,PR/推送时执行 host 测试 + Cortex-M 编译矩阵 - Release 工作流更新:
.gitea/workflows/release.yml新增 Cortex-M compile matrix 步骤
✨ 增强
- 支持一个端口注册多个 handler(默认上限 4),发送时逐一调用
- 运行时通过
dr_port_remove_handler()/dr_port_clear_handlers()动态改变路由 - 发送能力和接收能力分开声明,按需组合
📚 文档
- 新增
DESIGN.md(含 8 幅 PlantUML 架构图) - 新增
TEST_CASES.md(22 个测试用例文档) - 新增
CHANGELOG.md README.md全面更新,覆盖嵌入式构建、Preset 用法、API 参考- 所有源文件添加中文 Doxygen 注释
🧪 测试
- 22 个单元测试,覆盖端口管理、send_type/handler 设置、自动广播路由、类型过滤、移除/删除后路由、接收回调、能力元数据
🐛 修复
- 修复 ARM 交叉编译时 VFP 参数不匹配问题(通过
DR_SOURCE_ONLY模式) - 修复
#undef宏名称残留旧前缀
[1.0.0] - 2024-01-01
🚀 新功能
- 初始版本发布
- X-macro 代码生成:编译期声明通道,自动生成枚举、发送函数、回调声明
- 动态端口管理:创建、删除、运行时切换能力
- 弱符号回调默认实现
- Gitea Release 工作流:自动化构建 linux-amd64 / linux-arm64 / linux-armhf / windows-amd64 / baremetal-arm32