Files
softbus_daemon/plugins/protocols/modbus_rtu
flower_linux fcafa81db1 edge
2026-05-19 16:42:01 +08:00
..
2026-04-14 15:39:04 +08:00
2026-05-19 16:42:01 +08:00
2026-04-28 21:56:56 +08:00
2026-04-15 20:05:04 +08:00
2026-04-10 10:52:10 +08:00
2026-04-10 10:52:10 +08:00
2026-04-10 10:52:10 +08:00
2026-04-10 10:52:10 +08:00

Modbus RTU 协议模块(modbus_rtu

本目录实现 Modbus RTU 的成帧、编解码与解析插件,供守护进程静态编译与 plugins/protocols/modbus_rtu 动态库(.so)共用同一套源码。

目录结构

子目录 职责
types/ PDU 数据模型:ModbusRtuPdu 及各类请求/响应结构体,供编解码与 ProtocolEnvelope 使用。
codec/ ADU 与 ModbusRtuPdu 的互转:decodeModbusRtu / encodeModbusRtu(依赖 typesframer 中的 CRC 等工具函数)。
framer/ 字节流成帧:ModbusRtuFraming长度预测、CRCModbusRtuFramerPluginStage1 插件会话)。
parser/ Stage2 协议插件:ModbusRtuProtocolPlugin,将完整帧解析为 ProtocolEnvelope / 兼容 JSON。

依赖方向(建议遵守)

types  (无本模块内依赖)
  ↑
codec、framer  (可依赖 typescodec 使用 framer 中的 crc16/crcOk
  ↑
parser         (依赖 codec、types不反向依赖 framer 插件类)

成帧与解析在流水线中分属不同阶段;解析侧只应处理 CompleteFrame,与 PipelineContext::frameKind 约定一致。

与动态库的关系

  • 动态库入口:plugins/protocols/modbus_rtu/plugin_stub.cpp,导出 softbus_create_protocol_plugin / softbus_create_framer_plugin 等符号。
  • 主工程 CMakeLists.txt 同样列出本目录下源文件,用于无 .so 时的内置链接;路径与 include 均以 plugins/protocols/modbus_rtu/... 为准。

配置提示

daemon_config.jsonplugins.framers 中配置 libmodbus_rtu.so 路径即可加载成帧插件;解析插件加载方式与 PluginHost / 工程内注册逻辑一致。

扩展其它协议时的参考

新增协议(如 Modbus TCP、CANopen建议沿用类似分层types → codec/framer → parser,并在各自 plugin_stub 中导出统一 ABI 工厂函数,由 PluginHost 注册到 PluginManager