3.9 KiB
3.9 KiB
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