Files
DataRouter/CHANGELOG.md
T

3.0 KiB
Raw Permalink Blame History

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_sensor
    • datarouter_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