bugFix testModeMenu implement duration print

This commit is contained in:
2023-01-18 10:32:49 +01:00
parent fef40ab4b4
commit 801a474b49
6 changed files with 109 additions and 55 deletions
@@ -78,6 +78,8 @@ void MenuTestMode::init() {
this->driveManager->changeModus(Modi::TestMode);
this->testMode = (TestMode*) this->driveManager->getDriveModiPtr();
testMode->setSpeed(15);
auto dummy = []() {
std::cout << "Dummy in Action" <<std::endl;
};
@@ -183,15 +185,16 @@ bool MenuTestMode::checkInput() {
}
void MenuTestMode::printManeuverTime() {
std::cout << "MenuTestMode::printManeuverTime: 1" << std::endl;
String lineTwo = "left ";
std::cout << "MenuTestMode::printManeuverTime: 2" << std::endl;
lineTwo.concat(this->testMode->getRemainingManeuverTime());
std::cout << "MenuTestMode::printManeuverTime: 3" << std::endl;
lineTwo.concat("secs");
std::cout << "MenuTestMode::printManeuverTime: 4" << std::endl;
this->print("Maneuver time", lineTwo);
std::cout << "MenuTestMode::printManeuverTime: 5" << std::endl;
uint8_t maneuverTime = this->testMode->getRemainingManeuverTime();
if (maneuverTime) {
String lineTwo = "";
lineTwo.concat(maneuverTime);
lineTwo.concat(" secs");
this->print("Maneuver time:", lineTwo);
} else {
this->maneuverInAction = false;
this->printMenu();
}
}
MenuTestModeWrapper::MenuTestModeWrapper(MenuTestMode* menu, TestModeFunctionSingle testModeFunction) {
@@ -201,7 +204,8 @@ MenuTestModeWrapper::MenuTestModeWrapper(MenuTestMode* menu, TestModeFunctionSin
}
MenuTestModeWrapper::MenuTestModeWrapper(MenuTestMode* menu, TestModeFunctionDouble testModeFunction) {
this->testMode = testMode;
this->menu = menu;
this->testMode = this->menu->getTestMode();
this->testModeFunctionDouble = testModeFunction;
}
@@ -209,13 +213,16 @@ void MenuTestModeWrapper::action(int16_t* values, uint8_t length) {
// This function calls a member function with a pointer
// Very helpful site:
// https://isocpp.org/wiki/faq/pointers-to-members#fnptr-vs-memfnptr-types
std::cout << "MenuTestModeWrapper::action: 0" << std::endl;
if (length == 2 && this->testModeFunctionDouble)
(this->testMode->*this->testModeFunctionDouble)(values[0], values[1]);
else if (length == 1 && this->testModeFunctionSingle)
(this->testMode->*this->testModeFunctionSingle)(values[0]);
std::cout << "MenuTestModeWrapper::action: 1" << std::endl;
this->menu->printManeuverTime();
std::cout << "MenuTestModeWrapper::action: 2" << std::endl;
bool res = false;
if (length == 2 && this->testModeFunctionDouble)
res = (this->testMode->*this->testModeFunctionDouble)(values[0], values[1]);
else if (length == 1 && this->testModeFunctionSingle)
res = (this->testMode->*this->testModeFunctionSingle)(values[0]);
if (res) {
this->menu->printManeuverTime();
this->menu->maneuverStarted();
}
}
@@ -34,6 +34,7 @@ class MenuTestMode : public MenuDriveMode {
void update() override;
TestMode* getTestMode() const { return this->testMode; }
void maneuverStarted() { this->maneuverInAction = true; }
private:
void init();