From 02011a1e83236952b8c5ec60dab5eb0148f3d7be Mon Sep 17 00:00:00 2001 From: Mark Whitehorn Date: Fri, 6 Oct 2017 22:05:09 -0600 Subject: [PATCH] add FMUV3 to compatibility check --- src/VehicleSetup/FirmwareImage.cc | 21 +++++++++++++++++++-- src/VehicleSetup/FirmwareImage.h | 15 +-------------- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/src/VehicleSetup/FirmwareImage.cc b/src/VehicleSetup/FirmwareImage.cc index 93042815c..0bc3c9288 100644 --- a/src/VehicleSetup/FirmwareImage.cc +++ b/src/VehicleSetup/FirmwareImage.cc @@ -194,6 +194,24 @@ bool FirmwareImage::_ihxLoad(const QString& ihxFilename) return true; } +bool FirmwareImage::isCompatible(uint32_t boardId, uint32_t firmwareId) { + bool result = false; + if (boardId == firmwareId ) { + result = true; + } + switch(boardId) { + case Bootloader::boardIDAUAVX2_1: // AUAVX2.1 is compatible with px4-v2/v3 + if (firmwareId == 9) result = true; + break; + case Bootloader::boardIDPX4FMUV3: + if (firmwareId == 9) result = true; + break; + default: + break; + } + return result; +} + bool FirmwareImage::_px4Load(const QString& imageFilename) { _imageSize = 0; @@ -237,8 +255,7 @@ bool FirmwareImage::_px4Load(const QString& imageFilename) } uint32_t firmwareBoardId = (uint32_t)px4Json.value(_jsonBoardIdKey).toInt(); - uint32_t actualBoardId = _boardId == Bootloader::boardIDPX4FMUV3 ? Bootloader::boardIDPX4FMUV2 : _boardId;; - if (!isCompatible(actualBoardId, firmwareBoardId)) { + if (!isCompatible(_boardId, firmwareBoardId)) { emit statusMessage(QString("Downloaded firmware board id does not match hardware board id: %1 != %2").arg(firmwareBoardId).arg(_boardId)); return false; } diff --git a/src/VehicleSetup/FirmwareImage.h b/src/VehicleSetup/FirmwareImage.h index 757bf6a7a..5a9935dda 100644 --- a/src/VehicleSetup/FirmwareImage.h +++ b/src/VehicleSetup/FirmwareImage.h @@ -57,20 +57,7 @@ public: 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) { - bool result = false; - if (boardId == firmwareId ) { - result = true; - } - switch(boardId) { - case 33: // AUAVX2.1 is compatible with px4-v2/v3 - if (firmwareId == 9) result = true; - break; - default: - break; - } - return result; - } + bool isCompatible(uint32_t boardId, uint32_t firmwareId); signals: void errorMessage(const QString& errorString); -- 2.22.0