mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2025-02-27 16:54:15 +01:00
[OP-1105] improved handling of missing firmware description in GCS
This commit is contained in:
parent
5a7faa4d8b
commit
cceb9a363c
@ -168,8 +168,9 @@ void ConfigPipXtremeWidget::updateStatus(UAVObject *object)
|
||||
}
|
||||
|
||||
// Update the Description field
|
||||
// TODO use UAVObjectUtilManager::descriptionToStructure()
|
||||
UAVObjectField *descField = object->getField("Description");
|
||||
if (descField) {
|
||||
if (descField && descField->getValue(0) != QChar(255)) {
|
||||
/*
|
||||
* This looks like a binary with a description at the end:
|
||||
* 4 bytes: header: "OpFw".
|
||||
@ -196,6 +197,7 @@ void ConfigPipXtremeWidget::updateStatus(UAVObject *object)
|
||||
m_oplink->FirmwareVersion->setText(descstr + " " + date);
|
||||
} else {
|
||||
qDebug() << "PipXtremeGadgetWidget: Count not read Description field.";
|
||||
m_oplink->FirmwareVersion->setText(tr("Unknown"));
|
||||
}
|
||||
|
||||
// Update the serial number field
|
||||
|
@ -299,6 +299,13 @@ QByteArray UAVObjectUtilManager::getBoardDescription()
|
||||
return ret;
|
||||
}
|
||||
|
||||
QString UAVObjectUtilManager::getBoardDescriptionString()
|
||||
{
|
||||
QByteArray arr = getBoardDescription();
|
||||
|
||||
int index = arr.indexOf(255);
|
||||
return QString((index == -1) ? arr : arr.left(index));
|
||||
}
|
||||
|
||||
// ******************************
|
||||
// HomeLocation
|
||||
@ -472,5 +479,3 @@ bool UAVObjectUtilManager::descriptionToStructure(QByteArray desc, deviceDescrip
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// ******************************
|
||||
|
@ -61,6 +61,7 @@ public:
|
||||
QByteArray getBoardCPUSerial();
|
||||
quint32 getFirmwareCRC();
|
||||
QByteArray getBoardDescription();
|
||||
QString getBoardDescriptionString();
|
||||
deviceDescriptorStruct getBoardDescriptionStruct();
|
||||
static bool descriptionToStructure(QByteArray desc, deviceDescriptorStruct & struc);
|
||||
UAVObjectManager *getObjectManager();
|
||||
|
@ -41,8 +41,7 @@ DeviceWidget::DeviceWidget(QWidget *parent) :
|
||||
connect(myDevice->updateButton, SIGNAL(clicked()), this, SLOT(uploadFirmware()));
|
||||
connect(myDevice->pbLoad, SIGNAL(clicked()), this, SLOT(loadFirmware()));
|
||||
connect(myDevice->confirmCheckBox, SIGNAL(stateChanged(int)), this, SLOT(confirmCB(int)));
|
||||
QPixmap pix = QPixmap(QString(":uploader/images/view-refresh.svg"));
|
||||
myDevice->statusIcon->setPixmap(pix);
|
||||
myDevice->statusIcon->setPixmap(QPixmap(":uploader/images/view-refresh.svg"));
|
||||
|
||||
myDevice->lblCertified->setText("");
|
||||
}
|
||||
@ -79,12 +78,12 @@ void DeviceWidget::populate()
|
||||
{
|
||||
int id = m_dfu->devices[deviceID].ID;
|
||||
|
||||
myDevice->lbldevID->setText(QString("Device ID: ") + QString::number(id, 16));
|
||||
myDevice->lbldevID->setText(tr("Device ID: ") + QString::number(id, 16));
|
||||
// DeviceID tells us what sort of HW we have detected:
|
||||
// display a nice icon:
|
||||
myDevice->gVDevice->scene()->clear();
|
||||
myDevice->lblDevName->setText(deviceDescriptorStruct::idToBoardName(id));
|
||||
myDevice->lblHWRev->setText(QString(tr("HW Revision: ")) + QString::number(id & 0x00FF, 16));
|
||||
myDevice->lblHWRev->setText(tr("HW Revision: ") + QString::number(id & 0x00FF, 16));
|
||||
|
||||
switch (id) {
|
||||
case 0x0101:
|
||||
@ -115,25 +114,23 @@ void DeviceWidget::populate()
|
||||
bool r = m_dfu->devices[deviceID].Readable;
|
||||
bool w = m_dfu->devices[deviceID].Writable;
|
||||
|
||||
myDevice->lblAccess->setText(QString("Flash access: ") + QString(r ? "R" : "-") + QString(w ? "W" : "-"));
|
||||
myDevice->lblMaxCode->setText(QString("Max code size: ") + QString::number(m_dfu->devices[deviceID].SizeOfCode));
|
||||
myDevice->lblAccess->setText(tr("Flash access: ") + QString(r ? "R" : "-") + QString(w ? "W" : "-"));
|
||||
myDevice->lblMaxCode->setText(tr("Max code size: ") + QString::number(m_dfu->devices[deviceID].SizeOfCode));
|
||||
myDevice->lblCRC->setText(QString::number(m_dfu->devices[deviceID].FW_CRC));
|
||||
myDevice->lblBLVer->setText(QString("BL version: ") + QString::number(m_dfu->devices[deviceID].BL_Version));
|
||||
myDevice->lblBLVer->setText(tr("BL version: ") + QString::number(m_dfu->devices[deviceID].BL_Version));
|
||||
int size = ((OP_DFU::device)m_dfu->devices[deviceID]).SizeOfDesc;
|
||||
m_dfu->enterDFU(deviceID);
|
||||
QByteArray desc = m_dfu->DownloadDescriptionAsBA(size);
|
||||
|
||||
if (!populateBoardStructuredDescription(desc)) {
|
||||
// TODO
|
||||
// desc was not a structured description
|
||||
QString str = m_dfu->DownloadDescription(size);
|
||||
myDevice->lblDescription->setText(QString("Firmware custom description: ") + str.left(str.indexOf(QChar(255))));
|
||||
QPixmap pix = QPixmap(QString(":uploader/images/warning.svg"));
|
||||
myDevice->lblCertified->setPixmap(pix);
|
||||
myDevice->lblDescription->setText((!str.isEmpty()) ? str : tr("Unknown"));
|
||||
myDevice->lblCertified->setPixmap(QPixmap(":uploader/images/warning.svg"));
|
||||
myDevice->lblCertified->setToolTip(tr("Custom Firmware Build"));
|
||||
myDevice->lblBuildDate->setText("Warning: development firmware");
|
||||
myDevice->lblGitTag->setText("");
|
||||
myDevice->lblBrdName->setText("");
|
||||
myDevice->lblBuildDate->setText(tr("Unknown"));
|
||||
myDevice->lblGitTag->setText(tr("Unknown"));
|
||||
myDevice->lblBrdName->setText(tr("Unknown"));
|
||||
}
|
||||
|
||||
status("Ready...", STATUSICON_INFO);
|
||||
@ -179,13 +176,11 @@ bool DeviceWidget::populateBoardStructuredDescription(QByteArray desc)
|
||||
myDevice->lblBuildDate->setText(onBoardDescription.gitDate.insert(4, "-").insert(7, "-"));
|
||||
if (onBoardDescription.gitTag.startsWith("RELEASE", Qt::CaseSensitive)) {
|
||||
myDevice->lblDescription->setText(onBoardDescription.gitTag);
|
||||
QPixmap pix = QPixmap(QString(":uploader/images/application-certificate.svg"));
|
||||
myDevice->lblCertified->setPixmap(pix);
|
||||
myDevice->lblCertified->setPixmap(QPixmap(":uploader/images/application-certificate.svg"));
|
||||
myDevice->lblCertified->setToolTip(tr("Tagged officially released firmware build"));
|
||||
} else {
|
||||
myDevice->lblDescription->setText(onBoardDescription.gitTag);
|
||||
QPixmap pix = QPixmap(QString(":uploader/images/warning.svg"));
|
||||
myDevice->lblCertified->setPixmap(pix);
|
||||
myDevice->lblCertified->setPixmap(QPixmap(":uploader/images/warning.svg"));
|
||||
myDevice->lblCertified->setToolTip(tr("Untagged or custom firmware build"));
|
||||
}
|
||||
|
||||
@ -205,14 +200,12 @@ bool DeviceWidget::populateLoadedStructuredDescription(QByteArray desc)
|
||||
if (LoadedDescription.gitTag.startsWith("RELEASE", Qt::CaseSensitive)) {
|
||||
myDevice->lblDescritpionL->setText(LoadedDescription.gitTag);
|
||||
myDevice->description->setText(LoadedDescription.gitTag);
|
||||
QPixmap pix = QPixmap(QString(":uploader/images/application-certificate.svg"));
|
||||
myDevice->lblCertifiedL->setPixmap(pix);
|
||||
myDevice->lblCertifiedL->setPixmap(QPixmap(":uploader/images/application-certificate.svg"));
|
||||
myDevice->lblCertifiedL->setToolTip(tr("Tagged officially released firmware build"));
|
||||
} else {
|
||||
myDevice->lblDescritpionL->setText(LoadedDescription.gitTag);
|
||||
myDevice->description->setText(LoadedDescription.gitTag);
|
||||
QPixmap pix = QPixmap(QString(":uploader/images/warning.svg"));
|
||||
myDevice->lblCertifiedL->setPixmap(pix);
|
||||
myDevice->lblCertifiedL->setPixmap(QPixmap(":uploader/images/warning.svg"));
|
||||
myDevice->lblCertifiedL->setToolTip(tr("Untagged or custom firmware build"));
|
||||
}
|
||||
myDevice->lblBrdNameL->setText(deviceDescriptorStruct::idToBoardName(LoadedDescription.boardType << 8 | LoadedDescription.boardRevision));
|
||||
|
@ -342,8 +342,9 @@ QString DFUObject::DownloadDescription(int const & numberOfChars)
|
||||
QByteArray arr;
|
||||
|
||||
StartDownloadT(&arr, numberOfChars, OP_DFU::Descript);
|
||||
QString str(arr);
|
||||
return str;
|
||||
|
||||
int index = arr.indexOf(255);
|
||||
return QString((index == -1) ? arr : arr.left(index));
|
||||
}
|
||||
|
||||
QByteArray DFUObject::DownloadDescriptionAsBA(int const & numberOfChars)
|
||||
@ -351,6 +352,7 @@ QByteArray DFUObject::DownloadDescriptionAsBA(int const & numberOfChars)
|
||||
QByteArray arr;
|
||||
|
||||
StartDownloadT(&arr, numberOfChars, OP_DFU::Descript);
|
||||
|
||||
return arr;
|
||||
}
|
||||
|
||||
|
@ -104,24 +104,22 @@ void RunningDeviceWidget::populate()
|
||||
deviceDescriptorStruct devDesc;
|
||||
if (UAVObjectUtilManager::descriptionToStructure(description, devDesc)) {
|
||||
if (devDesc.gitTag.startsWith("RELEASE", Qt::CaseSensitive)) {
|
||||
myDevice->lblFWTag->setText(QString("Firmware tag: ") + devDesc.gitTag);
|
||||
QPixmap pix = QPixmap(QString(":uploader/images/application-certificate.svg"));
|
||||
myDevice->lblCertified->setPixmap(pix);
|
||||
myDevice->lblFWTag->setText(tr("Firmware tag: ") + devDesc.gitTag);
|
||||
myDevice->lblCertified->setPixmap(QPixmap(":uploader/images/application-certificate.svg"));
|
||||
myDevice->lblCertified->setToolTip(tr("Tagged officially released firmware build"));
|
||||
} else {
|
||||
myDevice->lblFWTag->setText(QString("Firmware tag: ") + devDesc.gitTag);
|
||||
QPixmap pix = QPixmap(QString(":uploader/images/warning.svg"));
|
||||
myDevice->lblCertified->setPixmap(pix);
|
||||
myDevice->lblFWTag->setText(tr("Firmware tag: ") + devDesc.gitTag);
|
||||
myDevice->lblCertified->setPixmap(QPixmap(":uploader/images/warning.svg"));
|
||||
myDevice->lblCertified->setToolTip(tr("Untagged or custom firmware build"));
|
||||
}
|
||||
myDevice->lblGitCommitTag->setText("Git commit hash: " + devDesc.gitHash);
|
||||
myDevice->lblFWDate->setText(QString("Firmware date: ") + devDesc.gitDate.insert(4, "-").insert(7, "-"));
|
||||
myDevice->lblGitCommitTag->setText(tr("Git commit hash: ") + devDesc.gitHash);
|
||||
myDevice->lblFWDate->setText(tr("Firmware date: ") + devDesc.gitDate.insert(4, "-").insert(7, "-"));
|
||||
} else {
|
||||
myDevice->lblFWTag->setText(QString("Firmware tag: ") + QString(description).left(QString(description).indexOf(QChar(255))));
|
||||
myDevice->lblGitCommitTag->setText("Git commit tag: Unknown");
|
||||
myDevice->lblFWDate->setText(QString("Firmware date: Unknown"));
|
||||
QPixmap pix = QPixmap(QString(":uploader/images/warning.svg"));
|
||||
myDevice->lblCertified->setPixmap(pix);
|
||||
QString desc = utilMngr->getBoardDescriptionString();
|
||||
myDevice->lblFWTag->setText(tr("Firmware tag: ") + (!desc.isEmpty() ? desc : tr("Unknown")));
|
||||
myDevice->lblCertified->setPixmap(QPixmap(":uploader/images/warning.svg"));
|
||||
myDevice->lblCertified->setToolTip(tr("Custom Firmware Build"));
|
||||
myDevice->lblGitCommitTag->setText(tr("Git commit hash: ") + tr("Unknown"));
|
||||
myDevice->lblFWDate->setText(tr("Firmware date: ") + tr("Unknown"));
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user