added restart to autopilot menu and

disable autopilot by pressing the actionbutton
This commit is contained in:
2023-05-23 20:39:47 +02:00
parent d4045dff4b
commit ca8d9bb963
4 changed files with 62 additions and 18 deletions
@@ -86,13 +86,21 @@ void MenuAutopilot::printPage() const {
lineTwo.concat(correction.correction);
break;
case 2:
lineOne = "Target waypoint";
lineTwo = "";
lineTwo.concat(this->autopilot->getRouteInfo().currentPoint);
lineTwo.concat(" from ");
lineTwo.concat(this->autopilot->getRouteInfo().totalPoints);
case 2: {
uint16_t currentPoint = this->autopilot->getRouteInfo().currentPoint;
uint16_t totalPoints = this->autopilot->getRouteInfo().totalPoints;
if (currentPoint > totalPoints) {
lineOne = "Target reached";
lineTwo = "";
} else {
lineOne = "Target waypoint";
lineTwo = "";
lineTwo.concat(currentPoint);
lineTwo.concat(" from ");
lineTwo.concat(totalPoints);
}
break;
}
case 3: {
NTRIPClientStates status = this->driveManager->getNavigation()->getNTRIPClient()->getClientState();
@@ -131,6 +139,12 @@ void MenuAutopilot::printPage() const {
lineOne.concat("0");
break;
case 6:
lineOne = "Restart the";
lineTwo = "Autopilot";
this->autopilot->restart();
break;
default:
this->printDefault();
return;
@@ -139,6 +153,17 @@ void MenuAutopilot::printPage() const {
this->print(lineOne, lineTwo);
}
void MenuAutopilot::runCommand() const {
switch (this->getCountPages()) {
case 6:
this->autopilot->restart();
break;
default:
break;
}
}
void MenuAutopilot::update() {
if (!this->autopilot->shouldUpdate())
return;
@@ -148,7 +173,7 @@ void MenuAutopilot::update() {
}
void MenuAutopilot::init() {
this->setCountPages(6);
this->setCountPages(7);
this->driveManager->changeModus(Modi::Autopilot);
this->autopilot = (Autopilot*) this->driveManager->getDriveModiPtr();
this->routeInfo = this->autopilot->getRouteInfo();
@@ -37,6 +37,7 @@ class MenuAutopilot : public MenuDriveMode {
* and save the Autopilot object.
*/
void printPage() const override;
void runCommand() const override;
/**
* @brief can be called to update shown data
+26 -11
View File
@@ -14,17 +14,7 @@
Autopilot::Autopilot(MoveControl* moveControl, const ControlPadInput *input, Navigation* navigation)
: ManualControl(moveControl, input) {
this->navigation = navigation;
if (this->navigation->startNavigation())
this->state = State::NavigationStarted;
else
this->state = State::NoRoute;
this->routeInfo = this->navigation->getRouteInfo();
this->lastState = this->navigation->getNTRIPClient()->getClientState();
this->courseCorrection.correction = 0;
this->courseCorrection.distance = 0;
this->updateDisplay = true;
this->init();
}
Autopilot::~Autopilot() {
@@ -51,6 +41,7 @@ void Autopilot::runAutopilot() {
this->moveControl->setSpeed(0);
this->moveControl->setRotationSpeed(0);
this->updateDisplay = true;
return;
}
this->routeInfo = this->navigation->getRouteInfo();
@@ -72,12 +63,22 @@ void Autopilot::runAutopilot() {
this->updateDisplay = true;
}
if (this->state == State::SelfDriving
&& ControlPadButton::isControlPadButtonPressed(this->input, ControlPadButton::PadButton::Action)) {
this->state = State::SelfDrivingAvailable;
this->updateDisplay = true;
}
if (this->state == State::SelfDriving) {
this->setSpeedInRelToDistance(this->courseCorrection.distance);
this->setRotInRelToDistance(this->courseCorrection.correction);
}
}
void Autopilot::restart() {
this->init();
}
bool Autopilot::shouldUpdate() {
if (this->updateDisplay) {
this->updateDisplay = false;
@@ -86,6 +87,20 @@ bool Autopilot::shouldUpdate() {
return false;
}
void Autopilot::init() {
if (this->navigation->startNavigation())
this->state = State::NavigationStarted;
else
this->state = State::NoRoute;
this->routeInfo = this->navigation->getRouteInfo();
this->lastState = this->navigation->getNTRIPClient()->getClientState();
this->courseCorrection.correction = 0;
this->courseCorrection.distance = 0;
this->updateDisplay = true;
}
void Autopilot::checkNtrip() {
NTRIPClient* client = this->navigation->getNTRIPClient();
NTRIPClientStates state = client->getClientState();
+3
View File
@@ -76,6 +76,8 @@ class Autopilot : public ManualControl {
*/
void runAutopilot();
void restart();
/**
* @brief Get the Route Info object
*
@@ -106,6 +108,7 @@ class Autopilot : public ManualControl {
bool shouldUpdate();
private:
void init();
void checkNtrip();
void setSpeedInRelToDistance(double distance);
void setRotInRelToDistance(int16_t course);