FakeSerial Marlin Coverage

FakeSerial uses Marlin.php as the command inventory.

Behavior rules:

  • Every command listed in Marlin.php now routes through an explicit FakeSerial behavior path.

  • Stateful commands mutate emulator state so future printer-state inspection can rely on coherent machine data.

  • Hardware-limited commands return coherent device-specific failures instead of generic unknowns.

  • Commands not present in Marlin.php still return Error:Unknown command.

Current coverage model:

  • Motion and positioning: linear moves, arc-like moves, dwell, units, homing, workspace selection, stored positions, retract / recover, parking

  • Probe, leveling, calibration, backlash, and homing-offset families

  • SD card lifecycle, selection, logging, progress, sorting, abort, and print-timer families

  • Power, steppers, spindle / laser, coolant, blower, fans, lights, LCD, tone, camera, and servo families

  • Temperature, PID, waiting, auto-report, material preset, and chamber / cooler temperature families

  • Filament, runout, width sensing, filament change, loading / unloading, and extrusion tuning families

  • EEPROM-style save / restore / validate / report families

  • Security, passcode, macro, prompt-response, network, and maintenance families

  • Driver, TMC, stepper-current, microstepping, kinematics, SCARA, Delta, and diagnostic families

Notable coherence guarantees:

  • Tool selection respects the fake printer’s single-extruder limit. Example: T7 returns a tool-unavailable error.

  • MMU-only Tx commands return an explicit MMU-unavailable error.

  • Bare-command smoke testing across the full Marlin.php inventory now produces no Unknown command or Unsupported FakeSerial command responses.

Verification:

  • vendor/bin/phpunit tests/Unit/Support/FakeSerial/FakeSerialEmulatorTest.php

  • vendor/bin/phpunit tests/Unit/Support/FakeSerial/FakeSerialManagerTest.php

  • Inventory smoke pass over Marlin.php confirming problems=0