RTU/mimo/plan/channel_cfg统一配置.md

1.7 KiB

通道配置统一化 — channel_cfg.cpp

日期: 2026-06-30 | 状态: 执行中


设计

数据流

channel_cfg.cpp (system/RTU/src/)
  ├── XML 解析 → g_ch_cfg_list / g_ch_fwd_list
  ├── 注册每个 Channel 的 dc interface 信号
  └── 提供查询 API

libcom_decode (decode_channel_mgr.cpp)
  └── 通过 g_ch_cfg_list 创建通道, state_cb 更新 interface

libself_ptl (self_ptl.cpp)
  └── 查找 app="self_ptl" 的 Forward → 获取通道 → 绑定 interface

XML 新格式

<Channel mode="tcp_server" idx="0" saddr="tcp_s0" desc="..." local_ip="..." local_port="..."/>
<Channel mode="uart"       idx="0" saddr="uart0"  desc="..." device="..." .../>
<Forward from_saddr="tcp_s0" to_saddr="uart0" app="self_ptl"/>

数据结构 (mySystem.h)

struct stru_ch_cfg {
    std::string key, saddr, desc;
    CommType type;
    void *p_para;       // → tcp_params[i] / uart_params[i]
    int    id, socket_fd;
};
extern std::vector<stru_ch_cfg> g_ch_cfg_list;

struct stru_ch_fwd_cfg {
    std::string from_saddr, to_saddr, app;
};
extern std::vector<stru_ch_fwd_cfg> g_ch_fwd_list;

int channel_cfg_load(const char *proc_dir);
stru_ch_cfg *channel_find_by_saddr(const char *saddr);
stru_ch_cfg *channel_find_by_id(int id);

修改清单

文件 改动
mySystem.h +stru_ch_cfg, +stru_ch_fwd_cfg, +extern globals, +channel_* API
system/RTU/src/channel_cfg.cpp ★ 新建: XML解析 + dc信号注册
com_channel_def.h 简化, 删除向量定义
decode_channel_mgr.cpp 用 channel_cfg_* 替代本地解析
self_ptl.cpp 用 channel_find_by_saddr 替代硬编码信号名
channel_config*.xml Channel+saddr, Forward+from_saddr+to_saddr+app