oem-ampere: eventManager: Fix DIMMx_Status sensor IDs checking

DIMMx_Status sensor IDs have format `4 + 2x` with x from 0 to 23.

Signed-off-by: Thu Nguyen <thu@os.amperecomputing.com>
Change-Id: Iea8219e005a2773e288920b6aaa529b6f5d43de4
diff --git a/oem/ampere/event/oem_event_manager.cpp b/oem/ampere/event/oem_event_manager.cpp
index cf8e1ab..79266f5 100644
--- a/oem/ampere/event/oem_event_manager.cpp
+++ b/oem/ampere/event/oem_event_manager.cpp
@@ -271,6 +271,18 @@
     return description;
 }
 
+uint8_t OemEventManager::sensorIdToDIMMIdx(const uint16_t& sensorId)
+{
+    uint8_t dimmIdx = maxDIMMInstantNum;
+    int sensorId_Off = sensorId - 4;
+    if ((sensorId_Off >= 0) && ((sensorId_Off % 2) == 0) &&
+        ((sensorId_Off / 2) < maxDIMMInstantNum))
+    {
+        dimmIdx = sensorId_Off / 2;
+    }
+    return dimmIdx;
+}
+
 void OemEventManager::handleBootOverallEvent(
     pldm_tid_t /*tid*/, uint16_t /*sensorId*/, uint32_t presentReading)
 {
@@ -384,8 +396,7 @@
     }
 
     // DIMMx_Status sensorID 4+2*index (index 0 -> maxDIMMInstantNum-1)
-    if (auto dimmIdx = (sensorId - 4) / 2;
-        sensorId >= 4 && dimmIdx >= 0 && dimmIdx < maxDIMMInstantNum)
+    if (auto dimmIdx = sensorIdToDIMMIdx(sensorId); dimmIdx < maxDIMMInstantNum)
     {
         handleDIMMStatusEvent(tid, sensorId, presentReading);
         return PLDM_SUCCESS;
@@ -710,7 +721,12 @@
 
     description += prefixMsgStrCreation(tid, sensorId);
 
-    uint8_t dimmIdx = (sensorId - 4) / 2;
+    // DIMMx_Status sensorID 4+2*index (index 0 -> maxDIMMInstantNum-1)
+    auto dimmIdx = sensorIdToDIMMIdx(sensorId);
+    if (dimmIdx >= maxDIMMIdxBitNum)
+    {
+        return;
+    }
 
     description += "DIMM " + std::to_string(dimmIdx) + " ";