-
\ No newline at end of file
+
diff --git a/resources/gcscontrolIndicator/gcscontrol_gcs.svg b/resources/gcscontrolIndicator/gcscontrol_gcs.svg
index af965e771f2d..56ed03fa7c4e 100644
--- a/resources/gcscontrolIndicator/gcscontrol_gcs.svg
+++ b/resources/gcscontrolIndicator/gcscontrol_gcs.svg
@@ -17,4 +17,4 @@
-
\ No newline at end of file
+
diff --git a/resources/gcscontrolIndicator/gcscontrol_line.svg b/resources/gcscontrolIndicator/gcscontrol_line.svg
index 8e695693efd9..ddd3f2786ccc 100644
--- a/resources/gcscontrolIndicator/gcscontrol_line.svg
+++ b/resources/gcscontrolIndicator/gcscontrol_line.svg
@@ -17,4 +17,4 @@
-
\ No newline at end of file
+
diff --git a/src/API/QGCCorePlugin.cc b/src/API/QGCCorePlugin.cc
index 15ae0e81bd52..7194d4a8f7d5 100644
--- a/src/API/QGCCorePlugin.cc
+++ b/src/API/QGCCorePlugin.cc
@@ -152,7 +152,7 @@ void QGCCorePlugin::factValueGridCreateDefaultSettings(FactValueGrid* factValueG
FactValueGrid::FontSize defaultFontSize = FactValueGrid::DefaultFontSize;
#else
FactValueGrid::FontSize defaultFontSize = FactValueGrid::MediumFontSize;
-#endif
+#endif
if (factValueGrid->specificVehicleForCard()) {
bool includeFWValues = factValueGrid->vehicleClass() == QGCMAVLink::VehicleClassFixedWing || factValueGrid->vehicleClass() == QGCMAVLink::VehicleClassVTOL || factValueGrid->vehicleClass() == QGCMAVLink::VehicleClassAirship;
diff --git a/src/Android/AndroidInterface.cc b/src/Android/AndroidInterface.cc
index 05e072471680..675fede6e0bb 100644
--- a/src/Android/AndroidInterface.cc
+++ b/src/Android/AndroidInterface.cc
@@ -108,17 +108,17 @@ bool checkStoragePermissions()
{
// Call the Java method to check and request storage permissions
const bool hasPermission = QJniObject::callStaticMethod(
- kJniQGCActivityClassName,
- "checkStoragePermissions",
+ kJniQGCActivityClassName,
+ "checkStoragePermissions",
"()Z"
);
-
+
if (hasPermission) {
qCDebug(AndroidInterfaceLog) << "Storage permissions granted";
} else {
qCWarning(AndroidInterfaceLog) << "Storage permissions not granted";
}
-
+
return hasPermission;
}
diff --git a/src/AutoPilotPlugins/APM/APMSubMotorComponentController.h b/src/AutoPilotPlugins/APM/APMSubMotorComponentController.h
index 97d7386ee520..5387a50702c2 100644
--- a/src/AutoPilotPlugins/APM/APMSubMotorComponentController.h
+++ b/src/AutoPilotPlugins/APM/APMSubMotorComponentController.h
@@ -34,4 +34,3 @@ private slots:
private:
QString _motorDetectionMessages;
};
-
diff --git a/src/AutoPilotPlugins/PX4/ActuatorComponent.cc b/src/AutoPilotPlugins/PX4/ActuatorComponent.cc
index d2ccc780a375..533f729b885c 100644
--- a/src/AutoPilotPlugins/PX4/ActuatorComponent.cc
+++ b/src/AutoPilotPlugins/PX4/ActuatorComponent.cc
@@ -16,7 +16,7 @@
static bool imageProviderAdded{false};
-ActuatorComponent::ActuatorComponent(Vehicle* vehicle, AutoPilotPlugin* autopilot, QObject* parent)
+ActuatorComponent::ActuatorComponent(Vehicle* vehicle, AutoPilotPlugin* autopilot, QObject* parent)
: VehicleComponent(vehicle, autopilot, AutoPilotPlugin::UnknownVehicleComponent, parent)
, _name(tr("Actuators"))
, _actuators(*vehicle->actuators())
diff --git a/src/AutoPilotPlugins/PX4/ActuatorComponent.h b/src/AutoPilotPlugins/PX4/ActuatorComponent.h
index bf4b35b2c6c7..e3ad0dec593f 100644
--- a/src/AutoPilotPlugins/PX4/ActuatorComponent.h
+++ b/src/AutoPilotPlugins/PX4/ActuatorComponent.h
@@ -17,13 +17,13 @@ class Actuators;
class ActuatorComponent : public VehicleComponent
{
Q_OBJECT
-
+
public:
ActuatorComponent(Vehicle* vehicle, AutoPilotPlugin* autopilot, QObject* parent = nullptr);
// Virtuals from VehicleComponent
QStringList setupCompleteChangedTriggerList(void) const final;
-
+
// Virtuals from VehicleComponent
QString name(void) const final;
QString description(void) const final;
diff --git a/src/AutoPilotPlugins/PX4/AirframeComponent.h b/src/AutoPilotPlugins/PX4/AirframeComponent.h
index 122eb8182c86..e2853b9889a5 100644
--- a/src/AutoPilotPlugins/PX4/AirframeComponent.h
+++ b/src/AutoPilotPlugins/PX4/AirframeComponent.h
@@ -19,10 +19,10 @@
class AirframeComponent : public VehicleComponent
{
Q_OBJECT
-
+
public:
AirframeComponent(Vehicle* vehicles, AutoPilotPlugin* autopilot, QObject* parent = nullptr);
-
+
// Virtuals from VehicleComponent
virtual QStringList setupCompleteChangedTriggerList(void) const;
@@ -33,7 +33,7 @@ class AirframeComponent : public VehicleComponent
virtual bool requiresSetup(void) const;
virtual bool setupComplete(void) const;
virtual QUrl setupSource(void) const;
- virtual QUrl summaryQmlSource(void) const;
+ virtual QUrl summaryQmlSource(void) const;
private:
const QString _name;
diff --git a/src/AutoPilotPlugins/PX4/AirframeComponentAirframes.h b/src/AutoPilotPlugins/PX4/AirframeComponentAirframes.h
index 17748b623fa5..10a7fb5da4df 100644
--- a/src/AutoPilotPlugins/PX4/AirframeComponentAirframes.h
+++ b/src/AutoPilotPlugins/PX4/AirframeComponentAirframes.h
@@ -24,7 +24,7 @@ class AirframeComponentAirframes
QString name;
int autostartId;
} AirframeInfo_t;
-
+
typedef struct {
QString name;
QString imageResource;
@@ -34,9 +34,9 @@ class AirframeComponentAirframes
static QMap& get();
static void clear();
static void insert(QString& group, QString& image, QString& name, int id);
-
+
protected:
static QMap rgAirframeTypes;
-
+
private:
};
diff --git a/src/AutoPilotPlugins/PX4/AirframeComponentController.cc b/src/AutoPilotPlugins/PX4/AirframeComponentController.cc
index 0b050a4dd17a..9b1527f47fa5 100644
--- a/src/AutoPilotPlugins/PX4/AirframeComponentController.cc
+++ b/src/AutoPilotPlugins/PX4/AirframeComponentController.cc
@@ -30,19 +30,19 @@ AirframeComponentController::AirframeComponentController(void) :
if (!_typesRegistered) {
_typesRegistered = true;
}
-
+
QStringList usedParams;
usedParams << "SYS_AUTOSTART" << "SYS_AUTOCONFIG";
if (!_allParametersExists(ParameterManager::defaultComponentId, usedParams)) {
return;
}
-
+
// Load up member variables
-
+
bool autostartFound = false;
_autostartId = getParameterFact(ParameterManager::defaultComponentId, "SYS_AUTOSTART")->rawValue().toInt();
_currentVehicleName = QString::number(_autostartId); // Temp val. Replaced with actual vehicle name if found
-
+
for (int tindex = 0; tindex < AirframeComponentAirframes::get().count(); tindex++) {
const AirframeComponentAirframes::AirframeType_t* pType = AirframeComponentAirframes::get().values().at(tindex);
@@ -65,10 +65,10 @@ AirframeComponentController::AirframeComponentController(void) :
}
airframeType->addAirframe(pInfo->name, pInfo->autostartId);
}
-
+
_airframeTypes.append(QVariant::fromValue(airframeType));
}
-
+
if (_autostartId != 0 && !autostartFound) {
_showCustomConfigPanel = true;
emit showCustomConfigPanelChanged(true);
@@ -88,15 +88,15 @@ void AirframeComponentController::changeAutostart(void)
}
QGuiApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
-
+
Fact* sysAutoStartFact = getParameterFact(-1, "SYS_AUTOSTART");
Fact* sysAutoConfigFact = getParameterFact(-1, "SYS_AUTOCONFIG");
-
+
// We need to wait for the vehicleUpdated signals to come back before we reboot
_waitParamWriteSignalCount = 0;
connect(sysAutoStartFact, &Fact::vehicleUpdated, this, &AirframeComponentController::_waitParamWriteSignal);
connect(sysAutoConfigFact, &Fact::vehicleUpdated, this, &AirframeComponentController::_waitParamWriteSignal);
-
+
// We use forceSetValue to ensure params are sent even if the previous value is that same as the new value
sysAutoStartFact->forceSetRawValue(_autostartId);
sysAutoConfigFact->forceSetRawValue(1);
@@ -105,7 +105,7 @@ void AirframeComponentController::changeAutostart(void)
void AirframeComponentController::_waitParamWriteSignal(QVariant value)
{
Q_UNUSED(value);
-
+
_waitParamWriteSignalCount++;
if (_waitParamWriteSignalCount == 2) {
// Now that both params have made it to the vehicle we can reboot it. All these signals are flying
@@ -116,7 +116,7 @@ void AirframeComponentController::_waitParamWriteSignal(QVariant value)
}
void AirframeComponentController::_rebootAfterStackUnwind(void)
-{
+{
_vehicle->sendMavCommand(_vehicle->defaultComponentId(), MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN, true /* showError */, 1.0f);
QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents);
for (unsigned i = 0; i < 2000; i++) {
@@ -132,19 +132,19 @@ AirframeType::AirframeType(const QString& name, const QString& imageResource, QO
_name(name),
_imageResource(imageResource)
{
-
+
}
AirframeType::~AirframeType()
{
-
+
}
void AirframeType::addAirframe(const QString& name, int autostartId)
{
Airframe* airframe = new Airframe(name, autostartId);
Q_CHECK_PTR(airframe);
-
+
_airframes.append(QVariant::fromValue(airframe));
}
@@ -153,10 +153,10 @@ Airframe::Airframe(const QString& name, int autostartId, QObject* parent) :
_name(name),
_autostartId(autostartId)
{
-
+
}
Airframe::~Airframe()
{
-
+
}
diff --git a/src/AutoPilotPlugins/PX4/AirframeComponentController.h b/src/AutoPilotPlugins/PX4/AirframeComponentController.h
index 54f81f5d6c1a..f2ac08b45733 100644
--- a/src/AutoPilotPlugins/PX4/AirframeComponentController.h
+++ b/src/AutoPilotPlugins/PX4/AirframeComponentController.h
@@ -24,37 +24,37 @@ class AirframeComponentController : public FactPanelController
{
Q_OBJECT
QML_ELEMENT
-
+
public:
AirframeComponentController(void);
~AirframeComponentController();
-
+
Q_PROPERTY(bool showCustomConfigPanel MEMBER _showCustomConfigPanel NOTIFY showCustomConfigPanelChanged)
-
+
Q_PROPERTY(QVariantList airframeTypes MEMBER _airframeTypes CONSTANT)
-
+
Q_PROPERTY(QString currentAirframeType MEMBER _currentAirframeType CONSTANT)
Q_PROPERTY(QString currentVehicleName MEMBER _currentVehicleName CONSTANT)
Q_PROPERTY(int currentVehicleIndex MEMBER _currentVehicleIndex CONSTANT)
-
+
Q_PROPERTY(int autostartId MEMBER _autostartId NOTIFY autostartIdChanged)
-
+
Q_INVOKABLE void changeAutostart(void);
-
+
int currentAirframeIndex(void);
void setCurrentAirframeIndex(int newIndex);
-
+
signals:
void autostartIdChanged(int newAutostartId);
void showCustomConfigPanelChanged(bool show);
-
+
private slots:
void _waitParamWriteSignal(QVariant value);
void _rebootAfterStackUnwind(void);
-
+
private:
static bool _typesRegistered;
-
+
QVariantList _airframeTypes;
QString _currentAirframeType;
QString _currentVehicleName;
@@ -69,14 +69,14 @@ class Airframe : public QObject
Q_OBJECT
QML_ELEMENT
QML_UNCREATABLE("")
-
+
public:
Airframe(const QString& name, int autostartId, QObject* parent = nullptr);
~Airframe();
-
+
Q_PROPERTY(QString text MEMBER _name CONSTANT)
Q_PROPERTY(int autostartId MEMBER _autostartId CONSTANT)
-
+
private:
QString _name;
int _autostartId;
@@ -87,17 +87,17 @@ class AirframeType : public QObject
Q_OBJECT
QML_ELEMENT
QML_UNCREATABLE("")
-
+
public:
AirframeType(const QString& name, const QString& imageResource, QObject* parent = nullptr);
~AirframeType();
-
+
Q_PROPERTY(QString name MEMBER _name CONSTANT)
Q_PROPERTY(QString imageResource MEMBER _imageResource CONSTANT)
Q_PROPERTY(QVariantList airframes MEMBER _airframes CONSTANT)
-
+
void addAirframe(const QString& name, int autostartId);
-
+
private:
QString _name;
QString _imageResource;
diff --git a/src/AutoPilotPlugins/PX4/AirframeFactMetaData.xml b/src/AutoPilotPlugins/PX4/AirframeFactMetaData.xml
index d31712b5a83e..d91b37a0046e 100644
--- a/src/AutoPilotPlugins/PX4/AirframeFactMetaData.xml
+++ b/src/AutoPilotPlugins/PX4/AirframeFactMetaData.xml
@@ -377,4 +377,5 @@
SpacecraftFree-Flyer
+
diff --git a/src/AutoPilotPlugins/PX4/FlightModesComponent.cc b/src/AutoPilotPlugins/PX4/FlightModesComponent.cc
index ac7b252cb461..dc7f1dbb3b93 100644
--- a/src/AutoPilotPlugins/PX4/FlightModesComponent.cc
+++ b/src/AutoPilotPlugins/PX4/FlightModesComponent.cc
@@ -20,7 +20,7 @@ struct SwitchListItem {
const char* name;
};
-FlightModesComponent::FlightModesComponent(Vehicle* vehicle, AutoPilotPlugin* autopilot, QObject* parent)
+FlightModesComponent::FlightModesComponent(Vehicle* vehicle, AutoPilotPlugin* autopilot, QObject* parent)
: VehicleComponent(vehicle, autopilot, AutoPilotPlugin::KnownFlightModesVehicleComponent, parent)
, _name(tr("Flight Modes"))
{
diff --git a/src/AutoPilotPlugins/PX4/FlightModesComponent.h b/src/AutoPilotPlugins/PX4/FlightModesComponent.h
index 2cd98d043a27..db306efeb3f4 100644
--- a/src/AutoPilotPlugins/PX4/FlightModesComponent.h
+++ b/src/AutoPilotPlugins/PX4/FlightModesComponent.h
@@ -19,10 +19,10 @@
class FlightModesComponent : public VehicleComponent
{
Q_OBJECT
-
+
public:
FlightModesComponent(Vehicle* vehicle, AutoPilotPlugin* autopilot, QObject* parent = nullptr);
-
+
// Overrides from VehicleComponent
QString name(void) const final;
QString description(void) const final;
@@ -32,7 +32,7 @@ class FlightModesComponent : public VehicleComponent
bool requiresSetup() const final { return false; }
bool setupComplete() const final { return true; }
QStringList setupCompleteChangedTriggerList() const final { return QStringList(); }
-
+
private:
const QString _name;
QVariantList _summaryItems;
diff --git a/src/AutoPilotPlugins/PX4/PX4FlightBehavior.h b/src/AutoPilotPlugins/PX4/PX4FlightBehavior.h
index 264f7fb25b7a..cdc1d8332dd0 100644
--- a/src/AutoPilotPlugins/PX4/PX4FlightBehavior.h
+++ b/src/AutoPilotPlugins/PX4/PX4FlightBehavior.h
@@ -15,13 +15,13 @@
class PX4FlightBehavior : public VehicleComponent
{
Q_OBJECT
-
+
public:
PX4FlightBehavior(Vehicle* vehicle, AutoPilotPlugin* autopilot, QObject* parent = nullptr);
-
+
// Virtuals from VehicleComponent
QStringList setupCompleteChangedTriggerList() const final;
-
+
// Virtuals from VehicleComponent
QString name() const final;
QString description() const final;
diff --git a/src/AutoPilotPlugins/PX4/PX4RadioComponent.h b/src/AutoPilotPlugins/PX4/PX4RadioComponent.h
index e7d69e55c5df..ae15a7285c9b 100644
--- a/src/AutoPilotPlugins/PX4/PX4RadioComponent.h
+++ b/src/AutoPilotPlugins/PX4/PX4RadioComponent.h
@@ -15,13 +15,13 @@
class PX4RadioComponent : public VehicleComponent
{
Q_OBJECT
-
+
public:
PX4RadioComponent(Vehicle* vehicle, AutoPilotPlugin* autopilot, QObject* parent = nullptr);
-
+
// Virtuals from VehicleComponent
virtual QStringList setupCompleteChangedTriggerList(void) const;
-
+
// Virtuals from VehicleComponent
virtual QString name(void) const;
virtual QString description(void) const;
@@ -30,7 +30,7 @@ class PX4RadioComponent : public VehicleComponent
virtual bool setupComplete(void) const;
virtual QUrl setupSource(void) const;
virtual QUrl summaryQmlSource(void) const;
-
+
private:
const QString _name;
QVariantList _summaryItems;
diff --git a/src/AutoPilotPlugins/PX4/PX4SimpleFlightModesController.h b/src/AutoPilotPlugins/PX4/PX4SimpleFlightModesController.h
index 27a748d3e677..586be6139c5c 100644
--- a/src/AutoPilotPlugins/PX4/PX4SimpleFlightModesController.h
+++ b/src/AutoPilotPlugins/PX4/PX4SimpleFlightModesController.h
@@ -23,7 +23,7 @@ class PX4SimpleFlightModesController : public FactPanelController
QML_ELEMENT
public:
PX4SimpleFlightModesController(void);
-
+
Q_PROPERTY(int activeFlightMode READ activeFlightMode NOTIFY activeFlightModeChanged)
Q_PROPERTY(int channelCount MEMBER _channelCount CONSTANT)
Q_PROPERTY(QVariantList rcChannelValues MEMBER _rcChannelValues NOTIFY rcChannelValuesChanged)
@@ -34,10 +34,10 @@ class PX4SimpleFlightModesController : public FactPanelController
void activeFlightModeChanged(int activeFlightMode);
void channelOptionEnabledChanged(void);
void rcChannelValuesChanged(void);
-
+
private slots:
void _rcChannelsChanged(int channelCount, int pwmValues[QGCMAVLink::maxRcChannels]);
-
+
private:
int _activeFlightMode;
int _channelCount;
diff --git a/src/AutoPilotPlugins/PX4/PX4TuningComponent.h b/src/AutoPilotPlugins/PX4/PX4TuningComponent.h
index e620ea8c7d6a..d5a2cefd603f 100644
--- a/src/AutoPilotPlugins/PX4/PX4TuningComponent.h
+++ b/src/AutoPilotPlugins/PX4/PX4TuningComponent.h
@@ -15,13 +15,13 @@
class PX4TuningComponent : public VehicleComponent
{
Q_OBJECT
-
+
public:
PX4TuningComponent(Vehicle* vehicle, AutoPilotPlugin* autopilot, QObject* parent = nullptr);
-
+
// Virtuals from VehicleComponent
QStringList setupCompleteChangedTriggerList(void) const final;
-
+
// Virtuals from VehicleComponent
QString name(void) const final;
QString description(void) const final;
diff --git a/src/AutoPilotPlugins/PX4/PowerComponent.h b/src/AutoPilotPlugins/PX4/PowerComponent.h
index 0647d69af068..0083aac89eb7 100644
--- a/src/AutoPilotPlugins/PX4/PowerComponent.h
+++ b/src/AutoPilotPlugins/PX4/PowerComponent.h
@@ -19,13 +19,13 @@
class PowerComponent : public VehicleComponent
{
Q_OBJECT
-
+
public:
PowerComponent(Vehicle* vehicle, AutoPilotPlugin* autopilot, QObject* parent = nullptr);
-
+
// Overrides from VehicleComponent
QStringList setupCompleteChangedTriggerList(void) const override;
-
+
// Overrides from VehicleComponent
QString name (void) const override;
QString description (void) const override;
diff --git a/src/AutoPilotPlugins/PX4/PowerComponentController.cc b/src/AutoPilotPlugins/PX4/PowerComponentController.cc
index f9de761c187c..2daac1060f24 100644
--- a/src/AutoPilotPlugins/PX4/PowerComponentController.cc
+++ b/src/AutoPilotPlugins/PX4/PowerComponentController.cc
@@ -64,17 +64,17 @@ void PowerComponentController::_handleVehicleTextMessage(int vehicleId, int /* c
QString calStartPrefix("calibration started: ");
if (text.startsWith(calStartPrefix)) {
text = text.right(text.length() - calStartPrefix.length());
-
+
// Split version number and cal type
QStringList parts = text.split(" ");
if (parts.count() != 2) {
emit incorrectFirmwareRevReporting();
return;
}
-
+
#if 0
// FIXME: Cal version check is not working. Needs to be able to cancel, calibration
-
+
int firmwareRev = parts[0].toInt();
if (firmwareRev < _neededFirmwareRev) {
emit oldFirmware();
@@ -91,13 +91,13 @@ void PowerComponentController::_handleVehicleTextMessage(int vehicleId, int /* c
emit connectBattery();
return;
}
-
+
if (text == "Battery connected") {
emit batteryConnected();
return;
}
-
+
QString failedPrefix("calibration failed: ");
if (text.startsWith(failedPrefix)) {
QString failureText = text.right(text.length() - failedPrefix.length());
@@ -106,18 +106,18 @@ void PowerComponentController::_handleVehicleTextMessage(int vehicleId, int /* c
emit disconnectBattery();
return;
}
-
+
emit calibrationFailed(text.right(text.length() - failedPrefix.length()));
return;
}
-
+
QString calCompletePrefix("calibration done:");
if (text.startsWith(calCompletePrefix)) {
_stopCalibration();
emit calibrationSuccess(_warningMessages);
return;
}
-
+
QString warningPrefix("config warning: ");
if (text.startsWith(warningPrefix)) {
_warningMessages << text.right(text.length() - warningPrefix.length());
diff --git a/src/AutoPilotPlugins/PX4/PowerComponentController.h b/src/AutoPilotPlugins/PX4/PowerComponentController.h
index 4172bd82e2ac..2cbf9eb8e152 100644
--- a/src/AutoPilotPlugins/PX4/PowerComponentController.h
+++ b/src/AutoPilotPlugins/PX4/PowerComponentController.h
@@ -24,11 +24,11 @@ class PowerComponentController : public FactPanelController
QML_ELEMENT
public:
PowerComponentController(void);
-
+
Q_INVOKABLE void calibrateEsc(void);
Q_INVOKABLE void startBusConfigureActuators(void);
Q_INVOKABLE void stopBusConfigureActuators(void);
-
+
signals:
void oldFirmware(void);
void newerFirmware(void);
@@ -38,14 +38,14 @@ class PowerComponentController : public FactPanelController
void batteryConnected(void);
void calibrationFailed(const QString& errorMessage);
void calibrationSuccess(const QStringList& warningMessages);
-
+
private slots:
void _handleVehicleTextMessage(int vehicleId, int compId, int severity, QString text, const QString &description);
-
+
private:
void _stopCalibration(void);
void _stopBusConfig(void);
-
+
QStringList _warningMessages;
static const int _neededFirmwareRev = 1;
};
diff --git a/src/AutoPilotPlugins/PX4/SafetyComponent.h b/src/AutoPilotPlugins/PX4/SafetyComponent.h
index 226ff0cdb4b7..57a26685725d 100644
--- a/src/AutoPilotPlugins/PX4/SafetyComponent.h
+++ b/src/AutoPilotPlugins/PX4/SafetyComponent.h
@@ -20,13 +20,13 @@
class SafetyComponent : public VehicleComponent
{
Q_OBJECT
-
+
public:
SafetyComponent(Vehicle* vehicle, AutoPilotPlugin* autopilot, QObject* parent = nullptr);
-
+
// Virtuals from VehicleComponent
QStringList setupCompleteChangedTriggerList(void) const override;
-
+
// Virtuals from VehicleComponent
QString name (void) const override;
QString description (void) const override;
diff --git a/src/AutoPilotPlugins/PX4/SensorsComponent.cc b/src/AutoPilotPlugins/PX4/SensorsComponent.cc
index b849238417d8..d2c585062430 100644
--- a/src/AutoPilotPlugins/PX4/SensorsComponent.cc
+++ b/src/AutoPilotPlugins/PX4/SensorsComponent.cc
@@ -84,12 +84,12 @@ bool SensorsComponent::setupComplete(void) const
QStringList SensorsComponent::setupCompleteChangedTriggerList(void) const
{
QStringList triggers;
-
+
triggers << _deviceIds << _magCalParam << _magEnabledParam;
if (_vehicle->fixedWing() || _vehicle->vtol() || _vehicle->airship()) {
triggers << _airspeedCalTriggerParams;
}
-
+
return triggers;
}
@@ -101,13 +101,13 @@ QUrl SensorsComponent::setupSource(void) const
QUrl SensorsComponent::summaryQmlSource(void) const
{
QString summaryQml;
-
+
if (_vehicle->fixedWing() || _vehicle->vtol() || _vehicle->airship()) {
summaryQml = "qrc:/qml/QGroundControl/AutoPilotPlugins/PX4/SensorsComponentSummaryFixedWing.qml";
} else {
summaryQml = "qrc:/qml/QGroundControl/AutoPilotPlugins/PX4/SensorsComponentSummary.qml";
}
-
+
return QUrl::fromUserInput(summaryQml);
}
diff --git a/src/AutoPilotPlugins/PX4/SensorsComponent.h b/src/AutoPilotPlugins/PX4/SensorsComponent.h
index 2f5329d00fc4..6dc9e8decca5 100644
--- a/src/AutoPilotPlugins/PX4/SensorsComponent.h
+++ b/src/AutoPilotPlugins/PX4/SensorsComponent.h
@@ -19,16 +19,16 @@
class SensorsComponent : public VehicleComponent
{
Q_OBJECT
-
+
public:
SensorsComponent(Vehicle* vehicle, AutoPilotPlugin* autopilot, QObject* parent = nullptr);
-
+
Q_PROPERTY(bool airspeedCalSupported READ _airspeedCalSupported STORED false NOTIFY setupCompleteChanged)
Q_PROPERTY(bool airspeedCalRequired READ _airspeedCalRequired STORED false NOTIFY setupCompleteChanged)
// Virtuals from VehicleComponent
QStringList setupCompleteChangedTriggerList(void) const override;
-
+
// Virtuals from VehicleComponent
virtual QString name(void) const override;
virtual QString description(void) const override;
@@ -37,7 +37,7 @@ class SensorsComponent : public VehicleComponent
virtual bool setupComplete(void) const override;
virtual QUrl setupSource(void) const override;
virtual QUrl summaryQmlSource(void) const override;
-
+
private:
bool _airspeedCalSupported (void) const;
bool _airspeedCalRequired (void) const;
diff --git a/src/AutoPilotPlugins/PX4/SensorsComponentController.cc b/src/AutoPilotPlugins/PX4/SensorsComponentController.cc
index bc39b1b4e02d..a82bed0024b5 100644
--- a/src/AutoPilotPlugins/PX4/SensorsComponentController.cc
+++ b/src/AutoPilotPlugins/PX4/SensorsComponentController.cc
@@ -79,7 +79,7 @@ void SensorsComponentController::_appendStatusLog(const QString& text)
qWarning() << "Internal error";
return;
}
-
+
QString varText = text;
QMetaObject::invokeMethod(_statusLog,
"append",
@@ -90,9 +90,9 @@ void SensorsComponentController::_startLogCalibration(void)
{
_unknownFirmwareVersion = false;
_hideAllCalAreas();
-
+
connect(_vehicle, &Vehicle::textMessageReceived, this, &SensorsComponentController::_handleUASTextMessage);
-
+
_cancelButton->setEnabled(false);
}
@@ -107,7 +107,7 @@ void SensorsComponentController::_startVisualCalibration(void)
_cancelButton->setEnabled(true);
_resetInternalState();
-
+
_progressBar->setProperty("value", 0);
}
@@ -140,7 +140,7 @@ void SensorsComponentController::_resetInternalState(void)
void SensorsComponentController::_stopCalibration(SensorsComponentController::StopCalibrationCode code)
{
disconnect(_vehicle, &Vehicle::textMessageReceived, this, &SensorsComponentController::_handleUASTextMessage);
-
+
_compassButton->setEnabled(true);
_gyroButton->setEnabled(true);
_accelButton->setEnabled(true);
@@ -148,20 +148,20 @@ void SensorsComponentController::_stopCalibration(SensorsComponentController::St
_levelButton->setEnabled(true);
_setOrientationsButton->setEnabled(true);
_cancelButton->setEnabled(false);
-
+
if (code == StopCalibrationSuccess) {
_resetInternalState();
-
+
_progressBar->setProperty("value", 1);
} else {
_progressBar->setProperty("value", 0);
}
-
+
_waitingForCancel = false;
emit waitingForCancelChanged();
_refreshParams();
-
+
switch (code) {
case StopCalibrationSuccess:
_orientationCalAreaHelpText->setProperty("text", tr("Calibration complete"));
@@ -172,19 +172,19 @@ void SensorsComponentController::_stopCalibration(SensorsComponentController::St
emit magCalComplete();
}
break;
-
+
case StopCalibrationCancelled:
emit resetStatusTextArea();
_hideAllCalAreas();
break;
-
+
default:
// Assume failed
_hideAllCalAreas();
qgcApp()->showAppMessage(tr("Calibration failed. Calibration log will be displayed."));
break;
}
-
+
_magCalInProgress = false;
_accelCalInProgress = false;
_gyroCalInProgress = false;
@@ -226,7 +226,7 @@ void SensorsComponentController::_handleUASTextMessage(int uasId, int compId, in
Q_UNUSED(compId);
Q_UNUSED(severity);
Q_UNUSED(description);
-
+
if (uasId != _vehicle->id()) {
return;
}
@@ -234,7 +234,7 @@ void SensorsComponentController::_handleUASTextMessage(int uasId, int compId, in
// Needed for level horizon calibration
text.replace("<", "<");
text.replace(">", ">");
-
+
if (text.contains("progress <")) {
QString percent = text.split("<").last().split(">").first();
bool ok;
@@ -251,12 +251,12 @@ void SensorsComponentController::_handleUASTextMessage(int uasId, int compId, in
_appendStatusLog(text);
qCDebug(SensorsComponentControllerLog) << text;
-
+
if (_unknownFirmwareVersion) {
// We don't know how to do visual cal with the version of firwmare
return;
}
-
+
// All calibration messages start with [cal]
QString calPrefix("[cal] ");
if (!text.startsWith(calPrefix)) {
@@ -267,7 +267,7 @@ void SensorsComponentController::_handleUASTextMessage(int uasId, int compId, in
QString calStartPrefix("calibration started: ");
if (text.startsWith(calStartPrefix)) {
text = text.right(text.length() - calStartPrefix.length());
-
+
// Split version number and cal type
QStringList parts = text.split(" ");
if (parts.count() != 2 && parts[0].toInt() != _supportedFirmwareCalVersion) {
@@ -277,9 +277,9 @@ void SensorsComponentController::_handleUASTextMessage(int uasId, int compId, in
qDebug() << msg;
return;
}
-
+
_startVisualCalibration();
-
+
text = parts[1];
if (text == "accel" || text == "mag" || text == "gyro") {
// Reset all progress indication
@@ -295,7 +295,7 @@ void SensorsComponentController::_handleUASTextMessage(int uasId, int compId, in
_orientationCalRightSideInProgress = false;
_orientationCalNoseDownSideInProgress = false;
_orientationCalTailDownSideInProgress = false;
-
+
// Reset all visibility
_orientationCalDownSideVisible = false;
_orientationCalUpsideDownSideVisible = false;
@@ -303,9 +303,9 @@ void SensorsComponentController::_handleUASTextMessage(int uasId, int compId, in
_orientationCalRightSideVisible = false;
_orientationCalTailDownSideVisible = false;
_orientationCalNoseDownSideVisible = false;
-
+
_orientationCalAreaHelpText->setProperty("text", tr("Place your vehicle into one of the Incomplete orientations shown below and hold it still"));
-
+
if (text == "accel") {
_accelCalInProgress = true;
_orientationCalDownSideVisible = true;
@@ -351,11 +351,11 @@ void SensorsComponentController::_handleUASTextMessage(int uasId, int compId, in
}
return;
}
-
+
if (text.endsWith("orientation detected")) {
QString side = text.section(" ", 0, 0);
qCDebug(SensorsComponentControllerLog) << "Side started" << side;
-
+
if (side == "down") {
_orientationCalDownSideInProgress = true;
if (_magCalInProgress) {
@@ -387,22 +387,22 @@ void SensorsComponentController::_handleUASTextMessage(int uasId, int compId, in
_orientationCalTailDownSideRotate = true;
}
}
-
+
if (_magCalInProgress) {
_orientationCalAreaHelpText->setProperty("text", tr("Rotate the vehicle continuously as shown in the diagram until marked as Completed"));
} else {
_orientationCalAreaHelpText->setProperty("text", tr("Hold still in the current orientation"));
}
-
+
emit orientationCalSidesInProgressChanged();
emit orientationCalSidesRotateChanged();
return;
}
-
+
if (text.endsWith("side done, rotate to a different side")) {
QString side = text.section(" ", 0, 0);
qCDebug(SensorsComponentControllerLog) << "Side finished" << side;
-
+
if (side == "down") {
_orientationCalDownSideInProgress = false;
_orientationCalDownSideDone = true;
@@ -428,7 +428,7 @@ void SensorsComponentController::_handleUASTextMessage(int uasId, int compId, in
_orientationCalTailDownSideDone = true;
_orientationCalTailDownSideRotate = false;
}
-
+
_orientationCalAreaHelpText->setProperty("text", tr("Place you vehicle into one of the orientations shown below and hold it still"));
emit orientationCalSidesInProgressChanged();
@@ -441,18 +441,18 @@ void SensorsComponentController::_handleUASTextMessage(int uasId, int compId, in
_orientationCalAreaHelpText->setProperty("text", tr("Orientation already completed, place you vehicle into one of the incomplete orientations shown below and hold it still"));
return;
}
-
+
QString calCompletePrefix("calibration done:");
if (text.startsWith(calCompletePrefix)) {
_stopCalibration(StopCalibrationSuccess);
return;
}
-
+
if (text.startsWith("calibration cancelled")) {
_stopCalibration(_waitingForCancel ? StopCalibrationCancelled : StopCalibrationFailed);
return;
}
-
+
if (text.startsWith("calibration failed")) {
_stopCalibration(StopCalibrationFailed);
return;
@@ -462,13 +462,13 @@ void SensorsComponentController::_handleUASTextMessage(int uasId, int compId, in
void SensorsComponentController::_refreshParams(void)
{
QStringList fastRefreshList;
-
+
// We ask for a refresh on these first so that the rotation combo show up as fast as possible
fastRefreshList << "CAL_MAG0_ID" << "CAL_MAG1_ID" << "CAL_MAG2_ID" << "CAL_MAG0_ROT" << "CAL_MAG1_ROT" << "CAL_MAG2_ROT";
for (const QString ¶mName : std::as_const(fastRefreshList)) {
_vehicle->parameterManager()->refreshParameter(ParameterManager::defaultComponentId, paramName);
}
-
+
// Now ask for all to refresh
_vehicle->parameterManager()->refreshParametersPrefix(ParameterManager::defaultComponentId, "CAL_");
_vehicle->parameterManager()->refreshParametersPrefix(ParameterManager::defaultComponentId, "SENS_");
diff --git a/src/AutoPilotPlugins/PX4/SensorsComponentController.h b/src/AutoPilotPlugins/PX4/SensorsComponentController.h
index bf42aae872e0..99d5622c309d 100644
--- a/src/AutoPilotPlugins/PX4/SensorsComponentController.h
+++ b/src/AutoPilotPlugins/PX4/SensorsComponentController.h
@@ -28,10 +28,10 @@ class SensorsComponentController : public FactPanelController
QML_ELEMENT
public:
SensorsComponentController(void);
-
+
Q_PROPERTY(QQuickItem* statusLog MEMBER _statusLog)
Q_PROPERTY(QQuickItem* progressBar MEMBER _progressBar)
-
+
Q_PROPERTY(QQuickItem* compassButton MEMBER _compassButton)
Q_PROPERTY(QQuickItem* gyroButton MEMBER _gyroButton)
Q_PROPERTY(QQuickItem* accelButton MEMBER _accelButton)
@@ -40,39 +40,39 @@ class SensorsComponentController : public FactPanelController
Q_PROPERTY(QQuickItem* cancelButton MEMBER _cancelButton)
Q_PROPERTY(QQuickItem* setOrientationsButton MEMBER _setOrientationsButton)
Q_PROPERTY(QQuickItem* orientationCalAreaHelpText MEMBER _orientationCalAreaHelpText)
-
+
Q_PROPERTY(bool showOrientationCalArea MEMBER _showOrientationCalArea NOTIFY showOrientationCalAreaChanged)
-
+
Q_PROPERTY(bool orientationCalDownSideDone MEMBER _orientationCalDownSideDone NOTIFY orientationCalSidesDoneChanged)
Q_PROPERTY(bool orientationCalUpsideDownSideDone MEMBER _orientationCalUpsideDownSideDone NOTIFY orientationCalSidesDoneChanged)
Q_PROPERTY(bool orientationCalLeftSideDone MEMBER _orientationCalLeftSideDone NOTIFY orientationCalSidesDoneChanged)
Q_PROPERTY(bool orientationCalRightSideDone MEMBER _orientationCalRightSideDone NOTIFY orientationCalSidesDoneChanged)
Q_PROPERTY(bool orientationCalNoseDownSideDone MEMBER _orientationCalNoseDownSideDone NOTIFY orientationCalSidesDoneChanged)
Q_PROPERTY(bool orientationCalTailDownSideDone MEMBER _orientationCalTailDownSideDone NOTIFY orientationCalSidesDoneChanged)
-
+
Q_PROPERTY(bool orientationCalDownSideVisible MEMBER _orientationCalDownSideVisible NOTIFY orientationCalSidesVisibleChanged)
Q_PROPERTY(bool orientationCalUpsideDownSideVisible MEMBER _orientationCalUpsideDownSideVisible NOTIFY orientationCalSidesVisibleChanged)
Q_PROPERTY(bool orientationCalLeftSideVisible MEMBER _orientationCalLeftSideVisible NOTIFY orientationCalSidesVisibleChanged)
Q_PROPERTY(bool orientationCalRightSideVisible MEMBER _orientationCalRightSideVisible NOTIFY orientationCalSidesVisibleChanged)
Q_PROPERTY(bool orientationCalNoseDownSideVisible MEMBER _orientationCalNoseDownSideVisible NOTIFY orientationCalSidesVisibleChanged)
Q_PROPERTY(bool orientationCalTailDownSideVisible MEMBER _orientationCalTailDownSideVisible NOTIFY orientationCalSidesVisibleChanged)
-
+
Q_PROPERTY(bool orientationCalDownSideInProgress MEMBER _orientationCalDownSideInProgress NOTIFY orientationCalSidesInProgressChanged)
Q_PROPERTY(bool orientationCalUpsideDownSideInProgress MEMBER _orientationCalUpsideDownSideInProgress NOTIFY orientationCalSidesInProgressChanged)
Q_PROPERTY(bool orientationCalLeftSideInProgress MEMBER _orientationCalLeftSideInProgress NOTIFY orientationCalSidesInProgressChanged)
Q_PROPERTY(bool orientationCalRightSideInProgress MEMBER _orientationCalRightSideInProgress NOTIFY orientationCalSidesInProgressChanged)
Q_PROPERTY(bool orientationCalNoseDownSideInProgress MEMBER _orientationCalNoseDownSideInProgress NOTIFY orientationCalSidesInProgressChanged)
Q_PROPERTY(bool orientationCalTailDownSideInProgress MEMBER _orientationCalTailDownSideInProgress NOTIFY orientationCalSidesInProgressChanged)
-
+
Q_PROPERTY(bool orientationCalDownSideRotate MEMBER _orientationCalDownSideRotate NOTIFY orientationCalSidesRotateChanged)
Q_PROPERTY(bool orientationCalUpsideDownSideRotate MEMBER _orientationCalUpsideDownSideRotate NOTIFY orientationCalSidesRotateChanged)
Q_PROPERTY(bool orientationCalLeftSideRotate MEMBER _orientationCalLeftSideRotate NOTIFY orientationCalSidesRotateChanged)
Q_PROPERTY(bool orientationCalRightSideRotate MEMBER _orientationCalRightSideRotate NOTIFY orientationCalSidesRotateChanged)
Q_PROPERTY(bool orientationCalNoseDownSideRotate MEMBER _orientationCalNoseDownSideRotate NOTIFY orientationCalSidesRotateChanged)
Q_PROPERTY(bool orientationCalTailDownSideRotate MEMBER _orientationCalTailDownSideRotate NOTIFY orientationCalSidesRotateChanged)
-
+
Q_PROPERTY(bool waitingForCancel MEMBER _waitingForCancel NOTIFY waitingForCancelChanged)
-
+
Q_INVOKABLE void calibrateCompass(void);
Q_INVOKABLE void calibrateGyro(void);
Q_INVOKABLE void calibrateAccel(void);
@@ -81,7 +81,7 @@ class SensorsComponentController : public FactPanelController
Q_INVOKABLE void cancelCalibration(void);
Q_INVOKABLE bool usingUDPLink(void);
Q_INVOKABLE void resetFactoryParameters();
-
+
signals:
void showGyroCalAreaChanged(void);
void showOrientationCalAreaChanged(void);
@@ -96,7 +96,7 @@ class SensorsComponentController : public FactPanelController
private slots:
void _handleUASTextMessage(int uasId, int compId, int severity, QString text, const QString &description);
void _handleParametersReset(bool success);
-
+
private:
void _startLogCalibration(void);
void _startVisualCalibration(void);
@@ -104,14 +104,14 @@ private slots:
void _refreshParams(void);
void _hideAllCalAreas(void);
void _resetInternalState(void);
-
+
enum StopCalibrationCode {
StopCalibrationSuccess,
StopCalibrationFailed,
StopCalibrationCancelled
};
void _stopCalibration(StopCalibrationCode code);
-
+
void _updateAndEmitShowOrientationCalArea(bool show);
QQuickItem* _statusLog;
@@ -124,10 +124,10 @@ private slots:
QQuickItem* _cancelButton;
QQuickItem* _setOrientationsButton;
QQuickItem* _orientationCalAreaHelpText;
-
+
bool _showGyroCalArea;
bool _showOrientationCalArea;
-
+
bool _gyroCalInProgress;
bool _magCalInProgress;
bool _accelCalInProgress;
@@ -140,30 +140,30 @@ private slots:
bool _orientationCalRightSideDone;
bool _orientationCalNoseDownSideDone;
bool _orientationCalTailDownSideDone;
-
+
bool _orientationCalDownSideVisible;
bool _orientationCalUpsideDownSideVisible;
bool _orientationCalLeftSideVisible;
bool _orientationCalRightSideVisible;
bool _orientationCalNoseDownSideVisible;
bool _orientationCalTailDownSideVisible;
-
+
bool _orientationCalDownSideInProgress;
bool _orientationCalUpsideDownSideInProgress;
bool _orientationCalLeftSideInProgress;
bool _orientationCalRightSideInProgress;
bool _orientationCalNoseDownSideInProgress;
bool _orientationCalTailDownSideInProgress;
-
+
bool _orientationCalDownSideRotate;
bool _orientationCalUpsideDownSideRotate;
bool _orientationCalLeftSideRotate;
bool _orientationCalRightSideRotate;
bool _orientationCalNoseDownSideRotate;
bool _orientationCalTailDownSideRotate;
-
+
bool _unknownFirmwareVersion;
bool _waitingForCancel;
-
+
static const int _supportedFirmwareCalVersion = 2;
};
diff --git a/src/Camera/QGCCameraManager.cc b/src/Camera/QGCCameraManager.cc
index 97ff2bbd9884..0c570230dc45 100644
--- a/src/Camera/QGCCameraManager.cc
+++ b/src/Camera/QGCCameraManager.cc
@@ -442,8 +442,8 @@ static void _requestCameraInfoCommandResultHandler(void *resultHandlerData, int
auto *cameraInfo = static_cast(resultHandlerData);
if (ack.result != MAV_RESULT_ACCEPTED) {
- qCDebug(CameraManagerLog) << "MAV_CMD_REQUEST_CAMERA_INFORMATION failed. compId" << QGCMAVLink::compIdToString(cameraInfo->compID)
- << "Result:" << QGCMAVLink::mavResultToString(ack.result)
+ qCDebug(CameraManagerLog) << "MAV_CMD_REQUEST_CAMERA_INFORMATION failed. compId" << QGCMAVLink::compIdToString(cameraInfo->compID)
+ << "Result:" << QGCMAVLink::mavResultToString(ack.result)
<< "FailureCode:" << Vehicle::mavCmdResultFailureCodeToString(failureCode)
<< "retryCount:" << cameraInfo->retryCount;
_handleCameraInfoRetry(cameraInfo);
@@ -455,9 +455,9 @@ static void _requestCameraInfoMessageResultHandler(void *resultHandlerData, MAV_
auto *cameraInfo = static_cast(resultHandlerData);
if (result != MAV_RESULT_ACCEPTED) {
- qCDebug(CameraManagerLog) << "MAV_CMD_REQUEST_MESSAGE:MAVLINK_MSG_ID_CAMERA_INFORMATION failed. compId" << QGCMAVLink::compIdToString(cameraInfo->compID)
- << "Result:" << QGCMAVLink::mavResultToString(result)
- << "FailureCode:" << Vehicle::requestMessageResultHandlerFailureCodeToString(failureCode)
+ qCDebug(CameraManagerLog) << "MAV_CMD_REQUEST_MESSAGE:MAVLINK_MSG_ID_CAMERA_INFORMATION failed. compId" << QGCMAVLink::compIdToString(cameraInfo->compID)
+ << "Result:" << QGCMAVLink::mavResultToString(result)
+ << "FailureCode:" << Vehicle::requestMessageResultHandlerFailureCodeToString(failureCode)
<< "retryCount:" << cameraInfo->retryCount;
_handleCameraInfoRetry(cameraInfo);
}
diff --git a/src/Camera/camera_definition_example.xml b/src/Camera/camera_definition_example.xml
index fa8fd9eee635..c2400f44e822 100644
--- a/src/Camera/camera_definition_example.xml
+++ b/src/Camera/camera_definition_example.xml
@@ -260,7 +260,7 @@
-
+
diff --git a/src/Comms/MockLink/MockLink.General.MetaData.json b/src/Comms/MockLink/MockLink.General.MetaData.json
index cd76f4b100da..1204020e5f1d 100644
--- a/src/Comms/MockLink/MockLink.General.MetaData.json
+++ b/src/Comms/MockLink/MockLink.General.MetaData.json
@@ -7,4 +7,4 @@
"metadataTypes": [
{"type": 1, "uri": "mftp://[;comp=1]parameter.json.xz", "fileCrc": 1}
]
-}
+}
diff --git a/src/Comms/MockLink/MockLink.cc b/src/Comms/MockLink/MockLink.cc
index 5c2b90daaf7a..9a03af0284a3 100644
--- a/src/Comms/MockLink/MockLink.cc
+++ b/src/Comms/MockLink/MockLink.cc
@@ -2096,7 +2096,7 @@ void MockLink::_sendVideoInfo()
}
}
-void MockLink::_sendAvailableMode(uint8_t modeIndexOneBased)
+void MockLink::_sendAvailableMode(uint8_t modeIndexOneBased)
{
if (modeIndexOneBased > _availableModesCount()) {
qCWarning(MockLinkLog) << "modeIndexOneBased out of range" << modeIndexOneBased << _availableModesCount();
diff --git a/src/Comms/MockLink/MockLinkFTP.h b/src/Comms/MockLink/MockLinkFTP.h
index 0bdb89378283..b3f79507481d 100644
--- a/src/Comms/MockLink/MockLinkFTP.h
+++ b/src/Comms/MockLink/MockLinkFTP.h
@@ -114,4 +114,3 @@ class MockLinkFTP : public QObject
static constexpr uint8_t _sessionId = 1; ///< We only support a single fixed session
};
-
diff --git a/src/Comms/MockLink/MockLinkMissionItemHandler.h b/src/Comms/MockLink/MockLinkMissionItemHandler.h
index 88bcc8be1175..eefd9d43df38 100644
--- a/src/Comms/MockLink/MockLinkMissionItemHandler.h
+++ b/src/Comms/MockLink/MockLinkMissionItemHandler.h
@@ -111,4 +111,3 @@ private slots:
bool _failReadRequest1FirstResponse = true;
bool _failWriteMissionCountFirstResponse = true;
};
-
diff --git a/src/FactSystem/FactMetaData.h b/src/FactSystem/FactMetaData.h
index 655e218c4a32..11b89f90e349 100644
--- a/src/FactSystem/FactMetaData.h
+++ b/src/FactSystem/FactMetaData.h
@@ -30,7 +30,7 @@ class FactMetaData : public QObject
QML_ELEMENT
friend class SettingsManager;
-
+
public:
enum ValueType_t {
valueTypeUint8,
diff --git a/src/FirmwarePlugin/APM/APMFirmwarePlugin.cc b/src/FirmwarePlugin/APM/APMFirmwarePlugin.cc
index 1860dedfaff6..405d89a3d0a9 100644
--- a/src/FirmwarePlugin/APM/APMFirmwarePlugin.cc
+++ b/src/FirmwarePlugin/APM/APMFirmwarePlugin.cc
@@ -644,7 +644,7 @@ QString APMFirmwarePlugin::getHobbsMeter(Vehicle* vehicle) const
const QString timeStr = QString::asprintf("%04d:%02d:%02d", hours, minutes, seconds);
qCDebug(VehicleLog) << "Hobbs Meter string:" << timeStr;
return timeStr;
-}
+}
bool APMFirmwarePlugin::hasGripper(const Vehicle *vehicle) const
{
diff --git a/src/FirmwarePlugin/APM/ArduPlaneFirmwarePlugin.cc b/src/FirmwarePlugin/APM/ArduPlaneFirmwarePlugin.cc
index 6cd17e122211..d8e04f52218d 100644
--- a/src/FirmwarePlugin/APM/ArduPlaneFirmwarePlugin.cc
+++ b/src/FirmwarePlugin/APM/ArduPlaneFirmwarePlugin.cc
@@ -43,7 +43,7 @@ ArduPlaneFirmwarePlugin::ArduPlaneFirmwarePlugin(QObject *parent)
{ APMPlaneMode::THERMAL , _thermalFlightMode },
{ APMPlaneMode::LOITER2QLAND , _loiter2qlandFlightMode },
{ APMPlaneMode::AUTOLAND , _autolandFlightMode },
-
+
});
static FlightModeList availableFlightModes = {
diff --git a/src/FirmwarePlugin/PX4/PX4ParameterMetaData.cc b/src/FirmwarePlugin/PX4/PX4ParameterMetaData.cc
index 9dc112a8d4f2..8a4953869cbb 100644
--- a/src/FirmwarePlugin/PX4/PX4ParameterMetaData.cc
+++ b/src/FirmwarePlugin/PX4/PX4ParameterMetaData.cc
@@ -70,9 +70,9 @@ QVariant PX4ParameterMetaData::_stringToTypedVariant(const QString& string, Fact
convertTo = QMetaType::QByteArray;
break;
}
-
+
*convertOk = var.convert(QMetaType(convertTo));
-
+
return var;
}
@@ -94,43 +94,43 @@ void PX4ParameterMetaData::loadParameterFactMetaDataFile(const QString& metaData
qWarning() << "Internal error: metaDataFile mission" << metaDataFile;
return;
}
-
+
if (!xmlFile.open(QIODevice::ReadOnly)) {
qWarning() << "Internal error: Unable to open parameter file:" << metaDataFile << xmlFile.errorString();
return;
}
-
+
QXmlStreamReader xml(xmlFile.readAll());
xmlFile.close();
if (xml.hasError()) {
qWarning() << "Badly formed XML" << xml.errorString();
return;
}
-
+
QString factGroup;
QString errorString;
FactMetaData* metaData = nullptr;
int xmlState = XmlStateNone;
bool badMetaData = true;
-
+
while (!xml.atEnd()) {
if (xml.isStartElement()) {
QString elementName = xml.name().toString();
-
+
if (elementName == "parameters") {
if (xmlState != XmlStateNone) {
qWarning() << "Badly formed XML";
return;
}
xmlState = XmlStateFoundParameters;
-
+
} else if (elementName == "version") {
if (xmlState != XmlStateFoundParameters) {
qWarning() << "Badly formed XML";
return;
}
xmlState = XmlStateFoundVersion;
-
+
bool convertOk;
QString strVersion = xml.readElementText();
int intVersion = strVersion.toInt(&convertOk);
@@ -143,7 +143,7 @@ void PX4ParameterMetaData::loadParameterFactMetaDataFile(const QString& metaData
qDebug() << "Parameter version stamp too old, skipping load. Found:" << intVersion << "Want: 3 File:" << metaDataFile;
return;
}
-
+
} else if (elementName == "parameter_version_major") {
// Just skip over for now
} else if (elementName == "parameter_version_minor") {
@@ -156,30 +156,30 @@ void PX4ParameterMetaData::loadParameterFactMetaDataFile(const QString& metaData
return;
}
xmlState = XmlStateFoundGroup;
-
+
if (!xml.attributes().hasAttribute("name")) {
qWarning() << "Badly formed XML";
return;
}
factGroup = xml.attributes().value("name").toString();
qCDebug(PX4ParameterMetaDataLog) << "Found group: " << factGroup;
-
+
} else if (elementName == "parameter") {
if (xmlState != XmlStateFoundGroup) {
qWarning() << "Badly formed XML";
return;
}
xmlState = XmlStateFoundParameter;
-
+
if (!xml.attributes().hasAttribute("name") || !xml.attributes().hasAttribute("type")) {
qWarning() << "Badly formed XML";
return;
}
-
+
QString name = xml.attributes().value("name").toString();
QString type = xml.attributes().value("type").toString();
QString strDefault = xml.attributes().value("default").toString();
-
+
QString category = xml.attributes().value("category").toString();
if (category.isEmpty()) {
category = QStringLiteral("Standard");
@@ -208,7 +208,7 @@ void PX4ParameterMetaData::loadParameterFactMetaDataFile(const QString& metaData
qWarning() << "Parameter meta data with bad type:" << type << " name:" << name;
return;
}
-
+
// Now that we know type we can create meta data object and add it to the system
metaData = new FactMetaData(foundType, this);
if (_mapParameterName2FactMetaData.contains(name)) {
@@ -224,10 +224,10 @@ void PX4ParameterMetaData::loadParameterFactMetaDataFile(const QString& metaData
metaData->setGroup(factGroup);
metaData->setReadOnly(readOnly);
metaData->setVolatileValue(volatileValue);
-
+
if (xml.attributes().hasAttribute("default") && !strDefault.isEmpty()) {
QVariant varDefault;
-
+
if (metaData->convertAndValidateRaw(strDefault, false, varDefault, errorString)) {
metaData->setRawDefaultValue(varDefault);
} else {
@@ -235,7 +235,7 @@ void PX4ParameterMetaData::loadParameterFactMetaDataFile(const QString& metaData
}
}
}
-
+
} else {
// We should be getting meta data now
if (xmlState != XmlStateFoundParameter) {
diff --git a/src/FollowMe/FollowMe.cc b/src/FollowMe/FollowMe.cc
index 352741947423..8e903bd7c5f4 100644
--- a/src/FollowMe/FollowMe.cc
+++ b/src/FollowMe/FollowMe.cc
@@ -29,7 +29,7 @@ FollowMe::FollowMe(QObject *parent)
// qCDebug(FollowMeLog) << Q_FUNC_INFO << this;
_gcsMotionReportTimer->setSingleShot(false);
- // We set the update interval to a fixed amount of time.
+ // We set the update interval to a fixed amount of time.
// Even if the device can't update this quickly we'll pick up a new value on the next time around.
// We can't trust the value for update interval which comes from the actual device.
_gcsMotionReportTimer->setInterval(kMotionUpdateInterval);
diff --git a/src/GPS/NTRIP.cc b/src/GPS/NTRIP.cc
index 10140b24fd00..72121fab3389 100644
--- a/src/GPS/NTRIP.cc
+++ b/src/GPS/NTRIP.cc
@@ -57,8 +57,8 @@ NTRIPManager::NTRIPManager(QObject* parent)
{
qCDebug(NTRIPLog) << "NTRIPManager created";
_startupTimer.start();
-
- _rtcmMavlink = qgcApp() ? qgcApp()->findChild() : nullptr;
+
+ _rtcmMavlink = qgcApp() ? qgcApp()->findChild() : nullptr;
if (!_rtcmMavlink) {
QObject* parentObj = qgcApp() ? static_cast(qgcApp()) : static_cast(this);
// Ensure an RTCMMavlink helper exists for forwarding RTCM messages
@@ -141,7 +141,7 @@ bool RTCMParser::addByte(uint8_t byte)
_lengthBytesRead = 0;
}
break;
-
+
case ReadingLength:
_lengthBytes[_lengthBytesRead++] = byte;
_buffer[_bytesRead++] = byte;
@@ -155,7 +155,7 @@ bool RTCMParser::addByte(uint8_t byte)
}
}
break;
-
+
case ReadingMessage:
_buffer[_bytesRead++] = byte;
if (_bytesRead >= _messageLength + 3) { // +3 for header
@@ -163,7 +163,7 @@ bool RTCMParser::addByte(uint8_t byte)
_crcBytesRead = 0;
}
break;
-
+
case ReadingCRC:
_crcBytes[_crcBytesRead++] = byte;
if (_crcBytesRead == 3) {
@@ -192,7 +192,7 @@ NTRIPTCPLink::NTRIPTCPLink(const QString& hostAddress,
const QString& whitelist,
bool useSpartn,
QObject* parent)
- : QObject(parent)
+ : QObject(parent)
, _hostAddress(hostAddress)
, _port(port)
, _username(username)
@@ -200,8 +200,8 @@ NTRIPTCPLink::NTRIPTCPLink(const QString& hostAddress,
, _mountpoint(mountpoint)
, _useSpartn(useSpartn)
{
-
-
+
+
if (_useSpartn) {
// SPARTN path does not use RTCM whitelist or parser
if (!whitelist.isEmpty()) {
@@ -274,10 +274,10 @@ void NTRIPTCPLink::_hardwareConnect()
// allocate the appropriate socket type
// SPARTN selection (TLS on 2102 or when explicitly enabled)
if (_useSpartn) {
- QSslSocket* sslSocket = new QSslSocket(this);
+ QSslSocket* sslSocket = new QSslSocket(this);
_socket = sslSocket;
} else {
- _socket = new QTcpSocket(this);
+ _socket = new QTcpSocket(this);
}
_socket->setSocketOption(QAbstractSocket::KeepAliveOption, 1);
@@ -828,12 +828,12 @@ void NTRIPManager::startNTRIP()
return;
}
_startStopBusy = true; // guard begin
-
+
qCDebug(NTRIPLog) << "startNTRIP: begin";
if (_tcpLink) {
_startStopBusy = false; // already started; release guard
- return;
+ return;
}
_ntripStatus = tr("Connecting...");
@@ -909,8 +909,8 @@ void NTRIPManager::startNTRIP()
}
}, Qt::QueuedConnection);
-
- if (_useSpartn) {
+
+ if (_useSpartn) {
connect(_tcpLink, &NTRIPTCPLink::SPARTNDataUpdate, this, [this](const QByteArray& data){
static uint32_t spartn_count = 0;
if ((spartn_count++ % 50) == 0) {
@@ -924,14 +924,14 @@ void NTRIPManager::startNTRIP()
emit casterStatusChanged(_casterStatus);
_rtcmDataReceived(data);
- }, Qt::QueuedConnection);
+ }, Qt::QueuedConnection);
} else {
connect(_tcpLink, &NTRIPTCPLink::RTCMDataUpdate, this, &NTRIPManager::_rtcmDataReceived, Qt::QueuedConnection);
}
_tcpThread->start();
qCDebug(NTRIPLog) << "NTRIP started";
-
+
_startStopBusy = false; // guard end
}
@@ -1107,7 +1107,7 @@ void NTRIPManager::_sendGGA()
// Try common GPS fact names
Fact* latF = gps->getFact(QStringLiteral("lat"));
Fact* lonF = gps->getFact(QStringLiteral("lon"));
-
+
// If "lat"/"lon" don't work, try alternative names
if (!latF) latF = gps->getFact(QStringLiteral("latitude"));
if (!lonF) lonF = gps->getFact(QStringLiteral("longitude"));
@@ -1115,28 +1115,28 @@ void NTRIPManager::_sendGGA()
if (!lonF) lonF = gps->getFact(QStringLiteral("lon_deg"));
if (!latF) latF = gps->getFact(QStringLiteral("latitude_deg"));
if (!lonF) lonF = gps->getFact(QStringLiteral("longitude_deg"));
-
+
if (latF && lonF) {
const double glat = latF->rawValue().toDouble();
const double glon = lonF->rawValue().toDouble();
-
+
// GPS coordinates might be in 1e-7 degrees format (int32 scaled)
double lat_deg = glat;
double lon_deg = glon;
-
+
// Check if values look like scaled integers (> 1000 suggests 1e-7 format)
if (qAbs(glat) > 1000.0 || qAbs(glon) > 1000.0) {
lat_deg = glat * 1e-7;
lon_deg = glon * 1e-7;
}
-
- if (qIsFinite(lat_deg) && qIsFinite(lon_deg) &&
+
+ if (qIsFinite(lat_deg) && qIsFinite(lon_deg) &&
!(lat_deg == 0.0 && lon_deg == 0.0) &&
qAbs(lat_deg) <= 90.0 && qAbs(lon_deg) <= 180.0) {
-
+
coord = QGeoCoordinate(lat_deg, lon_deg);
validCoord = true;
-
+
// Get altitude from GPS if available
Fact* altF = gps->getFact(QStringLiteral("alt"));
if (!altF) altF = gps->getFact(QStringLiteral("altitude"));
@@ -1145,16 +1145,16 @@ void NTRIPManager::_sendGGA()
// Altitude might be in mm or cm, convert to meters
if (qAbs(raw_alt) > 10000.0) { // > 10km suggests mm format
alt_msl = raw_alt * 1e-3; // mm to meters
- } else if (qAbs(raw_alt) > 1000.0) { // > 1km suggests cm format
+ } else if (qAbs(raw_alt) > 1000.0) { // > 1km suggests cm format
alt_msl = raw_alt * 1e-2; // cm to meters
} else {
alt_msl = raw_alt; // already in meters
}
if (!qIsFinite(alt_msl)) alt_msl = 0.0;
}
-
+
srcUsed = QStringLiteral("GPS Raw");
- qCDebug(NTRIPLog) << "NTRIP: Using raw GPS data for GGA"
+ qCDebug(NTRIPLog) << "NTRIP: Using raw GPS data for GGA"
<< "lat:" << lat_deg << "lon:" << lon_deg << "alt:" << alt_msl;
}
}
@@ -1208,14 +1208,14 @@ void NTRIPManager::_sendGGA()
}
const QByteArray gga = _makeGGA(coord, alt_msl);
-
+
// Debug: Log the GGA sentence being sent (but reduce spam)
static int gga_send_count = 0;
if ((gga_send_count++ % 5) == 0) { // Log every 5th GGA to reduce spam
qCDebug(NTRIPLog) << "NTRIP: Sending GGA:" << gga;
qCDebug(NTRIPLog) << "NTRIP: GGA coord:" << coord << "alt:" << alt_msl << "source:" << srcUsed;
}
-
+
QMetaObject::invokeMethod(_tcpLink, "sendNMEA",
Qt::QueuedConnection,
Q_ARG(QByteArray, gga));
@@ -1301,4 +1301,4 @@ void NTRIPManager::_onCasterDisconnected(const QString& reason)
_casterStatus = CasterStatus::OtherError;
}
emit casterStatusChanged(_casterStatus);
-}
\ No newline at end of file
+}
diff --git a/src/GPS/NTRIP.h b/src/GPS/NTRIP.h
index f2d634bf4348..60b3f747a14d 100644
--- a/src/GPS/NTRIP.h
+++ b/src/GPS/NTRIP.h
@@ -38,7 +38,7 @@ class RTCMParser
uint16_t messageLength() { return _messageLength; }
uint16_t messageId();
const uint8_t* crcBytes() const { return _crcBytes; }
- int crcSize() const { return 3; }
+ int crcSize() const { return 3; }
private:
enum State {
@@ -47,7 +47,7 @@ class RTCMParser
ReadingMessage,
ReadingCRC
};
-
+
State _state;
uint8_t _buffer[1024];
uint16_t _messageLength;
@@ -75,9 +75,9 @@ class NTRIPTCPLink : public QObject
Q_INVOKABLE void debugFetchSourceTable();
~NTRIPTCPLink();
-
+
public slots:
- void start();
+ void start();
void requestStop();
void sendNMEA(const QByteArray& sentence);
@@ -87,7 +87,7 @@ public slots:
void RTCMDataUpdate(const QByteArray& message);
// Called when SPARTN corrections are received from the NTRIPTCPLink
// These corrections are forwarded to the connected vehicle (PX4/ArduPilot)
- // using the same path as RTCM corrections via _rtcmDataReceived().
+ // using the same path as RTCM corrections via _rtcmDataReceived().
void SPARTNDataUpdate(const QByteArray& message);
void connected();
@@ -103,30 +103,30 @@ private slots:
waiting_for_rtcm_header,
accumulating_rtcm_packet,
};
-
+
void _hardwareConnect();
void _parse(const QByteArray& buffer);
- void _handleSpartnData(const QByteArray& data);
+ void _handleSpartnData(const QByteArray& data);
QTcpSocket* _socket = nullptr;
-
+
QString _hostAddress;
int _port;
QString _username;
QString _password;
QString _mountpoint;
- bool _useSpartn = false;
+ bool _useSpartn = false;
QVector _whitelist;
RTCMParser* _rtcmParser = nullptr;
NTRIPState _state;
-
+
std::atomic _stopping{false};
QMetaObject::Connection _readyReadConn;
-
+
// Small buffer to strip a response header only once if needed
QByteArray _spartnBuf;
- bool _spartnNeedHeaderStrip = true;
+ bool _spartnNeedHeaderStrip = true;
};
@@ -171,20 +171,20 @@ public slots:
QString _ntripStatus;
QString _ggaSource;
QMetaObject::Connection _ntripEnableConn;
-
+
NTRIPTCPLink* _tcpLink = nullptr;
QThread* _tcpThread = nullptr;
RTCMMavlink* _rtcmMavlink = nullptr;
QTimer* _settingsCheckTimer = nullptr;
bool _startStopBusy = false;
bool _forcedOffOnce = false;
- bool _useSpartn = false;
-
+ bool _useSpartn = false;
+
QElapsedTimer _startupTimer;
bool _startupSuppress = true;
- int _startupStableTicks = 0;
-
+ int _startupStableTicks = 0;
+
CasterStatus _casterStatus = CasterStatus::OtherError;
static NTRIPManager* _instance;
-};
\ No newline at end of file
+};
diff --git a/src/Gimbal/Gimbal.cc b/src/Gimbal/Gimbal.cc
index 0b305e569ef7..a66bf8ba5147 100644
--- a/src/Gimbal/Gimbal.cc
+++ b/src/Gimbal/Gimbal.cc
@@ -81,4 +81,4 @@ void Gimbal::setCapabilityFlags(uint32_t flags)
_capabilityFlags = flags;
emit capabilityFlagsChanged();
}
-}
\ No newline at end of file
+}
diff --git a/src/Gimbal/Gimbal.h b/src/Gimbal/Gimbal.h
index 133909c4db8b..408a0ccc84fb 100644
--- a/src/Gimbal/Gimbal.h
+++ b/src/Gimbal/Gimbal.h
@@ -18,7 +18,7 @@ Q_DECLARE_LOGGING_CATEGORY(GimbalLog)
class GimbalController;
-class Gimbal : public FactGroup
+class Gimbal : public FactGroup
{
Q_OBJECT
Q_PROPERTY(Fact *absoluteRoll READ absoluteRoll CONSTANT)
diff --git a/src/Joystick/Joystick.cc b/src/Joystick/Joystick.cc
index 76efe1f47d60..cf5c39594301 100644
--- a/src/Joystick/Joystick.cc
+++ b/src/Joystick/Joystick.cc
@@ -1274,4 +1274,4 @@ void Joystick::setEnableManualControlExtensions(bool enable)
_saveSettings();
emit enableManualControlExtensionsChanged();
}
-}
\ No newline at end of file
+}
diff --git a/src/MAVLink/LibEvents/CMakeLists.txt b/src/MAVLink/LibEvents/CMakeLists.txt
index e8f413288138..96d8dfefae26 100644
--- a/src/MAVLink/LibEvents/CMakeLists.txt
+++ b/src/MAVLink/LibEvents/CMakeLists.txt
@@ -1,29 +1,29 @@
-# ============================================================================
-# LibEvents - MAVLink Event Handling
-# Event logging, health reporting, and arming checks
-# ============================================================================
-
-target_sources(${CMAKE_PROJECT_NAME}
- PRIVATE
- EventHandler.cc
- EventHandler.h
- HealthAndArmingCheckReport.cc
- HealthAndArmingCheckReport.h
- logging.cpp
-)
-
-target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
-
-# ============================================================================
-# LibEvents Library Integration
-# ============================================================================
-
-CPMAddPackage(
- NAME libevents
- GITHUB_REPOSITORY mavlink/libevents
- GIT_TAG main
- SOURCE_SUBDIR libs/cpp
-)
-
-target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE libevents)
-target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE ${libevents_SOURCE_DIR}/libs/cpp)
+# ============================================================================
+# LibEvents - MAVLink Event Handling
+# Event logging, health reporting, and arming checks
+# ============================================================================
+
+target_sources(${CMAKE_PROJECT_NAME}
+ PRIVATE
+ EventHandler.cc
+ EventHandler.h
+ HealthAndArmingCheckReport.cc
+ HealthAndArmingCheckReport.h
+ logging.cpp
+)
+
+target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
+
+# ============================================================================
+# LibEvents Library Integration
+# ============================================================================
+
+CPMAddPackage(
+ NAME libevents
+ GITHUB_REPOSITORY mavlink/libevents
+ GIT_TAG main
+ SOURCE_SUBDIR libs/cpp
+)
+
+target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE libevents)
+target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE ${libevents_SOURCE_DIR}/libs/cpp)
diff --git a/src/MAVLink/LibEvents/HealthAndArmingCheckReport.h b/src/MAVLink/LibEvents/HealthAndArmingCheckReport.h
index 0620777c93b9..193e893a9fdf 100644
--- a/src/MAVLink/LibEvents/HealthAndArmingCheckReport.h
+++ b/src/MAVLink/LibEvents/HealthAndArmingCheckReport.h
@@ -92,4 +92,3 @@ class HealthAndArmingCheckReport : public QObject
QmlObjectListModel* _problemsForCurrentMode = nullptr; ///< list of HealthAndArmingCheckProblem*
};
-
diff --git a/src/MAVLink/LibEvents/logging.cpp b/src/MAVLink/LibEvents/logging.cpp
index 41f532d7ec63..885548fd8a41 100644
--- a/src/MAVLink/LibEvents/logging.cpp
+++ b/src/MAVLink/LibEvents/logging.cpp
@@ -23,4 +23,4 @@ void qgc_events_parser_debug_printf(const char *fmt, ...) {
int len = strlen(msg);
if (len > 0) msg[len-1] = '\0'; // remove newline
qCDebug(EventsLog) << msg;
-}
\ No newline at end of file
+}
diff --git a/src/MAVLink/MAVLinkFTP.cc b/src/MAVLink/MAVLinkFTP.cc
index 306da0a64d0d..ba56a8a5f92a 100644
--- a/src/MAVLink/MAVLinkFTP.cc
+++ b/src/MAVLink/MAVLinkFTP.cc
@@ -82,4 +82,3 @@ QString MavlinkFTP::errorCodeToString(ErrorCode_t errorCode)
return "Unknown Error";
}
-
diff --git a/src/MAVLink/QGCMAVLink.cc b/src/MAVLink/QGCMAVLink.cc
index 71ee4de2465e..df9e91d075d7 100644
--- a/src/MAVLink/QGCMAVLink.cc
+++ b/src/MAVLink/QGCMAVLink.cc
@@ -529,4 +529,4 @@ QString QGCMAVLink::compIdToString(uint8_t compId)
}
return QStringLiteral("%1 (%2)").arg(compIdStr).arg(static_cast(compId));
-}
\ No newline at end of file
+}
diff --git a/src/MAVLink/QGCMAVLink.h b/src/MAVLink/QGCMAVLink.h
index bb079dba0ff5..58d39f7da10b 100644
--- a/src/MAVLink/QGCMAVLink.h
+++ b/src/MAVLink/QGCMAVLink.h
@@ -190,4 +190,4 @@ class QGCMAVLink : public QObject
static const QHash mavlinkCompIdHash;
};
-Q_DECLARE_METATYPE(QGCMAVLink::GripperActions)
\ No newline at end of file
+Q_DECLARE_METATYPE(QGCMAVLink::GripperActions)
diff --git a/src/MissionManager/BlankPlanCreator.h b/src/MissionManager/BlankPlanCreator.h
index 7d1701d710b0..9b5d0c8cce7f 100644
--- a/src/MissionManager/BlankPlanCreator.h
+++ b/src/MissionManager/BlankPlanCreator.h
@@ -14,7 +14,7 @@
class BlankPlanCreator : public PlanCreator
{
Q_OBJECT
-
+
public:
BlankPlanCreator(PlanMasterController* planMasterController, QObject* parent = nullptr);
diff --git a/src/MissionManager/ComplexMissionItem.cc b/src/MissionManager/ComplexMissionItem.cc
index aa6011135e0c..8a34e163e96e 100644
--- a/src/MissionManager/ComplexMissionItem.cc
+++ b/src/MissionManager/ComplexMissionItem.cc
@@ -144,4 +144,3 @@ void ComplexMissionItem::_segmentTerrainCollisionChanged(bool terrainCollision)
}
emit terrainCollisionChanged(_cTerrainCollisionSegments != 0);
}
-
diff --git a/src/MissionManager/CorridorScanPlanCreator.h b/src/MissionManager/CorridorScanPlanCreator.h
index 8b80ec213d36..93bbf8d44a05 100644
--- a/src/MissionManager/CorridorScanPlanCreator.h
+++ b/src/MissionManager/CorridorScanPlanCreator.h
@@ -14,7 +14,7 @@
class CorridorScanPlanCreator : public PlanCreator
{
Q_OBJECT
-
+
public:
CorridorScanPlanCreator(PlanMasterController* planMasterController, QObject* parent = nullptr);
diff --git a/src/MissionManager/GeoFenceController.cc b/src/MissionManager/GeoFenceController.cc
index fc27c0763402..e213c1e23607 100644
--- a/src/MissionManager/GeoFenceController.cc
+++ b/src/MissionManager/GeoFenceController.cc
@@ -225,7 +225,7 @@ void GeoFenceController::save(QJsonObject& json)
}
void GeoFenceController::removeAll(void)
-{
+{
setBreachReturnPoint(QGeoCoordinate());
_polygons.clearAndDeleteContents();
_circles.clearAndDeleteContents();
diff --git a/src/MissionManager/GeoFenceManager.h b/src/MissionManager/GeoFenceManager.h
index 65cbdcb5871c..eac26ba1d45a 100644
--- a/src/MissionManager/GeoFenceManager.h
+++ b/src/MissionManager/GeoFenceManager.h
@@ -27,11 +27,11 @@ Q_DECLARE_LOGGING_CATEGORY(GeoFenceManagerLog)
class GeoFenceManager : public PlanManager
{
Q_OBJECT
-
+
public:
GeoFenceManager(Vehicle* vehicle);
~GeoFenceManager();
-
+
bool supported(void) const;
/// Signals sendComplete when done
@@ -60,7 +60,7 @@ class GeoFenceManager : public PlanManager
BadPolygonItemFormat, ///< Error re-creating polygons from mission items
InvalidCircleRadius,
} ErrorCode_t;
-
+
signals:
void loadComplete (void);
void inProgressChanged (bool inProgress);
diff --git a/src/MissionManager/MavCmdInfoCommon.json b/src/MissionManager/MavCmdInfoCommon.json
index b64f7a8b6bf1..d66fa33f3fa3 100644
--- a/src/MissionManager/MavCmdInfoCommon.json
+++ b/src/MissionManager/MavCmdInfoCommon.json
@@ -300,7 +300,7 @@
"default": 0,
"decimalPlaces": 0,
"min": 0
- }
+ }
},
{ "id": 83, "rawName": "MAV_CMD_NAV_ALTITUDE_WAIT", "friendlyName": "Altitude wait" },
{
diff --git a/src/MissionManager/MissionCommandList.h b/src/MissionManager/MissionCommandList.h
index f0a60373916d..f3b39b9959fd 100644
--- a/src/MissionManager/MissionCommandList.h
+++ b/src/MissionManager/MissionCommandList.h
@@ -21,7 +21,7 @@ class MissionCommandUIInfo;
class MissionCommandList : public QObject
{
Q_OBJECT
-
+
public:
/// @param baseCommandList true: bottomost level of mission command hierarchy (partial spec allowed), false: override level of hierarchy
MissionCommandList(const QString& jsonFilename, bool baseCommandList, QObject* parent = nullptr);
@@ -33,7 +33,7 @@ class MissionCommandList : public QObject
MissionCommandUIInfo* getUIInfo(MAV_CMD command) const;
const QList& commandIds(void) const { return _ids; }
-
+
static constexpr const char* qgcFileType = "MavCmdInfo";
private:
diff --git a/src/MissionManager/MissionCommandUIInfo.h b/src/MissionManager/MissionCommandUIInfo.h
index 56cc70de88d1..a862ff78255e 100644
--- a/src/MissionManager/MissionCommandUIInfo.h
+++ b/src/MissionManager/MissionCommandUIInfo.h
@@ -214,9 +214,8 @@ class MissionCommandUIInfo : public QObject {
static constexpr const char* _commentJsonKey = "comment";
static constexpr const char* _advancedCategory = "Advanced";
- friend class MissionCommandTree;
+ friend class MissionCommandTree;
#ifdef QGC_UNITTEST_BUILD
friend class MissionCommandTreeTest;
#endif
};
-
diff --git a/src/MissionManager/MissionController.cc b/src/MissionManager/MissionController.cc
index a08333d3a282..71a55c6c5e15 100644
--- a/src/MissionManager/MissionController.cc
+++ b/src/MissionManager/MissionController.cc
@@ -195,7 +195,7 @@ void MissionController::_newMissionItemsAvailableFromVehicle(bool removeAllReque
_visualItems = newControllerMissionItems;
_settingsItem = settingsItem;
- // We set Altitude mode to mixed, otherwise if we need a non relative altitude frame we won't be able to change it
+ // We set Altitude mode to mixed, otherwise if we need a non relative altitude frame we won't be able to change it
setGlobalAltitudeMode(QGroundControlQmlGlobal::AltitudeModeMixed);
MissionController::_scanForAdditionalSettings(_visualItems, _masterController);
diff --git a/src/MissionManager/MissionItem.cc b/src/MissionManager/MissionItem.cc
index 7cae70a93c9e..83ad6c6d4d83 100644
--- a/src/MissionManager/MissionItem.cc
+++ b/src/MissionManager/MissionItem.cc
@@ -136,7 +136,7 @@ const MissionItem& MissionItem::operator=(const MissionItem& other)
}
MissionItem::~MissionItem()
-{
+{
}
@@ -184,7 +184,7 @@ bool MissionItem::_convertJsonV1ToV2(const QJsonObject& json, QJsonObject& v2Jso
if (json.contains(_jsonParamsKey)) {
// Already V2 format
return true;
- }
+ }
QList keyInfoList = {
{ VisualMissionItem::jsonTypeKey, QJsonValue::String, true },
diff --git a/src/MissionManager/MissionItem.h b/src/MissionManager/MissionItem.h
index cb8e74b7a541..d887dae4889e 100644
--- a/src/MissionManager/MissionItem.h
+++ b/src/MissionManager/MissionItem.h
@@ -55,7 +55,7 @@ class MissionItem : public QObject
~MissionItem();
const MissionItem& operator=(const MissionItem& other);
-
+
MAV_CMD command (void) const { return (MAV_CMD)_commandFact.rawValue().toInt(); }
bool isCurrentItem (void) const { return _isCurrentItem; }
int sequenceNumber (void) const { return _sequenceNumber; }
@@ -92,7 +92,7 @@ class MissionItem : public QObject
void setParam5 (double param5);
void setParam6 (double param6);
void setParam7 (double param7);
-
+
void save(QJsonObject& json) const;
bool load(QTextStream &loadStream);
bool load(const QJsonObject& json, int sequenceNumber, QString& errorString);
@@ -142,7 +142,7 @@ private slots:
static constexpr const char* _jsonParam2Key = "param2";
static constexpr const char* _jsonParam3Key = "param3";
static constexpr const char* _jsonParam4Key = "param4";
-
+
// Deprecated V2 format keys
static constexpr const char* _jsonCoordinateKey = "coordinate";
diff --git a/src/MissionManager/MissionManager.cc b/src/MissionManager/MissionManager.cc
index 8738a138842d..6c660294683b 100644
--- a/src/MissionManager/MissionManager.cc
+++ b/src/MissionManager/MissionManager.cc
@@ -258,14 +258,14 @@ void MissionManager::_updateMissionIndex(int index)
}
}
-void MissionManager::_handleHighLatency(const mavlink_message_t& message)
+void MissionManager::_handleHighLatency(const mavlink_message_t& message)
{
mavlink_high_latency_t highLatency;
mavlink_msg_high_latency_decode(&message, &highLatency);
_updateMissionIndex(highLatency.wp_num);
}
-void MissionManager::_handleHighLatency2(const mavlink_message_t& message)
+void MissionManager::_handleHighLatency2(const mavlink_message_t& message)
{
mavlink_high_latency2_t highLatency2;
mavlink_msg_high_latency2_decode(&message, &highLatency2);
@@ -290,4 +290,3 @@ void MissionManager::_handleHeartbeat(const mavlink_message_t& message)
emit lastCurrentIndexChanged(_lastCurrentIndex);
}
}
-
diff --git a/src/MissionManager/MissionManager.h b/src/MissionManager/MissionManager.h
index 770fdd0812d9..7689660e4a5b 100644
--- a/src/MissionManager/MissionManager.h
+++ b/src/MissionManager/MissionManager.h
@@ -25,7 +25,7 @@ class MissionManager : public PlanManager
public:
MissionManager(Vehicle* vehicle);
~MissionManager();
-
+
/// Current mission item as reported by MISSION_CURRENT
int currentIndex(void) const { return _currentMissionIndex; }
diff --git a/src/MissionManager/PlanCreator.h b/src/MissionManager/PlanCreator.h
index 5a9540e69195..712de55394f3 100644
--- a/src/MissionManager/PlanCreator.h
+++ b/src/MissionManager/PlanCreator.h
@@ -20,7 +20,7 @@ class MissionController;
class PlanCreator : public QObject
{
Q_OBJECT
-
+
public:
PlanCreator(PlanMasterController* planMasterController, QString name, QString imageResource, QObject* parent = nullptr);
diff --git a/src/MissionManager/PlanElementController.h b/src/MissionManager/PlanElementController.h
index b28e15728519..d817162c8bb6 100644
--- a/src/MissionManager/PlanElementController.h
+++ b/src/MissionManager/PlanElementController.h
@@ -24,7 +24,7 @@ class PlanElementController : public QObject
public:
PlanElementController(PlanMasterController* masterController, QObject* parent = nullptr);
~PlanElementController();
-
+
Q_PROPERTY(PlanMasterController* masterController READ masterController CONSTANT)
Q_PROPERTY(bool supported READ supported NOTIFY supportedChanged) ///< true: Element is supported by Vehicle
Q_PROPERTY(bool containsItems READ containsItems NOTIFY containsItemsChanged) ///< true: Elemement is non-empty
diff --git a/src/MissionManager/PlanMasterController.cc b/src/MissionManager/PlanMasterController.cc
index ecb825b1eb71..5c513d621d53 100644
--- a/src/MissionManager/PlanMasterController.cc
+++ b/src/MissionManager/PlanMasterController.cc
@@ -615,7 +615,7 @@ void PlanMasterController::_updateOverallDirty(void)
if(_previousOverallDirty != dirty()){
_previousOverallDirty = dirty();
emit dirtyChanged(_previousOverallDirty);
- }
+ }
}
void PlanMasterController::_updatePlanCreatorsList(void)
diff --git a/src/MissionManager/PlanMasterController.h b/src/MissionManager/PlanMasterController.h
index d12646507866..15c437ec2fae 100644
--- a/src/MissionManager/PlanMasterController.h
+++ b/src/MissionManager/PlanMasterController.h
@@ -30,7 +30,7 @@ class PlanMasterController : public QObject
QML_ELEMENT
Q_MOC_INCLUDE("QmlObjectListModel.h")
Q_MOC_INCLUDE("Vehicle.h")
-
+
public:
PlanMasterController(QObject* parent = nullptr);
#ifdef QT_DEBUG
diff --git a/src/MissionManager/RallyPoint.cc b/src/MissionManager/RallyPoint.cc
index 337f1b3f89ce..939d1fb13efe 100644
--- a/src/MissionManager/RallyPoint.cc
+++ b/src/MissionManager/RallyPoint.cc
@@ -49,7 +49,7 @@ const RallyPoint& RallyPoint::operator=(const RallyPoint& other)
}
RallyPoint::~RallyPoint()
-{
+{
}
diff --git a/src/MissionManager/RallyPoint.h b/src/MissionManager/RallyPoint.h
index 6553c2dfed95..bedbe49c4a08 100644
--- a/src/MissionManager/RallyPoint.h
+++ b/src/MissionManager/RallyPoint.h
@@ -19,7 +19,7 @@
class RallyPoint : public QObject
{
Q_OBJECT
-
+
public:
RallyPoint(const QGeoCoordinate& coordinate, QObject* parent = nullptr);
RallyPoint(const RallyPoint& other, QObject* parent = nullptr);
@@ -27,7 +27,7 @@ class RallyPoint : public QObject
~RallyPoint();
const RallyPoint& operator=(const RallyPoint& other);
-
+
Q_PROPERTY(QGeoCoordinate coordinate READ coordinate WRITE setCoordinate NOTIFY coordinateChanged)
Q_PROPERTY(bool dirty READ dirty WRITE setDirty NOTIFY dirtyChanged)
Q_PROPERTY(QVariantList textFieldFacts MEMBER _textFieldFacts CONSTANT)
diff --git a/src/MissionManager/RallyPointController.h b/src/MissionManager/RallyPointController.h
index 35e51b7c1f5d..e210d6a1ff08 100644
--- a/src/MissionManager/RallyPointController.h
+++ b/src/MissionManager/RallyPointController.h
@@ -30,7 +30,7 @@ class RallyPointController : public PlanElementController
public:
explicit RallyPointController(PlanMasterController* masterController, QObject* parent = nullptr);
~RallyPointController();
-
+
Q_PROPERTY(QmlObjectListModel* points READ points CONSTANT)
Q_PROPERTY(QString editorQml READ editorQml CONSTANT)
Q_PROPERTY(QObject* currentRallyPoint READ currentRallyPoint WRITE setCurrentRallyPoint NOTIFY currentRallyPointChanged)
diff --git a/src/MissionManager/RallyPointManager.h b/src/MissionManager/RallyPointManager.h
index 7990176cfaa3..78bc589e2562 100644
--- a/src/MissionManager/RallyPointManager.h
+++ b/src/MissionManager/RallyPointManager.h
@@ -24,11 +24,11 @@ Q_DECLARE_LOGGING_CATEGORY(RallyPointManagerLog)
class RallyPointManager : public PlanManager
{
Q_OBJECT
-
+
public:
RallyPointManager(Vehicle* vehicle);
~RallyPointManager();
-
+
bool supported (void) const;
void sendToVehicle (const QList& rgPoints);
void removeAll (void);
@@ -42,7 +42,7 @@ class RallyPointManager : public PlanManager
TooManyPoints, ///< Too many points for valid geofence
InvalidCircleRadius,
} ErrorCode_t;
-
+
signals:
void loadComplete (void);
void inProgressChanged (bool inProgress);
diff --git a/src/MissionManager/SimpleMissionItem.cc b/src/MissionManager/SimpleMissionItem.cc
index a694a0e064f7..f53359abaafa 100644
--- a/src/MissionManager/SimpleMissionItem.cc
+++ b/src/MissionManager/SimpleMissionItem.cc
@@ -153,7 +153,7 @@ void SimpleMissionItem::_connectSignals(void)
// For NAV_LOITER_X commands, they must emit a radiusChanged signal
connect(&_missionItem._param2Fact, &Fact::valueChanged, this, &SimpleMissionItem::_possibleRadiusChanged);
connect(&_missionItem._param3Fact, &Fact::valueChanged, this, &SimpleMissionItem::_possibleRadiusChanged);
-
+
// Exit coordinate is the same as entrance coordinate
connect(this, &SimpleMissionItem::coordinateChanged, this, &SimpleMissionItem::exitCoordinateChanged);
@@ -245,7 +245,7 @@ void SimpleMissionItem::_setupMetaData(void)
}
SimpleMissionItem::~SimpleMissionItem()
-{
+{
}
void SimpleMissionItem::save(QJsonArray& missionItems)
@@ -406,7 +406,7 @@ QString SimpleMissionItem::abbreviation() const
void SimpleMissionItem::_rebuildTextFieldFacts(void)
{
_textFieldFacts.clear();
-
+
if (rawEdit()) {
_missionItem._param1Fact.setName("Param1");
_missionItem._param1Fact.setMetaData(_defaultParamMetaData);
diff --git a/src/MissionManager/SimpleMissionItem.h b/src/MissionManager/SimpleMissionItem.h
index 5f281b356c48..f33b9b20dfab 100644
--- a/src/MissionManager/SimpleMissionItem.h
+++ b/src/MissionManager/SimpleMissionItem.h
@@ -64,7 +64,7 @@ class SimpleMissionItem : public VisualMissionItem
bool scanForSections(QmlObjectListModel* visualItems, int scanIndex, PlanMasterController* masterController);
// Property accesors
-
+
QString category (void) const;
int command (void) const { return _missionItem._commandFact.cookedValue().toInt(); }
MAV_CMD mavCommand (void) const { return static_cast(command()); }
@@ -87,7 +87,7 @@ class SimpleMissionItem : public VisualMissionItem
void setRawEdit(bool rawEdit);
void setAltitudeMode(QGroundControlQmlGlobal::AltMode altitudeMode);
-
+
void setCommandByIndex(int index);
void setCommand(int command);
@@ -193,7 +193,7 @@ private slots:
QmlObjectListModel _textFieldFacts;
QmlObjectListModel _nanFacts;
QmlObjectListModel _comboboxFacts;
-
+
static FactMetaData* _altitudeMetaData;
static FactMetaData* _commandMetaData;
static FactMetaData* _defaultParamMetaData;
diff --git a/src/MissionManager/StructureScanComplexItem.cc b/src/MissionManager/StructureScanComplexItem.cc
index 9cc0f89e0134..288e847520eb 100644
--- a/src/MissionManager/StructureScanComplexItem.cc
+++ b/src/MissionManager/StructureScanComplexItem.cc
@@ -754,4 +754,3 @@ void StructureScanComplexItem::_segmentTerrainCollisionChanged(bool terrainColli
ComplexMissionItem::_segmentTerrainCollisionChanged(terrainCollision);
_structurePolygon.setShowAltColor(_cTerrainCollisionSegments != 0);
}
-
diff --git a/src/MissionManager/StructureScanPlanCreator.h b/src/MissionManager/StructureScanPlanCreator.h
index 8c2abd2d5795..00bb5af48ffb 100644
--- a/src/MissionManager/StructureScanPlanCreator.h
+++ b/src/MissionManager/StructureScanPlanCreator.h
@@ -14,7 +14,7 @@
class StructureScanPlanCreator : public PlanCreator
{
Q_OBJECT
-
+
public:
StructureScanPlanCreator(PlanMasterController* planMasterController, QObject* parent = nullptr);
diff --git a/src/MissionManager/SurveyPlanCreator.h b/src/MissionManager/SurveyPlanCreator.h
index 6ace13330d5c..8bc2dd9040ff 100644
--- a/src/MissionManager/SurveyPlanCreator.h
+++ b/src/MissionManager/SurveyPlanCreator.h
@@ -14,7 +14,7 @@
class SurveyPlanCreator : public PlanCreator
{
Q_OBJECT
-
+
public:
SurveyPlanCreator(PlanMasterController* planMasterController, QObject* parent = nullptr);
diff --git a/src/MissionManager/TakeoffMissionItem.h b/src/MissionManager/TakeoffMissionItem.h
index ca8af72838d2..06e8bb67c58b 100644
--- a/src/MissionManager/TakeoffMissionItem.h
+++ b/src/MissionManager/TakeoffMissionItem.h
@@ -19,7 +19,7 @@ class MissionSettingsItem;
class TakeoffMissionItem : public SimpleMissionItem
{
Q_OBJECT
-
+
public:
// Note: forLoad = true indicates that TakeoffMissionItem::load will be called onthe item
TakeoffMissionItem(PlanMasterController* masterController, bool flyView, MissionSettingsItem* settingsItem, bool forLoad);
diff --git a/src/MissionManager/VisualMissionItem.cc b/src/MissionManager/VisualMissionItem.cc
index 2ce54df49823..a3d28e557899 100644
--- a/src/MissionManager/VisualMissionItem.cc
+++ b/src/MissionManager/VisualMissionItem.cc
@@ -69,7 +69,7 @@ const VisualMissionItem& VisualMissionItem::operator=(const VisualMissionItem& o
}
VisualMissionItem::~VisualMissionItem()
-{
+{
}
void VisualMissionItem::setIsCurrentItem(bool isCurrentItem)
diff --git a/src/QmlControls/EditPositionDialogController.cc b/src/QmlControls/EditPositionDialogController.cc
index b565ea50f827..0729122f4c83 100644
--- a/src/QmlControls/EditPositionDialogController.cc
+++ b/src/QmlControls/EditPositionDialogController.cc
@@ -106,4 +106,3 @@ void EditPositionDialogController::setFromVehicle()
{
setCoordinate(MultiVehicleManager::instance()->activeVehicle()->coordinate());
}
-
diff --git a/src/QmlControls/FactValueGrid.cc b/src/QmlControls/FactValueGrid.cc
index d1cbfba7ceed..4d98054ca597 100644
--- a/src/QmlControls/FactValueGrid.cc
+++ b/src/QmlControls/FactValueGrid.cc
@@ -94,12 +94,12 @@ void FactValueGrid::_activeVehicleChanged(Vehicle* activeVehicle)
_initForNewVehicle(activeVehicle);
}
-FactValueGrid::~FactValueGrid()
+FactValueGrid::~FactValueGrid()
{
_vehicleCardInstanceList.removeAll(this);
}
-QGCMAVLink::VehicleClass_t FactValueGrid::vehicleClass(void) const
+QGCMAVLink::VehicleClass_t FactValueGrid::vehicleClass(void) const
{
return QGCMAVLink::vehicleClass(currentVehicle()->vehicleType());
}
@@ -334,7 +334,7 @@ void FactValueGrid::_resetFromSettings(void)
QGCCorePlugin::instance()->factValueGridCreateDefaultSettings(this);
}
_fontSize = settings.value(_fontSizeKey, DefaultFontSize).value();
-
+
// Initial setup of empty items
int cRows = settings.value(_rowCountKey).toInt();
int cModelLists = settings.beginReadArray(_columnsKey);
@@ -347,7 +347,7 @@ void FactValueGrid::_resetFromSettings(void)
appendColumn();
}
}
-
+
// Fill in the items from settings
for (int colIndex=0; colIndex= _tableData.count()) {
return QVariant();
}
if (index.column() < 0 || index.column() >= _tableViewColCount) {
return QVariant();
}
-
+
switch (role) {
case Qt::DisplayRole:
return QVariant::fromValue(_tableData[index.row()][index.column()]);
@@ -62,7 +62,7 @@ QVariant ParameterTableModel::data(const QModelIndex &index, int role) const
QHash ParameterTableModel::roleNames() const
{
- return {
+ return {
{Qt::DisplayRole, "display"},
{FactRole, "fact"}
};
@@ -133,9 +133,9 @@ Fact* ParameterTableModel::factAt(int row) const
}
-ParameterEditorGroup::ParameterEditorGroup(QObject* parent)
- : QObject(parent)
-{
+ParameterEditorGroup::ParameterEditorGroup(QObject* parent)
+ : QObject(parent)
+{
}
@@ -514,7 +514,7 @@ void ParameterEditorController::_performSearch(void)
!fact->shortDescription().contains(searchItem, Qt::CaseInsensitive) &&
!fact->longDescription().contains(searchItem, Qt::CaseInsensitive)) {
matched = false;
- }
+ }
}
}
}
diff --git a/src/QmlControls/ParameterEditorController.h b/src/QmlControls/ParameterEditorController.h
index 5b5f515557cd..9ceeafa18da2 100644
--- a/src/QmlControls/ParameterEditorController.h
+++ b/src/QmlControls/ParameterEditorController.h
@@ -24,13 +24,13 @@ class ParameterManager;
class ParameterTableModel : public QAbstractTableModel
{
Q_OBJECT
-
+
public:
explicit ParameterTableModel(QObject* parent = nullptr);
~ParameterTableModel() override;
typedef QVector ColumnData;
-
+
enum {
FactRole = Qt::UserRole + 1
};
@@ -42,7 +42,7 @@ class ParameterTableModel : public QAbstractTableModel
};
Q_PROPERTY(int rowCount READ rowCount NOTIFY rowCountChanged)
-
+
void append (Fact* fact);
void insert (int row, Fact* fact);
void clear ();
diff --git a/src/QmlControls/QGCMapPalette.h b/src/QmlControls/QGCMapPalette.h
index fc7d06b19fd7..b00c5ef7b14c 100644
--- a/src/QmlControls/QGCMapPalette.h
+++ b/src/QmlControls/QGCMapPalette.h
@@ -40,26 +40,26 @@ class QGCMapPalette : public QObject
{
Q_OBJECT
QML_ELEMENT
-
+
Q_PROPERTY(bool lightColors READ lightColors WRITE setLightColors NOTIFY paletteChanged)
Q_PROPERTY(QColor text READ text NOTIFY paletteChanged)
Q_PROPERTY(QColor textOutline READ textOutline NOTIFY paletteChanged)
-public:
+public:
QGCMapPalette(QObject* parent = nullptr);
-
+
/// Text color
QColor text(void) const { return _text[_lightColors ? 0 : 1]; }
QColor textOutline(void) const { return _textOutline[_lightColors ? 0 : 1]; }
bool lightColors(void) const { return _lightColors; }
- void setLightColors(bool lightColors);
+ void setLightColors(bool lightColors);
signals:
void paletteChanged(void);
void lightColorsChanged(bool lightColors);
-
+
private:
bool _lightColors = false;
diff --git a/src/QmlControls/QGCMapPolygon.cc b/src/QmlControls/QGCMapPolygon.cc
index 817cba218e8e..c86157d02c83 100644
--- a/src/QmlControls/QGCMapPolygon.cc
+++ b/src/QmlControls/QGCMapPolygon.cc
@@ -104,7 +104,7 @@ void QGCMapPolygon::adjustVertex(int vertexIndex, const QGeoCoordinate coordinat
if (!_centerDrag) {
// When dragging center we don't signal path changed until all vertices are updated
if (!_deferredPathChanged) {
- // Only update the path once per event loop, to prevent lag-spikes
+ // Only update the path once per event loop, to prevent lag-spikes
_deferredPathChanged = true;
QTimer::singleShot(0, this, [this]() {
emit pathChanged();
@@ -397,7 +397,7 @@ void QGCMapPolygon::setCenter(QGeoCoordinate newCenter)
_center = newCenter;
if (!_deferredPathChanged) {
- // Only update the center once per event loop, to prevent lag-spikes
+ // Only update the center once per event loop, to prevent lag-spikes
_deferredPathChanged = true;
QTimer::singleShot(0, this, [this, newCenter]() {
emit centerChanged(newCenter);
diff --git a/src/QmlControls/QGCPalette.cc b/src/QmlControls/QGCPalette.cc
index 1e98d2cdf3c8..26f3b075d20d 100644
--- a/src/QmlControls/QGCPalette.cc
+++ b/src/QmlControls/QGCPalette.cc
@@ -69,10 +69,10 @@ void QGCPalette::_buildMap()
DECLARE_QGC_COLOR(mapButtonHighlight, "#585858", "#be781c", "#585858", "#be781c")
DECLARE_QGC_COLOR(mapIndicator, "#585858", "#be781c", "#585858", "#be781c")
DECLARE_QGC_COLOR(mapIndicatorChild, "#585858", "#766043", "#585858", "#766043")
- DECLARE_QGC_COLOR(colorGreen, "#008f2d", "#008f2d", "#00e04b", "#00e04b")
- DECLARE_QGC_COLOR(colorYellow, "#a2a200", "#a2a200", "#ffff00", "#ffff00")
- DECLARE_QGC_COLOR(colorYellowGreen, "#799f26", "#799f26", "#9dbe2f", "#9dbe2f")
- DECLARE_QGC_COLOR(colorOrange, "#bf7539", "#bf7539", "#de8500", "#de8500")
+ DECLARE_QGC_COLOR(colorGreen, "#008f2d", "#008f2d", "#00e04b", "#00e04b")
+ DECLARE_QGC_COLOR(colorYellow, "#a2a200", "#a2a200", "#ffff00", "#ffff00")
+ DECLARE_QGC_COLOR(colorYellowGreen, "#799f26", "#799f26", "#9dbe2f", "#9dbe2f")
+ DECLARE_QGC_COLOR(colorOrange, "#bf7539", "#bf7539", "#de8500", "#de8500")
DECLARE_QGC_COLOR(colorRed, "#b52b2b", "#b52b2b", "#f32836", "#f32836")
DECLARE_QGC_COLOR(colorGrey, "#808080", "#808080", "#bfbfbf", "#bfbfbf")
DECLARE_QGC_COLOR(colorBlue, "#1a72ff", "#1a72ff", "#536dff", "#536dff")
diff --git a/src/QmlControls/QGroundControlQmlGlobal.cc b/src/QmlControls/QGroundControlQmlGlobal.cc
index b06a4cae5f16..e024f02d5d12 100644
--- a/src/QmlControls/QGroundControlQmlGlobal.cc
+++ b/src/QmlControls/QGroundControlQmlGlobal.cc
@@ -373,4 +373,4 @@ bool QGroundControlQmlGlobal::categoryLoggingOn(const QString &category)
void QGroundControlQmlGlobal::disableAllLoggingCategories()
{
QGCLoggingCategoryManager::instance()->disableAllCategories();
-}
\ No newline at end of file
+}
diff --git a/src/QmlControls/QmlObjectListModel.cc b/src/QmlControls/QmlObjectListModel.cc
index e32a7ae66458..dca394c668a6 100644
--- a/src/QmlControls/QmlObjectListModel.cc
+++ b/src/QmlControls/QmlObjectListModel.cc
@@ -41,7 +41,7 @@ QObject* QmlObjectListModel::get(int index)
int QmlObjectListModel::rowCount(const QModelIndex& parent) const
{
Q_UNUSED(parent);
-
+
return _objectList.count();
}
@@ -50,11 +50,11 @@ QVariant QmlObjectListModel::data(const QModelIndex &index, int role) const
if (!index.isValid()) {
return QVariant();
}
-
+
if (index.row() < 0 || index.row() >= _objectList.count()) {
return QVariant();
}
-
+
if (role == ObjectRole) {
return QVariant::fromValue(_objectList[index.row()]);
} else if (role == TextRole) {
@@ -67,10 +67,10 @@ QVariant QmlObjectListModel::data(const QModelIndex &index, int role) const
QHash QmlObjectListModel::roleNames(void) const
{
QHash hash;
-
+
hash[ObjectRole] = "object";
hash[TextRole] = "text";
-
+
return hash;
}
@@ -81,44 +81,44 @@ bool QmlObjectListModel::setData(const QModelIndex& index, const QVariant& value
emit dataChanged(index, index);
return true;
}
-
+
return false;
}
bool QmlObjectListModel::insertRows(int position, int rows, const QModelIndex& parent)
{
Q_UNUSED(parent);
-
+
if (position < 0 || position > _objectList.count() + 1) {
qCWarning(QmlObjectListModelLog) << "Invalid position - position:count" << position << _objectList.count() << this;
}
-
+
beginInsertRows(QModelIndex(), position, position + rows - 1);
endInsertRows();
_signalCountChangedIfNotNested();
-
+
return true;
}
bool QmlObjectListModel::removeRows(int position, int rows, const QModelIndex& parent)
{
Q_UNUSED(parent);
-
+
if (position < 0 || position >= _objectList.count()) {
qCWarning(QmlObjectListModelLog) << "Invalid position - position:count" << position << _objectList.count() << this;
} else if (position + rows > _objectList.count()) {
qCWarning(QmlObjectListModelLog) << "Invalid rows - position:rows:count" << position << rows << _objectList.count() << this;
}
-
+
beginRemoveRows(QModelIndex(), position, position + rows - 1);
for (int row=0; row _objectList;
-
+
bool _dirty;
bool _skipDirtyFirstItem;
uint _resetModelNestingCount = 0;
-
+
static constexpr int ObjectRole = Qt::UserRole;
static constexpr int TextRole = Qt::UserRole + 1;
};
diff --git a/src/QmlControls/ToolStripAction.h b/src/QmlControls/ToolStripAction.h
index 67f882c79c6a..000b39104e53 100644
--- a/src/QmlControls/ToolStripAction.h
+++ b/src/QmlControls/ToolStripAction.h
@@ -17,18 +17,18 @@ class ToolStripAction : public QObject
{
Q_OBJECT
QML_ELEMENT
-
+
public:
ToolStripAction(QObject* parent = nullptr);
-
+
Q_PROPERTY(bool enabled READ enabled WRITE setEnabled NOTIFY enabledChanged)
Q_PROPERTY(bool visible READ visible WRITE setVisible NOTIFY visibleChanged)
Q_PROPERTY(bool checkable READ checkable WRITE setCheckable NOTIFY checkableChanged)
Q_PROPERTY(bool checked READ checked WRITE setChecked NOTIFY checkedChanged)
Q_PROPERTY(bool showAlternateIcon READ showAlternateIcon WRITE setShowAlternateIcon NOTIFY showAlternateIconChanged)
Q_PROPERTY(bool biColorIcon READ biColorIcon WRITE setbiColorIcon NOTIFY biColorIconChanged)
- Q_PROPERTY(bool fullColorIcon READ fullColorIcon WRITE setfullColorIcon NOTIFY fullColorIconChanged)
- Q_PROPERTY(bool nonExclusive READ nonExclusive WRITE setNonExclusive NOTIFY nonExclusiveChanged)
+ Q_PROPERTY(bool fullColorIcon READ fullColorIcon WRITE setfullColorIcon NOTIFY fullColorIconChanged)
+ Q_PROPERTY(bool nonExclusive READ nonExclusive WRITE setNonExclusive NOTIFY nonExclusiveChanged)
Q_PROPERTY(int toolStripIndex READ toolStripIndex WRITE setToolStripIndex NOTIFY toolStripIndexChanged)
Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged)
Q_PROPERTY(QString iconSource READ iconSource WRITE setIconSource NOTIFY iconSourceChanged)
diff --git a/src/QmlControls/ToolStripActionList.h b/src/QmlControls/ToolStripActionList.h
index 52244996a369..b4622c6e700f 100644
--- a/src/QmlControls/ToolStripActionList.h
+++ b/src/QmlControls/ToolStripActionList.h
@@ -19,7 +19,7 @@ class ToolStripActionList : public QObject
QML_ELEMENT
public:
explicit ToolStripActionList(QObject* parent = nullptr);
-
+
Q_PROPERTY(QQmlListProperty model READ model NOTIFY modelChanged)
QQmlListProperty model();
diff --git a/src/QtLocationPlugin/Providers/TianDiTuProvider.h b/src/QtLocationPlugin/Providers/TianDiTuProvider.h
index d630a75281c4..9026f37caacf 100644
--- a/src/QtLocationPlugin/Providers/TianDiTuProvider.h
+++ b/src/QtLocationPlugin/Providers/TianDiTuProvider.h
@@ -52,4 +52,3 @@ class TianDiTuSatelliteProvider : public TianDiTuProvider
AVERAGE_TIANDITU_SAT_MAP,
QGeoMapType::SatelliteMapDay) {}
};
-
diff --git a/src/Settings/AppSettings.cc b/src/Settings/AppSettings.cc
index 7679b6c97cd2..c4804c172029 100644
--- a/src/Settings/AppSettings.cc
+++ b/src/Settings/AppSettings.cc
@@ -24,7 +24,7 @@
// Release languages are 90%+ complete
QList AppSettings::_rgReleaseLanguages = {
QLocale::English,
- QLocale::Azerbaijani,
+ QLocale::Azerbaijani,
QLocale::Chinese,
QLocale::Japanese,
QLocale::Korean,
@@ -321,9 +321,9 @@ void AppSettings::firstRunPromptIdsMarkIdAsShown(int id)
}
/// Returns the current qLocaleLanguage setting bypassing the standard SettingsGroup path. It also validates
-/// that the value is a supported language. This should only be used by QGCApplication::setLanguage to query
-/// the language setting as early in the boot process as possible. Specfically prior to any JSON files being
-/// loaded such that JSON file can be translated. Also since this is a one-off mechanism custom build overrides
+/// that the value is a supported language. This should only be used by QGCApplication::setLanguage to query
+/// the language setting as early in the boot process as possible. Specfically prior to any JSON files being
+/// loaded such that JSON file can be translated. Also since this is a one-off mechanism custom build overrides
/// for language are not currently supported.
QLocale::Language AppSettings::_qLocaleLanguageEarlyAccess(void)
{
diff --git a/src/Settings/AppSettings.h b/src/Settings/AppSettings.h
index 51369ba7503c..e2f5c094c944 100644
--- a/src/Settings/AppSettings.h
+++ b/src/Settings/AppSettings.h
@@ -145,6 +145,6 @@ private slots:
const char* languageName;
} LanguageInfo_t;
static LanguageInfo_t _rgLanguageInfo[];
-
+
friend class QGCApplication;
};
diff --git a/src/Settings/BatteryIndicatorSettings.h b/src/Settings/BatteryIndicatorSettings.h
index 580d6be588f0..6413eed9c823 100644
--- a/src/Settings/BatteryIndicatorSettings.h
+++ b/src/Settings/BatteryIndicatorSettings.h
@@ -33,7 +33,7 @@ class BatteryIndicatorSettings : public SettingsGroup
private:
void validateThreshold1();
- void validateThreshold2();
+ void validateThreshold2();
void _threshold1Changed();
void _threshold2Changed();
};
diff --git a/src/Settings/GimbalController.SettingsGroup.json b/src/Settings/GimbalController.SettingsGroup.json
index efc667b2150f..e45fac5d1daa 100644
--- a/src/Settings/GimbalController.SettingsGroup.json
+++ b/src/Settings/GimbalController.SettingsGroup.json
@@ -65,4 +65,4 @@
"units": "deg/s"
}
]
-}
\ No newline at end of file
+}
diff --git a/src/Settings/MapsSettings.cc b/src/Settings/MapsSettings.cc
index d4560523b1ee..ae5a3daa237f 100644
--- a/src/Settings/MapsSettings.cc
+++ b/src/Settings/MapsSettings.cc
@@ -32,7 +32,7 @@ DECLARE_SETTINGGROUP(Maps, "Maps")
deprecatedSettings.remove(kMaxMemCacheKey);
newSettings.setValue("maxCacheMemorySize", maxMemCache);
}
-
+
}
DECLARE_SETTINGSFACT(MapsSettings, maxCacheDiskSize)
diff --git a/src/Settings/NTRIP.SettingsGroup.json b/src/Settings/NTRIP.SettingsGroup.json
index 56c6d0b9687f..527e19f39bc7 100644
--- a/src/Settings/NTRIP.SettingsGroup.json
+++ b/src/Settings/NTRIP.SettingsGroup.json
@@ -63,4 +63,4 @@
"qgcRebootRequired": true
}
]
-}
\ No newline at end of file
+}
diff --git a/src/Settings/NTRIPSettings.cc b/src/Settings/NTRIPSettings.cc
index 97f02c12ef54..e03685536de0 100644
--- a/src/Settings/NTRIPSettings.cc
+++ b/src/Settings/NTRIPSettings.cc
@@ -53,13 +53,13 @@ NTRIPSettings::NTRIPSettings(QObject* parent)
metaData->setShortDescription(tr("RTCM Message Whitelist"));
metaData->setRawDefaultValue("");
_nameToMetaDataMap[metaData->name()] = metaData;
-
+
metaData = new FactMetaData(FactMetaData::valueTypeBool, this);
metaData->setName("ntripUseSpartn");
metaData->setShortDescription(tr("Use SPARTN pipeline"));
metaData->setRawDefaultValue(false);
- _nameToMetaDataMap[metaData->name()] = metaData;
-
+ _nameToMetaDataMap[metaData->name()] = metaData;
+
// Force ntripServerConnectEnabled to false at every startup, ignoring saved settings
// This ensures NTRIP never auto-starts regardless of previous user state
if (ntripServerConnectEnabled()) {
@@ -74,4 +74,4 @@ DECLARE_SETTINGSFACT(NTRIPSettings, ntripUsername)
DECLARE_SETTINGSFACT(NTRIPSettings, ntripPassword)
DECLARE_SETTINGSFACT(NTRIPSettings, ntripMountpoint)
DECLARE_SETTINGSFACT(NTRIPSettings, ntripWhitelist)
-DECLARE_SETTINGSFACT(NTRIPSettings, ntripUseSpartn)
\ No newline at end of file
+DECLARE_SETTINGSFACT(NTRIPSettings, ntripUseSpartn)
diff --git a/src/Settings/NTRIPSettings.h b/src/Settings/NTRIPSettings.h
index a491d9d1b868..91197ecf10b5 100644
--- a/src/Settings/NTRIPSettings.h
+++ b/src/Settings/NTRIPSettings.h
@@ -28,4 +28,4 @@ class NTRIPSettings : public SettingsGroup
DEFINE_SETTINGFACT(ntripMountpoint)
DEFINE_SETTINGFACT(ntripWhitelist)
DEFINE_SETTINGFACT(ntripUseSpartn)
-};
\ No newline at end of file
+};
diff --git a/src/Settings/SettingsGroup.cc b/src/Settings/SettingsGroup.cc
index 34a4adda016a..536b4d9fa0d8 100644
--- a/src/Settings/SettingsGroup.cc
+++ b/src/Settings/SettingsGroup.cc
@@ -32,4 +32,3 @@ SettingsFact* SettingsGroup::_createSettingsFact(const QString& factName)
}
return new SettingsFact(_settingsGroup, m, this);
}
-
diff --git a/src/Settings/SettingsManager.cc b/src/Settings/SettingsManager.cc
index 3c026e88f7c3..396162a3da94 100644
--- a/src/Settings/SettingsManager.cc
+++ b/src/Settings/SettingsManager.cc
@@ -207,7 +207,7 @@ void SettingsManager::_loadSettingsFiles()
qCDebug(SettingsManagerLog) << " Loading settings:" << groupName << settingName;
if (!groupObject[settingName].isObject()) {
- qCWarning(SettingsManagerLog) << "Settings file incorrect format, setting is not an object:" << fileInfo.absoluteFilePath()
+ qCWarning(SettingsManagerLog) << "Settings file incorrect format, setting is not an object:" << fileInfo.absoluteFilePath()
<< groupName << settingName;
continue;
}
@@ -284,4 +284,4 @@ void SettingsManager::adjustSettingMetaData(const QString &settingsGroup, FactMe
// Give QGCCorePlugin a whack at it too
QGCCorePlugin::instance()->adjustSettingMetaData(settingsGroup, metaData, visible);
-}
\ No newline at end of file
+}
diff --git a/src/Settings/Viewer3DSettings.cc b/src/Settings/Viewer3DSettings.cc
index e4e100f8b73d..2a8f929893a9 100644
--- a/src/Settings/Viewer3DSettings.cc
+++ b/src/Settings/Viewer3DSettings.cc
@@ -17,5 +17,3 @@ DECLARE_SETTINGSFACT(Viewer3DSettings, enabled)
DECLARE_SETTINGSFACT(Viewer3DSettings, osmFilePath)
DECLARE_SETTINGSFACT(Viewer3DSettings, buildingLevelHeight)
DECLARE_SETTINGSFACT(Viewer3DSettings, altitudeBias)
-
-
diff --git a/src/UI/toolbar/Images/EscIndicator.svg b/src/UI/toolbar/Images/EscIndicator.svg
index a1a0f24d83ae..e169af0cb9c1 100644
--- a/src/UI/toolbar/Images/EscIndicator.svg
+++ b/src/UI/toolbar/Images/EscIndicator.svg
@@ -18,4 +18,4 @@
-
\ No newline at end of file
+
diff --git a/src/UI/toolbar/Images/RidIconMan.svg b/src/UI/toolbar/Images/RidIconMan.svg
index 436659478858..6ca22f0930f5 100644
--- a/src/UI/toolbar/Images/RidIconMan.svg
+++ b/src/UI/toolbar/Images/RidIconMan.svg
@@ -23,4 +23,4 @@
-
\ No newline at end of file
+
diff --git a/src/UI/toolbar/Images/RidIconManNoID.svg b/src/UI/toolbar/Images/RidIconManNoID.svg
index 5e2bfcfae57e..2d73ca2d1a63 100644
--- a/src/UI/toolbar/Images/RidIconManNoID.svg
+++ b/src/UI/toolbar/Images/RidIconManNoID.svg
@@ -20,4 +20,4 @@
-
\ No newline at end of file
+
diff --git a/src/UI/toolbar/Images/RidIconText.svg b/src/UI/toolbar/Images/RidIconText.svg
index 6e4144dfbeef..a5be88119601 100644
--- a/src/UI/toolbar/Images/RidIconText.svg
+++ b/src/UI/toolbar/Images/RidIconText.svg
@@ -20,4 +20,4 @@
-
\ No newline at end of file
+
diff --git a/src/UTMSP/UTMSPAircraft.cpp b/src/UTMSP/UTMSPAircraft.cpp
index 4696dd54f613..df26cfa6f02b 100644
--- a/src/UTMSP/UTMSPAircraft.cpp
+++ b/src/UTMSP/UTMSPAircraft.cpp
@@ -82,4 +82,3 @@ std::string UTMSPAircraft::aircraftType(const mavlink_message_t &message)
return "Unknown Type";
}
-
diff --git a/src/Utilities/Geo/geographiclib.patch b/src/Utilities/Geo/geographiclib.patch
index ceb15de7b244..b21d5c1ec300 100644
--- a/src/Utilities/Geo/geographiclib.patch
+++ b/src/Utilities/Geo/geographiclib.patch
@@ -4,7 +4,7 @@ index 40d0b206..738d6c83 100644
+++ b/CMakeLists.txt
@@ -452,32 +452,32 @@ if (WIN32)
endif ()
-
+
# The list of tools (to be installed into, e.g., /usr/local/bin)
-set (TOOLS CartConvert ConicProj GeodesicProj GeoConvert GeodSolve
- GeoidEval Gravity IntersectTool MagneticField Planimeter RhumbSolve
@@ -17,9 +17,9 @@ index 40d0b206..738d6c83 100644
- geographiclib-get-magnetic)
+# set (SCRIPTS geographiclib-get-geoids geographiclib-get-gravity
+# geographiclib-get-magnetic)
-
+
set_property (GLOBAL PROPERTY USE_FOLDERS ON)
-
+
# The list of subdirectories to process
add_subdirectory (src)
add_subdirectory (include/GeographicLib)
@@ -50,6 +50,6 @@ index 40d0b206..738d6c83 100644
+# if (NOT RELEASE)
+# add_subdirectory (develop)
+# endif ()
-
+
# make exampleprograms does a fresh cmake configuration and so uses
# find_package to find the just-built version of GeographicLib (via the
diff --git a/src/Utilities/QGC.cc b/src/Utilities/QGC.cc
index 8866a2cfceb8..b56de6f63df5 100644
--- a/src/Utilities/QGC.cc
+++ b/src/Utilities/QGC.cc
@@ -161,4 +161,4 @@ bool fuzzyCompare(float value1, float value2, float tolerance)
}
}
-}
\ No newline at end of file
+}
diff --git a/src/Utilities/QGCLoggingCategory.cc b/src/Utilities/QGCLoggingCategory.cc
index 4de33080dbe3..5322fac09c4d 100644
--- a/src/Utilities/QGCLoggingCategory.cc
+++ b/src/Utilities/QGCLoggingCategory.cc
@@ -33,8 +33,8 @@ void QGCLoggingCategoryManager::_insertSorted(QmlObjectListModel* model, QGCLogg
model->append(item);
}
-void QGCLoggingCategoryManager::registerCategory(const QString &fullCategory)
-{
+void QGCLoggingCategoryManager::registerCategory(const QString &fullCategory)
+{
//qDebug() << "Registering logging full category" << fullCategory;
QString parentCategory;
@@ -47,7 +47,7 @@ void QGCLoggingCategoryManager::registerCategory(const QString &fullCategory)
childCategory = fullCategory.mid(hierarchyIndex + 1);
QString fullParentCategory = parentCategory + ".";
//qDebug() << " Parent category" << parentCategory << "child category" << childCategory << "full parent category" << fullParentCategory;
-
+
bool found = false;
for (int j=0; jcount(); j++) {
auto item = qobject_cast(currentParentModel->get(j));
@@ -77,7 +77,7 @@ void QGCLoggingCategoryManager::registerCategory(const QString &fullCategory)
void QGCLoggingCategoryManager::setCategoryLoggingOn(const QString &fullCategoryName, bool enable)
{
qCDebug(QGCLoggingCategoryRegisterLog) << "Set category logging" << fullCategoryName << enable;
-
+
QSettings settings;
settings.beginGroup(kFilterRulesSettingsGroup);
if (enable) {
diff --git a/src/Utilities/StateMachine/DelayState.cc b/src/Utilities/StateMachine/DelayState.cc
index b7cec83896d4..472c4ce4c1dd 100644
--- a/src/Utilities/StateMachine/DelayState.cc
+++ b/src/Utilities/StateMachine/DelayState.cc
@@ -17,14 +17,14 @@ DelayState::DelayState(QState* parentState, int delayMsecs)
connect(&_delayTimer, &QTimer::timeout, this, &DelayState::delayComplete);
- connect(this, &QState::entered, this, [this, delayMsecs] ()
- {
+ connect(this, &QState::entered, this, [this, delayMsecs] ()
+ {
qCDebug(QGCStateMachineLog) << stateName() << QStringLiteral("Starting delay for %1 secs").arg(delayMsecs / 1000.0) << " - " << Q_FUNC_INFO;
_delayTimer.start();
});
- connect(this, &QGCState::exited, this, [this] ()
- {
+ connect(this, &QGCState::exited, this, [this] ()
+ {
_delayTimer.stop();
});
}
diff --git a/src/Utilities/StateMachine/QGCFinalState.cc b/src/Utilities/StateMachine/QGCFinalState.cc
index c59d8edb4cb7..f50929006681 100644
--- a/src/Utilities/StateMachine/QGCFinalState.cc
+++ b/src/Utilities/StateMachine/QGCFinalState.cc
@@ -20,4 +20,4 @@ QGCFinalState::QGCFinalState(QState* parent)
connect(this, &QState::exited, this, [this] () {
qCDebug(QGCStateMachineLog) << "Exited Final State" << qobject_cast(this->machine())->machineName();
});
-}
\ No newline at end of file
+}
diff --git a/src/Utilities/StateMachine/QGCFinalState.h b/src/Utilities/StateMachine/QGCFinalState.h
index fe7643f6dc8e..ee89e916ed07 100644
--- a/src/Utilities/StateMachine/QGCFinalState.h
+++ b/src/Utilities/StateMachine/QGCFinalState.h
@@ -19,4 +19,4 @@ class QGCFinalState : public QFinalState
public:
QGCFinalState(QState* parent = nullptr);
-};
\ No newline at end of file
+};
diff --git a/src/Utilities/StateMachine/QGCState.cc b/src/Utilities/StateMachine/QGCState.cc
index da1c55095418..30fadd3989ef 100644
--- a/src/Utilities/StateMachine/QGCState.cc
+++ b/src/Utilities/StateMachine/QGCState.cc
@@ -12,7 +12,7 @@
QGC_LOGGING_CATEGORY(QGCStateMachineLog, "Utilities.QGCStateMachine")
-QGCState::QGCState(const QString& stateName, QState* parentState)
+QGCState::QGCState(const QString& stateName, QState* parentState)
: QState(QState::ExclusiveStates, parentState)
{
setObjectName(stateName);
@@ -26,16 +26,16 @@ QGCState::QGCState(const QString& stateName, QState* parentState)
}
QGCStateMachine* QGCState::machine() const
-{
- return qobject_cast(QState::machine());
+{
+ return qobject_cast(QState::machine());
}
-Vehicle *QGCState::vehicle()
-{
- return machine()->vehicle();
+Vehicle *QGCState::vehicle()
+{
+ return machine()->vehicle();
}
-QString QGCState::stateName() const
+QString QGCState::stateName() const
{
if (machine()) {
return QStringLiteral("%1:%2").arg(objectName(), machine()->machineName());
diff --git a/src/Utilities/StateMachine/QGCStateMachine.h b/src/Utilities/StateMachine/QGCStateMachine.h
index 38718775e1fe..d47b62c6205e 100644
--- a/src/Utilities/StateMachine/QGCStateMachine.h
+++ b/src/Utilities/StateMachine/QGCStateMachine.h
@@ -41,4 +41,3 @@ class QGCStateMachine : public QStateMachine
private:
Vehicle *_vehicle = nullptr;
};
-
diff --git a/src/Utilities/StateMachine/SendMavlinkCommandState.cc b/src/Utilities/StateMachine/SendMavlinkCommandState.cc
index 8adafb804e7c..98057361477a 100644
--- a/src/Utilities/StateMachine/SendMavlinkCommandState.cc
+++ b/src/Utilities/StateMachine/SendMavlinkCommandState.cc
@@ -35,8 +35,8 @@ void SendMavlinkCommandState::setup(MAV_CMD command, double param1, double param
_param6 = param6;
_param7 = param7;
- connect(this, &QState::entered, this, [this] ()
- {
+ connect(this, &QState::entered, this, [this] ()
+ {
qCDebug(QGCStateMachineLog) << QStringLiteral("Sending %1 command").arg(MissionCommandTree::instance()->friendlyName(_command)) << " - " << Q_FUNC_INFO;
_sendMavlinkCommand();
});
@@ -101,4 +101,4 @@ void SendMavlinkCommandState::_mavCommandResult(int vehicleId, int targetCompone
void SendMavlinkCommandState::_disconnectAll()
{
disconnect(vehicle(), &Vehicle::mavCommandResult, this, &SendMavlinkCommandState::_mavCommandResult);
-}
\ No newline at end of file
+}
diff --git a/src/Utilities/StateMachine/SendMavlinkCommandState.h b/src/Utilities/StateMachine/SendMavlinkCommandState.h
index d4d94a202a45..910b3cbfbf6e 100644
--- a/src/Utilities/StateMachine/SendMavlinkCommandState.h
+++ b/src/Utilities/StateMachine/SendMavlinkCommandState.h
@@ -24,7 +24,7 @@ class SendMavlinkCommandState : public QGCState
SendMavlinkCommandState(QState* parent);
void setup(MAV_CMD command, double param1 = 0.0, double param2 = 0.0, double param3 = 0.0, double param4 = 0.0, double param5 = 0.0, double param6 = 0.0, double param7 = 0.0);
-
+
signals:
void success();
diff --git a/src/Vehicle/Actuators/Actuators.h b/src/Vehicle/Actuators/Actuators.h
index ba7314ded36b..63e8c362a37c 100644
--- a/src/Vehicle/Actuators/Actuators.h
+++ b/src/Vehicle/Actuators/Actuators.h
@@ -124,4 +124,3 @@ private slots:
Vehicle* _vehicle{nullptr};
QMap _usedMixerLabels;
};
-
diff --git a/src/Vehicle/Actuators/Common.cc b/src/Vehicle/Actuators/Common.cc
index d5ed22c731d5..879202f52a9c 100644
--- a/src/Vehicle/Actuators/Common.cc
+++ b/src/Vehicle/Actuators/Common.cc
@@ -186,4 +186,3 @@ ActuatorGeometry::Type ActuatorGeometry::typeFromStr(const QString &type)
}
return ActuatorGeometry::Type::Other;
}
-
diff --git a/src/Vehicle/Actuators/Common.h b/src/Vehicle/Actuators/Common.h
index 09c4cbf5b9aa..056e992ca387 100644
--- a/src/Vehicle/Actuators/Common.h
+++ b/src/Vehicle/Actuators/Common.h
@@ -154,4 +154,3 @@ struct ActuatorGeometry
RenderOptions renderOptions{};
};
-
diff --git a/src/Vehicle/Actuators/GeometryImage.h b/src/Vehicle/Actuators/GeometryImage.h
index 119c1edcff8f..52c814a81221 100644
--- a/src/Vehicle/Actuators/GeometryImage.h
+++ b/src/Vehicle/Actuators/GeometryImage.h
@@ -58,4 +58,3 @@ class VehicleGeometryImageProvider : public QQuickImageProvider
};
} // namespace GeometryImage
-
diff --git a/src/Vehicle/Actuators/MotorAssignment.h b/src/Vehicle/Actuators/MotorAssignment.h
index 08661b3cffbb..ddc9cfa76fac 100644
--- a/src/Vehicle/Actuators/MotorAssignment.h
+++ b/src/Vehicle/Actuators/MotorAssignment.h
@@ -87,4 +87,3 @@ private slots:
QList> _functionFacts;
QString _message; ///< current message to show to the user after initializing
};
-
diff --git a/src/Vehicle/ComponentInformation/CompInfoActuators.cc b/src/Vehicle/ComponentInformation/CompInfoActuators.cc
index 640ba976bc05..616638e9e04e 100644
--- a/src/Vehicle/ComponentInformation/CompInfoActuators.cc
+++ b/src/Vehicle/ComponentInformation/CompInfoActuators.cc
@@ -22,4 +22,3 @@ void CompInfoActuators::setJson(const QString& metadataJsonFileName)
vehicle->setActuatorsMetadata(compId, metadataJsonFileName);
}
}
-
diff --git a/src/Vehicle/ComponentInformation/CompInfoEvents.cc b/src/Vehicle/ComponentInformation/CompInfoEvents.cc
index eb4251ead88f..e1a2a40eabf6 100644
--- a/src/Vehicle/ComponentInformation/CompInfoEvents.cc
+++ b/src/Vehicle/ComponentInformation/CompInfoEvents.cc
@@ -20,4 +20,3 @@ void CompInfoEvents::setJson(const QString& metadataJsonFileName)
{
vehicle->setEventsMetadata(compId, metadataJsonFileName);
}
-
diff --git a/src/Vehicle/ComponentInformation/ComponentInformationTranslation.h b/src/Vehicle/ComponentInformation/ComponentInformationTranslation.h
index 6b07b5ae6ca3..ceb00610f20e 100644
--- a/src/Vehicle/ComponentInformation/ComponentInformationTranslation.h
+++ b/src/Vehicle/ComponentInformation/ComponentInformationTranslation.h
@@ -22,7 +22,7 @@ class QGCCachedFileDownload;
class ComponentInformationTranslation : public QObject
{
Q_OBJECT
-
+
public:
ComponentInformationTranslation(QObject* parent, QGCCachedFileDownload* cachedFileDownload);
diff --git a/src/Vehicle/FTPManager.cc b/src/Vehicle/FTPManager.cc
index 66c785ba2c90..deed2698dbf1 100644
--- a/src/Vehicle/FTPManager.cc
+++ b/src/Vehicle/FTPManager.cc
@@ -26,7 +26,7 @@ FTPManager::FTPManager(Vehicle* vehicle)
// Mock link responds immediately if at all, speed up unit tests with faster timoue
_ackOrNakTimeoutTimer.setInterval(qgcApp()->runningUnitTests() ? 10 : _ackOrNakTimeoutMsecs);
connect(&_ackOrNakTimeoutTimer, &QTimer::timeout, this, &FTPManager::_ackOrNakTimeout);
-
+
// Make sure we don't have bad structure packing
Q_ASSERT(sizeof(MavlinkFTP::RequestHeader) == 12);
}
@@ -180,7 +180,7 @@ void FTPManager::_terminateComplete(void)
void FTPManager::_downloadComplete(const QString& errorMsg)
{
qCDebug(FTPManagerLog) << QString("_downloadComplete: errorMsg(%1)").arg(errorMsg);
-
+
QString downloadFilePath = _downloadState.toDir.absoluteFilePath(_downloadState.fileName);
QString error = errorMsg;
@@ -202,7 +202,7 @@ void FTPManager::_downloadComplete(const QString& errorMsg)
void FTPManager::_listDirectoryComplete(const QString& errorMsg)
{
qCDebug(FTPManagerLog) << QString("_listDirectoryComplete: errorMsg(%1)").arg(errorMsg);
-
+
_ackOrNakTimeoutTimer.stop();
_rgStateMachine.clear();
_currentStateMachineIndex = -1;
@@ -234,7 +234,7 @@ void FTPManager::_mavlinkMessageReceived(const mavlink_message_t& message)
if (data.target_system != qgcId) {
return;
}
-
+
MavlinkFTP::Request* request = (MavlinkFTP::Request*)&data.payload[0];
// Ignore old/reordered packets (handle wrap-around properly)
@@ -482,7 +482,7 @@ void FTPManager::_listDirectoryWorker(bool firstRequest)
request.hdr.offset = _listDirectoryState.expectedOffset;
request.hdr.size = sizeof(request.data);
_fillRequestDataWithString(&request, _listDirectoryState.fullPathOnVehicle);
-
+
if (firstRequest) {
_listDirectoryState.retryCount = 0;
} else {
@@ -729,7 +729,7 @@ void FTPManager::_resetSessionsTimeout(void)
void FTPManager::_sendRequestExpectAck(MavlinkFTP::Request* request)
{
_ackOrNakTimeoutTimer.start();
-
+
SharedLinkInterfacePtr sharedLink = _vehicle->vehicleLinkManager()->primaryLink().lock();
if (sharedLink) {
request->hdr.seqNumber = _expectedIncomingSeqNumber + 1; // Outgoing is 1 past last incoming
diff --git a/src/Vehicle/FTPManager.h b/src/Vehicle/FTPManager.h
index 8eba6ae414b0..6482e05692ac 100644
--- a/src/Vehicle/FTPManager.h
+++ b/src/Vehicle/FTPManager.h
@@ -25,7 +25,7 @@ class FTPManager : public QObject
Q_OBJECT
friend class Vehicle;
-
+
public:
FTPManager(Vehicle* vehicle);
@@ -65,7 +65,7 @@ class FTPManager : public QObject
/// Signalled during a lengthy command to show progress
/// @param value Amount of progress: 0.0 = none, 1.0 = complete
void commandProgress(float value);
-
+
private slots:
void _ackOrNakTimeout(void);
@@ -175,8 +175,7 @@ private slots:
QTimer _ackOrNakTimeoutTimer;
int _currentStateMachineIndex = -1;
uint16_t _expectedIncomingSeqNumber = 0;
-
+
static const int _ackOrNakTimeoutMsecs = 1000;
static const int _maxRetry = 3;
};
-
diff --git a/src/Vehicle/FactGroups/EFIFact.json b/src/Vehicle/FactGroups/EFIFact.json
index e7c7f3d3a56f..6d2658fd9fea 100644
--- a/src/Vehicle/FactGroups/EFIFact.json
+++ b/src/Vehicle/FactGroups/EFIFact.json
@@ -119,4 +119,4 @@
"decimalPlaces": 1
}
]
-}
\ No newline at end of file
+}
diff --git a/src/Vehicle/FactGroups/GeneratorFact.json b/src/Vehicle/FactGroups/GeneratorFact.json
index d5f8e6f68b52..2095c0b96a2d 100644
--- a/src/Vehicle/FactGroups/GeneratorFact.json
+++ b/src/Vehicle/FactGroups/GeneratorFact.json
@@ -74,4 +74,4 @@
"units": "sec"
}
]
-}
\ No newline at end of file
+}
diff --git a/src/Vehicle/FactGroups/RPMFact.json b/src/Vehicle/FactGroups/RPMFact.json
index ae5aeab6a35d..294d5058210a 100644
--- a/src/Vehicle/FactGroups/RPMFact.json
+++ b/src/Vehicle/FactGroups/RPMFact.json
@@ -32,4 +32,4 @@
"units": "rpm"
}
]
-}
\ No newline at end of file
+}
diff --git a/src/Vehicle/InitialConnectStateMachine.cc b/src/Vehicle/InitialConnectStateMachine.cc
index e258a5145e52..050a4605781f 100644
--- a/src/Vehicle/InitialConnectStateMachine.cc
+++ b/src/Vehicle/InitialConnectStateMachine.cc
@@ -401,4 +401,3 @@ void InitialConnectStateMachine::_stateSignalInitialConnectComplete(StateMachine
qCDebug(InitialConnectStateMachineLog) << "Signalling initialConnectComplete";
emit vehicle->initialConnectComplete();
}
-
diff --git a/src/Vehicle/StandardModes.h b/src/Vehicle/StandardModes.h
index ed1123131dbb..3363d4bcacda 100644
--- a/src/Vehicle/StandardModes.h
+++ b/src/Vehicle/StandardModes.h
@@ -59,4 +59,3 @@ Q_OBJECT
FlightModeList _modeList;
};
-
diff --git a/src/Vehicle/Vehicle.cc b/src/Vehicle/Vehicle.cc
index b9fad0df7b6a..72ca657dbfa2 100644
--- a/src/Vehicle/Vehicle.cc
+++ b/src/Vehicle/Vehicle.cc
@@ -77,7 +77,7 @@ QGC_LOGGING_CATEGORY(VehicleLog, "Vehicle.Vehicle")
#define SET_HOME_TERRAIN_ALT_MIN -500
// After a second GCS has requested control and we have given it permission to takeover, we will remove takeover permission automatically after this timeout
-// If the second GCS didn't get control
+// If the second GCS didn't get control
#define REQUEST_OPERATOR_CONTROL_ALLOW_TAKEOVER_TIMEOUT_MSECS 10000
const QString guided_mode_not_supported_by_vehicle = QObject::tr("Guided mode not supported by Vehicle.");
@@ -643,7 +643,7 @@ void Vehicle::_mavlinkMessageReceived(LinkInterface* link, mavlink_message_t mes
}
case MAVLINK_MSG_ID_CONTROL_STATUS:
_handleControlStatus(message);
- break;
+ break;
case MAVLINK_MSG_ID_COMMAND_LONG:
_handleCommandLong(message);
break;
@@ -2124,8 +2124,8 @@ double Vehicle::minimumEquivalentAirspeed()
return _firmwarePlugin->minimumEquivalentAirspeed(this);
}
-bool Vehicle::hasGripper() const
-{
+bool Vehicle::hasGripper() const
+{
return _firmwarePlugin->hasGripper(this);
}
@@ -2624,12 +2624,12 @@ bool Vehicle::_commandCanBeDuplicated(MAV_CMD command)
}
void Vehicle::_sendMavCommandWorker(
- bool commandInt,
- bool showError,
+ bool commandInt,
+ bool showError,
const MavCmdAckHandlerInfo_t* ackHandlerInfo,
- int targetCompId,
- MAV_CMD command,
- MAV_FRAME frame,
+ int targetCompId,
+ MAV_CMD command,
+ MAV_FRAME frame,
float param1, float param2, float param3, float param4, double param5, double param6, float param7)
{
// We can't send commands to compIdAll using this method. The reason being that we would get responses back possibly from multiple components
@@ -2923,7 +2923,7 @@ void Vehicle::_waitForMavlinkMessageMessageReceivedHandler(const mavlink_message
// We use any incoming message as a trigger to check timeouts on message requests
for (auto& compIdEntry : _requestMessageInfoMap) {
- for (auto requestMessageInfo : compIdEntry) {
+ for (auto requestMessageInfo : compIdEntry) {
if (requestMessageInfo->messageWaitElapsedTimer.isValid() && requestMessageInfo->messageWaitElapsedTimer.elapsed() > (qgcApp()->runningUnitTests() ? 50 : 1000)) {
auto resultHandler = requestMessageInfo->resultHandler;
auto resultHandlerData = requestMessageInfo->resultHandlerData;
@@ -3643,8 +3643,8 @@ void Vehicle::doSetHome(const QGeoCoordinate& coord)
disconnect(_currentDoSetHomeTerrainAtCoordinateQuery, &TerrainAtCoordinateQuery::terrainDataReceived, this, &Vehicle::_doSetHomeTerrainReceived);
_currentDoSetHomeTerrainAtCoordinateQuery = nullptr;
}
- // Save the coord for using when our terrain data arrives. If there was a pending terrain query paired with an older coordinate it is safe to
- // Override now, as we just disconnected the signal that would trigger the command sending
+ // Save the coord for using when our terrain data arrives. If there was a pending terrain query paired with an older coordinate it is safe to
+ // Override now, as we just disconnected the signal that would trigger the command sending
_doSetHomeCoordinate = coord;
// Now setup and trigger the new terrain query
_currentDoSetHomeTerrainAtCoordinateQuery = new TerrainAtCoordinateQuery(true /* autoDelet */);
@@ -3977,7 +3977,7 @@ void Vehicle::startTimerRevertAllowTakeover()
_timerRevertAllowTakeover.setInterval(operatorControlTakeoverTimeoutMsecs());
// Disconnect any previous connections to avoid multiple handlers
disconnect(&_timerRevertAllowTakeover, &QTimer::timeout, nullptr, nullptr);
-
+
connect(&_timerRevertAllowTakeover, &QTimer::timeout, this, [this](){
if (MAVLinkProtocol::instance()->getSystemId() == _sysid_in_control) {
this->requestOperatorControl(false);
@@ -4031,12 +4031,12 @@ void Vehicle::_requestOperatorControlAckHandler(void* resultHandlerData, int com
default:
break;
}
-
+
Vehicle* vehicle = static_cast(resultHandlerData);
if (!vehicle) {
return;
}
-
+
if (ack.result == MAV_RESULT_ACCEPTED) {
qCDebug(VehicleLog) << "Operator control request accepted";
} else {
@@ -4227,9 +4227,9 @@ QString Vehicle::mavCmdResultFailureCodeToString(MavCmdResultFailureCode_t failu
case MavCmdResultCommandResultOnly:
return QStringLiteral("Command Result Only");
case MavCmdResultFailureNoResponseToCommand:
- return QStringLiteral("No Response To Command");
+ return QStringLiteral("No Response To Command");
case MavCmdResultFailureDuplicateCommand:
- return QStringLiteral("Duplicate Command");
+ return QStringLiteral("Duplicate Command");
default:
return QStringLiteral("Unknown (%1)").arg(failureCode);
}
diff --git a/src/Vehicle/Vehicle.h b/src/Vehicle/Vehicle.h
index ef46799c727f..f9406b24b4cc 100644
--- a/src/Vehicle/Vehicle.h
+++ b/src/Vehicle/Vehicle.h
@@ -393,7 +393,7 @@ class Vehicle : public VehicleFactGroup
Q_ENUM(PIDTuningTelemetryMode)
Q_INVOKABLE void setPIDTuningTelemetryMode(PIDTuningTelemetryMode mode);
-
+
Q_INVOKABLE void forceArm ();
/// Sends PARAM_MAP_RC message to vehicle
@@ -673,7 +673,7 @@ class Vehicle : public VehicleFactGroup
// Callback info for sendMavCommandWithHandler
typedef struct MavCmdAckHandlerInfo_s {
MavCmdResultHandler resultHandler; ///> nullptr for no handler
- void* resultHandlerData;
+ void* resultHandlerData;
MavCmdProgressHandler progressHandler;
void* progressHandlerData; ///> nullptr for no handler
} MavCmdAckHandlerInfo_t;
@@ -681,7 +681,7 @@ class Vehicle : public VehicleFactGroup
/// Sends the command and calls the callback with the result
void sendMavCommandWithHandler(
const MavCmdAckHandlerInfo_t* ackHandlerInfo, ///> nullptr to signale no handlers
- int compId, MAV_CMD command,
+ int compId, MAV_CMD command,
float param1 = 0.0f, float param2 = 0.0f, float param3 = 0.0f, float param4 = 0.0f, float param5 = 0.0f, float param6 = 0.0f, float param7 = 0.0f);
/// Sends the command and calls the callback with the result
@@ -689,7 +689,7 @@ class Vehicle : public VehicleFactGroup
/// @param resultHandleData Opaque data passed through callback
void sendMavCommandIntWithHandler(
const MavCmdAckHandlerInfo_t* ackHandlerInfo, ///> nullptr to signale no handlers
- int compId, MAV_CMD command, MAV_FRAME frame,
+ int compId, MAV_CMD command, MAV_FRAME frame,
float param1 = 0.0f, float param2 = 0.0f, float param3 = 0.0f, float param4 = 0.0f, double param5 = 0.0f, double param6 = 0.0f, float param7 = 0.0f);
/// Sends the command and calls the fallback lambda function in
@@ -1207,9 +1207,9 @@ private slots:
static const int _mavCommandAckTimeoutMSecsHighLatency = 120000;
void _sendMavCommandWorker (
- bool commandInt, bool showError,
+ bool commandInt, bool showError,
const MavCmdAckHandlerInfo_t* ackHandlerInfo, ///> nullptr to signale no handlers
- int compId, MAV_CMD command, MAV_FRAME frame,
+ int compId, MAV_CMD command, MAV_FRAME frame,
float param1, float param2, float param3, float param4, double param5, double param6, float param7);
void _sendMavCommandFromList(int index);
int _findMavCommandListEntryIndex(int targetCompId, MAV_CMD command);
@@ -1351,7 +1351,7 @@ private slots:
int requestOperatorControlRemainingMsecs() const { return _timerRequestOperatorControl.remainingTime(); }
bool sendControlRequestAllowed() const { return _sendControlRequestAllowed; }
void requestOperatorControlStartTimer(int requestTimeoutMsecs);
-
+
uint8_t _sysid_in_control = 0;
uint8_t _gcsControlStatusFlags = 0;
bool _gcsControlStatusFlags_SystemManager = 0;
diff --git a/src/Vehicle/VehicleObjectAvoidance.h b/src/Vehicle/VehicleObjectAvoidance.h
index 0c02445d211a..42800ce0bc06 100644
--- a/src/Vehicle/VehicleObjectAvoidance.h
+++ b/src/Vehicle/VehicleObjectAvoidance.h
@@ -69,4 +69,3 @@ class VehicleObjectAvoidance : public QObject
static constexpr const char* kColPrevParam = "CP_DIST";
};
-
diff --git a/src/Vehicle/VehicleSetup/Bootloader.cc b/src/Vehicle/VehicleSetup/Bootloader.cc
index e9eb394318eb..6cd12c53b466 100644
--- a/src/Vehicle/VehicleSetup/Bootloader.cc
+++ b/src/Vehicle/VehicleSetup/Bootloader.cc
@@ -240,7 +240,7 @@ bool Bootloader::_write(const uint8_t* data, qint64 maxSize)
qWarning() << _errorString;
return false;
}
-
+
return true;
}
@@ -279,12 +279,12 @@ bool Bootloader::_read(uint8_t* data, qint64 cBytesExpected, int readTimeout)
bool Bootloader::_getCommandResponse(int responseTimeout)
{
uint8_t response[2];
-
+
if (!_read(response, 2, responseTimeout)) {
_errorString.prepend(tr("Get Command Response: "));
return false;
}
-
+
// Make sure we get a good sync response
if (response[0] != PROTO_INSYNC) {
_errorString = tr("Invalid sync response: 0x%1 0x%2").arg(response[0], 2, 16, QLatin1Char('0')).arg(response[1], 2, 16, QLatin1Char('0'));
@@ -302,7 +302,7 @@ bool Bootloader::_getCommandResponse(int responseTimeout)
_errorString = tr("Command failed: 0x%1 (%2)").arg(response[1], 2, 16, QLatin1Char('0')).arg(responseCode);
return false;
}
-
+
return true;
}
@@ -312,7 +312,7 @@ bool Bootloader::_getCommandResponse(int responseTimeout)
bool Bootloader::_protoGetDevice(uint8_t param, uint32_t& value)
{
uint8_t buf[3] = { PROTO_GET_DEVICE, param, PROTO_EOC };
-
+
if (!_write(buf, sizeof(buf))) {
goto Error;
}
@@ -322,9 +322,9 @@ bool Bootloader::_protoGetDevice(uint8_t param, uint32_t& value)
if (!_getCommandResponse()) {
goto Error;
}
-
+
return true;
-
+
Error:
_errorString.prepend(tr("Get Device: "));
return false;
@@ -336,7 +336,7 @@ bool Bootloader::_protoGetDevice(uint8_t param, uint32_t& value)
bool Bootloader::_sendCommand(const uint8_t cmd, int responseTimeout)
{
uint8_t buf[2] = { cmd, PROTO_EOC };
-
+
if (!_write(buf, 2)) {
goto Error;
}
@@ -345,7 +345,7 @@ bool Bootloader::_sendCommand(const uint8_t cmd, int responseTimeout)
if (!_getCommandResponse(responseTimeout)) {
goto Error;
}
-
+
return true;
Error:
@@ -361,29 +361,29 @@ bool Bootloader::_binProgram(const FirmwareImage* image)
return false;
}
uint32_t imageSize = (uint32_t)firmwareFile.size();
-
+
uint8_t imageBuf[PROG_MULTI_MAX];
uint32_t bytesSent = 0;
_imageCRC = 0;
-
+
Q_ASSERT(PROG_MULTI_MAX <= 0x8F);
-
+
while (bytesSent < imageSize) {
int bytesToSend = imageSize - bytesSent;
if (bytesToSend > (int)sizeof(imageBuf)) {
bytesToSend = (int)sizeof(imageBuf);
}
-
+
Q_ASSERT((bytesToSend % 4) == 0);
-
+
int bytesRead = firmwareFile.read((char *)imageBuf, bytesToSend);
if (bytesRead == -1 || bytesRead != bytesToSend) {
_errorString = tr("Firmware file read failed: %1").arg(firmwareFile.errorString());
return false;
}
-
+
Q_ASSERT(bytesToSend <= 0x8F);
-
+
bool failed = true;
if (_write(PROTO_PROG_MULTI) &&
_write((uint8_t)bytesToSend) &&
@@ -426,16 +426,16 @@ bool Bootloader::_ihxProgram(const FirmwareImage* image)
bool failed;
uint16_t flashAddress;
QByteArray bytes;
-
+
if (!image->ihxGetBlock(index, flashAddress, bytes)) {
_errorString = tr("Unable to retrieve block from ihx: index %1").arg(index);
return false;
}
-
+
qCDebug(FirmwareUpgradeVerboseLog) << QString("Bootloader::_ihxProgram - address:0x%1 size:%2 block:%3").arg(flashAddress, 8, 16, QLatin1Char('0')).arg(bytes.length()).arg(index);
-
+
// Set flash address
-
+
failed = true;
if (_write(PROTO_LOAD_ADDRESS) &&
_write(flashAddress & 0xFF) &&
@@ -446,17 +446,17 @@ bool Bootloader::_ihxProgram(const FirmwareImage* image)
failed = false;
}
}
-
+
if (failed) {
_errorString = tr("Unable to set flash start address: 0x%2").arg(flashAddress, 8, 16, QLatin1Char('0'));
return false;
}
-
+
// Flash
-
+
int bytesIndex = 0;
uint16_t bytesLeftToWrite = bytes.length();
-
+
while (bytesLeftToWrite > 0) {
uint8_t bytesToWrite;
@@ -480,30 +480,30 @@ bool Bootloader::_ihxProgram(const FirmwareImage* image)
_errorString = tr("Flash failed: %1 at address 0x%2").arg(_errorString).arg(flashAddress, 8, 16, QLatin1Char('0'));
return false;
}
-
+
bytesIndex += bytesToWrite;
bytesLeftToWrite -= bytesToWrite;
bytesSent += bytesToWrite;
-
+
emit updateProgress(bytesSent, imageSize);
}
}
-
+
return true;
}
bool Bootloader::verify(const FirmwareImage* image)
{
bool ret;
-
+
if (!image->imageIsBinFormat() || _bootloaderVersion <= 2) {
ret = _verifyBytes(image);
} else {
ret = _verifyCRC();
}
-
+
reboot();
-
+
return ret;
}
@@ -520,40 +520,40 @@ bool Bootloader::_verifyBytes(const FirmwareImage* image)
bool Bootloader::_binVerifyBytes(const FirmwareImage* image)
{
Q_ASSERT(image->imageIsBinFormat());
-
+
QFile firmwareFile(image->binFilename());
if (!firmwareFile.open(QIODevice::ReadOnly)) {
_errorString = tr("Unable to open firmware file %1: %2").arg(image->binFilename(), firmwareFile.errorString());
return false;
}
uint32_t imageSize = (uint32_t)firmwareFile.size();
-
+
if (!_sendCommand(PROTO_CHIP_VERIFY)) {
return false;
}
-
+
uint8_t fileBuf[READ_MULTI_MAX];
uint8_t readBuf[READ_MULTI_MAX];
uint32_t bytesVerified = 0;
-
+
Q_ASSERT(PROG_MULTI_MAX <= 0x8F);
-
+
while (bytesVerified < imageSize) {
int bytesToRead = imageSize - bytesVerified;
if (bytesToRead > (int)sizeof(readBuf)) {
bytesToRead = (int)sizeof(readBuf);
}
-
+
Q_ASSERT((bytesToRead % 4) == 0);
-
+
int bytesRead = firmwareFile.read((char *)fileBuf, bytesToRead);
if (bytesRead == -1 || bytesRead != bytesToRead) {
_errorString = tr("Firmware file read failed: %1").arg(firmwareFile.errorString());
return false;
}
-
+
Q_ASSERT(bytesToRead <= 0x8F);
-
+
bool failed = true;
if (_write(PROTO_READ_MULTI) &&
_write((uint8_t)bytesToRead) &&
@@ -576,38 +576,38 @@ bool Bootloader::_binVerifyBytes(const FirmwareImage* image)
return false;
}
}
-
+
bytesVerified += bytesToRead;
-
+
emit updateProgress(bytesVerified, imageSize);
}
-
+
firmwareFile.close();
-
+
return true;
}
bool Bootloader::_ihxVerifyBytes(const FirmwareImage* image)
{
Q_ASSERT(!image->imageIsBinFormat());
-
+
uint32_t imageSize = image->imageSize();
uint32_t bytesVerified = 0;
-
+
for (uint16_t index=0; indexihxBlockCount(); index++) {
bool failed;
uint16_t readAddress;
QByteArray imageBytes;
-
+
if (!image->ihxGetBlock(index, readAddress, imageBytes)) {
_errorString = tr("Unable to retrieve block from ihx: index %1").arg(index);
return false;
}
-
+
qCDebug(FirmwareUpgradeLog) << QString("Bootloader::_ihxVerifyBytes - address:0x%1 size:%2 block:%3").arg(readAddress, 8, 16, QLatin1Char('0')).arg(imageBytes.length()).arg(index);
-
+
// Set read address
-
+
failed = true;
if (_write(PROTO_LOAD_ADDRESS) &&
_write(readAddress & 0xFF) &&
@@ -618,21 +618,21 @@ bool Bootloader::_ihxVerifyBytes(const FirmwareImage* image)
failed = false;
}
}
-
+
if (failed) {
_errorString = tr("Unable to set read start address: 0x%2").arg(readAddress, 8, 16, QLatin1Char('0'));
return false;
}
-
+
// Read back
-
+
int bytesIndex = 0;
uint16_t bytesLeftToRead = imageBytes.length();
-
+
while (bytesLeftToRead > 0) {
uint8_t bytesToRead;
uint8_t readBuf[READ_MULTI_MAX];
-
+
if (bytesLeftToRead > READ_MULTI_MAX) {
bytesToRead = READ_MULTI_MAX;
} else {
@@ -654,9 +654,9 @@ bool Bootloader::_ihxVerifyBytes(const FirmwareImage* image)
_errorString = tr("Read failed: %1 at address: 0x%2").arg(_errorString).arg(readAddress, 8, 16, QLatin1Char('0'));
return false;
}
-
+
// Compare
-
+
for (int i=0; i(static_cast(0xFF)));
}
-
+
// Store decompressed image file in same location as original download file
QDir imageDir = QFileInfo(imageFilename).dir();
QString decompressFilename = imageDir.filePath("PX4FlashUpgrade.bin");
-
+
QFile decompressFile(decompressFilename);
if (!decompressFile.open(QIODevice::WriteOnly | QIODevice::Truncate)) {
emit statusMessage(tr("Unable to open decompressed file %1 for writing, error: %2").arg(decompressFilename, decompressFile.errorString()));
return false;
}
-
+
qint64 bytesWritten = decompressFile.write(decompressedBytes);
if (bytesWritten != decompressedBytes.length()) {
emit statusMessage(tr("Write failed for decompressed image file, error: %1").arg(decompressFile.errorString()));
return false;
}
decompressFile.close();
-
+
_binFilename = decompressFilename;
-
+
return true;
}
@@ -355,13 +355,13 @@ bool FirmwareImage::_decompressJsonValue(const QJsonObject& jsonObject, ///< J
emit statusMessage(tr("Firmware file has invalid decompressed size for %1").arg(sizeKey));
return false;
}
-
+
// XXX Qt's JSON string handling is terribly broken, strings
// with some length (18K / 25K) are just weirdly cut.
// The code below works around this by manually 'parsing'
// for the image string. Since its compressed / checksummed
// this should be fine.
-
+
QStringList parts = QString(jsonDocBytes).split(QString("\"%1\": \"").arg(bytesKey));
if (parts.length() == 1) {
emit statusMessage(tr("Could not find compressed bytes for %1 in Firmware file").arg(bytesKey));
@@ -372,18 +372,18 @@ bool FirmwareImage::_decompressJsonValue(const QJsonObject& jsonObject, ///< J
emit statusMessage(tr("Incorrectly formed compressed bytes section for %1 in Firmware file").arg(bytesKey));
return false;
}
-
+
// Store decompressed size as first four bytes. This is required by qUncompress routine.
QByteArray raw;
raw.append((unsigned char)((decompressedSize >> 24) & 0xFF));
raw.append((unsigned char)((decompressedSize >> 16) & 0xFF));
raw.append((unsigned char)((decompressedSize >> 8) & 0xFF));
raw.append((unsigned char)((decompressedSize >> 0) & 0xFF));
-
+
QByteArray raw64 = parts.first().toUtf8();
raw.append(QByteArray::fromBase64(raw64));
decompressedBytes = qUncompress(raw);
-
+
if (decompressedBytes.length() == 0) {
emit statusMessage(tr("Firmware file has 0 length %1").arg(bytesKey));
return false;
@@ -392,9 +392,9 @@ bool FirmwareImage::_decompressJsonValue(const QJsonObject& jsonObject, ///< J
emit statusMessage(tr("Size for decompressed %1 does not match stored size: Expected(%1) Actual(%2)").arg(decompressedSize).arg(decompressedBytes.length()));
return false;
}
-
+
emit statusMessage(tr("Successfully decompressed %1").arg(bytesKey));
-
+
return true;
}
@@ -407,7 +407,7 @@ bool FirmwareImage::ihxGetBlock(uint16_t index, uint16_t& address, QByteArray& b
{
address = 0;
bytes.clear();
-
+
if (index < ihxBlockCount()) {
address = _ihxBlocks[index].address;
bytes = _ihxBlocks[index].bytes;
@@ -424,12 +424,12 @@ bool FirmwareImage::_binLoad(const QString& imageFilename)
emit statusMessage(tr("Unabled to open firmware file %1, %2").arg(imageFilename, binFile.errorString()));
return false;
}
-
+
_imageSize = (uint32_t)binFile.size();
-
+
binFile.close();
-
+
_binFilename = imageFilename;
-
+
return true;
}
diff --git a/src/Vehicle/VehicleSetup/FirmwareImage.h b/src/Vehicle/VehicleSetup/FirmwareImage.h
index e4f87a547499..a487047c2a79 100644
--- a/src/Vehicle/VehicleSetup/FirmwareImage.h
+++ b/src/Vehicle/VehicleSetup/FirmwareImage.h
@@ -23,58 +23,58 @@
class FirmwareImage : public QObject
{
Q_OBJECT
-
+
public:
FirmwareImage(QObject *parent = 0);
-
+
/// Loads the specified image file. Supported formats: .px4, .bin, .ihx.
/// Emits errorMesssage and statusMessage signals while loading.
/// @param imageFilename Image file to load
/// @param boardId Board id that we are going to load this image onto
/// @return true: success, false: failure
bool load(const QString& imageFilename, uint32_t boardId);
-
+
/// Returns the number of bytes in the image.
uint32_t imageSize(void) const { return _imageSize; }
-
+
/// @return true: image format is .bin
bool imageIsBinFormat(void) const { return _binFormat; }
-
+
/// @return Filename for .bin file
QString binFilename(void) const { return _binFilename; }
-
+
/// @return Block count from .ihx image
uint16_t ihxBlockCount(void) const;
-
+
/// Retrieves the specified block from the .ihx image
/// @param index Index of block to return
/// @param address Address of returned block
/// @param byets Bytes of returned block
/// @return true: block retrieved
bool ihxGetBlock(uint16_t index, uint16_t& address, QByteArray& bytes) const;
-
+
/// @return true: actual boardId is compatible with firmware boardId
bool isCompatible(uint32_t boardId, uint32_t firmwareId);
signals:
void errorMessage(const QString& errorString);
void statusMessage(const QString& warningtring);
-
+
private:
bool _binLoad(const QString& px4Filename);
bool _px4Load(const QString& px4Filename);
bool _ihxLoad(const QString& ihxFilename);
-
+
bool _readByteFromStream(QTextStream& stream, uint8_t& byte);
bool _readWordFromStream(QTextStream& stream, uint16_t& word);
bool _readBytesFromStream(QTextStream& stream, uint8_t byteCount, QByteArray& bytes);
-
+
bool _decompressJsonValue(const QJsonObject& jsonObject,
const QByteArray& jsonDocBytes,
const QString& sizeKey,
const QString& bytesKey,
QByteArray& decompressedBytes);
-
+
typedef struct {
uint16_t address;
QByteArray bytes;
@@ -95,4 +95,3 @@ class FirmwareImage : public QObject
static constexpr const char* _jsonImageKey = "image";
static constexpr const char* _jsonMavAutopilotKey = "mav_autopilot";
};
-
diff --git a/src/Vehicle/VehicleSetup/FirmwareUpgradeController.cc b/src/Vehicle/VehicleSetup/FirmwareUpgradeController.cc
index 8eafb2ac3cc7..ff34f9bcac27 100644
--- a/src/Vehicle/VehicleSetup/FirmwareUpgradeController.cc
+++ b/src/Vehicle/VehicleSetup/FirmwareUpgradeController.cc
@@ -90,7 +90,7 @@ static QMap px4_board_name_map {
{1058, "holybro_kakuteh7mini_default"},
{1105, "holybro_kakuteh7-wing_default"},
{1110, "jfb_jfb110_default"},
- {1123, "siyi_n7_default"},
+ {1123, "siyi_n7_default"},
{1124, "3dr_ctrl-zero-h7-oem-revg_default"},
{5600, "zeroone_x6_default"},
{6110, "svehicle_e2_default"},
@@ -141,7 +141,7 @@ FirmwareUpgradeController::FirmwareUpgradeController(void)
connect(_threadController, &PX4FirmwareUpgradeThreadController::eraseComplete, this, &FirmwareUpgradeController::_eraseComplete);
connect(_threadController, &PX4FirmwareUpgradeThreadController::flashComplete, this, &FirmwareUpgradeController::_flashComplete);
connect(_threadController, &PX4FirmwareUpgradeThreadController::updateProgress, this, &FirmwareUpgradeController::_updateProgress);
-
+
connect(&_eraseTimer, &QTimer::timeout, this, &FirmwareUpgradeController::_eraseProgressTick);
#if !defined(QGC_NO_ARDUPILOT_DIALECT)
@@ -256,7 +256,7 @@ void FirmwareUpgradeController::_foundBoard(bool firstAttempt, const QSerialPort
DefaultVehicleFirmware);
}
}
-
+
qCDebug(FirmwareUpgradeLog) << _boardType << _boardTypeName;
emit boardFound();
}
@@ -280,12 +280,12 @@ void FirmwareUpgradeController::_foundBoardInfo(int bootloaderVersion, int board
_bootloaderVersion = static_cast(bootloaderVersion);
_bootloaderBoardID = static_cast(boardID);
_bootloaderBoardFlashSize = static_cast(flashSize);
-
+
_appendStatusLog(tr("Connected to bootloader:"));
_appendStatusLog(tr(" Version: %1").arg(_bootloaderVersion));
_appendStatusLog(tr(" Board ID: %1").arg(_bootloaderBoardID));
_appendStatusLog(tr(" Flash size: %1").arg(_bootloaderBoardFlashSize));
-
+
if (_startFlashWhenBootloaderFound) {
flash(_startFlashWhenBootloaderFoundFirmwareIdentity);
} else {
@@ -348,7 +348,7 @@ void FirmwareUpgradeController::_getFirmwareFile(FirmwareIdentifier firmwareId)
return;
}
}
-
+
if (_firmwareFilename.isEmpty()) {
_errorCancel(tr("No firmware file selected"));
} else {
@@ -360,10 +360,10 @@ void FirmwareUpgradeController::_getFirmwareFile(FirmwareIdentifier firmwareId)
void FirmwareUpgradeController::_downloadFirmware(void)
{
Q_ASSERT(!_firmwareFilename.isEmpty());
-
+
_appendStatusLog(tr("Downloading firmware..."));
_appendStatusLog(tr(" From: %1").arg(_firmwareFilename));
-
+
QGCFileDownload* downloader = new QGCFileDownload(this);
connect(downloader, &QGCFileDownload::downloadComplete, this, &FirmwareUpgradeController::_firmwareDownloadComplete);
connect(downloader, &QGCFileDownload::downloadProgress, this, &FirmwareUpgradeController::_firmwareDownloadProgress);
@@ -384,23 +384,23 @@ void FirmwareUpgradeController::_firmwareDownloadComplete(QString /*remoteFile*/
{
if (errorMsg.isEmpty()) {
_appendStatusLog(tr("Download complete"));
-
+
FirmwareImage* image = new FirmwareImage(this);
-
+
connect(image, &FirmwareImage::statusMessage, this, &FirmwareUpgradeController::_status);
connect(image, &FirmwareImage::errorMessage, this, &FirmwareUpgradeController::_error);
-
+
if (!image->load(localFile, _bootloaderBoardID)) {
_errorCancel(tr("Image load failed"));
return;
}
-
+
// We can't proceed unless we have the bootloader
if (!_bootloaderFound) {
_errorCancel(tr("Bootloader not found"));
return;
}
-
+
if (_bootloaderBoardFlashSize != 0 && image->imageSize() > _bootloaderBoardFlashSize) {
_errorCancel(tr("Image size of %1 is too large for board flash size %2").arg(image->imageSize()).arg(_bootloaderBoardFlashSize));
return;
@@ -433,7 +433,7 @@ void FirmwareUpgradeController::_flashComplete(void)
{
delete _image;
_image = nullptr;
-
+
_appendStatusLog(tr("Upgrade complete"), true);
_appendStatusLog("------------------------------------------", false);
emit flashComplete();
@@ -444,7 +444,7 @@ void FirmwareUpgradeController::_error(const QString& errorString)
{
delete _image;
_image = nullptr;
-
+
_errorCancel(QString("Error: %1").arg(errorString));
}
@@ -473,15 +473,15 @@ void FirmwareUpgradeController::_eraseProgressTick(void)
void FirmwareUpgradeController::_appendStatusLog(const QString& text, bool critical)
{
Q_ASSERT(_statusLog);
-
+
QString varText;
-
+
if (critical) {
varText = QString("%1").arg(text);
} else {
varText = text;
}
-
+
QMetaObject::invokeMethod(_statusLog,
"append",
Q_ARG(QString, varText));
diff --git a/src/Vehicle/VehicleSetup/FirmwareUpgradeController.h b/src/Vehicle/VehicleSetup/FirmwareUpgradeController.h
index 10f1b402a80d..04ac0e3ef0d5 100644
--- a/src/Vehicle/VehicleSetup/FirmwareUpgradeController.h
+++ b/src/Vehicle/VehicleSetup/FirmwareUpgradeController.h
@@ -95,16 +95,16 @@ class FirmwareUpgradeController : public QObject
/// TextArea for log output
Q_PROPERTY(QQuickItem* statusLog READ statusLog WRITE setStatusLog)
-
+
/// Progress bar for you know what
Q_PROPERTY(QQuickItem* progressBar READ progressBar WRITE setProgressBar)
/// Starts searching for boards on the background thread
Q_INVOKABLE void startBoardSearch(void);
-
+
/// Cancels whatever state the upgrade worker thread is in
Q_INVOKABLE void cancel(void);
-
+
/// Called when the firmware type has been selected by the user to continue the flash process.
Q_INVOKABLE void flash(AutoPilotStackType_t stackType,
FirmwareBuildType_t firmwareType = StableFirmware,
@@ -116,18 +116,18 @@ class FirmwareUpgradeController : public QObject
Q_INVOKABLE void flashSingleFirmwareMode(FirmwareBuildType_t firmwareType);
Q_INVOKABLE FirmwareVehicleType_t vehicleTypeFromFirmwareSelectionIndex(int index);
-
+
// overload, not exposed to qml side
void flash(const FirmwareIdentifier& firmwareId);
// Property accessors
-
+
QQuickItem* progressBar(void) { return _progressBar; }
void setProgressBar(QQuickItem* progressBar) { _progressBar = progressBar; }
-
+
QQuickItem* statusLog(void) { return _statusLog; }
void setStatusLog(QQuickItem* statusLog) { _statusLog = statusLog; }
-
+
QString boardPort(void) { return _boardInfo.portName(); }
QString boardDescription(void) { return _boardInfo.description(); }
@@ -210,17 +210,17 @@ private slots:
uint32_t _bootloaderVersion; ///< Bootloader version
uint32_t _bootloaderBoardID; ///< Board ID
uint32_t _bootloaderBoardFlashSize; ///< Flash size in bytes of board
-
+
bool _startFlashWhenBootloaderFound;
FirmwareIdentifier _startFlashWhenBootloaderFoundFirmwareIdentity;
QPixmap _boardIcon; ///< Icon used to display image of board
-
+
QString _firmwareFilename; ///< Image which we are going to flash to the board
-
+
/// @brief Thread controller which is used to run bootloader commands on separate thread
PX4FirmwareUpgradeThreadController* _threadController;
-
+
static const int _eraseTickMsec = 500; ///< Progress bar update tick time for erase
static const int _eraseTotalMsec = 15000; ///< Estimated amount of time erase takes
int _eraseTickCount; ///< Number of ticks for erase progress update
@@ -228,12 +228,12 @@ private slots:
static const int _findBoardTimeoutMsec = 30000; ///< Amount of time for user to plug in USB
static const int _findBootloaderTimeoutMsec = 5000; ///< Amount time to look for bootloader
-
+
QQuickItem* _statusLog; ///< Status log TextArea Qml control
QQuickItem* _progressBar;
-
+
bool _searchingForBoard; ///< true: searching for board, false: search for bootloader
-
+
QSerialPortInfo _boardInfo;
QGCSerialPortInfo::BoardType_t _boardType;
QString _boardTypeName;
diff --git a/src/Vehicle/VehicleSetup/JoystickConfigController.cc b/src/Vehicle/VehicleSetup/JoystickConfigController.cc
index 129b634ec8cf..d7c4a995d553 100644
--- a/src/Vehicle/VehicleSetup/JoystickConfigController.cc
+++ b/src/Vehicle/VehicleSetup/JoystickConfigController.cc
@@ -19,7 +19,7 @@ QGC_LOGGING_CATEGORY(JoystickConfigControllerLog, "Joystick.JoystickConfigContro
JoystickConfigController::JoystickConfigController(void)
{
-
+
connect(JoystickManager::instance(), &JoystickManager::activeJoystickChanged, this, &JoystickConfigController::_activeJoystickChanged);
_activeJoystickChanged(JoystickManager::instance()->activeJoystick());
_setStickPositions();
@@ -243,7 +243,7 @@ bool JoystickConfigController::_stickSettleComplete(int axis, int value)
}
// We are waiting for the stick to settle out to a max position
-
+
if (abs(_stickDetectValue - value) > _calSettleDelta) {
// Stick is moving too much to consider stopped
qCDebug(JoystickConfigControllerLog) << "_stickSettleComplete still moving, axis:_stickDetectValue:value" << axis << _stickDetectValue << value;
@@ -265,7 +265,7 @@ bool JoystickConfigController::_stickSettleComplete(int axis, int value)
_stickDetectSettleElapsed.start();
}
}
-
+
return false;
}
@@ -279,7 +279,7 @@ void JoystickConfigController::_logJoystickInfo(const QString &methodName, Joyst
}
void JoystickConfigController::_inputStickDetect(Joystick::AxisFunction_t function, int axis, int value)
-{
+{
if (!_validAxis(axis)) {
qCWarning(JoystickConfigControllerLog) << "Invalid axis axis:_axisCount" << axis << _axisCount;
return;
@@ -430,11 +430,11 @@ void JoystickConfigController::_setInternalCalibrationValuesFromSettings()
struct AxisInfo* info = &_rgAxisInfo[i];
info->function = Joystick::maxAxisFunction;
}
-
+
for (size_t i = 0; i < Joystick::maxAxisFunction; i++) {
_rgFunctionAxisMapping[i] = _axisNoAxis;
}
-
+
qCDebug(JoystickConfigControllerLog) << "Calibration values" <name();
qCDebug(JoystickConfigControllerLog) << " axis:min:max:trim:reversed";
for (int axis = 0; axis < _axisCount; axis++) {
@@ -448,7 +448,7 @@ void JoystickConfigController::_setInternalCalibrationValuesFromSettings()
emit axisDeadbandChanged(axis,info->deadband);
qCDebug(JoystickConfigControllerLog) << " " << axis << info->axisMin << info->axisMax << info->axisTrim << info->reversed;
}
-
+
for (int function = 0; function < Joystick::maxAxisFunction; function++) {
int paramAxis;
paramAxis = joystick->getFunctionAxis(static_cast(function));
@@ -502,7 +502,7 @@ void JoystickConfigController::_writeCalibration()
{
Joystick* joystick = JoystickManager::instance()->activeJoystick();
_validateCalibration();
-
+
for (int axis = 0; axis < _axisCount; axis++) {
Joystick::Calibration_t calibration;
struct AxisInfo* info = &_rgAxisInfo[axis];
@@ -513,12 +513,12 @@ void JoystickConfigController::_writeCalibration()
calibration.deadband = info->deadband;
joystick->setCalibration(axis, calibration);
}
-
+
// Write function mapping parameters
for (int function = 0; function < Joystick::maxAxisFunction; function++) {
joystick->setFunctionAxis(static_cast(function), _rgFunctionAxisMapping[function]);
}
-
+
_stopCalibration();
_setInternalCalibrationValuesFromSettings();
@@ -686,7 +686,7 @@ void JoystickConfigController::_activeJoystickChanged(Joystick* joystick)
_axisCount = 0;
_activeJoystick = nullptr;
}
-
+
if (joystick) {
_activeJoystick = joystick;
if (joystickTransition) {
diff --git a/src/Vehicle/VehicleSetup/JoystickConfigController.h b/src/Vehicle/VehicleSetup/JoystickConfigController.h
index 2e8d494b4686..79e70b8ead4e 100644
--- a/src/Vehicle/VehicleSetup/JoystickConfigController.h
+++ b/src/Vehicle/VehicleSetup/JoystickConfigController.h
@@ -285,4 +285,3 @@ private slots:
};
};
-
diff --git a/src/Vehicle/VehicleSetup/PX4FirmwareUpgradeThread.cc b/src/Vehicle/VehicleSetup/PX4FirmwareUpgradeThread.cc
index 539eb2b851c8..8c97b269e898 100644
--- a/src/Vehicle/VehicleSetup/PX4FirmwareUpgradeThread.cc
+++ b/src/Vehicle/VehicleSetup/PX4FirmwareUpgradeThread.cc
@@ -38,7 +38,7 @@ PX4FirmwareUpgradeThreadWorker::~PX4FirmwareUpgradeThreadWorker()
void PX4FirmwareUpgradeThreadWorker::_init(void)
{
// We create the timers here so that they are on the right thread
-
+
_findBoardTimer = new QTimer(this);
_findBoardTimer->setSingleShot(true);
_findBoardTimer->setInterval(500);
@@ -66,11 +66,11 @@ void PX4FirmwareUpgradeThreadWorker::_startFindBoardLoop(void)
void PX4FirmwareUpgradeThreadWorker::_findBoardOnce(void)
{
qCDebug(FirmwareUpgradeVerboseLog) << "_findBoardOnce";
-
+
QGCSerialPortInfo portInfo;
QGCSerialPortInfo::BoardType_t boardType;
QString boardName;
-
+
if (_findBoardFromPorts(portInfo, boardType, boardName)) {
if (!_foundBoard) {
_foundBoard = true;
@@ -105,7 +105,7 @@ void PX4FirmwareUpgradeThreadWorker::_findBoardOnce(void)
emit noBoardFound();
}
}
-
+
_findBoardFirstAttempt = false;
_findBoardTimer->start();
}
@@ -124,13 +124,13 @@ bool PX4FirmwareUpgradeThreadWorker::_findBoardFromPorts(QGCSerialPortInfo& port
qCDebug(FirmwareUpgradeVerboseLog) << "\tsystem location:" << info.systemLocation();
qCDebug(FirmwareUpgradeVerboseLog) << "\tvendor ID:" << info.vendorIdentifier();
qCDebug(FirmwareUpgradeVerboseLog) << "\tproduct ID:" << info.productIdentifier();
-
+
if (info.canFlash()) {
portInfo = info;
return true;
}
}
-
+
return false;
}
@@ -150,7 +150,7 @@ void PX4FirmwareUpgradeThreadWorker::_flash(void)
if (_erase()) {
emit status(tr("Programming new version..."));
-
+
if (_bootloader->program(_controller->image())) {
qCDebug(FirmwareUpgradeLog) << "Program complete";
emit status("Program complete");
@@ -158,9 +158,9 @@ void PX4FirmwareUpgradeThreadWorker::_flash(void)
qCDebug(FirmwareUpgradeLog) << "Program failed:" << _bootloader->errorString();
goto Error;
}
-
+
emit status(tr("Verifying program..."));
-
+
if (_bootloader->verify(_controller->image())) {
qCDebug(FirmwareUpgradeLog) << "Verify complete";
emit status(tr("Verify complete"));
@@ -169,14 +169,14 @@ void PX4FirmwareUpgradeThreadWorker::_flash(void)
goto Error;
}
}
-
+
emit status(tr("Rebooting board"));
_reboot();
_bootloader->close();
_bootloader->deleteLater();
_bootloader = nullptr;
-
+
emit flashComplete();
return;
@@ -192,10 +192,10 @@ void PX4FirmwareUpgradeThreadWorker::_flash(void)
bool PX4FirmwareUpgradeThreadWorker::_erase(void)
{
qCDebug(FirmwareUpgradeLog) << "PX4FirmwareUpgradeThreadWorker::_erase";
-
+
emit eraseStarted();
emit status(tr("Erasing previous program..."));
-
+
if (_bootloader->erase()) {
qCDebug(FirmwareUpgradeLog) << "Erase complete";
emit status(tr("Erase complete"));
@@ -214,7 +214,7 @@ PX4FirmwareUpgradeThreadController::PX4FirmwareUpgradeThreadController(QObject*
_worker = new PX4FirmwareUpgradeThreadWorker(this);
_workerThread = new QThread(this);
_worker->moveToThread(_workerThread);
-
+
connect(_worker, &PX4FirmwareUpgradeThreadWorker::updateProgress, this, &PX4FirmwareUpgradeThreadController::_updateProgress);
connect(_worker, &PX4FirmwareUpgradeThreadWorker::foundBoard, this, &PX4FirmwareUpgradeThreadController::_foundBoard);
connect(_worker, &PX4FirmwareUpgradeThreadWorker::noBoardFound, this, &PX4FirmwareUpgradeThreadController::_noBoardFound);
@@ -227,7 +227,7 @@ PX4FirmwareUpgradeThreadController::PX4FirmwareUpgradeThreadController(QObject*
connect(_worker, &PX4FirmwareUpgradeThreadWorker::flashComplete, this, &PX4FirmwareUpgradeThreadController::_flashComplete);
_workerThread->start();
-
+
emit _initThreadWorker();
}
@@ -235,7 +235,7 @@ PX4FirmwareUpgradeThreadController::~PX4FirmwareUpgradeThreadController()
{
_workerThread->quit();
_workerThread->wait();
-
+
delete _workerThread;
}
diff --git a/src/Vehicle/VehicleSetup/PX4FirmwareUpgradeThread.h b/src/Vehicle/VehicleSetup/PX4FirmwareUpgradeThread.h
index f8caa8614c3f..7238b2a22bbb 100644
--- a/src/Vehicle/VehicleSetup/PX4FirmwareUpgradeThread.h
+++ b/src/Vehicle/VehicleSetup/PX4FirmwareUpgradeThread.h
@@ -32,11 +32,11 @@ class QTimer;
class PX4FirmwareUpgradeThreadWorker : public QObject
{
Q_OBJECT
-
+
public:
PX4FirmwareUpgradeThreadWorker(PX4FirmwareUpgradeThreadController* controller);
~PX4FirmwareUpgradeThreadWorker();
-
+
signals:
void updateProgress (int curr, int total);
void foundBoard (bool firstAttempt, const QGCSerialPortInfo& portInfo, int type, QString boardName);
@@ -48,7 +48,7 @@ class PX4FirmwareUpgradeThreadWorker : public QObject
void eraseStarted (void);
void eraseComplete (void);
void flashComplete (void);
-
+
private slots:
void _init (void);
void _startFindBoardLoop(void);
@@ -57,13 +57,13 @@ private slots:
void _findBoardOnce (void);
void _updateProgress (int curr, int total) { emit updateProgress(curr, total); }
void _cancel (void);
-
+
private:
bool _findBoardFromPorts(QGCSerialPortInfo& portInfo, QGCSerialPortInfo::BoardType_t& boardType, QString& boardName);
bool _erase (void);
-
+
PX4FirmwareUpgradeThreadController* _controller;
-
+
Bootloader* _bootloader = nullptr;
QTimer* _findBoardTimer = nullptr;
QTime _elapsed;
@@ -78,24 +78,24 @@ private slots:
class PX4FirmwareUpgradeThreadController : public QObject
{
Q_OBJECT
-
+
public:
PX4FirmwareUpgradeThreadController(QObject* parent = nullptr);
~PX4FirmwareUpgradeThreadController(void);
-
+
/// @brief Begins the process of searching for a supported board connected to any serial port. This will
/// continue until cancelFind is called. Signals foundBoard and boardGone as boards come and go.
void startFindBoardLoop(void);
-
+
void cancel(void);
-
+
/// @brief Sends a reboot command to the bootloader
void reboot(void) { emit _rebootOnThread(); }
-
+
void flash(const FirmwareImage* image);
-
+
const FirmwareImage* image(void) { return _image; }
-
+
signals:
void foundBoard (bool firstAttempt, const QGCSerialPortInfo &portInfo, int boardType, QString boardName);
void noBoardFound (void);
@@ -107,14 +107,14 @@ class PX4FirmwareUpgradeThreadController : public QObject
void eraseComplete (void);
void flashComplete (void);
void updateProgress (int curr, int total);
-
+
// Internal signals to communicate with thread worker
void _initThreadWorker (void);
void _startFindBoardLoopOnThread(void);
void _rebootOnThread (void);
void _flashOnThread (void);
void _cancel (void);
-
+
private slots:
void _foundBoard (bool firstAttempt, const QGCSerialPortInfo& portInfo, int type, QString name) { emit foundBoard(firstAttempt, portInfo, type, name); }
void _noBoardFound (void) { emit noBoardFound(); }
@@ -125,13 +125,12 @@ private slots:
void _eraseStarted (void) { emit eraseStarted(); }
void _eraseComplete (void) { emit eraseComplete(); }
void _flashComplete (void) { emit flashComplete(); }
-
+
private:
void _updateProgress(int curr, int total) { emit updateProgress(curr, total); }
-
+
PX4FirmwareUpgradeThreadWorker* _worker = nullptr;
QThread* _workerThread = nullptr; ///< Thread which PX4FirmwareUpgradeThreadWorker runs on
-
+
const FirmwareImage* _image;
};
-
diff --git a/src/VideoManager/VideoReceiver/GStreamer/GStreamer.cc b/src/VideoManager/VideoReceiver/GStreamer/GStreamer.cc
index af31f13e4742..976081febfaf 100644
--- a/src/VideoManager/VideoReceiver/GStreamer/GStreamer.cc
+++ b/src/VideoManager/VideoReceiver/GStreamer/GStreamer.cc
@@ -283,7 +283,7 @@ bool _verifyPlugins()
return result;
}
-void _logDecoderRanks()
+void _logDecoderRanks()
{
GList *decoderFactories = gst_element_factory_list_get_elements(
static_cast(GST_ELEMENT_FACTORY_TYPE_DECODER | GST_ELEMENT_FACTORY_TYPE_MEDIA_VIDEO),
diff --git a/src/VideoManager/VideoReceiver/GStreamer/GstVideoReceiver.cc b/src/VideoManager/VideoReceiver/GStreamer/GstVideoReceiver.cc
index a1bfb83951c6..dc302c7dd228 100644
--- a/src/VideoManager/VideoReceiver/GStreamer/GstVideoReceiver.cc
+++ b/src/VideoManager/VideoReceiver/GStreamer/GstVideoReceiver.cc
@@ -920,7 +920,7 @@ void GstVideoReceiver::_onNewSourcePad(GstPad *pad)
qCDebug(GstVideoReceiverLog) << "Decoding started" << _uri;
}
-void GstVideoReceiver::_logDecodebin3SelectedCodec(GstElement *decodebin3)
+void GstVideoReceiver::_logDecodebin3SelectedCodec(GstElement *decodebin3)
{
GValue value = G_VALUE_INIT;
GstIterator *iter = gst_bin_iterate_elements(GST_BIN(decodebin3));
diff --git a/src/VideoManager/VideoReceiver/GStreamer/gstqml6gl/qt6/gstqml6glsink.cc b/src/VideoManager/VideoReceiver/GStreamer/gstqml6gl/qt6/gstqml6glsink.cc
index 32dd64693120..161fb4a196ff 100644
--- a/src/VideoManager/VideoReceiver/GStreamer/gstqml6gl/qt6/gstqml6glsink.cc
+++ b/src/VideoManager/VideoReceiver/GStreamer/gstqml6gl/qt6/gstqml6glsink.cc
@@ -528,7 +528,7 @@ gst_qml6_gl_sink_propose_allocation (GstBaseSink * bsink, GstQuery * query)
}
if (pool == NULL && need_pool) {
-
+
GST_DEBUG_OBJECT (qt_sink, "create new pool");
pool = gst_gl_buffer_pool_new (qt_sink->context);
diff --git a/src/VideoManager/VideoReceiver/GStreamer/gstqml6gl/qt6/qt6glitem.cc b/src/VideoManager/VideoReceiver/GStreamer/gstqml6gl/qt6/qt6glitem.cc
index cb01ca8b84e5..4e319abf7584 100644
--- a/src/VideoManager/VideoReceiver/GStreamer/gstqml6gl/qt6/qt6glitem.cc
+++ b/src/VideoManager/VideoReceiver/GStreamer/gstqml6gl/qt6/qt6glitem.cc
@@ -761,4 +761,3 @@ Qt6GLVideoItemInterface::invalidateRef()
QMutexLocker locker(&lock);
qt_item = NULL;
}
-
diff --git a/src/Viewer3D/Viewer3DQml/Models3D/Line3D.qml b/src/Viewer3D/Viewer3DQml/Models3D/Line3D.qml
index d1bb7d699670..4696fb5d9aaf 100644
--- a/src/Viewer3D/Viewer3DQml/Models3D/Line3D.qml
+++ b/src/Viewer3D/Viewer3DQml/Models3D/Line3D.qml
@@ -1,108 +1,108 @@
-/****************************************************************************
- *
- * (c) 2009-2020 QGROUNDCONTROL PROJECT
- *
- * QGroundControl is licensed according to the terms in the file
- * COPYING.md in the root of the source code directory.
- *
- ****************************************************************************/
-
-import QGroundControl.Viewer3D
-
-Node{
-
- id: lineBody
- property vector3d p_1: Qt.vector3d(10, 0, 0)
- property vector3d p_2: Qt.vector3d(0, 20, 0)
- property real lineWidth: 5
- property alias color: line_mat.diffuseColor
-
- readonly property vector3d vec_1: Qt.vector3d(p_2.x - p_1.x,
- p_2.y - p_1.y,
- p_2.z - p_1.z)
- readonly property real length_: vecNorm(vec_1)
- readonly property vector3d vec_2: Qt.vector3d(0, length_, 0)
-
- function crossProduct(vec_a, vec_b)
- {
- var vec_c = Qt.vector3d(0, 0, 0)
- vec_c.x = vec_a.y * vec_b.z - vec_a.z * vec_b.y
- vec_c.y = -(vec_a.x * vec_b.z - vec_a.z * vec_b.x)
- vec_c.z = vec_a.x * vec_b.y - vec_a.y * vec_b.x
-
- return vec_c
- }
-
- function dotProduct(vec_a, vec_b)
- {
- return (vec_a.x*vec_b.x + vec_a.y*vec_b.y + vec_a.z*vec_b.z)
- }
-
- function vecNorm(_vec)
- {
- return Math.sqrt(dotProduct(_vec, _vec))
- }
-
- function normalizeVec(_vec)
- {
- var norm_vec = vecNorm(_vec)
- return Qt.vector3d(_vec.x/norm_vec, _vec.y/norm_vec, _vec.z/norm_vec)
- }
-
- function getRotationBetween(vec_a, vec_b)
- {
- var vec_a_n = normalizeVec(vec_a)
- var vec_b_n = normalizeVec(vec_b)
-
- var cos_angle = dotProduct(vec_a_n, vec_b_n)
- if(cos_angle === 1)
- {
- return Quaternion.fromEulerAngles(Qt.vector3d(0, 0, 0))
- }else if(cos_angle === -1)
- {
- var axis_idx = 0
- var dx = Math.abs(vec_a_n.x - vec_b_n.x)
- if(dx < Math.abs(vec_a_n.y - vec_b_n.y))
- {
- dx = Math.abs(vec_a_n.y - vec_b_n.y)
- axis_idx = 1
- }
- if(dx < Math.abs(vec_a_n.z - vec_b_n.z))
- axis_idx = 2
-
- switch(axis_idx)
- {
- case 0:
- return Quaternion.fromEulerAngles(Qt.vector3d(0, 180, 0))
- case 1:
- return Quaternion.fromEulerAngles(Qt.vector3d(0, 0, 180))
- case 2:
- return Quaternion.fromEulerAngles(Qt.vector3d(180, 0, 0))
- }
- }
-
- var angle_ = Math.acos(cos_angle)
- var axis_ = normalizeVec(crossProduct(vec_a_n, vec_b_n))
-
- return Quaternion.fromAxisAndAngle(axis_, angle_ * 180/3.1415)
- }
-
- rotation: getRotationBetween(vec_2, vec_1)
- position: p_1
-
- Model {
- readonly property real scalePose: 50
- readonly property real height: lineBody.length_
- readonly property real radius: lineBody.lineWidth * 0.1
-
- source: "#Cylinder"
- scale: Qt.vector3d(radius/scalePose, 0.5 * height/scalePose, radius/scalePose)
- position: Qt.vector3d(0, 0.5 * height, 0)
-
- materials:
- DefaultMaterial {
- id: line_mat
- diffuseColor: "blue"
- }
- }
-}
+/****************************************************************************
+ *
+ * (c) 2009-2020 QGROUNDCONTROL PROJECT
+ *
+ * QGroundControl is licensed according to the terms in the file
+ * COPYING.md in the root of the source code directory.
+ *
+ ****************************************************************************/
+
+import QGroundControl.Viewer3D
+
+Node{
+
+ id: lineBody
+ property vector3d p_1: Qt.vector3d(10, 0, 0)
+ property vector3d p_2: Qt.vector3d(0, 20, 0)
+ property real lineWidth: 5
+ property alias color: line_mat.diffuseColor
+
+ readonly property vector3d vec_1: Qt.vector3d(p_2.x - p_1.x,
+ p_2.y - p_1.y,
+ p_2.z - p_1.z)
+ readonly property real length_: vecNorm(vec_1)
+ readonly property vector3d vec_2: Qt.vector3d(0, length_, 0)
+
+ function crossProduct(vec_a, vec_b)
+ {
+ var vec_c = Qt.vector3d(0, 0, 0)
+ vec_c.x = vec_a.y * vec_b.z - vec_a.z * vec_b.y
+ vec_c.y = -(vec_a.x * vec_b.z - vec_a.z * vec_b.x)
+ vec_c.z = vec_a.x * vec_b.y - vec_a.y * vec_b.x
+
+ return vec_c
+ }
+
+ function dotProduct(vec_a, vec_b)
+ {
+ return (vec_a.x*vec_b.x + vec_a.y*vec_b.y + vec_a.z*vec_b.z)
+ }
+
+ function vecNorm(_vec)
+ {
+ return Math.sqrt(dotProduct(_vec, _vec))
+ }
+
+ function normalizeVec(_vec)
+ {
+ var norm_vec = vecNorm(_vec)
+ return Qt.vector3d(_vec.x/norm_vec, _vec.y/norm_vec, _vec.z/norm_vec)
+ }
+
+ function getRotationBetween(vec_a, vec_b)
+ {
+ var vec_a_n = normalizeVec(vec_a)
+ var vec_b_n = normalizeVec(vec_b)
+
+ var cos_angle = dotProduct(vec_a_n, vec_b_n)
+ if(cos_angle === 1)
+ {
+ return Quaternion.fromEulerAngles(Qt.vector3d(0, 0, 0))
+ }else if(cos_angle === -1)
+ {
+ var axis_idx = 0
+ var dx = Math.abs(vec_a_n.x - vec_b_n.x)
+ if(dx < Math.abs(vec_a_n.y - vec_b_n.y))
+ {
+ dx = Math.abs(vec_a_n.y - vec_b_n.y)
+ axis_idx = 1
+ }
+ if(dx < Math.abs(vec_a_n.z - vec_b_n.z))
+ axis_idx = 2
+
+ switch(axis_idx)
+ {
+ case 0:
+ return Quaternion.fromEulerAngles(Qt.vector3d(0, 180, 0))
+ case 1:
+ return Quaternion.fromEulerAngles(Qt.vector3d(0, 0, 180))
+ case 2:
+ return Quaternion.fromEulerAngles(Qt.vector3d(180, 0, 0))
+ }
+ }
+
+ var angle_ = Math.acos(cos_angle)
+ var axis_ = normalizeVec(crossProduct(vec_a_n, vec_b_n))
+
+ return Quaternion.fromAxisAndAngle(axis_, angle_ * 180/3.1415)
+ }
+
+ rotation: getRotationBetween(vec_2, vec_1)
+ position: p_1
+
+ Model {
+ readonly property real scalePose: 50
+ readonly property real height: lineBody.length_
+ readonly property real radius: lineBody.lineWidth * 0.1
+
+ source: "#Cylinder"
+ scale: Qt.vector3d(radius/scalePose, 0.5 * height/scalePose, radius/scalePose)
+ position: Qt.vector3d(0, 0.5 * height, 0)
+
+ materials:
+ DefaultMaterial {
+ id: line_mat
+ diffuseColor: "blue"
+ }
+ }
+}
diff --git a/src/Viewer3D/Viewer3DTileQuery.cc b/src/Viewer3D/Viewer3DTileQuery.cc
index 54c3bc6c103f..80093722edf8 100644
--- a/src/Viewer3D/Viewer3DTileQuery.cc
+++ b/src/Viewer3D/Viewer3DTileQuery.cc
@@ -227,4 +227,3 @@ QString MapTileQuery::getTileKey(int mapId, int x, int y, int zoomLevel)
{
return QString::asprintf("%010d%08d%08d%03d", mapId, x, y, zoomLevel);
}
-
diff --git a/test/ADSB/ADSB_Simulator.py b/test/ADSB/ADSB_Simulator.py
index 88a6b9cd20c5..d905b1bfd88c 100644
--- a/test/ADSB/ADSB_Simulator.py
+++ b/test/ADSB/ADSB_Simulator.py
@@ -12,12 +12,12 @@ def __init__(self):
self.lat = np.random.uniform(34.8, 41.8) # Latitude range for Greece
self.lon = np.random.uniform(19.8, 29.6) # Longitude range for Greece
self.altitude = np.random.randint(0, 40000)
- self.velocity = np.random.randint(50, 600)
+ self.velocity = np.random.randint(50, 600)
self.heading = np.random.randint(0, 360)
self.verticalRate = np.random.randint(-3000, 3000) # Vertical rate in feet per minute
# Generate a valid squawk code as a four-digit octal number ranging from 0000 to 7777.
# Squawk codes are assigned by ATC and represent a specific aircraft's transponder setting.
- # We use `np.random.randint(0, 4096)` to generate values from 0 to 4095 (decimal),
+ # We use `np.random.randint(0, 4096)` to generate values from 0 to 4095 (decimal),
# and then format it as an octal string with `{value:04o}` to ensure the correct 4-digit format.
self.squawk = f"{np.random.randint(0, 4096):04o}"
@@ -59,7 +59,7 @@ def generate_adsb_message(self):
"", # Index 2 | Field 3: Session ID
"", # Index 3 | Field 4: Aircraft ID
self.icao_address, # Field 5: HexIdent
- "", # Index 4 | Field 6: Flight ID
+ "", # Index 4 | Field 6: Flight ID
"", # Index 5 | Field 7: Date message generated
"", # Index 6 | Field 8: Time message generated
"", # Index 7 | Field 9: Date message logged
@@ -92,25 +92,25 @@ def generate_adsb_message(self):
msg_parts[12] = str(int(self.velocity)) # GroundSpeed as an integer
msg_parts[13] = str(int(self.heading)) # Track (Heading) as an integer
msg_parts[16] = str(self.verticalRate)
- msg_parts[18] = "0"
- msg_parts[19] = "0"
- msg_parts[20] = "0"
+ msg_parts[18] = "0"
+ msg_parts[19] = "0"
+ msg_parts[20] = "0"
msg_parts[21] = "0"
if msg_type == 5:
- msg_parts[11] = str(self.altitude)
- msg_parts[18] = "0"
- msg_parts[19] = "0"
- msg_parts[20] = "0"
+ msg_parts[11] = str(self.altitude)
+ msg_parts[18] = "0"
+ msg_parts[19] = "0"
+ msg_parts[20] = "0"
msg_parts[21] = "0"
if msg_type == 6:
msg_parts[17] = str(self.squawk)
- msg_parts[18] = "0"
- msg_parts[19] = "0"
- msg_parts[20] = "0"
+ msg_parts[18] = "0"
+ msg_parts[19] = "0"
+ msg_parts[20] = "0"
msg_parts[21] = "0"
if msg_type == 8:
msg_parts[21] = "0"
-
+
# Join the message parts correctly
message = ','.join(msg_parts)
@@ -122,7 +122,7 @@ def handle_client(client_socket, aircrafts):
# Update aircraft positions before generating messages
for aircraft in aircrafts:
aircraft.update()
-
+
messages = [aircraft.generate_adsb_message() for aircraft in aircrafts]
for message in messages:
client_socket.sendall(message.encode('utf-8') + b'\n')
diff --git a/test/AnalyzeView/MavlinkLogTest.cc b/test/AnalyzeView/MavlinkLogTest.cc
index bf49ea3ff2b2..cccac4679e8e 100644
--- a/test/AnalyzeView/MavlinkLogTest.cc
+++ b/test/AnalyzeView/MavlinkLogTest.cc
@@ -29,13 +29,13 @@ const char* MavlinkLogTest::_saveLogFilename = "qgroundcontrol.mavlink.ut";
MavlinkLogTest::MavlinkLogTest(void)
{
-
+
}
void MavlinkLogTest::init(void)
{
UnitTest::init();
-
+
// Make sure temp directory is clear of mavlink logs
QDir tmpDir(QStandardPaths::writableLocation(QStandardPaths::TempLocation));
QStringList logFiles(tmpDir.entryList(QStringList(QString("*.%1").arg(_logFileExtension)), QDir::Files));
@@ -52,14 +52,14 @@ void MavlinkLogTest::cleanup(void)
QDir tmpDir(QStandardPaths::writableLocation(QStandardPaths::TempLocation));
QStringList logFiles(tmpDir.entryList(QStringList(QString("*.%1").arg(_logFileExtension)), QDir::Files));
QCOMPARE(logFiles.count(), 0);
-
+
UnitTest::cleanup();
}
void MavlinkLogTest::_createTempLogFile(bool zeroLength)
{
QGCTemporaryFile tempLogFile(QString("%1.%2").arg(_tempLogFileTemplate).arg(_logFileExtension));
-
+
tempLogFile.open();
if (!zeroLength) {
tempLogFile.write("foo");
@@ -82,15 +82,15 @@ void MavlinkLogTest::_bootLogDetectionSave_test(void)
{
// Create a fake mavlink log
_createTempLogFile(false);
-
+
// We should get a message box, followed by a getSaveFileName dialog.
QDir logSaveDir(QStandardPaths::writableLocation(QStandardPaths::TempLocation));
-
+
// Kick the protocol to check for lost log files and wait for signals to move through
connect(this, &MavlinkLogTest::checkForLostLogFiles, MAVLinkProtocol::instance(), &MAVLinkProtocol::checkForLostLogFiles);
emit checkForLostLogFiles();
QTest::qWait(1000);
-
+
// Make sure the file is there and delete it
QCOMPARE(logSaveDir.remove(_saveLogFilename), true);
}
@@ -99,12 +99,12 @@ void MavlinkLogTest::_bootLogDetectionZeroLength_test(void)
{
// Create a fake empty mavlink log
_createTempLogFile(true);
-
+
// Kick the protocol to check for lost log files and wait for signals to move through
connect(this, &MavlinkLogTest::checkForLostLogFiles, MAVLinkProtocol::instance(), &MAVLinkProtocol::checkForLostLogFiles);
emit checkForLostLogFiles();
QTest::qWait(1000);
-
+
// Zero length log files should not generate any additional UI pop-ups. It should just be deleted silently.
}
@@ -113,15 +113,15 @@ void MavlinkLogTest::_connectLogWorker(bool arm)
_connectMockLink();
QDir logSaveDir;
-
+
if (arm) {
MultiVehicleManager::instance()->activeVehicle()->setArmedShowError(true);
QTest::qWait(500); // Wait long enough for heartbeat to come through
-
+
// On Disconnect: We should get a getSaveFileName dialog.
logSaveDir.setPath(QStandardPaths::writableLocation(QStandardPaths::TempLocation));
}
-
+
_disconnectMockLink();
if (arm) {
@@ -143,7 +143,7 @@ void MavlinkLogTest::_connectLogArm_test(void)
void MavlinkLogTest::_deleteTempLogFiles_test(void)
{
// Verify that the MAVLinkProtocol::deleteTempLogFiles api works correctly
-
+
_createTempLogFile(false);
MAVLinkProtocol::deleteTempLogFiles();
QDir tmpDir(QStandardPaths::writableLocation(QStandardPaths::TempLocation));
diff --git a/test/AnalyzeView/MavlinkLogTest.h b/test/AnalyzeView/MavlinkLogTest.h
index ceb097de0975..178f1b482d79 100644
--- a/test/AnalyzeView/MavlinkLogTest.h
+++ b/test/AnalyzeView/MavlinkLogTest.h
@@ -20,30 +20,29 @@
class MavlinkLogTest : public UnitTest
{
Q_OBJECT
-
+
public:
MavlinkLogTest(void);
-
+
private slots:
void init(void);
void cleanup(void);
-
+
void _bootLogDetectionCancel_test(void);
void _bootLogDetectionSave_test(void);
void _bootLogDetectionZeroLength_test(void);
void _connectLogNoArm_test(void);
void _connectLogArm_test(void);
void _deleteTempLogFiles_test(void);
-
+
signals:
void checkForLostLogFiles(void);
-
+
private:
void _createTempLogFile(bool zeroLength);
void _connectLogWorker(bool arm);
-
+
static const char* _tempLogFileTemplate; ///< Template for temporary log file
static const char* _logFileExtension; ///< Extension for log files
static const char* _saveLogFilename; ///< Filename to save log files to
};
-
diff --git a/test/AutoPilotPlugins/RadioConfigTest.cc b/test/AutoPilotPlugins/RadioConfigTest.cc
index 54baf657c394..c46357a9fd13 100644
--- a/test/AutoPilotPlugins/RadioConfigTest.cc
+++ b/test/AutoPilotPlugins/RadioConfigTest.cc
@@ -188,20 +188,20 @@ RadioConfigTest::RadioConfigTest(void) :
_calWidget(NULL),
_controller(NULL)
{
-
+
}
void RadioConfigTest::_init(MAV_AUTOPILOT firmwareType)
{
_connectMockLink(firmwareType);
-
+
_autopilot = MultiVehicleManager::instance()->activeVehicle()->autopilotPlugin();
Q_ASSERT(_autopilot);
// This test is so quick that it tends to finish before the mission item protocol completes. This causes an error to pop up.
// So we wait a little to let mission items sync.
QTest::qWait(500);
-
+
// This will instatiate the widget with an active uas with ready parameters
_calWidget = new QGCQmlWidgetHolder(QString(), NULL);
_calWidget->resize(600, 600);
@@ -229,18 +229,18 @@ void RadioConfigTest::_init(MAV_AUTOPILOT firmwareType)
_calWidget->setContextPropertyObject("vehicleComponent", vehicleComponent);
_calWidget->setSource(QUrl::fromUserInput("qrc:/qml/QGroundControl/AutoPilotPlugins/Common/RadioComponent.qml"));
-
+
// Nasty hack to get to controller
_controller = RadioComponentController::_unitTestController;
Q_ASSERT(_controller);
_controller->_setUnitTestMode();
-
+
_rgSignals[0] = SIGNAL(nextButtonMessageBoxDisplayed());
_multiSpyNextButtonMessageBox = new MultiSignalSpy();
Q_CHECK_PTR(_multiSpyNextButtonMessageBox);
QCOMPARE(_multiSpyNextButtonMessageBox->init(_controller, _rgSignals, 1), true);
-
+
QCOMPARE(_controller->_currentStep, -1);
}
@@ -248,7 +248,7 @@ void RadioConfigTest::cleanup(void)
{
Q_ASSERT(_calWidget);
delete _calWidget;
-
+
UnitTest::cleanup();
}
@@ -257,7 +257,7 @@ void RadioConfigTest::_beginCalibration(void)
CHK_BUTTONS(nextButtonMask | cancelButtonMask);
// We should already have enough channels to proceed with calibration. Click next to start the process.
-
+
_controller->nextButtonClicked();
QCOMPARE(_controller->_currentStep, 1);
CHK_BUTTONS(cancelButtonMask);
@@ -269,13 +269,13 @@ void RadioConfigTest::_stickMoveWaitForSettle(int channel, int value)
// Move the stick, this will initialized the settle checker
_mockLink->emitRemoteControlChannelRawChanged(channel, value);
-
+
// Emit the signal again to start the settle timer
_mockLink->emitRemoteControlChannelRawChanged(channel, value);
-
+
// Wait long enough for the settle timer to expire
QTest::qWait(RadioComponentController::_stickDetectSettleMSecs * 1.5);
-
+
// Emit the signal again so that we detect stick settle
_mockLink->emitRemoteControlChannelRawChanged(channel, value);
}
@@ -284,33 +284,33 @@ void RadioConfigTest::_stickMoveAutoStep(const char* functionStr, enum RadioComp
{
Q_UNUSED(functionStr);
qCDebug(RadioConfigTestLog) << "_stickMoveAutoStep function:direction:reversed:identifyStep" << functionStr << function << direction << identifyStep;
-
+
CHK_BUTTONS(cancelButtonMask);
-
+
int channel = _rgFunctionChannelMap[function];
int saveStep = _controller->_currentStep;
-
+
bool reversed = _channelSettings()[channel].reversed;
-
+
if (!identifyStep && direction != moveToCenter) {
// We have already identified the function channel mapping. Move other channels around to make sure there is no impact.
-
+
int otherChannel = channel + 1;
if (otherChannel >= _chanMax()) {
otherChannel = 0;
}
-
+
_stickMoveWaitForSettle(otherChannel, _testMinValue);
QCOMPARE(_controller->_currentStep, saveStep);
CHK_BUTTONS(cancelButtonMask);
-
+
_stickMoveWaitForSettle(otherChannel, RadioComponentController::_rcCalPWMCenterPoint);
QCOMPARE(_controller->_currentStep, saveStep);
CHK_BUTTONS(cancelButtonMask);
}
-
+
// Move channel to specified position to trigger next step
-
+
int value;
if (direction == moveToMin) {
value = reversed ? _testMaxValue : _testMinValue;
@@ -321,7 +321,7 @@ void RadioConfigTest::_stickMoveAutoStep(const char* functionStr, enum RadioComp
} else {
Q_ASSERT(false);
}
-
+
_stickMoveWaitForSettle(channel, value);
QCOMPARE(_controller->_currentStep, saveStep + 1);
}
@@ -329,17 +329,17 @@ void RadioConfigTest::_stickMoveAutoStep(const char* functionStr, enum RadioComp
void RadioConfigTest::_switchMinMaxStep(void)
{
CHK_BUTTONS(nextButtonMask | cancelButtonMask);
-
+
// Try setting a min/max value that is below the threshold to make sure min/max doesn't go valid
_mockLink->emitRemoteControlChannelRawChanged(0, (float)(RadioComponentController::_rcCalPWMValidMinValue + 1));
_mockLink->emitRemoteControlChannelRawChanged(0, (float)(RadioComponentController::_rcCalPWMValidMaxValue - 1));
-
+
// Send min/max values switch channels
for (int chan=0; chan<_chanMax(); chan++) {
_mockLink->emitRemoteControlChannelRawChanged(chan, _channelSettings()[chan].rcMin);
_mockLink->emitRemoteControlChannelRawChanged(chan, _channelSettings()[chan].rcMax);
}
-
+
_channelHomePosition();
int saveStep = _controller->_currentStep;
@@ -357,21 +357,21 @@ void RadioConfigTest::_fullCalibrationWorker(MAV_AUTOPILOT firmwareType)
/// _rgFunctionChannelMap maps from function index to channel index. For channels which are not part of
/// rc cal set the mapping the the previous mapping.
-
+
for (int function=0; functionnextButtonClicked();
_beginCalibration();
@@ -426,7 +426,7 @@ void RadioConfigTest::_channelHomePosition(void)
for (int i=0; i<_chanMax(); i++) {
_mockLink->emitRemoteControlChannelRawChanged(i, (float)RadioComponentController::_rcCalPWMCenterPoint);
}
-
+
// Throttle to min - 1 (throttle is not reversed). We do this so that the trim value is below the min value. This should end up
// being validated and raised to min value. If not, something is wrong with RC Cal code.
_mockLink->emitRemoteControlChannelRawChanged(_rgFunctionChannelMap[RadioComponentController::rcCalFunctionThrottle], _testMinValue - 1);
@@ -444,14 +444,14 @@ void RadioConfigTest::_validateParameters(void)
// Check mapping for all fuctions
for (int chanFunction=0; chanFunctionparameterManager()->getParameter(ParameterManager::defaultComponentId, paramName)->rawValue().toInt();
@@ -463,7 +463,7 @@ void RadioConfigTest::_validateParameters(void)
for (int chan = 0; chan<_chanMax(); chan++) {
int oneBasedChannel = chan + 1;
bool convertOk;
-
+
// Required channels have min/max set on them. Remaining channels are left to default.
int rcMinExpected = _channelSettingsValidate()[chan].rcMin;
int rcMaxExpected = _channelSettingsValidate()[chan].rcMax;
@@ -485,7 +485,7 @@ void RadioConfigTest::_validateParameters(void)
} else {
rcReversedActual = _vehicle->parameterManager()->getParameter(ParameterManager::defaultComponentId, revTplAPM.arg(oneBasedChannel))->rawValue().toBool();
}
-
+
qCDebug(RadioConfigTestLog) << "_validateParameters expected channel:min:max:trim:rev" << chan << rcMinExpected << rcMaxExpected << rcTrimExpected << rcReversedExpected;
qCDebug(RadioConfigTestLog) << "_validateParameters actual channel:min:max:trim:rev" << chan << rcMinActual << rcMaxActual << rcTrimActual << rcReversedActual;
@@ -494,7 +494,7 @@ void RadioConfigTest::_validateParameters(void)
QCOMPARE(rcTrimExpected, rcTrimActual);
QCOMPARE(rcReversedExpected, rcReversedActual);
}
-
+
// Check mapping for all fuctions
for (int chanFunction=0; chanFunctionactiveVehicle()->missionManager();
QVERIFY(_missionManager);
-
+
_rgMissionManagerSignals[newMissionItemsAvailableSignalIndex] = SIGNAL(newMissionItemsAvailable(bool));
_rgMissionManagerSignals[sendCompleteSignalIndex] = SIGNAL(sendComplete(bool));
_rgMissionManagerSignals[inProgressChangedSignalIndex] = SIGNAL(inProgressChanged(bool));
@@ -45,13 +45,13 @@ void MissionControllerManagerTest::_initForFirmwareType(MAV_AUTOPILOT firmwareTy
_multiSpyMissionManager = new MultiSignalSpy();
Q_CHECK_PTR(_multiSpyMissionManager);
QCOMPARE(_multiSpyMissionManager->init(_missionManager, _rgMissionManagerSignals, _cMissionManagerSignals), true);
-
+
if (_missionManager->inProgress()) {
_multiSpyMissionManager->waitForSignalByIndex(newMissionItemsAvailableSignalIndex, _missionManagerSignalWaitTime);
_multiSpyMissionManager->waitForSignalByIndex(inProgressChangedSignalIndex, _missionManagerSignalWaitTime);
QCOMPARE(_multiSpyMissionManager->checkSignalByMask(newMissionItemsAvailableSignalMask | inProgressChangedSignalMask), true);
}
-
+
QVERIFY(!_missionManager->inProgress());
QCOMPARE(_missionManager->missionItems().count(), 0);
_multiSpyMissionManager->clearAllSignals();
diff --git a/test/MissionManager/MissionControllerManagerTest.h b/test/MissionManager/MissionControllerManagerTest.h
index 517faa1871c4..0f94702dcc8d 100644
--- a/test/MissionManager/MissionControllerManagerTest.h
+++ b/test/MissionManager/MissionControllerManagerTest.h
@@ -20,19 +20,19 @@ class MultiSignalSpy;
class MissionControllerManagerTest : public UnitTest
{
Q_OBJECT
-
+
public:
MissionControllerManagerTest(void);
-
+
protected slots:
void cleanup(void);
-
+
protected:
void _initForFirmwareType(MAV_AUTOPILOT firmwareType);
void _checkInProgressValues(bool inProgress);
-
+
MissionManager* _missionManager;
-
+
typedef struct {
int sequenceNumber;
QGeoCoordinate coordinate;
@@ -45,7 +45,7 @@ protected slots:
bool isCurrentItem;
MAV_FRAME frame;
} ItemInfo_t;
-
+
typedef struct {
const char* itemStream;
const ItemInfo_t expectedItem;
diff --git a/test/MissionManager/MissionControllerTest.cc b/test/MissionManager/MissionControllerTest.cc
index acb6c9e16d3c..aba24da80bcc 100644
--- a/test/MissionManager/MissionControllerTest.cc
+++ b/test/MissionManager/MissionControllerTest.cc
@@ -22,7 +22,7 @@
MissionControllerTest::MissionControllerTest(void)
{
-
+
}
void MissionControllerTest::cleanup(void)
diff --git a/test/MissionManager/MissionControllerTest.h b/test/MissionManager/MissionControllerTest.h
index d49a001243e4..efa7537134fd 100644
--- a/test/MissionManager/MissionControllerTest.h
+++ b/test/MissionManager/MissionControllerTest.h
@@ -19,7 +19,7 @@ class VisualMissionItem;
class MissionControllerTest : public MissionControllerManagerTest
{
Q_OBJECT
-
+
public:
MissionControllerTest(void);
diff --git a/test/MissionManager/MissionItemTest.h b/test/MissionManager/MissionItemTest.h
index 0670c7a53754..d80f14facc89 100644
--- a/test/MissionManager/MissionItemTest.h
+++ b/test/MissionManager/MissionItemTest.h
@@ -18,10 +18,10 @@ class PlanMasterController;
class MissionItemTest : public UnitTest
{
Q_OBJECT
-
+
public:
MissionItemTest(void);
-
+
void init(void) override;
void cleanup(void) override;
diff --git a/test/MissionManager/MissionManagerTest.cc b/test/MissionManager/MissionManagerTest.cc
index ac78d34bc3ce..832ddaa0db8d 100644
--- a/test/MissionManager/MissionManagerTest.cc
+++ b/test/MissionManager/MissionManagerTest.cc
@@ -27,16 +27,16 @@ const size_t MissionManagerTest::_cTestCases = sizeof(_rgTestCases)/sizeof(_rgTe
MissionManagerTest::MissionManagerTest(void)
{
-
+
}
void MissionManagerTest::_writeItems(MockLinkMissionItemHandler::FailureMode_t failureMode, MAV_MISSION_RESULT failureAckResult, bool shouldFail)
{
_mockLink->setMissionItemFailureMode(failureMode, failureAckResult);
-
+
// Setup our test case data
QList missionItems;
-
+
// Editor has a home position item on the front, so we do the same
MissionItem* homeItem = new MissionItem(nullptr /* Vehicle */, this);
homeItem->setCommand(MAV_CMD_NAV_WAYPOINT);
@@ -48,29 +48,29 @@ void MissionManagerTest::_writeItems(MockLinkMissionItemHandler::FailureMode_t f
for (size_t i=0; i<_cTestCases; i++) {
const TestCase_t* testCase = &_rgTestCases[i];
-
+
MissionItem* missionItem = new MissionItem(this);
-
+
QTextStream loadStream(testCase->itemStream, QIODevice::ReadOnly);
QVERIFY(missionItem->load(loadStream));
// Mission Manager expects to get 1-base sequence numbers for write
missionItem->setSequenceNumber(missionItem->sequenceNumber() + 1);
-
+
missionItems.append(missionItem);
}
-
+
// Send the items to the vehicle
_missionManager->writeMissionItems(missionItems);
-
+
// writeMissionItems should emit these signals before returning:
// inProgressChanged
QVERIFY(_missionManager->inProgress());
QCOMPARE(_multiSpyMissionManager->checkSignalByMask(inProgressChangedSignalMask), true);
_checkInProgressValues(true);
-
+
_multiSpyMissionManager->clearAllSignals();
-
+
if (shouldFail) {
// This should be a failed run
@@ -110,26 +110,26 @@ void MissionManagerTest::_writeItems(MockLinkMissionItemHandler::FailureMode_t f
QCOMPARE(_missionManager->missionItems().count(), expectedCount);
}
-
+
_multiSpyMissionManager->clearAllSignals();
}
void MissionManagerTest::_roundTripItems(MockLinkMissionItemHandler::FailureMode_t failureMode, MAV_MISSION_RESULT failureAckResult, bool shouldFail)
{
_writeItems(MockLinkMissionItemHandler::FailNone, failureAckResult, false);
-
+
_mockLink->setMissionItemFailureMode(failureMode, failureAckResult);
// Read the items back from the vehicle
_missionManager->loadFromVehicle();
-
+
// requestMissionItems should emit inProgressChanged signal before returning so no need to wait for it
QVERIFY(_missionManager->inProgress());
QCOMPARE(_multiSpyMissionManager->checkOnlySignalByMask(inProgressChangedSignalMask), true);
_checkInProgressValues(true);
-
+
_multiSpyMissionManager->clearAllSignals();
-
+
if (shouldFail) {
// This should be a failed run
@@ -158,13 +158,13 @@ void MissionManagerTest::_roundTripItems(MockLinkMissionItemHandler::FailureMode
QCOMPARE(_multiSpyMissionManager->checkSignalByMask(newMissionItemsAvailableSignalMask | inProgressChangedSignalMask), true);
_checkInProgressValues(false);
}
-
+
_multiSpyMissionManager->clearAllSignals();
// Validate returned items
-
+
int cMissionItemsExpected;
-
+
if (shouldFail) {
cMissionItemsExpected = 0;
} else {
@@ -174,7 +174,7 @@ void MissionManagerTest::_roundTripItems(MockLinkMissionItemHandler::FailureMode
cMissionItemsExpected++;
}
}
-
+
QCOMPARE(_missionManager->missionItems().count(), (int)cMissionItemsExpected);
int firstActualItem = 0;
@@ -194,7 +194,7 @@ void MissionManagerTest::_roundTripItems(MockLinkMissionItemHandler::FailureMode
}
MissionItem* actual = _missionManager->missionItems()[actualItemIndex];
-
+
qCDebug(UnitTestLog) << "Test case" << testCaseIndex;
QCOMPARE(actual->sequenceNumber(), expectedSequenceNumber);
QCOMPARE(actual->coordinate().latitude(), testCase->expectedItem.coordinate.latitude());
@@ -210,7 +210,7 @@ void MissionManagerTest::_roundTripItems(MockLinkMissionItemHandler::FailureMode
testCaseIndex++;
}
-
+
}
void MissionManagerTest::_testWriteFailureHandlingWorker(void)
@@ -218,20 +218,20 @@ void MissionManagerTest::_testWriteFailureHandlingWorker(void)
/*
/// Called to send a MISSION_ACK message while the MissionManager is in idle state
void sendUnexpectedMissionAck(MAV_MISSION_RESULT ackType) { _missionItemHandler.sendUnexpectedMissionAck(ackType); }
-
+
/// Called to send a MISSION_ITEM message while the MissionManager is in idle state
void sendUnexpectedMissionItem(void) { _missionItemHandler.sendUnexpectedMissionItem(); }
-
+
/// Called to send a MISSION_REQUEST message while the MissionManager is in idle state
void sendUnexpectedMissionRequest(void) { _missionItemHandler.sendUnexpectedMissionRequest(); }
*/
-
+
typedef struct {
const char* failureText;
MockLinkMissionItemHandler::FailureMode_t failureMode;
bool shouldFail;
} WriteTestCase_t;
-
+
static const WriteTestCase_t rgTestCases[] = {
{ "No Failure", MockLinkMissionItemHandler::FailNone, false },
{ "FailWriteMissionCountNoResponse", MockLinkMissionItemHandler::FailWriteMissionCountNoResponse, true },
@@ -259,20 +259,20 @@ void MissionManagerTest::_testReadFailureHandlingWorker(void)
/*
/// Called to send a MISSION_ACK message while the MissionManager is in idle state
void sendUnexpectedMissionAck(MAV_MISSION_RESULT ackType) { _missionItemHandler.sendUnexpectedMissionAck(ackType); }
-
+
/// Called to send a MISSION_ITEM message while the MissionManager is in idle state
void sendUnexpectedMissionItem(void) { _missionItemHandler.sendUnexpectedMissionItem(); }
-
+
/// Called to send a MISSION_REQUEST message while the MissionManager is in idle state
void sendUnexpectedMissionRequest(void) { _missionItemHandler.sendUnexpectedMissionRequest(); }
*/
-
+
typedef struct {
const char* failureText;
MockLinkMissionItemHandler::FailureMode_t failureMode;
bool shouldFail;
} ReadTestCase_t;
-
+
/*
static const ReadTestCase_t rgTestCases[] = {
{ "FailReadRequest1FirstResponse", MockLinkMissionItemHandler::FailReadRequest1FirstResponse, false },
diff --git a/test/MissionManager/MissionManagerTest.h b/test/MissionManager/MissionManagerTest.h
index de46b2f9103b..64071f1349ce 100644
--- a/test/MissionManager/MissionManagerTest.h
+++ b/test/MissionManager/MissionManagerTest.h
@@ -14,10 +14,10 @@
class MissionManagerTest : public MissionControllerManagerTest
{
Q_OBJECT
-
+
public:
MissionManagerTest(void);
-
+
private slots:
//void _testWriteFailureHandlingPX4(void);
//void _testWriteFailureHandlingAPM(void);
@@ -35,7 +35,7 @@ private slots:
void _writeItems(MockLinkMissionItemHandler::FailureMode_t failureMode, MAV_MISSION_RESULT failureAckResult, bool shouldFail);
void _testWriteFailureHandlingWorker(void);
void _testReadFailureHandlingWorker(void);
-
+
static const TestCase_t _rgTestCases[];
static const size_t _cTestCases;
};
diff --git a/test/MissionManager/MissionPlanner.waypoints b/test/MissionManager/MissionPlanner.waypoints
index 40c3175ee2eb..90a5d537e6c1 100644
--- a/test/MissionManager/MissionPlanner.waypoints
+++ b/test/MissionManager/MissionPlanner.waypoints
@@ -1,7 +1,7 @@
-QGC WPL 110
-0 1 0 16 0 0 0 0 47.660459 -122.103167 5.210000 1
-1 0 3 16 0.000000 0.000000 0.000000 0.000000 47.661298 -122.103274 100.000000 1
-2 0 3 16 0.000000 0.000000 0.000000 0.000000 47.661030 -122.101858 100.000000 1
-3 0 3 16 0.000000 0.000000 0.000000 0.000000 47.659961 -122.101525 100.000000 1
-4 0 3 16 0.000000 0.000000 0.000000 0.000000 47.659195 -122.103370 100.000000 1
-5 0 3 16 0.000000 0.000000 0.000000 0.000000 47.660459 -122.105538 100.000000 1
+QGC WPL 110
+0 1 0 16 0 0 0 0 47.660459 -122.103167 5.210000 1
+1 0 3 16 0.000000 0.000000 0.000000 0.000000 47.661298 -122.103274 100.000000 1
+2 0 3 16 0.000000 0.000000 0.000000 0.000000 47.661030 -122.101858 100.000000 1
+3 0 3 16 0.000000 0.000000 0.000000 0.000000 47.659961 -122.101525 100.000000 1
+4 0 3 16 0.000000 0.000000 0.000000 0.000000 47.659195 -122.103370 100.000000 1
+5 0 3 16 0.000000 0.000000 0.000000 0.000000 47.660459 -122.105538 100.000000 1
diff --git a/test/MissionManager/MissionPlanner.waypoints.txt b/test/MissionManager/MissionPlanner.waypoints.txt
index 01bb1b10c33b..af3f57a3d31b 100644
--- a/test/MissionManager/MissionPlanner.waypoints.txt
+++ b/test/MissionManager/MissionPlanner.waypoints.txt
@@ -1,16 +1,16 @@
-QGC WPL 110
-0 1 0 16 0 0 0 0 40.122269 -105.170967 1543.079956 1
-1 0 3 22 10.000000 0.000000 0.000000 0.000000 0.000000 0.000000 30.000000 1
-2 0 3 16 0.000000 0.000000 0.000000 0.000000 40.122993 -105.167717 100.000000 1
-3 0 3 16 0.000000 0.000000 0.000000 0.000000 40.120598 -105.167030 100.000000 1
-4 0 3 16 0.000000 0.000000 0.000000 0.000000 40.118942 -105.173714 100.000000 1
-5 0 3 16 0.000000 0.000000 0.000000 0.000000 40.120270 -105.175835 100.000000 1
-6 0 3 16 0.000000 0.000000 0.000000 0.000000 40.121994 -105.174843 100.000000 1
-7 0 3 177 2.000000 -1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 1
-8 0 3 18 2.000000 0.000000 150.000000 0.000000 40.120483 -105.170555 100.000000 1
-9 0 3 16 0.000000 0.000000 0.000000 0.000000 40.120796 -105.169289 100.000000 1
-10 0 3 178 0.000000 15.000000 0.000000 0.000000 0.000000 0.000000 0.000000 1
-11 0 3 189 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 1
-12 0 3 16 0.000000 0.000000 0.000000 0.000000 40.119156 -105.175896 50.000000 1
-13 0 3 16 0.000000 0.000000 0.000000 0.000000 40.121551 -105.176829 25.000000 1
-14 0 3 21 0.000000 0.000000 0.000000 0.000000 40.122527 -105.170274 0.000000 1
+QGC WPL 110
+0 1 0 16 0 0 0 0 40.122269 -105.170967 1543.079956 1
+1 0 3 22 10.000000 0.000000 0.000000 0.000000 0.000000 0.000000 30.000000 1
+2 0 3 16 0.000000 0.000000 0.000000 0.000000 40.122993 -105.167717 100.000000 1
+3 0 3 16 0.000000 0.000000 0.000000 0.000000 40.120598 -105.167030 100.000000 1
+4 0 3 16 0.000000 0.000000 0.000000 0.000000 40.118942 -105.173714 100.000000 1
+5 0 3 16 0.000000 0.000000 0.000000 0.000000 40.120270 -105.175835 100.000000 1
+6 0 3 16 0.000000 0.000000 0.000000 0.000000 40.121994 -105.174843 100.000000 1
+7 0 3 177 2.000000 -1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 1
+8 0 3 18 2.000000 0.000000 150.000000 0.000000 40.120483 -105.170555 100.000000 1
+9 0 3 16 0.000000 0.000000 0.000000 0.000000 40.120796 -105.169289 100.000000 1
+10 0 3 178 0.000000 15.000000 0.000000 0.000000 0.000000 0.000000 0.000000 1
+11 0 3 189 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 1
+12 0 3 16 0.000000 0.000000 0.000000 0.000000 40.119156 -105.175896 50.000000 1
+13 0 3 16 0.000000 0.000000 0.000000 0.000000 40.121551 -105.176829 25.000000 1
+14 0 3 21 0.000000 0.000000 0.000000 0.000000 40.122527 -105.170274 0.000000 1
diff --git a/test/MissionManager/MissionSettingsTest.cc b/test/MissionManager/MissionSettingsTest.cc
index b0111da32469..0a5df2660d53 100644
--- a/test/MissionManager/MissionSettingsTest.cc
+++ b/test/MissionManager/MissionSettingsTest.cc
@@ -15,7 +15,7 @@
MissionSettingsTest::MissionSettingsTest(void)
: _settingsItem(nullptr)
{
-
+
}
void MissionSettingsTest::init(void)
diff --git a/test/MissionManager/MissionSettingsTest.h b/test/MissionManager/MissionSettingsTest.h
index 0f6a95c144cd..adfa85c3366d 100644
--- a/test/MissionManager/MissionSettingsTest.h
+++ b/test/MissionManager/MissionSettingsTest.h
@@ -17,7 +17,7 @@ class MissionSettingsItem;
class MissionSettingsTest : public VisualMissionItemTest
{
Q_OBJECT
-
+
public:
MissionSettingsTest(void);
diff --git a/test/MissionManager/OldFileFormat.mission b/test/MissionManager/OldFileFormat.mission
index e2b1be92865d..d90206c88124 100644
--- a/test/MissionManager/OldFileFormat.mission
+++ b/test/MissionManager/OldFileFormat.mission
@@ -1,120 +1,120 @@
-{
- "firmwareType": 3,
- "groundStation": "QGroundControl",
- "items": [
- {
- "autoContinue": true,
- "command": 22,
- "coordinate": [
- 47.660137763851573,
- -122.29411931627152,
- 50
- ],
- "doJumpId": 1,
- "frame": 2,
- "params": [
- 0,
- 0,
- 0,
- 0
- ],
- "type": "SimpleItem"
- },
- {
- "autoContinue": true,
- "command": 18,
- "coordinate": [
- 47.660316610000002,
- -122.29423867,
- 10
- ],
- "doJumpId": 2,
- "frame": 3,
- "params": [
- 1,
- 0,
- 0,
- 0
- ],
- "type": "SimpleItem"
- },
- {
- "autoContinue": true,
- "command": 18,
- "coordinate": [
- 47.660299945473923,
- -122.29402946102036,
- 20
- ],
- "doJumpId": 3,
- "frame": 3,
- "params": [
- 3,
- 0,
- 0,
- 0
- ],
- "type": "SimpleItem"
- },
- {
- "autoContinue": true,
- "command": 16,
- "coordinate": [
- 47.660239429999997,
- -122.29371564,
- 5
- ],
- "doJumpId": 4,
- "frame": 3,
- "params": [
- 0,
- 0,
- 0,
- 0
- ],
- "type": "SimpleItem"
- },
- {
- "autoContinue": true,
- "command": 16,
- "coordinate": [
- 47.660368599999998,
- -122.29426013,
- 5
- ],
- "doJumpId": 5,
- "frame": 3,
- "params": [
- 0,
- 0,
- 0,
- 0
- ],
- "type": "SimpleItem"
- },
- {
- "autoContinue": true,
- "command": 21,
- "coordinate": [
- 47.660153620000003,
- -122.29410455999999,
- 3
- ],
- "doJumpId": 6,
- "frame": 3,
- "params": [
- 0,
- 0,
- 0,
- 0
- ],
- "type": "SimpleItem"
- }
- ],
- "plannedHomePosition": [
- 47.660137763851573,
- -122.29411931627152,
- 0
- ],
- "version": 2
-}
+{
+ "firmwareType": 3,
+ "groundStation": "QGroundControl",
+ "items": [
+ {
+ "autoContinue": true,
+ "command": 22,
+ "coordinate": [
+ 47.660137763851573,
+ -122.29411931627152,
+ 50
+ ],
+ "doJumpId": 1,
+ "frame": 2,
+ "params": [
+ 0,
+ 0,
+ 0,
+ 0
+ ],
+ "type": "SimpleItem"
+ },
+ {
+ "autoContinue": true,
+ "command": 18,
+ "coordinate": [
+ 47.660316610000002,
+ -122.29423867,
+ 10
+ ],
+ "doJumpId": 2,
+ "frame": 3,
+ "params": [
+ 1,
+ 0,
+ 0,
+ 0
+ ],
+ "type": "SimpleItem"
+ },
+ {
+ "autoContinue": true,
+ "command": 18,
+ "coordinate": [
+ 47.660299945473923,
+ -122.29402946102036,
+ 20
+ ],
+ "doJumpId": 3,
+ "frame": 3,
+ "params": [
+ 3,
+ 0,
+ 0,
+ 0
+ ],
+ "type": "SimpleItem"
+ },
+ {
+ "autoContinue": true,
+ "command": 16,
+ "coordinate": [
+ 47.660239429999997,
+ -122.29371564,
+ 5
+ ],
+ "doJumpId": 4,
+ "frame": 3,
+ "params": [
+ 0,
+ 0,
+ 0,
+ 0
+ ],
+ "type": "SimpleItem"
+ },
+ {
+ "autoContinue": true,
+ "command": 16,
+ "coordinate": [
+ 47.660368599999998,
+ -122.29426013,
+ 5
+ ],
+ "doJumpId": 5,
+ "frame": 3,
+ "params": [
+ 0,
+ 0,
+ 0,
+ 0
+ ],
+ "type": "SimpleItem"
+ },
+ {
+ "autoContinue": true,
+ "command": 21,
+ "coordinate": [
+ 47.660153620000003,
+ -122.29410455999999,
+ 3
+ ],
+ "doJumpId": 6,
+ "frame": 3,
+ "params": [
+ 0,
+ 0,
+ 0,
+ 0
+ ],
+ "type": "SimpleItem"
+ }
+ ],
+ "plannedHomePosition": [
+ 47.660137763851573,
+ -122.29411931627152,
+ 0
+ ],
+ "version": 2
+}
diff --git a/test/MissionManager/PolygonAreaTest.kml b/test/MissionManager/PolygonAreaTest.kml
index 455643f37757..079c59d84ba4 100755
--- a/test/MissionManager/PolygonAreaTest.kml
+++ b/test/MissionManager/PolygonAreaTest.kml
@@ -38,7 +38,7 @@
- -122.1059149362712,47.65965281788451,0 -122.1044593196253,47.66002598220988,0 -122.1047336695092,47.66034166158975,0 -122.1061470943783,47.6599810708829,0 -122.1059149362712,47.65965281788451,0
+ -122.1059149362712,47.65965281788451,0 -122.1044593196253,47.66002598220988,0 -122.1047336695092,47.66034166158975,0 -122.1061470943783,47.6599810708829,0 -122.1059149362712,47.65965281788451,0
diff --git a/test/MissionManager/PolygonBadCoordinatesNode.kml b/test/MissionManager/PolygonBadCoordinatesNode.kml
index e9f6c3f91bfb..1f8e6f302a83 100755
--- a/test/MissionManager/PolygonBadCoordinatesNode.kml
+++ b/test/MissionManager/PolygonBadCoordinatesNode.kml
@@ -38,7 +38,7 @@ Incorrectly formed XML test file
1
- -122.1059149362712,47.65965281788451,0 -122.1044593196253,47.66002598220988,0 -122.1047336695092,47.66034166158975,0 -122.1061470943783,47.6599810708829,0 -122.1059149362712,47.65965281788451,0
+ -122.1059149362712,47.65965281788451,0 -122.1044593196253,47.66002598220988,0 -122.1047336695092,47.66034166158975,0 -122.1061470943783,47.6599810708829,0 -122.1059149362712,47.65965281788451,0
diff --git a/test/MissionManager/PolygonBadXml.kml b/test/MissionManager/PolygonBadXml.kml
index 49840fd90549..e2002b6293ae 100755
--- a/test/MissionManager/PolygonBadXml.kml
+++ b/test/MissionManager/PolygonBadXml.kml
@@ -39,7 +39,7 @@ Incorrectly formed XML test file
- -122.1059149362712,47.65965281788451,0 -122.1044593196253,47.66002598220988,0 -122.1047336695092,47.66034166158975,0 -122.1061470943783,47.6599810708829,0 -122.1059149362712,47.65965281788451,0
+ -122.1059149362712,47.65965281788451,0 -122.1044593196253,47.66002598220988,0 -122.1047336695092,47.66034166158975,0 -122.1061470943783,47.6599810708829,0 -122.1059149362712,47.65965281788451,0
diff --git a/test/MissionManager/PolygonGood.kml b/test/MissionManager/PolygonGood.kml
index 712e859f3aa3..999678175096 100755
--- a/test/MissionManager/PolygonGood.kml
+++ b/test/MissionManager/PolygonGood.kml
@@ -38,7 +38,7 @@
- -122.1059149362712,47.65965281788451,0 -122.1044593196253,47.66002598220988,0 -122.1047336695092,47.66034166158975,0 -122.1061470943783,47.6599810708829,0 -122.1059149362712,47.65965281788451,0
+ -122.1059149362712,47.65965281788451,0 -122.1044593196253,47.66002598220988,0 -122.1047336695092,47.66034166158975,0 -122.1061470943783,47.6599810708829,0 -122.1059149362712,47.65965281788451,0
diff --git a/test/MissionManager/SectionTest.cc b/test/MissionManager/SectionTest.cc
index 3760fd060edf..db60e0c5690c 100644
--- a/test/MissionManager/SectionTest.cc
+++ b/test/MissionManager/SectionTest.cc
@@ -18,7 +18,7 @@
SectionTest::SectionTest(void)
: _simpleItem(nullptr)
{
-
+
}
void SectionTest::init(void)
diff --git a/test/MissionManager/SectionTest.h b/test/MissionManager/SectionTest.h
index 0593a63f357d..a11f1ef603af 100644
--- a/test/MissionManager/SectionTest.h
+++ b/test/MissionManager/SectionTest.h
@@ -18,7 +18,7 @@ class SimpleMissionItem;
class SectionTest : public VisualMissionItemTest
{
Q_OBJECT
-
+
public:
SectionTest(void);
diff --git a/test/MissionManager/SimpleMissionItemTest.cc b/test/MissionManager/SimpleMissionItemTest.cc
index 80b7cc148923..a301a6e7963b 100644
--- a/test/MissionManager/SimpleMissionItemTest.cc
+++ b/test/MissionManager/SimpleMissionItemTest.cc
@@ -73,7 +73,7 @@ const ItemExpected_t _rgItemExpected[] = {
};
SimpleMissionItemTest::SimpleMissionItemTest(void)
-{
+{
rgSimpleItemSignals[commandChangedIndex] = SIGNAL(commandChanged(int));
rgSimpleItemSignals[altitudeModeChangedIndex] = SIGNAL(altitudeModeChanged());
rgSimpleItemSignals[friendlyEditAllowedChangedIndex] = SIGNAL(friendlyEditAllowedChanged(bool));
diff --git a/test/MissionManager/SimpleMissionItemTest.h b/test/MissionManager/SimpleMissionItemTest.h
index 6487c0b1c3bd..f5d53cee6396 100644
--- a/test/MissionManager/SimpleMissionItemTest.h
+++ b/test/MissionManager/SimpleMissionItemTest.h
@@ -39,7 +39,7 @@ typedef struct {
class SimpleMissionItemTest : public VisualMissionItemTest
{
Q_OBJECT
-
+
public:
SimpleMissionItemTest(void);
diff --git a/test/MissionManager/SpeedSectionTest.cc b/test/MissionManager/SpeedSectionTest.cc
index daa8eb66814a..a33ce147dbfa 100644
--- a/test/MissionManager/SpeedSectionTest.cc
+++ b/test/MissionManager/SpeedSectionTest.cc
@@ -20,7 +20,7 @@ SpeedSectionTest::SpeedSectionTest(void)
, _spySection(nullptr)
, _speedSection(nullptr)
{
-
+
}
void SpeedSectionTest::init(void)
diff --git a/test/MissionManager/SpeedSectionTest.h b/test/MissionManager/SpeedSectionTest.h
index a1f320d89d55..8f9150184939 100644
--- a/test/MissionManager/SpeedSectionTest.h
+++ b/test/MissionManager/SpeedSectionTest.h
@@ -17,7 +17,7 @@ class SpeedSection;
class SpeedSectionTest : public SectionTest
{
Q_OBJECT
-
+
public:
SpeedSectionTest(void);
diff --git a/test/MissionManager/StructureScanComplexItemTest.h b/test/MissionManager/StructureScanComplexItemTest.h
index 58e7abdba996..7722c2a4ce75 100644
--- a/test/MissionManager/StructureScanComplexItemTest.h
+++ b/test/MissionManager/StructureScanComplexItemTest.h
@@ -18,14 +18,14 @@ class MultiSignalSpy;
class StructureScanComplexItemTest : public UnitTest
{
Q_OBJECT
-
+
public:
StructureScanComplexItemTest(void);
protected:
void init(void) final;
void cleanup(void) final;
-
+
private slots:
void _testDirty(void);
void _testSaveLoad(void);
diff --git a/test/MissionManager/SurveyComplexItemTest.cc b/test/MissionManager/SurveyComplexItemTest.cc
index 05546a3fbe06..5971a617189f 100644
--- a/test/MissionManager/SurveyComplexItemTest.cc
+++ b/test/MissionManager/SurveyComplexItemTest.cc
@@ -226,7 +226,7 @@ QList SurveyComplexItemTest::_createExpectedCommands(bool hasTurnaround
singleTransect.takeFirst();
singleTransect.takeLast();
}
-
+
for (int i=0; i<_expectedTransectCount; i++) {
expectedCommands.append(singleTransect);
}
diff --git a/test/MissionManager/SurveyComplexItemTest.h b/test/MissionManager/SurveyComplexItemTest.h
index 18df28341191..576ba7fa78e9 100644
--- a/test/MissionManager/SurveyComplexItemTest.h
+++ b/test/MissionManager/SurveyComplexItemTest.h
@@ -21,14 +21,14 @@ class MultiSignalSpy;
class SurveyComplexItemTest : public TransectStyleComplexItemTestBase
{
Q_OBJECT
-
+
public:
SurveyComplexItemTest(void);
protected:
void init(void) final;
void cleanup(void) final;
-
+
#if 1
private slots:
void _testDirty(void);
diff --git a/test/MissionManager/TransectStyleComplexItemTest.cc b/test/MissionManager/TransectStyleComplexItemTest.cc
index 409f90c4e7e6..7024a3ec9484 100644
--- a/test/MissionManager/TransectStyleComplexItemTest.cc
+++ b/test/MissionManager/TransectStyleComplexItemTest.cc
@@ -272,4 +272,3 @@ void TestTransectStyleItem::adjustSurveAreaPolygon(void)
vertex.setLatitude(vertex.latitude() + 1);
surveyAreaPolygon()->adjustVertex(0, vertex);
}
-
diff --git a/test/MissionManager/TransectStyleComplexItemTest.h b/test/MissionManager/TransectStyleComplexItemTest.h
index 959b9d747f22..5b2b30c0aab4 100644
--- a/test/MissionManager/TransectStyleComplexItemTest.h
+++ b/test/MissionManager/TransectStyleComplexItemTest.h
@@ -21,7 +21,7 @@ class PlanMasterController;
class TransectStyleComplexItemTest : public TransectStyleComplexItemTestBase
{
Q_OBJECT
-
+
public:
TransectStyleComplexItemTest(void);
diff --git a/test/MissionManager/TransectStyleComplexItemTestBase.h b/test/MissionManager/TransectStyleComplexItemTestBase.h
index 6bd535a71414..cb2a23d86b67 100644
--- a/test/MissionManager/TransectStyleComplexItemTestBase.h
+++ b/test/MissionManager/TransectStyleComplexItemTestBase.h
@@ -19,7 +19,7 @@ class Vehicle;
class TransectStyleComplexItemTestBase : public UnitTest
{
Q_OBJECT
-
+
public:
TransectStyleComplexItemTestBase(void);
diff --git a/test/MissionManager/VisualMissionItemTest.cc b/test/MissionManager/VisualMissionItemTest.cc
index d21bad6fa8c6..7a6c4869ee04 100644
--- a/test/MissionManager/VisualMissionItemTest.cc
+++ b/test/MissionManager/VisualMissionItemTest.cc
@@ -16,7 +16,7 @@
VisualMissionItemTest::VisualMissionItemTest(void)
{
-
+
}
void VisualMissionItemTest::init(void)
diff --git a/test/Utilities/Compression/.gitignore b/test/Utilities/Compression/.gitignore
index 40c3c4a33e1f..2ddf5f27b162 100644
--- a/test/Utilities/Compression/.gitignore
+++ b/test/Utilities/Compression/.gitignore
@@ -1 +1 @@
-manifest.json
\ No newline at end of file
+manifest.json
diff --git a/test/Utilities/Geo/pline.prj b/test/Utilities/Geo/pline.prj
index b13a71791932..40dd8c6cdcba 100644
--- a/test/Utilities/Geo/pline.prj
+++ b/test/Utilities/Geo/pline.prj
@@ -1 +1 @@
-GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.017453292519943295]]
\ No newline at end of file
+GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.017453292519943295]]
diff --git a/test/Utilities/Geo/polygon.prj b/test/Utilities/Geo/polygon.prj
index b13a71791932..40dd8c6cdcba 100644
--- a/test/Utilities/Geo/polygon.prj
+++ b/test/Utilities/Geo/polygon.prj
@@ -1 +1 @@
-GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.017453292519943295]]
\ No newline at end of file
+GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.017453292519943295]]
diff --git a/test/Utilities/arducopter.apj b/test/Utilities/arducopter.apj
index b487222417e9..145fd1fe65ae 100644
--- a/test/Utilities/arducopter.apj
+++ b/test/Utilities/arducopter.apj
@@ -16,4 +16,4 @@
"git_identity": "2a3dc4b7",
"board_revision": 0,
"USBID": "0x2dae/0x1011"
-}
\ No newline at end of file
+}
diff --git a/test/Vehicle/ComponentInformation/ComponentInformationCacheTest.h b/test/Vehicle/ComponentInformation/ComponentInformationCacheTest.h
index 036a173c965b..93a569146888 100644
--- a/test/Vehicle/ComponentInformation/ComponentInformationCacheTest.h
+++ b/test/Vehicle/ComponentInformation/ComponentInformationCacheTest.h
@@ -42,4 +42,3 @@ private slots:
QString _cacheDir;
QString _tmpFilesDir;
};
-
diff --git a/test/Vehicle/ComponentInformation/ComponentInformationTranslationTest.cc b/test/Vehicle/ComponentInformation/ComponentInformationTranslationTest.cc
index b5e78a23788a..3dee2caf9c67 100644
--- a/test/Vehicle/ComponentInformation/ComponentInformationTranslationTest.cc
+++ b/test/Vehicle/ComponentInformation/ComponentInformationTranslationTest.cc
@@ -47,4 +47,3 @@ void ComponentInformationTranslationTest::readJson(const QByteArray& bytes, QJso
QTEST_ASSERT(parseError.error == QJsonParseError::NoError);
QVERIFY(!jsonDoc.isEmpty());
}
-
diff --git a/test/Vehicle/ComponentInformation/ComponentInformationTranslationTest.h b/test/Vehicle/ComponentInformation/ComponentInformationTranslationTest.h
index d27c0058ffbb..c9feebaaa9fa 100644
--- a/test/Vehicle/ComponentInformation/ComponentInformationTranslationTest.h
+++ b/test/Vehicle/ComponentInformation/ComponentInformationTranslationTest.h
@@ -28,4 +28,3 @@ private slots:
private:
void readJson(const QByteArray& bytes, QJsonDocument& jsonDoc);
};
-
diff --git a/test/Vehicle/RequestMessageTest.cc b/test/Vehicle/RequestMessageTest.cc
index 4035faabfb29..9396b3ec0b67 100644
--- a/test/Vehicle/RequestMessageTest.cc
+++ b/test/Vehicle/RequestMessageTest.cc
@@ -38,7 +38,7 @@ void RequestMessageTest::_testCaseWorker(TestCase_t& testCase)
MultiVehicleManager* vehicleMgr = MultiVehicleManager::instance();
Vehicle* vehicle = vehicleMgr->activeVehicle();
-
+
// Gimbal controller sends message requests when receiving heartbeats, trying to find a gimbal, and it messes with this test so we disable it
vehicle->_deleteGimbalController();
diff --git a/test/Vehicle/RequestMessageTest.h b/test/Vehicle/RequestMessageTest.h
index 89eccaf88813..6d46cfb74e31 100644
--- a/test/Vehicle/RequestMessageTest.h
+++ b/test/Vehicle/RequestMessageTest.h
@@ -20,7 +20,7 @@ class RequestMessageTest : public UnitTest
signals:
void resultHandlerCalled(void);
-
+
private slots:
void _performTestCases(void);
void _compIdAllFailure(void);
diff --git a/test/Vehicle/SendMavCommandWithHandlerTest.cc b/test/Vehicle/SendMavCommandWithHandlerTest.cc
index 52a5e04c5f2a..de0ed6dc5be3 100644
--- a/test/Vehicle/SendMavCommandWithHandlerTest.cc
+++ b/test/Vehicle/SendMavCommandWithHandlerTest.cc
@@ -77,7 +77,7 @@ void SendMavCommandWithHandlerTest::_testCaseWorker(TestCase_t& testCase)
if (testCase.expectInProgressResult) {
QVERIFY(QTest::qWaitFor([&]() { return _progressHandlerCalled; }, 10000));
}
-
+
QVERIFY(QTest::qWaitFor([&]() { return _resultHandlerCalled; }, 10000));
QCOMPARE(_mockLink->receivedMavCommandCount(testCase.command), testCase.expectedSendCount);
QCOMPARE(vehicle->_findMavCommandListEntryIndex(MAV_COMP_ID_AUTOPILOT1, testCase.command), -1);
diff --git a/test/Vehicle/SendMavCommandWithHandlerTest.h b/test/Vehicle/SendMavCommandWithHandlerTest.h
index 1d97c5ef8c0f..435115732055 100644
--- a/test/Vehicle/SendMavCommandWithHandlerTest.h
+++ b/test/Vehicle/SendMavCommandWithHandlerTest.h
@@ -15,7 +15,7 @@
class SendMavCommandWithHandlerTest : public UnitTest
{
Q_OBJECT
-
+
private slots:
void _performTestCases(void);
void _compIdAllFailure(void);
diff --git a/test/Vehicle/SendMavCommandWithSignallingTest.cc b/test/Vehicle/SendMavCommandWithSignallingTest.cc
index c18661c62c11..e16c71e14e0e 100644
--- a/test/Vehicle/SendMavCommandWithSignallingTest.cc
+++ b/test/Vehicle/SendMavCommandWithSignallingTest.cc
@@ -42,7 +42,7 @@ void SendMavCommandWithSignallingTest::_testCaseWorker(TestCase_t& testCase)
QList arguments = spyResult.takeFirst();
// Gimbal controler requests MAVLINK_MSG_ID_GIMBAL_MANAGER_INFORMATION on vehicle connection,
- // and that messes with this test, as it receives response to that command instead. So if we
+ // and that messes with this test, as it receives response to that command instead. So if we
// are taking the response to that MAV_CMD_REQUEST_MESSAGE, we discard it and take the next
// Also, the camera manager requests MAVLINK_MSG_ID_CAMERA_INFORMATION on vehicle connection,
// so we need to ignore that as well.
@@ -51,7 +51,7 @@ void SendMavCommandWithSignallingTest::_testCaseWorker(TestCase_t& testCase)
QCOMPARE(spyResult.wait(10000), true);
arguments = spyResult.takeFirst();
}
-
+
QCOMPARE(arguments.count(), 5);
QCOMPARE(arguments.at(0).toInt(), vehicle->id());
QCOMPARE(arguments.at(1).toInt(), MAV_COMP_ID_AUTOPILOT1);
diff --git a/test/Vehicle/SendMavCommandWithSignallingTest.h b/test/Vehicle/SendMavCommandWithSignallingTest.h
index 40b01e38676e..9c8089e7929e 100644
--- a/test/Vehicle/SendMavCommandWithSignallingTest.h
+++ b/test/Vehicle/SendMavCommandWithSignallingTest.h
@@ -15,7 +15,7 @@
class SendMavCommandWithSignallingTest : public UnitTest
{
Q_OBJECT
-
+
private slots:
void _performTestCases(void);
void _duplicateCommand(void);
diff --git a/test/qgcunittest/MultiSignalSpy.cc b/test/qgcunittest/MultiSignalSpy.cc
index 2a74bf2b1f52..19726a84112d 100644
--- a/test/qgcunittest/MultiSignalSpy.cc
+++ b/test/qgcunittest/MultiSignalSpy.cc
@@ -47,7 +47,7 @@ bool MultiSignalSpy::init(QObject* signalEmitter, ///< [in] object whi
qDebug() << "Invalid arguments";
return false;
}
-
+
_signalEmitter = signalEmitter;
_rgSignals = rgSignals;
_cSignals = cSignals;
@@ -62,7 +62,7 @@ bool MultiSignalSpy::init(QObject* signalEmitter, ///< [in] object whi
return false;
}
}
-
+
return true;
}
@@ -72,7 +72,7 @@ bool MultiSignalSpy::_checkSignalByMaskWorker(quint32 mask, bool multipleSignals
if ((1 << i) & mask) {
QSignalSpy* spy = _rgSpys[i];
Q_ASSERT(spy != nullptr);
-
+
if ((multipleSignalsAllowed && spy->count() == 0) || (!multipleSignalsAllowed && spy->count() != 1)) {
qDebug() << "Failed index:" << i;
_printSignalState(mask);
@@ -80,7 +80,7 @@ bool MultiSignalSpy::_checkSignalByMaskWorker(quint32 mask, bool multipleSignals
}
}
}
-
+
return true;
}
@@ -102,7 +102,7 @@ bool MultiSignalSpy::_checkOnlySignalByMaskWorker(quint32 mask, bool multipleSig
}
}
}
-
+
return true;
}
@@ -140,7 +140,7 @@ bool MultiSignalSpy::checkNoSignalByMask(quint32 mask)
}
}
}
-
+
return true;
}
@@ -164,7 +164,7 @@ void MultiSignalSpy::clearSignalByIndex(quint32 index)
{
Q_ASSERT(index < _cSignals);
Q_ASSERT(_rgSpys[index] != nullptr);
-
+
_rgSpys[index]->clear();
}
@@ -204,7 +204,7 @@ bool MultiSignalSpy::waitForSignalByIndex(
// Check input parameters
if (msec < -1 || msec == 0)
return false;
-
+
// activate the timeout
_timeout = false;
int timerId;
@@ -214,15 +214,15 @@ bool MultiSignalSpy::waitForSignalByIndex(
} else {
timerId = 0;
}
-
+
// Begin waiting
QSignalSpy* spy = _rgSpys[index];
Q_ASSERT(spy);
-
+
while (spy->count() == 0 && !_timeout) {
QTest::qWait(100);
}
-
+
// Clean up and return status
if (timerId) {
killTimer(timerId);
diff --git a/test/qgcunittest/MultiSignalSpy.h b/test/qgcunittest/MultiSignalSpy.h
index 2065efa29da3..9063238496ef 100644
--- a/test/qgcunittest/MultiSignalSpy.h
+++ b/test/qgcunittest/MultiSignalSpy.h
@@ -24,7 +24,7 @@ class QSignalSpy;
class MultiSignalSpy : public QObject
{
Q_OBJECT
-
+
public:
MultiSignalSpy(QObject* parent = nullptr);
~MultiSignalSpy();
@@ -57,7 +57,7 @@ class MultiSignalSpy : public QObject
void clearAllSignals(void);
bool waitForSignalByIndex(quint32 index, int msec);
-
+
QSignalSpy* getSpyByIndex(quint32 index);
// Returns the value type for the first parameter of the signal
@@ -68,7 +68,7 @@ class MultiSignalSpy : public QObject
private:
// QObject overrides
void timerEvent(QTimerEvent * event);
-
+
void _printSignalState(quint32 mask);
bool _checkSignalByMaskWorker(quint32 mask, bool multipleSignalsAllowed);
bool _checkOnlySignalByMaskWorker(quint32 mask, bool multipleSignalsAllowed);
@@ -79,4 +79,3 @@ class MultiSignalSpy : public QObject
size_t _cSignals;
bool _timeout;
};
-
diff --git a/test/qgcunittest/MultiSignalSpyV2.cc b/test/qgcunittest/MultiSignalSpyV2.cc
index efcca511d473..97996aef28ce 100644
--- a/test/qgcunittest/MultiSignalSpyV2.cc
+++ b/test/qgcunittest/MultiSignalSpyV2.cc
@@ -37,7 +37,7 @@ bool MultiSignalSpyV2::init(QObject* signalEmitter)
qWarning() << "No signalEmitter specified";
return false;
}
-
+
_signalEmitter = signalEmitter;
const QMetaObject* metaObject = signalEmitter->metaObject();
@@ -85,7 +85,7 @@ bool MultiSignalSpyV2::_checkSignalByMaskWorker(quint64 mask, bool multipleSigna
if ((1ll << i) & mask) {
QSignalSpy* spy = _rgSpys[i];
Q_ASSERT(spy != nullptr);
-
+
if ((multipleSignalsAllowed && spy->count() == 0) || (!multipleSignalsAllowed && spy->count() != 1)) {
qWarning() << "Failed index:" << i;
_printSignalState(mask);
@@ -93,7 +93,7 @@ bool MultiSignalSpyV2::_checkSignalByMaskWorker(quint64 mask, bool multipleSigna
}
}
}
-
+
return true;
}
@@ -115,7 +115,7 @@ bool MultiSignalSpyV2::_checkOnlySignalByMaskWorker(quint64 mask, bool multipleS
}
}
}
-
+
return true;
}
@@ -153,7 +153,7 @@ bool MultiSignalSpyV2::checkNoSignalByMask(quint64 mask)
}
}
}
-
+
return true;
}
@@ -216,7 +216,7 @@ bool MultiSignalSpyV2::waitForSignal(const char* signalName, int msecs)
// Check input parameters
if (msecs < -1 || msecs == 0)
return false;
-
+
// activate the timeout
_timeout = false;
int timerId;
@@ -226,15 +226,15 @@ bool MultiSignalSpyV2::waitForSignal(const char* signalName, int msecs)
} else {
timerId = 0;
}
-
+
// Begin waiting
QSignalSpy* spy = getSpy(signalName);
Q_ASSERT(spy);
-
+
while (spy->count() == 0 && !_timeout) {
QTest::qWait(100);
}
-
+
// Clean up and return status
if (timerId) {
killTimer(timerId);
diff --git a/test/qgcunittest/MultiSignalSpyV2.h b/test/qgcunittest/MultiSignalSpyV2.h
index 9efdd5de0dd0..daa85ba3bd75 100644
--- a/test/qgcunittest/MultiSignalSpyV2.h
+++ b/test/qgcunittest/MultiSignalSpyV2.h
@@ -21,7 +21,7 @@ class QSignalSpy;
class MultiSignalSpyV2 : public QObject
{
Q_OBJECT
-
+
public:
MultiSignalSpyV2(QObject* parent = nullptr);
~MultiSignalSpyV2();
@@ -56,7 +56,7 @@ class MultiSignalSpyV2 : public QObject
void clearAllSignals(void);
bool waitForSignal(const char* signalName, int msec);
-
+
QSignalSpy* getSpy(const char* signalName);
// Returns the value type for the first parameter of the signal
@@ -67,7 +67,7 @@ class MultiSignalSpyV2 : public QObject
private:
// QObject overrides
void timerEvent(QTimerEvent * event);
-
+
void _printSignalState (quint64 mask);
bool _checkSignalByMaskWorker (quint64 mask, bool multipleSignalsAllowed);
bool _checkOnlySignalByMaskWorker (quint64 mask, bool multipleSignalsAllowed);
@@ -77,4 +77,3 @@ class MultiSignalSpyV2 : public QObject
QList _rgSpys;
bool _timeout;
};
-
diff --git a/tools/README.md b/tools/README.md
new file mode 100644
index 000000000000..e6f1b3ef7407
--- /dev/null
+++ b/tools/README.md
@@ -0,0 +1,186 @@
+# Development Tools
+
+Utility scripts and tools for QGroundControl development.
+
+## Quick Start Scripts
+
+### `dev-setup.sh`
+**One-time development environment setup**
+
+Automates initial setup for contributors:
+- Checks prerequisites (git, cmake, ninja, python)
+- Initializes git submodules
+- Installs pre-commit hooks
+- Sets up cmake-format
+- Detects Qt installation
+
+Note: `.qmlls.ini` is auto-generated by CMake during configuration
+
+```bash
+./tools/dev-setup.sh
+```
+
+### `quick-build.sh`
+**Fast build script with auto-detection**
+
+Automatically finds Qt installation and builds QGroundControl.
+
+```bash
+# Debug build (default)
+./tools/quick-build.sh
+
+# Release build
+./tools/quick-build.sh --release
+
+# Clean build
+./tools/quick-build.sh --clean
+
+# Build and run tests
+./tools/quick-build.sh --test
+
+# Release build with tests
+./tools/quick-build.sh --release --test
+```
+
+**Options:**
+- `-r, --release` - Build Release instead of Debug
+- `-c, --clean` - Clean build directory first
+- `-t, --test` - Run unit tests after build
+- `-h, --help` - Show help message
+
+### `check-code-quality.sh`
+**Code quality validation**
+
+Runs formatting checks and linters:
+- clang-format (C++ formatting)
+- cmake-format (CMake formatting)
+- YAML validation
+- Trailing whitespace detection
+- Line ending checks
+- clang-tidy (optional, slow)
+
+```bash
+# Check code quality
+./tools/check-code-quality.sh
+
+# Fix formatting issues automatically
+./tools/check-code-quality.sh --fix
+
+# Run clang-tidy (comprehensive but slow)
+./tools/check-code-quality.sh --clang-tidy
+
+# Only check formatting
+./tools/check-code-quality.sh --format-only
+```
+
+**Options:**
+- `--fix` - Automatically fix formatting issues
+- `--clang-tidy` - Run clang-tidy static analysis (slow)
+- `--format-only` - Only check code formatting
+- `-h, --help` - Show help message
+
+## Configuration Files
+
+### `ccache.conf`
+Configuration for ccache compilation cache. Speeds up rebuilds.
+
+### `qt6.natvis`
+Visual Studio natvis file for Qt 6 types visualization in debugger.
+
+## Other Directories
+
+### `setup/`
+Platform-specific setup scripts and dependencies.
+
+### `reference/`
+Reference materials and documentation for development.
+
+## Usage Examples
+
+**New contributor setup:**
+```bash
+# 1. Clone repository
+git clone https://github.com/mavlink/qgroundcontrol.git
+cd qgroundcontrol
+
+# 2. Run setup script
+./tools/dev-setup.sh
+
+# 3. Build and run
+./tools/quick-build.sh
+./build/Debug/QGroundControl
+```
+
+**Before committing:**
+```bash
+# Check code quality
+./tools/check-code-quality.sh
+
+# Fix formatting issues
+./tools/check-code-quality.sh --fix
+
+# Or use pre-commit hooks (automatic)
+git commit -m "Your changes"
+```
+
+**Quick rebuild after changes:**
+```bash
+./tools/quick-build.sh
+```
+
+**Full rebuild with tests:**
+```bash
+./tools/quick-build.sh --clean --test
+```
+
+## CI Integration
+
+These scripts mirror the CI checks:
+- Pre-commit hooks run automatically before commits
+- GitHub Actions use similar formatting checks
+- Local validation helps catch issues early
+
+## Contributing
+
+When adding new tools:
+1. Follow existing script naming conventions
+2. Add help messages (`--help`)
+3. Use consistent color coding (GREEN=success, RED=error, YELLOW=warning)
+4. Make scripts executable: `chmod +x script.sh`
+5. Update this README
+
+## Troubleshooting
+
+**Qt not found:**
+- Install Qt 6.10.0 from https://www.qt.io/download-qt-installer
+- Or set Qt path manually in scripts
+
+**Permission denied:**
+```bash
+chmod +x tools/*.sh
+```
+
+**Pre-commit hooks fail:**
+```bash
+# Install dependencies
+pip install pre-commit cmake-format
+
+# Re-run hooks
+pre-commit run --all-files
+```
+
+**Build fails:**
+```bash
+# Clean and retry
+./tools/quick-build.sh --clean
+
+# Check CMakeLists.txt for errors
+cmake-format --check CMakeLists.txt
+```
+
+---
+
+**See also:**
+- [QUICKSTART.md](../QUICKSTART.md) - Developer quick start guide
+- [CONTRIBUTING.md](../.github/CONTRIBUTING.md) - Contribution guidelines
+- [DEV_CONFIG.md](../.github/DEV_CONFIG.md) - Configuration files reference
diff --git a/tools/check-code-quality.sh b/tools/check-code-quality.sh
new file mode 100755
index 000000000000..dfeae6d68378
--- /dev/null
+++ b/tools/check-code-quality.sh
@@ -0,0 +1,208 @@
+#!/bin/bash
+# Code quality checking script for QGroundControl
+# Runs various linters and formatters in check mode
+
+set -e
+
+# Colors
+RED='\033[0;31m'
+GREEN='\033[0;32m'
+YELLOW='\033[1;33m'
+BLUE='\033[0;34m'
+NC='\033[0m'
+
+ERRORS=0
+WARNINGS=0
+
+echo -e "${BLUE}======================================${NC}"
+echo -e "${BLUE}QGroundControl Code Quality Checks${NC}"
+echo -e "${BLUE}======================================${NC}"
+echo ""
+
+# Check if we're in the root directory
+if [ ! -f "CMakeLists.txt" ]; then
+ echo -e "${RED}ERROR: Must be run from repository root${NC}"
+ exit 1
+fi
+
+# Function to check command
+check_command() {
+ if command -v "$1" >/dev/null 2>&1; then
+ return 0
+ else
+ return 1
+ fi
+}
+
+# Parse arguments
+CHECK_FORMAT=true
+CHECK_CMAKE=true
+CHECK_YAML=true
+CHECK_CLANG_TIDY=false
+FIX_ISSUES=false
+
+while [[ $# -gt 0 ]]; do
+ case $1 in
+ --fix)
+ FIX_ISSUES=true
+ shift
+ ;;
+ --clang-tidy)
+ CHECK_CLANG_TIDY=true
+ shift
+ ;;
+ --format-only)
+ CHECK_CMAKE=false
+ CHECK_YAML=false
+ shift
+ ;;
+ -h|--help)
+ echo "Usage: $0 [OPTIONS]"
+ echo ""
+ echo "Options:"
+ echo " --fix Fix issues automatically"
+ echo " --clang-tidy Run clang-tidy (slow)"
+ echo " --format-only Only check code formatting"
+ echo " -h, --help Show this help"
+ exit 0
+ ;;
+ *)
+ echo -e "${RED}Unknown option: $1${NC}"
+ exit 1
+ ;;
+ esac
+done
+
+# 1. Check C++ formatting with clang-format
+if [ "$CHECK_FORMAT" = true ] && check_command clang-format; then
+ echo -e "${BLUE}[1/5] Checking C++ formatting...${NC}"
+
+ if [ "$FIX_ISSUES" = true ]; then
+ find src -name "*.cc" -o -name "*.h" | xargs clang-format -i
+ echo -e "${GREEN}✓ C++ files formatted${NC}"
+ else
+ UNFORMATTED=$(find src -name "*.cc" -o -name "*.h" | xargs clang-format --dry-run --Werror 2>&1 | grep -c "error:" || true)
+ if [ "$UNFORMATTED" -gt 0 ]; then
+ echo -e "${RED}✗ Found $UNFORMATTED formatting issues${NC}"
+ echo -e " Run with ${YELLOW}--fix${NC} to auto-format"
+ ERRORS=$((ERRORS + 1))
+ else
+ echo -e "${GREEN}✓ All C++ files properly formatted${NC}"
+ fi
+ fi
+else
+ echo -e "${YELLOW}⊘ Skipping C++ formatting check (clang-format not found)${NC}"
+fi
+echo ""
+
+# 2. Check CMake formatting
+if [ "$CHECK_CMAKE" = true ] && check_command cmake-format; then
+ echo -e "${BLUE}[2/5] Checking CMake formatting...${NC}"
+
+ if [ "$FIX_ISSUES" = true ]; then
+ find . -name "CMakeLists.txt" -o -name "*.cmake" | grep -v "build/" | xargs cmake-format -i
+ echo -e "${GREEN}✓ CMake files formatted${NC}"
+ else
+ if find . -name "CMakeLists.txt" -o -name "*.cmake" | grep -v "build/" | xargs cmake-format --check 2>&1 | grep -q "would be reformatted"; then
+ echo -e "${RED}✗ CMake files need formatting${NC}"
+ echo -e " Run with ${YELLOW}--fix${NC} to auto-format"
+ ERRORS=$((ERRORS + 1))
+ else
+ echo -e "${GREEN}✓ All CMake files properly formatted${NC}"
+ fi
+ fi
+else
+ echo -e "${YELLOW}⊘ Skipping CMake formatting check (cmake-format not found)${NC}"
+fi
+echo ""
+
+# 3. Check YAML files
+if [ "$CHECK_YAML" = true ]; then
+ echo -e "${BLUE}[3/5] Checking YAML files...${NC}"
+
+ YAML_ERRORS=0
+ for file in $(find .github -name "*.yml" -o -name "*.yaml"); do
+ if ! python3 -c "import yaml; yaml.safe_load(open('$file'))" 2>/dev/null; then
+ echo -e "${RED}✗ Invalid YAML: $file${NC}"
+ YAML_ERRORS=$((YAML_ERRORS + 1))
+ fi
+ done
+
+ if [ "$YAML_ERRORS" -eq 0 ]; then
+ echo -e "${GREEN}✓ All YAML files valid${NC}"
+ else
+ echo -e "${RED}✗ Found $YAML_ERRORS invalid YAML files${NC}"
+ ERRORS=$((ERRORS + 1))
+ fi
+fi
+echo ""
+
+# 4. Check for common issues
+echo -e "${BLUE}[4/5] Checking for common issues...${NC}"
+
+# Check for trailing whitespace
+TRAILING_WS=$(find src -name "*.cc" -o -name "*.h" | xargs grep -n "[[:space:]]$" | wc -l)
+if [ "$TRAILING_WS" -gt 0 ]; then
+ echo -e "${YELLOW}⚠ Found $TRAILING_WS lines with trailing whitespace${NC}"
+ WARNINGS=$((WARNINGS + 1))
+else
+ echo -e "${GREEN}✓ No trailing whitespace${NC}"
+fi
+
+# Check for mixed line endings
+CRLF_FILES=$(find src -name "*.cc" -o -name "*.h" | xargs file | grep -c "CRLF" || true)
+if [ "$CRLF_FILES" -gt 0 ]; then
+ echo -e "${YELLOW}⚠ Found $CRLF_FILES files with CRLF line endings${NC}"
+ WARNINGS=$((WARNINGS + 1))
+else
+ echo -e "${GREEN}✓ All files use LF line endings${NC}"
+fi
+
+echo ""
+
+# 5. Run clang-tidy (optional, slow)
+if [ "$CHECK_CLANG_TIDY" = true ] && check_command clang-tidy; then
+ echo -e "${BLUE}[5/5] Running clang-tidy (this may take a while)...${NC}"
+
+ if [ ! -f "build/compile_commands.json" ]; then
+ echo -e "${YELLOW}⚠ compile_commands.json not found${NC}"
+ echo -e " Build with: cmake -B build -DCMAKE_EXPORT_COMPILE_COMMANDS=ON"
+ else
+ # Run on a subset of files for speed
+ SAMPLE_FILES=$(find src/Vehicle src/FactSystem -name "*.cc" | head -5)
+ TIDY_WARNINGS=0
+ for file in $SAMPLE_FILES; do
+ if ! clang-tidy "$file" -p build/ 2>&1 | grep -q "warning:"; then
+ TIDY_WARNINGS=$((TIDY_WARNINGS + 1))
+ fi
+ done
+
+ if [ "$TIDY_WARNINGS" -gt 0 ]; then
+ echo -e "${YELLOW}⚠ Found warnings in sampled files${NC}"
+ WARNINGS=$((WARNINGS + 1))
+ else
+ echo -e "${GREEN}✓ No clang-tidy warnings in sample${NC}"
+ fi
+ fi
+else
+ echo -e "${YELLOW}⊘ Skipping clang-tidy (use --clang-tidy to enable)${NC}"
+fi
+echo ""
+
+# Summary
+echo -e "${BLUE}======================================${NC}"
+echo -e "${BLUE}Summary${NC}"
+echo -e "${BLUE}======================================${NC}"
+
+if [ "$ERRORS" -eq 0 ] && [ "$WARNINGS" -eq 0 ]; then
+ echo -e "${GREEN}✓ All checks passed!${NC}"
+ exit 0
+elif [ "$ERRORS" -eq 0 ]; then
+ echo -e "${YELLOW}⚠ $WARNINGS warning(s) found${NC}"
+ exit 0
+else
+ echo -e "${RED}✗ $ERRORS error(s) and $WARNINGS warning(s) found${NC}"
+ echo ""
+ echo -e "Run with ${YELLOW}--fix${NC} to automatically fix formatting issues"
+ exit 1
+fi
diff --git a/tools/dev-setup.sh b/tools/dev-setup.sh
new file mode 100755
index 000000000000..570eacda35b1
--- /dev/null
+++ b/tools/dev-setup.sh
@@ -0,0 +1,143 @@
+#!/bin/bash
+# QGroundControl Development Environment Setup Script
+# Automates initial setup for contributors
+
+set -e
+
+echo "================================================"
+echo "QGroundControl Development Environment Setup"
+echo "================================================"
+echo ""
+
+# Detect OS
+OS="unknown"
+if [[ "$OSTYPE" == "linux-gnu"* ]]; then
+ OS="linux"
+elif [[ "$OSTYPE" == "darwin"* ]]; then
+ OS="macos"
+else
+ echo "Unsupported OS: $OSTYPE"
+ exit 1
+fi
+
+echo "Detected OS: $OS"
+echo ""
+
+# Function to check if command exists
+command_exists() {
+ command -v "$1" >/dev/null 2>&1
+}
+
+# Check prerequisites
+echo "Checking prerequisites..."
+MISSING_DEPS=()
+
+if ! command_exists git; then
+ MISSING_DEPS+=("git")
+fi
+
+if ! command_exists cmake; then
+ MISSING_DEPS+=("cmake")
+fi
+
+if ! command_exists ninja; then
+ MISSING_DEPS+=("ninja")
+fi
+
+if ! command_exists python3; then
+ MISSING_DEPS+=("python3")
+fi
+
+if [ ${#MISSING_DEPS[@]} -ne 0 ]; then
+ echo "ERROR: Missing required dependencies: ${MISSING_DEPS[*]}"
+ echo ""
+ if [ "$OS" = "linux" ]; then
+ echo "Install with: sudo apt install ${MISSING_DEPS[*]}"
+ elif [ "$OS" = "macos" ]; then
+ echo "Install with: brew install ${MISSING_DEPS[*]}"
+ fi
+ exit 1
+fi
+
+echo "✓ All prerequisites installed"
+echo ""
+
+# Initialize git submodules
+echo "Initializing git submodules..."
+if git submodule update --init --recursive; then
+ echo "✓ Submodules initialized"
+else
+ echo "✗ Failed to initialize submodules"
+ exit 1
+fi
+echo ""
+
+# Install pre-commit hooks
+echo "Setting up pre-commit hooks..."
+if command_exists pre-commit; then
+ echo "✓ pre-commit already installed"
+else
+ echo "Installing pre-commit..."
+ if python3 -m pip install --user pre-commit; then
+ echo "✓ pre-commit installed"
+ else
+ echo "⚠ Failed to install pre-commit (optional)"
+ fi
+fi
+
+if command_exists pre-commit; then
+ if pre-commit install; then
+ echo "✓ Pre-commit hooks installed"
+ else
+ echo "⚠ Failed to install pre-commit hooks (optional)"
+ fi
+fi
+echo ""
+
+# Install cmake-format (optional)
+echo "Setting up cmake-format (optional)..."
+if python3 -m pip install --user cmake-format 2>/dev/null; then
+ echo "✓ cmake-format installed"
+else
+ echo "⚠ cmake-format installation skipped (optional)"
+fi
+echo ""
+
+# Note: .qmlls.ini is auto-generated by CMake (QT_QML_GENERATE_QMLLS_INI=ON)
+
+# Check for Qt installation
+echo "Checking for Qt 6.10.0..."
+QT_FOUND=false
+if [ "$OS" = "linux" ]; then
+ QT_PATHS=("$HOME/Qt/6.10.0/gcc_64" "/opt/Qt/6.10.0/gcc_64")
+elif [ "$OS" = "macos" ]; then
+ QT_PATHS=("$HOME/Qt/6.10.0/macos" "$HOME/Qt/6.10.0/clang_64")
+fi
+
+for path in "${QT_PATHS[@]}"; do
+ if [ -d "$path" ]; then
+ echo "✓ Found Qt at: $path"
+ QT_FOUND=true
+ QT_PATH="$path"
+ break
+ fi
+done
+
+if [ "$QT_FOUND" = false ]; then
+ echo "⚠ Qt 6.10.0 not found in standard locations"
+ echo " Install from: https://www.qt.io/download-qt-installer"
+else
+ echo ""
+ echo "You can now build with:"
+ echo " $QT_PATH/bin/qt-cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Debug"
+ echo " cmake --build build -j\$(nproc)"
+fi
+
+echo ""
+echo "================================================"
+echo "Setup complete! Next steps:"
+echo "================================================"
+echo "1. Install Qt 6.10.0 if not already installed"
+echo "2. Build: ./tools/quick-build.sh"
+echo "3. Read: QUICKSTART.md for development guide"
+echo ""
diff --git a/tools/quick-build.sh b/tools/quick-build.sh
new file mode 100755
index 000000000000..5b3050cf1b90
--- /dev/null
+++ b/tools/quick-build.sh
@@ -0,0 +1,150 @@
+#!/bin/bash
+# Quick build script for QGroundControl
+# Automatically detects Qt installation and builds
+
+set -e
+
+# Colors for output
+RED='\033[0;31m'
+GREEN='\033[0;32m'
+YELLOW='\033[1;33m'
+NC='\033[0m' # No Color
+
+echo -e "${GREEN}QGroundControl Quick Build${NC}"
+echo "================================"
+echo ""
+
+# Detect OS
+OS="unknown"
+if [[ "$OSTYPE" == "linux-gnu"* ]]; then
+ OS="linux"
+ NPROC="$(nproc)"
+elif [[ "$OSTYPE" == "darwin"* ]]; then
+ OS="macos"
+ NPROC="$(sysctl -n hw.ncpu)"
+else
+ echo -e "${RED}Unsupported OS: $OSTYPE${NC}"
+ exit 1
+fi
+
+# Find Qt installation
+QT_CMAKE=""
+if [ "$OS" = "linux" ]; then
+ QT_PATHS=(
+ "$HOME/Qt/6.10.0/gcc_64/bin/qt-cmake"
+ "/opt/Qt/6.10.0/gcc_64/bin/qt-cmake"
+ )
+elif [ "$OS" = "macos" ]; then
+ QT_PATHS=(
+ "$HOME/Qt/6.10.0/macos/bin/qt-cmake"
+ "$HOME/Qt/6.10.0/clang_64/bin/qt-cmake"
+ )
+fi
+
+for path in "${QT_PATHS[@]}"; do
+ if [ -x "$path" ]; then
+ QT_CMAKE="$path"
+ break
+ fi
+done
+
+if [ -z "$QT_CMAKE" ]; then
+ echo -e "${RED}ERROR: Qt 6.10.0 not found${NC}"
+ echo "Install from: https://www.qt.io/download-qt-installer"
+ exit 1
+fi
+
+echo -e "${GREEN}✓${NC} Found Qt: $QT_CMAKE"
+
+# Parse arguments
+BUILD_TYPE="Debug"
+BUILD_DIR="build"
+CLEAN_BUILD=false
+RUN_TESTS=false
+
+while [[ $# -gt 0 ]]; do
+ case $1 in
+ -r|--release)
+ BUILD_TYPE="Release"
+ BUILD_DIR="build-release"
+ shift
+ ;;
+ -c|--clean)
+ CLEAN_BUILD=true
+ shift
+ ;;
+ -t|--test)
+ RUN_TESTS=true
+ shift
+ ;;
+ -h|--help)
+ echo "Usage: $0 [OPTIONS]"
+ echo ""
+ echo "Options:"
+ echo " -r, --release Build Release instead of Debug"
+ echo " -c, --clean Clean build directory first"
+ echo " -t, --test Run unit tests after build"
+ echo " -h, --help Show this help message"
+ exit 0
+ ;;
+ *)
+ echo -e "${RED}Unknown option: $1${NC}"
+ exit 1
+ ;;
+ esac
+done
+
+echo -e "${GREEN}✓${NC} Build type: $BUILD_TYPE"
+echo -e "${GREEN}✓${NC} Build directory: $BUILD_DIR"
+echo ""
+
+# Clean build if requested
+if [ "$CLEAN_BUILD" = true ] && [ -d "$BUILD_DIR" ]; then
+ echo -e "${YELLOW}Cleaning build directory...${NC}"
+ rm -rf "$BUILD_DIR"
+fi
+
+# Configure
+if [ ! -d "$BUILD_DIR" ]; then
+ echo "Configuring..."
+ if [ "$RUN_TESTS" = true ]; then
+ "$QT_CMAKE" -B "$BUILD_DIR" -G Ninja \
+ -DCMAKE_BUILD_TYPE="$BUILD_TYPE" \
+ -DQGC_BUILD_TESTING=ON
+ else
+ "$QT_CMAKE" -B "$BUILD_DIR" -G Ninja \
+ -DCMAKE_BUILD_TYPE="$BUILD_TYPE"
+ fi
+ echo -e "${GREEN}✓${NC} Configuration complete"
+ echo ""
+fi
+
+# Build
+echo "Building with $NPROC cores..."
+START_TIME=$(date +%s)
+if cmake --build "$BUILD_DIR" --config "$BUILD_TYPE" -j"$NPROC"; then
+ END_TIME=$(date +%s)
+ BUILD_TIME=$((END_TIME - START_TIME))
+ echo ""
+ echo -e "${GREEN}✓ Build successful${NC} (${BUILD_TIME}s)"
+else
+ echo ""
+ echo -e "${RED}✗ Build failed${NC}"
+ exit 1
+fi
+
+# Run tests if requested
+if [ "$RUN_TESTS" = true ]; then
+ echo ""
+ echo "Running unit tests..."
+ if "./$BUILD_DIR/$BUILD_TYPE/QGroundControl" --unittest; then
+ echo -e "${GREEN}✓ All tests passed${NC}"
+ else
+ echo -e "${RED}✗ Some tests failed${NC}"
+ exit 1
+ fi
+fi
+
+echo ""
+echo -e "${GREEN}Build complete!${NC}"
+echo "Run: ./$BUILD_DIR/$BUILD_TYPE/QGroundControl"
diff --git a/translations/README.md b/translations/README.md
index 722ccd13b910..bb0b0cb68e6d 100644
--- a/translations/README.md
+++ b/translations/README.md
@@ -40,7 +40,7 @@ The parser supports two known file types: "MAVCmdInfo" and "FactMetaData". If yo
### Manually specify parser instructions
For this case dont include the `fileType` key/value pair. And include the followings keys (as needed) in the root object:
-* `translateKeys` This key is a string which is a list of all the keys which should be translated.
+* `translateKeys` This key is a string which is a list of all the keys which should be translated.
* `arrayIDKeys` The json localization parser provides additional information to the translator about where this string came from in the json hierarchy. If there is an array in the json, just displaying an array index as to where this came from is not that helpful. In most cases there is a key within each array element for which the value is unique. If this is the case then specify this key name(s) as the value for `arrayIDKeys`.
### Disambiguation
@@ -52,4 +52,3 @@ This is used when you have two strings in the same file which are equal, but the
```
In the example above "baz" is the string which is the same for two different keys. The prefix `#loc.disambiguation#` indicates a disambiguation is to follow which is the string between the next set of `#`s.
-
diff --git a/translations/qgc.ts b/translations/qgc.ts
index 535da248ca71..b5beb80c37fd 100644
--- a/translations/qgc.ts
+++ b/translations/qgc.ts
@@ -4286,14 +4286,14 @@ Please place your vehicle in water, click the button, and wait. Note that the th
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
diff --git a/translations/qgc_source_az_AZ.ts b/translations/qgc_source_az_AZ.ts
index 37b9f1374478..01d96a7e8b4f 100644
--- a/translations/qgc_source_az_AZ.ts
+++ b/translations/qgc_source_az_AZ.ts
@@ -4299,25 +4299,25 @@ Zəhmət olmasa aparatınızı suya qoyun, düyməni vurun və gözləyin. Diqq
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
diff --git a/translations/qgc_source_bg_BG.ts b/translations/qgc_source_bg_BG.ts
index 6654c927f3e3..fba8778973e0 100644
--- a/translations/qgc_source_bg_BG.ts
+++ b/translations/qgc_source_bg_BG.ts
@@ -4299,25 +4299,25 @@ Please place your vehicle in water, click the button, and wait. Note that the th
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
diff --git a/translations/qgc_source_de_DE.ts b/translations/qgc_source_de_DE.ts
index 869c491bdfb4..5b62182890fa 100644
--- a/translations/qgc_source_de_DE.ts
+++ b/translations/qgc_source_de_DE.ts
@@ -4299,25 +4299,25 @@ Please place your vehicle in water, click the button, and wait. Note that the th
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
diff --git a/translations/qgc_source_el_GR.ts b/translations/qgc_source_el_GR.ts
index f4eba0659781..0877cb2a60df 100644
--- a/translations/qgc_source_el_GR.ts
+++ b/translations/qgc_source_el_GR.ts
@@ -4299,25 +4299,25 @@ Please place your vehicle in water, click the button, and wait. Note that the th
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
diff --git a/translations/qgc_source_es_ES.ts b/translations/qgc_source_es_ES.ts
index 53f0e7fadb27..083efc022f0f 100644
--- a/translations/qgc_source_es_ES.ts
+++ b/translations/qgc_source_es_ES.ts
@@ -4299,25 +4299,25 @@ Please place your vehicle in water, click the button, and wait. Note that the th
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
diff --git a/translations/qgc_source_fi_FI.ts b/translations/qgc_source_fi_FI.ts
index b2075b494267..af173dbe2c9c 100644
--- a/translations/qgc_source_fi_FI.ts
+++ b/translations/qgc_source_fi_FI.ts
@@ -4299,25 +4299,25 @@ Please place your vehicle in water, click the button, and wait. Note that the th
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
diff --git a/translations/qgc_source_fr_FR.ts b/translations/qgc_source_fr_FR.ts
index ee154e7848bd..a0ff186b9161 100644
--- a/translations/qgc_source_fr_FR.ts
+++ b/translations/qgc_source_fr_FR.ts
@@ -4299,25 +4299,25 @@ Please place your vehicle in water, click the button, and wait. Note that the th
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
diff --git a/translations/qgc_source_he_IL.ts b/translations/qgc_source_he_IL.ts
index 89cd121e8229..d9a4f453fdf8 100644
--- a/translations/qgc_source_he_IL.ts
+++ b/translations/qgc_source_he_IL.ts
@@ -4299,25 +4299,25 @@ Please place your vehicle in water, click the button, and wait. Note that the th
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
diff --git a/translations/qgc_source_it_IT.ts b/translations/qgc_source_it_IT.ts
index 87eb6636e1ff..b21e259a39cc 100644
--- a/translations/qgc_source_it_IT.ts
+++ b/translations/qgc_source_it_IT.ts
@@ -4299,25 +4299,25 @@ Please place your vehicle in water, click the button, and wait. Note that the th
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
diff --git a/translations/qgc_source_ja_JP.ts b/translations/qgc_source_ja_JP.ts
index 76c24acad899..8dd0ac8ce48b 100644
--- a/translations/qgc_source_ja_JP.ts
+++ b/translations/qgc_source_ja_JP.ts
@@ -3904,7 +3904,7 @@ Please place your vehicle in water, click the button, and wait. Note that the th
Clicking 'Apply' will save the changes you have made to your airframe configuration.<br><br> All vehicle parameters other than Radio Calibration will be reset.<br><br> Your vehicle will also be restarted in order to complete the process.
- '適用' をクリックすると、機体設定に加えた変更が保存されます。<br><br> 送信機キャリブレーション以外のすべての機体パラメータがリセットされます。<br><br>
+ '適用' をクリックすると、機体設定に加えた変更が保存されます。<br><br> 送信機キャリブレーション以外のすべての機体パラメータがリセットされます。<br><br>
また、プロセスを完了させるために機体が再起動されます。
@@ -4294,25 +4294,25 @@ Please place your vehicle in water, click the button, and wait. Note that the th
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
- 警告!
+ 警告!
-自動調整を行う前に、機体が十分に安定していることを確認してください!
+自動調整を行う前に、機体が十分に安定していることを確認してください!
-自動調整を開始する前に、以下を確認してください:
-1. 自動調整ガイドを確認し、予備ステップに従っていること
-2. 現在の制御のゲイン[強度]が、中程度の外乱がある場合でもドローンを安定させるのに十分であること
-3. 予期せぬことが起こった場合、送信機スティックを動かして自動調整シーケンスを中止する準備ができていること
+自動調整を開始する前に、以下を確認してください:
+1. 自動調整ガイドを確認し、予備ステップに従っていること
+2. 現在の制御のゲイン[強度]が、中程度の外乱がある場合でもドローンを安定させるのに十分であること
+3. 予期せぬことが起こった場合、送信機スティックを動かして自動調整シーケンスを中止する準備ができていること
OKをクリックして、自動調整プロセスを開始します。
diff --git a/translations/qgc_source_ko_KR.ts b/translations/qgc_source_ko_KR.ts
index 72e821345463..c07dcb5f6f5a 100644
--- a/translations/qgc_source_ko_KR.ts
+++ b/translations/qgc_source_ko_KR.ts
@@ -4302,25 +4302,25 @@ Please place your vehicle in water, click the button, and wait. Note that the th
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
diff --git a/translations/qgc_source_nl_NL.ts b/translations/qgc_source_nl_NL.ts
index 63bb481be8a9..e36faed0683f 100644
--- a/translations/qgc_source_nl_NL.ts
+++ b/translations/qgc_source_nl_NL.ts
@@ -4299,25 +4299,25 @@ Please place your vehicle in water, click the button, and wait. Note that the th
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
diff --git a/translations/qgc_source_no_NO.ts b/translations/qgc_source_no_NO.ts
index 9af237405a57..47f635bef94b 100644
--- a/translations/qgc_source_no_NO.ts
+++ b/translations/qgc_source_no_NO.ts
@@ -4299,25 +4299,25 @@ Please place your vehicle in water, click the button, and wait. Note that the th
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
diff --git a/translations/qgc_source_pl_PL.ts b/translations/qgc_source_pl_PL.ts
index e2eba72bf4c9..09686711653e 100644
--- a/translations/qgc_source_pl_PL.ts
+++ b/translations/qgc_source_pl_PL.ts
@@ -4299,25 +4299,25 @@ Please place your vehicle in water, click the button, and wait. Note that the th
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
diff --git a/translations/qgc_source_pt_PT.ts b/translations/qgc_source_pt_PT.ts
index 177dfe7e6269..8f627791baa2 100644
--- a/translations/qgc_source_pt_PT.ts
+++ b/translations/qgc_source_pt_PT.ts
@@ -4297,25 +4297,25 @@ Por favor coloque seu veículo na água, clique no botão, e espere. Note que os
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
diff --git a/translations/qgc_source_ru_RU.ts b/translations/qgc_source_ru_RU.ts
index 7da5931f86da..381cfbb832a3 100644
--- a/translations/qgc_source_ru_RU.ts
+++ b/translations/qgc_source_ru_RU.ts
@@ -4299,25 +4299,25 @@ Please place your vehicle in water, click the button, and wait. Note that the th
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
diff --git a/translations/qgc_source_sv_SE.ts b/translations/qgc_source_sv_SE.ts
index 0f936a481827..49a2221f109b 100644
--- a/translations/qgc_source_sv_SE.ts
+++ b/translations/qgc_source_sv_SE.ts
@@ -4299,25 +4299,25 @@ Please place your vehicle in water, click the button, and wait. Note that the th
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
diff --git a/translations/qgc_source_tr_TR.ts b/translations/qgc_source_tr_TR.ts
index 39e250605f95..e36e271bb939 100644
--- a/translations/qgc_source_tr_TR.ts
+++ b/translations/qgc_source_tr_TR.ts
@@ -4299,25 +4299,25 @@ Please place your vehicle in water, click the button, and wait. Note that the th
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
diff --git a/translations/qgc_source_uk_UA.ts b/translations/qgc_source_uk_UA.ts
index 2fcdc37ef8c5..ead18596d7a2 100644
--- a/translations/qgc_source_uk_UA.ts
+++ b/translations/qgc_source_uk_UA.ts
@@ -4299,25 +4299,25 @@ Please place your vehicle in water, click the button, and wait. Note that the th
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
diff --git a/translations/qgc_source_zh_CN.ts b/translations/qgc_source_zh_CN.ts
index 33e5dec0cd7a..c32c00f405d6 100644
--- a/translations/qgc_source_zh_CN.ts
+++ b/translations/qgc_source_zh_CN.ts
@@ -4297,25 +4297,25 @@ Please place your vehicle in water, click the button, and wait. Note that the th
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
diff --git a/translations/qgc_source_zh_TW.ts b/translations/qgc_source_zh_TW.ts
index 18997c0a6104..bf5122a58d2e 100644
--- a/translations/qgc_source_zh_TW.ts
+++ b/translations/qgc_source_zh_TW.ts
@@ -4299,25 +4299,25 @@ Please place your vehicle in water, click the button, and wait. Note that the th
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.
- WARNING!
+ WARNING!
-The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
+The auto-tuning procedure should be executed with caution and requires the vehicle to fly stable enough before attempting the procedure!
-Before starting the auto-tuning process, make sure that:
-1. You have read the auto-tuning guide and have followed the preliminary steps
-2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
-3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
+Before starting the auto-tuning process, make sure that:
+1. You have read the auto-tuning guide and have followed the preliminary steps
+2. The current control gains are good enough to stabilize the drone in presence of medium disturbances
+3. You are ready to abort the auto-tuning sequence by moving the RC sticks, if anything unexpected happens.
Click Ok to start the auto-tuning process.