cleaning
refactore all components now have a base class compnent for loop functions
This commit is contained in:
@@ -10,8 +10,8 @@
|
||||
*/
|
||||
#include "testMode.h"
|
||||
|
||||
TestMode::TestMode(MoveControl *moveControl, Navigation* navigation) {
|
||||
this->moveControl = moveControl;
|
||||
TestMode::TestMode(MoveControl *moveControl, Navigation* navigation)
|
||||
: DriveModi(moveControl) {
|
||||
this->navigation = navigation;
|
||||
}
|
||||
|
||||
@@ -19,10 +19,7 @@ TestMode::~TestMode() {
|
||||
this->moveControl->setDrivingStatus(MoveControl::Status::Stop);
|
||||
}
|
||||
|
||||
void TestMode::loop() {
|
||||
if (millis() - this->lastMillis < this->delay)
|
||||
return;
|
||||
|
||||
void TestMode::run() {
|
||||
if (this->maneuver == Maneuver::Turn) {
|
||||
uint16_t delta = abs(this->azimuth - this->navigation->getAzimuth());
|
||||
if (delta > this->degree)
|
||||
@@ -35,16 +32,6 @@ void TestMode::loop() {
|
||||
this->moveControl->setDrivingStatus(MoveControl::Status::Stop);
|
||||
this->maneuver = Maneuver::None;
|
||||
}
|
||||
|
||||
this->lastMillis = millis();
|
||||
}
|
||||
|
||||
void TestMode::setSpeed(int16_t speed) {
|
||||
this->speed = (double) speed / 100.0;
|
||||
}
|
||||
|
||||
void TestMode::setRotationSpeed(int16_t speed) {
|
||||
this->rotationSpeed = (double) speed / 100.0;
|
||||
}
|
||||
|
||||
bool TestMode::drive(int16_t cm, int16_t degree) {
|
||||
@@ -59,9 +46,9 @@ bool TestMode::drive(int16_t cm, int16_t degree) {
|
||||
this->moveControl->setSpeed(0);
|
||||
|
||||
if (degree < 0)
|
||||
this->moveControl->setRotationSpeed(-this->rotationSpeed);
|
||||
this->moveControl->setRotationSpeed(-this->maxRotationSpeed);
|
||||
else if (degree > 0)
|
||||
this->moveControl->setRotationSpeed(this->rotationSpeed);
|
||||
this->moveControl->setRotationSpeed(this->maxRotationSpeed);
|
||||
|
||||
this->azimuth = this->navigation->getAzimuth();
|
||||
this->degree = degree;
|
||||
@@ -75,11 +62,11 @@ bool TestMode::drive(int16_t cm, int16_t degree) {
|
||||
this->moveControl->setRotationSpeed(0);
|
||||
|
||||
if (cm < 0)
|
||||
this->moveControl->setSpeed(-this->speed);
|
||||
this->moveControl->setSpeed(-this->maxForwardSpeed);
|
||||
else if (cm > 0)
|
||||
this->moveControl->setSpeed(this->speed);
|
||||
this->moveControl->setSpeed(this->maxForwardSpeed);
|
||||
|
||||
this->maneuverTime = (uint32_t) (((double) abs(cm) / 100.0) / this->speed) * 1000;
|
||||
this->maneuverTime = (uint32_t) (((double) abs(cm) / 100.0) / this->maxForwardSpeed) * 1000;
|
||||
this->busy = true;
|
||||
this->maneuver = Maneuver::Drive;
|
||||
return true;
|
||||
@@ -87,11 +74,11 @@ bool TestMode::drive(int16_t cm, int16_t degree) {
|
||||
//forward or backward and left or right
|
||||
// TODO: Calculate roationspeed
|
||||
if (cm < 0)
|
||||
this->moveControl->setSpeed(-this->speed);
|
||||
this->moveControl->setSpeed(-this->maxForwardSpeed);
|
||||
else if (cm > 0)
|
||||
this->moveControl->setSpeed(this->speed);
|
||||
this->moveControl->setSpeed(this->maxForwardSpeed);
|
||||
|
||||
this->maneuverTime = (uint32_t) (((double) cm / 100.0) / this->speed) * 1000;
|
||||
this->maneuverTime = (uint32_t) (((double) cm / 100.0) / this->maxForwardSpeed) * 1000;
|
||||
this->busy = true;
|
||||
this->maneuver = Maneuver::Drive;
|
||||
return true;
|
||||
|
||||
@@ -47,28 +47,6 @@ class TestMode : public DriveModi {
|
||||
TestMode(MoveControl *moveControl, Navigation* navigation);
|
||||
~TestMode();
|
||||
|
||||
/**
|
||||
* @brief Controls the maneuver.
|
||||
*
|
||||
* Needed for actions which take a longer time.
|
||||
* Should be called ever main loop.
|
||||
*/
|
||||
void loop() override;
|
||||
|
||||
/**
|
||||
* @brief Set the speed for the Maneuver Drive
|
||||
*
|
||||
* @param speed m/s / 100
|
||||
*/
|
||||
void setSpeed(int16_t speed);
|
||||
|
||||
/**
|
||||
* @brief Set the rotation speed for the Maneuver Drive
|
||||
*
|
||||
* @param speed rad/s / 100
|
||||
*/
|
||||
void setRotationSpeed(int16_t speed);
|
||||
|
||||
bool drive(int16_t cm = 0, int16_t degree = 0);
|
||||
|
||||
/**
|
||||
@@ -125,28 +103,21 @@ class TestMode : public DriveModi {
|
||||
Speedometer* getSpeedometerRight() { return this->moveControl->getSpeedometerRight(); }
|
||||
|
||||
private:
|
||||
void run() override;
|
||||
bool engineInit(int16_t powerPercentage, int16_t seconds);
|
||||
|
||||
MoveControl *moveControl;
|
||||
Navigation* navigation;
|
||||
Maneuver maneuver = Maneuver::None;
|
||||
int16_t maneuverValueOne = 0;
|
||||
int16_t maneuverValueTwo = 0;
|
||||
|
||||
double speed = 0;
|
||||
double rotationSpeed = 0;
|
||||
|
||||
bool busy = false;
|
||||
bool abort = false;
|
||||
|
||||
uint8_t delay = 10;
|
||||
uint16_t azimuth;
|
||||
int16_t degree;
|
||||
uint32_t maneuverTime = 0;
|
||||
uint32_t lastMillis = 0;
|
||||
uint32_t actionStart = 0;
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif // TEST_MODE_H
|
||||
|
||||
Reference in New Issue
Block a user