@ -56,11 +56,11 @@ SimpleMissionItem::SimpleMissionItem(Vehicle* vehicle, bool flyView, QObject* pa
, _rawEdit ( false )
, _rawEdit ( false )
, _dirty ( false )
, _dirty ( false )
, _ignoreDirtyChangeSignals ( false )
, _ignoreDirtyChangeSignals ( false )
, _speedSection ( NULL )
, _speedSection ( nullptr )
, _cameraSection ( NULL )
, _cameraSection ( nullptr )
, _commandTree ( qgcApp ( ) - > toolbox ( ) - > missionCommandTree ( ) )
, _commandTree ( qgcApp ( ) - > toolbox ( ) - > missionCommandTree ( ) )
, _supportedCommandFact ( 0 , " Command: " , FactMetaData : : valueTypeUint32 )
, _supportedCommandFact ( 0 , " Command: " , FactMetaData : : valueTypeUint32 )
, _altitudeMode ( AltitudeRelative )
, _altitudeMode ( QGroundControlQmlGlobal : : AltitudeMo deRelative )
, _altitudeFact ( 0 , " Altitude " , FactMetaData : : valueTypeDouble )
, _altitudeFact ( 0 , " Altitude " , FactMetaData : : valueTypeDouble )
, _amslAltAboveTerrainFact ( 0 , " Alt above terrain " , FactMetaData : : valueTypeDouble )
, _amslAltAboveTerrainFact ( 0 , " Alt above terrain " , FactMetaData : : valueTypeDouble )
, _param1MetaData ( FactMetaData : : valueTypeDouble )
, _param1MetaData ( FactMetaData : : valueTypeDouble )
@ -90,8 +90,8 @@ SimpleMissionItem::SimpleMissionItem(Vehicle* vehicle, bool flyView, const Missi
, _rawEdit ( false )
, _rawEdit ( false )
, _dirty ( false )
, _dirty ( false )
, _ignoreDirtyChangeSignals ( false )
, _ignoreDirtyChangeSignals ( false )
, _speedSection ( NULL )
, _speedSection ( nullptr )
, _cameraSection ( NULL )
, _cameraSection ( nullptr )
, _commandTree ( qgcApp ( ) - > toolbox ( ) - > missionCommandTree ( ) )
, _commandTree ( qgcApp ( ) - > toolbox ( ) - > missionCommandTree ( ) )
, _supportedCommandFact ( 0 , " Command: " , FactMetaData : : valueTypeUint32 )
, _supportedCommandFact ( 0 , " Command: " , FactMetaData : : valueTypeUint32 )
, _altitudeFact ( 0 , " Altitude " , FactMetaData : : valueTypeDouble )
, _altitudeFact ( 0 , " Altitude " , FactMetaData : : valueTypeDouble )
@ -109,15 +109,15 @@ SimpleMissionItem::SimpleMissionItem(Vehicle* vehicle, bool flyView, const Missi
struct MavFrame2AltMode_s {
struct MavFrame2AltMode_s {
MAV_FRAME mavFrame ;
MAV_FRAME mavFrame ;
AltitudeMode altMode ;
QGroundControlQmlGlobal : : AltitudeMode altMode ;
} ;
} ;
const struct MavFrame2AltMode_s rgMavFrame2AltMode [ ] = {
const struct MavFrame2AltMode_s rgMavFrame2AltMode [ ] = {
{ MAV_FRAME_GLOBAL_TERRAIN_ALT , AltitudeTerrainFrame } ,
{ MAV_FRAME_GLOBAL_TERRAIN_ALT , QGroundControlQmlGlobal : : AltitudeMo deTerrainFrame } ,
{ MAV_FRAME_GLOBAL , AltitudeAbsolute } ,
{ MAV_FRAME_GLOBAL , QGroundControlQmlGlobal : : AltitudeMo deAbsolute } ,
{ MAV_FRAME_GLOBAL_RELATIVE_ALT , AltitudeRelative } ,
{ MAV_FRAME_GLOBAL_RELATIVE_ALT , QGroundControlQmlGlobal : : AltitudeMo deRelative } ,
} ;
} ;
_altitudeMode = AltitudeRelative ;
_altitudeMode = QGroundControlQmlGlobal : : AltitudeMo deRelative ;
for ( size_t i = 0 ; i < sizeof ( rgMavFrame2AltMode ) / sizeof ( rgMavFrame2AltMode [ 0 ] ) ; i + + ) {
for ( size_t i = 0 ; i < sizeof ( rgMavFrame2AltMode ) / sizeof ( rgMavFrame2AltMode [ 0 ] ) ; i + + ) {
const MavFrame2AltMode_s & pMavFrame2AltMode = rgMavFrame2AltMode [ i ] ;
const MavFrame2AltMode_s & pMavFrame2AltMode = rgMavFrame2AltMode [ i ] ;
if ( pMavFrame2AltMode . mavFrame = = missionItem . frame ( ) ) {
if ( pMavFrame2AltMode . mavFrame = = missionItem . frame ( ) ) {
@ -319,7 +319,7 @@ bool SimpleMissionItem::load(QTextStream &loadStream)
bool success ;
bool success ;
if ( ( success = _missionItem . load ( loadStream ) ) ) {
if ( ( success = _missionItem . load ( loadStream ) ) ) {
if ( specifiesCoordinate ( ) ) {
if ( specifiesCoordinate ( ) ) {
_altitudeMode = _missionItem . relativeAltitude ( ) ? AltitudeRelative : AltitudeAbsolute ;
_altitudeMode = _missionItem . relativeAltitude ( ) ? QGroundControlQmlGlobal : : AltitudeMo deRelative : QGroundControlQmlGlobal : : AltitudeMo deAbsolute ;
_altitudeFact . setRawValue ( _missionItem . _param7Fact . rawValue ( ) ) ;
_altitudeFact . setRawValue ( _missionItem . _param7Fact . rawValue ( ) ) ;
_amslAltAboveTerrainFact . setRawValue ( qQNaN ( ) ) ;
_amslAltAboveTerrainFact . setRawValue ( qQNaN ( ) ) ;
}
}
@ -345,11 +345,11 @@ bool SimpleMissionItem::load(const QJsonObject& json, int sequenceNumber, QStrin
return false ;
return false ;
}
}
_altitudeMode = ( AltitudeMode ) ( int ) json [ _jsonAltitudeModeKey ] . toDouble ( ) ;
_altitudeMode = ( QGroundControlQmlGlobal : : AltitudeMode ) ( int ) json [ _jsonAltitudeModeKey ] . toDouble ( ) ;
_altitudeFact . setRawValue ( JsonHelper : : possibleNaNJsonValue ( json [ _jsonAltitudeKey ] ) ) ;
_altitudeFact . setRawValue ( JsonHelper : : possibleNaNJsonValue ( json [ _jsonAltitudeKey ] ) ) ;
_amslAltAboveTerrainFact . setRawValue ( JsonHelper : : possibleNaNJsonValue ( json [ _jsonAltitudeKey ] ) ) ;
_amslAltAboveTerrainFact . setRawValue ( JsonHelper : : possibleNaNJsonValue ( json [ _jsonAltitudeKey ] ) ) ;
} else {
} else {
_altitudeMode = _missionItem . relativeAltitude ( ) ? AltitudeRelative : AltitudeAbsolute ;
_altitudeMode = _missionItem . relativeAltitude ( ) ? QGroundControlQmlGlobal : : AltitudeMo deRelative : QGroundControlQmlGlobal : : AltitudeMo deAbsolute ;
_altitudeFact . setRawValue ( _missionItem . _param7Fact . rawValue ( ) ) ;
_altitudeFact . setRawValue ( _missionItem . _param7Fact . rawValue ( ) ) ;
_amslAltAboveTerrainFact . setRawValue ( qQNaN ( ) ) ;
_amslAltAboveTerrainFact . setRawValue ( qQNaN ( ) ) ;
}
}
@ -662,28 +662,31 @@ void SimpleMissionItem::_sendCoordinateChanged(void)
void SimpleMissionItem : : _altitudeModeChanged ( void )
void SimpleMissionItem : : _altitudeModeChanged ( void )
{
{
switch ( _altitudeMode ) {
switch ( _altitudeMode ) {
case AltitudeTerrainFrame :
case QGroundControlQmlGlobal : : AltitudeMo deTerrainFrame :
_missionItem . setFrame ( MAV_FRAME_GLOBAL_TERRAIN_ALT ) ;
_missionItem . setFrame ( MAV_FRAME_GLOBAL_TERRAIN_ALT ) ;
break ;
break ;
case AltitudeAboveTerrain :
case QGroundControlQmlGlobal : : AltitudeMo deAboveTerrain :
// Terrain altitudes are Absolute
// Terrain altitudes are Absolute
_missionItem . setFrame ( MAV_FRAME_GLOBAL ) ;
_missionItem . setFrame ( MAV_FRAME_GLOBAL ) ;
// Clear any old calculated values
// Clear any old calculated values
_missionItem . _param7Fact . setRawValue ( qQNaN ( ) ) ;
_missionItem . _param7Fact . setRawValue ( qQNaN ( ) ) ;
_amslAltAboveTerrainFact . setRawValue ( qQNaN ( ) ) ;
_amslAltAboveTerrainFact . setRawValue ( qQNaN ( ) ) ;
break ;
break ;
case AltitudeAbsolute :
case QGroundControlQmlGlobal : : AltitudeMo deAbsolute :
_missionItem . setFrame ( MAV_FRAME_GLOBAL ) ;
_missionItem . setFrame ( MAV_FRAME_GLOBAL ) ;
break ;
break ;
case AltitudeRelative :
case QGroundControlQmlGlobal : : AltitudeMo deRelative :
_missionItem . setFrame ( MAV_FRAME_GLOBAL_RELATIVE_ALT ) ;
_missionItem . setFrame ( MAV_FRAME_GLOBAL_RELATIVE_ALT ) ;
break ;
break ;
case QGroundControlQmlGlobal : : AltitudeModeNone :
qWarning ( ) < < " Internal Error SimpleMissionItem::_altitudeModeChanged: Invalid altitudeMode == AltitudeModeNone " ;
break ;
}
}
// We always call _altitudeChanged to make sure that param7 is always setup correctly on mode change
// We always call _altitudeChanged to make sure that param7 is always setup correctly on mode change
_altitudeChanged ( ) ;
_altitudeChanged ( ) ;
emit coordinateHasRelativeAltitudeChanged ( _altitudeMode = = AltitudeRelative ) ;
emit coordinateHasRelativeAltitudeChanged ( _altitudeMode = = QGroundControlQmlGlobal : : AltitudeMo deRelative ) ;
}
}
void SimpleMissionItem : : _altitudeChanged ( void )
void SimpleMissionItem : : _altitudeChanged ( void )
@ -692,7 +695,7 @@ void SimpleMissionItem::_altitudeChanged(void)
return ;
return ;
}
}
if ( _altitudeMode = = AltitudeAboveTerrain ) {
if ( _altitudeMode = = QGroundControlQmlGlobal : : AltitudeMo deAboveTerrain ) {
_amslAltAboveTerrainFact . setRawValue ( qQNaN ( ) ) ;
_amslAltAboveTerrainFact . setRawValue ( qQNaN ( ) ) ;
_terrainAltChanged ( ) ;
_terrainAltChanged ( ) ;
} else {
} else {
@ -702,7 +705,7 @@ void SimpleMissionItem::_altitudeChanged(void)
void SimpleMissionItem : : _terrainAltChanged ( void )
void SimpleMissionItem : : _terrainAltChanged ( void )
{
{
if ( ! specifiesAltitude ( ) | | _altitudeMode ! = AltitudeAboveTerrain ) {
if ( ! specifiesAltitude ( ) | | _altitudeMode ! = QGroundControlQmlGlobal : : AltitudeMo deAboveTerrain ) {
// We don't need terrain data
// We don't need terrain data
return ;
return ;
}
}
@ -744,7 +747,7 @@ void SimpleMissionItem::_setDefaultsForCommand(void)
}
}
// Set global defaults first, then if there are param defaults they will get reset
// Set global defaults first, then if there are param defaults they will get reset
_altitudeMode = AltitudeRelative ;
_altitudeMode = QGroundControlQmlGlobal : : AltitudeMo deRelative ;
emit altitudeModeChanged ( ) ;
emit altitudeModeChanged ( ) ;
_amslAltAboveTerrainFact . setRawValue ( qQNaN ( ) ) ;
_amslAltAboveTerrainFact . setRawValue ( qQNaN ( ) ) ;
if ( specifiesCoordinate ( ) | | isStandaloneCoordinate ( ) | | specifiesAltitudeOnly ( ) ) {
if ( specifiesCoordinate ( ) | | isStandaloneCoordinate ( ) | | specifiesAltitudeOnly ( ) ) {
@ -967,7 +970,7 @@ void SimpleMissionItem::setMissionFlightStatus(MissionController::MissionFlightS
}
}
}
}
void SimpleMissionItem : : setAltitudeMode ( AltitudeMode altitudeMode )
void SimpleMissionItem : : setAltitudeMode ( QGroundControlQmlGlobal : : AltitudeMode altitudeMode )
{
{
if ( altitudeMode ! = _altitudeMode ) {
if ( altitudeMode ! = _altitudeMode ) {
_altitudeMode = altitudeMode ;
_altitudeMode = altitudeMode ;