Browse Source

publish horizontal gcsPositionHorizontalAccuracy

QGC4.4
Remek Zajac 4 years ago committed by Don Gagne
parent
commit
f2d0b8cc60
  1. 9
      src/PositionManager/PositionManager.cpp
  2. 5
      src/PositionManager/PositionManager.h

9
src/PositionManager/PositionManager.cpp

@ -81,9 +81,12 @@ void QGCPositionManager::_positionUpdated(const QGeoPositionInfo &update) @@ -81,9 +81,12 @@ void QGCPositionManager::_positionUpdated(const QGeoPositionInfo &update)
if (update.isValid() && update.hasAttribute(QGeoPositionInfo::HorizontalAccuracy)) {
// Note that gcsPosition filters out possible crap values
if (qAbs(update.coordinate().latitude()) > 0.001 &&
qAbs(update.coordinate().longitude()) > 0.001 &&
update.attribute(QGeoPositionInfo::HorizontalAccuracy) <= MinHorizonalAccuracyMeters) {
newGCSPosition = update.coordinate();
qAbs(update.coordinate().longitude()) > 0.001 ) {
_gcsPositionHorizontalAccuracy = update.attribute(QGeoPositionInfo::HorizontalAccuracy);
if (_gcsPositionHorizontalAccuracy <= MinHorizonalAccuracyMeters) {
newGCSPosition = update.coordinate();
}
emit gcsPositionHorizontalAccuracyChanged();
}
}
if (newGCSPosition != _gcsPosition) {

5
src/PositionManager/PositionManager.h

@ -27,6 +27,8 @@ public: @@ -27,6 +27,8 @@ public:
Q_PROPERTY(QGeoCoordinate gcsPosition READ gcsPosition NOTIFY gcsPositionChanged)
Q_PROPERTY(qreal gcsHeading READ gcsHeading NOTIFY gcsHeadingChanged)
Q_PROPERTY(qreal gcsPositionHorizontalAccuracy READ gcsPositionHorizontalAccuracy
NOTIFY gcsPositionHorizontalAccuracyChanged)
enum QGCPositionSource {
Simulated,
@ -37,6 +39,7 @@ public: @@ -37,6 +39,7 @@ public:
QGeoCoordinate gcsPosition (void) { return _gcsPosition; }
qreal gcsHeading (void) const{ return _gcsHeading; }
qreal gcsPositionHorizontalAccuracy(void) const { return _gcsPositionHorizontalAccuracy; }
QGeoPositionInfo geoPositionInfo (void) const { return _geoPositionInfo; }
void setPositionSource (QGCPositionSource source);
int updateInterval (void) const;
@ -54,12 +57,14 @@ signals: @@ -54,12 +57,14 @@ signals:
void gcsPositionChanged(QGeoCoordinate gcsPosition);
void gcsHeadingChanged(qreal gcsHeading);
void positionInfoUpdated(QGeoPositionInfo update);
void gcsPositionHorizontalAccuracyChanged();
private:
int _updateInterval = 0;
QGeoPositionInfo _geoPositionInfo;
QGeoCoordinate _gcsPosition;
qreal _gcsHeading = qQNaN();
qreal _gcsPositionHorizontalAccuracy = std::numeric_limits<qreal>::infinity();
QGeoPositionInfoSource* _currentSource = nullptr;
QGeoPositionInfoSource* _defaultSource = nullptr;

Loading…
Cancel
Save