added imported to PointAccuracy
This commit is contained in:
@@ -28,6 +28,14 @@ Point::Point(Coordinates coords, uint32_t horizontalAccuracy) {
|
|||||||
this->init(horizontalAccuracy);
|
this->init(horizontalAccuracy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Point::Point(Coordinates coords, bool imported) {
|
||||||
|
this->coordinates = coords;
|
||||||
|
if (imported)
|
||||||
|
this->init(UINT32_MAX);
|
||||||
|
else
|
||||||
|
this->init(0);
|
||||||
|
}
|
||||||
|
|
||||||
Point::Point() {
|
Point::Point() {
|
||||||
this->coordinates.lat = 0;
|
this->coordinates.lat = 0;
|
||||||
this->coordinates.lon = 0;
|
this->coordinates.lon = 0;
|
||||||
@@ -80,17 +88,22 @@ int16_t Point::courseTo(const Point &point) const {
|
|||||||
|
|
||||||
void Point::init(uint32_t horizontalAccuracy) {
|
void Point::init(uint32_t horizontalAccuracy) {
|
||||||
this->creationTime = millis();
|
this->creationTime = millis();
|
||||||
if (horizontalAccuracy > 9999)
|
|
||||||
|
if (horizontalAccuracy == UINT32_MAX)
|
||||||
|
this->accuracy = PointAccuracy::imported;
|
||||||
|
else if (horizontalAccuracy > 9999)
|
||||||
this->accuracy = PointAccuracy::fourDigOfCM;
|
this->accuracy = PointAccuracy::fourDigOfCM;
|
||||||
else if (horizontalAccuracy > 999)
|
else if (horizontalAccuracy > 999)
|
||||||
this->accuracy = PointAccuracy::threeDigOfCM;
|
this->accuracy = PointAccuracy::threeDigOfCM;
|
||||||
else if (horizontalAccuracy > 99)
|
else if (horizontalAccuracy > 99)
|
||||||
this->accuracy = PointAccuracy::twoDigOfCM;
|
this->accuracy = PointAccuracy::twoDigOfCM;
|
||||||
|
else
|
||||||
|
this->accuracy = PointAccuracy::oneDigOfCM;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Route::Route() {
|
Route::Route() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Route::addPointToRoute(Point point) {
|
void Route::addPointToRoute(Point point) {
|
||||||
@@ -99,25 +112,40 @@ void Route::addPointToRoute(Point point) {
|
|||||||
|
|
||||||
void Route::clear() {
|
void Route::clear() {
|
||||||
this->points.clear();
|
this->points.clear();
|
||||||
|
this->currentPoint = 0;
|
||||||
|
this->started = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
Point Route::startRoute() {
|
Point Route::startRoute() {
|
||||||
if (this->points.size() < 1)
|
if (this->points.size() < 1) {
|
||||||
return Point(0, 0);
|
this->started = false;
|
||||||
|
return Point();
|
||||||
|
}
|
||||||
|
|
||||||
this->it = this->points.begin();
|
this->it = this->points.begin();
|
||||||
this->currentPoint = 1;
|
this->currentPoint = 1;
|
||||||
|
this->started = true;
|
||||||
return *this->it;
|
return *this->it;
|
||||||
}
|
}
|
||||||
|
|
||||||
Point Route::endRoute() {
|
Point Route::endRoute() {
|
||||||
if (this->points.size() < 1)
|
if (this->points.size() < 1) {
|
||||||
return Point(0, 0);
|
this->started = false;
|
||||||
|
return Point();
|
||||||
|
}
|
||||||
|
|
||||||
this->it = this->points.end();
|
this->it = this->points.end();
|
||||||
|
// TODO: Understand why i have to decrement the iterator first to get realy the last element.
|
||||||
|
this->it--;
|
||||||
this->currentPoint = this->points.size();
|
this->currentPoint = this->points.size();
|
||||||
|
this->started = true;
|
||||||
return *this->it;
|
return *this->it;
|
||||||
}
|
}
|
||||||
|
|
||||||
Point Route::getNextPoint() {
|
Point Route::getNextPoint() {
|
||||||
|
if (!this->started)
|
||||||
|
return Point();
|
||||||
|
|
||||||
if (this->it != this->points.end()) {
|
if (this->it != this->points.end()) {
|
||||||
this->it++;
|
this->it++;
|
||||||
this->currentPoint++;
|
this->currentPoint++;
|
||||||
@@ -130,6 +158,9 @@ Point Route::getNextPoint() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Point Route::getPreviousPoint() {
|
Point Route::getPreviousPoint() {
|
||||||
|
if (!this->started)
|
||||||
|
return Point();
|
||||||
|
|
||||||
if (this->it != this->points.begin()) {
|
if (this->it != this->points.begin()) {
|
||||||
this->it--;
|
this->it--;
|
||||||
this->currentPoint--;
|
this->currentPoint--;
|
||||||
|
|||||||
@@ -44,7 +44,8 @@ class Point{
|
|||||||
fourDigOfCM,
|
fourDigOfCM,
|
||||||
threeDigOfCM,
|
threeDigOfCM,
|
||||||
twoDigOfCM,
|
twoDigOfCM,
|
||||||
oneDigOfCM
|
oneDigOfCM,
|
||||||
|
imported
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -57,6 +58,7 @@ class Point{
|
|||||||
Point(double lat, double lon, uint32_t horizontalAccuracy = 0);
|
Point(double lat, double lon, uint32_t horizontalAccuracy = 0);
|
||||||
Point(int32_t lat, int32_t lon, uint32_t horizontalAccuracy = 0);
|
Point(int32_t lat, int32_t lon, uint32_t horizontalAccuracy = 0);
|
||||||
Point(Coordinates coords, uint32_t horizontalAccuracy = 0);
|
Point(Coordinates coords, uint32_t horizontalAccuracy = 0);
|
||||||
|
Point(Coordinates coords, bool imported);
|
||||||
Point();
|
Point();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -155,9 +157,11 @@ class Route {
|
|||||||
* @return RouteInfo
|
* @return RouteInfo
|
||||||
*/
|
*/
|
||||||
RouteInfo getRouteInfo();
|
RouteInfo getRouteInfo();
|
||||||
|
bool getStarted() const { return this->started; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
uint16_t currentPoint = 0;
|
uint16_t currentPoint = 0;
|
||||||
|
bool started = false;
|
||||||
|
|
||||||
std::list<Point> points;
|
std::list<Point> points;
|
||||||
std::list<Point>::iterator it;
|
std::list<Point>::iterator it;
|
||||||
|
|||||||
Reference in New Issue
Block a user