]> rtime.felk.cvut.cz Git - arc.git/commitdiff
Updated Fee after Lint check.
authorpete <devnull@localhost>
Wed, 29 Dec 2010 09:53:58 +0000 (10:53 +0100)
committerpete <devnull@localhost>
Wed, 29 Dec 2010 09:53:58 +0000 (10:53 +0100)
include/Fee.h
memory/Fee/Fee.c

index cb7e5b2ec6d5eb36bac1cc2d0540226922c8b135..0bcf9f616a302dc2dc5d490c46e921cdbcff84da 100644 (file)
 void Fee_MainFunction(void);   /** @req FEE097 */\r
 \r
 void Fee_Init(void);   /** @req FEE085 */\r
-void Fee_SetMode(MemIf_ModeType Mode); /** @req FEE086 */\r
-Std_ReturnType Fee_Read(uint16 BlockNumber, uint16 BlockOffset, uint8* DataBufferPtr, uint16 Length); /** @req FEE087 */\r
-Std_ReturnType Fee_Write(uint16 BlockNumber, uint8* DataBufferPtr); /** @req FEE088 */\r
+void Fee_SetMode(MemIf_ModeType mode); /** @req FEE086 */\r
+Std_ReturnType Fee_Read(uint16 blockNumber, uint16 blockOffset, uint8* dataBufferPtr, uint16 length); /** @req FEE087 */\r
+Std_ReturnType Fee_Write(uint16 blockNumber, uint8* dataBufferPtr); /** @req FEE088 */\r
 void Fee_Cancel(void); /** @req FEE089 */\r
 MemIf_StatusType Fee_GetStatus(void);  /** @req FEE090 */\r
 MemIf_JobResultType Fee_GetJobResult(void);    /** @req FEE091 */\r
-Std_ReturnType Fee_InvalidateBlock(uint16 BlockNumber);        /** @req FEE092 */\r
-Std_ReturnType Fee_EraseImmediateBlock(uint16 BlockNumber);    /** @req FEE094 */\r
+Std_ReturnType Fee_InvalidateBlock(uint16 blockNumber);        /** @req FEE092 */\r
+Std_ReturnType Fee_EraseImmediateBlock(uint16 blockNumber);    /** @req FEE094 */\r
 \r
 \r
 \r
index b1144a5671371ef891278703bd4fd7645b4969f4..ae50e94f049892b378bb5d9f03de12c4ca3135b9 100644 (file)
 #define VALIDATE_RV(_exp,_api,_err,_rv ) \\r
         if( !(_exp) ) { \\r
           Det_ReportError(MODULE_ID_FEE, 0, _api, _err); \\r
-          return _rv; \\r
+          /* PC-Lint exception (MISRA 14.7) - Allow return statement before end of function in validate macros */ \\r
+          /*lint -e(904)*/return _rv; \\r
         }\r
 \r
 #define VALIDATE_NO_RV(_exp,_api,_err ) \\r
   if( !(_exp) ) { \\r
           Det_ReportError(MODULE_ID_FEE, 0, _api, _err); \\r
-          return; \\r
+          /* PC-Lint exception (MISRA 14.7)- Allow return statement before end of function in validate macros */ \\r
+          /*lint -e(904)*/ return; \\r
         }\r
 \r
 #define DET_REPORTERROR(_module,_instance,_api,_err) Det_ReportError(_module,_instance,_api,_err)\r
 \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
 /*\r
  * Block numbering recalculation macros
  */\r
-#define GET_BLOCK_INDEX_FROM_BLOCK_NUMBER(_blocknr)    (((_blocknr) >> NVM_DATASET_SELECTION_BITS) - 1)\r
-#define GET_DATASET_FROM_BLOCK_NUMBER(_blocknr)        ((_blocknr) & ((1 << NVM_DATASET_SELECTION_BITS) - 1))\r
-#define BLOCK_INDEX_AND_SET_TO_BLOCKNR(_blocknr, _set) ((_blocknr + 1) << NVM_DATASET_SELECTION_BITS | set)\r
+#define GET_BLOCK_INDEX_FROM_BLOCK_NUMBER(_blocknr)    (((_blocknr) >> NVM_DATASET_SELECTION_BITS) - 1u)\r
+#define GET_DATASET_FROM_BLOCK_NUMBER(_blocknr)        ((_blocknr) & ((uint16)((uint16)1u << NVM_DATASET_SELECTION_BITS) - 1u))\r
+#define BLOCK_INDEX_AND_SET_TO_BLOCKNR(_blocknr, _set) ((uint16)((_blocknr + 1u) << NVM_DATASET_SELECTION_BITS) | set)\r
 \r
 /*\r
  * Page alignment macros
  */\r
-#define PAGE_ALIGN(_size)      ((((_size) + FEE_VIRTUAL_PAGE_SIZE - 1) / FEE_VIRTUAL_PAGE_SIZE) * FEE_VIRTUAL_PAGE_SIZE)\r
+#define PAGE_ALIGN(_size)      ((uint16)((((_size) + FEE_VIRTUAL_PAGE_SIZE - 1) / FEE_VIRTUAL_PAGE_SIZE) * FEE_VIRTUAL_PAGE_SIZE))\r
 \r
 /*\r
  * Bank properties list
@@ -159,7 +163,7 @@ typedef struct {
 \r
 #define BLOCK_CTRL_PAGE_SIZE   PAGE_ALIGN(sizeof(FlsBlockControlType))\r
 \r
-#define BLOCK_CTRL_DATA_POS_OFFSET             0\r
+#define BLOCK_CTRL_DATA_POS_OFFSET             (/*lint --e(835)*/0)            // Inform PC-Lint that I want the constant to be zero\r
 #define BLOCK_CTRL_MAGIC_POS_OFFSET            BLOCK_CTRL_DATA_PAGE_SIZE\r
 \r
 typedef union {\r
@@ -225,9 +229,6 @@ typedef enum {
   FEE_READ_REQUESTED,\r
   FEE_READ,\r
 \r
-  FEE_CANCEL_REQUESTED,\r
-  FEE_CANCEL_PENDING,\r
-\r
   FEE_INVALIDATE_REQUESTED,\r
   FEE_INVALIDATE_MARK_BANK_OLD,\r
   FEE_WRITE_INVALIDATE_HEADER_REQUESTED,\r
@@ -241,7 +242,7 @@ typedef enum {
   FEE_GARBAGE_COLLECT_DATA_WRITE,\r
   FEE_GARBAGE_COLLECT_MAGIC_WRITE_REQUESTED,\r
   FEE_GARBAGE_COLLECT_MAGIC_WRITE,\r
-  FEE_GARBAGE_COLLECT_ERASE,\r
+  FEE_GARBAGE_COLLECT_ERASE\r
 } CurrentJobStateType;\r
 \r
 typedef struct {\r
@@ -253,8 +254,8 @@ typedef struct {
        AdminFlsBlockType                       *AdminFlsBlockPtr;\r
        union {\r
                struct {\r
-                       uint16                          NrOfBanks;\r
-                       uint16                          BankNumber;\r
+                       uint                          NrOfBanks;\r
+                       uint                          BankNumber;\r
                        Fls_AddressType         BlockAdminAddress;\r
                }Startup;\r
                struct {\r
@@ -271,11 +272,10 @@ typedef struct {
                        Fls_AddressType         WriteDataAddress;\r
                }Invalidate;\r
                struct {\r
-                       uint16                          NrOfBanks;\r
-                       uint16                          BankNumber;\r
+                       uint8                           BankNumber;\r
                        Fls_AddressType         WriteAdminAddress;\r
                        Fls_AddressType         WriteDataAddress;\r
-                       sint16                          BytesLeft;\r
+                       uint16                          BytesLeft;\r
                        uint16                          DataOffset;\r
                }GarbageCollect;\r
        } Op;\r
@@ -284,6 +284,7 @@ typedef struct {
 static CurrentJobType CurrentJob = {\r
                .State = FEE_IDLE,\r
                .InStateCounter = 0\r
+               //lint -e{785}          PC-Lint (785) - rest of structure members is initialized when used.\r
 };\r
 \r
 /*\r
@@ -297,10 +298,7 @@ static CurrentJobType CurrentJob = {
  ***************************************/\r
 \r
 #if (FEE_POLLING_MODE == STD_ON)\r
-static void SetFlsJobBusy()\r
-{\r
-       /* Nothing needed here */\r
-}\r
+#define SetFlsJobBusy()                        /* Nothing needs to be done here */\r
 \r
 static boolean CheckFlsJobFinnished(void)\r
 {\r
@@ -373,7 +371,8 @@ static void StartupStartJob(void)
        if (Fls_GetStatus() == MEMIF_IDLE) {\r
                CurrentJob.State = FEE_STARTUP_READ_BANK1_STATUS;\r
                /* Read bank status of bank 1 */\r
-               if (Fls_Read(BankProp[0].End - BANK_CTRL_PAGE_SIZE, (uint8*)&AdminFls.BankStatus[0], sizeof(FlsBankStatusType)) == E_OK) {\r
+               // PC-Lint exception (MISRA 11.4) - Pointer to pointer conversion ok by AUTOSAR\r
+               if (Fls_Read(BankProp[0].End - BANK_CTRL_PAGE_SIZE, /*lint -e(926)*/(uint8*)&AdminFls.BankStatus[0], sizeof(FlsBankStatusType)) == E_OK) {\r
                        SetFlsJobBusy();\r
                } else {\r
                        AbortStartup(Fls_GetJobResult());\r
@@ -405,7 +404,8 @@ static void StartupReadBank2StatusRequested(void)
        if (Fls_GetStatus() == MEMIF_IDLE) {\r
                /* Read bank status of bank 2 */\r
                CurrentJob.State = FEE_STARTUP_READ_BANK2_STATUS;\r
-               if (Fls_Read(BankProp[1].End - BANK_CTRL_PAGE_SIZE, (uint8*)&AdminFls.BankStatus[1], sizeof(FlsBankStatusType)) == E_OK) {\r
+               // PC-Lint exception (MISRA 11.4) - Pointer to pointer conversion ok by AUTOSAR\r
+               if (Fls_Read(BankProp[1].End - BANK_CTRL_PAGE_SIZE, /*lint -e(926)*/(uint8*)&AdminFls.BankStatus[1], sizeof(FlsBankStatusType)) == E_OK) {\r
                        SetFlsJobBusy();\r
                } else {\r
                        AbortStartup(Fls_GetJobResult());\r
@@ -445,7 +445,7 @@ static void StartupReadBank2Status(void)
                if (jobResult != MEMIF_JOB_OK) {\r
                        AbortStartup(jobResult);\r
                } else {\r
-                       CurrentJob.Op.Startup.BlockAdminAddress = BankProp[CurrentJob.Op.Startup.BankNumber].End - BLOCK_CTRL_PAGE_SIZE - BANK_CTRL_PAGE_SIZE;\r
+                       CurrentJob.Op.Startup.BlockAdminAddress = BankProp[CurrentJob.Op.Startup.BankNumber].End - (BLOCK_CTRL_PAGE_SIZE + BANK_CTRL_PAGE_SIZE);\r
                        CurrentJob.State = FEE_STARTUP_READ_BLOCK_ADMIN_REQUESTED;\r
                }\r
        }\r
@@ -480,9 +480,9 @@ static void StartupReadBlockAdmin(void)
                                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
+                               CurrentJob.Op.Startup.BlockAdminAddress = BankProp[CurrentJob.Op.Startup.BankNumber].End - (BLOCK_CTRL_PAGE_SIZE + BANK_CTRL_PAGE_SIZE);\r
                        } else { /* Block not empty */\r
-                               if ((memcmp(RWBuffer.BlockCtrl.MagicPage.Byte, BlockMagicMaster, BLOCK_MAGIC_LEN) == 0) &&\r
+                               if ((memcmp(RWBuffer.BlockCtrl.MagicPage.Magic, BlockMagicMaster, BLOCK_MAGIC_LEN) == 0) &&\r
                                                ((RWBuffer.BlockCtrl.DataPage.Data.Status == BLOCK_STATUS_INUSE) || (RWBuffer.BlockCtrl.DataPage.Data.Status == BLOCK_STATUS_INVALIDATED))) {\r
                                        /* This is a valid admin block */\r
                                        uint16 blockIndex;\r
@@ -512,7 +512,7 @@ static void StartupReadBlockAdmin(void)
                                /* If current bank is marked as old we need to switch to a new bank */\r
                                if (AdminFls.BankStatus[AdminFls.BankNumber] == BANK_STATUS_OLD) {\r
                                        AdminFls.BankNumber = (AdminFls.BankNumber + 1) % 2;\r
-                                       AdminFls.NewBlockAdminAddress = BankProp[AdminFls.BankNumber].End - BLOCK_CTRL_PAGE_SIZE - BANK_CTRL_PAGE_SIZE;\r
+                                       AdminFls.NewBlockAdminAddress = BankProp[AdminFls.BankNumber].End - (BLOCK_CTRL_PAGE_SIZE + BANK_CTRL_PAGE_SIZE);\r
                                        AdminFls.NewBlockDataAddress = BankProp[AdminFls.BankNumber].Start;\r
                                }\r
                                /* We are done! */\r
@@ -641,9 +641,9 @@ static void WriteMarkBankOldState(void)
                        AdminFls.BankStatus[AdminFls.BankNumber] = BANK_STATUS_OLD;\r
 \r
                        /* Change of bank */\r
-                       AdminFls.BankNumber ^= 0x1;\r
+                       AdminFls.BankNumber ^= 0x1u;\r
                        AdminFls.NewBlockDataAddress = BankProp[AdminFls.BankNumber].Start;\r
-                       AdminFls.NewBlockAdminAddress = BankProp[AdminFls.BankNumber].End - BLOCK_CTRL_PAGE_SIZE - BANK_CTRL_PAGE_SIZE;\r
+                       AdminFls.NewBlockAdminAddress = BankProp[AdminFls.BankNumber].End - (BLOCK_CTRL_PAGE_SIZE + BANK_CTRL_PAGE_SIZE);\r
 \r
                        CurrentJob.Op.Write.WriteDataAddress = AdminFls.NewBlockDataAddress;\r
                        CurrentJob.Op.Write.WriteAdminAddress = AdminFls.NewBlockAdminAddress;\r
@@ -723,7 +723,7 @@ static void WriteMagicRequested(void)
        if (Fls_GetStatus() == MEMIF_IDLE) {\r
                CurrentJob.State = FEE_WRITE_MAGIC;\r
                memset(RWBuffer.BlockCtrl.MagicPage.Byte, 0xff, BLOCK_CTRL_MAGIC_PAGE_SIZE);\r
-               memcpy(RWBuffer.BlockCtrl.MagicPage.Byte, BlockMagicMaster, BLOCK_MAGIC_LEN);\r
+               memcpy(RWBuffer.BlockCtrl.MagicPage.Magic, BlockMagicMaster, BLOCK_MAGIC_LEN);\r
                if (Fls_Write(CurrentJob.Op.Write.WriteAdminAddress + BLOCK_CTRL_MAGIC_POS_OFFSET, RWBuffer.BlockCtrl.MagicPage.Byte, BLOCK_CTRL_MAGIC_PAGE_SIZE) == E_OK) {\r
                        SetFlsJobBusy();\r
                } else {\r
@@ -773,55 +773,55 @@ static void CheckIfGarbageCollectionNeeded(void)
  */\r
 static void GarbageCollectStartJob(void)\r
 {\r
-       uint16 blockIndex,set;\r
+       uint16 blockIndex;\r
+       uint16 set;\r
        boolean found = FALSE;\r
-       uint8 sourceBank, destBank;\r
+       uint8 sourceBank;\r
 \r
        if (Fls_GetStatus() == MEMIF_IDLE) {\r
-               if (AdminFls.BankStatus[0] == BANK_STATUS_OLD) {\r
-                       sourceBank = 0;\r
-                       destBank = 1;\r
-               } else if (AdminFls.BankStatus[1] == BANK_STATUS_OLD) {\r
-                       sourceBank = 1;\r
-                       destBank = 0;\r
-               } else {\r
-                       CurrentJob.State = FEE_IDLE;\r
-                       return;\r
-               }\r
+               if ((AdminFls.BankStatus[0] == BANK_STATUS_OLD) || (AdminFls.BankStatus[1] == BANK_STATUS_OLD)) {\r
+                       if (AdminFls.BankStatus[0] == BANK_STATUS_OLD) {\r
+                               sourceBank = 0;\r
+                       } else {\r
+                               sourceBank = 1;\r
+                       }\r
 \r
-               for (blockIndex = 0; (blockIndex < FEE_NUM_OF_BLOCKS) && !found; blockIndex++) {\r
-                       for (set = 0; (set < FEE_MAX_NUM_SETS) && !found; set++) {\r
-                               if (AdminFls.BlockDescrTbl[blockIndex][set].Status != BLOCK_STATUS_EMPTY) {\r
-                                       if ((AdminFls.BlockDescrTbl[blockIndex][set].BlockAdminAddress >= BankProp[sourceBank].Start) && (AdminFls.BlockDescrTbl[blockIndex][set].BlockAdminAddress < (BankProp[sourceBank].End))) {\r
-                                               CurrentJob.AdminFlsBlockPtr = &AdminFls.BlockDescrTbl[blockIndex][set];\r
-                                               CurrentJob.BlockConfigPtr = &Fee_Config.BlockConfig[blockIndex];\r
-                                               CurrentJob.BlockNumber = BLOCK_INDEX_AND_SET_TO_BLOCKNR(blockIndex, set);\r
-                                               if (AdminFls.BlockDescrTbl[blockIndex][set].Status == BLOCK_STATUS_INVALIDATED) {\r
-                                                       CurrentJob.Length = 0;\r
-                                               } else {\r
-                                                       CurrentJob.Length = PAGE_ALIGN(CurrentJob.BlockConfigPtr->BlockSize);\r
+                       for (blockIndex = 0; (blockIndex < FEE_NUM_OF_BLOCKS) && (!found); blockIndex++) {\r
+                               for (set = 0; (set < FEE_MAX_NUM_SETS) && (!found); set++) {\r
+                                       if (AdminFls.BlockDescrTbl[blockIndex][set].Status != BLOCK_STATUS_EMPTY) {\r
+                                               if ((AdminFls.BlockDescrTbl[blockIndex][set].BlockAdminAddress >= BankProp[sourceBank].Start) && (AdminFls.BlockDescrTbl[blockIndex][set].BlockAdminAddress < (BankProp[sourceBank].End))) {\r
+                                                       CurrentJob.AdminFlsBlockPtr = &AdminFls.BlockDescrTbl[blockIndex][set];\r
+                                                       CurrentJob.BlockConfigPtr = &Fee_Config.BlockConfig[blockIndex];\r
+                                                       CurrentJob.BlockNumber = BLOCK_INDEX_AND_SET_TO_BLOCKNR(blockIndex, set);\r
+                                                       if (AdminFls.BlockDescrTbl[blockIndex][set].Status == BLOCK_STATUS_INVALIDATED) {\r
+                                                               CurrentJob.Length = 0;\r
+                                                       } else {\r
+                                                               CurrentJob.Length = PAGE_ALIGN(CurrentJob.BlockConfigPtr->BlockSize);\r
+                                                       }\r
+\r
+                                                       found = TRUE;\r
                                                }\r
-\r
-                                               found = TRUE;\r
                                        }\r
                                }\r
                        }\r
-               }\r
 \r
-               if (found) {\r
-                       CurrentJob.Op.GarbageCollect.WriteDataAddress = AdminFls.NewBlockDataAddress;\r
-                       CurrentJob.Op.GarbageCollect.WriteAdminAddress = AdminFls.NewBlockAdminAddress;\r
+                       if (found) {\r
+                               CurrentJob.Op.GarbageCollect.WriteDataAddress = AdminFls.NewBlockDataAddress;\r
+                               CurrentJob.Op.GarbageCollect.WriteAdminAddress = AdminFls.NewBlockAdminAddress;\r
 \r
-                       CurrentJob.State = FEE_GARBAGE_COLLECT_HEADER_WRITE;\r
-                       BlockHeaderDataWrite();\r
-               } else {\r
-                       if (Fls_Erase(BankProp[sourceBank].Start, BankProp[sourceBank].End - BankProp[sourceBank].Start) == E_OK) {\r
-                               SetFlsJobBusy();\r
+                               CurrentJob.State = FEE_GARBAGE_COLLECT_HEADER_WRITE;\r
+                               BlockHeaderDataWrite();\r
                        } else {\r
-                               AbortJob(Fls_GetJobResult());\r
+                               if (Fls_Erase(BankProp[sourceBank].Start, BankProp[sourceBank].End - BankProp[sourceBank].Start) == E_OK) {\r
+                                       SetFlsJobBusy();\r
+                               } else {\r
+                                       AbortJob(Fls_GetJobResult());\r
+                               }\r
+                               CurrentJob.Op.GarbageCollect.BankNumber = sourceBank;\r
+                               CurrentJob.State = FEE_GARBAGE_COLLECT_ERASE;\r
                        }\r
-                       CurrentJob.Op.GarbageCollect.BankNumber = sourceBank;\r
-                       CurrentJob.State = FEE_GARBAGE_COLLECT_ERASE;\r
+               } else {\r
+                       CurrentJob.State = FEE_IDLE;\r
                }\r
        }\r
 }\r
@@ -914,13 +914,13 @@ static void GarbageCollectWriteData(void)
 {\r
        if (CheckFlsJobFinnished()) {\r
                if (Fls_GetJobResult() == MEMIF_JOB_OK) {\r
-                       CurrentJob.Op.GarbageCollect.DataOffset += RWBUFFER_SIZE;\r
-                       CurrentJob.Op.GarbageCollect.BytesLeft -= RWBUFFER_SIZE;\r
-                       if (CurrentJob.Op.GarbageCollect.BytesLeft <= 0) {\r
+                       if (CurrentJob.Op.GarbageCollect.BytesLeft <= RWBUFFER_SIZE) {\r
                                /* Yes, we are finished */\r
                                CurrentJob.State = FEE_GARBAGE_COLLECT_MAGIC_WRITE_REQUESTED;\r
                        } else {\r
                                /* More data to move */\r
+                               CurrentJob.Op.GarbageCollect.DataOffset += RWBUFFER_SIZE;\r
+                               CurrentJob.Op.GarbageCollect.BytesLeft -= RWBUFFER_SIZE;\r
                                CurrentJob.State = FEE_GARBAGE_COLLECT_DATA_READ_REQUESTED;\r
                        }\r
                } else {\r
@@ -938,7 +938,7 @@ static void GarbageCollectWriteMagicRequested(void)
        if (Fls_GetStatus() == MEMIF_IDLE) {\r
                CurrentJob.State = FEE_GARBAGE_COLLECT_MAGIC_WRITE;\r
                memset(RWBuffer.BlockCtrl.MagicPage.Byte, 0xff, BLOCK_CTRL_MAGIC_PAGE_SIZE);\r
-               memcpy(RWBuffer.BlockCtrl.MagicPage.Byte, BlockMagicMaster, BLOCK_MAGIC_LEN);\r
+               memcpy(RWBuffer.BlockCtrl.MagicPage.Magic, BlockMagicMaster, BLOCK_MAGIC_LEN);\r
                if (Fls_Write(CurrentJob.Op.GarbageCollect.WriteAdminAddress + BLOCK_CTRL_MAGIC_POS_OFFSET, RWBuffer.BlockCtrl.MagicPage.Byte, BLOCK_CTRL_MAGIC_PAGE_SIZE) == E_OK) {\r
                        SetFlsJobBusy();\r
                } else {\r
@@ -992,7 +992,8 @@ static void BlockHeaderInvalidWrite(void)
        RWBuffer.BlockCtrl.DataPage.Data.BlockNo = CurrentJob.BlockNumber;\r
        RWBuffer.BlockCtrl.DataPage.Data.BlockDataAddress = AdminFls.NewBlockDataAddress;\r
        RWBuffer.BlockCtrl.DataPage.Data.BlockDataLength = 0;\r
-       memcpy(RWBuffer.BlockCtrl.MagicPage.Byte, BlockMagicMaster, BLOCK_MAGIC_LEN);\r
+       memset(RWBuffer.BlockCtrl.MagicPage.Byte, 0xff, BLOCK_CTRL_MAGIC_PAGE_SIZE);\r
+       memcpy(RWBuffer.BlockCtrl.MagicPage.Magic, BlockMagicMaster, BLOCK_MAGIC_LEN);\r
 \r
        if (Fls_Write(CurrentJob.Op.Invalidate.WriteAdminAddress + BLOCK_CTRL_DATA_POS_OFFSET, RWBuffer.Byte, BLOCK_CTRL_PAGE_SIZE) == E_OK) {\r
                SetFlsJobBusy();\r
@@ -1038,9 +1039,9 @@ static void InvalidateMarkBankOld(void)
                        AdminFls.BankStatus[AdminFls.BankNumber] = BANK_STATUS_OLD;\r
 \r
                        // Change of bank\r
-                       AdminFls.BankNumber ^= 0x1;\r
+                       AdminFls.BankNumber ^= 0x1u;\r
                        AdminFls.NewBlockDataAddress = BankProp[AdminFls.BankNumber].Start;\r
-                       AdminFls.NewBlockAdminAddress = BankProp[AdminFls.BankNumber].End - BLOCK_CTRL_PAGE_SIZE - BANK_CTRL_PAGE_SIZE;\r
+                       AdminFls.NewBlockAdminAddress = BankProp[AdminFls.BankNumber].End - (BLOCK_CTRL_PAGE_SIZE + BANK_CTRL_PAGE_SIZE);\r
 \r
                        CurrentJob.Op.Invalidate.WriteDataAddress = AdminFls.NewBlockDataAddress;\r
                        CurrentJob.Op.Invalidate.WriteAdminAddress = AdminFls.NewBlockAdminAddress;\r
@@ -1108,7 +1109,7 @@ void Fee_Init(void)
 \r
        AdminFls.BankNumber = 0;\r
        AdminFls.NewBlockDataAddress = BankProp[AdminFls.BankNumber].Start;\r
-       AdminFls.NewBlockAdminAddress = BankProp[AdminFls.BankNumber].End - BLOCK_CTRL_PAGE_SIZE - BANK_CTRL_PAGE_SIZE;\r
+       AdminFls.NewBlockAdminAddress = BankProp[AdminFls.BankNumber].End - (BLOCK_CTRL_PAGE_SIZE + BANK_CTRL_PAGE_SIZE);\r
 \r
        for (i = 0; i < NUM_OF_BANKS; i++) {\r
                AdminFls.BankStatus[i] = BANK_STATUS_NEW;\r
@@ -1133,6 +1134,7 @@ void Fee_SetMode(MemIf_ModeType mode)
 #if ( FLS_SET_MODE_API == STD_ON )\r
        Fls_SetMode(mode);\r
 #else\r
+       //lint --e{715} PC-Lint (715) - variable "mode" not used in this case\r
        DET_REPORTERROR(MODULE_ID_FEE, 0, FEE_SET_MODE_ID, FEE_E_NOT_SUPPORTED);\r
 #endif\r
 }\r
@@ -1149,7 +1151,7 @@ Std_ReturnType Fee_Read(uint16 blockNumber, uint16 blockOffset, uint8* dataBuffe
        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
 \r
-       VALIDATE_RV(blockNumber >= (1 << NVM_DATASET_SELECTION_BITS), FEE_READ_ID, FEE_E_INVALID_BLOCK_NO, E_NOT_OK);\r
+       VALIDATE_RV(blockNumber >= MIN_BLOCKNR, FEE_READ_ID, FEE_E_INVALID_BLOCK_NO, E_NOT_OK);\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
@@ -1188,7 +1190,7 @@ Std_ReturnType Fee_Write(uint16 blockNumber, uint8* dataBufferPtr)
        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
 \r
-       VALIDATE_RV(blockNumber >= (1 << NVM_DATASET_SELECTION_BITS), FEE_WRITE_ID, FEE_E_INVALID_BLOCK_NO, E_NOT_OK);\r
+       VALIDATE_RV(blockNumber >= MIN_BLOCKNR, FEE_WRITE_ID, FEE_E_INVALID_BLOCK_NO, E_NOT_OK);\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
@@ -1254,7 +1256,7 @@ Std_ReturnType Fee_InvalidateBlock(uint16 blockNumber)
        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
 \r
-       VALIDATE_RV(blockNumber >= (1 << NVM_DATASET_SELECTION_BITS), FEE_INVALIDATE_BLOCK_ID, FEE_E_INVALID_BLOCK_NO, E_NOT_OK);\r
+       VALIDATE_RV(blockNumber >= MIN_BLOCKNR, FEE_INVALIDATE_BLOCK_ID, FEE_E_INVALID_BLOCK_NO, E_NOT_OK);\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
 \r
@@ -1280,8 +1282,11 @@ Std_ReturnType Fee_InvalidateBlock(uint16 blockNumber)
  */\r
 Std_ReturnType Fee_EraseImmediateBlock(uint16 blockNumber)\r
 {\r
+       //lint --e{715} PC-Lint (715) - function is not implemented and thus variable "blockNumber" is not used yet\r
+\r
        DET_REPORTERROR(MODULE_ID_FEE, 0, FEE_ERASE_IMMEDIATE_ID, FEE_E_NOT_IMPLEMENTED_YET);\r
 \r
+\r
        return E_NOT_OK;\r
 }\r
 \r