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
+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();