@ -730,52 +730,47 @@ void FirmwareUpgradeController::_buildAPMFirmwareNames(void)
@@ -730,52 +730,47 @@ void FirmwareUpgradeController::_buildAPMFirmwareNames(void)
QString boardDescription = _foundBoardInfo . description ( ) ;
quint16 boardVID = _foundBoardInfo . vendorIdentifier ( ) ;
quint16 boardPID = _foundBoardInfo . productIdentifier ( ) ;
#if 0
// This is left in for debugging manifest problems
boardDescription = " KakuteF7 " ;
boardVID = 1155 ;
boardPID = 22336 ;
# endif
uint32_t rawBoardId = _bootloaderBoardID = = Bootloader : : boardIDPX4FMUV3 ? Bootloader : : boardIDPX4FMUV2 : _bootloaderBoardID ;
qCDebug ( FirmwareUpgradeLog ) < < QStringLiteral ( " _buildAPMFirmwareNames description(%1) vid(%2/0x%3) pid(%4/0x%5) " ) . arg ( boardDescription ) . arg ( boardVID ) . arg ( boardVID , 1 , 16 ) . arg ( boardPID ) . arg ( boardPID , 1 , 16 ) ;
_apmFirmwareNames . clear ( ) ;
_apmFirmwareNamesBestIndex = - 1 ;
_apmFirmwareUrls . clear ( ) ;
QString apmDescriptionSuffix ( " -BL " ) ;
QString boardDescriptionPrefix ;
bool bootloaderMatch = boardDescription . endsWith ( apmDescriptionSuffix ) ;
int currentIndex = 0 ;
for ( const ManifestFirmwareInfo_t & firmwareInfo : _rgManifestFirmwareInfo ) {
bool match = false ;
if ( firmwareInfo . firmwareBuildType = = _selectedFirmwareBuildType & & firmwareInfo . chibios = = chibios & & firmwareInfo . vehicleType = = vehicleType ) {
if ( bootloaderMatch ) {
if ( firmwareInfo . rgBootloaderPortString . contains ( boardDescription ) ) {
qCDebug ( FirmwareUpgradeLog ) < < " Bootloader match: " < < firmwareInfo . friendlyName < < boardDescription < < firmwareInfo . rgBootloaderPortString < < firmwareInfo . url < < firmwareInfo . vehicleType ;
match = true ;
}
if ( firmwareInfo . firmwareBuildType = = _selectedFirmwareBuildType & & firmwareInfo . chibios = = chibios & & firmwareInfo . vehicleType = = vehicleType & & firmwareInfo . boardId = = rawBoardId ) {
if ( firmwareInfo . fmuv2 & & _bootloaderBoardID = = Bootloader : : boardIDPX4FMUV3 ) {
qCDebug ( FirmwareUpgradeLog ) < < " Skipping fmuv2 manifest entry for fmuv3 board: " < < firmwareInfo . friendlyName < < boardDescription < < firmwareInfo . rgBootloaderPortString < < firmwareInfo . url < < firmwareInfo . vehicleType ;
} else {
if ( firmwareInfo . rgVID . contains ( boardVID ) & & firmwareInfo . rgPID . contains ( boardPID ) ) {
qCDebug ( FirmwareUpgradeLog ) < < " VID/PID match: " < < firmwareInfo . friendlyName < < boardVID < < boardPID < < _bootloaderBoardID < < firmwareInfo . url < < firmwareInfo . vehicleType ;
match = true ;
qCDebug ( FirmwareUpgradeLog ) < < " Board id match: " < < firmwareInfo . friendlyName < < boardDescription < < firmwareInfo . rgBootloaderPortString < < firmwareInfo . url < < firmwareInfo . vehicleType ;
match = true ;
if ( bootloaderMatch & & _apmFirmwareNamesBestIndex = = - 1 & & firmwareInfo . rgBootloaderPortString . contains ( boardDescription ) ) {
_apmFirmwareNamesBestIndex = currentIndex ;
qCDebug ( FirmwareUpgradeLog ) < < " Bootloader best match: " < < firmwareInfo . friendlyName < < boardDescription < < firmwareInfo . rgBootloaderPortString < < firmwareInfo . url < < firmwareInfo . vehicleType ;
}
}
}
// Do a final filter on fmuv2/fmuv3
if ( match & & _bootloaderBoardID = = Bootloader : : boardIDPX4FMUV3 ) {
match = ! firmwareInfo . fmuv2 ;
}
if ( match ) {
_apmFirmwareNames . append ( firmwareInfo . friendlyName ) ;
_apmFirmwareUrls . append ( firmwareInfo . url ) ;
currentIndex + + ;
}
}
if ( _apmFirmwareNames . count ( ) > 1 ) {
_apmFirmwareNames . prepend ( tr ( " Choose board type " ) ) ;
_apmFirmwareUrls . prepend ( QString ( ) ) ;
if ( _apmFirmwareNamesBestIndex = = - 1 ) {
_apmFirmwareNamesBestIndex + + ;
if ( _apmFirmwareNames . count ( ) > 1 ) {
_apmFirmwareNames . prepend ( tr ( " Choose board type " ) ) ;
_apmFirmwareUrls . prepend ( QString ( ) ) ;
}
}
emit apmFirmwareNamesChanged ( ) ;