Commit f3aa6560 authored by Gus Grubba's avatar Gus Grubba

Merge branch 'master' of https://github.com/mavlink/qgroundcontrol into resetParametersMessage

parents 4b868491 a573371c
......@@ -78,22 +78,9 @@ WindowsBuild {
ReleaseBuild {
# Copy Visual Studio DLLs
# Note that this is only done for release because the debugging versions of these DLLs cannot be redistributed.
win32-msvc2010 {
QMAKE_POST_LINK += $$escape_expand(\\n) $$QMAKE_COPY \"C:\\Windows\\System32\\msvcp100.dll\" \"$$DESTDIR_WIN\"
QMAKE_POST_LINK += $$escape_expand(\\n) $$QMAKE_COPY \"C:\\Windows\\System32\\msvcr100.dll\" \"$$DESTDIR_WIN\"
} else:win32-msvc2012 {
QMAKE_POST_LINK += $$escape_expand(\\n) $$QMAKE_COPY \"C:\\Windows\\System32\\msvcp110.dll\" \"$$DESTDIR_WIN\"
QMAKE_POST_LINK += $$escape_expand(\\n) $$QMAKE_COPY \"C:\\Windows\\System32\\msvcr110.dll\" \"$$DESTDIR_WIN\"
} else:win32-msvc2013 {
QMAKE_POST_LINK += $$escape_expand(\\n) $$QMAKE_COPY \"C:\\Windows\\System32\\msvcp120.dll\" \"$$DESTDIR_WIN\"
QMAKE_POST_LINK += $$escape_expand(\\n) $$QMAKE_COPY \"C:\\Windows\\System32\\msvcr120.dll\" \"$$DESTDIR_WIN\"
} else:win32-msvc2015 {
win32-msvc2015 {
QMAKE_POST_LINK += $$escape_expand(\\n) $$QMAKE_COPY \"C:\\Windows\\System32\\msvcp140.dll\" \"$$DESTDIR_WIN\"
QMAKE_POST_LINK += $$escape_expand(\\n) $$QMAKE_COPY \"C:\\Windows\\System32\\vcruntime140.dll\" \"$$DESTDIR_WIN\"
} else {
error("Visual studio version not supported, installation cannot be completed.")
}
......
Subproject commit 18cf6ff2fc0e51e4555b19fc31e8b06eb38bdd79
Subproject commit 2a9615b7a28fe63b3f422116e2c0f75d43b1fa71
......@@ -31,16 +31,17 @@ PX4AdvancedFlightModesController::PX4AdvancedFlightModesController(void) :
_returnModeSelected(false),
_offboardModeSelected(false)
{
QStringList usedParams;
usedParams << "RC_MAP_THROTTLE" << "RC_MAP_YAW" << "RC_MAP_PITCH" << "RC_MAP_ROLL" << "RC_MAP_FLAPS" << "RC_MAP_AUX1" << "RC_MAP_AUX2" <<
"RC_MAP_MODE_SW" << "RC_MAP_RETURN_SW" << "RC_MAP_LOITER_SW" << "RC_MAP_POSCTL_SW" << "RC_MAP_OFFB_SW" << "RC_MAP_ACRO_SW";
QStringList usedParams = QStringList({
"RC_MAP_THROTTLE", "RC_MAP_YAW", "RC_MAP_PITCH", "RC_MAP_ROLL", "RC_MAP_FLAPS", "RC_MAP_AUX1", "RC_MAP_AUX2",
"RC_MAP_MODE_SW", "RC_MAP_RETURN_SW", "RC_MAP_LOITER_SW", "RC_MAP_POSCTL_SW", "RC_MAP_OFFB_SW", "RC_MAP_ACRO_SW"});
if (!_allParametersExists(FactSystem::defaultComponentId, usedParams)) {
return;
}
_init();
_validateConfiguration();
connect(_vehicle, &Vehicle::rcChannelsChanged, this, &PX4AdvancedFlightModesController::_rcChannelsChanged);
}
......@@ -96,20 +97,17 @@ void PX4AdvancedFlightModesController::_init(void)
// Auto mode is visible if Mission/Loiter are on separate channel from main Mode switch
_autoModeVisible = loiterChannel != modeChannel;
}
// Setup the channel combobox model
QList<int> usedChannels;
QStringList attitudeParams;
attitudeParams << "RC_MAP_THROTTLE" << "RC_MAP_YAW" << "RC_MAP_PITCH" << "RC_MAP_ROLL" << "RC_MAP_FLAPS" << "RC_MAP_AUX1" << "RC_MAP_AUX2";
foreach(const QString &attitudeParam, attitudeParams) {
QVector<int> usedChannels;
for (const QString &attitudeParam : {"RC_MAP_THROTTLE", "RC_MAP_YAW", "RC_MAP_PITCH", "RC_MAP_ROLL", "RC_MAP_FLAPS", "RC_MAP_AUX1", "RC_MAP_AUX2"}) {
int channel = getParameterFact(-1, attitudeParam)->rawValue().toInt();
if (channel != 0) {
usedChannels << channel;
}
}
_channelListModel << "Disabled";
_channelListModelChannel << 0;
for (int channel=1; channel<=_channelCount; channel++) {
......@@ -140,13 +138,11 @@ void PX4AdvancedFlightModesController::_validateConfiguration(void)
_validConfiguration = true;
// Make sure switches are valid and within channel range
QStringList switchParams;
const QStringList switchParams = {"RC_MAP_MODE_SW", "RC_MAP_ACRO_SW", "RC_MAP_POSCTL_SW", "RC_MAP_LOITER_SW", "RC_MAP_RETURN_SW", "RC_MAP_OFFB_SW"};
QList<int> switchMappings;
switchParams << "RC_MAP_MODE_SW" << "RC_MAP_ACRO_SW" << "RC_MAP_POSCTL_SW" << "RC_MAP_LOITER_SW" << "RC_MAP_RETURN_SW" << "RC_MAP_OFFB_SW";
for(int i=0; i<switchParams.count(); i++) {
for(int i=0, end = switchParams.count(); i < end; i++) {
int map = getParameterFact(FactSystem::defaultComponentId, switchParams[i])->rawValue().toInt();
switchMappings << map;
......@@ -157,16 +153,16 @@ void PX4AdvancedFlightModesController::_validateConfiguration(void)
}
// Make sure mode switches are not double-mapped
QStringList attitudeParams;
attitudeParams << "RC_MAP_THROTTLE" << "RC_MAP_YAW" << "RC_MAP_PITCH" << "RC_MAP_ROLL" << "RC_MAP_FLAPS" << "RC_MAP_AUX1" << "RC_MAP_AUX2";
for (int i=0; i<attitudeParams.count(); i++) {
const QStringList attitudeParams = {"RC_MAP_THROTTLE", "RC_MAP_YAW", "RC_MAP_PITCH", "RC_MAP_ROLL", "RC_MAP_FLAPS", "RC_MAP_AUX1", "RC_MAP_AUX2"};
for (int i=0, end = attitudeParams.count(); i < end; i++) {
int map = getParameterFact(FactSystem::defaultComponentId, attitudeParams[i])->rawValue().toInt();
if (map == 0) {
continue;
}
for (int j=0; j<switchParams.count(); j++) {
if (map != 0 && map == switchMappings[j]) {
if (map == switchMappings[j]) {
_validConfiguration = false;
_configurationErrors += tr("%1 is set to same channel as %2.\n").arg(switchParams[j], attitudeParams[i]);
}
......@@ -174,12 +170,7 @@ void PX4AdvancedFlightModesController::_validateConfiguration(void)
}
// Validate thresholds within range
QStringList thresholdParams;
thresholdParams << "RC_ASSIST_TH" << "RC_AUTO_TH" << "RC_ACRO_TH" << "RC_POSCTL_TH" << "RC_LOITER_TH" << "RC_RETURN_TH" << "RC_OFFB_TH";
foreach(const QString &thresholdParam, thresholdParams) {
for(const QString &thresholdParam : {"RC_ASSIST_TH", "RC_AUTO_TH", "RC_ACRO_TH", "RC_POSCTL_TH", "RC_LOITER_TH", "RC_RETURN_TH", "RC_OFFB_TH"}) {
float threshold = getParameterFact(-1, thresholdParam)->rawValue().toFloat();
if (threshold < 0.0f || threshold > 1.0f) {
_validConfiguration = false;
......
......@@ -43,25 +43,19 @@ bool PX4RadioComponent::setupComplete(void) const
if (_vehicle->parameterManager()->getParameter(-1, "COM_RC_IN_MODE")->rawValue().toInt() != 1) {
// The best we can do to detect the need for a radio calibration is look for attitude
// controls to be mapped.
QStringList attitudeMappings;
attitudeMappings << "RC_MAP_ROLL" << "RC_MAP_PITCH" << "RC_MAP_YAW" << "RC_MAP_THROTTLE";
foreach(const QString &mapParam, attitudeMappings) {
for(const QString &mapParam : {"RC_MAP_ROLL", "RC_MAP_PITCH", "RC_MAP_YAW", "RC_MAP_THROTTLE"}) {
if (_vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, mapParam)->rawValue().toInt() == 0) {
return false;
}
}
}
return true;
}
QStringList PX4RadioComponent::setupCompleteChangedTriggerList(void) const
{
QStringList triggers;
triggers << "COM_RC_IN_MODE" << "RC_MAP_ROLL" << "RC_MAP_PITCH" << "RC_MAP_YAW" << "RC_MAP_THROTTLE";
return triggers;
return {"COM_RC_IN_MODE", "RC_MAP_ROLL", "RC_MAP_PITCH", "RC_MAP_YAW", "RC_MAP_THROTTLE"};
}
QUrl PX4RadioComponent::setupSource(void) const
......
......@@ -49,10 +49,7 @@ bool PowerComponent::setupComplete(void) const
QStringList PowerComponent::setupCompleteChangedTriggerList(void) const
{
QStringList triggerList;
triggerList << "BAT_V_CHARGED" << "BAT_V_EMPTY" << "BAT_N_CELLS";
return triggerList;
return {"BAT_V_CHARGED", "BAT_V_EMPTY", "BAT_N_CELLS"};
}
QUrl PowerComponent::setupSource(void) const
......
......@@ -26,7 +26,7 @@ SensorsComponent::SensorsComponent(Vehicle* vehicle, AutoPilotPlugin* autopilot,
VehicleComponent(vehicle, autopilot, parent),
_name(tr("Sensors"))
{
_deviceIds << QStringLiteral("CAL_GYRO0_ID") << QStringLiteral("CAL_ACC0_ID");
_deviceIds = QStringList({QStringLiteral("CAL_GYRO0_ID"), QStringLiteral("CAL_ACC0_ID") });
}
QString SensorsComponent::name(void) const
......
......@@ -1285,27 +1285,13 @@ QMap<QString, FactMetaData*> FactMetaData::createMapFromJsonArray(const QJsonArr
QVariant FactMetaData::cookedMax(void) const
{
// We have to be careful with cooked min/max. Running the raw values through the translator could flip min and max.
QVariant cookedMax = _rawTranslator(_rawMax);
QVariant cookedMin = _rawTranslator(_rawMin);
if (cookedMax < cookedMin) {
// We need to flip
return cookedMin;
} else {
return cookedMax;
}
return qMax(_rawTranslator(_rawMax), _rawTranslator(_rawMin));
}
QVariant FactMetaData::cookedMin(void) const
{
// We have to be careful with cooked min/max. Running the raw values through the translator could flip min and max.
QVariant cookedMax = _rawTranslator(_rawMax);
QVariant cookedMin = _rawTranslator(_rawMin);
if (cookedMax < cookedMin) {
// We need to flip
return cookedMax;
} else {
return cookedMin;
}
return qMin(_rawTranslator(_rawMax), _rawTranslator(_rawMin));
}
void FactMetaData::setVolatileValue(bool bValue)
......
......@@ -722,41 +722,39 @@ void APMFirmwarePlugin::addMetaDataToFact(QObject* parameterMetaData, Fact* fact
QList<MAV_CMD> APMFirmwarePlugin::supportedMissionCommands(void)
{
QList<MAV_CMD> list;
list << MAV_CMD_NAV_WAYPOINT
<< MAV_CMD_NAV_LOITER_UNLIM << MAV_CMD_NAV_LOITER_TURNS << MAV_CMD_NAV_LOITER_TIME
<< MAV_CMD_NAV_RETURN_TO_LAUNCH << MAV_CMD_NAV_LAND << MAV_CMD_NAV_TAKEOFF
<< MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT
<< MAV_CMD_NAV_LOITER_TO_ALT
<< MAV_CMD_NAV_SPLINE_WAYPOINT
<< MAV_CMD_NAV_GUIDED_ENABLE
<< MAV_CMD_NAV_DELAY
<< MAV_CMD_CONDITION_DELAY << MAV_CMD_CONDITION_DISTANCE << MAV_CMD_CONDITION_YAW
<< MAV_CMD_DO_SET_MODE
<< MAV_CMD_DO_JUMP
<< MAV_CMD_DO_CHANGE_SPEED
<< MAV_CMD_DO_SET_HOME
<< MAV_CMD_DO_SET_RELAY << MAV_CMD_DO_REPEAT_RELAY
<< MAV_CMD_DO_SET_SERVO << MAV_CMD_DO_REPEAT_SERVO
<< MAV_CMD_DO_LAND_START
<< MAV_CMD_DO_SET_ROI
<< MAV_CMD_DO_DIGICAM_CONFIGURE << MAV_CMD_DO_DIGICAM_CONTROL
<< MAV_CMD_DO_MOUNT_CONTROL
<< MAV_CMD_DO_SET_CAM_TRIGG_DIST
<< MAV_CMD_DO_FENCE_ENABLE
<< MAV_CMD_DO_PARACHUTE
<< MAV_CMD_DO_INVERTED_FLIGHT
<< MAV_CMD_DO_GRIPPER
<< MAV_CMD_DO_GUIDED_LIMITS
<< MAV_CMD_DO_AUTOTUNE_ENABLE
<< MAV_CMD_NAV_VTOL_TAKEOFF << MAV_CMD_NAV_VTOL_LAND << MAV_CMD_DO_VTOL_TRANSITION;
return {
MAV_CMD_NAV_WAYPOINT,
MAV_CMD_NAV_LOITER_UNLIM, MAV_CMD_NAV_LOITER_TURNS, MAV_CMD_NAV_LOITER_TIME,
MAV_CMD_NAV_RETURN_TO_LAUNCH, MAV_CMD_NAV_LAND, MAV_CMD_NAV_TAKEOFF,
MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT,
MAV_CMD_NAV_LOITER_TO_ALT,
MAV_CMD_NAV_SPLINE_WAYPOINT,
MAV_CMD_NAV_GUIDED_ENABLE,
MAV_CMD_NAV_DELAY,
MAV_CMD_CONDITION_DELAY, MAV_CMD_CONDITION_DISTANCE, MAV_CMD_CONDITION_YAW,
MAV_CMD_DO_SET_MODE,
MAV_CMD_DO_JUMP,
MAV_CMD_DO_CHANGE_SPEED,
MAV_CMD_DO_SET_HOME,
MAV_CMD_DO_SET_RELAY, MAV_CMD_DO_REPEAT_RELAY,
MAV_CMD_DO_SET_SERVO, MAV_CMD_DO_REPEAT_SERVO,
MAV_CMD_DO_LAND_START,
MAV_CMD_DO_SET_ROI,
MAV_CMD_DO_DIGICAM_CONFIGURE, MAV_CMD_DO_DIGICAM_CONTROL,
MAV_CMD_DO_MOUNT_CONTROL,
MAV_CMD_DO_SET_CAM_TRIGG_DIST,
MAV_CMD_DO_FENCE_ENABLE,
MAV_CMD_DO_PARACHUTE,
MAV_CMD_DO_INVERTED_FLIGHT,
MAV_CMD_DO_GRIPPER,
MAV_CMD_DO_GUIDED_LIMITS,
MAV_CMD_DO_AUTOTUNE_ENABLE,
MAV_CMD_NAV_VTOL_TAKEOFF, MAV_CMD_NAV_VTOL_LAND, MAV_CMD_DO_VTOL_TRANSITION,
#if 0
// Waiting for module update
<< MAV_CMD_DO_SET_REVERSE;
MAV_CMD_DO_SET_REVERSE,
#endif
return list;
};
}
QString APMFirmwarePlugin::missionCommandOverrides(MAV_TYPE vehicleType) const
......
......@@ -22,54 +22,52 @@ FirmwarePlugin::remapParamNameMajorVersionMap_t ArduCopterFirmwarePlugin::_remap
APMCopterMode::APMCopterMode(uint32_t mode, bool settable) :
APMCustomMode(mode, settable)
{
QMap<uint32_t,QString> enumToString;
enumToString.insert(STABILIZE, "Stabilize");
enumToString.insert(ACRO, "Acro");
enumToString.insert(ALT_HOLD, "Altitude Hold");
enumToString.insert(AUTO, "Auto");
enumToString.insert(GUIDED, "Guided");
enumToString.insert(LOITER, "Loiter");
enumToString.insert(RTL, "RTL");
enumToString.insert(CIRCLE, "Circle");
enumToString.insert(LAND, "Land");
enumToString.insert(DRIFT, "Drift");
enumToString.insert(SPORT, "Sport");
enumToString.insert(FLIP, "Flip");
enumToString.insert(AUTOTUNE, "Autotune");
enumToString.insert(POS_HOLD, "Position Hold");
enumToString.insert(BRAKE, "Brake");
enumToString.insert(THROW, "Throw");
enumToString.insert(AVOID_ADSB, "Avoid ADSB");
enumToString.insert(GUIDED_NOGPS, "Guided No GPS");
enumToString.insert(SAFE_RTL, "Smart RTL");
setEnumToStringMapping(enumToString);
setEnumToStringMapping({
{STABILIZE, "Stabilize"},
{ACRO, "Acro"},
{ALT_HOLD, "Altitude Hold"},
{AUTO, "Auto"},
{GUIDED, "Guided"},
{LOITER, "Loiter"},
{RTL, "RTL"},
{CIRCLE, "Circle"},
{LAND, "Land"},
{DRIFT, "Drift"},
{SPORT, "Sport"},
{FLIP, "Flip"},
{AUTOTUNE, "Autotune"},
{POS_HOLD, "Position Hold"},
{BRAKE, "Brake"},
{THROW, "Throw"},
{AVOID_ADSB, "Avoid ADSB"},
{GUIDED_NOGPS, "Guided No GPS"},
{SAFE_RTL, "Smart RTL"},
});
}
ArduCopterFirmwarePlugin::ArduCopterFirmwarePlugin(void)
{
QList<APMCustomMode> supportedFlightModes;
supportedFlightModes << APMCopterMode(APMCopterMode::STABILIZE ,true);
supportedFlightModes << APMCopterMode(APMCopterMode::ACRO ,true);
supportedFlightModes << APMCopterMode(APMCopterMode::ALT_HOLD ,true);
supportedFlightModes << APMCopterMode(APMCopterMode::AUTO ,true);
supportedFlightModes << APMCopterMode(APMCopterMode::GUIDED ,true);
supportedFlightModes << APMCopterMode(APMCopterMode::LOITER ,true);
supportedFlightModes << APMCopterMode(APMCopterMode::RTL ,true);
supportedFlightModes << APMCopterMode(APMCopterMode::CIRCLE ,true);
supportedFlightModes << APMCopterMode(APMCopterMode::LAND ,true);
supportedFlightModes << APMCopterMode(APMCopterMode::DRIFT ,true);
supportedFlightModes << APMCopterMode(APMCopterMode::SPORT ,true);
supportedFlightModes << APMCopterMode(APMCopterMode::FLIP ,true);
supportedFlightModes << APMCopterMode(APMCopterMode::AUTOTUNE ,true);
supportedFlightModes << APMCopterMode(APMCopterMode::POS_HOLD ,true);
supportedFlightModes << APMCopterMode(APMCopterMode::BRAKE ,true);
supportedFlightModes << APMCopterMode(APMCopterMode::THROW ,true);
supportedFlightModes << APMCopterMode(APMCopterMode::AVOID_ADSB,true);
supportedFlightModes << APMCopterMode(APMCopterMode::GUIDED_NOGPS,true);
supportedFlightModes << APMCopterMode(APMCopterMode::SAFE_RTL,true);
setSupportedModes(supportedFlightModes);
setSupportedModes({
APMCopterMode(APMCopterMode::STABILIZE ,true),
APMCopterMode(APMCopterMode::ACRO ,true),
APMCopterMode(APMCopterMode::ALT_HOLD ,true),
APMCopterMode(APMCopterMode::AUTO ,true),
APMCopterMode(APMCopterMode::GUIDED ,true),
APMCopterMode(APMCopterMode::LOITER ,true),
APMCopterMode(APMCopterMode::RTL ,true),
APMCopterMode(APMCopterMode::CIRCLE ,true),
APMCopterMode(APMCopterMode::LAND ,true),
APMCopterMode(APMCopterMode::DRIFT ,true),
APMCopterMode(APMCopterMode::SPORT ,true),
APMCopterMode(APMCopterMode::FLIP ,true),
APMCopterMode(APMCopterMode::AUTOTUNE ,true),
APMCopterMode(APMCopterMode::POS_HOLD ,true),
APMCopterMode(APMCopterMode::BRAKE ,true),
APMCopterMode(APMCopterMode::THROW ,true),
APMCopterMode(APMCopterMode::AVOID_ADSB,true),
APMCopterMode(APMCopterMode::GUIDED_NOGPS,true),
APMCopterMode(APMCopterMode::SAFE_RTL,true),
});
if (!_remapParamNameIntialized) {
FirmwarePlugin::remapParamNameMap_t& remapV3_6 = _remapParamName[3][6];
......
......@@ -15,53 +15,52 @@ FirmwarePlugin::remapParamNameMajorVersionMap_t ArduPlaneFirmwarePlugin::_remapP
APMPlaneMode::APMPlaneMode(uint32_t mode, bool settable)
: APMCustomMode(mode, settable)
{
QMap<uint32_t,QString> enumToString;
enumToString.insert(MANUAL, "Manual");
enumToString.insert(CIRCLE, "Circle");
enumToString.insert(STABILIZE, "Stabilize");
enumToString.insert(TRAINING, "Training");
enumToString.insert(ACRO, "Acro");
enumToString.insert(FLY_BY_WIRE_A, "FBW A");
enumToString.insert(FLY_BY_WIRE_B, "FBW B");
enumToString.insert(CRUISE, "Cruise");
enumToString.insert(AUTOTUNE, "Autotune");
enumToString.insert(AUTO, "Auto");
enumToString.insert(RTL, "RTL");
enumToString.insert(LOITER, "Loiter");
enumToString.insert(GUIDED, "Guided");
enumToString.insert(INITIALIZING, "Initializing");
enumToString.insert(QSTABILIZE, "QuadPlane Stabilize");
enumToString.insert(QHOVER, "QuadPlane Hover");
enumToString.insert(QLOITER, "QuadPlane Loiter");
enumToString.insert(QLAND, "QuadPlane Land");
enumToString.insert(QRTL, "QuadPlane RTL");
setEnumToStringMapping(enumToString);
setEnumToStringMapping({
{MANUAL, "Manual"},
{CIRCLE, "Circle"},
{STABILIZE, "Stabilize"},
{TRAINING, "Training"},
{ACRO, "Acro"},
{FLY_BY_WIRE_A, "FBW A"},
{FLY_BY_WIRE_B, "FBW B"},
{CRUISE, "Cruise"},
{AUTOTUNE, "Autotune"},
{AUTO, "Auto"},
{RTL, "RTL"},
{LOITER, "Loiter"},
{GUIDED, "Guided"},
{INITIALIZING, "Initializing"},
{QSTABILIZE, "QuadPlane Stabilize"},
{QHOVER, "QuadPlane Hover"},
{QLOITER, "QuadPlane Loiter"},
{QLAND, "QuadPlane Land"},
{QRTL, "QuadPlane RTL"},
});
}
ArduPlaneFirmwarePlugin::ArduPlaneFirmwarePlugin(void)
{
QList<APMCustomMode> supportedFlightModes;
supportedFlightModes << APMPlaneMode(APMPlaneMode::MANUAL ,true);
supportedFlightModes << APMPlaneMode(APMPlaneMode::CIRCLE ,true);
supportedFlightModes << APMPlaneMode(APMPlaneMode::STABILIZE ,true);
supportedFlightModes << APMPlaneMode(APMPlaneMode::TRAINING ,true);
supportedFlightModes << APMPlaneMode(APMPlaneMode::ACRO ,true);
supportedFlightModes << APMPlaneMode(APMPlaneMode::FLY_BY_WIRE_A ,true);
supportedFlightModes << APMPlaneMode(APMPlaneMode::FLY_BY_WIRE_B ,true);
supportedFlightModes << APMPlaneMode(APMPlaneMode::CRUISE ,true);
supportedFlightModes << APMPlaneMode(APMPlaneMode::AUTOTUNE ,true);
supportedFlightModes << APMPlaneMode(APMPlaneMode::AUTO ,true);
supportedFlightModes << APMPlaneMode(APMPlaneMode::RTL ,true);
supportedFlightModes << APMPlaneMode(APMPlaneMode::LOITER ,true);
supportedFlightModes << APMPlaneMode(APMPlaneMode::GUIDED ,true);
supportedFlightModes << APMPlaneMode(APMPlaneMode::INITIALIZING ,false);
supportedFlightModes << APMPlaneMode(APMPlaneMode::QSTABILIZE ,true);
supportedFlightModes << APMPlaneMode(APMPlaneMode::QHOVER ,true);
supportedFlightModes << APMPlaneMode(APMPlaneMode::QLOITER ,true);
supportedFlightModes << APMPlaneMode(APMPlaneMode::QLAND ,true);
supportedFlightModes << APMPlaneMode(APMPlaneMode::QRTL ,true);
setSupportedModes(supportedFlightModes);
setSupportedModes({
APMPlaneMode(APMPlaneMode::MANUAL ,true),
APMPlaneMode(APMPlaneMode::CIRCLE ,true),
APMPlaneMode(APMPlaneMode::STABILIZE ,true),
APMPlaneMode(APMPlaneMode::TRAINING ,true),
APMPlaneMode(APMPlaneMode::ACRO ,true),
APMPlaneMode(APMPlaneMode::FLY_BY_WIRE_A ,true),
APMPlaneMode(APMPlaneMode::FLY_BY_WIRE_B ,true),
APMPlaneMode(APMPlaneMode::CRUISE ,true),
APMPlaneMode(APMPlaneMode::AUTOTUNE ,true),
APMPlaneMode(APMPlaneMode::AUTO ,true),
APMPlaneMode(APMPlaneMode::RTL ,true),
APMPlaneMode(APMPlaneMode::LOITER ,true),
APMPlaneMode(APMPlaneMode::GUIDED ,true),
APMPlaneMode(APMPlaneMode::INITIALIZING ,false),
APMPlaneMode(APMPlaneMode::QSTABILIZE ,true),
APMPlaneMode(APMPlaneMode::QHOVER ,true),
APMPlaneMode(APMPlaneMode::QLOITER ,true),
APMPlaneMode(APMPlaneMode::QLAND ,true),
APMPlaneMode(APMPlaneMode::QRTL ,true),
});
if (!_remapParamNameIntialized) {
FirmwarePlugin::remapParamNameMap_t& remapV3_10 = _remapParamName[3][10];
......
......@@ -16,39 +16,38 @@ FirmwarePlugin::remapParamNameMajorVersionMap_t ArduRoverFirmwarePlugin::_remapP
APMRoverMode::APMRoverMode(uint32_t mode, bool settable)
: APMCustomMode(mode, settable)
{
QMap<uint32_t,QString> enumToString;
enumToString.insert(MANUAL, "Manual");
enumToString.insert(ACRO, "Acro");
enumToString.insert(STEERING, "Steering");
enumToString.insert(HOLD, "Hold");
enumToString.insert(LOITER, "Loiter");
enumToString.insert(FOLLOW, "Follow");
enumToString.insert(SIMPLE, "Simple");
enumToString.insert(AUTO, "Auto");
enumToString.insert(RTL, "RTL");
enumToString.insert(SMART_RTL, "Smart RTL");
enumToString.insert(GUIDED, "Guided");
enumToString.insert(INITIALIZING, "Initializing");
setEnumToStringMapping(enumToString);
setEnumToStringMapping({
{MANUAL, "Manual"},
{ACRO, "Acro"},
{STEERING, "Steering"},
{HOLD, "Hold"},
{LOITER, "Loiter"},
{FOLLOW, "Follow"},
{SIMPLE, "Simple"},
{AUTO, "Auto"},
{RTL, "RTL"},
{SMART_RTL, "Smart RTL"},
{GUIDED, "Guided"},
{INITIALIZING, "Initializing"},
});
}
ArduRoverFirmwarePlugin::ArduRoverFirmwarePlugin(void)
{
QList<APMCustomMode> supportedFlightModes;
supportedFlightModes << APMRoverMode(APMRoverMode::MANUAL ,true);
supportedFlightModes << APMRoverMode(APMRoverMode::ACRO ,true);
supportedFlightModes << APMRoverMode(APMRoverMode::STEERING ,true);
supportedFlightModes << APMRoverMode(APMRoverMode::HOLD ,true);
supportedFlightModes << APMRoverMode(APMRoverMode::LOITER ,true);
supportedFlightModes << APMRoverMode(APMRoverMode::FOLLOW ,true);
supportedFlightModes << APMRoverMode(APMRoverMode::SIMPLE ,true);
supportedFlightModes << APMRoverMode(APMRoverMode::AUTO ,true);
supportedFlightModes << APMRoverMode(APMRoverMode::RTL ,true);
supportedFlightModes << APMRoverMode(APMRoverMode::SMART_RTL ,true);
supportedFlightModes << APMRoverMode(APMRoverMode::GUIDED ,true);
supportedFlightModes << APMRoverMode(APMRoverMode::INITIALIZING ,false);
setSupportedModes(supportedFlightModes);
setSupportedModes({
APMRoverMode(APMRoverMode::MANUAL ,true),
APMRoverMode(APMRoverMode::ACRO ,true),
APMRoverMode(APMRoverMode::STEERING ,true),
APMRoverMode(APMRoverMode::HOLD ,true),
APMRoverMode(APMRoverMode::LOITER ,true),
APMRoverMode(APMRoverMode::FOLLOW ,true),
APMRoverMode(APMRoverMode::SIMPLE ,true),
APMRoverMode(APMRoverMode::AUTO ,true),
APMRoverMode(APMRoverMode::RTL ,true),
APMRoverMode(APMRoverMode::SMART_RTL ,true),
APMRoverMode(APMRoverMode::GUIDED ,true),
APMRoverMode(APMRoverMode::INITIALIZING ,false),
});
if (!_remapParamNameIntialized) {
FirmwarePlugin::remapParamNameMap_t& remapV3_5 = _remapParamName[3][5];
......
......@@ -32,34 +32,33 @@ FirmwarePlugin::remapParamNameMajorVersionMap_t ArduSubFirmwarePlugin::_remapPar
APMSubMode::APMSubMode(uint32_t mode, bool settable) :
APMCustomMode(mode, settable)
{
QMap<uint32_t,QString> enumToString;
enumToString.insert(MANUAL, "Manual");
enumToString.insert(STABILIZE, "Stabilize");
enumToString.insert(ACRO, "Acro");
enumToString.insert(ALT_HOLD, "Depth Hold");
enumToString.insert(AUTO, "Auto");
enumToString.insert(GUIDED, "Guided");
enumToString.insert(CIRCLE, "Circle");
enumToString.insert(SURFACE, "Surface");
enumToString.insert(POSHOLD, "Position Hold");
setEnumToStringMapping(enumToString);
setEnumToStringMapping({
{MANUAL, "Manual"},
{STABILIZE, "Stabilize"},
{ACRO, "Acro"},
{ALT_HOLD, "Depth Hold"},
{AUTO, "Auto"},
{GUIDED, "Guided"},
{CIRCLE, "Circle"},
{SURFACE, "Surface"},
{POSHOLD, "Position Hold"},
});
}
ArduSubFirmwarePlugin::ArduSubFirmwarePlugin(void):
_infoFactGroup(this)
{
QList<APMCustomMode> supportedFlightModes;
supportedFlightModes << APMSubMode(APMSubMode::MANUAL ,true);
supportedFlightModes << APMSubMode(APMSubMode::STABILIZE ,true);
supportedFlightModes << APMSubMode(APMSubMode::ACRO ,true);
supportedFlightModes << APMSubMode(APMSubMode::ALT_HOLD ,true);
supportedFlightModes << APMSubMode(APMSubMode::AUTO ,true);
supportedFlightModes << APMSubMode(APMSubMode::GUIDED ,true);
supportedFlightModes << APMSubMode(APMSubMode::CIRCLE ,true);
supportedFlightModes << APMSubMode(APMSubMode::SURFACE ,false);
supportedFlightModes << APMSubMode(APMSubMode::POSHOLD ,true);
setSupportedModes(supportedFlightModes);
setSupportedModes({
APMSubMode(APMSubMode::MANUAL ,true),
APMSubMode(APMSubMode::STABILIZE ,true),
APMSubMode(APMSubMode::ACRO ,true),
APMSubMode(APMSubMode::ALT_HOLD ,true),
APMSubMode(APMSubMode::AUTO ,true),
APMSubMode(APMSubMode::GUIDED ,true),
APMSubMode(APMSubMode::CIRCLE ,true),
APMSubMode(APMSubMode::SURFACE ,false),
APMSubMode(APMSubMode::POSHOLD ,true),
});
if (!_remapParamNameIntialized) {
FirmwarePlugin::remapParamNameMap_t& remapV3_5 = _remapParamName[3][5];
......@@ -134,34 +133,32 @@ ArduSubFirmwarePlugin::ArduSubFirmwarePlugin(void):
QList<MAV_CMD> ArduSubFirmwarePlugin::supportedMissionCommands(void)
{
QList<MAV_CMD> list;
list << MAV_CMD_NAV_WAYPOINT
<< MAV_CMD_NAV_RETURN_TO_LAUNCH
<< MAV_CMD_NAV_LAND
<< MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT
<< MAV_CMD_NAV_SPLINE_WAYPOINT
<< MAV_CMD_NAV_GUIDED_ENABLE
<< MAV_CMD_NAV_DELAY
<< MAV_CMD_CONDITION_DELAY << MAV_CMD_CONDITION_DISTANCE << MAV_CMD_CONDITION_YAW
<< MAV_CMD_DO_SET_MODE
<< MAV_CMD_DO_JUMP
<< MAV_CMD_DO_CHANGE_SPEED
<< MAV_CMD_DO_SET_HOME
<< MAV_CMD_DO_SET_RELAY << MAV_CMD_DO_REPEAT_RELAY
<< MAV_CMD_DO_SET_SERVO << MAV_CMD_DO_REPEAT_SERVO
<< MAV_CMD_DO_LAND_START
<< MAV_CMD_DO_SET_ROI
<< MAV_CMD_DO_DIGICAM_CONFIGURE << MAV_CMD_DO_DIGICAM_CONTROL
<< MAV_CMD_DO_MOUNT_CONTROL
<< MAV_CMD_DO_SET_CAM_TRIGG_DIST
<< MAV_CMD_DO_FENCE_ENABLE
<< MAV_CMD_DO_INVERTED_FLIGHT
<< MAV_CMD_DO_GRIPPER
<< MAV_CMD_DO_GUIDED_LIMITS
<< MAV_CMD_DO_AUTOTUNE_ENABLE;
return list;
return {
MAV_CMD_NAV_WAYPOINT,
MAV_CMD_NAV_RETURN_TO_LAUNCH,
MAV_CMD_NAV_LAND,
MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT,
MAV_CMD_NAV_SPLINE_WAYPOINT,
MAV_CMD_NAV_GUIDED_ENABLE,
MAV_CMD_NAV_DELAY,
MAV_CMD_CONDITION_DELAY, MAV_CMD_CONDITION_DISTANCE, MAV_CMD_CONDITION_YAW,
MAV_CMD_DO_SET_MODE,
MAV_CMD_DO_JUMP,
MAV_CMD_DO_CHANGE_SPEED,
MAV_CMD_DO_SET_HOME,
MAV_CMD_DO_SET_RELAY, MAV_CMD_DO_REPEAT_RELAY,
MAV_CMD_DO_SET_SERVO, MAV_CMD_DO_REPEAT_SERVO,
MAV_CMD_DO_LAND_START,
MAV_CMD_DO_SET_ROI,
MAV_CMD_DO_DIGICAM_CONFIGURE, MAV_CMD_DO_DIGICAM_CONTROL,
MAV_CMD_DO_MOUNT_CONTROL,
MAV_CMD_DO_SET_CAM_TRIGG_DIST,
MAV_CMD_DO_FENCE_ENABLE,
MAV_CMD_DO_INVERTED_FLIGHT,
MAV_CMD_DO_GRIPPER,
MAV_CMD_DO_GUIDED_LIMITS,
MAV_CMD_DO_AUTOTUNE_ENABLE,
};
}
int ArduSubFirmwarePlugin::remapParamNameHigestMinorVersionNumber(int majorVersionNumber) const
......@@ -212,11 +209,13 @@ const QVariantList& ArduSubFirmwarePlugin::toolBarIndicators(const Vehicle* vehi
Q_UNUSED(vehicle);
//-- Sub specific list of indicators (Enter your modified list here)
if(_toolBarIndicators.size() == 0) {
_toolBarIndicators.append(QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/MessageIndicator.qml")));
_toolBarIndicators.append(QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/BatteryIndicator.qml")));
_toolBarIndicators.append(QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/JoystickIndicator.qml")));
_toolBarIndicators.append(QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/ModeIndicator.qml")));
_toolBarIndicators.append(QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/ArmedIndicator.qml")));
_toolBarIndicators = QVariantList({
QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/MessageIndicator.qml")),
QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/BatteryIndicator.qml")),
QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/JoystickIndicator.qml")),
QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/ModeIndicator.qml")),
QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/ArmedIndicator.qml")),
});
}
return _toolBarIndicators;
}
......
......@@ -322,17 +322,19 @@ const QVariantList &FirmwarePlugin::toolBarIndicators(const Vehicle* vehicle)
Q_UNUSED(vehicle);
//-- Default list of indicators for all vehicles.
if(_toolBarIndicatorList.size() == 0) {
_toolBarIndicatorList.append(QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/MultiVehicleSelector.qml")));
_toolBarIndicatorList.append(QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/MessageIndicator.qml")));
_toolBarIndicatorList.append(QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/GPSIndicator.qml")));
_toolBarIndicatorList.append(QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/TelemetryRSSIIndicator.qml")));
_toolBarIndicatorList.append(QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/RCRSSIIndicator.qml")));
_toolBarIndicatorList.append(QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/BatteryIndicator.qml")));
_toolBarIndicatorList.append(QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/ModeIndicator.qml")));
_toolBarIndicatorList.append(QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/VTOLModeIndicator.qml")));
_toolBarIndicatorList.append(QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/ArmedIndicator.qml")));
_toolBarIndicatorList.append(QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/GPSRTKIndicator.qml")));
_toolBarIndicatorList.append(QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/LinkIndicator.qml")));
_toolBarIndicatorList = QVariantList({
QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/MultiVehicleSelector.qml")),
QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/MessageIndicator.qml")),
QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/GPSIndicator.qml")),
QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/TelemetryRSSIIndicator.qml")),
QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/RCRSSIIndicator.qml")),
QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/BatteryIndicator.qml")),
QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/ModeIndicator.qml")),
QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/VTOLModeIndicator.qml")),
QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/ArmedIndicator.qml")),
QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/GPSRTKIndicator.qml")),
QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/LinkIndicator.qml")),
});
}
return _toolBarIndicatorList;
}
......
......@@ -278,27 +278,25 @@ void PX4FirmwarePlugin::getParameterMetaDataVersionInfo(const QString& metaDataF
QList<MAV_CMD> PX4FirmwarePlugin::supportedMissionCommands(void)
{
QList<MAV_CMD> list;
list << MAV_CMD_NAV_WAYPOINT
<< MAV_CMD_NAV_LOITER_UNLIM << MAV_CMD_NAV_LOITER_TIME << MAV_CMD_NAV_LOITER_TO_ALT
<< MAV_CMD_NAV_LAND << MAV_CMD_NAV_TAKEOFF << MAV_CMD_NAV_RETURN_TO_LAUNCH
<< MAV_CMD_DO_JUMP
<< MAV_CMD_DO_VTOL_TRANSITION << MAV_CMD_NAV_VTOL_TAKEOFF << MAV_CMD_NAV_VTOL_LAND
<< MAV_CMD_DO_DIGICAM_CONTROL
<< MAV_CMD_DO_SET_CAM_TRIGG_DIST
<< MAV_CMD_DO_SET_SERVO
<< MAV_CMD_DO_CHANGE_SPEED
<< MAV_CMD_DO_LAND_START
<< MAV_CMD_DO_SET_ROI_LOCATION << MAV_CMD_DO_SET_ROI_WPNEXT_OFFSET << MAV_CMD_DO_SET_ROI_NONE
<< MAV_CMD_DO_MOUNT_CONFIGURE
<< MAV_CMD_DO_MOUNT_CONTROL
<< MAV_CMD_SET_CAMERA_MODE
<< MAV_CMD_IMAGE_START_CAPTURE << MAV_CMD_IMAGE_STOP_CAPTURE << MAV_CMD_VIDEO_START_CAPTURE << MAV_CMD_VIDEO_STOP_CAPTURE
<< MAV_CMD_NAV_DELAY
<< MAV_CMD_CONDITION_YAW;
return list;
return {
MAV_CMD_NAV_WAYPOINT,
MAV_CMD_NAV_LOITER_UNLIM, MAV_CMD_NAV_LOITER_TIME, MAV_CMD_NAV_LOITER_TO_ALT,
MAV_CMD_NAV_LAND, MAV_CMD_NAV_TAKEOFF, MAV_CMD_NAV_RETURN_TO_LAUNCH,
MAV_CMD_DO_JUMP,
MAV_CMD_DO_VTOL_TRANSITION, MAV_CMD_NAV_VTOL_TAKEOFF, MAV_CMD_NAV_VTOL_LAND,
MAV_CMD_DO_DIGICAM_CONTROL,
MAV_CMD_DO_SET_CAM_TRIGG_DIST,
MAV_CMD_DO_SET_SERVO,
MAV_CMD_DO_CHANGE_SPEED,
MAV_CMD_DO_LAND_START,
MAV_CMD_DO_SET_ROI_LOCATION, MAV_CMD_DO_SET_ROI_WPNEXT_OFFSET, MAV_CMD_DO_SET_ROI_NONE,
MAV_CMD_DO_MOUNT_CONFIGURE,
MAV_CMD_DO_MOUNT_CONTROL,
MAV_CMD_SET_CAMERA_MODE,
MAV_CMD_IMAGE_START_CAPTURE, MAV_CMD_IMAGE_STOP_CAPTURE, MAV_CMD_VIDEO_START_CAPTURE, MAV_CMD_VIDEO_STOP_CAPTURE,
MAV_CMD_NAV_DELAY,
MAV_CMD_CONDITION_YAW,
};
}
QString PX4FirmwarePlugin::missionCommandOverrides(MAV_TYPE vehicleType) const
......
......@@ -454,20 +454,6 @@ Set to 2 to use heading from motion capture</short_desc>
<reboot_required>true</reboot_required>
</parameter>
</group>
<group name="Chip">
<parameter category="Developer" default="0" name="SYS_FORCE_F7DC" type="INT32">
<short_desc>Force F7 D cache on and disregard errata 1259864 data corruption in
a sequence of write-through stores and loads on ARM M7 silicon
Fault Status: Present in r0p1, r0p2, r1p0 and r1p1. Fixed in r1p2</short_desc>
<min>0</min>
<max>2</max>
<values>
<value code="0">if Eratta exits turn dcache off else leave it on</value>
<value code="1">Force it off</value>
<value code="2">Force it on</value>
</values>
</parameter>
</group>
<group name="Circuit Breaker">
<parameter category="Developer" default="0" name="CBRK_AIRSPD_CHK" type="INT32">
<short_desc>Circuit breaker for airspeed sensor</short_desc>
......@@ -478,7 +464,7 @@ Fault Status: Present in r0p1, r0p2, r1p0 and r1p1. Fixed in r1p2</short_desc>
</parameter>
<parameter category="Developer" default="0" name="CBRK_BUZZER" type="INT32">
<short_desc>Circuit breaker for disabling buzzer</short_desc>
<long_desc>Setting this parameter to 782097 will disable the buzzer audio notification. WARNING: ENABLING THIS CIRCUIT BREAKER IS AT OWN RISK</long_desc>
<long_desc>Setting this parameter to 782097 will disable the buzzer audio notification. Setting this parameter to 782090 will disable the startup tune, while keeping all others enabled.</long_desc>
<min>0</min>
<max>782097</max>
<reboot_required>true</reboot_required>
......@@ -2766,22 +2752,6 @@ Set to 0 to disable heading hold</short_desc>
<decimal>1</decimal>
<increment>0.5</increment>
</parameter>
<parameter default="10.0" name="GND_SPEED_MAX" type="FLOAT">
<short_desc>Maximum ground speed</short_desc>
<min>0.0</min>
<max>40</max>
<unit>m/s</unit>
<decimal>1</decimal>
<increment>0.5</increment>
</parameter>
<parameter default="3.0" name="GND_SPEED_TRIM" type="FLOAT">
<short_desc>Trim ground speed</short_desc>
<min>0.0</min>
<max>40</max>
<unit>m/s</unit>
<decimal>1</decimal>
<increment>0.5</increment>
</parameter>
</group>
<group name="Failure Detector">
<parameter default="60" name="FD_FAIL_P" type="INT32">
......@@ -2845,209 +2815,6 @@ but also ignore less noise</short_desc>
<unit>meters</unit>
</parameter>
</group>
<group name="GND Attitude Control">
<parameter default="0" name="GND_BAT_SCALE_EN" type="INT32">
<short_desc>Whether to scale throttle by battery power level</short_desc>
<long_desc>This compensates for voltage drop of the battery over time by attempting to normalize performance across the operating range of the battery. The fixed wing should constantly behave as if it was fully charged with reduced max thrust at lower battery percentages. i.e. if cruise speed is at 0.5 throttle at 100% battery, it will still be 0.5 at 60% battery.</long_desc>
<boolean />
</parameter>
<parameter default="1.0" name="GND_GSPD_SP_TRIM" type="FLOAT">
<short_desc>Groundspeed speed trim</short_desc>
<long_desc>This allows to scale the turning radius depending on the speed.</long_desc>
<min>0.0</min>
<unit>norm</unit>
<decimal>2</decimal>
<increment>0.1</increment>
</parameter>
<parameter default="1.0" name="GND_MAN_Y_SC" type="FLOAT">
<short_desc>Manual yaw scale</short_desc>
<long_desc>Scale factor applied to the desired yaw actuator command in full manual mode. This parameter allows to adjust the throws of the control surfaces.</long_desc>
<min>0.0</min>
<unit>norm</unit>
<decimal>2</decimal>
<increment>0.01</increment>
</parameter>
<parameter default="0.0" name="GND_SPEED_D" type="FLOAT">
<short_desc>Speed proportional gain</short_desc>
<long_desc>This is the derivative gain for the speed closed loop controller</long_desc>
<min>0.00</min>
<max>50.0</max>
<unit>%m/s</unit>
<decimal>3</decimal>
<increment>0.005</increment>
</parameter>
<parameter default="0.1" name="GND_SPEED_I" type="FLOAT">
<short_desc>Speed Integral gain</short_desc>
<long_desc>This is the integral gain for the speed closed loop controller</long_desc>
<min>0.00</min>
<max>50.0</max>
<unit>%m/s</unit>
<decimal>3</decimal>
<increment>0.005</increment>
</parameter>
<parameter default="1.0" name="GND_SPEED_IMAX" type="FLOAT">
<short_desc>Speed integral maximum value</short_desc>
<long_desc>This is the maxim value the integral can reach to prevent wind-up.</long_desc>
<min>0.005</min>
<max>50.0</max>
<unit>%m/s</unit>
<decimal>3</decimal>
<increment>0.005</increment>
</parameter>
<parameter default="2.0" name="GND_SPEED_P" type="FLOAT">
<short_desc>Speed proportional gain</short_desc>
<long_desc>This is the proportional gain for the speed closed loop controller</long_desc>
<min>0.005</min>
<max>50.0</max>
<unit>%m/s</unit>
<decimal>3</decimal>
<increment>0.005</increment>
</parameter>
<parameter default="1.0" name="GND_SPEED_THR_SC" type="FLOAT">
<short_desc>Speed to throttle scaler</short_desc>
<long_desc>This is a gain to map the speed control output to the throttle linearly.</long_desc>
<min>0.005</min>
<max>50.0</max>
<unit>%m/s</unit>
<decimal>3</decimal>
<increment>0.005</increment>
</parameter>
<parameter default="1" name="GND_SP_CTRL_MODE" type="INT32">
<short_desc>Control mode for speed</short_desc>
<long_desc>This allows the user to choose between closed loop gps speed or open loop cruise throttle speed</long_desc>
<min>0</min>
<max>1</max>
<values>
<value code="0">open loop control</value>
<value code="1">close the loop with gps speed</value>
</values>
</parameter>
<parameter default="0.00" name="GND_WR_D" type="FLOAT">
<short_desc>Wheel steering rate integrator gain</short_desc>
<min>0.00</min>
<max>30</max>
<unit>%/rad</unit>
<decimal>3</decimal>
<increment>0.005</increment>
</parameter>
<parameter default="0.0" name="GND_WR_FF" type="FLOAT">
<short_desc>Wheel steering rate feed forward</short_desc>
<long_desc>Direct feed forward from rate setpoint to control surface output</long_desc>
<min>0.0</min>
<max>10.0</max>
<unit>%/rad/s</unit>
<decimal>2</decimal>
<increment>0.05</increment>
</parameter>
<parameter default="0.00" name="GND_WR_I" type="FLOAT">
<short_desc>Wheel steering rate integrator gain</short_desc>
<long_desc>This gain defines how much control response will result out of a steady state error. It trims any constant error.</long_desc>
<min>0.00</min>
<max>0.5</max>
<unit>%/rad</unit>
<decimal>3</decimal>
<increment>0.005</increment>
</parameter>
<parameter default="0.0" name="GND_WR_IMAX" type="FLOAT">
<short_desc>Wheel steering rate integrator limit</short_desc>
<long_desc>The portion of the integrator part in the control surface deflection is limited to this value</long_desc>
<min>0.0</min>
<max>1.0</max>
<decimal>2</decimal>
<increment>0.05</increment>
</parameter>
<parameter default="1.0" name="GND_WR_P" type="FLOAT">
<short_desc>Wheel steering rate proportional gain</short_desc>
<long_desc>This defines how much the wheel steering input will be commanded depending on the current body angular rate error.</long_desc>
<min>0.005</min>
<max>1.0</max>
<unit>%/rad/s</unit>
<decimal>3</decimal>
<increment>0.005</increment>
</parameter>
<parameter default="0.4" name="GND_WR_TC" type="FLOAT">
<short_desc>Attitude Wheel Time Constant</short_desc>
<long_desc>This defines the latency between a steering step input and the achieved setpoint (inverse to a P gain). Half a second is a good start value and fits for most average systems. Smaller systems may require smaller values, but as this will wear out servos faster, the value should only be decreased as needed.</long_desc>
<min>0.4</min>
<max>1.0</max>
<unit>s</unit>
<decimal>2</decimal>
<increment>0.05</increment>
</parameter>
<parameter default="90.0" name="GND_W_RMAX" type="FLOAT">
<short_desc>Maximum wheel steering rate</short_desc>
<long_desc>This limits the maximum wheel steering rate the controller will output (in degrees per second). Setting a value of zero disables the limit.</long_desc>
<min>0.0</min>
<max>90.0</max>
<unit>deg/s</unit>
<decimal>1</decimal>
<increment>0.5</increment>
</parameter>
</group>
<group name="GND POS Control">
<parameter default="0.75" name="GND_L1_DAMPING" type="FLOAT">
<short_desc>L1 damping</short_desc>
<long_desc>Damping factor for L1 control.</long_desc>
<min>0.6</min>
<max>0.9</max>
<decimal>2</decimal>
<increment>0.05</increment>
</parameter>
<parameter default="5.0" name="GND_L1_DIST" type="FLOAT">
<short_desc>L1 distance</short_desc>
<long_desc>This is the waypoint radius</long_desc>
<min>0.0</min>
<max>100.0</max>
<unit>m</unit>
<decimal>1</decimal>
<increment>0.1</increment>
</parameter>
<parameter default="10.0" name="GND_L1_PERIOD" type="FLOAT">
<short_desc>L1 period</short_desc>
<long_desc>This is the L1 distance and defines the tracking point ahead of the rover it's following. Using values around 2-5 for a traxxas stampede. Shorten slowly during tuning until response is sharp without oscillation.</long_desc>
<min>0.0</min>
<max>50.0</max>
<unit>m</unit>
<decimal>1</decimal>
<increment>0.5</increment>
</parameter>
<parameter default="0.1" name="GND_THR_CRUISE" type="FLOAT">
<short_desc>Cruise throttle</short_desc>
<long_desc>This is the throttle setting required to achieve the desired cruise speed. 10% is ok for a traxxas stampede vxl with ESC set to training mode</long_desc>
<min>0.0</min>
<max>1.0</max>
<unit>norm</unit>
<decimal>2</decimal>
<increment>0.01</increment>
</parameter>
<parameter default="0.0" name="GND_THR_IDLE" type="FLOAT">
<short_desc>Idle throttle</short_desc>
<long_desc>This is the minimum throttle while on the ground, it should be 0 for a rover</long_desc>
<min>0.0</min>
<max>0.4</max>
<unit>norm</unit>
<decimal>2</decimal>
<increment>0.01</increment>
</parameter>
<parameter default="0.3" name="GND_THR_MAX" type="FLOAT">
<short_desc>Throttle limit max</short_desc>
<long_desc>This is the maximum throttle % that can be used by the controller. For a Traxxas stampede vxl with the ESC set to training, 30 % is enough</long_desc>
<min>0.0</min>
<max>1.0</max>
<unit>norm</unit>
<decimal>2</decimal>
<increment>0.01</increment>
</parameter>
<parameter default="0.0" name="GND_THR_MIN" type="FLOAT">
<short_desc>Throttle limit min</short_desc>
<long_desc>This is the minimum throttle % that can be used by the controller. Set to 0 for rover</long_desc>
<min>0.0</min>
<max>1.0</max>
<unit>norm</unit>
<decimal>2</decimal>
<increment>0.01</increment>
</parameter>
</group>
<group name="GPS">
<parameter default="201" name="GPS_1_CONFIG" type="INT32">
<short_desc>Serial Configuration for Main GPS</short_desc>
......@@ -3062,6 +2829,7 @@ but also ignore less noise</short_desc>
<value code="104">TELEM/SERIAL 4</value>
<value code="201">GPS 1</value>
<value code="202">GPS 2</value>
<value code="300">Radio Controller</value>
</values>
</parameter>
<parameter default="0" name="GPS_2_CONFIG" type="INT32">
......@@ -3077,6 +2845,7 @@ but also ignore less noise</short_desc>
<value code="104">TELEM/SERIAL 4</value>
<value code="201">GPS 1</value>
<value code="202">GPS 2</value>
<value code="300">Radio Controller</value>
</values>
</parameter>
<parameter default="0" name="GPS_DUMP_COMM" type="INT32">
......@@ -3223,6 +2992,7 @@ but also ignore less noise</short_desc>
<value code="104">TELEM/SERIAL 4</value>
<value code="201">GPS 1</value>
<value code="202">GPS 2</value>
<value code="300">Radio Controller</value>
</values>
</parameter>
<parameter default="0" name="ISBD_READ_INT" type="INT32">
......@@ -3693,6 +3463,7 @@ Used to calculate increased terrain random walk nosie due to movement</short_des
<value code="104">TELEM/SERIAL 4</value>
<value code="201">GPS 1</value>
<value code="202">GPS 2</value>
<value code="300">Radio Controller</value>
</values>
</parameter>
<parameter default="1" name="MAV_0_FORWARD" type="INT32">
......@@ -3718,7 +3489,7 @@ Used to calculate increased terrain random walk nosie due to movement</short_des
</parameter>
<parameter default="1200" name="MAV_0_RATE" type="INT32">
<short_desc>Maximum MAVLink sending rate for instance 0</short_desc>
<long_desc>Configure the maximum sending rate for the MAVLink streams in Bytes/sec. If the configured streams exceed the maximum rate, the sending rate of each stream is automatically decreased. If this is set to 0, a value of &lt;baudrate&gt;/20 is used, which corresponds to half of the theoretical maximum bandwidth.</long_desc>
<long_desc>Configure the maximum sending rate for the MAVLink streams in Bytes/sec. If the configured streams exceed the maximum rate, the sending rate of each stream is automatically decreased. If this is set to 0 a value of half of the theoretical maximum bandwidth is used. This corresponds to baudrate/20 Bytes/s (baudrate/10 = maximum data rate on 8N1-configured links).</long_desc>
<min>0</min>
<unit>B/s</unit>
<reboot_required>True</reboot_required>
......@@ -3736,6 +3507,7 @@ Used to calculate increased terrain random walk nosie due to movement</short_des
<value code="104">TELEM/SERIAL 4</value>
<value code="201">GPS 1</value>
<value code="202">GPS 2</value>
<value code="300">Radio Controller</value>
</values>
</parameter>
<parameter default="0" name="MAV_1_FORWARD" type="INT32">
......@@ -3761,7 +3533,7 @@ Used to calculate increased terrain random walk nosie due to movement</short_des
</parameter>
<parameter default="0" name="MAV_1_RATE" type="INT32">
<short_desc>Maximum MAVLink sending rate for instance 1</short_desc>
<long_desc>Configure the maximum sending rate for the MAVLink streams in Bytes/sec. If the configured streams exceed the maximum rate, the sending rate of each stream is automatically decreased. If this is set to 0, a value of &lt;baudrate&gt;/20 is used, which corresponds to half of the theoretical maximum bandwidth.</long_desc>
<long_desc>Configure the maximum sending rate for the MAVLink streams in Bytes/sec. If the configured streams exceed the maximum rate, the sending rate of each stream is automatically decreased. If this is set to 0 a value of half of the theoretical maximum bandwidth is used. This corresponds to baudrate/20 Bytes/s (baudrate/10 = maximum data rate on 8N1-configured links).</long_desc>
<min>0</min>
<unit>B/s</unit>
<reboot_required>True</reboot_required>
......@@ -3779,6 +3551,7 @@ Used to calculate increased terrain random walk nosie due to movement</short_des
<value code="104">TELEM/SERIAL 4</value>
<value code="201">GPS 1</value>
<value code="202">GPS 2</value>
<value code="300">Radio Controller</value>
</values>
</parameter>
<parameter default="0" name="MAV_2_FORWARD" type="INT32">
......@@ -3804,7 +3577,7 @@ Used to calculate increased terrain random walk nosie due to movement</short_des
</parameter>
<parameter default="0" name="MAV_2_RATE" type="INT32">
<short_desc>Maximum MAVLink sending rate for instance 2</short_desc>
<long_desc>Configure the maximum sending rate for the MAVLink streams in Bytes/sec. If the configured streams exceed the maximum rate, the sending rate of each stream is automatically decreased. If this is set to 0, a value of &lt;baudrate&gt;/20 is used, which corresponds to half of the theoretical maximum bandwidth.</long_desc>
<long_desc>Configure the maximum sending rate for the MAVLink streams in Bytes/sec. If the configured streams exceed the maximum rate, the sending rate of each stream is automatically decreased. If this is set to 0 a value of half of the theoretical maximum bandwidth is used. This corresponds to baudrate/20 Bytes/s (baudrate/10 = maximum data rate on 8N1-configured links).</long_desc>
<min>0</min>
<unit>B/s</unit>
<reboot_required>True</reboot_required>
......@@ -4043,12 +3816,13 @@ Used to calculate increased terrain random walk nosie due to movement</short_des
<short_desc>Yaw mode</short_desc>
<long_desc>Specifies the heading in Auto.</long_desc>
<min>0</min>
<max>3</max>
<max>4</max>
<values>
<value code="0">towards waypoint</value>
<value code="1">towards home</value>
<value code="2">away from home</value>
<value code="3">along trajectory</value>
<value code="4">towards waypoint (yaw first)</value>
</values>
</parameter>
<parameter default="10.0" name="NAV_ACC_RAD" type="FLOAT">
......@@ -4374,6 +4148,14 @@ default 1.5 turns per second</short_desc>
<decimal>3</decimal>
<increment>0.01</increment>
</parameter>
<parameter default="1.0" name="MC_PITCHRATE_K" type="FLOAT">
<short_desc>Pitch rate controller gain</short_desc>
<long_desc>Global gain of the controller. This gain scales the P, I and D terms of the controller: output = MC_PITCHRATE_K * (MC_PITCHRATE_P * error + MC_PITCHRATE_I * error_integral + MC_PITCHRATE_D * error_derivative) Set MC_PITCHRATE_P=1 to implement a PID in the ideal form. Set MC_PITCHRATE_K=1 to implement a PID in the parallel form.</long_desc>
<min>0.0</min>
<max>5.0</max>
<decimal>4</decimal>
<increment>0.0005</increment>
</parameter>
<parameter default="220.0" name="MC_PITCHRATE_MAX" type="FLOAT">
<short_desc>Max pitch rate</short_desc>
<long_desc>Limit for pitch rate in manual and auto modes (except acro). Has effect for large rotations in autonomous mode, to avoid large control output and mixer saturation. This is not only limited by the vehicle's properties, but also by the maximum measurement rate of the gyro.</long_desc>
......@@ -4436,6 +4218,14 @@ default 1.5 turns per second</short_desc>
<decimal>3</decimal>
<increment>0.01</increment>
</parameter>
<parameter default="1.0" name="MC_ROLLRATE_K" type="FLOAT">
<short_desc>Roll rate controller gain</short_desc>
<long_desc>Global gain of the controller. This gain scales the P, I and D terms of the controller: output = MC_ROLLRATE_K * (MC_ROLLRATE_P * error + MC_ROLLRATE_I * error_integral + MC_ROLLRATE_D * error_derivative) Set MC_ROLLRATE_P=1 to implement a PID in the ideal form. Set MC_ROLLRATE_K=1 to implement a PID in the parallel form.</long_desc>
<min>0.0</min>
<max>5.0</max>
<decimal>4</decimal>
<increment>0.0005</increment>
</parameter>
<parameter default="220.0" name="MC_ROLLRATE_MAX" type="FLOAT">
<short_desc>Max roll rate</short_desc>
<long_desc>Limit for roll rate in manual and auto modes (except acro). Has effect for large rotations in autonomous mode, to avoid large control output and mixer saturation. This is not only limited by the vehicle's properties, but also by the maximum measurement rate of the gyro.</long_desc>
......@@ -4538,6 +4328,14 @@ default 1.5 turns per second</short_desc>
<decimal>2</decimal>
<increment>0.01</increment>
</parameter>
<parameter default="1.0" name="MC_YAWRATE_K" type="FLOAT">
<short_desc>Yaw rate controller gain</short_desc>
<long_desc>Global gain of the controller. This gain scales the P, I and D terms of the controller: output = MC_YAWRATE_K * (MC_YAWRATE_P * error + MC_YAWRATE_I * error_integral + MC_YAWRATE_D * error_derivative) Set MC_YAWRATE_P=1 to implement a PID in the ideal form. Set MC_YAWRATE_K=1 to implement a PID in the parallel form.</long_desc>
<min>0.0</min>
<max>5.0</max>
<decimal>4</decimal>
<increment>0.0005</increment>
</parameter>
<parameter default="200.0" name="MC_YAWRATE_MAX" type="FLOAT">
<short_desc>Max yaw rate</short_desc>
<min>0.0</min>
......@@ -6096,6 +5894,7 @@ the setpoint will be capped to MPC_XY_VEL_MAX</short_desc>
<value code="104">TELEM/SERIAL 4</value>
<value code="201">GPS 1</value>
<value code="202">GPS 2</value>
<value code="300">Radio Controller</value>
</values>
</parameter>
<parameter default="0" name="RTPS_MAV_CONFIG" type="INT32">
......@@ -6111,6 +5910,7 @@ the setpoint will be capped to MPC_XY_VEL_MAX</short_desc>
<value code="104">TELEM/SERIAL 4</value>
<value code="201">GPS 1</value>
<value code="202">GPS 2</value>
<value code="300">Radio Controller</value>
</values>
</parameter>
</group>
......@@ -7790,6 +7590,158 @@ the setpoint will be capped to MPC_XY_VEL_MAX</short_desc>
</values>
</parameter>
</group>
<group name="Rover Position Control">
<parameter default="0.75" name="GND_L1_DAMPING" type="FLOAT">
<short_desc>L1 damping</short_desc>
<long_desc>Damping factor for L1 control.</long_desc>
<min>0.6</min>
<max>0.9</max>
<decimal>2</decimal>
<increment>0.05</increment>
</parameter>
<parameter default="5.0" name="GND_L1_DIST" type="FLOAT">
<short_desc>L1 distance</short_desc>
<long_desc>This is the waypoint radius</long_desc>
<min>0.0</min>
<max>100.0</max>
<unit>m</unit>
<decimal>1</decimal>
<increment>0.1</increment>
</parameter>
<parameter default="10.0" name="GND_L1_PERIOD" type="FLOAT">
<short_desc>L1 period</short_desc>
<long_desc>This is the L1 distance and defines the tracking point ahead of the rover it's following. Using values around 2-5 for a traxxas stampede. Shorten slowly during tuning until response is sharp without oscillation.</long_desc>
<min>0.0</min>
<max>50.0</max>
<unit>m</unit>
<decimal>1</decimal>
<increment>0.5</increment>
</parameter>
<parameter default="0.7854" name="GND_MAX_ANG" type="FLOAT">
<short_desc>Maximum turn angle for Ackerman steering.
At a control output of 0, the steering wheels are at 0 radians.
At a control output of 1, the steering wheels are at GND_MAX_ANG radians</short_desc>
<min>0.0</min>
<max>3.14159</max>
<unit>rad</unit>
<decimal>3</decimal>
<increment>0.01</increment>
</parameter>
<parameter default="0.0" name="GND_SPEED_D" type="FLOAT">
<short_desc>Speed proportional gain</short_desc>
<long_desc>This is the derivative gain for the speed closed loop controller</long_desc>
<min>0.00</min>
<max>50.0</max>
<unit>%m/s</unit>
<decimal>3</decimal>
<increment>0.005</increment>
</parameter>
<parameter default="0.1" name="GND_SPEED_I" type="FLOAT">
<short_desc>Speed Integral gain</short_desc>
<long_desc>This is the integral gain for the speed closed loop controller</long_desc>
<min>0.00</min>
<max>50.0</max>
<unit>%m/s</unit>
<decimal>3</decimal>
<increment>0.005</increment>
</parameter>
<parameter default="1.0" name="GND_SPEED_IMAX" type="FLOAT">
<short_desc>Speed integral maximum value</short_desc>
<long_desc>This is the maxim value the integral can reach to prevent wind-up.</long_desc>
<min>0.005</min>
<max>50.0</max>
<unit>%m/s</unit>
<decimal>3</decimal>
<increment>0.005</increment>
</parameter>
<parameter default="10.0" name="GND_SPEED_MAX" type="FLOAT">
<short_desc>Maximum ground speed</short_desc>
<min>0.0</min>
<max>40</max>
<unit>m/s</unit>
<decimal>1</decimal>
<increment>0.5</increment>
</parameter>
<parameter default="2.0" name="GND_SPEED_P" type="FLOAT">
<short_desc>Speed proportional gain</short_desc>
<long_desc>This is the proportional gain for the speed closed loop controller</long_desc>
<min>0.005</min>
<max>50.0</max>
<unit>%m/s</unit>
<decimal>3</decimal>
<increment>0.005</increment>
</parameter>
<parameter default="1.0" name="GND_SPEED_THR_SC" type="FLOAT">
<short_desc>Speed to throttle scaler</short_desc>
<long_desc>This is a gain to map the speed control output to the throttle linearly.</long_desc>
<min>0.005</min>
<max>50.0</max>
<unit>%m/s</unit>
<decimal>3</decimal>
<increment>0.005</increment>
</parameter>
<parameter default="3.0" name="GND_SPEED_TRIM" type="FLOAT">
<short_desc>Trim ground speed</short_desc>
<min>0.0</min>
<max>40</max>
<unit>m/s</unit>
<decimal>1</decimal>
<increment>0.5</increment>
</parameter>
<parameter default="1" name="GND_SP_CTRL_MODE" type="INT32">
<short_desc>Control mode for speed</short_desc>
<long_desc>This allows the user to choose between closed loop gps speed or open loop cruise throttle speed</long_desc>
<min>0</min>
<max>1</max>
<values>
<value code="0">open loop control</value>
<value code="1">close the loop with gps speed</value>
</values>
</parameter>
<parameter default="0.1" name="GND_THR_CRUISE" type="FLOAT">
<short_desc>Cruise throttle</short_desc>
<long_desc>This is the throttle setting required to achieve the desired cruise speed. 10% is ok for a traxxas stampede vxl with ESC set to training mode</long_desc>
<min>0.0</min>
<max>1.0</max>
<unit>norm</unit>
<decimal>2</decimal>
<increment>0.01</increment>
</parameter>
<parameter default="0.0" name="GND_THR_IDLE" type="FLOAT">
<short_desc>Idle throttle</short_desc>
<long_desc>This is the minimum throttle while on the ground, it should be 0 for a rover</long_desc>
<min>0.0</min>
<max>0.4</max>
<unit>norm</unit>
<decimal>2</decimal>
<increment>0.01</increment>
</parameter>
<parameter default="0.3" name="GND_THR_MAX" type="FLOAT">
<short_desc>Throttle limit max</short_desc>
<long_desc>This is the maximum throttle % that can be used by the controller. For a Traxxas stampede vxl with the ESC set to training, 30 % is enough</long_desc>
<min>0.0</min>
<max>1.0</max>
<unit>norm</unit>
<decimal>2</decimal>
<increment>0.01</increment>
</parameter>
<parameter default="0.0" name="GND_THR_MIN" type="FLOAT">
<short_desc>Throttle limit min</short_desc>
<long_desc>This is the minimum throttle % that can be used by the controller. Set to 0 for rover</long_desc>
<min>0.0</min>
<max>1.0</max>
<unit>norm</unit>
<decimal>2</decimal>
<increment>0.01</increment>
</parameter>
<parameter default="2.0" name="GND_WHEEL_BASE" type="FLOAT">
<short_desc>Distance from front axle to rear axle</short_desc>
<min>0.0</min>
<unit>m</unit>
<decimal>3</decimal>
<increment>0.01</increment>
</parameter>
</group>
<group name="Runway Takeoff">
<parameter default="1.3" name="RWTO_AIRSPD_SCL" type="FLOAT">
<short_desc>Min. airspeed scaling factor for takeoff.
......@@ -8536,6 +8488,20 @@ is less than 50% of this value</short_desc>
<value code="104">TELEM/SERIAL 4</value>
<value code="201">GPS 1</value>
<value code="202">GPS 2</value>
<value code="300">Radio Controller</value>
</values>
</parameter>
<parameter default="25" name="SENS_CM8JL65_R_0" type="INT32">
<short_desc>Distance Sensor Rotation</short_desc>
<long_desc>Distance Sensor Rotation as MAV_SENSOR_ORIENTATION enum</long_desc>
<reboot_required>True</reboot_required>
<values>
<value code="0">ROTATION_FORWARD_FACING</value>
<value code="2">ROTATION_RIGHT_FACING</value>
<value code="6">ROTATION_LEFT_FACING</value>
<value code="12">ROTATION_BACKWARD_FACING</value>
<value code="24">ROTATION_UPWARD_FACING</value>
<value code="25">ROTATION_DOWNWARD_FACING</value>
</values>
</parameter>
<parameter default="0" name="SENS_EN_BATT" type="INT32">
......@@ -8668,6 +8634,7 @@ is less than 50% of this value</short_desc>
<value code="104">TELEM/SERIAL 4</value>
<value code="201">GPS 1</value>
<value code="202">GPS 2</value>
<value code="300">Radio Controller</value>
</values>
</parameter>
<parameter default="0" name="SENS_MB12_0_ROT" type="INT32">
......@@ -9091,6 +9058,7 @@ is less than 50% of this value</short_desc>
<value code="104">TELEM/SERIAL 4</value>
<value code="201">GPS 1</value>
<value code="202">GPS 2</value>
<value code="300">Radio Controller</value>
</values>
</parameter>
<parameter default="1442826" name="SENS_TEMP_ID" type="INT32">
......@@ -9109,6 +9077,7 @@ is less than 50% of this value</short_desc>
<value code="104">TELEM/SERIAL 4</value>
<value code="201">GPS 1</value>
<value code="202">GPS 2</value>
<value code="300">Radio Controller</value>
</values>
</parameter>
<parameter default="0" name="SENS_ULAND_CFG" type="INT32">
......@@ -9124,10 +9093,27 @@ is less than 50% of this value</short_desc>
<value code="104">TELEM/SERIAL 4</value>
<value code="201">GPS 1</value>
<value code="202">GPS 2</value>
<value code="300">Radio Controller</value>
</values>
</parameter>
</group>
<group name="Serial">
<parameter default="300" name="RC_PORT_CONFIG" type="INT32">
<short_desc>Serial Configuration for RC Input Driver</short_desc>
<long_desc>Configure on which serial port to run RC Input Driver. Setting this to 'Disabled' will use a board-specific default port for RC input.</long_desc>
<reboot_required>true</reboot_required>
<values>
<value code="0">Disabled</value>
<value code="6">UART 6</value>
<value code="101">TELEM 1</value>
<value code="102">TELEM 2</value>
<value code="103">TELEM 3</value>
<value code="104">TELEM/SERIAL 4</value>
<value code="201">GPS 1</value>
<value code="202">GPS 2</value>
<value code="300">Radio Controller</value>
</values>
</parameter>
<parameter default="0" name="SER_GPS1_BAUD" type="INT32">
<short_desc>Baudrate for the GPS 1 Serial Port</short_desc>
<long_desc>Configure the Baudrate for the GPS 1 Serial Port. Note: certain drivers such as the GPS can determine the Baudrate automatically.</long_desc>
......@@ -9194,6 +9180,39 @@ is less than 50% of this value</short_desc>
<value code="3000000">3000000 8N1</value>
</values>
</parameter>
<parameter default="0" name="SER_RC_BAUD" type="INT32">
<short_desc>Baudrate for the Radio Controller Serial Port</short_desc>
<long_desc>Configure the Baudrate for the Radio Controller Serial Port. Note: certain drivers such as the GPS can determine the Baudrate automatically.</long_desc>
<reboot_required>true</reboot_required>
<values>
<value code="0">Auto</value>
<value code="50">50 8N1</value>
<value code="75">75 8N1</value>
<value code="110">110 8N1</value>
<value code="134">134 8N1</value>
<value code="150">150 8N1</value>
<value code="200">200 8N1</value>
<value code="300">300 8N1</value>
<value code="600">600 8N1</value>
<value code="1200">1200 8N1</value>
<value code="1800">1800 8N1</value>
<value code="2400">2400 8N1</value>
<value code="4800">4800 8N1</value>
<value code="9600">9600 8N1</value>
<value code="19200">19200 8N1</value>
<value code="38400">38400 8N1</value>
<value code="57600">57600 8N1</value>
<value code="115200">115200 8N1</value>
<value code="230400">230400 8N1</value>
<value code="460800">460800 8N1</value>
<value code="500000">500000 8N1</value>
<value code="921600">921600 8N1</value>
<value code="1000000">1000000 8N1</value>
<value code="1500000">1500000 8N1</value>
<value code="2000000">2000000 8N1</value>
<value code="3000000">3000000 8N1</value>
</values>
</parameter>
<parameter default="57600" name="SER_TEL1_BAUD" type="INT32">
<short_desc>Baudrate for the TELEM 1 Serial Port</short_desc>
<long_desc>Configure the Baudrate for the TELEM 1 Serial Port. Note: certain drivers such as the GPS can determine the Baudrate automatically.</long_desc>
......@@ -9696,6 +9715,7 @@ is less than 50% of this value</short_desc>
<value code="104">TELEM/SERIAL 4</value>
<value code="201">GPS 1</value>
<value code="202">GPS 2</value>
<value code="300">Radio Controller</value>
</values>
</parameter>
<parameter default="0" name="TEL_HOTT_CONFIG" type="INT32">
......@@ -9711,6 +9731,7 @@ is less than 50% of this value</short_desc>
<value code="104">TELEM/SERIAL 4</value>
<value code="201">GPS 1</value>
<value code="202">GPS 2</value>
<value code="300">Radio Controller</value>
</values>
</parameter>
</group>
......
......@@ -103,70 +103,68 @@ QGeoTiledMappingManagerEngineQGC::QGeoTiledMappingManagerEngineQGC(const QVarian
//-- IMPORTANT
// Changes here must reflect those in QGCMapEngine.cpp
QList<QGeoMapType> mapTypes;
setSupportedMapTypes({
#ifndef QGC_NO_GOOGLE_MAPS
mapTypes << QGCGEOMAPTYPE(QGeoMapType::StreetMap, "Google Street Map", "Google street map", false, false, UrlFactory::GoogleMap);
mapTypes << QGCGEOMAPTYPE(QGeoMapType::SatelliteMapDay, "Google Satellite Map", "Google satellite map", false, false, UrlFactory::GoogleSatellite);
mapTypes << QGCGEOMAPTYPE(QGeoMapType::TerrainMap, "Google Terrain Map", "Google terrain map", false, false, UrlFactory::GoogleTerrain);
QGCGEOMAPTYPE(QGeoMapType::StreetMap, "Google Street Map", "Google street map", false, false, UrlFactory::GoogleMap),
QGCGEOMAPTYPE(QGeoMapType::SatelliteMapDay, "Google Satellite Map", "Google satellite map", false, false, UrlFactory::GoogleSatellite),
QGCGEOMAPTYPE(QGeoMapType::TerrainMap, "Google Terrain Map", "Google terrain map", false, false, UrlFactory::GoogleTerrain),
#endif
/* TODO:
* Proper google hybrid maps requires collecting two separate bitmaps and overlaying them.
*
* mapTypes << QGCGEOMAPTYPE(QGeoMapType::HybridMap, "Google Hybrid Map", "Google hybrid map", false, false, UrlFactory::GoogleHybrid);
* mapTypes << QGCGEOMAPTYPE(QGeoMapType::HybridMap, "Google Hybrid Map", "Google hybrid map", false, false, UrlFactory::GoogleHybrid),
*
*/
// Bing
mapTypes << QGCGEOMAPTYPE(QGeoMapType::StreetMap, "Bing Street Map", "Bing street map", false, false, UrlFactory::BingMap);
mapTypes << QGCGEOMAPTYPE(QGeoMapType::SatelliteMapDay, "Bing Satellite Map", "Bing satellite map", false, false, UrlFactory::BingSatellite);
mapTypes << QGCGEOMAPTYPE(QGeoMapType::HybridMap, "Bing Hybrid Map", "Bing hybrid map", false, false, UrlFactory::BingHybrid);
QGCGEOMAPTYPE(QGeoMapType::StreetMap, "Bing Street Map", "Bing street map", false, false, UrlFactory::BingMap),
QGCGEOMAPTYPE(QGeoMapType::SatelliteMapDay, "Bing Satellite Map", "Bing satellite map", false, false, UrlFactory::BingSatellite),
QGCGEOMAPTYPE(QGeoMapType::HybridMap, "Bing Hybrid Map", "Bing hybrid map", false, false, UrlFactory::BingHybrid),
// Statkart
mapTypes << QGCGEOMAPTYPE(QGeoMapType::TerrainMap, "Statkart Terrain Map", "Statkart Terrain Map", false, false, UrlFactory::StatkartTopo);
QGCGEOMAPTYPE(QGeoMapType::TerrainMap, "Statkart Terrain Map", "Statkart Terrain Map", false, false, UrlFactory::StatkartTopo),
// Eniro
mapTypes << QGCGEOMAPTYPE(QGeoMapType::TerrainMap, "Eniro Terrain Map", "Eniro Terrain Map", false, false, UrlFactory::EniroTopo);
QGCGEOMAPTYPE(QGeoMapType::TerrainMap, "Eniro Terrain Map", "Eniro Terrain Map", false, false, UrlFactory::EniroTopo),
// Esri
mapTypes << QGCGEOMAPTYPE(QGeoMapType::StreetMap, "Esri Street Map", "ArcGIS Online World Street Map", true, false, UrlFactory::EsriWorldStreet);
mapTypes << QGCGEOMAPTYPE(QGeoMapType::SatelliteMapDay, "Esri Satellite Map", "ArcGIS Online World Imagery", true, false, UrlFactory::EsriWorldSatellite);
mapTypes << QGCGEOMAPTYPE(QGeoMapType::TerrainMap, "Esri Terrain Map", "World Terrain Base", false, false, UrlFactory::EsriTerrain);
QGCGEOMAPTYPE(QGeoMapType::StreetMap, "Esri Street Map", "ArcGIS Online World Street Map", true, false, UrlFactory::EsriWorldStreet),
QGCGEOMAPTYPE(QGeoMapType::SatelliteMapDay, "Esri Satellite Map", "ArcGIS Online World Imagery", true, false, UrlFactory::EsriWorldSatellite),
QGCGEOMAPTYPE(QGeoMapType::TerrainMap, "Esri Terrain Map", "World Terrain Base", false, false, UrlFactory::EsriTerrain),
// VWorld
mapTypes << QGCGEOMAPTYPE(QGeoMapType::SatelliteMapDay, "VWorld Satellite Map", "VWorld Satellite Map", false, false, UrlFactory::VWorldSatellite);
mapTypes << QGCGEOMAPTYPE(QGeoMapType::StreetMap, "VWorld Street Map", "VWorld Street Map", false, false, UrlFactory::VWorldStreet);
QGCGEOMAPTYPE(QGeoMapType::SatelliteMapDay, "VWorld Satellite Map", "VWorld Satellite Map", false, false, UrlFactory::VWorldSatellite),
QGCGEOMAPTYPE(QGeoMapType::StreetMap, "VWorld Street Map", "VWorld Street Map", false, false, UrlFactory::VWorldStreet),
/* See: https://wiki.openstreetmap.org/wiki/Tile_usage_policy
mapTypes << QGCGEOMAPTYPE(QGeoMapType::StreetMap, "Open Street Map", "Open Street map", false, false, UrlFactory::OpenStreetMap);
QGCGEOMAPTYPE(QGeoMapType::StreetMap, "Open Street Map", "Open Street map", false, false, UrlFactory::OpenStreetMap),
*/
// MapQuest
/*
mapTypes << QGCGEOMAPTYPE(QGeoMapType::StreetMap, "MapQuest Street Map", "MapQuest street map", false, false, UrlFactory::MapQuestMap);
mapTypes << QGCGEOMAPTYPE(QGeoMapType::SatelliteMapDay, "MapQuest Satellite Map", "MapQuest satellite map", false, false, UrlFactory::MapQuestSat);
QGCGEOMAPTYPE(QGeoMapType::StreetMap, "MapQuest Street Map", "MapQuest street map", false, false, UrlFactory::MapQuestMap),
QGCGEOMAPTYPE(QGeoMapType::SatelliteMapDay, "MapQuest Satellite Map", "MapQuest satellite map", false, false, UrlFactory::MapQuestSat),
*/
/*
* These are OK as you need your own token for accessing it. Out-of-the box, QGC does not even offer these unless you enter a proper Mapbox token.
*/
mapTypes << QGCGEOMAPTYPE(QGeoMapType::StreetMap, "Mapbox Street Map", "Mapbox Street Map", false, false, UrlFactory::MapboxStreets);
mapTypes << QGCGEOMAPTYPE(QGeoMapType::SatelliteMapDay, "Mapbox Satellite Map", "Mapbox Satellite Map", false, false, UrlFactory::MapboxSatellite);
mapTypes << QGCGEOMAPTYPE(QGeoMapType::CustomMap, "Mapbox High Contrast Map", "Mapbox High Contrast Map", false, false, UrlFactory::MapboxHighContrast);
mapTypes << QGCGEOMAPTYPE(QGeoMapType::CustomMap, "Mapbox Light Map", "Mapbox Light Map", false, false, UrlFactory::MapboxLight);
mapTypes << QGCGEOMAPTYPE(QGeoMapType::CustomMap, "Mapbox Dark Map", "Mapbox Dark Map", false, false, UrlFactory::MapboxDark);
mapTypes << QGCGEOMAPTYPE(QGeoMapType::HybridMap, "Mapbox Hybrid Map", "Mapbox Hybrid Map", false, false, UrlFactory::MapboxHybrid);
mapTypes << QGCGEOMAPTYPE(QGeoMapType::CustomMap, "Mapbox Wheat Paste Map", "Mapbox Wheat Paste Map", false, false, UrlFactory::MapboxWheatPaste);
mapTypes << QGCGEOMAPTYPE(QGeoMapType::StreetMap, "Mapbox Streets Basic Map", "Mapbox Streets Basic Map", false, false, UrlFactory::MapboxStreetsBasic);
mapTypes << QGCGEOMAPTYPE(QGeoMapType::CustomMap, "Mapbox Comic Map", "Mapbox Comic Map", false, false, UrlFactory::MapboxComic);
mapTypes << QGCGEOMAPTYPE(QGeoMapType::CustomMap, "Mapbox Outdoors Map", "Mapbox Outdoors Map", false, false, UrlFactory::MapboxOutdoors);
mapTypes << QGCGEOMAPTYPE(QGeoMapType::CycleMap, "Mapbox Run, Byke and Hike Map", "Mapbox Run, Byke and Hike Map", false, false, UrlFactory::MapboxRunBikeHike);
mapTypes << QGCGEOMAPTYPE(QGeoMapType::CustomMap, "Mapbox Pencil Map", "Mapbox Pencil Map", false, false, UrlFactory::MapboxPencil);
mapTypes << QGCGEOMAPTYPE(QGeoMapType::CustomMap, "Mapbox Pirates Map", "Mapbox Pirates Map", false, false, UrlFactory::MapboxPirates);
mapTypes << QGCGEOMAPTYPE(QGeoMapType::CustomMap, "Mapbox Emerald Map", "Mapbox Emerald Map", false, false, UrlFactory::MapboxEmerald);
setSupportedMapTypes(mapTypes);
QGCGEOMAPTYPE(QGeoMapType::StreetMap, "Mapbox Street Map", "Mapbox Street Map", false, false, UrlFactory::MapboxStreets),
QGCGEOMAPTYPE(QGeoMapType::SatelliteMapDay, "Mapbox Satellite Map", "Mapbox Satellite Map", false, false, UrlFactory::MapboxSatellite),
QGCGEOMAPTYPE(QGeoMapType::CustomMap, "Mapbox High Contrast Map", "Mapbox High Contrast Map", false, false, UrlFactory::MapboxHighContrast),
QGCGEOMAPTYPE(QGeoMapType::CustomMap, "Mapbox Light Map", "Mapbox Light Map", false, false, UrlFactory::MapboxLight),
QGCGEOMAPTYPE(QGeoMapType::CustomMap, "Mapbox Dark Map", "Mapbox Dark Map", false, false, UrlFactory::MapboxDark),
QGCGEOMAPTYPE(QGeoMapType::HybridMap, "Mapbox Hybrid Map", "Mapbox Hybrid Map", false, false, UrlFactory::MapboxHybrid),
QGCGEOMAPTYPE(QGeoMapType::CustomMap, "Mapbox Wheat Paste Map", "Mapbox Wheat Paste Map", false, false, UrlFactory::MapboxWheatPaste),
QGCGEOMAPTYPE(QGeoMapType::StreetMap, "Mapbox Streets Basic Map", "Mapbox Streets Basic Map", false, false, UrlFactory::MapboxStreetsBasic),
QGCGEOMAPTYPE(QGeoMapType::CustomMap, "Mapbox Comic Map", "Mapbox Comic Map", false, false, UrlFactory::MapboxComic),
QGCGEOMAPTYPE(QGeoMapType::CustomMap, "Mapbox Outdoors Map", "Mapbox Outdoors Map", false, false, UrlFactory::MapboxOutdoors),
QGCGEOMAPTYPE(QGeoMapType::CycleMap, "Mapbox Run, Byke and Hike Map", "Mapbox Run, Byke and Hike Map", false, false, UrlFactory::MapboxRunBikeHike),
QGCGEOMAPTYPE(QGeoMapType::CustomMap, "Mapbox Pencil Map", "Mapbox Pencil Map", false, false, UrlFactory::MapboxPencil),
QGCGEOMAPTYPE(QGeoMapType::CustomMap, "Mapbox Pirates Map", "Mapbox Pirates Map", false, false, UrlFactory::MapboxPirates),
QGCGEOMAPTYPE(QGeoMapType::CustomMap, "Mapbox Emerald Map", "Mapbox Emerald Map", false, false, UrlFactory::MapboxEmerald),
});
//-- Users (QML code) can define a different user agent
if (parameters.contains(QStringLiteral("useragent"))) {
......
......@@ -32,17 +32,17 @@ GenericSurfacePainter::GenericSurfacePainter()
//static
QSet<GstVideoFormat> GenericSurfacePainter::supportedPixelFormats()
{
return QSet<GstVideoFormat>()
return QSet<GstVideoFormat>({
#if Q_BYTE_ORDER == Q_BIG_ENDIAN
<< GST_VIDEO_FORMAT_ARGB
<< GST_VIDEO_FORMAT_xRGB
GST_VIDEO_FORMAT_ARGB,
GST_VIDEO_FORMAT_xRGB,
#else
<< GST_VIDEO_FORMAT_BGRA
<< GST_VIDEO_FORMAT_BGRx
GST_VIDEO_FORMAT_BGRA,
GST_VIDEO_FORMAT_BGRx,
#endif
<< GST_VIDEO_FORMAT_RGB
<< GST_VIDEO_FORMAT_RGB16
;
GST_VIDEO_FORMAT_RGB,
GST_VIDEO_FORMAT_RGB16,
});
}
void GenericSurfacePainter::init(const BufferFormat &format)
......
......@@ -67,26 +67,26 @@ OpenGLSurfacePainter::OpenGLSurfacePainter()
//static
QSet<GstVideoFormat> OpenGLSurfacePainter::supportedPixelFormats()
{
return QSet<GstVideoFormat>()
return QSet<GstVideoFormat>({
//also handled by the generic painter on LE
<< GST_VIDEO_FORMAT_BGRA
<< GST_VIDEO_FORMAT_BGRx
GST_VIDEO_FORMAT_BGRA,
GST_VIDEO_FORMAT_BGRx,
//also handled by the generic painter on BE
<< GST_VIDEO_FORMAT_ARGB
<< GST_VIDEO_FORMAT_xRGB
GST_VIDEO_FORMAT_ARGB,
GST_VIDEO_FORMAT_xRGB,
//also handled by the generic painter everywhere
<< GST_VIDEO_FORMAT_RGB
<< GST_VIDEO_FORMAT_RGB16
GST_VIDEO_FORMAT_RGB,
GST_VIDEO_FORMAT_RGB16,
//not handled by the generic painter
<< GST_VIDEO_FORMAT_BGR
<< GST_VIDEO_FORMAT_v308
<< GST_VIDEO_FORMAT_AYUV
<< GST_VIDEO_FORMAT_YV12
<< GST_VIDEO_FORMAT_I420
;
GST_VIDEO_FORMAT_BGR,
GST_VIDEO_FORMAT_v308,
GST_VIDEO_FORMAT_AYUV,
GST_VIDEO_FORMAT_YV12,
GST_VIDEO_FORMAT_I420,
});
}
void OpenGLSurfacePainter::updateColors(int brightness, int contrast, int hue, int saturation)
......
......@@ -513,50 +513,52 @@ QStringList SerialConfiguration::supportedBaudRates()
void SerialConfiguration::_initBaudRates()
{
kSupportedBaudRates.clear();
kSupportedBaudRates = QStringList({
#if USE_ANCIENT_RATES
#if defined(Q_OS_UNIX) || defined(Q_OS_LINUX) || defined(Q_OS_DARWIN)
kSupportedBaudRates << "50";
kSupportedBaudRates << "75";
"50",
"75",
#endif
kSupportedBaudRates << "110";
"110",
#if defined(Q_OS_UNIX) || defined(Q_OS_LINUX) || defined(Q_OS_DARWIN)
kSupportedBaudRates << "134";
kSupportedBaudRates << "150";
kSupportedBaudRates << "200";
"150",
"200" ,
"134" ,
#endif
kSupportedBaudRates << "300";
kSupportedBaudRates << "600";
kSupportedBaudRates << "1200";
"300",
"600",
"1200",
#if defined(Q_OS_UNIX) || defined(Q_OS_LINUX) || defined(Q_OS_DARWIN)
kSupportedBaudRates << "1800";
"1800",
#endif
#endif
kSupportedBaudRates << "2400";
kSupportedBaudRates << "4800";
kSupportedBaudRates << "9600";
"2400",
"4800",
"9600",
#if defined(Q_OS_WIN)
kSupportedBaudRates << "14400";
"14400",
#endif
kSupportedBaudRates << "19200";
kSupportedBaudRates << "38400";
"19200",
"38400",
#if defined(Q_OS_WIN)
kSupportedBaudRates << "56000";
"56000",
#endif
kSupportedBaudRates << "57600";
kSupportedBaudRates << "115200";
"57600",
"115200",
#if defined(Q_OS_WIN)
kSupportedBaudRates << "128000";
"128000",
#endif
kSupportedBaudRates << "230400";
"230400",
#if defined(Q_OS_WIN)
kSupportedBaudRates << "256000";
"256000",
#endif
kSupportedBaudRates << "460800";
kSupportedBaudRates << "500000";
"460800",
"500000",
#if defined(Q_OS_LINUX)
kSupportedBaudRates << "576000";
"576000",
#endif
kSupportedBaudRates << "921600";
"921600",
});
}
void SerialConfiguration::setUsbDirect(bool usbDirect)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment