Browse Source

Merge pull request #8577 from dakejahl/pr-qgc-wp_index_values_widget

WP index to the values widget
QGC4.4
Don Gagne 5 years ago committed by GitHub
parent
commit
9f8d1b52eb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 28
      src/Vehicle/Vehicle.cc
  2. 5
      src/Vehicle/Vehicle.h
  3. 5
      src/Vehicle/VehicleFact.json

28
src/Vehicle/Vehicle.cc

@ -76,6 +76,7 @@ const char* Vehicle::_altitudeAMSLFactName = "altitudeAMSL";
const char* Vehicle::_flightDistanceFactName = "flightDistance"; const char* Vehicle::_flightDistanceFactName = "flightDistance";
const char* Vehicle::_flightTimeFactName = "flightTime"; const char* Vehicle::_flightTimeFactName = "flightTime";
const char* Vehicle::_distanceToHomeFactName = "distanceToHome"; const char* Vehicle::_distanceToHomeFactName = "distanceToHome";
const char* Vehicle::_missionItemIndexFactName = "missionItemIndex";
const char* Vehicle::_headingToNextWPFactName = "headingToNextWP"; const char* Vehicle::_headingToNextWPFactName = "headingToNextWP";
const char* Vehicle::_headingToHomeFactName = "headingToHome"; const char* Vehicle::_headingToHomeFactName = "headingToHome";
const char* Vehicle::_distanceToGCSFactName = "distanceToGCS"; const char* Vehicle::_distanceToGCSFactName = "distanceToGCS";
@ -205,6 +206,7 @@ Vehicle::Vehicle(LinkInterface* link,
, _flightDistanceFact (0, _flightDistanceFactName, FactMetaData::valueTypeDouble) , _flightDistanceFact (0, _flightDistanceFactName, FactMetaData::valueTypeDouble)
, _flightTimeFact (0, _flightTimeFactName, FactMetaData::valueTypeElapsedTimeInSeconds) , _flightTimeFact (0, _flightTimeFactName, FactMetaData::valueTypeElapsedTimeInSeconds)
, _distanceToHomeFact (0, _distanceToHomeFactName, FactMetaData::valueTypeDouble) , _distanceToHomeFact (0, _distanceToHomeFactName, FactMetaData::valueTypeDouble)
, _missionItemIndexFact (0, _missionItemIndexFactName, FactMetaData::valueTypeUint16)
, _headingToNextWPFact (0, _headingToNextWPFactName, FactMetaData::valueTypeDouble) , _headingToNextWPFact (0, _headingToNextWPFactName, FactMetaData::valueTypeDouble)
, _headingToHomeFact (0, _headingToHomeFactName, FactMetaData::valueTypeDouble) , _headingToHomeFact (0, _headingToHomeFactName, FactMetaData::valueTypeDouble)
, _distanceToGCSFact (0, _distanceToGCSFactName, FactMetaData::valueTypeDouble) , _distanceToGCSFact (0, _distanceToGCSFactName, FactMetaData::valueTypeDouble)
@ -413,6 +415,7 @@ Vehicle::Vehicle(MAV_AUTOPILOT firmwareType,
, _flightTimeFact (0, _flightTimeFactName, FactMetaData::valueTypeElapsedTimeInSeconds) , _flightTimeFact (0, _flightTimeFactName, FactMetaData::valueTypeElapsedTimeInSeconds)
, _distanceToHomeFact (0, _distanceToHomeFactName, FactMetaData::valueTypeDouble) , _distanceToHomeFact (0, _distanceToHomeFactName, FactMetaData::valueTypeDouble)
, _headingToNextWPFact (0, _headingToNextWPFactName, FactMetaData::valueTypeDouble) , _headingToNextWPFact (0, _headingToNextWPFactName, FactMetaData::valueTypeDouble)
, _missionItemIndexFact (0, _missionItemIndexFactName, FactMetaData::valueTypeUint16)
, _headingToHomeFact (0, _headingToHomeFactName, FactMetaData::valueTypeDouble) , _headingToHomeFact (0, _headingToHomeFactName, FactMetaData::valueTypeDouble)
, _distanceToGCSFact (0, _distanceToGCSFactName, FactMetaData::valueTypeDouble) , _distanceToGCSFact (0, _distanceToGCSFactName, FactMetaData::valueTypeDouble)
, _hobbsFact (0, _hobbsFactName, FactMetaData::valueTypeString) , _hobbsFact (0, _hobbsFactName, FactMetaData::valueTypeString)
@ -458,6 +461,7 @@ void Vehicle::_commonInit()
connect(_missionManager, &MissionManager::newMissionItemsAvailable, this, &Vehicle::_clearCameraTriggerPoints); connect(_missionManager, &MissionManager::newMissionItemsAvailable, this, &Vehicle::_clearCameraTriggerPoints);
connect(_missionManager, &MissionManager::sendComplete, this, &Vehicle::_clearCameraTriggerPoints); connect(_missionManager, &MissionManager::sendComplete, this, &Vehicle::_clearCameraTriggerPoints);
connect(_missionManager, &MissionManager::currentIndexChanged, this, &Vehicle::_updateHeadingToNextWP); connect(_missionManager, &MissionManager::currentIndexChanged, this, &Vehicle::_updateHeadingToNextWP);
connect(_missionManager, &MissionManager::currentIndexChanged, this, &Vehicle::_updateMissionItemIndex);
connect(_missionManager, &MissionManager::sendComplete, _trajectoryPoints, &TrajectoryPoints::clear); connect(_missionManager, &MissionManager::sendComplete, _trajectoryPoints, &TrajectoryPoints::clear);
connect(_missionManager, &MissionManager::newMissionItemsAvailable, _trajectoryPoints, &TrajectoryPoints::clear); connect(_missionManager, &MissionManager::newMissionItemsAvailable, _trajectoryPoints, &TrajectoryPoints::clear);
@ -495,6 +499,7 @@ void Vehicle::_commonInit()
_addFact(&_flightDistanceFact, _flightDistanceFactName); _addFact(&_flightDistanceFact, _flightDistanceFactName);
_addFact(&_flightTimeFact, _flightTimeFactName); _addFact(&_flightTimeFact, _flightTimeFactName);
_addFact(&_distanceToHomeFact, _distanceToHomeFactName); _addFact(&_distanceToHomeFact, _distanceToHomeFactName);
_addFact(&_missionItemIndexFact, _missionItemIndexFactName);
_addFact(&_headingToNextWPFact, _headingToNextWPFactName); _addFact(&_headingToNextWPFact, _headingToNextWPFactName);
_addFact(&_headingToHomeFact, _headingToHomeFactName); _addFact(&_headingToHomeFact, _headingToHomeFactName);
_addFact(&_distanceToGCSFact, _distanceToGCSFactName); _addFact(&_distanceToGCSFact, _distanceToGCSFactName);
@ -3982,21 +3987,32 @@ void Vehicle::_updateDistanceHeadingToHome()
void Vehicle::_updateHeadingToNextWP() void Vehicle::_updateHeadingToNextWP()
{ {
const int _currentIndex = _missionManager->currentIndex(); const int currentIndex = _missionManager->currentIndex();
MissionItem _currentItem;
QList<MissionItem*> llist = _missionManager->missionItems(); QList<MissionItem*> llist = _missionManager->missionItems();
if(llist.size()>_currentIndex && _currentIndex!=-1 if(llist.size()>currentIndex && currentIndex!=-1
&& llist[_currentIndex]->coordinate().longitude()!=0.0 && llist[currentIndex]->coordinate().longitude()!=0.0
&& coordinate().distanceTo(llist[_currentIndex]->coordinate())>5.0 ){ && coordinate().distanceTo(llist[currentIndex]->coordinate())>5.0 ){
_headingToNextWPFact.setRawValue(coordinate().azimuthTo(llist[_currentIndex]->coordinate())); _headingToNextWPFact.setRawValue(coordinate().azimuthTo(llist[currentIndex]->coordinate()));
} }
else{ else{
_headingToNextWPFact.setRawValue(qQNaN()); _headingToNextWPFact.setRawValue(qQNaN());
} }
} }
void Vehicle::_updateMissionItemIndex()
{
const int currentIndex = _missionManager->currentIndex();
unsigned offset = 0;
if (!_firmwarePlugin->sendHomePositionToVehicle()) {
offset = 1;
}
_missionItemIndexFact.setRawValue(currentIndex + offset);
}
void Vehicle::_updateDistanceToGCS() void Vehicle::_updateDistanceToGCS()
{ {
QGeoCoordinate gcsPosition = _toolbox->qgcPositionManager()->gcsPosition(); QGeoCoordinate gcsPosition = _toolbox->qgcPositionManager()->gcsPosition();

5
src/Vehicle/Vehicle.h

@ -670,6 +670,7 @@ public:
Q_PROPERTY(Fact* altitudeAMSL READ altitudeAMSL CONSTANT) Q_PROPERTY(Fact* altitudeAMSL READ altitudeAMSL CONSTANT)
Q_PROPERTY(Fact* flightDistance READ flightDistance CONSTANT) Q_PROPERTY(Fact* flightDistance READ flightDistance CONSTANT)
Q_PROPERTY(Fact* distanceToHome READ distanceToHome CONSTANT) Q_PROPERTY(Fact* distanceToHome READ distanceToHome CONSTANT)
Q_PROPERTY(Fact* missionItemIndex READ missionItemIndex CONSTANT)
Q_PROPERTY(Fact* headingToNextWP READ headingToNextWP CONSTANT) Q_PROPERTY(Fact* headingToNextWP READ headingToNextWP CONSTANT)
Q_PROPERTY(Fact* headingToHome READ headingToHome CONSTANT) Q_PROPERTY(Fact* headingToHome READ headingToHome CONSTANT)
Q_PROPERTY(Fact* distanceToGCS READ distanceToGCS CONSTANT) Q_PROPERTY(Fact* distanceToGCS READ distanceToGCS CONSTANT)
@ -981,6 +982,7 @@ public:
Fact* altitudeAMSL () { return &_altitudeAMSLFact; } Fact* altitudeAMSL () { return &_altitudeAMSLFact; }
Fact* flightDistance () { return &_flightDistanceFact; } Fact* flightDistance () { return &_flightDistanceFact; }
Fact* distanceToHome () { return &_distanceToHomeFact; } Fact* distanceToHome () { return &_distanceToHomeFact; }
Fact* missionItemIndex () { return &_missionItemIndexFact; }
Fact* headingToNextWP () { return &_headingToNextWPFact; } Fact* headingToNextWP () { return &_headingToNextWPFact; }
Fact* headingToHome () { return &_headingToHomeFact; } Fact* headingToHome () { return &_headingToHomeFact; }
Fact* distanceToGCS () { return &_distanceToGCSFact; } Fact* distanceToGCS () { return &_distanceToGCSFact; }
@ -1259,6 +1261,7 @@ private slots:
void _sendMavCommandAgain (); void _sendMavCommandAgain ();
void _clearCameraTriggerPoints (); void _clearCameraTriggerPoints ();
void _updateDistanceHeadingToHome (); void _updateDistanceHeadingToHome ();
void _updateMissionItemIndex ();
void _updateHeadingToNextWP (); void _updateHeadingToNextWP ();
void _updateDistanceToGCS (); void _updateDistanceToGCS ();
void _updateHobbsMeter (); void _updateHobbsMeter ();
@ -1570,6 +1573,7 @@ private:
Fact _flightDistanceFact; Fact _flightDistanceFact;
Fact _flightTimeFact; Fact _flightTimeFact;
Fact _distanceToHomeFact; Fact _distanceToHomeFact;
Fact _missionItemIndexFact;
Fact _headingToNextWPFact; Fact _headingToNextWPFact;
Fact _headingToHomeFact; Fact _headingToHomeFact;
Fact _distanceToGCSFact; Fact _distanceToGCSFact;
@ -1604,6 +1608,7 @@ private:
static const char* _flightDistanceFactName; static const char* _flightDistanceFactName;
static const char* _flightTimeFactName; static const char* _flightTimeFactName;
static const char* _distanceToHomeFactName; static const char* _distanceToHomeFactName;
static const char* _missionItemIndexFactName;
static const char* _headingToNextWPFactName; static const char* _headingToNextWPFactName;
static const char* _headingToHomeFactName; static const char* _headingToHomeFactName;
static const char* _distanceToGCSFactName; static const char* _distanceToGCSFactName;

5
src/Vehicle/VehicleFact.json

@ -105,6 +105,11 @@
"units": "m" "units": "m"
}, },
{ {
"name": "missionItemIndex",
"shortDescription": "Mission Item Index",
"type": "uint16"
},
{
"name": "headingToNextWP", "name": "headingToNextWP",
"shortDescription": "Next WP Heading", "shortDescription": "Next WP Heading",
"type": "double", "type": "double",

Loading…
Cancel
Save