Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Valentin Platzgummer
qgroundcontrol
Commits
360cc7c6
Commit
360cc7c6
authored
Jan 05, 2017
by
Don Gagne
Committed by
GitHub
Jan 05, 2017
Browse files
Merge pull request #4397 from DonLakeFlyer/MultiVehicleList
Starting point for new MultiVehicle view [WIP]
parents
badcdb6b
088c2d94
Changes
30
Hide whitespace changes
Inline
Side-by-side
qgroundcontrol.qrc
View file @
360cc7c6
...
...
@@ -34,6 +34,7 @@
<file alias="MissionEditor.qml">src/MissionEditor/MissionEditor.qml</file>
<file alias="MockLink.qml">src/ui/preferences/MockLink.qml</file>
<file alias="MockLinkSettings.qml">src/ui/preferences/MockLinkSettings.qml</file>
<file alias="MultiVehicleView.qml">src/MultiVehicle/MultiVehicleView.qml</file>
<file alias="MotorComponent.qml">src/AutoPilotPlugins/Common/MotorComponent.qml</file>
<file alias="OfflineMap.qml">src/QtLocationPlugin/QMLControl/OfflineMap.qml</file>
<file alias="PowerComponent.qml">src/AutoPilotPlugins/PX4/PowerComponent.qml</file>
...
...
@@ -45,6 +46,8 @@
<file alias="QGroundControl/Controls/DropButton.qml">src/QmlControls/DropButton.qml</file>
<file alias="QGroundControl/Controls/ExclusiveGroupItem.qml">src/QmlControls/ExclusiveGroupItem.qml</file>
<file alias="QGroundControl/Controls/FactSliderPanel.qml">src/QmlControls/FactSliderPanel.qml</file>
<file alias="QGroundControl/Controls/FlightModeDropdown.qml">src/QmlControls/FlightModeDropdown.qml</file>
<file alias="QGroundControl/Controls/GuidedBar.qml">src/QmlControls/GuidedBar.qml</file>
<file alias="QGroundControl/Controls/IndicatorButton.qml">src/QmlControls/IndicatorButton.qml</file>
<file alias="QGroundControl/Controls/JoystickThumbPad.qml">src/QmlControls/JoystickThumbPad.qml</file>
<file alias="QGroundControl/Controls/MainToolBar.qml">src/ui/toolbar/MainToolBar.qml</file>
...
...
@@ -104,6 +107,7 @@
<file alias="QGroundControl/FlightDisplay/FlightDisplayViewMap.qml">src/FlightDisplay/FlightDisplayViewMap.qml</file>
<file alias="QGroundControl/FlightDisplay/FlightDisplayViewVideo.qml">src/FlightDisplay/FlightDisplayViewVideo.qml</file>
<file alias="QGroundControl/FlightDisplay/FlightDisplayViewWidgets.qml">src/FlightDisplay/FlightDisplayViewWidgets.qml</file>
<file alias="QGroundControl/FlightDisplay/MultiVehicleList.qml">src/FlightDisplay/MultiVehicleList.qml</file>
<file alias="QGroundControl/FlightDisplay/qmldir">src/FlightDisplay/qmldir</file>
<file alias="QGroundControl/FlightMap/CenterMapDropButton.qml">src/FlightMap/Widgets/CenterMapDropButton.qml</file>
<file alias="QGroundControl/FlightMap/FlightMap.qml">src/FlightMap/FlightMap.qml</file>
...
...
src/FirmwarePlugin/APM/APMFirmwarePlugin.cc
View file @
360cc7c6
...
...
@@ -762,3 +762,13 @@ QString APMFirmwarePlugin::internalParameterMetaDataFile(Vehicle* vehicle)
return
QString
();
}
}
QString
APMFirmwarePlugin
::
missionFlightMode
(
void
)
{
return
QStringLiteral
(
"Auto"
);
}
QString
APMFirmwarePlugin
::
rtlFlightMode
(
void
)
{
return
QStringLiteral
(
"RTL"
);
}
src/FirmwarePlugin/APM/APMFirmwarePlugin.h
View file @
360cc7c6
...
...
@@ -75,28 +75,30 @@ public:
QList
<
VehicleComponent
*>
componentsForVehicle
(
AutoPilotPlugin
*
vehicle
)
final
;
QList
<
MAV_CMD
>
supportedMissionCommands
(
void
)
final
;
AutoPilotPlugin
*
autopilotPlugin
(
Vehicle
*
vehicle
)
final
;
bool
isCapable
(
const
Vehicle
*
vehicle
,
FirmwareCapabilities
capabilities
);
QStringList
flightModes
(
Vehicle
*
vehicle
)
final
;
QString
flightMode
(
uint8_t
base_mode
,
uint32_t
custom_mode
)
const
final
;
bool
setFlightMode
(
const
QString
&
flightMode
,
uint8_t
*
base_mode
,
uint32_t
*
custom_mode
)
final
;
bool
isGuidedMode
(
const
Vehicle
*
vehicle
)
const
final
;
void
pauseVehicle
(
Vehicle
*
vehicle
);
int
manualControlReservedButtonCount
(
void
);
bool
adjustIncomingMavlinkMessage
(
Vehicle
*
vehicle
,
mavlink_message_t
*
message
)
final
;
void
adjustOutgoingMavlinkMessage
(
Vehicle
*
vehicle
,
LinkInterface
*
outgoingLink
,
mavlink_message_t
*
message
)
final
;
void
initializeVehicle
(
Vehicle
*
vehicle
)
final
;
bool
sendHomePositionToVehicle
(
void
)
final
;
void
addMetaDataToFact
(
QObject
*
parameterMetaData
,
Fact
*
fact
,
MAV_TYPE
vehicleType
)
final
;
QString
getDefaultComponentIdParam
(
void
)
const
final
{
return
QString
(
"SYSID_SW_TYPE"
);
}
QString
missionCommandOverrides
(
MAV_TYPE
vehicleType
)
const
;
QString
getVersionParam
(
void
)
final
{
return
QStringLiteral
(
"SYSID_SW_MREV"
);
}
QString
internalParameterMetaDataFile
(
Vehicle
*
vehicle
)
final
;
void
getParameterMetaDataVersionInfo
(
const
QString
&
metaDataFile
,
int
&
majorVersion
,
int
&
minorVersion
)
final
{
APMParameterMetaData
::
getParameterMetaDataVersionInfo
(
metaDataFile
,
majorVersion
,
minorVersion
);
}
QObject
*
loadParameterMetaData
(
const
QString
&
metaDataFile
);
GeoFenceManager
*
newGeoFenceManager
(
Vehicle
*
vehicle
)
{
return
new
APMGeoFenceManager
(
vehicle
);
}
RallyPointManager
*
newRallyPointManager
(
Vehicle
*
vehicle
)
{
return
new
APMRallyPointManager
(
vehicle
);
}
QString
brandImage
(
const
Vehicle
*
vehicle
)
const
{
Q_UNUSED
(
vehicle
);
return
QStringLiteral
(
"/qmlimages/APM/BrandImage"
);
}
AutoPilotPlugin
*
autopilotPlugin
(
Vehicle
*
vehicle
)
final
;
bool
isCapable
(
const
Vehicle
*
vehicle
,
FirmwareCapabilities
capabilities
);
QStringList
flightModes
(
Vehicle
*
vehicle
)
final
;
QString
flightMode
(
uint8_t
base_mode
,
uint32_t
custom_mode
)
const
final
;
bool
setFlightMode
(
const
QString
&
flightMode
,
uint8_t
*
base_mode
,
uint32_t
*
custom_mode
)
final
;
bool
isGuidedMode
(
const
Vehicle
*
vehicle
)
const
final
;
void
pauseVehicle
(
Vehicle
*
vehicle
);
int
manualControlReservedButtonCount
(
void
);
bool
adjustIncomingMavlinkMessage
(
Vehicle
*
vehicle
,
mavlink_message_t
*
message
)
final
;
void
adjustOutgoingMavlinkMessage
(
Vehicle
*
vehicle
,
LinkInterface
*
outgoingLink
,
mavlink_message_t
*
message
)
final
;
void
initializeVehicle
(
Vehicle
*
vehicle
)
final
;
bool
sendHomePositionToVehicle
(
void
)
final
;
void
addMetaDataToFact
(
QObject
*
parameterMetaData
,
Fact
*
fact
,
MAV_TYPE
vehicleType
)
final
;
QString
getDefaultComponentIdParam
(
void
)
const
final
{
return
QString
(
"SYSID_SW_TYPE"
);
}
QString
missionCommandOverrides
(
MAV_TYPE
vehicleType
)
const
;
QString
getVersionParam
(
void
)
final
{
return
QStringLiteral
(
"SYSID_SW_MREV"
);
}
QString
internalParameterMetaDataFile
(
Vehicle
*
vehicle
)
final
;
void
getParameterMetaDataVersionInfo
(
const
QString
&
metaDataFile
,
int
&
majorVersion
,
int
&
minorVersion
)
final
{
APMParameterMetaData
::
getParameterMetaDataVersionInfo
(
metaDataFile
,
majorVersion
,
minorVersion
);
}
QObject
*
loadParameterMetaData
(
const
QString
&
metaDataFile
);
GeoFenceManager
*
newGeoFenceManager
(
Vehicle
*
vehicle
)
{
return
new
APMGeoFenceManager
(
vehicle
);
}
RallyPointManager
*
newRallyPointManager
(
Vehicle
*
vehicle
)
{
return
new
APMRallyPointManager
(
vehicle
);
}
QString
brandImage
(
const
Vehicle
*
vehicle
)
const
{
Q_UNUSED
(
vehicle
);
return
QStringLiteral
(
"/qmlimages/APM/BrandImage"
);
}
QString
missionFlightMode
(
void
)
final
;
QString
rtlFlightMode
(
void
)
final
;
protected:
/// All access to singleton is through stack specific implementation
...
...
src/FirmwarePlugin/APM/ArduCopterFirmwarePlugin.cc
View file @
360cc7c6
...
...
@@ -204,3 +204,8 @@ QString ArduCopterFirmwarePlugin::geoFenceRadiusParam(Vehicle* vehicle)
Q_UNUSED
(
vehicle
);
return
QStringLiteral
(
"FENCE_RADIUS"
);
}
QString
ArduCopterFirmwarePlugin
::
takeControlFlightMode
(
void
)
{
return
QStringLiteral
(
"Stabilize"
);
}
src/FirmwarePlugin/APM/ArduCopterFirmwarePlugin.h
View file @
360cc7c6
...
...
@@ -68,6 +68,7 @@ public:
bool
multiRotorXConfig
(
Vehicle
*
vehicle
)
final
;
QString
geoFenceRadiusParam
(
Vehicle
*
vehicle
)
final
;
QString
offlineEditingParamFile
(
Vehicle
*
vehicle
)
final
{
Q_UNUSED
(
vehicle
);
return
QStringLiteral
(
":/FirmwarePlugin/APM/Copter.OfflineEditing.params"
);
}
QString
takeControlFlightMode
(
void
)
final
;
private:
static
bool
_remapParamNameIntialized
;
...
...
src/FirmwarePlugin/APM/ArduPlaneFirmwarePlugin.cc
View file @
360cc7c6
...
...
@@ -64,3 +64,8 @@ ArduPlaneFirmwarePlugin::ArduPlaneFirmwarePlugin(void)
supportedFlightModes
<<
APMPlaneMode
(
APMPlaneMode
::
QRTL
,
true
);
setSupportedModes
(
supportedFlightModes
);
}
QString
ArduPlaneFirmwarePlugin
::
takeControlFlightMode
(
void
)
{
return
QStringLiteral
(
"Manual"
);
}
src/FirmwarePlugin/APM/ArduPlaneFirmwarePlugin.h
View file @
360cc7c6
...
...
@@ -57,6 +57,7 @@ public:
// Overrides from FirmwarePlugin
QString
offlineEditingParamFile
(
Vehicle
*
vehicle
)
final
{
Q_UNUSED
(
vehicle
);
return
QStringLiteral
(
":/FirmwarePlugin/APM/Plane.OfflineEditing.params"
);
}
QString
takeControlFlightMode
(
void
)
final
;
};
#endif
src/FirmwarePlugin/FirmwarePlugin.cc
View file @
360cc7c6
...
...
@@ -282,3 +282,18 @@ int FirmwarePlugin::remapParamNameHigestMinorVersionNumber(int majorVersionNumbe
Q_UNUSED
(
majorVersionNumber
);
return
0
;
}
QString
FirmwarePlugin
::
missionFlightMode
(
void
)
{
return
QString
();
}
QString
FirmwarePlugin
::
rtlFlightMode
(
void
)
{
return
QString
();
}
QString
FirmwarePlugin
::
takeControlFlightMode
(
void
)
{
return
QString
();
}
src/FirmwarePlugin/FirmwarePlugin.h
View file @
360cc7c6
...
...
@@ -125,6 +125,15 @@ public:
/// Command vehicle to change to the specified relatice altitude
virtual
void
guidedModeChangeAltitude
(
Vehicle
*
vehicle
,
double
altitudeRel
);
/// Returns the flight mode for running missions
virtual
QString
missionFlightMode
(
void
);
/// Returns the flight mode for RTL
virtual
QString
rtlFlightMode
(
void
);
/// Returns the flight mode to use when the operator wants to take back control from autonomouse flight.
virtual
QString
takeControlFlightMode
(
void
);
/// FIXME: This isn't quite correct being here. All code for Joystick suvehicleTypepport is currently firmware specific
/// not just this. I'm going to try to change that. If not, this will need to be removed.
/// Returns the number of buttons which are reserved for firmware use in the MANUAL_CONTROL mavlink
...
...
src/FirmwarePlugin/PX4/PX4FirmwarePlugin.cc
View file @
360cc7c6
...
...
@@ -35,44 +35,42 @@ struct Modes2Name {
bool
multiRotor
;
/// multi rotor compatible
};
const
char
*
PX4FirmwarePlugin
::
manualFlightMode
=
"Manual"
;
const
char
*
PX4FirmwarePlugin
::
altCtlFlightMode
=
"Altitude"
;
const
char
*
PX4FirmwarePlugin
::
posCtlFlightMode
=
"Position"
;
const
char
*
PX4FirmwarePlugin
::
missionFlightMode
=
"Mission"
;
const
char
*
PX4FirmwarePlugin
::
holdFlightMode
=
"Hold"
;
const
char
*
PX4FirmwarePlugin
::
takeoffFlightMode
=
"Takeoff"
;
const
char
*
PX4FirmwarePlugin
::
landingFlightMode
=
"Land"
;
const
char
*
PX4FirmwarePlugin
::
rtlFlightMode
=
"Return"
;
const
char
*
PX4FirmwarePlugin
::
acroFlightMode
=
"Acro"
;
const
char
*
PX4FirmwarePlugin
::
offboardFlightMode
=
"Offboard"
;
const
char
*
PX4FirmwarePlugin
::
stabilizedFlightMode
=
"Stabilized"
;
const
char
*
PX4FirmwarePlugin
::
rattitudeFlightMode
=
"Rattitude"
;
const
char
*
PX4FirmwarePlugin
::
followMeFlightMode
=
"Follow Me"
;
const
char
*
PX4FirmwarePlugin
::
rtgsFlightMode
=
"Return to Groundstation"
;
const
char
*
PX4FirmwarePlugin
::
readyFlightMode
=
"Ready"
;
// unused
const
char
*
PX4FirmwarePlugin
::
_manualFlightMode
=
"Manual"
;
const
char
*
PX4FirmwarePlugin
::
_altCtlFlightMode
=
"Altitude"
;
const
char
*
PX4FirmwarePlugin
::
_posCtlFlightMode
=
"Position"
;
const
char
*
PX4FirmwarePlugin
::
_missionFlightMode
=
"Mission"
;
const
char
*
PX4FirmwarePlugin
::
_holdFlightMode
=
"Hold"
;
const
char
*
PX4FirmwarePlugin
::
_takeoffFlightMode
=
"Takeoff"
;
const
char
*
PX4FirmwarePlugin
::
_landingFlightMode
=
"Land"
;
const
char
*
PX4FirmwarePlugin
::
_rtlFlightMode
=
"Return"
;
const
char
*
PX4FirmwarePlugin
::
_acroFlightMode
=
"Acro"
;
const
char
*
PX4FirmwarePlugin
::
_offboardFlightMode
=
"Offboard"
;
const
char
*
PX4FirmwarePlugin
::
_stabilizedFlightMode
=
"Stabilized"
;
const
char
*
PX4FirmwarePlugin
::
_rattitudeFlightMode
=
"Rattitude"
;
const
char
*
PX4FirmwarePlugin
::
_followMeFlightMode
=
"Follow Me"
;
const
char
*
PX4FirmwarePlugin
::
_rtgsFlightMode
=
"Return to Groundstation"
;
const
char
*
PX4FirmwarePlugin
::
_readyFlightMode
=
"Ready"
;
/// Tranlates from PX4 custom modes to flight mode names
static
const
struct
Modes2Name
rgModes2Name
[]
=
{
//main_mode sub_mode name canBeSet FW MC
{
PX4_CUSTOM_MAIN_MODE_MANUAL
,
0
,
PX4FirmwarePlugin
::
manualFlightMode
,
true
,
true
,
true
},
{
PX4_CUSTOM_MAIN_MODE_STABILIZED
,
0
,
PX4FirmwarePlugin
::
stabilizedFlightMode
,
true
,
true
,
true
},
{
PX4_CUSTOM_MAIN_MODE_ACRO
,
0
,
PX4FirmwarePlugin
::
acroFlightMode
,
true
,
false
,
true
},
{
PX4_CUSTOM_MAIN_MODE_RATTITUDE
,
0
,
PX4FirmwarePlugin
::
rattitudeFlightMode
,
true
,
false
,
true
},
{
PX4_CUSTOM_MAIN_MODE_ALTCTL
,
0
,
PX4FirmwarePlugin
::
altCtlFlightMode
,
true
,
true
,
true
},
{
PX4_CUSTOM_MAIN_MODE_POSCTL
,
0
,
PX4FirmwarePlugin
::
posCtlFlightMode
,
true
,
true
,
true
},
{
PX4_CUSTOM_MAIN_MODE_AUTO
,
PX4_CUSTOM_SUB_MODE_AUTO_LOITER
,
PX4FirmwarePlugin
::
holdFlightMode
,
true
,
true
,
true
},
{
PX4_CUSTOM_MAIN_MODE_AUTO
,
PX4_CUSTOM_SUB_MODE_AUTO_MISSION
,
PX4FirmwarePlugin
::
missionFlightMode
,
true
,
true
,
true
},
{
PX4_CUSTOM_MAIN_MODE_AUTO
,
PX4_CUSTOM_SUB_MODE_AUTO_RTL
,
PX4FirmwarePlugin
::
rtlFlightMode
,
true
,
true
,
true
},
{
PX4_CUSTOM_MAIN_MODE_AUTO
,
PX4_CUSTOM_SUB_MODE_AUTO_FOLLOW_TARGET
,
PX4FirmwarePlugin
::
followMeFlightMode
,
true
,
true
,
true
},
{
PX4_CUSTOM_MAIN_MODE_OFFBOARD
,
0
,
PX4FirmwarePlugin
::
offboardFlightMode
,
true
,
true
,
true
},
//main_mode sub_mode name
canBeSet FW MC
{
PX4_CUSTOM_MAIN_MODE_MANUAL
,
0
,
PX4FirmwarePlugin
::
_
manualFlightMode
,
true
,
true
,
true
},
{
PX4_CUSTOM_MAIN_MODE_STABILIZED
,
0
,
PX4FirmwarePlugin
::
_
stabilizedFlightMode
,
true
,
true
,
true
},
{
PX4_CUSTOM_MAIN_MODE_ACRO
,
0
,
PX4FirmwarePlugin
::
_
acroFlightMode
,
true
,
false
,
true
},
{
PX4_CUSTOM_MAIN_MODE_RATTITUDE
,
0
,
PX4FirmwarePlugin
::
_
rattitudeFlightMode
,
true
,
false
,
true
},
{
PX4_CUSTOM_MAIN_MODE_ALTCTL
,
0
,
PX4FirmwarePlugin
::
_
altCtlFlightMode
,
true
,
true
,
true
},
{
PX4_CUSTOM_MAIN_MODE_POSCTL
,
0
,
PX4FirmwarePlugin
::
_
posCtlFlightMode
,
true
,
true
,
true
},
{
PX4_CUSTOM_MAIN_MODE_AUTO
,
PX4_CUSTOM_SUB_MODE_AUTO_LOITER
,
PX4FirmwarePlugin
::
_
holdFlightMode
,
true
,
true
,
true
},
{
PX4_CUSTOM_MAIN_MODE_AUTO
,
PX4_CUSTOM_SUB_MODE_AUTO_MISSION
,
PX4FirmwarePlugin
::
_
missionFlightMode
,
true
,
true
,
true
},
{
PX4_CUSTOM_MAIN_MODE_AUTO
,
PX4_CUSTOM_SUB_MODE_AUTO_RTL
,
PX4FirmwarePlugin
::
_
rtlFlightMode
,
true
,
true
,
true
},
{
PX4_CUSTOM_MAIN_MODE_AUTO
,
PX4_CUSTOM_SUB_MODE_AUTO_FOLLOW_TARGET
,
PX4FirmwarePlugin
::
_
followMeFlightMode
,
true
,
true
,
true
},
{
PX4_CUSTOM_MAIN_MODE_OFFBOARD
,
0
,
PX4FirmwarePlugin
::
_
offboardFlightMode
,
true
,
true
,
true
},
// modes that can't be directly set by the user
{
PX4_CUSTOM_MAIN_MODE_AUTO
,
PX4_CUSTOM_SUB_MODE_AUTO_LAND
,
PX4FirmwarePlugin
::
landingFlightMode
,
false
,
true
,
true
},
{
PX4_CUSTOM_MAIN_MODE_AUTO
,
PX4_CUSTOM_SUB_MODE_AUTO_READY
,
PX4FirmwarePlugin
::
readyFlightMode
,
false
,
true
,
true
},
{
PX4_CUSTOM_MAIN_MODE_AUTO
,
PX4_CUSTOM_SUB_MODE_AUTO_RTGS
,
PX4FirmwarePlugin
::
rtgsFlightMode
,
false
,
true
,
true
},
{
PX4_CUSTOM_MAIN_MODE_AUTO
,
PX4_CUSTOM_SUB_MODE_AUTO_TAKEOFF
,
PX4FirmwarePlugin
::
takeoffFlightMode
,
false
,
true
,
true
},
{
PX4_CUSTOM_MAIN_MODE_AUTO
,
PX4_CUSTOM_SUB_MODE_AUTO_LAND
,
PX4FirmwarePlugin
::
_
landingFlightMode
,
false
,
true
,
true
},
{
PX4_CUSTOM_MAIN_MODE_AUTO
,
PX4_CUSTOM_SUB_MODE_AUTO_READY
,
PX4FirmwarePlugin
::
_
readyFlightMode
,
false
,
true
,
true
},
{
PX4_CUSTOM_MAIN_MODE_AUTO
,
PX4_CUSTOM_SUB_MODE_AUTO_RTGS
,
PX4FirmwarePlugin
::
_
rtgsFlightMode
,
false
,
true
,
true
},
{
PX4_CUSTOM_MAIN_MODE_AUTO
,
PX4_CUSTOM_SUB_MODE_AUTO_TAKEOFF
,
PX4FirmwarePlugin
::
_
takeoffFlightMode
,
false
,
true
,
true
},
};
PX4FirmwarePlugin
::
PX4FirmwarePlugin
(
void
)
...
...
@@ -297,12 +295,12 @@ void PX4FirmwarePlugin::pauseVehicle(Vehicle* vehicle)
void
PX4FirmwarePlugin
::
guidedModeRTL
(
Vehicle
*
vehicle
)
{
vehicle
->
setFlightMode
(
rtlFlightMode
);
vehicle
->
setFlightMode
(
_
rtlFlightMode
);
}
void
PX4FirmwarePlugin
::
guidedModeLand
(
Vehicle
*
vehicle
)
{
vehicle
->
setFlightMode
(
landingFlightMode
);
vehicle
->
setFlightMode
(
_
landingFlightMode
);
}
void
PX4FirmwarePlugin
::
guidedModeOrbit
(
Vehicle
*
vehicle
,
const
QGeoCoordinate
&
centerCoord
,
double
radius
,
double
velocity
,
double
altitude
)
...
...
@@ -388,7 +386,7 @@ void PX4FirmwarePlugin::guidedModeChangeAltitude(Vehicle* vehicle, double altitu
void
PX4FirmwarePlugin
::
setGuidedMode
(
Vehicle
*
vehicle
,
bool
guidedMode
)
{
if
(
guidedMode
)
{
vehicle
->
setFlightMode
(
holdFlightMode
);
vehicle
->
setFlightMode
(
_
holdFlightMode
);
}
else
{
pauseVehicle
(
vehicle
);
}
...
...
@@ -397,8 +395,8 @@ void PX4FirmwarePlugin::setGuidedMode(Vehicle* vehicle, bool guidedMode)
bool
PX4FirmwarePlugin
::
isGuidedMode
(
const
Vehicle
*
vehicle
)
const
{
// Not supported by generic vehicle
return
(
vehicle
->
flightMode
()
==
holdFlightMode
||
vehicle
->
flightMode
()
==
takeoffFlightMode
||
vehicle
->
flightMode
()
==
landingFlightMode
);
return
(
vehicle
->
flightMode
()
==
_
holdFlightMode
||
vehicle
->
flightMode
()
==
_
takeoffFlightMode
||
vehicle
->
flightMode
()
==
_
landingFlightMode
);
}
bool
PX4FirmwarePlugin
::
adjustIncomingMavlinkMessage
(
Vehicle
*
vehicle
,
mavlink_message_t
*
message
)
...
...
@@ -456,3 +454,18 @@ void PX4FirmwarePlugin::_handleAutopilotVersion(Vehicle* vehicle, mavlink_messag
}
}
}
QString
PX4FirmwarePlugin
::
missionFlightMode
(
void
)
{
return
QString
(
_missionFlightMode
);
}
QString
PX4FirmwarePlugin
::
rtlFlightMode
(
void
)
{
return
QString
(
_rtlFlightMode
);
}
QString
PX4FirmwarePlugin
::
takeControlFlightMode
(
void
)
{
return
QString
(
_manualFlightMode
);
}
src/FirmwarePlugin/PX4/PX4FirmwarePlugin.h
View file @
360cc7c6
...
...
@@ -60,25 +60,28 @@ public:
GeoFenceManager
*
newGeoFenceManager
(
Vehicle
*
vehicle
)
{
return
new
PX4GeoFenceManager
(
vehicle
);
}
QString
offlineEditingParamFile
(
Vehicle
*
vehicle
)
final
{
Q_UNUSED
(
vehicle
);
return
QStringLiteral
(
":/FirmwarePlugin/PX4/PX4.OfflineEditing.params"
);
}
QString
brandImage
(
const
Vehicle
*
vehicle
)
const
{
Q_UNUSED
(
vehicle
);
return
QStringLiteral
(
"/qmlimages/PX4/BrandImage"
);
}
QString
missionFlightMode
(
void
)
final
;
QString
rtlFlightMode
(
void
)
final
;
QString
takeControlFlightMode
(
void
)
final
;
// NOTE: For internal use only. Do not use in mainline QGC code.
// Use these constants to set flight modes using setFlightMode method. Don't use hardcoded string names since the
// names may change.
static
const
char
*
manualFlightMode
;
static
const
char
*
acroFlightMode
;
static
const
char
*
stabilizedFlightMode
;
static
const
char
*
rattitudeFlightMode
;
static
const
char
*
altCtlFlightMode
;
static
const
char
*
posCtlFlightMode
;
static
const
char
*
offboardFlightMode
;
static
const
char
*
readyFlightMode
;
static
const
char
*
takeoffFlightMode
;
static
const
char
*
holdFlightMode
;
static
const
char
*
missionFlightMode
;
static
const
char
*
rtlFlightMode
;
static
const
char
*
landingFlightMode
;
static
const
char
*
rtgsFlightMode
;
static
const
char
*
followMeFlightMode
;
static
const
char
*
_manualFlightMode
;
static
const
char
*
_acroFlightMode
;
static
const
char
*
_stabilizedFlightMode
;
static
const
char
*
_rattitudeFlightMode
;
static
const
char
*
_altCtlFlightMode
;
static
const
char
*
_posCtlFlightMode
;
static
const
char
*
_offboardFlightMode
;
static
const
char
*
_readyFlightMode
;
static
const
char
*
_takeoffFlightMode
;
static
const
char
*
_holdFlightMode
;
static
const
char
*
_missionFlightMode
;
static
const
char
*
_rtlFlightMode
;
static
const
char
*
_landingFlightMode
;
static
const
char
*
_rtgsFlightMode
;
static
const
char
*
_followMeFlightMode
;
private:
void
_handleAutopilotVersion
(
Vehicle
*
vehicle
,
mavlink_message_t
*
message
);
...
...
src/FlightDisplay/FlightDisplayView.qml
View file @
360cc7c6
...
...
@@ -41,14 +41,15 @@ QGCView {
property
real
_pitch
:
_activeVehicle
?
_activeVehicle
.
pitch
.
value
:
_defaultPitch
property
real
_heading
:
_activeVehicle
?
_activeVehicle
.
heading
.
value
:
_defaultHeading
property
Fact
_emptyFact
:
Fact
{
}
property
Fact
_groundSpeedFact
:
_activeVehicle
?
_activeVehicle
.
groundSpeed
:
_emptyFact
property
Fact
_airSpeedFact
:
_activeVehicle
?
_activeVehicle
.
airSpeed
:
_emptyFact
property
bool
activeVehicleJoystickEnabled
:
_activeVehicle
?
_activeVehicle
.
joystickEnabled
:
false
property
real
_savedZoomLevel
:
0
property
real
_savedZoomLevel
:
0
property
real
_margins
:
ScreenTools
.
defaultFontPixelWidth
/
2
property
real
pipSize
:
mainWindow
.
width
*
0.2
...
...
@@ -120,6 +121,8 @@ QGCView {
px4JoystickCheck
()
}
QGCMapPalette
{
id
:
mapPal
;
lightColors
:
_mainIsMap
?
_flightMap
.
isSatelliteMap
:
true
}
QGCViewPanel
{
id
:
_panel
anchors.fill
:
parent
...
...
@@ -218,6 +221,33 @@ QGCView {
}
}
Row
{
id
:
singleMultiSelector
anchors.topMargin
:
ScreenTools
.
toolbarHeight
+
_margins
anchors.rightMargin
:
_margins
anchors.right
:
parent
.
right
anchors.top
:
parent
.
top
spacing
:
ScreenTools
.
defaultFontPixelWidth
z
:
_panel
.
z
+
4
visible
:
QGroundControl
.
multiVehicleManager
.
vehicles
.
count
>
1
ExclusiveGroup
{
id
:
multiVehicleSelectorGroup
}
QGCRadioButton
{
id
:
singleVehicleView
exclusiveGroup
:
multiVehicleSelectorGroup
text
:
qsTr
(
"
Single
"
)
checked
:
true
color
:
mapPal
.
text
}
QGCRadioButton
{
exclusiveGroup
:
multiVehicleSelectorGroup
text
:
qsTr
(
"
Multi-Vehicle (WIP)
"
)
color
:
mapPal
.
text
}
}
FlightDisplayViewWidgets
{
id
:
flightDisplayViewWidgets
z
:
_panel
.
z
+
4
...
...
@@ -227,8 +257,20 @@ QGCView {
anchors.bottom
:
parent
.
bottom
qgcView
:
root
isBackgroundDark
:
root
.
isBackgroundDark
visible
:
singleVehicleView
.
checked
}
MultiVehicleList
{
anchors.margins
:
_margins
anchors.top
:
singleMultiSelector
.
bottom
anchors.right
:
parent
.
right
anchors.bottom
:
parent
.
bottom
width
:
ScreenTools
.
defaultFontPixelWidth
*
30
visible
:
!
singleVehicleView
.
checked
z
:
_panel
.
z
+
4
}
//-- Virtual Joystick
Loader
{
id
:
virtualJoystickMultiTouch
...
...
src/FlightDisplay/MultiVehicleList.qml
0 → 100644
View file @
360cc7c6
/****************************************************************************
*
* (c) 2009-2016 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
*
* QGroundControl is licensed according to the terms in the file
* COPYING.md in the root of the source code directory.
*
****************************************************************************/
import
QtQuick
2.4
import
QtQuick
.
Controls
1.3
import
QtQuick
.
Layouts
1.2
import
QGroundControl
1.0
import
QGroundControl
.
ScreenTools
1.0
import
QGroundControl
.
Controls
1.0
import
QGroundControl
.
Palette
1.0
import
QGroundControl
.
Vehicle
1.0
import
QGroundControl
.
FlightMap
1.0
QGCListView
{
id
:
missionItemEditorListView
spacing
:
ScreenTools
.
defaultFontPixelHeight
/
2
orientation
:
ListView
.
Vertical
model
:
QGroundControl
.
multiVehicleManager
.
vehicles
cacheBuffer
:
_cacheBuffer
<
0
?
0
:
_cacheBuffer
clip
:
true
property
real
_margin
:
ScreenTools
.
defaultFontPixelWidth
/
2
property
real
_cacheBuffer
:
height
*
2
property
real
_widgetHeight
:
ScreenTools
.
defaultFontPixelHeight
*
3
delegate
:
Rectangle
{
width
:
parent
.
width
height
:
innerColumn
.
y
+
innerColumn
.
height
+
_margin
color
:
qgcPal
.
buttonHighlight
opacity
:
0.8
radius
:
_margin
property
var
_vehicle
:
object
property
color
_textColor
:
"
black
"
QGCPalette
{
id
:
qgcPal
}
Row
{
id
:
widgetLayout
anchors.margins
:
_margin
anchors.top
:
parent
.
top
anchors.right
:
parent
.
right
spacing
:
ScreenTools
.
defaultFontPixelWidth
/
2
layoutDirection
:
Qt
.
RightToLeft
QGCCompassWidget
{
size
:
_widgetHeight
active
:
true
heading
:
_vehicle
.
heading
.
rawValue
}
QGCAttitudeWidget
{
size
:
_widgetHeight
active
:
true
rollAngle
:
_vehicle
.
roll
.
rawValue
pitchAngle
:
_vehicle
.
pitch
.
rawValue
}
}
RowLayout
{
anchors.top
:
widgetLayout
.
top
anchors.bottom
:
widgetLayout
.
bottom
anchors.left
:
parent
.
left
anchors.right
:
widgetLayout
.
left
spacing
:
ScreenTools
.
defaultFontPixelWidth
/
2
QGCLabel
{
Layout.alignment
:
Qt
.
AlignTop
text
:
_vehicle
.
id
color
:
_textColor
}
QGCLabel
{
text
:
_vehicle
.
flightMode
font.pointSize
:
ScreenTools
.
largeFontPointSize
color
:
_textColor
}
}
Column
{
id
:
innerColumn
anchors.margins
:
_margin
anchors.left
:
parent
.
left
anchors.right
:
parent
.
right
anchors.top
:
widgetLayout
.
bottom
spacing
:
_margin
Rectangle
{
anchors.left
:
parent
.
left
anchors.right
:
parent
.
right
height
:
5
color
:
"
green
"
}
Row
{
spacing
:
ScreenTools
.
defaultFontPixelWidth
QGCButton
{
text
:
"
Arm
"
visible
:
!
_vehicle
.
armed
onClicked
:
_vehicle
.
armed
=
true
}
QGCButton
{
text
:
"
Start
"
visible
:
_vehicle
.
armed
&&
_vehicle
.
flightMode
!=
_vehicle
.
missionFlightMode
onClicked
:
_vehicle
.
flightMode
=
_vehicle
.
missionFlightMode
}
QGCButton
{
text
:
"
Stop
"
visible
:
_vehicle
.
armed
&&
_vehicle
.
pauseVehicleSupported
onClicked
:
_vehicle
.
pauseVehicle
()
}
QGCButton
{
text
:
"
RTL
"
visible
:
_vehicle
.
armed
&&
_vehicle
.
flightMode
!=
_vehicle
.
rtlFlightMode
onClicked
:
_vehicle
.
flightMode
=
_vehicle
.
rtlFlightMode
}
QGCButton
{
text
:
"
Take control
"
visible
:
_vehicle
.
armed
&&
_vehicle
.
flightMode
!=
_vehicle
.
takeControlFlightMode
onClicked
:
_vehicle
.
flightMode
=
_vehicle
.
takeControlFlightMode
}
}
}
}
}
// QGCListView
src/FlightDisplay/qmldir
View file @
360cc7c6
...
...
@@ -4,4 +4,5 @@ FlightDisplayView 1.0 FlightDisplayView.qml
FlightDisplayViewMap 1.0 FlightDisplayViewMap.qml
FlightDisplayViewVideo 1.0 FlightDisplayViewVideo.qml
FlightDisplayViewWidgets 1.0 FlightDisplayViewWidgets.qml
MultiVehicleList 1.0 MultiVehicleList.qml
src/MissionManager/GeoFenceController.cc
View file @
360cc7c6
...
...
@@ -48,7 +48,19 @@ void GeoFenceController::start(bool editMode)
qCDebug
(
GeoFenceControllerLog
)
<<
"start editMode"
<<
editMode
;
PlanElementController
::
start
(
editMode
);
_init
();
}
void
GeoFenceController
::
startStaticActiveVehicle
(
Vehicle
*
vehicle
)
{
qCDebug
(
GeoFenceControllerLog
)
<<
"startStaticActiveVehicle"
;
PlanElementController
::
startStaticActiveVehicle
(
vehicle
);
_init
();
}
void
GeoFenceController
::
_init
(
void
)
{
connect
(
&
_polygon
,
&
QGCMapPolygon
::
dirtyChanged
,
this
,
&
GeoFenceController
::
_polygonDirtyChanged
);
}
...
...
src/MissionManager/GeoFenceController.h
View file @
360cc7c6
...
...
@@ -50,17 +50,18 @@ public:
Q_PROPERTY(bool breachReturnSupported READ breachReturnSupported NOTIFY breachReturnSupportedChanged)
#endif
void
start
(
bool
editMode
)
final
;
void
loadFromVehicle
(
void
)
final
;
void
sendToVehicle
(
void
)
final
;
void
loadFromFilePicker
(
void
)
final
;
void
loadFromFile
(
const
QString
&
filename
)
final
;
void
saveToFilePicker
(
void
)
final
;
void
saveToFile
(
const
QString
&
filename
)
final
;
void
removeAll
(
void
)
final
;
bool
syncInProgress
(
void
)
const
final
;
bool
dirty
(
void
)
const
final
;
void
setDirty
(
bool
dirty
)
final
;
void
start
(
bool
editMode
)
final
;
void
startStaticActiveVehicle
(
Vehicle
*
vehicle
)
final
;
void
loadFromVehicle
(
void
)
final
;
void
sendToVehicle
(
void
)
final
;
void
loadFromFilePicker
(
void
)
final
;
void
loadFromFile
(
const
QString
&
filename
)
final
;
void
saveToFilePicker
(
void
)
final
;
void
saveToFile
(
const
QString
&
filename
)
final
;
void
removeAll
(
void
)
final
;
bool
syncInProgress
(
void
)
const
final
;
bool
dirty
(
void
)
const
final
;
void
setDirty
(
bool
dirty
)
final
;
QString
fileExtension
(
void
)
const
final
;
...
...
@@ -96,6 +97,7 @@ private slots:
void
_loadComplete
(
const
QGeoCoordinate
&
breachReturn
,
const
QList
<
QGeoCoordinate
>&
polygon
);
private:
void
_init
(
void
);
void
_signalAll
(
void
);
bool
_loadJsonFile
(
QJsonDocument
&
jsonDoc
,
QString
&
errorString
);
...
...
src/MissionManager/MissionController.cc
View file @
360cc7c6
...
...
@@ -66,7 +66,19 @@ void MissionController::start(bool editMode)
qCDebug
(
MissionControllerLog
)
<<
"start editMode"
<<
editMode
;
PlanElementController
::
start
(
editMode
);
_init
();
}
void
MissionController
::
startStaticActiveVehicle
(
Vehicle
*
vehicle
)
{
qCDebug
(
MissionControllerLog
)
<<
"startStaticActiveVehicle"
;
PlanElementController
::
startStaticActiveVehicle
(
vehicle
);
_init
();
}
void
MissionController
::
_init
(
void
)
{
// We start with an empty mission
_visualItems
=
new
QmlObjectListModel
(
this
);
_addPlannedHomePosition
(
_visualItems
,
false
/* addToCenter */
);
...
...
src/MissionManager/MissionController.h
View file @
360cc7c6
...
...
@@ -57,17 +57,18 @@ public:
Q_INVOKABLE
int
insertComplexMissionItem
(
QGeoCoordinate
coordinate
,
int
i
);
// Overrides from PlanElementController
void
start
(
bool
editMode
)
final
;
void
loadFromVehicle
(
void
)
final
;
void
sendToVehicle
(
void
)
final
;
void
loadFromFilePicker
(
void
)
final
;
void
loadFromFile
(
const
QString
&
filename
)
final
;
void
saveToFilePicker
(
void
)
final
;
void
saveToFile
(
const
QString
&
filename
)
final
;
void
removeAll
(
void
)
final
;
bool
syncInProgress
(
void
)
const
final
;
bool
dirty
(
void
)
const
final
;
void
setDirty
(
bool
dirty
)
final
;
void
start
(
bool
editMode
)
final
;
void
startStaticActiveVehicle
(
Vehicle
*
vehicle
)
final
;
void
loadFromVehicle
(
void
)
final
;
void
sendToVehicle
(
void
)
final
;
void
loadFromFilePicker
(
void
)
final
;
void
loadFromFile
(
const
QString
&
filename
)
final
;
void
saveToFilePicker
(
void
)
final
;
void
saveToFile
(
const
QString
&
filename
)
final
;
void
removeAll
(
void
)
final
;
bool
syncInProgress
(
void
)
const
final
;
bool
dirty
(
void
)
const
final
;
void
setDirty
(
bool
dirty
)
final
;
QString
fileExtension
(
void
)
const
final
;
...
...
@@ -112,6 +113,7 @@ private slots:
void
_homeCoordinateChanged
(
void
);
private:
void
_init
(
void
);
void
_recalcSequence
(
void
);
void
_recalcChildItems
(
void
);
void
_recalcAll
(
void
);
...
...
src/MissionManager/PlanElementController.cc
View file @
360cc7c6
...
...
@@ -32,6 +32,12 @@ void PlanElementController::start(bool editMode)
_activeVehicleChanged
(
_multiVehicleMgr
->
activeVehicle
());
}
void
PlanElementController
::
startStaticActiveVehicle
(
Vehicle
*
vehicle
)
{
_editMode
=
false
;
_activeVehicleChanged
(
vehicle
);
}
void
PlanElementController
::
_activeVehicleChanged
(
Vehicle
*
activeVehicle
)
{
if
(
_activeVehicle
)
{
...
...
src/MissionManager/PlanElementController.h
View file @
360cc7c6
...
...
@@ -39,6 +39,10 @@ public:
/// @param editMode true: controller being used in Plan view, false: controller being used in Fly view
Q_INVOKABLE
virtual
void
start
(
bool
editMode
);
/// Starts the controller using a single static active vehicle. Will not track global active vehicle changes.
/// @param editMode true: controller being used in Plan view, false: controller being used in Fly view
Q_INVOKABLE
virtual
void
startStaticActiveVehicle
(
Vehicle
*
vehicle
);
Q_INVOKABLE
virtual
void
loadFromVehicle
(
void
)
=
0
;
Q_INVOKABLE
virtual
void
sendToVehicle
(
void
)
=
0
;
Q_INVOKABLE
virtual
void
loadFromFilePicker
(
void
)
=
0
;
...
...
Prev
1
2
Next
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment