diff --git a/ChangeLog.md b/ChangeLog.md index cdbcf65..c010ff0 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -36,6 +36,8 @@ Note: This file only contains high level features or important fixes. * Major rewrite and bug fix pass through Structure Scan. Previous version had such bad problems that it can no longer be supported. Plans with Structure Scan will need to be recreated. New QGC will not load old Structure Scan plans. ### 3.5.4 - Not yet released +* Update windows drivers +* Add support for FMUK66 flashing/connection * Guard against null geometry coming from gstreamer which can cause crashes * Add .apj file selection support to custom firmware flash diff --git a/deploy/px4driver.msi b/deploy/driver.msi similarity index 90% rename from deploy/px4driver.msi rename to deploy/driver.msi index 8bd3e50..db02c34 100644 Binary files a/deploy/px4driver.msi and b/deploy/driver.msi differ diff --git a/deploy/qgroundcontrol_installer.nsi b/deploy/qgroundcontrol_installer.nsi index e58c820..67e3479 100644 --- a/deploy/qgroundcontrol_installer.nsi +++ b/deploy/qgroundcontrol_installer.nsi @@ -73,7 +73,11 @@ Section doinstall: SetOutPath $INSTDIR File /r /x ${EXENAME}.pdb /x ${EXENAME}.lib /x ${EXENAME}.exp ${DESTDIR}\*.* - File deploy\px4driver.msi + + ; Driver location is http://firmware.ardupilot.org/Tools/MissionPlanner/driver.msi + ; Whenever this driver is updated in the repo QGCCURRENTDRIVERVERSION must be bumped by 1 + File deploy\driver.msi + WriteUninstaller $INSTDIR\${EXENAME}-Uninstall.exe WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayName" "${APPNAME}" WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "UninstallString" "$\"$INSTDIR\${EXENAME}-Uninstall.exe$\"" @@ -82,20 +86,39 @@ doinstall: WriteRegDWORD HKLM "SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\${EXENAME}.exe" "DumpType" 1 WriteRegExpandStr HKLM "SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\${EXENAME}.exe" "DumpFolder" "%LOCALAPPDATA%\QGCCrashDumps" - ; Only attempt to install the PX4 driver if the version isn't present - !define DRIVERKEY "SOFTWARE\MichaelOborne\driver" + ; QGC stores its own driver version key to prevent installation if already up to date + ; This prevents running the driver install a second time which will start up in repair mode which is confusing + !define QGCDRIVERVERSIONKEY "SOFTWARE\QGroundControlUAVDrivers" + !define QGCCURRENTDRIVERVERSION 1 + ; If the drivers are already installed the key "HKCU/SOFTWARE\MichaelOborne\driver\installed" will be present and set to 1 SetRegView 64 + !define DRIVERKEY "SOFTWARE\MichaelOborne\driver" ReadRegDWORD $0 HKCU "${DRIVERKEY}" "installed" - IntCmp $0 1 found_provider notfound notfound - -found_provider: - DetailPrint "USB Drivers already installed" - goto done - -notfound: - DetailPrint "USB Driver not found... installing" - ExecWait '"msiexec" /i "px4driver.msi"' + IntCmp $0 1 driversInstalled driversNotInstalled driversNotInstalled + +driversInstalled: + DetailPrint "UAV Drivers already installed. Checking version..." + + ; Check if the installed drivers are out of date. + ; Latest version is tagged as 1. Missing key also indicates out of date driver install. + ReadRegDWORD $0 HKCU "${QGCDRIVERVERSIONKEY}" "version" + IntCmp $0 ${QGCCURRENTDRIVERVERSION} done driversOutOfDate done + +driversOutOfDate: + DetailPrint "UAV Drivers out of date." + goto installDrivers + +driversNotInstalled: + DetailPrint "UAV Drivers not installed." + ; Delete abandoned possibly out of date version key + DeleteRegKey HKCU "SOFTWARE\QGroundControlUAVDrivers" + +installDrivers: + DetailPrint "Installing UAV Drivers..." + ExecWait '"msiexec" /i "driver.msi"' + ; Set current driver version value + WriteRegDWORD HKCU "${QGCDRIVERVERSIONKEY}" "version" 1 goto done done: @@ -115,6 +138,7 @@ Section "Uninstall" ${Endif} DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\${EXENAME}.exe" + ; NOTE: We specifically do not delete the driver version key since we need it to persist around uninstalls SectionEnd Section "create Start Menu Shortcuts" diff --git a/src/VehicleSetup/FirmwareUpgradeController.cc b/src/VehicleSetup/FirmwareUpgradeController.cc index 0422c16..2cd7ff8 100644 --- a/src/VehicleSetup/FirmwareUpgradeController.cc +++ b/src/VehicleSetup/FirmwareUpgradeController.cc @@ -304,6 +304,13 @@ void FirmwareUpgradeController::_initFirmwareHash() { AutoPilotStackPX4, BetaFirmware, DefaultVehicleFirmware, "http://px4-travis.s3.amazonaws.com/Firmware/beta/omnibus_f4sd_default.px4"}, { AutoPilotStackPX4, DeveloperFirmware, DefaultVehicleFirmware, "http://px4-travis.s3.amazonaws.com/Firmware/master/omnibus_f4sd_default.px4"}, }; + + //////////////////////////////////// FMUK66V3 firmwares ////////////////////////////////////////////////// + FirmwareToUrlElement_t rgFMUK66V3FirmwareArray[] = { + { AutoPilotStackPX4, StableFirmware, DefaultVehicleFirmware, "http://px4-travis.s3.amazonaws.com/Firmware/stable/nxp_fmuk66-v3_default.px4"}, + { AutoPilotStackPX4, BetaFirmware, DefaultVehicleFirmware, "http://px4-travis.s3.amazonaws.com/Firmware/beta/nxp_fmuk66-v3_default.px4"}, + { AutoPilotStackPX4, DeveloperFirmware, DefaultVehicleFirmware, "http://px4-travis.s3.amazonaws.com/Firmware/master/nxp_fmuk66-v3_default.px4"}, + }; //////////////////////////////////// Kakute F7 firmwares ////////////////////////////////////////////////// FirmwareToUrlElement_t rgKakuteF7FirmwareArray[] = {