# Changelog ## [Unreleased] ### ⚠ Breaking Changes - **API 前缀重命名**:所有 `datarouter_*` / `DATAROUTER_*` 改为 `dr_*` / `DR_*` - `datarouter_init()` → `dr_init()` - `datarouter_port_create()` → `dr_port_create()` - `datarouter_send_()` → `dr_send_()` - `datarouter_on_recv_()` → `dr_on_recv_()` - `DATAROUTER_SEND_sensor` → `DR_SEND_sensor` - `datarouter_port_t` → `dr_port_t` - 配置宏 `DATAROUTER_SEND(...)` / `DATAROUTER_RECV(...)` → `DR_SEND(...)` / `DR_RECV(...)` - **发送函数不再接收 port_id**:`dr_send_(data, len)` 自动广播到所有 send_type 匹配的端口 - **端口移除 `recv_type`**:端口只保留 `send_type` + handler 列表,接收侧由用户自行调用 `dr_on_recv_()` ### 🚀 新功能 - **自动广播路由**:调用 `dr_send_(data, len)` 时遍历所有端口,自动匹配 `send_type`,逐一调用 handler - **外部配置覆盖**:`datarouter.h` 通过 `__has_include()` 优先加载用户配置,找不到时回退到库默认配置 - **配置模板**:新增 `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