Browse Source

fixed review comments

QGC4.4
Pritam Ghanghas 10 years ago
parent
commit
67b02f49b0
  1. 2
      src/VehicleSetup/FirmwareUpgrade.qml
  2. 481
      src/VehicleSetup/FirmwareUpgradeController.cc
  3. 8
      src/VehicleSetup/FirmwareUpgradeController.h

2
src/VehicleSetup/FirmwareUpgrade.qml

@ -139,7 +139,7 @@ QGCView { @@ -139,7 +139,7 @@ QGCView {
QGCViewDialog {
anchors.fill: parent
property bool showFirmwareTypeSelection: apmFlightStack.checked || advancedMode.checked
property bool showFirmwareTypeSelection: advancedMode.checked
property bool px4Flow: controller.boardType == "PX4 Flow"
function accept() {

481
src/VehicleSetup/FirmwareUpgradeController.cc

@ -30,6 +30,14 @@ @@ -30,6 +30,14 @@
#include "QGCFileDialog.h"
#include "QGCMessageBox.h"
struct FirmwareToUrlElement_t {
FirmwareUpgradeController::AutoPilotStackType_t stackType;
FirmwareUpgradeController::FirmwareType_t firmwareType;
FirmwareUpgradeController::FirmwareVehicleType_t vehicleType;
QString url;
};
uint qHash(const FirmwareUpgradeController::FirmwareIdentifier& firmwareIDTrinity)
{
return ( firmwareIDTrinity.autopilotStackType |
@ -164,353 +172,146 @@ void FirmwareUpgradeController::_foundBootloader(int bootloaderVersion, int boar @@ -164,353 +172,146 @@ void FirmwareUpgradeController::_foundBootloader(int bootloaderVersion, int boar
}
}
/// @brief Called when the findBootloader process is unable to sync to the bootloader. Moves the state
/// machine to the appropriate error state.
void FirmwareUpgradeController::_bootloaderSyncFailed(void)
{
_errorCancel("Unable to sync with bootloader.");
}
/// @brief Prompts the user to select a firmware file if needed and moves the state machine to the next state.
void FirmwareUpgradeController::_getFirmwareFile(FirmwareIdentifier firmwareIDTrinity)
/// @brief intializes the firmware hashes with proper urls.
/// This happens only once for a class instance first time when it is needed.
void FirmwareUpgradeController::_initFirmwareHash()
{
// indirect check whether this function has been called before or not
// may have to be modified if _rgPX4FMUV2Firmware disappears
if (!_rgPX4FMUV2Firmware.isEmpty()) {
return;
}
static QHash<FirmwareIdentifier, QString> rgPX4FMUV2Firmware;
rgPX4FMUV2Firmware.insert(FirmwareIdentifier(AutoPilotStackPX4,
StableFirmware,
DefaultVehicleFirmware),
"http://px4-travis.s3.amazonaws.com/Firmware/stable/px4fmu-v2_default.px4");
rgPX4FMUV2Firmware.insert(FirmwareIdentifier(AutoPilotStackPX4,
BetaFirmware,
DefaultVehicleFirmware),
"http://px4-travis.s3.amazonaws.com/Firmware/beta/px4fmu-v2_default.px4");
rgPX4FMUV2Firmware.insert(FirmwareIdentifier(AutoPilotStackPX4,
DeveloperFirmware,
DefaultVehicleFirmware),
"http://px4-travis.s3.amazonaws.com/Firmware/master/px4fmu-v2_default.px4");
rgPX4FMUV2Firmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
StableFirmware,
QuadFirmware),
"http://firmware.diydrones.com/Copter/stable/PX4-quad/ArduCopter-v2.px4");
rgPX4FMUV2Firmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
StableFirmware,
X8Firmware),
"http://firmware.diydrones.com/Copter/stable/PX4-octa-quad/ArduCopter-v2.px4");
rgPX4FMUV2Firmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
StableFirmware,
HexaFirmware),
"http://firmware.diydrones.com/Copter/stable/PX4-hexa/ArduCopter-v2.px4");
rgPX4FMUV2Firmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
StableFirmware,
OctoFirmware),
"http://firmware.diydrones.com/Copter/stable/PX4-octa/ArduCopter-v2.px4");
rgPX4FMUV2Firmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
StableFirmware,
YFirmware),
"http://firmware.diydrones.com/Copter/stable/PX4-tri/ArduCopter-v2.px4");
rgPX4FMUV2Firmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
StableFirmware,
Y6Firmware),
"http://firmware.diydrones.com/Copter/stable/PX4-y6/ArduCopter-v2.px4");
rgPX4FMUV2Firmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
StableFirmware,
HeliFirmware),
"http://firmware.diydrones.com/Copter/stable/PX4-heli/ArduCopter-v2.px4");
rgPX4FMUV2Firmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
StableFirmware,
PlaneFirmware),
"http://firmware.diydrones.com/Plane/stable/PX4/ArduPlane-v2.px4");
rgPX4FMUV2Firmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
StableFirmware,
RoverFirmware),
"http://firmware.diydrones.com/Rover/stable/PX4/APMrover2-v2.px4");
rgPX4FMUV2Firmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
BetaFirmware,
QuadFirmware),
"http://firmware.diydrones.com/Copter/beta/PX4-quad/ArduCopter-v2.px4");
rgPX4FMUV2Firmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
BetaFirmware,
X8Firmware),
"http://firmware.diydrones.com/Copter/beta/PX4-octa-quad/ArduCopter-v2.px4");
rgPX4FMUV2Firmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
BetaFirmware,
HexaFirmware),
"http://firmware.diydrones.com/Copter/beta/PX4-hexa/ArduCopter-v2.px4");
rgPX4FMUV2Firmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
BetaFirmware,
OctoFirmware),
"http://firmware.diydrones.com/Copter/beta/PX4-octa/ArduCopter-v2.px4");
rgPX4FMUV2Firmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
BetaFirmware,
YFirmware),
"http://firmware.diydrones.com/Copter/beta/PX4-tri/ArduCopter-v2.px4");
rgPX4FMUV2Firmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
BetaFirmware,
Y6Firmware),
"http://firmware.diydrones.com/Copter/beta/PX4-y6/ArduCopter-v2.px4");
rgPX4FMUV2Firmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
BetaFirmware,
HeliFirmware),
"http://firmware.diydrones.com/Copter/beta/PX4-heli/ArduCopter-v2.px4");
rgPX4FMUV2Firmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
BetaFirmware,
PlaneFirmware),
"http://firmware.diydrones.com/Plane/beta/PX4/ArduPlane-v2.px4");
rgPX4FMUV2Firmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
BetaFirmware,
RoverFirmware),
"http://firmware.diydrones.com/Rover/beta/PX4/APMrover2-v2.px4");
rgPX4FMUV2Firmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
DeveloperFirmware,
QuadFirmware),
"http://firmware.diydrones.com/Copter/latest/PX4-quad/ArduCopter-v2.px4");
rgPX4FMUV2Firmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
DeveloperFirmware,
X8Firmware),
"http://firmware.diydrones.com/Copter/latest/PX4-octa-quad/ArduCopter-v2.px4");
rgPX4FMUV2Firmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
DeveloperFirmware,
HexaFirmware),
"http://firmware.diydrones.com/Copter/latest/PX4-hexa/ArduCopter-v2.px4");
rgPX4FMUV2Firmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
DeveloperFirmware,
OctoFirmware),
"http://firmware.diydrones.com/Copter/latest/PX4-octa/ArduCopter-v2.px4");
rgPX4FMUV2Firmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
DeveloperFirmware,
YFirmware),
"http://firmware.diydrones.com/Copter/latest/PX4-tri/ArduCopter-v2.px4");
rgPX4FMUV2Firmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
DeveloperFirmware,
Y6Firmware),
"http://firmware.diydrones.com/Copter/latest/PX4-y6/ArduCopter-v2.px4");
rgPX4FMUV2Firmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
DeveloperFirmware,
HeliFirmware),
"http://firmware.diydrones.com/Copter/latest/PX4-heli/ArduCopter-v2.px4");
rgPX4FMUV2Firmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
DeveloperFirmware,
PlaneFirmware),
"http://firmware.diydrones.com/Plane/latest/PX4/ArduPlane-v2.px4");
rgPX4FMUV2Firmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
DeveloperFirmware,
RoverFirmware),
"http://firmware.diydrones.com/Rover/latest/PX4/APMrover2-v2.px4");
//////////////////////////////////// PX4MU aerocore firmwares //////////////////////////////////////////////////
static QHash<FirmwareIdentifier, QString> rgAeroCoreFirmware;
rgAeroCoreFirmware.insert(FirmwareIdentifier(AutoPilotStackPX4,
StableFirmware,
DefaultVehicleFirmware),
"http://gumstix-aerocore.s3.amazonaws.com/PX4/stable/aerocore_default.px4");
rgAeroCoreFirmware.insert(FirmwareIdentifier(AutoPilotStackPX4,
BetaFirmware,
DefaultVehicleFirmware),
"http://gumstix-aerocore.s3.amazonaws.com/PX4/beta/aerocore_default.px4");
rgAeroCoreFirmware.insert(FirmwareIdentifier(AutoPilotStackPX4,
DeveloperFirmware,
DefaultVehicleFirmware),
"http://gumstix-aerocore.s3.amazonaws.com/PX4/master/aerocore_default.px4");
rgAeroCoreFirmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
StableFirmware,
QuadFirmware),
"http://gumstix-aerocore.s3.amazonaws.com/APM/Copter/stable/PX4-quad/ArduCopter-v2.px4");
rgAeroCoreFirmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
StableFirmware,
X8Firmware),
"http://gumstix-aerocore.s3.amazonaws.com/Copter/stable/PX4-octa-quad/ArduCopter-v2.px4");
rgAeroCoreFirmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
StableFirmware,
HexaFirmware),
"http://gumstix-aerocore.s3.amazonaws.com/Copter/stable/PX4-hexa/ArduCopter-v2.px4");
rgAeroCoreFirmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
StableFirmware,
OctoFirmware),
"http://gumstix-aerocore.s3.amazonaws.com/Copter/stable/PX4-octa/ArduCopter-v2.px4");
rgAeroCoreFirmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
StableFirmware,
YFirmware),
"http://gumstix-aerocore.s3.amazonaws.com/Copter/stable/PX4-tri/ArduCopter-v2.px4");
rgAeroCoreFirmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
StableFirmware,
Y6Firmware),
"http://gumstix-aerocore.s3.amazonaws.com/Copter/stable/PX4-y6/ArduCopter-v2.px4");
rgAeroCoreFirmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
StableFirmware,
HeliFirmware),
"http://gumstix-aerocore.s3.amazonaws.com/Copter/stable/PX4-heli/ArduCopter-v2.px4");
rgAeroCoreFirmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
StableFirmware,
PlaneFirmware),
"http://gumstix-aerocore.s3.amazonaws.com/Plane/stable/PX4/ArduPlane-v2.px4");
rgAeroCoreFirmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
StableFirmware,
RoverFirmware),
"http://gumstix-aerocore.s3.amazonaws.com/Rover/stable/PX4/APMrover2-v2.px4");
rgAeroCoreFirmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
BetaFirmware,
QuadFirmware),
"http://gumstix-aerocore.s3.amazonaws.com/Copter/beta/PX4-quad/ArduCopter-v2.px4");
rgAeroCoreFirmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
BetaFirmware,
X8Firmware),
"http://gumstix-aerocore.s3.amazonaws.com/Copter/beta/PX4-octa-quad/ArduCopter-v2.px4");
rgAeroCoreFirmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
BetaFirmware,
HexaFirmware),
"http://gumstix-aerocore.s3.amazonaws.com/Copter/beta/PX4-hexa/ArduCopter-v2.px4");
rgAeroCoreFirmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
BetaFirmware,
OctoFirmware),
"http://gumstix-aerocore.s3.amazonaws.com/Copter/beta/PX4-octa/ArduCopter-v2.px4");
rgAeroCoreFirmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
BetaFirmware,
YFirmware),
"http://gumstix-aerocore.s3.amazonaws.com/Copter/beta/PX4-tri/ArduCopter-v2.px4");
rgAeroCoreFirmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
BetaFirmware,
Y6Firmware),
"http://gumstix-aerocore.s3.amazonaws.com/Copter/beta/PX4-y6/ArduCopter-v2.px4");
rgAeroCoreFirmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
BetaFirmware,
HeliFirmware),
"http://gumstix-aerocore.s3.amazonaws.com/Copter/beta/PX4-heli/ArduCopter-v2.px4");
rgAeroCoreFirmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
BetaFirmware,
PlaneFirmware),
"http://gumstix-aerocore.s3.amazonaws.com/Plane/beta/PX4/ArduPlane-v2.px4");
rgAeroCoreFirmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
BetaFirmware,
RoverFirmware),
"http://gumstix-aerocore.s3.amazonaws.com/Rover/beta/PX4/APMrover2-v2.px4");
rgAeroCoreFirmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
DeveloperFirmware,
QuadFirmware),
"http://gumstix-aerocore.s3.amazonaws.com/Copter/latest/PX4-quad/ArduCopter-v2.px4");
rgAeroCoreFirmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
DeveloperFirmware,
X8Firmware),
"http://gumstix-aerocore.s3.amazonaws.com/Copter/latest/PX4-octa-quad/ArduCopter-v2.px4");
rgAeroCoreFirmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
DeveloperFirmware,
HexaFirmware),
"http://gumstix-aerocore.s3.amazonaws.com/Copter/latest/PX4-hexa/ArduCopter-v2.px4");
rgAeroCoreFirmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
DeveloperFirmware,
OctoFirmware),
"http://gumstix-aerocore.s3.amazonaws.com/Copter/latest/PX4-octa/ArduCopter-v2.px4");
rgAeroCoreFirmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
DeveloperFirmware,
YFirmware),
"http://gumstix-aerocore.s3.amazonaws.com/Copter/latest/PX4-tri/ArduCopter-v2.px4");
rgAeroCoreFirmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
DeveloperFirmware,
Y6Firmware),
"http://gumstix-aerocore.s3.amazonaws.com/Copter/latest/PX4-y6/ArduCopter-v2.px4");
rgAeroCoreFirmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
DeveloperFirmware,
HeliFirmware),
"http://gumstix-aerocore.s3.amazonaws.com/Copter/latest/PX4-heli/ArduCopter-v2.px4");
rgAeroCoreFirmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
DeveloperFirmware,
PlaneFirmware),
"http://gumstix-aerocore.s3.amazonaws.com/Plane/latest/PX4/ArduPlane-v2.px4");
rgAeroCoreFirmware.insert(FirmwareIdentifier(AutoPilotStackAPM,
DeveloperFirmware,
RoverFirmware),
"http://gumstix-aerocore.s3.amazonaws.com/Rover/latest/PX4/APMrover2-v2.px4");
//////////////////////////////////// PX4FMUV2 firmwares //////////////////////////////////////////////////
FirmwareToUrlElement_t rgPX4FMV2FirmwareArray[] = {
{ AutoPilotStackPX4, StableFirmware, DefaultVehicleFirmware, "http://px4-travis.s3.amazonaws.com/Firmware/stable/px4fmu-v2_default.px4"},
{ AutoPilotStackPX4, BetaFirmware, DefaultVehicleFirmware, "http://px4-travis.s3.amazonaws.com/Firmware/beta/px4fmu-v2_default.px4"},
{ AutoPilotStackPX4, DeveloperFirmware, DefaultVehicleFirmware, "http://px4-travis.s3.amazonaws.com/Firmware/master/px4fmu-v2_default.px4"},
{ AutoPilotStackAPM, StableFirmware, QuadFirmware, "http://firmware.diydrones.com/Copter/stable/PX4-quad/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, StableFirmware, X8Firmware, "http://firmware.diydrones.com/Copter/stable/PX4-octa-quad/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, StableFirmware, HexaFirmware, "http://firmware.diydrones.com/Copter/stable/PX4-hexa/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, StableFirmware, OctoFirmware, "http://firmware.diydrones.com/Copter/stable/PX4-octa/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, StableFirmware, YFirmware, "http://firmware.diydrones.com/Copter/stable/PX4-tri/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, StableFirmware, Y6Firmware, "http://firmware.diydrones.com/Copter/stable/PX4-y6/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, StableFirmware, HeliFirmware, "http://firmware.diydrones.com/Copter/stable/PX4-heli/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, StableFirmware, PlaneFirmware, "http://firmware.diydrones.com/Plane/stable/PX4/ArduPlane-v2.px4"},
{ AutoPilotStackAPM, StableFirmware, RoverFirmware, "http://firmware.diydrones.com/Rover/stable/PX4/APMrover2-v2.px4"},
{ AutoPilotStackAPM, BetaFirmware, QuadFirmware, "http://firmware.diydrones.com/Copter/beta/PX4-quad/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, BetaFirmware, X8Firmware, "http://firmware.diydrones.com/Copter/beta/PX4-octa-quad/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, BetaFirmware, HexaFirmware, "http://firmware.diydrones.com/Copter/beta/PX4-hexa/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, BetaFirmware, OctoFirmware, "http://firmware.diydrones.com/Copter/beta/PX4-octa/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, BetaFirmware, YFirmware, "http://firmware.diydrones.com/Copter/beta/PX4-tri/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, BetaFirmware, Y6Firmware, "http://firmware.diydrones.com/Copter/beta/PX4-y6/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, BetaFirmware, HeliFirmware, "http://firmware.diydrones.com/Copter/beta/PX4-heli/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, BetaFirmware, PlaneFirmware, "http://firmware.diydrones.com/Plane/beta/PX4/ArduPlane-v2.px4"},
{ AutoPilotStackAPM, BetaFirmware, RoverFirmware, "http://firmware.diydrones.com/Rover/beta/PX4/APMrover2-v2.px4"},
{ AutoPilotStackAPM, DeveloperFirmware, QuadFirmware, "http://firmware.diydrones.com/Copter/latest/PX4-quad/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, DeveloperFirmware, X8Firmware, "http://firmware.diydrones.com/Copter/latest/PX4-octa-quad/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, DeveloperFirmware, HexaFirmware, "http://firmware.diydrones.com/Copter/latest/PX4-hexa/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, DeveloperFirmware, OctoFirmware, "http://firmware.diydrones.com/Copter/latest/PX4-octa/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, DeveloperFirmware, YFirmware, "http://firmware.diydrones.com/Copter/latest/PX4-tri/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, DeveloperFirmware, Y6Firmware, "http://firmware.diydrones.com/Copter/latest/PX4-y6/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, DeveloperFirmware, HeliFirmware, "http://firmware.diydrones.com/Copter/latest/PX4-heli/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, DeveloperFirmware, PlaneFirmware, "http://firmware.diydrones.com/Plane/latest/PX4/ArduPlane-v2.px4"},
{ AutoPilotStackAPM, DeveloperFirmware, RoverFirmware, "http://firmware.diydrones.com/Rover/latest/PX4/APMrover2-v2.px4"}
};
//////////////////////////////////// PX4FMU aerocore firmwares //////////////////////////////////////////////////
FirmwareToUrlElement_t rgAeroCoreFirmwareArray[] = {
{ AutoPilotStackPX4, StableFirmware, DefaultVehicleFirmware, "http://gumstix-aerocore.s3.amazonaws.com/PX4/stable/aerocore_default.px4"},
{ AutoPilotStackPX4, BetaFirmware, DefaultVehicleFirmware, "http://gumstix-aerocore.s3.amazonaws.com/PX4/beta/aerocore_default.px4"},
{ AutoPilotStackPX4, DeveloperFirmware, DefaultVehicleFirmware, "http://gumstix-aerocore.s3.amazonaws.com/PX4/master/aerocore_default.px4"},
{ AutoPilotStackAPM, StableFirmware, QuadFirmware, "http://gumstix-aerocore.s3.amazonaws.com/APM/Copter/stable/PX4-quad/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, StableFirmware, X8Firmware, "http://gumstix-aerocore.s3.amazonaws.com/Copter/stable/PX4-octa-quad/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, StableFirmware, HexaFirmware, "http://gumstix-aerocore.s3.amazonaws.com/Copter/stable/PX4-hexa/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, StableFirmware, OctoFirmware, "http://gumstix-aerocore.s3.amazonaws.com/Copter/stable/PX4-octa/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, StableFirmware, YFirmware, "http://gumstix-aerocore.s3.amazonaws.com/Copter/stable/PX4-tri/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, StableFirmware, Y6Firmware, "http://gumstix-aerocore.s3.amazonaws.com/Copter/stable/PX4-y6/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, StableFirmware, HeliFirmware, "http://gumstix-aerocore.s3.amazonaws.com/Copter/stable/PX4-heli/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, StableFirmware, PlaneFirmware, "http://gumstix-aerocore.s3.amazonaws.com/Plane/stable/PX4/ArduPlane-v2.px4"},
{ AutoPilotStackAPM, StableFirmware, RoverFirmware, "http://gumstix-aerocore.s3.amazonaws.com/Rover/stable/PX4/APMrover2-v2.px4"},
{ AutoPilotStackAPM, BetaFirmware, QuadFirmware, "http://gumstix-aerocore.s3.amazonaws.com/Copter/beta/PX4-quad/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, BetaFirmware, X8Firmware, "http://gumstix-aerocore.s3.amazonaws.com/Copter/beta/PX4-octa-quad/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, BetaFirmware, HexaFirmware, "http://gumstix-aerocore.s3.amazonaws.com/Copter/beta/PX4-hexa/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, BetaFirmware, OctoFirmware, "http://gumstix-aerocore.s3.amazonaws.com/Copter/beta/PX4-octa/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, BetaFirmware, YFirmware, "http://gumstix-aerocore.s3.amazonaws.com/Copter/beta/PX4-tri/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, BetaFirmware, Y6Firmware, "http://gumstix-aerocore.s3.amazonaws.com/Copter/beta/PX4-y6/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, BetaFirmware, HeliFirmware, "http://gumstix-aerocore.s3.amazonaws.com/Copter/beta/PX4-heli/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, BetaFirmware, PlaneFirmware, "http://gumstix-aerocore.s3.amazonaws.com/Plane/beta/PX4/ArduPlane-v2.px4"},
{ AutoPilotStackAPM, BetaFirmware, RoverFirmware, "http://gumstix-aerocore.s3.amazonaws.com/Rover/beta/PX4/APMrover2-v2.px4"},
{ AutoPilotStackAPM, DeveloperFirmware, QuadFirmware, "http://gumstix-aerocore.s3.amazonaws.com/Copter/latest/PX4-quad/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, DeveloperFirmware, X8Firmware, "http://gumstix-aerocore.s3.amazonaws.com/Copter/latest/PX4-octa-quad/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, DeveloperFirmware, HexaFirmware, "http://gumstix-aerocore.s3.amazonaws.com/Copter/latest/PX4-hexa/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, DeveloperFirmware, OctoFirmware, "http://gumstix-aerocore.s3.amazonaws.com/Copter/latest/PX4-octa/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, DeveloperFirmware, YFirmware, "http://gumstix-aerocore.s3.amazonaws.com/Copter/latest/PX4-tri/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, DeveloperFirmware, Y6Firmware, "http://gumstix-aerocore.s3.amazonaws.com/Copter/latest/PX4-y6/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, DeveloperFirmware, HeliFirmware, "http://gumstix-aerocore.s3.amazonaws.com/Copter/latest/PX4-heli/ArduCopter-v2.px4"},
{ AutoPilotStackAPM, DeveloperFirmware, PlaneFirmware, "http://gumstix-aerocore.s3.amazonaws.com/Plane/latest/PX4/ArduPlane-v2.px4"},
{ AutoPilotStackAPM, DeveloperFirmware, RoverFirmware, "http://gumstix-aerocore.s3.amazonaws.com/Rover/latest/PX4/APMrover2-v2.px4"}
};
/////////////////////////////// FMUV1 firmwares ///////////////////////////////////////////
FirmwareToUrlElement_t rgPX4FMUV1FirmwareArray[] = {
{ AutoPilotStackPX4, StableFirmware, DefaultVehicleFirmware, "http://px4-travis.s3.amazonaws.com/Firmware/latest/px4fmu-v1_default.px4"},
{ AutoPilotStackPX4, BetaFirmware, DefaultVehicleFirmware, "http://px4-travis.s3.amazonaws.com/Firmware/beta/px4fmu-v1_default.px4"},
{ AutoPilotStackPX4, DeveloperFirmware, DefaultVehicleFirmware, "http://px4-travis.s3.amazonaws.com/Firmware/master/px4fmu-v1_default.px4"},
};
static QHash<FirmwareIdentifier, QString> rgPX4FMUV1Firmware;
rgPX4FMUV1Firmware.insert(FirmwareIdentifier(AutoPilotStackPX4,
StableFirmware,
DefaultVehicleFirmware),
"http://px4-travis.s3.amazonaws.com/Firmware/latest/px4fmu-v1_default.px4");
/////////////////////////////// px4flow firmwares ///////////////////////////////////////
FirmwareToUrlElement_t rgPX4FLowFirmwareArray[] = {
{ PX4Flow, StableFirmware, DefaultVehicleFirmware, "http://px4-travis.s3.amazonaws.com/Flow/master/px4flow.px4" },
};
/////////////////////////////// 3dr radio firmwares ///////////////////////////////////////
FirmwareToUrlElement_t rg3DRRadioFirmwareArray[] = {
{ PX4Flow, StableFirmware, DefaultVehicleFirmware, "http://firmware.diydrones.com/SiK/latest/radio~hm_trp.ihx"}
};
// populate hashes now
int size = sizeof(rgPX4FMV2FirmwareArray)/sizeof(rgPX4FMV2FirmwareArray[0]);
for (int i = 0; i < size; i++) {
const FirmwareToUrlElement_t& element = rgPX4FMV2FirmwareArray[i];
_rgPX4FMUV2Firmware.insert(FirmwareIdentifier(element.stackType, element.firmwareType, element.vehicleType), element.url);
}
rgPX4FMUV1Firmware.insert(FirmwareIdentifier(AutoPilotStackPX4,
BetaFirmware,
DefaultVehicleFirmware),
"http://px4-travis.s3.amazonaws.com/Firmware/beta/px4fmu-v1_default.px4");
size = sizeof(rgAeroCoreFirmwareArray)/sizeof(rgAeroCoreFirmwareArray[0]);
for (int i = 0; i < size; i++) {
const FirmwareToUrlElement_t& element = rgAeroCoreFirmwareArray[i];
_rgAeroCoreFirmware.insert(FirmwareIdentifier(element.stackType, element.firmwareType, element.vehicleType), element.url);
}
rgPX4FMUV1Firmware.insert(FirmwareIdentifier(AutoPilotStackPX4,
DeveloperFirmware,
DefaultVehicleFirmware),
"http://px4-travis.s3.amazonaws.com/Firmware/master/px4fmu-v1_default.px4");
size = sizeof(rgPX4FMUV1FirmwareArray)/sizeof(rgPX4FMUV1FirmwareArray[0]);
for (int i = 0; i < size; i++) {
const FirmwareToUrlElement_t& element = rgPX4FMUV1FirmwareArray[i];
_rgPX4FMUV1Firmware.insert(FirmwareIdentifier(element.stackType, element.firmwareType, element.vehicleType), element.url);
}
/////////////////////////////// px4flow firmwares ///////////////////////////////////////
size = sizeof(rgPX4FLowFirmwareArray)/sizeof(rgPX4FLowFirmwareArray[0]);
for (int i = 0; i < size; i++) {
const FirmwareToUrlElement_t& element = rgPX4FLowFirmwareArray[i];
_rgPX4FLowFirmware.insert(FirmwareIdentifier(element.stackType, element.firmwareType, element.vehicleType), element.url);
}
static QHash<FirmwareIdentifier, QString> rgPX4FLowFirmware;
rgPX4FLowFirmware.insert(FirmwareIdentifier(PX4Flow,
StableFirmware,
DefaultVehicleFirmware),
"http://px4-travis.s3.amazonaws.com/Flow/master/px4flow.px4");
size = sizeof(rg3DRRadioFirmwareArray)/sizeof(rg3DRRadioFirmwareArray[0]);
for (int i = 0; i < size; i++) {
const FirmwareToUrlElement_t& element = rg3DRRadioFirmwareArray[i];
_rg3DRRadioFirmware.insert(FirmwareIdentifier(element.stackType, element.firmwareType, element.vehicleType), element.url);
}
}
/////////////////////////////// 3dr radio firmwares ///////////////////////////////////////
/// @brief Called when the findBootloader process is unable to sync to the bootloader. Moves the state
/// machine to the appropriate error state.
void FirmwareUpgradeController::_bootloaderSyncFailed(void)
{
_errorCancel("Unable to sync with bootloader.");
}
static QHash<FirmwareIdentifier, QString> rg3DRRadioFirmware;
rg3DRRadioFirmware.insert(FirmwareIdentifier(PX4Flow,
StableFirmware,
DefaultVehicleFirmware),
"http://firmware.diydrones.com/SiK/latest/radio~hm_trp.ihx");
/// @brief Prompts the user to select a firmware file if needed and moves the state machine to the next state.
void FirmwareUpgradeController::_getFirmwareFile(FirmwareIdentifier firmwareIDTrinity)
{
// make sure the firmware hashes are populated
_initFirmwareHash();
// Select the firmware set based on board type
@ -518,23 +319,23 @@ void FirmwareUpgradeController::_getFirmwareFile(FirmwareIdentifier firmwareIDTr @@ -518,23 +319,23 @@ void FirmwareUpgradeController::_getFirmwareFile(FirmwareIdentifier firmwareIDTr
switch (_bootloaderBoardID) {
case Bootloader::boardIDPX4FMUV1:
prgFirmware = rgPX4FMUV1Firmware;
prgFirmware = _rgPX4FMUV1Firmware;
break;
case Bootloader::boardIDPX4Flow:
prgFirmware = rgPX4FLowFirmware;
prgFirmware = _rgPX4FLowFirmware;
break;
case Bootloader::boardIDPX4FMUV2:
prgFirmware = rgPX4FMUV2Firmware;
prgFirmware = _rgPX4FMUV2Firmware;
break;
case Bootloader::boardIDAeroCore:
prgFirmware = rgAeroCoreFirmware;
prgFirmware = _rgAeroCoreFirmware;
break;
case Bootloader::boardID3DRRadio:
prgFirmware = rg3DRRadioFirmware;
prgFirmware = _rg3DRRadioFirmware;
break;
default:

8
src/VehicleSetup/FirmwareUpgradeController.h

@ -174,6 +174,7 @@ private slots: @@ -174,6 +174,7 @@ private slots:
private:
void _getFirmwareFile(FirmwareIdentifier firmwareIDTrinity);
void _initFirmwareHash();
void _downloadFirmware(void);
void _appendStatusLog(const QString& text, bool critical = false);
void _errorCancel(const QString& msg);
@ -181,6 +182,13 @@ private: @@ -181,6 +182,13 @@ private:
QString _portName;
QString _portDescription;
// firmware hashes
QHash<FirmwareIdentifier, QString> _rgPX4FMUV2Firmware;
QHash<FirmwareIdentifier, QString> _rgAeroCoreFirmware;
QHash<FirmwareIdentifier, QString> _rgPX4FMUV1Firmware;
QHash<FirmwareIdentifier, QString> _rgPX4FLowFirmware;
QHash<FirmwareIdentifier, QString> _rg3DRRadioFirmware;
/// Information which comes back from the bootloader
bool _bootloaderFound; ///< true: we have received the foundBootloader signals
uint32_t _bootloaderVersion; ///< Bootloader version

Loading…
Cancel
Save