diff --git a/src/VehicleSetup/FirmwareUpgradeController.cc b/src/VehicleSetup/FirmwareUpgradeController.cc index 3d195f7e555e1b57e79b24d895b322617aae99da..a8a27d8031900c5828faacdedc5a6b89f3154a43 100644 --- a/src/VehicleSetup/FirmwareUpgradeController.cc +++ b/src/VehicleSetup/FirmwareUpgradeController.cc @@ -416,8 +416,8 @@ QHash* FirmwareUpgradeCo case QGCSerialPortInfo::BoardTypeSikRadio: boardId = Bootloader::boardID3DRRadio; break; - case QGCSerialPortInfo::BoardTypeUnknown: - qWarning() << "Internal error"; + default: + qWarning() << "Internal error: invalid board type for flashing" << boardType; boardId = Bootloader::boardIDPX4FMUV2; break; } diff --git a/src/VehicleSetup/PX4FirmwareUpgradeThread.cc b/src/VehicleSetup/PX4FirmwareUpgradeThread.cc index 6b7b783009ae6f1fe9f3807276d73047f3123a69..6bf362866f5b0dc31af597e920878a4feb92fb57 100644 --- a/src/VehicleSetup/PX4FirmwareUpgradeThread.cc +++ b/src/VehicleSetup/PX4FirmwareUpgradeThread.cc @@ -141,7 +141,7 @@ bool PX4FirmwareUpgradeThreadWorker::_findBoardFromPorts(QGCSerialPortInfo& port qCDebug(FirmwareUpgradeVerboseLog) << "\tproduct ID:" << info.productIdentifier(); boardType = info.boardType(); - if (boardType != QGCSerialPortInfo::BoardTypeUnknown) { + if (info.canFlash()) { portInfo = info; return true; } diff --git a/src/comm/QGCSerialPortInfo.cc b/src/comm/QGCSerialPortInfo.cc index ee5908e7e503031a9454043ac5184eddd19126d9..0b6ef91930f13dc19d582a797acf25c596982a2a 100644 --- a/src/comm/QGCSerialPortInfo.cc +++ b/src/comm/QGCSerialPortInfo.cc @@ -39,6 +39,7 @@ static const struct VIDPIDMapInfo_s { { QGCSerialPortInfo::px4VendorId, QGCSerialPortInfo::AeroCoreProductId, QGCSerialPortInfo::BoardTypeAeroCore, "Found AeroCore" }, { QGCSerialPortInfo::threeDRRadioVendorId, QGCSerialPortInfo::threeDRRadioProductId, QGCSerialPortInfo::BoardTypeSikRadio, "Found SiK Radio" }, { QGCSerialPortInfo::siLabsRadioVendorId, QGCSerialPortInfo::siLabsRadioProductId, QGCSerialPortInfo::BoardTypeSikRadio, "Found SiK Radio" }, + { QGCSerialPortInfo::ubloxRTKVendorId, QGCSerialPortInfo::ubloxRTKProductId, QGCSerialPortInfo::BoardTypeRTKGPS, "Found RTK GPS" }, }; QGCSerialPortInfo::QGCSerialPortInfo(void) : @@ -128,3 +129,10 @@ bool QGCSerialPortInfo::isBootloader(void) const // FIXME: Check SerialLink bootloade detect code which is different return boardTypePixhawk() && description().contains("BL"); } + +bool QGCSerialPortInfo::canFlash(void) +{ + BoardType_t boardType = this->boardType(); + + return boardType != QGCSerialPortInfo::BoardTypeUnknown && boardType != QGCSerialPortInfo::BoardTypeRTKGPS; +} diff --git a/src/comm/QGCSerialPortInfo.h b/src/comm/QGCSerialPortInfo.h index 10ec2fb2beaa97ac6aa903608df5d9c9c8bd958d..8e95afa59e6d57131bbfdeb23e568909af3184e7 100644 --- a/src/comm/QGCSerialPortInfo.h +++ b/src/comm/QGCSerialPortInfo.h @@ -46,6 +46,7 @@ public: BoardTypePX4Flow, BoardTypeSikRadio, BoardTypeAeroCore, + BoardTypeRTKGPS, BoardTypeUnknown } BoardType_t; @@ -68,6 +69,9 @@ public: static const int siLabsRadioVendorId = 0x10c4; ///< Vendor ID for SILabs Radio static const int siLabsRadioProductId = 0xea60; ///< Product ID for SILabs Radio + static const int ubloxRTKVendorId = 5446; ///< Vendor ID for ublox RTK + static const int ubloxRTKProductId = 424; ///< Product ID for ublox RTK + QGCSerialPortInfo(void); QGCSerialPortInfo(const QSerialPort & port); @@ -76,6 +80,9 @@ public: BoardType_t boardType(void) const; + /// @return true: we can flash this board type + bool canFlash(void); + /// @return true: board is a Pixhawk board bool boardTypePixhawk(void) const;