A3: S12 Wafer Maps stream (E5 §13)
Adds the core map-management messages: setup send/request (F1-F4), transmit inquire/grant (F5/F6), data send in row format (F7/F8), and the one-way error report (F19). Reference points (REFP) are an external struct shared across F1 and F4. The alternative data encodings — array format (F9/F10), coordinate format (F11/F12), and the corresponding request pairs (F13-F18) — are scope-deferred. They're mechanical YAML edits once a tool needs them; the codec already handles the underlying BINARY/list shapes. Three new ack enums: MapSetupAck (SDACK), MapTransmitGrant (GRANT), MapDataAck (MAPER). No state machine yet — maps are a data exchange, not a lifecycle. secsgem-py ships S12F0-F19 as a single block; this commit covers the practically-used subset and matches their wire shapes where they overlap. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -140,4 +140,35 @@ enum class TerminalAck : uint8_t { // S10F2, S10F4
|
||||
TerminalNotAvailable = 2,
|
||||
};
|
||||
|
||||
// E5 §13 S12 (Wafer Maps). Encoded as separate enums even though the
|
||||
// underlying byte semantics differ slightly across F2/F6/F8 — keeping
|
||||
// them distinct preserves call-site readability.
|
||||
// Reference point on a wafer/substrate map (E5 §13.7.4 REFP). Declared
|
||||
// out of line so the messages.yaml catalog can mark it `external_struct`
|
||||
// and reuse the same C++ type across F1 / F4.
|
||||
struct ReferencePoint {
|
||||
int32_t x;
|
||||
int32_t y;
|
||||
};
|
||||
|
||||
enum class MapSetupAck : uint8_t { // S12F2 SDACK
|
||||
Accept = 0,
|
||||
Error = 1,
|
||||
};
|
||||
|
||||
enum class MapTransmitGrant : uint8_t { // S12F6 GRANT
|
||||
Granted = 0,
|
||||
BusyTryAgain = 1,
|
||||
NoSpaceAvailable = 2,
|
||||
DuplicateMID = 3,
|
||||
MaterialNotRecognized = 4,
|
||||
};
|
||||
|
||||
enum class MapDataAck : uint8_t { // S12F8 MAPER
|
||||
Accept = 0,
|
||||
FormatError = 1,
|
||||
UnknownID = 2,
|
||||
AbortNoMap = 3,
|
||||
};
|
||||
|
||||
} // namespace secsgem::gem
|
||||
|
||||
Reference in New Issue
Block a user