diff --git a/ground/openpilotgcs/src/plugins/uploader/op_dfu.cpp b/ground/openpilotgcs/src/plugins/uploader/op_dfu.cpp index db2c60782..14ea538ce 100644 --- a/ground/openpilotgcs/src/plugins/uploader/op_dfu.cpp +++ b/ground/openpilotgcs/src/plugins/uploader/op_dfu.cpp @@ -1017,3 +1017,43 @@ int DFUObject::receiveData(void * data,int size) } } } + +#define BOARD_ID_MB 1 +#define BOARD_ID_INS 2 +#define BOARD_ID_PIP 3 +#define BOARD_ID_CC 4 +//#define BOARD_ID_PRO ? + +/** + Gets the type of board connected + */ +OP_DFU::eBoardType DFUObject::GetBoardType(int boardNum) +{ + OP_DFU::eBoardType brdType = eBoardUnkwn; + + // First of all, check what Board type we are talking to + int board = devices[boardNum].ID; + qDebug() << "Board model: " << board; + switch (board >> 8) { + case BOARD_ID_MB: // Mainboard family + brdType = eBoardMainbrd; + break; + case BOARD_ID_INS: // Inertial Nav + brdType = eBoardINS; + break; + case BOARD_ID_PIP: // PIP RF Modem + brdType = eBoardPip; + break; + case BOARD_ID_CC: // CopterControl family + brdType = eBoardCC; + break; +#if 0 // Someday ;-) + case BOARD_ID_PRO: // Pro board + brdType = eBoardPro; + break; +#endif + } + return brdType; +} + + diff --git a/ground/openpilotgcs/src/plugins/uploader/op_dfu.h b/ground/openpilotgcs/src/plugins/uploader/op_dfu.h index 1fc92637c..233e8274f 100644 --- a/ground/openpilotgcs/src/plugins/uploader/op_dfu.h +++ b/ground/openpilotgcs/src/plugins/uploader/op_dfu.h @@ -92,6 +92,16 @@ namespace OP_DFU { }; + enum eBoardType + { + eBoardUnkwn = 0, + eBoardMainbrd = 1, + eBoardINS, + eBoardPip, + eBoardCC, + eBoardPro, + }; + struct device { int ID; @@ -154,6 +164,7 @@ namespace OP_DFU { // Helper functions: QString StatusToString(OP_DFU::Status const & status); static quint32 CRC32WideFast(quint32 Crc, quint32 Size, quint32 *Buffer); + OP_DFU::eBoardType GetBoardType(int boardNum); diff --git a/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.cpp b/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.cpp index 0f3affaa2..35e45f3f1 100755 --- a/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.cpp +++ b/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.cpp @@ -480,7 +480,7 @@ void UploaderGadgetWidget::systemRescue() m_config->rescueButton->setEnabled(true); return; } - if(QMessageBox::question(this,tr("OpenPilot Uploader"),tr("If you want to search for other boards connect power now and press Yes"),QMessageBox::Yes,QMessageBox::No)==QMessageBox::Yes) + if ((eBoardCC != dfu->GetBoardType(0)) && (QMessageBox::question(this,tr("OpenPilot Uploader"),tr("If you want to search for other boards connect power now and press Yes"),QMessageBox::Yes,QMessageBox::No)==QMessageBox::Yes)) { log("\nWaiting..."); QTimer::singleShot(3000, &m_eventloop, SLOT(quit()));