]> rtime.felk.cvut.cz Git - arc.git/blobdiff - memory/Fee/Fee.c
Fee: Make Fee return E_NOT_OK when busy and dev error not on
[arc.git] / memory / Fee / Fee.c
index f79501c32b75325ac12fd1996dc3b49f7f48543f..9076b1c22e8d67b935d73209aa6d75e1d27beb72 100644 (file)
@@ -52,7 +52,7 @@
  */\r
 \r
 \r
-//lint -emacro(904,VALIDATE_RV,VALIDATE_NO_RV) //904 PC-Lint exception to MISRA 14.7 (validate macros).\r
+//lint -emacro(904,DET_VALIDATE_RV,DET_VALIDATE_NO_RV) //904 PC-Lint exception to MISRA 14.7 (validate macros).\r
 \r
 // Exception made as a result of that NVM_DATASET_SELECTION_BITS can be zero\r
 //lint -emacro(835, MIN_BLOCKNR) // 835 PC-lint: A zero has been given as right argument to operator '<<' or '>>'\r
  */\r
 #if  ( FEE_DEV_ERROR_DETECT == STD_ON )\r
 #include "Det.h"\r
-#define VALIDATE(_exp,_api,_err ) \\r
+#define DET_VALIDATE(_exp,_api,_err ) \\r
         if( !(_exp) ) { \\r
           Det_ReportError(MODULE_ID_FEE, 0, _api, _err); \\r
         }\r
 \r
-#define VALIDATE_RV(_exp,_api,_err,_rv ) \\r
+#define DET_VALIDATE_RV(_exp,_api,_err,_rv ) \\r
         if( !(_exp) ) { \\r
           Det_ReportError(MODULE_ID_FEE, 0, _api, _err); \\r
           return _rv; \\r
         }\r
 \r
-#define VALIDATE_NO_RV(_exp,_api,_err ) \\r
+#define DET_VALIDATE_NO_RV(_exp,_api,_err ) \\r
   if( !(_exp) ) { \\r
           Det_ReportError(MODULE_ID_FEE, 0, _api, _err); \\r
           return; \\r
 #define MIN_BLOCKNR            ((uint16)((uint16)1 << NVM_DATASET_SELECTION_BITS))\r
 \r
 #else\r
-#define VALIDATE(_exp,_api,_err )\r
-#define VALIDATE_RV(_exp,_api,_err,_rv )\r
-#define VALIDATE_NO_RV(_exp,_api,_err )\r
+#define DET_VALIDATE(_exp,_api,_err )\r
+#define DET_VALIDATE_RV(_exp,_api,_err,_rv )\r
+#define DET_VALIDATE_NO_RV(_exp,_api,_err )\r
 #define DET_REPORTERROR(_module,_instance,_api,_err)\r
 #endif\r
 \r
@@ -531,7 +531,7 @@ static void StartupReadBlockAdmin(void)
        if (CheckFlsJobFinnished()) {\r
                if (Fls_GetJobResult() == MEMIF_JOB_OK) {\r
                        if (RWBuffer.BlockCtrl.DataPage.Data.Status == BLOCK_STATUS_EMPTY) {\r
-                               VALIDATE(CurrentJob.Op.Startup.NrOfBanks != 0, FEE_STARTUP_ID, FEE_FLASH_CORRUPT);\r
+                               DET_VALIDATE(CurrentJob.Op.Startup.NrOfBanks != 0, FEE_STARTUP_ID, FEE_FLASH_CORRUPT);\r
                                CurrentJob.Op.Startup.NrOfBanks--;\r
                                CurrentJob.Op.Startup.BankNumber = (CurrentJob.Op.Startup.BankNumber + 1) % 2;\r
                                CurrentJob.Op.Startup.BlockAdminAddress = BankProp[CurrentJob.Op.Startup.BankNumber].End - (BLOCK_CTRL_PAGE_SIZE + BANK_CTRL_PAGE_SIZE);\r
@@ -895,7 +895,7 @@ static void GarbageCollectWriteHeader(void)
                                CurrentJob.State = FEE_GARBAGE_COLLECT_DATA_READ_REQUESTED;\r
                        } else {\r
                                /* Yes, we are finished */\r
-                               VALIDATE_NO_RV(CurrentJob.AdminFlsBlockPtr->Status == BLOCK_STATUS_INVALIDATED, FEE_GARBAGE_WRITE_HEADER_ID, FEE_UNEXPECTED_STATUS);\r
+                               DET_VALIDATE_NO_RV(CurrentJob.AdminFlsBlockPtr->Status == BLOCK_STATUS_INVALIDATED, FEE_GARBAGE_WRITE_HEADER_ID, FEE_UNEXPECTED_STATUS);\r
                                CurrentJob.State = FEE_GARBAGE_COLLECT_MAGIC_WRITE_REQUESTED;\r
                        }\r
                } else {\r
@@ -1203,17 +1203,21 @@ Std_ReturnType Fee_Read(uint16 blockNumber, uint16 blockOffset, uint8* dataBuffe
        uint16 blockIndex;\r
        uint16 dataset;\r
 \r
-       VALIDATE_RV(ModuleStatus != MEMIF_UNINIT, FEE_READ_ID, FEE_E_UNINIT, E_NOT_OK);\r
-       VALIDATE_RV(ModuleStatus == MEMIF_IDLE, FEE_READ_ID, FEE_E_BUSY, E_NOT_OK);\r
+       DET_VALIDATE_RV(ModuleStatus != MEMIF_UNINIT, FEE_READ_ID, FEE_E_UNINIT, E_NOT_OK);\r
+\r
+       if( !(ModuleStatus == MEMIF_IDLE) ) {\r
+               DET_REPORTERROR(MODULE_ID_FEE, FEE_READ_ID, FEE_E_BUSY, E_NOT_OK);\r
+               return E_NOT_OK;\r
+       }\r
 \r
        blockIndex = GET_BLOCK_INDEX_FROM_BLOCK_NUMBER(blockNumber);\r
-       VALIDATE_RV(blockIndex < FEE_NUM_OF_BLOCKS, FEE_READ_ID, FEE_E_INVALID_BLOCK_NO, E_NOT_OK);\r
-       VALIDATE_RV(dataBufferPtr != NULL, FEE_READ_ID, FEE_E_INVALID_DATA_PTR, E_NOT_OK);\r
-       VALIDATE_RV(blockOffset < Fee_Config.BlockConfig[blockIndex].BlockSize, FEE_READ_ID, FEE_E_INVALID_BLOCK_OFS, E_NOT_OK);\r
-       VALIDATE_RV(blockOffset + length <= Fee_Config.BlockConfig[blockIndex].BlockSize, FEE_READ_ID, FEE_E_INVALID_BLOCK_LEN, E_NOT_OK);\r
+       DET_VALIDATE_RV(blockIndex < FEE_NUM_OF_BLOCKS, FEE_READ_ID, FEE_E_INVALID_BLOCK_NO, E_NOT_OK);\r
+       DET_VALIDATE_RV(dataBufferPtr != NULL, FEE_READ_ID, FEE_E_INVALID_DATA_PTR, E_NOT_OK);\r
+       DET_VALIDATE_RV(blockOffset < Fee_Config.BlockConfig[blockIndex].BlockSize, FEE_READ_ID, FEE_E_INVALID_BLOCK_OFS, E_NOT_OK);\r
+       DET_VALIDATE_RV(blockOffset + length <= Fee_Config.BlockConfig[blockIndex].BlockSize, FEE_READ_ID, FEE_E_INVALID_BLOCK_LEN, E_NOT_OK);\r
 \r
        dataset = GET_DATASET_FROM_BLOCK_NUMBER(blockNumber);\r
-       VALIDATE_RV(dataset < FEE_MAX_NUM_SETS, FEE_READ_ID, FEE_E_INVALID_BLOCK_NO, E_NOT_OK);\r
+       DET_VALIDATE_RV(dataset < FEE_MAX_NUM_SETS, FEE_READ_ID, FEE_E_INVALID_BLOCK_NO, E_NOT_OK);\r
 \r
 \r
        /** @req FEE022 */\r
@@ -1241,15 +1245,19 @@ Std_ReturnType Fee_Write(uint16 blockNumber, uint8* dataBufferPtr)
        uint16 blockIndex;\r
        uint16 dataset;\r
 \r
-       VALIDATE_RV(ModuleStatus != MEMIF_UNINIT, FEE_WRITE_ID, FEE_E_UNINIT, E_NOT_OK);\r
-       VALIDATE_RV(ModuleStatus == MEMIF_IDLE, FEE_WRITE_ID, FEE_E_BUSY, E_NOT_OK);\r
+       DET_VALIDATE_RV(ModuleStatus != MEMIF_UNINIT, FEE_WRITE_ID, FEE_E_UNINIT, E_NOT_OK);\r
+\r
+       if( !(ModuleStatus == MEMIF_IDLE) ) {\r
+               DET_REPORTERROR(MODULE_ID_FEE, FEE_READ_ID, FEE_E_BUSY, E_NOT_OK);\r
+               return E_NOT_OK;\r
+       }\r
 \r
        blockIndex = GET_BLOCK_INDEX_FROM_BLOCK_NUMBER(blockNumber);\r
-       VALIDATE_RV(blockIndex < FEE_NUM_OF_BLOCKS, FEE_WRITE_ID, FEE_E_INVALID_BLOCK_NO, E_NOT_OK);\r
-       VALIDATE_RV(dataBufferPtr != NULL, FEE_WRITE_ID, FEE_E_INVALID_DATA_PTR, E_NOT_OK);\r
+       DET_VALIDATE_RV(blockIndex < FEE_NUM_OF_BLOCKS, FEE_WRITE_ID, FEE_E_INVALID_BLOCK_NO, E_NOT_OK);\r
+       DET_VALIDATE_RV(dataBufferPtr != NULL, FEE_WRITE_ID, FEE_E_INVALID_DATA_PTR, E_NOT_OK);\r
 \r
        dataset = GET_DATASET_FROM_BLOCK_NUMBER(blockNumber);\r
-       VALIDATE_RV(dataset < FEE_MAX_NUM_SETS, FEE_WRITE_ID, FEE_E_INVALID_BLOCK_NO, E_NOT_OK);\r
+       DET_VALIDATE_RV(dataset < FEE_MAX_NUM_SETS, FEE_WRITE_ID, FEE_E_INVALID_BLOCK_NO, E_NOT_OK);\r
 \r
 \r
        /** @req FEE025 */\r
@@ -1306,14 +1314,17 @@ Std_ReturnType Fee_InvalidateBlock(uint16 blockNumber)
        uint16 blockIndex;\r
        uint16 dataset;\r
 \r
-       VALIDATE_RV(ModuleStatus != MEMIF_UNINIT, FEE_INVALIDATE_BLOCK_ID, FEE_E_UNINIT, E_NOT_OK);\r
-       VALIDATE_RV(ModuleStatus == MEMIF_IDLE, FEE_INVALIDATE_BLOCK_ID, FEE_E_BUSY, E_NOT_OK);\r
+       DET_VALIDATE_RV(ModuleStatus != MEMIF_UNINIT, FEE_INVALIDATE_BLOCK_ID, FEE_E_UNINIT, E_NOT_OK);\r
+       if( !(ModuleStatus == MEMIF_IDLE) ) {\r
+               DET_REPORTERROR(MODULE_ID_FEE, FEE_READ_ID, FEE_E_BUSY, E_NOT_OK);\r
+               return E_NOT_OK;\r
+       }\r
 \r
        blockIndex = GET_BLOCK_INDEX_FROM_BLOCK_NUMBER(blockNumber);\r
-       VALIDATE_RV(blockIndex < FEE_NUM_OF_BLOCKS, FEE_INVALIDATE_BLOCK_ID, FEE_E_INVALID_BLOCK_NO, E_NOT_OK);\r
+       DET_VALIDATE_RV(blockIndex < FEE_NUM_OF_BLOCKS, FEE_INVALIDATE_BLOCK_ID, FEE_E_INVALID_BLOCK_NO, E_NOT_OK);\r
 \r
        dataset = GET_DATASET_FROM_BLOCK_NUMBER(blockNumber);\r
-       VALIDATE_RV(dataset < FEE_MAX_NUM_SETS, FEE_INVALIDATE_BLOCK_ID, FEE_E_INVALID_BLOCK_NO, E_NOT_OK);\r
+       DET_VALIDATE_RV(dataset < FEE_MAX_NUM_SETS, FEE_INVALIDATE_BLOCK_ID, FEE_E_INVALID_BLOCK_NO, E_NOT_OK);\r
 \r
 \r
        ModuleStatus = MEMIF_BUSY;\r