|
QGroundControl
Ground Control Station for MAVLink Drones
|
#include <PositionManager.h>
Inheritance diagram for PositionManager:
Collaboration diagram for PositionManager:Classes | |
| struct | Configuration |
Public Types | |
| enum class | SourceMode { Automatic = 0 , ReceiverOnly = 1 , InternalOnly = 2 } |
| Values of RTKSettings::gcsPositionSource. More... | |
| enum class | SelectedSource { None , Receiver , Internal } |
| enum class | SourceStatus { NoSource , PermissionRequired , PermissionDenied , BackendUnavailable , WaitingForFix , Active , Stale , InvalidFix } |
| using | SourceFactory = std::function< QGeoPositionInfoSource *(QObject *parent)> |
| Creates a position source parented to parent, or returns null. | |
Signals | |
| void | selectionChanged () |
| void | gcsPositionChanged (QGeoCoordinate gcsPosition) |
| void | gcsHeadingChanged (qreal gcsHeading) |
| void | gcsPositionHorizontalAccuracyChanged (qreal gcsPositionHorizontalAccuracy) |
Public Member Functions | |
| PositionManager (QObject *parent=nullptr, RuntimeScheduler *scheduler=nullptr) | |
| ~PositionManager () override | |
| void | setConfiguration (const Configuration &configuration) |
| Ignored after shutdown(). | |
| const Configuration & | configuration () const |
| void | setPlatformSourceFactory (SourceFactory factory) |
| void | init () |
| void | shutdown () |
| Releases the position sources and ignores later configuration; init() does not restart them. | |
| SelectedSource | selectedSource () const |
| QString | selectedSourceName () const |
| SourceStatus | sourceStatus () const |
| QString | sourceStatusText () const |
| void | setInternalPositionSource (QGeoPositionInfoSource *source, SourceStatus status, bool custom=false, GPSAltitudeDatum altitudeDatum=GPSAltitudeDatum::Unknown) |
| GPSPositionSourceRegistration | registerReceiver (GPSSourceHealth *producer, quint64 sessionId=0) |
| QGeoCoordinate | gcsPosition () const |
| qreal | gcsHeading () const |
| qreal | gcsPositionHorizontalAccuracy () const |
| std::optional< GPSObservation > | acceptedObservation (GPSObservation::PositionUse use=GPSObservation::PositionUse::GroundStation, std::optional< std::chrono::milliseconds > maximumAge=std::nullopt) const |
| QGeoPositionInfoSource::Error | gcsPositioningError () const |
Static Public Attributes | |
| static constexpr std::chrono::milliseconds | RECOVERY_DELAY {5000} |
Friends | |
| class | PositionManagerTest |
Chooses the ground-station position between a GNSS receiver and this device's position source, and publishes it. Automatic mode prefers a usable receiver, returning to it only after it has stayed usable for RECOVERY_DELAY; the pinned modes publish only observations made after the selection. init() requests location permission and binds the platform source; tests bind their own with setInternalPositionSource() instead. Use from the manager's thread only.
Definition at line 26 of file PositionManager.h.
| using PositionManager::SourceFactory = std::function<QGeoPositionInfoSource*(QObject* parent)> |
Creates a position source parented to parent, or returns null.
Definition at line 73 of file PositionManager.h.
|
strong |
| Enumerator | |
|---|---|
| None | |
| Receiver | |
| Internal | |
Definition at line 51 of file PositionManager.h.
|
strong |
Values of RTKSettings::gcsPositionSource.
| Enumerator | |
|---|---|
| Automatic | |
| ReceiverOnly | |
| InternalOnly | |
Definition at line 43 of file PositionManager.h.
|
strong |
| Enumerator | |
|---|---|
| NoSource | |
| PermissionRequired | |
| PermissionDenied | |
| BackendUnavailable | |
| WaitingForFix | |
| Active | |
| Stale | |
| InvalidFix | |
Definition at line 59 of file PositionManager.h.
|
explicit |
Definition at line 32 of file PositionManager.cc.
References Internal, and GPSSourceHealth::positionChanged().
|
override |
Definition at line 42 of file PositionManager.cc.
| std::optional< GPSObservation > PositionManager::acceptedObservation | ( | GPSObservation::PositionUse | use = GPSObservation::PositionUse::GroundStation, |
| std::optional< std::chrono::milliseconds > | maximumAge = std::nullopt |
||
| ) | const |
Definition at line 428 of file PositionManager.cc.
|
inline |
Definition at line 89 of file PositionManager.h.
Referenced by setConfiguration().
|
inline |
Definition at line 119 of file PositionManager.h.
|
signal |
|
inline |
Definition at line 117 of file PositionManager.h.
|
signal |
|
inline |
Definition at line 121 of file PositionManager.h.
|
signal |
|
inline |
Definition at line 127 of file PositionManager.h.
| void PositionManager::init | ( | ) |
Definition at line 73 of file PositionManager.cc.
Referenced by GPSManager::init().
| GPSPositionSourceRegistration PositionManager::registerReceiver | ( | GPSSourceHealth * | producer, |
| quint64 | sessionId = 0 |
||
| ) |
The receiver publishes observations through producer and runs independently of selection; its observations must carry sessionId when it is nonzero. The binding lasts until the registration is reset.
Definition at line 163 of file PositionManager.cc.
Referenced by GPSReceiverSession::registerPosition().
|
inline |
Definition at line 99 of file PositionManager.h.
| QString PositionManager::selectedSourceName | ( | ) | const |
Definition at line 459 of file PositionManager.cc.
|
signal |
| void PositionManager::setConfiguration | ( | const Configuration & | configuration | ) |
Ignored after shutdown().
Definition at line 53 of file PositionManager.cc.
References Automatic, ScheduledTask::cancel(), configuration(), InternalOnly, ReceiverOnly, and PositionManager::Configuration::sourceMode.
Referenced by GPSSettingsBindings::bindPosition().
| void PositionManager::setInternalPositionSource | ( | QGeoPositionInfoSource * | source, |
| SourceStatus | status, | ||
| bool | custom = false, |
||
| GPSAltitudeDatum | altitudeDatum = GPSAltitudeDatum::Unknown |
||
| ) |
Borrows this device's position source, which runs unless the mode is ReceiverOnly. The application owns permission requests and source creation; custom marks a plugin-provided source. altitudeDatum is the datum of the source's altitudes, applied to fixes that report their vertical accuracy.
Definition at line 133 of file PositionManager.cc.
References Internal, ReceiverOnly, and PositionManager::Configuration::sourceMode.
Referenced by shutdown().
| void PositionManager::setPlatformSourceFactory | ( | SourceFactory | factory | ) |
Creates the platform source once location permission is granted; without a factory, or when it returns null, Qt's default source is used.
Definition at line 68 of file PositionManager.cc.
| void PositionManager::shutdown | ( | ) |
Releases the position sources and ignores later configuration; init() does not restart them.
Definition at line 81 of file PositionManager.cc.
References NoSource, and setInternalPositionSource().
Referenced by GPSManager::shutdown().
|
inline |
Definition at line 103 of file PositionManager.h.
| QString PositionManager::sourceStatusText | ( | ) | const |
Definition at line 472 of file PositionManager.cc.
References Active, BackendUnavailable, InvalidFix, NoSource, PermissionDenied, PermissionRequired, Stale, and WaitingForFix.
|
friend |
Definition at line 39 of file PositionManager.h.
|
staticconstexpr |
Definition at line 81 of file PositionManager.h.