diff options
author | Vincent Huang <vincenthsw@gmail.com> | 2022-04-29 15:50:39 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-29 15:50:39 +0800 |
commit | 9bb07fb6893e8debba61573cc0584924f110a44f (patch) | |
tree | 49238b9323b3e4a5d3bf1a3e606b2916f8522e08 | |
parent | ea217e5686f4bc6ce636d6c31e38c0afa3866b60 (diff) | |
parent | 1adbac08fc71a502fbeda84c39d7513baf68d991 (diff) | |
download | rmi4utils-9bb07fb6893e8debba61573cc0584924f110a44f.tar.gz |
Merge pull request #34 from blueue/debug
Write signature if we can confirm its existence.
-rwxr-xr-x | rmi4update/firmware_image.cpp | 11 | ||||
-rwxr-xr-x | rmi4update/rmi4update.cpp | 51 |
2 files changed, 37 insertions, 25 deletions
diff --git a/rmi4update/firmware_image.cpp b/rmi4update/firmware_image.cpp index e4813c5..6b0323e 100755 --- a/rmi4update/firmware_image.cpp +++ b/rmi4update/firmware_image.cpp @@ -55,13 +55,14 @@ void FirmwareImage::ParseHierarchicalImg() unsigned char *content; unsigned short container_id; unsigned int sigature_size; + + for (ii = 0; ii < BLv7_MAX; ii++) { + m_signatureInfo[ii].bExisted = false; + m_signatureInfo[ii].size = 0; + } if (m_bootloaderVersion == RMI_IMG_V10_SIGNATURE_VERSION_NUMBER) { - fprintf (stdout, "has signature\n"); - for (ii = 0; ii < BLv7_MAX; ii++) { - m_signatureInfo[ii].bExisted = false; - m_signatureInfo[ii].size = 0; - } + fprintf (stdout, "has signature\n"); } m_cntrAddr = extract_long(&m_memBlock[RMI_IMG_V10_CNTR_ADDR_OFFSET]); diff --git a/rmi4update/rmi4update.cpp b/rmi4update/rmi4update.cpp index ec6e84b..5e1d924 100755 --- a/rmi4update/rmi4update.cpp +++ b/rmi4update/rmi4update.cpp @@ -355,6 +355,9 @@ int RMI4Update::UpdateFirmware(bool force, bool performLockdown) reset: m_device.Reset(); rebind: + if (m_bootloaderID[1] >= 10) { + Sleep(5000); + } m_device.RebindDriver(); if(!m_device.CheckABSEvent()) { @@ -874,11 +877,13 @@ int RMI4Update::WriteFirmwareV7() } if(m_device.GetDeviceType() == RMI_DEVICE_TYPE_TOUCHPAD) { - // Write signature. - rc = WriteSignatureV7(BLv7_CORE_CODE, m_firmwareImage.GetFirmwareData(), offset); - if (rc != UPDATE_SUCCESS) { - fprintf(stderr, "%s: %s\n", __func__, update_err_to_string(rc)); - return rc; + if (m_firmwareImage.GetSignatureInfo()[BLv7_CORE_CODE].bExisted) { + // Write signature. + rc = WriteSignatureV7(BLv7_CORE_CODE, m_firmwareImage.GetFirmwareData(), offset); + if (rc != UPDATE_SUCCESS) { + fprintf(stderr, "%s: %s\n", __func__, update_err_to_string(rc)); + return rc; + } } } @@ -1000,11 +1005,13 @@ int RMI4Update::WriteCoreConfigV7() } if(m_device.GetDeviceType() == RMI_DEVICE_TYPE_TOUCHPAD) { - // Write signature. - rc = WriteSignatureV7(BLv7_CORE_CONFIG, m_firmwareImage.GetConfigData(), offset); - if (rc != UPDATE_SUCCESS) { - fprintf(stderr, "%s: %s\n", __func__, update_err_to_string(rc)); - return rc; + if (m_firmwareImage.GetSignatureInfo()[BLv7_CORE_CONFIG].bExisted) { + // Write signature. + rc = WriteSignatureV7(BLv7_CORE_CONFIG, m_firmwareImage.GetConfigData(), offset); + if (rc != UPDATE_SUCCESS) { + fprintf(stderr, "%s: %s\n", __func__, update_err_to_string(rc)); + return rc; + } } } @@ -1126,11 +1133,13 @@ int RMI4Update::WriteFlashConfigV7() } if(m_device.GetDeviceType() == RMI_DEVICE_TYPE_TOUCHPAD) { - // Write signature. - rc = WriteSignatureV7(BLv7_FLASH_CONFIG, m_firmwareImage.GetFlashConfigData(), offset); - if (rc != UPDATE_SUCCESS) { - fprintf(stderr, "%s: %s\n", __func__, update_err_to_string(rc)); - return rc; + if (m_firmwareImage.GetSignatureInfo()[BLv7_FLASH_CONFIG].bExisted) { + // Write signature. + rc = WriteSignatureV7(BLv7_FLASH_CONFIG, m_firmwareImage.GetFlashConfigData(), offset); + if (rc != UPDATE_SUCCESS) { + fprintf(stderr, "%s: %s\n", __func__, update_err_to_string(rc)); + return rc; + } } } @@ -1258,11 +1267,13 @@ int RMI4Update::WriteFLDV7() } if(m_device.GetDeviceType() == RMI_DEVICE_TYPE_TOUCHPAD) { - // Write signature. - rc = WriteSignatureV7(BLv7_FLD, m_firmwareImage.GetFLDData(), offset); - if (rc != UPDATE_SUCCESS) { - fprintf(stderr, "%s: %s\n", __func__, update_err_to_string(rc)); - return rc; + if (m_firmwareImage.GetSignatureInfo()[BLv7_FLD].bExisted) { + // Write signature. + rc = WriteSignatureV7(BLv7_FLD, m_firmwareImage.GetFLDData(), offset); + if (rc != UPDATE_SUCCESS) { + fprintf(stderr, "%s: %s\n", __func__, update_err_to_string(rc)); + return rc; + } } } |