100%/D: Trace Data Collection (S2F23/F24 + S6F1/F2, E30 §6.12)
tests / build-and-test (push) Failing after 32s
tests / build-and-test (push) Failing after 32s
New TraceStore keyed by TRID; each entry is a TraceConfig with
DSPER + TOTSMP + REPGSZ + SVID list. S2F23 validates that every SVID
exists (TIAACK=4 otherwise) and registers the trace.
S6F1's body is L,4 of {TRID U4, SMPLN U4, STIME ASCII, list_of <Item>}
— the application chooses whether each value Item is a scalar SVID
value or a packed batch.
The periodic sampling timer that turns an active TraceConfig into
S6F1 emissions is intentionally left to the application (E5 doesn't
mandate a specific scheduler and vendors typically already have one).
Four new SxFy in the catalog.
COMPLIANCE.md: Trace Data Collection Additional capability flips ✅.
Tests: 82 cases / 477 assertions.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -415,6 +415,64 @@ messages:
|
||||
- {name: name, shape: {kind: scalar, item_type: ASCII}}
|
||||
- {name: code, 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
|
||||
# total samples it stops. Periodic execution is the application's
|
||||
# responsibility; this codebase only stores the request.
|
||||
- id: S2F23
|
||||
stream: 2
|
||||
function: 23
|
||||
w: true
|
||||
builder: s2f23_trace_initialize_send
|
||||
parser: parse_s2f23
|
||||
body:
|
||||
kind: list
|
||||
struct_name: TraceInit
|
||||
fields:
|
||||
- {name: trid, shape: {kind: scalar, item_type: U4}}
|
||||
- {name: dsper, shape: {kind: scalar, item_type: ASCII}}
|
||||
- {name: totsmp, shape: {kind: scalar, item_type: U4}}
|
||||
- {name: repgsz, shape: {kind: scalar, item_type: U4}}
|
||||
- name: svids
|
||||
shape:
|
||||
kind: list_of
|
||||
element: {kind: scalar, item_type: U4}
|
||||
|
||||
- id: S2F24
|
||||
stream: 2
|
||||
function: 24
|
||||
builder: s2f24_trace_initialize_ack
|
||||
body: {kind: scalar, item_type: BINARY_BYTE, enum: TraceAck, param: tiaack}
|
||||
|
||||
# S6F1 / S6F2 — Trace Data Send. Emitted by equipment when a batch
|
||||
# completes. `values` holds REPGSZ * len(svids) Items (REPGSZ samples
|
||||
# of len(svids) values each), but the shape lets the application choose
|
||||
# any layout it wants.
|
||||
- id: S6F1
|
||||
stream: 6
|
||||
function: 1
|
||||
w: true
|
||||
builder: s6f1_trace_data_send
|
||||
parser: parse_s6f1
|
||||
body:
|
||||
kind: list
|
||||
struct_name: TraceSample
|
||||
fields:
|
||||
- {name: trid, shape: {kind: scalar, item_type: U4}}
|
||||
- {name: smpln, shape: {kind: scalar, item_type: U4}}
|
||||
- {name: stime, shape: {kind: scalar, item_type: ASCII}}
|
||||
- name: values
|
||||
shape:
|
||||
kind: list_of
|
||||
element: {kind: scalar, item_type: ITEM}
|
||||
|
||||
- id: S6F2
|
||||
stream: 6
|
||||
function: 2
|
||||
builder: s6f2_trace_data_ack
|
||||
body: {kind: scalar, item_type: BINARY_BYTE, enum: EventReportAck, param: ack}
|
||||
|
||||
# S2F45 / S2F46 / S2F47 / S2F48 — Limits Monitoring (E30 §6.21). Each
|
||||
# VID may carry several LimitDefinitions (one per LIMITID), each with
|
||||
# an upper / lower deadband expressed as an arbitrary Item.
|
||||
|
||||
Reference in New Issue
Block a user