New LimitMonitorStore keyed by VID; each entry is a vector of LimitDefinition (LIMITID + upper/lower deadband as arbitrary Items). S2F45/F46 set, S2F47/F48 read. VLAACK validates each VID exists. Four new SxFy in the catalog; codegen handles the nested list-of-(VID, list-of-LimitDefinition) shape. LimitDefinition is defined in store/limits.hpp and referenced as external_struct so the data model and the message codecs share one type. The actual "value crossed limit" detection + CEID emission is left to the application's set_value path (E30 §6.21 leaves *how* the equipment detects crossings up to the implementer). COMPLIANCE.md: Limits Monitoring Additional capability flips ✅. Tests: 80 cases / 465 assertions. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
+3
-2
@@ -91,7 +91,7 @@ Legend:
|
||||
| Material Movement | ⬜ | E30 §6.18| S3F*, E40 | Tied to E40 carrier handling; separate standard. |
|
||||
| Equipment Terminal Services | 🟡 | E30 §6.19| S10F1/F2, S10F3/F4 | Single-line only. **S10F5/F6 multi-block, S10F7 broadcast not implemented.** |
|
||||
| Clock | ✅ | E30 §6.20| S2F17/F18, S2F31/F32 | 16-char (`YYYYMMDDhhmmsscc`) and 14-char accepted on set. |
|
||||
| Limits Monitoring | ⬜ | E30 §6.21| S2F45/F46, S2F47/F48, S6F45/F46 | Not implemented. |
|
||||
| Limits Monitoring | ✅ | E30 §6.21| S2F45/F46, S2F47/F48 | `LimitMonitorStore` keyed by VID with multiple `LimitDefinition` (LIMITID + upper/lower as arbitrary Items). Server S2F45 validates each VID exists (returns VLAACK=4 otherwise) and stores definitions; S2F47 returns them. Crossing-detection + CEID emission is intentionally left to the application's set_value path (E30 §6.21 is permissive about *how* the equipment detects crossings). |
|
||||
| Spooling | 🟡 | E30 §6.22| S2F43/F44, S6F23/F24 | Spoolable-streams config (S2F43/F44) + spool request transmit/purge (S6F23/F24) implemented; SpoolStore queues equipment-initiated primaries when the host is unreachable or force-spool is on, drains FIFO on S6F23 transmit, purges on S6F23 purge. **Not implemented**: S6F25/F26 spooled-data-ready notification, automatic spool activation tied to HSMS NOT-SELECTED, persistent (on-disk) spool. |
|
||||
| Control | ✅ | E30 §6.2 | — | See Fundamental. |
|
||||
|
||||
@@ -119,7 +119,8 @@ Legend:
|
||||
| S2F35 / S2F36 | H→E | ✅ | `messages.hpp` | ✅ round-trip |
|
||||
| S2F37 / S2F38 | H→E | ✅ | `messages.hpp` | ✅ round-trip |
|
||||
| S2F41 / S2F42 | H→E | ✅ | `messages.hpp` | ✅ round-trip |
|
||||
| S2F45–F48 | H→E | ⬜ | — | — |
|
||||
| S2F45 / S2F46 | H→E | ✅ | catalog | ✅ round-trip |
|
||||
| S2F47 / S2F48 | H→E | ✅ | catalog | ✅ round-trip |
|
||||
| S5F1 / S5F2 | E→H | ✅ | `messages.hpp` | ✅ round-trip |
|
||||
| S5F3 / S5F4 | H→E | ✅ | `messages.hpp` | ✅ round-trip |
|
||||
| S5F5 / S5F6 | H→E | ✅ | `messages.hpp` | ✅ in demo |
|
||||
|
||||
Reference in New Issue
Block a user