FakeSerial Marlin Coverage
FakeSerial uses Marlin.php as the command inventory.
Behavior rules:
Every command listed in
Marlin.phpnow 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.phpstill returnError: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:
T7returns a tool-unavailable error.MMU-only
Txcommands return an explicit MMU-unavailable error.Bare-command smoke testing across the full
Marlin.phpinventory now produces noUnknown commandorUnsupported FakeSerial commandresponses.
Verification:
vendor/bin/phpunit tests/Unit/Support/FakeSerial/FakeSerialEmulatorTest.phpvendor/bin/phpunit tests/Unit/Support/FakeSerial/FakeSerialManagerTest.phpInventory smoke pass over
Marlin.phpconfirmingproblems=0