Skip to content

feat : 统一 controller 遥控接收框架并迁移应用 - #166

Merged
ahpasserby merged 17 commits into
mainfrom
M2rt1n/controller
Oct 28, 2026
Merged

ahpasserby merged 17 commits into
mainfrom
M2rt1n/controller

Conversation

@m2rt1n88

@m2rt1n88 m2rt1n88 commented Oct 28, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

  • 重构遥控接收层,解决旧实现协议字段分散、直接访问、离线/失控判断与流式分帧不一致的问题。
  • 引入统一 receiver 抽象与状态快照,DBUS、SBUS/i6X、VT13 各自负责协议解码,上层通过一致 API 获取在线状态、序号、时间与输入数据。

Changes

  • 新增 DBUS、SBUS/i6X、RefereeRC(VT13) 接收器,支持 UART 自动接收、手动输入、流式重同步以及 CRC、长度和范围校验。
  • 调整协议链路分帧职责:裁判帧与遥控帧统一分流,VT13 由接收器独立校验解码,避免混合字节流误判。
  • 将各示例与机器人程序迁移到快照式输入 API,统一开关枚举、鼠标键盘状态和日志输出,并移除旧遥控实现及旧示例。
  • 修正 DBUS/SBUS UART 字长为 9 位。

Benefits

  • 提升遥控输入在多协议、离线、失控和异常字节流场景下的健壮性。
  • 降低上层控制逻辑对协议细节的耦合,便于后续维护与扩展新遥控设备。

USART3 使用 100000 波特率与偶校验,配合 9 位字长(8 数据位 + 校验位)
- 新增 boards/remote 模块,为 DBUS、SBUS、VT13(RefereeRc) 及 FS-i6X 提供独立接收器,由 RemoteReceiver 基类统一管理有效帧序号、接收时间与失控标志,UART、时钟和控制映射交由接入层处理
- 将 Protocol::Receive 改为基于有界缓存的 A5/A9 分帧解析,VT13 的校验与解码下沉到 RefereeRcReceiver,Protocol 仅负责字节流拆帧
- 在 Protocol/Referee/Host 的 ProcessDataRx 中按结构体大小严格校验载荷长度,避免越界拷贝
- 移除已废弃的 0x0304 REMOTE_CONTROL_DATA 及 0x53 REMOTE_CONTROL_VT13 命令分支
- 新增 dt7、vt13、fs_i6x 示例程序
- 示例中的接收器改用 remote::Dbus、remote::I6x 与 remote::RefereeRc,VT13 状态与模式类型重命名为 RefereeRcFrame / RefereeRcMode
- FS-i6X 的通道开关枚举改用统一的 TwoPositionSwitch / ThreePositionSwitch,并修正 UP/DOWN 映射
- fs_i6x 示例补充通道对应关系说明与开关编码诊断输出,便于排查 SBUS 解析结果
@ahpasserby
ahpasserby merged commit 23c7ec9 into main Oct 28, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants