Commit Graph

2 Commits

Author SHA1 Message Date
raphael 77197b9c1e e84: per-port FSM via E84PortStore
E84 (Parallel I/O) is fundamentally per-load-port: each port has its
own ten-wire handshake with the AMHS.  Earlier revisions modeled it
as a single equipment-wide FSM; this commit refactors to a per-port
store, so multi-LP tools can run independent handshakes in parallel.

Public API change in EquipmentDataModel:
  E84StateMachine e84;   -> removed
  E84PortStore    e84_ports;  // create(port_id), get(port_id), ...

Convenience pass-throughs: E84PortStore::on_signal_change auto-creates
the port on first use (ergonomic for demos); applications should call
create() explicitly with their full port set.

The two existing callsites (test_gem300_scenario, test_e87_wire_scenarios)
are updated.  The multi-LP test now demonstrates the actual win:
interleaved LP1 load + LP2 unload handshakes that reach their
respective Ready states without sequencing, and an ES on LP1 that
does NOT affect LP2 — exactly the failure mode the previous design
couldn't catch.

Five new dedicated tests in test_e84_ports.cpp for the store itself.

COMPLIANCE.md §4i updated: row now reflects per-port design.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-09 11:50:18 +02:00
raphael ef3a07b2d5 tests: E87 slot-map mismatch + multi-LP wire scenarios
Four new test cases:

  * S3F19 verify with matching map → SlotMapVerifyAck::Accept and
    CSMS lands in Read on the equipment side.
  * S3F19 verify with disagreeing map → Mismatch ack and CSMS lands
    in Mismatched.
  * 4 LPs + 4 carriers, host verifies CAR-1 (mismatch) and CAR-3
    (match) — only those two carriers move on the CSMS axis;
    CAR-2/CAR-4 stay NotRead.  Confirms per-carrier independence.
  * Multi-LP E84 handshake sequencing (load then unload) round-trips
    through Idle.  Documents that the current E84StateMachine is
    per-equipment, not per-port — a future per-port FSM would
    update this test alongside.

Closes #11 in the test-gap backlog.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-09 10:53:40 +02:00