Commit 0b5fb0dc authored by Willian Galvani's avatar Willian Galvani

FirmwarePlugin, Vehicle: implement helper to check version number

parent 6d622f4c
......@@ -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);
}
......@@ -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;
......
......@@ -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);
}
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
......
......@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment