e30: S10F7 broadcast terminal display
Adds the last terminal-services message: a multi-line broadcast push to all terminals, no reply. Same TID+lines body as S10F5, W=0. Generated via the catalog: data/messages.yaml schema entry + auto-generated s10f7_terminal_display_broadcast / parse_s10f7. Test round-trips TID and a 3-line broadcast through the builder and parser, confirms W=0. COMPLIANCE.md updated: S10F7 row in §5 added; §8 "out of scope" entry removed. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
+1
-1
@@ -288,6 +288,7 @@ Legend:
|
|||||||
| S10F1 / S10F2 | E→H | ✅ | terminal request (equipment originated) |
|
| S10F1 / S10F2 | E→H | ✅ | terminal request (equipment originated) |
|
||||||
| S10F3 / S10F4 | H→E | ✅ | terminal display single |
|
| S10F3 / S10F4 | H→E | ✅ | terminal display single |
|
||||||
| S10F5 / S10F6 | H→E | ✅ | terminal display multi |
|
| S10F5 / S10F6 | H→E | ✅ | terminal display multi |
|
||||||
|
| S10F7 | H→E | ✅ | terminal display broadcast (W=0, no reply) |
|
||||||
| S12F1–F19 | H↔E | ✅ | wafer maps — row, array, coord; setup, request, send, error |
|
| S12F1–F19 | H↔E | ✅ | wafer maps — row, array, coord; setup, request, send, error |
|
||||||
| S14F1 / S14F2 | H→E | ✅ | E39 GetAttr |
|
| S14F1 / S14F2 | H→E | ✅ | E39 GetAttr |
|
||||||
| S14F3 / S14F4 | H→E | ✅ | E39 SetAttr |
|
| S14F3 / S14F4 | H→E | ✅ | E39 SetAttr |
|
||||||
@@ -384,7 +385,6 @@ compliance claim.
|
|||||||
| HSMS-GS (multi-session) | Out of scope — modern HSMS-SS covers virtually all current GEM equipment. |
|
| HSMS-GS (multi-session) | Out of scope — modern HSMS-SS covers virtually all current GEM equipment. |
|
||||||
| Equipment Processing States (concrete states) | E30 §6.3 says the specific states are tool-defined. We provide the engine (`ControlTransitionTable` + the YAML loader); equipment vendors load their concrete states (IDLE / SETUP / READY / EXECUTING / PAUSE / …) the same way `data/control_state.yaml` is loaded today. Spec-compliant either way. |
|
| Equipment Processing States (concrete states) | E30 §6.3 says the specific states are tool-defined. We provide the engine (`ControlTransitionTable` + the YAML loader); equipment vendors load their concrete states (IDLE / SETUP / READY / EXECUTING / PAUSE / …) the same way `data/control_state.yaml` is loaded today. Spec-compliant either way. |
|
||||||
| E42 Enhanced Process Programs (S7F23–F26) | A separate SEMI standard. E30 GEM Process Program Management only requires the unformatted set (S7F1/F3/F5/F17/F19), which we have. |
|
| E42 Enhanced Process Programs (S7F23–F26) | A separate SEMI standard. E30 GEM Process Program Management only requires the unformatted set (S7F1/F3/F5/F17/F19), which we have. |
|
||||||
| S10F7 Broadcast Terminal Display | Rarely used; equipment vendors typically forgo it. Not required for the Terminal Services capability. |
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -1329,6 +1329,22 @@ messages:
|
|||||||
builder: s10f6_terminal_display_multi_ack
|
builder: s10f6_terminal_display_multi_ack
|
||||||
body: {kind: scalar, item_type: BINARY_BYTE, enum: TerminalAck, param: ack}
|
body: {kind: scalar, item_type: BINARY_BYTE, enum: TerminalAck, param: ack}
|
||||||
|
|
||||||
|
# S10F7 — Terminal Display, Broadcast (host -> equipment, no reply).
|
||||||
|
# E5: a one-way push of a multi-line broadcast message to all terminals.
|
||||||
|
# Same TID + LINES shape as S10F5 but no ack expected (W=0).
|
||||||
|
- id: S10F7
|
||||||
|
stream: 10
|
||||||
|
function: 7
|
||||||
|
builder: s10f7_terminal_display_broadcast
|
||||||
|
parser: parse_s10f7
|
||||||
|
body:
|
||||||
|
kind: list
|
||||||
|
struct_name: TerminalDisplayBroadcast
|
||||||
|
fields:
|
||||||
|
- {name: tid, shape: {kind: scalar, item_type: BINARY_BYTE}}
|
||||||
|
- name: lines
|
||||||
|
shape: {kind: list_of, element: {kind: scalar, item_type: ASCII}}
|
||||||
|
|
||||||
# =====================================================================
|
# =====================================================================
|
||||||
# S12 — Wafer Maps (E5 §13).
|
# S12 — Wafer Maps (E5 §13).
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -218,6 +218,20 @@ TEST_CASE("S10F5 carries TID + line list; S10F6 ack round-trip") {
|
|||||||
CHECK(*ack_byte(s10f6_terminal_display_multi_ack(TerminalAck::Accepted)) == 0);
|
CHECK(*ack_byte(s10f6_terminal_display_multi_ack(TerminalAck::Accepted)) == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_CASE("S10F7 broadcast: round-trip TID + lines, W=0") {
|
||||||
|
auto m = s10f7_terminal_display_broadcast(
|
||||||
|
5, {"ALERT: pressure", "EVAC NOW", "STATUS UNKNOWN"});
|
||||||
|
CHECK(m.stream == 10);
|
||||||
|
CHECK(m.function == 7);
|
||||||
|
CHECK_FALSE(m.reply_expected); // E5: S10F7 is a one-way broadcast.
|
||||||
|
auto td = parse_s10f7(m);
|
||||||
|
REQUIRE(td.has_value());
|
||||||
|
CHECK(td->tid == 5);
|
||||||
|
REQUIRE(td->lines.size() == 3);
|
||||||
|
CHECK(td->lines[0] == "ALERT: pressure");
|
||||||
|
CHECK(td->lines[2] == "STATUS UNKNOWN");
|
||||||
|
}
|
||||||
|
|
||||||
// ---- Spool data ready (S6F25/F26) --------------------------------------
|
// ---- Spool data ready (S6F25/F26) --------------------------------------
|
||||||
|
|
||||||
TEST_CASE("S6F25 carries NUM-MSG; S6F26 ack round-trip") {
|
TEST_CASE("S6F25 carries NUM-MSG; S6F26 ack round-trip") {
|
||||||
|
|||||||
Reference in New Issue
Block a user