Browse Source

FirmwarePlugin, Vehicle: implement helper to check version number

QGC4.4
Willian Galvani 7 years ago
parent
commit
0b5fb0dce5
  1. 32
      src/FirmwarePlugin/FirmwarePlugin.cc
  2. 5
      src/FirmwarePlugin/FirmwarePlugin.h
  3. 10
      src/Vehicle/Vehicle.cc
  4. 5
      src/Vehicle/Vehicle.h

32
src/FirmwarePlugin/FirmwarePlugin.cc

@ -740,3 +740,35 @@ void FirmwarePlugin::_versionFileDownloadFinished(QString& remoteFile, QString& @@ -740,3 +740,35 @@ void FirmwarePlugin::_versionFileDownloadFinished(QString& remoteFile, QString&
qgcApp()->showMessage(message.arg(vehicle->firmwareVersionTypeString(), currentVersion, version));
}
}
int FirmwarePlugin::versionCompare(Vehicle* vehicle, int major, int minor, int patch)
{
int currMajor = vehicle->firmwareMajorVersion();
int currMinor = vehicle->firmwareMinorVersion();
int currPatch = vehicle->firmwarePatchVersion();
if (currMajor == major && currMinor == minor && currPatch == patch) {
return 0;
}
if (currMajor > major
|| (currMajor == major && currMinor > minor)
|| (currMajor == major && currMinor == minor && currPatch > patch))
{
return 1;
}
return -1;
}
int FirmwarePlugin::versionCompare(Vehicle* vehicle, QString& compare)
{
QStringList versionNumbers = compare.split(".");
if(versionNumbers.size() != 3) {
qCWarning(FirmwarePluginLog) << "Error parsing version number: wrong format";
return -1;
}
int major = versionNumbers[0].toInt();
int minor = versionNumbers[1].toInt();
int patch = versionNumbers[2].toInt();
return versionCompare(vehicle, major, minor, patch);
}

5
src/FirmwarePlugin/FirmwarePlugin.h

@ -309,6 +309,11 @@ public: @@ -309,6 +309,11 @@ public:
/// Used to check if running firmware is latest stable version.
virtual void checkIfIsLatestStable(Vehicle* vehicle);
/// Used to check if running current version is equal or higher than the one being compared.
/// returns 1 if current > compare, 0 if current == compare, -1 if current < compare
int versionCompare(Vehicle* vehicle, QString& compare);
int versionCompare(Vehicle* vehicle, int major, int minor, int patch);
// FIXME: Hack workaround for non pluginize FollowMe support
static const QString px4FollowMeFlightMode;

10
src/Vehicle/Vehicle.cc

@ -3770,6 +3770,16 @@ void Vehicle::_mavlinkMessageStatus(int uasId, uint64_t totalSent, uint64_t tota @@ -3770,6 +3770,16 @@ void Vehicle::_mavlinkMessageStatus(int uasId, uint64_t totalSent, uint64_t tota
}
}
int Vehicle::versionCompare(QString& compare)
{
return _firmwarePlugin->versionCompare(this, compare);
}
int Vehicle::versionCompare(int major, int minor, int patch)
{
return _firmwarePlugin->versionCompare(this, major, minor, patch);
}
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------

5
src/Vehicle/Vehicle.h

@ -746,6 +746,11 @@ public: @@ -746,6 +746,11 @@ public:
Q_INVOKABLE void triggerCamera(void);
Q_INVOKABLE void sendPlan(QString planFile);
/// Used to check if running current version is equal or higher than the one being compared.
// returns 1 if current > compare, 0 if current == compare, -1 if current < compare
Q_INVOKABLE int versionCompare(QString& compare);
Q_INVOKABLE int versionCompare(int major, int minor, int patch);
/// Test motor
/// @param motor Motor number, 1-based
/// @param percent 0-no power, 100-full power

Loading…
Cancel
Save