aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Chiu <dchiu@synaptics.com>2022-02-22 16:25:07 +0800
committerVincent Huang <vincenthsw@gmail.com>2022-02-24 17:26:53 +0800
commit1247098b0d36234b72c92faaca6588de9e790a08 (patch)
tree9221e591234be4413ec2b3bc73fc0697ab8fdb46
parent209baef35cd959faf19f64157a1be18dd6c5af76 (diff)
downloadrmi4utils-1247098b0d36234b72c92faaca6588de9e790a08.tar.gz
Support checking product ID
-rwxr-xr-xrmi4update/firmware_image.cpp11
-rwxr-xr-xrmi4update/firmware_image.h2
-rwxr-xr-xrmi4update/rmi4update.cpp3
-rw-r--r--rmi4update/updateutil.cpp1
-rw-r--r--rmi4update/updateutil.h1
-rw-r--r--rmidevice/rmidevice.h1
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);