diff options
author | David Chiu <dchiu@synaptics.com> | 2022-02-22 16:25:07 +0800 |
---|---|---|
committer | Vincent Huang <vincenthsw@gmail.com> | 2022-02-24 17:26:53 +0800 |
commit | 1247098b0d36234b72c92faaca6588de9e790a08 (patch) | |
tree | 9221e591234be4413ec2b3bc73fc0697ab8fdb46 | |
parent | 209baef35cd959faf19f64157a1be18dd6c5af76 (diff) | |
download | rmi4utils-1247098b0d36234b72c92faaca6588de9e790a08.tar.gz |
Support checking product ID
-rwxr-xr-x | rmi4update/firmware_image.cpp | 11 | ||||
-rwxr-xr-x | rmi4update/firmware_image.h | 2 | ||||
-rwxr-xr-x | rmi4update/rmi4update.cpp | 3 | ||||
-rw-r--r-- | rmi4update/updateutil.cpp | 1 | ||||
-rw-r--r-- | rmi4update/updateutil.h | 1 | ||||
-rw-r--r-- | rmidevice/rmidevice.h | 1 |
6 files changed, 19 insertions, 0 deletions
diff --git a/rmi4update/firmware_image.cpp b/rmi4update/firmware_image.cpp index 303eb88..bfbbc54 100755 --- a/rmi4update/firmware_image.cpp +++ b/rmi4update/firmware_image.cpp @@ -220,6 +220,17 @@ int FirmwareImage::VerifyImageMatchesDevice(unsigned long deviceFirmwareSize, return UPDATE_SUCCESS; } +int FirmwareImage::VerifyImageProductID(char* deviceProductID) +{ + if (strcmp(m_productID, deviceProductID) == 0) { + fprintf(stdout, "image matched\n"); + return UPDATE_SUCCESS; + } else { + fprintf (stdout, "image not match, terminated\n"); + return UPDATE_FAIL_VERIFY_IMAGE_PRODUCTID_NOT_MATCH; + } +} + FirmwareImage::~FirmwareImage() { delete [] m_memBlock; diff --git a/rmi4update/firmware_image.h b/rmi4update/firmware_image.h index 3ce1c59..b9dab84 100755 --- a/rmi4update/firmware_image.h +++ b/rmi4update/firmware_image.h @@ -108,6 +108,8 @@ public: unsigned long GetFlashConfigSize() { return m_flashConfigSize; } unsigned long GetLockdownSize() { return m_lockdownSize; } unsigned long GetFirmwareID() { return m_firmwareBuildID; } + int VerifyImageProductID(char* deviceProductID); + bool HasIO() { return m_io; } ~FirmwareImage(); diff --git a/rmi4update/rmi4update.cpp b/rmi4update/rmi4update.cpp index 83fa235..0dcd6ec 100755 --- a/rmi4update/rmi4update.cpp +++ b/rmi4update/rmi4update.cpp @@ -125,6 +125,9 @@ int RMI4Update::UpdateFirmware(bool force, bool performLockdown) fprintf(stdout, "Device Properties:\n"); m_device.PrintProperties(); + rc = m_firmwareImage.VerifyImageProductID(m_device.GetProductID()); + if (rc != UPDATE_SUCCESS) + return rc; rc = DisableNonessentialInterupts(); if (rc != UPDATE_SUCCESS) diff --git a/rmi4update/updateutil.cpp b/rmi4update/updateutil.cpp index 1d654cd..52245d3 100644 --- a/rmi4update/updateutil.cpp +++ b/rmi4update/updateutil.cpp @@ -27,6 +27,7 @@ const char *update_error_str[] = { "checksum does not match image", // UPDATE_FAIL_VERIFY_CHECKSUM "image firmware size does not match device", // UPDATE_FAIL_VERIFY_FIRMWARE_SIZE "image config size does not match device", // UPDATE_FAIL_VERIFY_CONFIG_SIZE + "image product ID does not match device", // UPDATE_FAIL_VERIFY_IMAGE_PRODUCTID_NOT_MATCH "image version is unsupported", // UPDATE_FAIL_UNSUPPORTED_IMAGE_VERSION "failed to find F01 on device", // UPDATE_FAIL_NO_FUNCTION_01 "failed to find F34 on device", // UPDATE_FAIL_NO_FUNCTION_34 diff --git a/rmi4update/updateutil.h b/rmi4update/updateutil.h index 59f1a08..c65c53a 100644 --- a/rmi4update/updateutil.h +++ b/rmi4update/updateutil.h @@ -26,6 +26,7 @@ enum update_error { UPDATE_FAIL_VERIFY_CHECKSUM, UPDATE_FAIL_VERIFY_FIRMWARE_SIZE, UPDATE_FAIL_VERIFY_CONFIG_SIZE, + UPDATE_FAIL_VERIFY_IMAGE_PRODUCTID_NOT_MATCH, UPDATE_FAIL_UNSUPPORTED_IMAGE_VERSION, UPDATE_FAIL_NO_FUNCTION_01, UPDATE_FAIL_NO_FUNCTION_34, diff --git a/rmidevice/rmidevice.h b/rmidevice/rmidevice.h index a0249bc..e40c653 100644 --- a/rmidevice/rmidevice.h +++ b/rmidevice/rmidevice.h @@ -62,6 +62,7 @@ public: int GetFirmwareVersionMajor() { return m_firmwareVersionMajor; } int GetFirmwareVersionMinor() { return m_firmwareVersionMinor; } virtual int QueryBasicProperties(); + char *GetProductID() { return (char *)m_productID; } int SetRMIPage(unsigned char page); |