]> rtime.felk.cvut.cz Git - arc.git/commitdiff
Changed management of NvM Block Handles (Lu). Merged since it was made based on old...
authorjohn <devnull@localhost>
Fri, 24 Aug 2012 12:54:47 +0000 (14:54 +0200)
committerjohn <devnull@localhost>
Fri, 24 Aug 2012 12:54:47 +0000 (14:54 +0200)
Fixed missing } in Dem_Init.

diagnostic/Dem/Dem.c

index d76d81361cc4b55a76f62a99ab0514e79251dfd5..da0a56d94d0147e9da25fa4f95ac575a3fc7d950 100644 (file)
@@ -206,7 +206,14 @@ static FreezeFrameRecType  priMemFreezeFrameBuffer[DEM_MAX_NUMBER_FF_DATA_PRI_MEM
 extern FreezeFrameRecType*  FreezeFrameMirrorBuffer[];\r
 static ExtDataRecType          priMemExtDataBuffer[DEM_MAX_NUMBER_EXT_DATA_PRI_MEM] __attribute__ ((section (".dem_eventmemory_pri")));\r
 AgingRecType                   priMemAgingBuffer[DEM_MAX_NUMBER_AGING_PRI_MEM] __attribute__ ((section (".dem_eventmemory_pri")));\r
-AgingRecType                           AgingMirrorBuffer[DEM_MAX_NUMBER_AGING_PRI_MEM] __attribute__ ((section (".dem_eventmemory_pri")));\r
+AgingRecType                           AgingMirrorBuffer[DEM_MAX_NUMBER_AGING_PRI_MEM] __attribute__ ((section (".")));\r
+\r
+/* block in NVRam, use for freezeframe */\r
+extern const NvM_BlockIdType FreezeFrameBlockId[DEM_MAX_NUMBER_FF_DATA_PRI_MEM];\r
+/* block in NVRam, use for aging */\r
+extern const NvM_BlockIdType AgingBlockId;\r
+\r
+\r
 /*\r
 *Allocation of freezeFrame storage timestamp,record the time order\r
 */\r
@@ -1482,20 +1489,20 @@ static boolean lookupExtendedDataPriMem(Dem_EventIdType eventId, ExtDataRecType
  * Procedure:  storeAgingRecPerMem\r
  * Description: store aging records in NVRam\r
  */\r
-static void storeAgingRecPerMem(const Dem_NvramBlockIdType *AgingBlockIdPtr)\r
+static void storeAgingRecPerMem(const NvM_BlockIdType AgingBlockId)\r
 {\r
        NvM_RequestResultType requestResult = NVM_REQ_OK;\r
        imask_t state;\r
 \r
        Irq_Save(state);\r
 \r
-       if (AgingBlockIdPtr->BlockDescriptor != NULL){\r
+       if (AgingBlockId != 0){\r
                /* check the status,whether it's busy or not? */\r
-               NvM_GetErrorStatus(AgingBlockIdPtr->BlockDescriptor->NvramBlockIdentifier,&requestResult);\r
+               NvM_GetErrorStatus(AgingBlockId&requestResult);\r
                /* if writing is not busy,copy priMemFreezeFrameBuffer to NVRam permanent RAM*/\r
                if (requestResult != NVM_REQ_PENDING){\r
                        memcpy(AgingMirrorBuffer, priMemAgingBuffer, sizeof(priMemAgingBuffer));\r
-                       (void)NvM_WriteBlock(AgingBlockIdPtr->BlockDescriptor->NvramBlockIdentifier, (const uint8 *)AgingMirrorBuffer);\r
+                       (void)NvM_WriteBlock(AgingBlockId, (const uint8 *)AgingMirrorBuffer);\r
                        AgingIsModified = FALSE;                \r
                }\r
                else{\r
@@ -1577,7 +1584,7 @@ static void storeFreezeFrameDataPriMem(const Dem_EventParameterType *eventParam,
  * Description:        Store the freeze frame data in NVRam\r
  * \r
  */\r
-static void storeFreezeFrameDataPerMem(const Dem_NvramBlockIdType *FFBlockIdPtr)\r
+static void storeFreezeFrameDataPerMem()\r
 {\r
        NvM_RequestResultType requestResult = NVM_REQ_OK;\r
        uint16 i = 0;\r
@@ -1588,12 +1595,12 @@ static void storeFreezeFrameDataPerMem(const Dem_NvramBlockIdType *FFBlockIdPtr)
 \r
        for(i = 0; i < DEM_MAX_NUMBER_FF_DATA_PRI_MEM; i++){\r
                if(memcmp(&priMemFreezeFrameBuffer[i], FreezeFrameMirrorBuffer[i], sizeof(FreezeFrameRecType))){\r
-                       if(FFBlockIdPtr->BlockDescriptor != NULL){\r
-                               NvM_GetErrorStatus(FFBlockIdPtr->BlockDescriptor->NvramBlockIdentifier,&requestResult);\r
+                       if(FreezeFrameBlockId[i] != 0){\r
+                               NvM_GetErrorStatus(FreezeFrameBlockId[i], &requestResult);\r
 \r
                                if(requestResult != NVM_REQ_PENDING ){\r
                                        memcpy(FreezeFrameMirrorBuffer[i], &priMemFreezeFrameBuffer[i], sizeof(FreezeFrameRecType));\r
-                                       (void)NvM_WriteBlock(FFBlockIdPtr->BlockDescriptor->NvramBlockIdentifier, (const uint8 *)(FreezeFrameMirrorBuffer[i]));\r
+                                       (void)NvM_WriteBlock(FreezeFrameBlockId[i], (const uint8 *)(FreezeFrameMirrorBuffer[i]));\r
                                        FFIsModifiedLocal = FALSE;\r
                                }\r
                                else{\r
@@ -1606,7 +1613,6 @@ static void storeFreezeFrameDataPerMem(const Dem_NvramBlockIdType *FFBlockIdPtr)
                                //TODO:report error or doing nothing,assume that doing nothing\r
                        }\r
                }\r
-               FFBlockIdPtr++;\r
        }\r
 \r
        Irq_Restore(state);\r
@@ -1636,7 +1642,7 @@ static void deleteFreezeFrameDataPriMem(const Dem_EventParameterType *eventParam
  * Description:        delete the freeze frame data in event memory according to\r
  *                             "FFBlockId" destination option,it must be used after deleteFreezeFrameDataPriMem()\r
  */\r
-static void deleteFreezeFrameDataPerMem(const Dem_NvramBlockIdType *FFBlockIdPtr)\r
+static void deleteFreezeFrameDataPerMem()\r
 {\r
        NvM_RequestResultType requestResult = NVM_REQ_OK;\r
        uint16 i = 0;\r
@@ -1647,11 +1653,11 @@ static void deleteFreezeFrameDataPerMem(const Dem_NvramBlockIdType *FFBlockIdPtr
 \r
        for(i = 0; i < DEM_MAX_NUMBER_FF_DATA_PRI_MEM; i++){\r
                if(memcmp(&priMemFreezeFrameBuffer[i], FreezeFrameMirrorBuffer[i], sizeof(FreezeFrameRecType))){\r
-                       if(FFBlockIdPtr->BlockDescriptor != NULL){\r
-                               NvM_GetErrorStatus(FFBlockIdPtr->BlockDescriptor->NvramBlockIdentifier,&requestResult);\r
+                       if(FreezeFrameBlockId[i] != 0){\r
+                               NvM_GetErrorStatus(FreezeFrameBlockId[i], &requestResult);\r
                                if(requestResult != NVM_REQ_PENDING){\r
                                        memcpy(FreezeFrameMirrorBuffer[i], &priMemFreezeFrameBuffer[i], sizeof(FreezeFrameRecType));\r
-                                       (void)NvM_WriteBlock(FFBlockIdPtr->BlockDescriptor->NvramBlockIdentifier, (const uint8 *)(FreezeFrameMirrorBuffer[i]));\r
+                                       (void)NvM_WriteBlock(FreezeFrameBlockId[i], (const uint8 *)(FreezeFrameMirrorBuffer[i]));\r
                                        FFIsModifiedLocal = FALSE;\r
                                }\r
                                else{\r
@@ -1664,7 +1670,6 @@ static void deleteFreezeFrameDataPerMem(const Dem_NvramBlockIdType *FFBlockIdPtr
                                //TODO:report error or doing nothing,assume that doing nothing\r
                        }\r
                }\r
-               FFBlockIdPtr++;\r
 \r
        }\r
 \r
@@ -1686,7 +1691,7 @@ static void storeFreezeFrameDataEvtMem(const Dem_EventParameterType *eventParam,
                {\r
                case DEM_DTC_ORIGIN_PRIMARY_MEMORY:\r
                        storeFreezeFrameDataPriMem(eventParam, freezeFrame);\r
-                       storeFreezeFrameDataPerMem(FreezeFrameBlockId);\r
+                       storeFreezeFrameDataPerMem();\r
                        break;\r
 \r
                case DEM_DTC_ORIGIN_PERMANENT_MEMORY:\r
@@ -2050,7 +2055,7 @@ static void deleteEventMemory(const Dem_EventParameterType *eventParam)
                        deleteEventPriMem(eventParam);\r
                        deleteFreezeFrameDataPriMem(eventParam);\r
                        deleteExtendedDataPriMem(eventParam);\r
-                       deleteFreezeFrameDataPerMem(FreezeFrameBlockId);\r
+                       deleteFreezeFrameDataPerMem();\r
                        break;\r
 \r
                case DEM_DTC_ORIGIN_PERMANENT_MEMORY:\r
@@ -2366,8 +2371,8 @@ void Dem_Init(void)
        } else {\r
 \r
                for(i = 0; i < DEM_MAX_NUMBER_FF_DATA_PRI_MEM; i++){\r
-                       if(FreezeFrameBlockId[i].BlockDescriptor != NULL){\r
-                               NvM_GetErrorStatus(FreezeFrameBlockId[i].BlockDescriptor->NvramBlockIdentifier,&requestResult);\r
+                       if(FreezeFrameBlockId[i] != 0){\r
+                               NvM_GetErrorStatus(FreezeFrameBlockId[i]&requestResult);\r
                                if(requestResult != NVM_REQ_PENDING){\r
                                        memcpy(&priMemFreezeFrameBuffer[i], FreezeFrameMirrorBuffer[i], sizeof(FreezeFrameRecType));\r
                                }\r
@@ -2377,14 +2382,14 @@ void Dem_Init(void)
                        }\r
                }\r
                //recover Aging from NVRam to RAM\r
-               if(AgingBlockId.BlockDescriptor != NULL)\r
+               if(AgingBlockId != 0)\r
                {\r
                        //check the status\r
-                       NvM_GetErrorStatus(AgingBlockId.BlockDescriptor->NvramBlockIdentifier,&requestResult);\r
+                       NvM_GetErrorStatus(AgingBlockId,&requestResult);\r
 \r
                        //recover Aging from NVRam to RAM\r
-                       if(AgingBlockId.BlockDescriptor != NULL){//check the status\r
-                               NvM_GetErrorStatus(AgingBlockId.BlockDescriptor->NvramBlockIdentifier, &requestResult);\r
+                       if(AgingBlockId != 0){//check the status\r
+                               NvM_GetErrorStatus(AgingBlockId, &requestResult);\r
 \r
                                //judge whether NVM is busy\r
                                if(!(requestResult & NVM_REQ_PENDING)){\r
@@ -2405,33 +2410,33 @@ void Dem_Init(void)
                                memset(&priMemAgingBuffer[i], 0, sizeof(AgingRecType));\r
                                AgingIsModified = TRUE;\r
                        }\r
+               }\r
 \r
-                       // Validate event records stored in primary memory\r
-                       for (i = 0; i < DEM_MAX_NUMBER_EVENT_PRI_MEM; i++) {\r
-                               cSum = calcChecksum(&priMemEventBuffer[i], sizeof(EventRecType)-sizeof(ChecksumType));\r
-                               if ((cSum != priMemEventBuffer[i].checksum) || (priMemEventBuffer[i].eventId == DEM_EVENT_ID_NULL)) {\r
-                                       // Unlegal record, clear the record\r
-                                       memset(&priMemEventBuffer[i], 0, sizeof(EventRecType));\r
-                               }\r
-                               else {\r
-                                       // Valid, update current status\r
-                                       mergeEventStatusRec(&priMemEventBuffer[i]);\r
+               // Validate event records stored in primary memory\r
+               for (i = 0; i < DEM_MAX_NUMBER_EVENT_PRI_MEM; i++) {\r
+                       cSum = calcChecksum(&priMemEventBuffer[i], sizeof(EventRecType)-sizeof(ChecksumType));\r
+                       if ((cSum != priMemEventBuffer[i].checksum) || (priMemEventBuffer[i].eventId == DEM_EVENT_ID_NULL)) {\r
+                               // Unlegal record, clear the record\r
+                               memset(&priMemEventBuffer[i], 0, sizeof(EventRecType));\r
+                       }\r
+                       else {\r
+                               // Valid, update current status\r
+                               mergeEventStatusRec(&priMemEventBuffer[i]);\r
 \r
-                                       // Update occurrence counter on pre init stored freeze frames\r
-                                       updateFreezeFrameOccurrencePreInit(&priMemEventBuffer[i]);\r
-                               }\r
+                               // Update occurrence counter on pre init stored freeze frames\r
+                               updateFreezeFrameOccurrencePreInit(&priMemEventBuffer[i]);\r
                        }\r
+               }\r
 \r
-                       //initialize the current timestamp and update the timestamp in pre init\r
-                       initCurrentFreezeFrameTimeStamp(&FF_TimeStamp);//add by i-soft\r
+               //initialize the current timestamp and update the timestamp in pre init\r
+               initCurrentFreezeFrameTimeStamp(&FF_TimeStamp);//add by i-soft\r
 \r
-                       // Validate extended data records stored in primary memory\r
-                       for (i = 0; i < DEM_MAX_NUMBER_EXT_DATA_PRI_MEM; i++) {\r
-                               cSum = calcChecksum(&priMemExtDataBuffer[i], sizeof(ExtDataRecType)-sizeof(ChecksumType));\r
-                               if ((cSum != priMemExtDataBuffer[i].checksum) || (priMemExtDataBuffer[i].eventId == DEM_EVENT_ID_NULL)) {\r
-                                       // Unlegal record, clear the record\r
-                                       memset(&priMemExtDataBuffer[i], 0, sizeof(ExtDataRecType));\r
-                               }\r
+               // Validate extended data records stored in primary memory\r
+               for (i = 0; i < DEM_MAX_NUMBER_EXT_DATA_PRI_MEM; i++) {\r
+                       cSum = calcChecksum(&priMemExtDataBuffer[i], sizeof(ExtDataRecType)-sizeof(ChecksumType));\r
+                       if ((cSum != priMemExtDataBuffer[i].checksum) || (priMemExtDataBuffer[i].eventId == DEM_EVENT_ID_NULL)) {\r
+                               // Unlegal record, clear the record\r
+                               memset(&priMemExtDataBuffer[i], 0, sizeof(ExtDataRecType));\r
                        }\r
                }\r
 \r
@@ -2452,38 +2457,21 @@ void Dem_Init(void)
                }\r
                //lint -restore\r
 \r
-               //lint -save\r
-               //lint -e568 //PC-Lint exception.\r
-               //lint -e685 //PC-Lint exception.\r
-               //lint -e681 //PC-Lint exception to MISRA 14.1: Loop is not entered. This only happens when DEM_MAX_NUMBER_FF_DATA_PRE_INIT is zero. Keep as it is for less complex code.\r
-               // Validate freeze frame records stored in primary memory\r
-               // LuYuan: no checksum is needed.\r
-               /*      for (i = 0; i < DEM_MAX_NUMBER_FF_DATA_PRI_MEM; i++) {\r
-               // Bug report by iSOFT, data structure is not byte aligned, use "sizeof is not SAFE! \r
-               cSum = calcChecksum(&priMemFreezeFrameBuffer[i], sizeof(FreezeFrameRecType)-sizeof(ChecksumType));\r
-               if ((cSum != priMemFreezeFrameBuffer[i].checksum) || (priMemFreezeFrameBuffer[i].eventId == DEM_EVENT_ID_NULL)) {\r
-                       // Unlegal record, clear the record\r
-                       memset(&priMemFreezeFrameBuffer[i], 0, sizeof(FreezeFrameRecType));\r
-               }\r
-       }\r
-                */\r
-               //lint -restore\r
-\r
-       /* Transfer updated event data to event memory */\r
-       for (i = 0; i < DEM_MAX_NUMBER_EVENT; i++) {\r
-               if (eventStatusBuffer[i].eventId != DEM_EVENT_ID_NULL) {\r
-                       lookupEventIdParameter(eventStatusBuffer[i].eventId, &eventParam);\r
-                       storeEventEvtMem(eventParam, &eventStatusBuffer[i]);\r
+               /* Transfer updated event data to event memory */\r
+               for (i = 0; i < DEM_MAX_NUMBER_EVENT; i++) {\r
+                       if (eventStatusBuffer[i].eventId != DEM_EVENT_ID_NULL) {\r
+                               lookupEventIdParameter(eventStatusBuffer[i].eventId, &eventParam);\r
+                               storeEventEvtMem(eventParam, &eventStatusBuffer[i]);\r
+                       }\r
                }\r
-       }\r
 \r
-       /* Transfer extended data to event memory if necessary */\r
-       for (i = 0; i < DEM_MAX_NUMBER_EXT_DATA_PRE_INIT; i++) {\r
-               if (preInitExtDataBuffer[i].eventId !=  DEM_EVENT_ID_NULL) {\r
-                       lookupEventIdParameter(preInitExtDataBuffer[i].eventId, &eventParam);\r
-                       storeExtendedDataEvtMem(eventParam, &preInitExtDataBuffer[i]);\r
+               /* Transfer extended data to event memory if necessary */\r
+               for (i = 0; i < DEM_MAX_NUMBER_EXT_DATA_PRE_INIT; i++) {\r
+                       if (preInitExtDataBuffer[i].eventId !=  DEM_EVENT_ID_NULL) {\r
+                               lookupEventIdParameter(preInitExtDataBuffer[i].eventId, &eventParam);\r
+                               storeExtendedDataEvtMem(eventParam, &preInitExtDataBuffer[i]);\r
+                       }\r
                }\r
-       }\r
 \r
                //lint -save\r
                //lint -e568 //PC-Lint exception.\r
@@ -2540,7 +2528,7 @@ void Dem_MainFunction(void)/** @req DEM125 */
        }\r
 \r
        if (AgingIsModified) {\r
-               storeAgingRecPerMem(&AgingBlockId);\r
+               storeAgingRecPerMem(AgingBlockId);\r
        }\r
 }\r
 \r