Skip to content

feat: 增加 GEM 远程命令链路 - #20

Merged
CSJ608 merged 1 commit into
mainfrom
feat-gem-remote-commands
Aug 28, 2026
Merged

CSJ608 merged 1 commit into
mainfrom
feat-gem-remote-commands

Conversation

@CSJ608

@CSJ608 CSJ608 commented Aug 28, 2026

Copy link
Copy Markdown
Owner

路线图判断

阶段 2 已完成报告、Collection Event 和报警通知的最小链路,下一优先级是远程命令。它补齐 Host 到 Equipment 的业务 Primary/Secondary 方向,并可复用现有 Profile、运行期路由、T3 和真实 TCP 基础;命令目录、权限、调度和状态门控需要更多策略,留到后续切片。

本 PR 的最小纵向切片仅包含:可配置远程命令消息对、动态命令/参数与原始结果模型、Host 发起、Equipment 单一可释放处理器、严格请求/回复校验和真实 TCP 接受/无处理器拒绝。不包含命令目录、参数 Schema、权限、排队、重试、幂等、历史或未经授权标准核对的 GEM 状态门控。

变更

  • 在 GemMessageProfile 增加显式远程命令消息对,工程基线使用 S2F41/S2F42,并保留前两代构造签名。
  • 新增不可变 GemRemoteCommand、参数、整体结果与参数结果模型;所有标识和值保持动态 SecsItem。
  • Host 新增 ExecuteRemoteCommandAsync,返回完整原始完成结果,不把非零代码折叠成异常。
  • Equipment 新增单一可释放处理器;没有处理器时使用 Profile 失败值和空参数结果立即回复。
  • 严格校验 W-Bit、二元素请求/回复、参数项形状、名称唯一性、Binary 单字节结果码和 Secondary 消息对。
  • 更新 README、路线图、GEM/端点文档和 Unreleased CHANGELOG。

验证

  • dotnet build SecsFrame.slnx -c Release:通过,0 警告、0 错误。
  • dotnet test SecsFrame.slnx -c Release --no-build:net8.0/net10.0 主测试各 193 项通过;官方 nuget.org Secs4Net 3.1.0 互操作测试各 2 项通过。
  • 本机 net48 testhost 在发现后无进展并手动中止;合并前以 Windows Actions 的 net48 作强制门禁。
  • 未修改 Secs4Net 依赖,互操作项目继续使用 nuget.org 官方 3.1.0 包。

标准边界

S2F41/S2F42 和正文形状仅作为仓库的非规范性工程基线。命令、参数名和值允许动态 Item,整体与参数结果码按原始字节返回。未使用授权 E30-0526 与一致性测试核对前,不声明 RCMD/HCACK/CPACK 语义、状态条件或完整 GEM 合规。

@CSJ608
CSJ608 merged commit 45a0ca9 into main Aug 28, 2026
4 checks passed
@CSJ608
CSJ608 deleted the feat-gem-remote-commands branch August 28, 2026 18:14
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.

1 participant