Disable all interrupts not related to the update process before entering flash programming
diff --git a/rmi4update/rmi4update.cpp b/rmi4update/rmi4update.cpp
index 8474b5a..6502a9e 100644
--- a/rmi4update/rmi4update.cpp
+++ b/rmi4update/rmi4update.cpp
@@ -103,6 +103,10 @@
fprintf(stdout, "Device Properties:\n");
m_device.PrintProperties();
+ rc = DisableNonessentialInterupts();
+ if (rc != UPDATE_SUCCESS)
+ return rc;
+
rc = ReadF34Queries();
if (rc != UPDATE_SUCCESS)
return rc;
@@ -204,6 +208,18 @@
}
+int RMI4Update::DisableNonessentialInterupts()
+{
+ int rc;
+ unsigned char interruptEnabeMask = m_f34.GetInterruptMask() | m_f01.GetInterruptMask();
+
+ rc = m_device.Write(m_f01.GetControlBase() + 1, &interruptEnabeMask, 1);
+ if (rc < 0)
+ return rc;
+
+ return UPDATE_SUCCESS;
+}
+
int RMI4Update::FindUpdateFunctions()
{
if (0 > m_device.ScanPDT())