Add ToolChange Error resolve Button2 unit tests

pull/138/head
D.R.racer 2021-11-10 08:24:07 +01:00 committed by DRracer
parent 515119edc8
commit 151adf810a
2 changed files with 47 additions and 9 deletions

View File

@ -114,10 +114,12 @@ bool ToolChange::StepInner() {
state = ProgressCode::ERRWaitingForUser; // stand still state = ProgressCode::ERRWaitingForUser; // stand still
} else if (!mfs::fsensor.Pressed()) { } else if (!mfs::fsensor.Pressed()) {
// printer's filament sensor is still NOT pressed - that smells bad // printer's filament sensor is still NOT pressed - that smells bad
mg::globals.SetFilamentLoaded(plannedSlot, mg::FilamentLoadState::InSelector); // only assume the filament is in selector
error = ErrorCode::FSENSOR_DIDNT_SWITCH_ON; error = ErrorCode::FSENSOR_DIDNT_SWITCH_ON;
state = ProgressCode::ERRWaitingForUser; // stand still state = ProgressCode::ERRWaitingForUser; // stand still - we may even try loading the filament into the nozzle
} else { } else {
// all sensors are ok // all sensors are ok, we assume the user pushed the filament into the nozzle
mg::globals.SetFilamentLoaded(plannedSlot, mg::FilamentLoadState::InNozzle);
FinishedCorrectly(); FinishedCorrectly();
} }
break; break;

View File

@ -241,18 +241,30 @@ void ToolChangeFailLoadToFindaButton1(logic::ToolChange &tc, uint8_t toSlot) {
CheckFinishedCorrectly(tc, toSlot); CheckFinishedCorrectly(tc, toSlot);
} }
void ToolChangeFailLoadToFindaButton2(logic::ToolChange &tc, uint8_t toSlot) { void ToolChangeFailLoadToFindaButton2FINDA_FSensor(logic::ToolChange &tc, uint8_t toSlot) {
// now waiting for user input // now waiting for user input - press FINDA and FSensor
hal::gpio::WritePin(FINDA_PIN, hal::gpio::Level::high);
mfs::fsensor.ProcessMessage(true);
PressButtonAndDebounce(tc, 2); PressButtonAndDebounce(tc, 2);
// the user resolved the situation by hand
FeedingToFinda(tc, toSlot);
FeedingToBondtech(tc, toSlot);
CheckFinishedCorrectly(tc, toSlot); CheckFinishedCorrectly(tc, toSlot);
} }
void ToolChangeFailLoadToFindaButton2FINDA(logic::ToolChange &tc, uint8_t toSlot) {
// now waiting for user input - press FINDA
hal::gpio::WritePin(FINDA_PIN, hal::gpio::Level::high);
PressButtonAndDebounce(tc, 2);
REQUIRE(VerifyState(tc, mg::FilamentLoadState::InSelector, mi::Idler::IdleSlotIndex(), toSlot, true, false, ml::off, ml::blink0, ErrorCode::FSENSOR_DIDNT_SWITCH_ON, ProgressCode::ERRWaitingForUser));
}
void ToolChangeFailLoadToFindaButton2(logic::ToolChange &tc, uint8_t toSlot) {
// now waiting for user input - do not press anything
PressButtonAndDebounce(tc, 2);
REQUIRE(VerifyState(tc, mg::FilamentLoadState::InSelector, mi::Idler::IdleSlotIndex(), toSlot, false, false, ml::off, ml::blink0, ErrorCode::FINDA_DIDNT_SWITCH_ON, ProgressCode::ERRWaitingForUser));
}
TEST_CASE("tool_change::load_fail_FINDA_resolve_btn0", "[tool_change]") { TEST_CASE("tool_change::load_fail_FINDA_resolve_btn0", "[tool_change]") {
logic::ToolChange tc; logic::ToolChange tc;
for (uint8_t fromSlot = 0; fromSlot < config::toolCount; ++fromSlot) { for (uint8_t fromSlot = 0; fromSlot < config::toolCount; ++fromSlot) {
@ -276,3 +288,27 @@ TEST_CASE("tool_change::load_fail_FINDA_resolve_btn1", "[tool_change]") {
} }
} }
} }
TEST_CASE("tool_change::load_fail_FINDA_resolve_btn2_FINDA_FSensor", "[tool_change]") {
logic::ToolChange tc;
for (uint8_t fromSlot = 0; fromSlot < config::toolCount; ++fromSlot) {
for (uint8_t toSlot = 0; toSlot < config::toolCount; ++toSlot) {
if (fromSlot != toSlot) {
ToolChangeFailLoadToFinda(tc, fromSlot, toSlot);
ToolChangeFailLoadToFindaButton2FINDA_FSensor(tc, toSlot);
}
}
}
}
TEST_CASE("tool_change::load_fail_FINDA_resolve_btn2_FINDA", "[tool_change]") {
logic::ToolChange tc;
for (uint8_t fromSlot = 0; fromSlot < config::toolCount; ++fromSlot) {
for (uint8_t toSlot = 0; toSlot < config::toolCount; ++toSlot) {
if (fromSlot != toSlot) {
ToolChangeFailLoadToFinda(tc, fromSlot, toSlot);
ToolChangeFailLoadToFindaButton2FINDA(tc, toSlot);
}
}
}
}