RTU/mimo/plan/libiec_文件拆分与文件服务.md

3.9 KiB
Raw Blame History

iec_method.cpp 功能拆分 + 文件服务 — 完成

日期: 2026-06-30 | 编译: 通过 删除: iec_method.cpp (1014行) | 新增: 11 个功能子文件


最终文件结构

src/system/libiec/
├── inc/
│   ├── iec.h              # CS10x 封装 (44行)
│   ├── iec_method.h        # 全部类型定义 + 全部回调声明 (230行)
│   ├── iec_cfg_parse.h     # XML配置解析接口
│   └── iec_point.h         # 信号点表入口
└── src/
    ├── iec.cpp              # 初始化/参数配置/回调注册/线程驱动 (552行)
    ├── iec_cfg_parse.cpp     # XML解析 (136行)
    ├── iec_point.cpp         # datacenter链接+队列注册 (246行)
    ├── iec_common.cpp        # ★ 全局队列+辅助函数 (80行)
    ├── iec_time.cpp          # ★ 对时(GetTimeItfs/SetTimeItfs) (38行)
    ├── iec_yc.cpp            # ★ 遥测+扰动遥测 (78行)
    ├── iec_yx.cpp            # ★ 遥信 (43行)
    ├── iec_soe.cpp           # ★ SOE (72行)
    ├── iec_dd.cpp            # ★ 电度+时标电度 (95行)
    ├── iec_fault.cpp         # ★ 故障事件 (75行)
    ├── iec_yk.cpp            # ★ 遥控 (31行)
    ├── iec_param.cpp         # ★ 参数/定值 (97行)
    └── iec_file.cpp          # ★ 文件服务 (176行)

文件服务实现

参照 DCU_HOST FileParamItfs.c,适配 RTU Linux

回调 CBB类型 功能
Fm_GetDirFile CS10x_GetProDirFile POSIX opendir/readdir 返回文件信息
Fm_SearchDirFileNum CS10x_GetNumDirFile 统计目录下文件数
Fm_ReadFile CS10x_ReadFile 按偏移读文件片段 (fseek+fread)
Cs10xWriteItfs CS10x_Write 按偏移写文件片段 (fseek+fwrite)
Cs10xWriteFileCheckItfs CS10x_WriteFileCheck 创建待写入文件
Cs10xWriteFinishItfs CS10x_WriteFinish MD5校验+关闭文件

文件根目录: ./test/file/ | 注册: CS10x_S_FileReadOprtHandler / CS10x_S_FileWriteOprtHandler


拆分方案

src/system/libiec/
├── inc/
│   ├── iec_common.h       ← 新增: 公共声明(全局队列 + GetInforOut/StampToCp56/local_sem_init)
│   └── iec_method.h       ← 现有: 所有类型定义 + 全部回调声明(含新增文件服务)
└── src/
    ├── iec_common.cpp      ← 新增: 全局队列定义 + 公共辅助函数
    ├── iec_time.cpp        ← 新增: GetTimeItfs, SetTimeItfs, reset COI
    ├── iec_yc.cpp           ← 新增: GetYc*, GetDiturbYc*, UserWriteDisturbYc
    ├── iec_yx.cpp           ← 新增: GetYxCountByGroup, GetYxStatusByGroup
    ├── iec_soe.cpp          ← 新增: UserWriteSoeEvent, GetSOE*, UpdateSoePtrOut
    ├── iec_dd.cpp           ← 新增: GetDd*, GetTimeDdu*, UserWriteDisturbDd
    ├── iec_fault.cpp        ← 新增: UserWriteFaultEvent, GetFaultEvent*
    ├── iec_yk.cpp           ← 新增: Cs10xYkVerifyItfs, SetYkInfor
    ├── iec_param.cpp        ← 新增: GbParam* 全部参数回调
    ├── iec_file.cpp         ← ★ 新增: 文件服务全功能(读/写/目录)
    └── iec_method.cpp       ← 删除

文件服务实现

参照 DCU_HOST FileParamItfs.c 模式,适配 RTU Linux 环境:

回调 签名 实现
Fm_GetDirFile CS10x_GetProDirFile 遍历目录返回文件信息
Fm_SearchDirFileNum CS10x_GetNumDirFile 统计目录文件数
Fm_ReadFile CS10x_ReadFile 按偏移读取文件片段
Cs10xWriteItfs CS10x_Write 按偏移写入文件片段
Cs10xWriteFileCheckItfs CS10x_WriteFileCheck 查询/创建待写入文件
Cs10xWriteFinishItfs CS10x_WriteFinish MD5校验+文件最终化

注册: CS10x_S_FileReadOprtHandler / CS10x_S_FileWriteOprtHandler