Skip to main content

分层视图

运行时控制流

设计目标

motorbridge 的核心目标是把通用控制能力与厂商协议细节解耦。
  • 核心层可跨品牌复用
  • 厂商差异下沉到 vendor crate
  • 通过 ABI 暴露稳定跨语言接口

仓库结构

分层说明

1) motor_core

  • bus.rs:CAN 总线抽象
  • device.rs:统一 MotorDevice 接口
  • controller.rs:调度/路由/轮询
  • model.rs:型号目录抽象
  • socketcan.rs:Linux 经典 SocketCAN 后端
  • socketcanfd.rs:Linux 独立 SocketCAN-FD 后端
  • pcan.rs:Windows PEAK PCAN 后端(实验性)

2) motor_vendors/*

每个厂商 crate 负责:
  • 帧编码/解码
  • 寄存器语义
  • 型号限制参数
  • 基于 CoreController 的控制器封装

3) motor_abi

  • 导出 C 兼容句柄与函数
  • Rust 错误转换为返回码 + motor_last_error_message()
  • 供 C/C++/Python 等语言集成

4) SDK 与示例

  • motor_cli:运维/调试命令行
  • bindings/python:可直接集成的 Python 包
  • bindings/cpp:可直接集成的 C++ RAII 封装
  • examples/*:最小化跨语言 ABI 调用示例

生命周期策略

控制器生命周期显式管理:
  • 需要明确停止/失能流程时:调用 motor_controller_shutdown
  • 只想关闭本地会话/总线时:调用 motor_controller_close_bus
  • motor_controller_free 仅负责释放对象