A2: S2F49/F50 Enhanced Remote Command
Adds the OBJSPEC-scoped sibling of S2F41 with extended per-parameter ack shape (CPACK + CEPACK). Wire: S2F49 body <DATAID OBJSPEC RCMD <L,n <CPNAME CPVAL>>> S2F50 body <HCACK <L,n <CPNAME CPACK CEPACK>>> Server delegates to the existing HostCommandRegistry, logs OBJSPEC for audit, and currently returns empty cpacks (all-OK). Per-parameter failures will be wired when the command registry grows CEPACK-level validation; this commit is the catalog + dispatch scaffolding. secsgem-py defines these in its catalog but never dispatches them; this puts the C++ port marginally ahead on remote-command coverage. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -433,6 +433,56 @@ messages:
|
||||
- {name: name, shape: {kind: scalar, item_type: ASCII}}
|
||||
- {name: code, shape: {kind: scalar, item_type: BINARY_BYTE}}
|
||||
|
||||
# S2F49 / S2F50 — Enhanced Remote Command (E30 §6.4, E5 §10.4). Same
|
||||
# intent as S2F41/F42 but routes a command at a specific object via
|
||||
# OBJSPEC, carries a DATAID transaction handle, and the reply uses
|
||||
# extended per-CP acks (CPACK + CEPACK) so the equipment can flag both
|
||||
# "name unknown" (CPACK) and "value invalid" (CEPACK) independently.
|
||||
- id: S2F49
|
||||
stream: 2
|
||||
function: 49
|
||||
w: true
|
||||
builder: s2f49_enhanced_host_command
|
||||
parser: parse_s2f49
|
||||
body:
|
||||
kind: list
|
||||
struct_name: EnhancedHostCommand
|
||||
fields:
|
||||
- {name: dataid, shape: {kind: scalar, item_type: U4}}
|
||||
- {name: objspec, shape: {kind: scalar, item_type: ASCII}}
|
||||
- {name: rcmd, shape: {kind: scalar, item_type: ASCII}}
|
||||
- name: params
|
||||
shape:
|
||||
kind: list_of
|
||||
element:
|
||||
kind: list
|
||||
struct_name: CommandParameter
|
||||
external_struct: true
|
||||
fields:
|
||||
- {name: name, shape: {kind: scalar, item_type: ASCII}}
|
||||
- {name: value, shape: {kind: scalar, item_type: ITEM}}
|
||||
|
||||
- id: S2F50
|
||||
stream: 2
|
||||
function: 50
|
||||
builder: s2f50_enhanced_host_command_ack
|
||||
parser: parse_s2f50
|
||||
body:
|
||||
kind: list
|
||||
struct_name: EnhancedHostCommandReply
|
||||
fields:
|
||||
- {name: hcack, shape: {kind: scalar, item_type: BINARY_BYTE, enum: HostCmdAck}}
|
||||
- name: cpacks
|
||||
shape:
|
||||
kind: list_of
|
||||
element:
|
||||
kind: list
|
||||
struct_name: EnhancedCommandParameterAck
|
||||
fields:
|
||||
- {name: name, shape: {kind: scalar, item_type: ASCII}}
|
||||
- {name: cpack, shape: {kind: scalar, item_type: BINARY_BYTE}}
|
||||
- {name: cepack, shape: {kind: scalar, item_type: BINARY_BYTE}}
|
||||
|
||||
# S2F23 / S2F24 — Trace Initialize Send (E30 §6.12). Host requests
|
||||
# periodic SVID sampling: every DSPER, equipment captures the SVID
|
||||
# values; every REPGSZ samples it emits an S6F1 batch; after TOTSMP
|
||||
|
||||
Reference in New Issue
Block a user