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:
@@ -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);
|
||||
}
|
||||
|
||||
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) --------------------------------------
|
||||
|
||||
TEST_CASE("S6F25 carries NUM-MSG; S6F26 ack round-trip") {
|
||||
|
||||
Reference in New Issue
Block a user