diff --git a/tests/unit/logic/homing/test_homing.cpp b/tests/unit/logic/homing/test_homing.cpp index 9a90101..3ce128f 100644 --- a/tests/unit/logic/homing/test_homing.cpp +++ b/tests/unit/logic/homing/test_homing.cpp @@ -134,6 +134,8 @@ bool RefusedHome(uint8_t slot) { mg::globals.SetFilamentLoaded(slot, mg::FilamentLoadState::AtPulley); // selector should start the homing sequence + main_loop(); // plans the homing move + // since the Idler is ok, the Selector should start homing immediately main_loop(); REQUIRE(ms::selector.State() == ms::Selector::HomeForward); return true; diff --git a/tests/unit/logic/stubs/homing.cpp b/tests/unit/logic/stubs/homing.cpp index 4e2c87f..f6016c8 100644 --- a/tests/unit/logic/stubs/homing.cpp +++ b/tests/unit/logic/stubs/homing.cpp @@ -9,6 +9,7 @@ #include "../stubs/stub_motion.h" void SimulateIdlerAndSelectorHoming(logic::CommandBase &cb) { +#if 0 // do 5 steps until we trigger the simulated stallguard for (uint8_t i = 0; i < 5; ++i) { main_loop(); @@ -48,6 +49,11 @@ void SimulateIdlerAndSelectorHoming(logic::CommandBase &cb) { main_loop(); cb.Step(); } +#else + // sadly, it looks like we need to separate homing of idler and selector due to electrical reasons + SimulateIdlerHoming(cb); + SimulateSelectorHoming(cb); +#endif } void SimulateIdlerHoming(logic::CommandBase &cb) { diff --git a/tests/unit/logic/stubs/main_loop_stub.cpp b/tests/unit/logic/stubs/main_loop_stub.cpp index e003801..34ee0c9 100644 --- a/tests/unit/logic/stubs/main_loop_stub.cpp +++ b/tests/unit/logic/stubs/main_loop_stub.cpp @@ -80,10 +80,11 @@ void ForceReinitAllAutomata() { } void HomeIdlerAndSelector() { - ms::selector.InvalidateHoming(); mi::idler.InvalidateHoming(); + ms::selector.InvalidateHoming(); logic::NoCommand nc; // just a dummy instance which has an empty Step() - SimulateIdlerAndSelectorHoming(nc); + SimulateIdlerHoming(nc); + SimulateSelectorHoming(nc); } bool EnsureActiveSlotIndex(uint8_t slot, mg::FilamentLoadState loadState) {