Added board firmware update functionality

This commit is contained in:
Yury Shuvakin
2022-09-13 15:20:09 +03:00
parent d28efef208
commit 4dd1f95193
21 changed files with 908 additions and 225 deletions

View File

@@ -39,6 +39,8 @@ Commands::Commands(QObject *parent) : QObject(parent)
mFimwarePtr = 0;
mFirmwareTimer = 0;
mFirmwareRetries = 0;
mFirmwareIsBootloader = false;
mFirmwareUploadSuccess = false;
mFirmwareUploadStatus = "FW Upload Status";
mCheckNextbmsConfig = false;
@@ -457,12 +459,12 @@ void Commands::firmwareUploadUpdate(bool isTimeout)
const int timeout = 350;
if (mFirmwareState == 0) {
mFirmwareUploadStatus = "Buffer Erase";
mFirmwareUploadStatus = tr("Buffer erase");
if (isTimeout) {
// Erase timed out, abort.
mFirmwareIsUploading = false;
mFimwarePtr = 0;
mFirmwareUploadStatus = "Buffer Erase Timeout";
mFirmwareUploadStatus = tr("Buffer erase timeout");
} else {
mFirmwareState++;
mFirmwareRetries = retries;
@@ -470,7 +472,7 @@ void Commands::firmwareUploadUpdate(bool isTimeout)
firmwareUploadUpdate(true);
}
} else if (mFirmwareState == 1) {
mFirmwareUploadStatus = "CRC/Size Write";
mFirmwareUploadStatus = tr("CRC/Size write");
if (isTimeout) {
if (mFirmwareRetries > 0) {
mFirmwareRetries--;
@@ -479,7 +481,7 @@ void Commands::firmwareUploadUpdate(bool isTimeout)
mFirmwareIsUploading = false;
mFimwarePtr = 0;
mFirmwareState = 0;
mFirmwareUploadStatus = "CRC/Size Write Timeout";
mFirmwareUploadStatus = tr("CRC/Size write timeout");
return;
}
@@ -498,7 +500,7 @@ void Commands::firmwareUploadUpdate(bool isTimeout)
firmwareUploadUpdate(true);
}
} else if (mFirmwareState == 2) {
mFirmwareUploadStatus = "FW Data Write";
mFirmwareUploadStatus = tr("Firmware data write");
if (isTimeout) {
if (mFirmwareRetries > 0) {
mFirmwareRetries--;
@@ -507,7 +509,7 @@ void Commands::firmwareUploadUpdate(bool isTimeout)
mFirmwareIsUploading = false;
mFimwarePtr = 0;
mFirmwareState = 0;
mFirmwareUploadStatus = "FW Data Write Timeout";
mFirmwareUploadStatus = tr("Firmware data write timeout");
return;
}
@@ -534,7 +536,8 @@ void Commands::firmwareUploadUpdate(bool isTimeout)
mFirmwareIsUploading = false;
mFimwarePtr = 0;
mFirmwareState = 0;
mFirmwareUploadStatus = "FW Upload Done";
mFirmwareUploadSuccess = true;
mFirmwareUploadStatus = tr("Firmware update completed!\n\nReconnect to the board if you want to continue working with it.");
// Upload done. Enter bootloader!
if (!mFirmwareIsBootloader) {
@@ -616,7 +619,8 @@ void Commands::startFirmwareUpload(QByteArray &newFirmware, bool isBootloader)
mFirmwareRetries = 5;
mNewFirmware.clear();
mNewFirmware.append(newFirmware);
mFirmwareUploadStatus = "Buffer Erase";
mFirmwareUploadSuccess = false;
mFirmwareUploadStatus = tr("Buffer erase");
if (mFirmwareIsBootloader) {
firmwareUploadUpdate(true);
@@ -628,7 +632,12 @@ void Commands::startFirmwareUpload(QByteArray &newFirmware, bool isBootloader)
}
}
double Commands::getFirmwareUploadProgress()
bool Commands::getFirmwareUploadSuccess() const
{
return mFirmwareUploadSuccess;
}
double Commands::getFirmwareUploadProgress() const
{
if (mFirmwareIsUploading) {
return (double)mFimwarePtr / (double)mNewFirmware.size();
@@ -637,7 +646,7 @@ double Commands::getFirmwareUploadProgress()
}
}
QString Commands::getFirmwareUploadStatus()
QString Commands::getFirmwareUploadStatus() const
{
return mFirmwareUploadStatus;
}
@@ -648,7 +657,7 @@ void Commands::cancelFirmwareUpload()
mFirmwareIsUploading = false;
mFimwarePtr = 0;
mFirmwareState = 0;
mFirmwareUploadStatus = "Cancelled";
mFirmwareUploadStatus = tr("Cancelled");
}
}