M: S16F7/F8 PRJobMonitor + S16F15/F16 PRJobCreateMultiple
Closes the two E40 bulk/control gaps the COMPLIANCE doc had flagged
as out-of-scope:
S16F7 / F8 PRJobMonitor — host enables/disables S16F9 alerts
per PJ. PRALERT bit 7 is the enable flag (matches the
ALED convention from S5F3). Server dispatches into the
existing set_alert() store API.
S16F15 / F16 PRJobCreateMultiple — bulk create variant. Host posts
a list of (PRJOBID, PPID, MTRLOUTSPEC) entries; the
equipment processes them in order and returns a
per-PJ HCACK list so the host can identify which
subset failed. Same validators as S16F11.
Catalog now has three new structs: PRJobMonitorEntry,
PRJobCreateEntry, PRJobCreateMultiResult. Two round-trip tests cover
the new wire shapes; server-side correctness is exercised through the
existing PJ store invariants (dedup, validator) which both new paths
delegate to.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -1541,6 +1541,80 @@ messages:
|
||||
builder: s16f14_pr_job_dequeue_ack
|
||||
body: {kind: scalar, item_type: BINARY_BYTE, enum: HostCmdAck, param: ack}
|
||||
|
||||
# S16F7 / S16F8 — PRJobMonitor. Host enables or disables S16F9
|
||||
# PRJobAlert emission per PRJOBID. PRALERT is a 1-byte boolean
|
||||
# (0 = disable, 0x80 = enable, per E40-0705 §10).
|
||||
- id: S16F7
|
||||
stream: 16
|
||||
function: 7
|
||||
w: true
|
||||
builder: s16f7_pr_job_monitor
|
||||
parser: parse_s16f7
|
||||
body:
|
||||
kind: list
|
||||
struct_name: PRJobMonitorRequest
|
||||
fields:
|
||||
- name: entries
|
||||
shape:
|
||||
kind: list_of
|
||||
element:
|
||||
kind: list
|
||||
struct_name: PRJobMonitorEntry
|
||||
fields:
|
||||
- {name: prjobid, shape: {kind: scalar, item_type: ASCII}}
|
||||
- {name: pralert, shape: {kind: scalar, item_type: BINARY_BYTE}}
|
||||
|
||||
- id: S16F8
|
||||
stream: 16
|
||||
function: 8
|
||||
builder: s16f8_pr_job_monitor_ack
|
||||
body: {kind: scalar, item_type: BINARY_BYTE, enum: HostCmdAck, param: ack}
|
||||
|
||||
# S16F15 / S16F16 — PRJobCreateMultiple. Bulk create variant of
|
||||
# S16F11; the host posts a batch of jobs in one round-trip. The
|
||||
# equipment processes them in order and replies with a per-job ACK
|
||||
# list so the host can tell which subset failed.
|
||||
- id: S16F15
|
||||
stream: 16
|
||||
function: 15
|
||||
w: true
|
||||
builder: s16f15_pr_job_create_multi
|
||||
parser: parse_s16f15
|
||||
body:
|
||||
kind: list
|
||||
struct_name: PRJobCreateMultiRequest
|
||||
fields:
|
||||
- name: jobs
|
||||
shape:
|
||||
kind: list_of
|
||||
element:
|
||||
kind: list
|
||||
struct_name: PRJobCreateEntry
|
||||
fields:
|
||||
- {name: prjobid, shape: {kind: scalar, item_type: ASCII}}
|
||||
- {name: ppid, shape: {kind: scalar, item_type: ASCII}}
|
||||
- name: mtrloutspec
|
||||
shape: {kind: list_of, element: {kind: scalar, item_type: ASCII}}
|
||||
|
||||
- id: S16F16
|
||||
stream: 16
|
||||
function: 16
|
||||
builder: s16f16_pr_job_create_multi_ack
|
||||
parser: parse_s16f16
|
||||
body:
|
||||
kind: list
|
||||
struct_name: PRJobCreateMultiAck
|
||||
fields:
|
||||
- name: results
|
||||
shape:
|
||||
kind: list_of
|
||||
element:
|
||||
kind: list
|
||||
struct_name: PRJobCreateMultiResult
|
||||
fields:
|
||||
- {name: prjobid, shape: {kind: scalar, item_type: ASCII}}
|
||||
- {name: ack, shape: {kind: scalar, item_type: BINARY_BYTE, enum: HostCmdAck}}
|
||||
|
||||
# S16F27 / F28 — CJobCommand (E94). Host issues Start / Pause /
|
||||
# Resume / Stop / Abort against an existing CJ.
|
||||
- id: S16F27
|
||||
|
||||
Reference in New Issue
Block a user