Browse Source

Verify board is unplugged

QGC4.4
Don Gagne 10 years ago
parent
commit
5b117db455
  1. 17
      src/ui/px4_configuration/PX4FirmwareUpgrade.cc
  2. 2
      src/ui/px4_configuration/PX4FirmwareUpgrade.h
  3. 9
      src/ui/px4_configuration/PX4FirmwareUpgradeThread.cc
  4. 8
      src/ui/px4_configuration/PX4FirmwareUpgradeThread.h

17
src/ui/px4_configuration/PX4FirmwareUpgrade.cc

@ -35,6 +35,7 @@ @@ -35,6 +35,7 @@
#include <QDir>
#include <QFileDialog>
#include <QDebug>
#include <QMessageBox>
/// @Brief Constructs a new PX4FirmwareUpgrade Widget. This widget is used within the PX4VehicleConfig set of screens.
PX4FirmwareUpgrade::PX4FirmwareUpgrade(QWidget *parent) :
@ -287,12 +288,18 @@ void PX4FirmwareUpgrade::_findBoard(void) @@ -287,12 +288,18 @@ void PX4FirmwareUpgrade::_findBoard(void)
}
/// @brief Called when board has been found by the findBoard process
void PX4FirmwareUpgrade::_foundBoard(const QString portName, QString portDescription)
void PX4FirmwareUpgrade::_foundBoard(bool firstTry, const QString portName, QString portDescription)
{
_portName = portName;
_portDescription = portDescription;
_setupState(upgradeStateBootloaderSearch);
_findBootloader();
if (firstTry) {
// Board is still plugged
QMessageBox::critical(this, tr("Firmware Upgrade"), tr("You must unplug you board before beginning the Firmware Upgrade process."));
_cancel();
} else {
_portName = portName;
_portDescription = portDescription;
_setupState(upgradeStateBootloaderSearch);
_findBootloader();
}
}
/// @brief Begins the findBootloader process to connect to the bootloader

2
src/ui/px4_configuration/PX4FirmwareUpgrade.h

@ -61,7 +61,7 @@ private slots: @@ -61,7 +61,7 @@ private slots:
void _downloadProgress(qint64 curr, qint64 total);
void _downloadFinished(void);
void _downloadError(QNetworkReply::NetworkError code);
void _foundBoard(const QString portname, QString portDescription);
void _foundBoard(bool firstTry, const QString portname, QString portDescription);
void _foundBootloader(int bootloaderVersion, int boardID, int flashSize);
void _error(const int command, const QString errorString);
void _bootloaderSyncFailed(void);

9
src/ui/px4_configuration/PX4FirmwareUpgradeThread.cc

@ -75,6 +75,7 @@ void PX4FirmwareUpgradeThreadWorker::init(void) @@ -75,6 +75,7 @@ void PX4FirmwareUpgradeThreadWorker::init(void)
void PX4FirmwareUpgradeThreadWorker::findBoard(int msecTimeout)
{
_findBoardFirstAttempt = true;
connect(_timerRetry, &QTimer::timeout, this, &PX4FirmwareUpgradeThreadWorker::_findBoardOnce);
_timerTimeout->start(msecTimeout);
_elapsed.start();
@ -107,11 +108,13 @@ void PX4FirmwareUpgradeThreadWorker::_findBoardOnce(void) @@ -107,11 +108,13 @@ void PX4FirmwareUpgradeThreadWorker::_findBoardOnce(void)
#endif
_closeFind();
emit foundBoard(portName, portDescription);
emit foundBoard(_findBoardFirstAttempt, portName, portDescription);
return;
}
}
_findBoardFirstAttempt = false;
emit updateProgress(_elapsed.elapsed(), _timerTimeout->interval());
_timerRetry->start();
}
@ -285,9 +288,9 @@ void PX4FirmwareUpgradeThreadController::findBootloader(const QString& portName, @@ -285,9 +288,9 @@ void PX4FirmwareUpgradeThreadController::findBootloader(const QString& portName,
emit _findBootloaderOnThread(portName, msecTimeout);
}
void PX4FirmwareUpgradeThreadController::_foundBoard(const QString portName, QString portDescription)
void PX4FirmwareUpgradeThreadController::_foundBoard(bool firstTry, const QString portName, QString portDescription)
{
emit foundBoard(portName, portDescription);
emit foundBoard(firstTry, portName, portDescription);
}
void PX4FirmwareUpgradeThreadController::_foundBootloader(int bootloaderVersion, int boardID, int flashSize)

8
src/ui/px4_configuration/PX4FirmwareUpgradeThread.h

@ -69,7 +69,7 @@ public slots: @@ -69,7 +69,7 @@ public slots:
void erase(void);
signals:
void foundBoard(const QString portname, QString portDescription);
void foundBoard(bool firstTry, const QString portname, QString portDescription);
void foundBootloader(int bootloaderVersion, int boardID, int flashSize);
void bootloaderSyncFailed(void);
void error(const int command, const QString errorString);
@ -91,6 +91,7 @@ private: @@ -91,6 +91,7 @@ private:
QTime _elapsed;
QString _portName;
static const int _retryTimeout = 1000;
bool _findBoardFirstAttempt;
};
/// @brief Provides methods to interact with the bootloader. The commands themselves are signalled
@ -129,9 +130,10 @@ public: @@ -129,9 +130,10 @@ public:
signals:
/// @brief Emitted by the findBoard process when it finds the board.
/// @param firstTry true: board found on first attempt
/// @param portName Port that board is on
/// @param portDescription User friendly port description
void foundBoard(const QString portname, QString portDescription);
void foundBoard(bool firstTry, const QString portname, QString portDescription);
/// @brief Emitted by the findBootloader process when has a connection to the bootloader
void foundBootloader(int bootloaderVersion, int boardID, int flashSize);
@ -164,7 +166,7 @@ signals: @@ -164,7 +166,7 @@ signals:
void _cancelFindOnThread(void);
private slots:
void _foundBoard(const QString portname, QString portDescription);
void _foundBoard(bool firstTry, const QString portname, QString portDescription);
void _foundBootloader(int bootloaderVersion, int boardID, int flashSize);
void _bootloaderSyncFailed(void);
void _error(const int errorCommand, const QString errorString) { emit error(errorCommand, errorString); }

Loading…
Cancel
Save