#include "Ea_Cbk.h"\r
#include "Ea_Types.h"\r
\r
+#include "Mcu.h"\r
+\r
+/** @req EA011 */\r
+/** @req EA045 */\r
+#if (STD_ON == EA_DEV_ERROR_DETECT)\r
+#include "Det.h"\r
+#endif\r
+\r
+\r
\r
// States used by EA_MainFunction to control the internal state of the module.\r
typedef enum\r
\r
} Ea_JobStatus;\r
\r
-#include "Mcu.h"\r
-\r
-/** @req EA011 */\r
-/** @req EA045 */\r
-#if (STD_ON == EA_DEV_ERROR_DETECT)\r
-#include "Det.h"\r
-#endif\r
\r
/*\r
define EA module notification callback macro \r
static uint16 EA_GET_BLOCK(uint16 BlockNumber);\r
static Eep_AddressType calculateEepAddress(uint16 BlockIndex);\r
static uint16 calculateBlockLength(uint16 BlockIndex);\r
-static void handleLowerLayerRead();\r
-static void handleLowerLayerWrite();\r
-static void handleLowerLayerErase();\r
+static void handleLowerLayerRead(void);\r
+static void handleLowerLayerWrite(void);\r
+static void handleLowerLayerErase(void);\r
static uint8 verifyChecksum(Ea_AdminBlock* block);\r
static void addChecksum(Ea_AdminBlock* block);\r
\r
imask_t state;\r
\r
/*@req <EA130> */\r
- if (E_OK != Ea_ValidateInitialized(EA_READ_ID))\r
+ if (E_OK != Ea_ValidateInitialized(EA_READ_ID)){\r
return E_NOT_OK;\r
-\r
+ }\r
/*@req <EA147> */\r
- if (E_OK != Ea_ValidateBlock(BlockNumber, EA_READ_ID))\r
+ if (E_OK != Ea_ValidateBlock(BlockNumber, EA_READ_ID)){\r
return E_NOT_OK;\r
-\r
+ }\r
/*@req <EA137> */\r
/* Lock down the module to ourself */\r
Irq_Save(state);\r
imask_t state;\r
\r
/*@req <EA131> */\r
- if (E_OK != Ea_ValidateInitialized(EA_WRITE_ID))\r
+ if (E_OK != Ea_ValidateInitialized(EA_WRITE_ID)){\r
return E_NOT_OK;\r
-\r
+ }\r
/*@req <EA148> */\r
- if (E_OK != Ea_ValidateBlock(BlockNumber, EA_WRITE_ID))\r
+ if (E_OK != Ea_ValidateBlock(BlockNumber, EA_WRITE_ID)){\r
return E_NOT_OK;\r
-\r
+ }\r
/*@req <EA137>\r
*/\r
/* Lock down the module to ourself */\r
void Ea_Cancel(void)\r
{\r
/*@req <EA132> */\r
- if (E_OK != Ea_ValidateInitialized(EA_CANCEL_ID))\r
- return;\r
-\r
- /*@req <EA078> [Reset the Ea module's internal variables to make the module ready for a new job request.]*/\r
- Ea_Global.JobType = EA_JOB_NONE;\r
- Ea_Global.ModuleStatus = MEMIF_IDLE;\r
- Ea_Global.JobResult = MEMIF_JOB_CANCELLED;\r
+ if (E_OK != Ea_ValidateInitialized(EA_CANCEL_ID)){\r
+ // Do nothing.\r
+ } else {\r
+ /*@req <EA078> [Reset the Ea module's internal variables to make the module ready for a new job request.]*/\r
+ Ea_Global.JobType = EA_JOB_NONE;\r
+ Ea_Global.ModuleStatus = MEMIF_IDLE;\r
+ Ea_Global.JobResult = MEMIF_JOB_CANCELLED;\r
\r
- /*@req <EA077> [Call the cancel function of the underlying EEPROM driver.]*/\r
- Eep_Cancel();\r
+ /*@req <EA077> [Call the cancel function of the underlying EEPROM driver.]*/\r
+ Eep_Cancel();\r
+ }\r
\r
return;\r
}\r
/*@req EA089 */\r
MemIf_StatusType Ea_GetStatus(void)\r
{\r
+ MemIf_StatusType rv;\r
+\r
/*@req <EA133> */\r
/*@req <EA034> */\r
- if (E_OK != Ea_ValidateInitialized(EA_GETSTATUS_ID))\r
- return MEMIF_UNINIT;\r
-\r
+ if (E_OK != Ea_ValidateInitialized(EA_GETSTATUS_ID)){\r
+ rv = MEMIF_UNINIT;\r
+ }\r
/*@req <EA156> */\r
- if (MEMIF_IDLE == Ea_Global.ModuleStatus)\r
- return MEMIF_IDLE;\r
-\r
+ else if (MEMIF_IDLE == Ea_Global.ModuleStatus){\r
+ rv = MEMIF_IDLE;\r
+ }\r
/*@req <EA073> [check if EA Module is busy with internal management operations.]*/ \r
- if (MEMIF_BUSY_INTERNAL == Ea_Global.ModuleStatus)\r
- {\r
- return MEMIF_BUSY_INTERNAL;\r
+ else if (MEMIF_BUSY_INTERNAL == Ea_Global.ModuleStatus){\r
+ rv = MEMIF_BUSY_INTERNAL;\r
+ } else {\r
+ /*@req <EA157> */\r
+ rv = MEMIF_BUSY;\r
}\r
-\r
- /*@req <EA157> */\r
- return MEMIF_BUSY;\r
+ return rv;\r
}\r
\r
/*@req <EA090> */\r
MemIf_JobResultType Ea_GetJobResult(void)\r
{\r
+ MemIf_JobResultType rv;\r
/*@req <EA134> */\r
- if (E_OK != Ea_ValidateInitialized(EA_GETJOBRESULT_ID))\r
- return MEMIF_JOB_FAILED;\r
-\r
- /*@req <EA035> */\r
- return Ea_Global.JobResult;\r
+ if (E_OK != Ea_ValidateInitialized(EA_GETJOBRESULT_ID)){\r
+ rv = MEMIF_JOB_FAILED;\r
+ } else {\r
+ /*@req <EA035> */\r
+ rv = Ea_Global.JobResult;\r
+ }\r
+ return rv;\r
}\r
\r
/*@req <EA091> */\r
imask_t state;\r
\r
/*@req <EA135> */\r
- if (E_OK != Ea_ValidateInitialized(EA_INVALIDATEBLOCK_ID))\r
+ if (E_OK != Ea_ValidateInitialized(EA_INVALIDATEBLOCK_ID)){\r
return E_NOT_OK;\r
-\r
+ }\r
/*@req <EA149> */\r
- if (E_OK != Ea_ValidateBlock(BlockNumber, EA_INVALIDATEBLOCK_ID))\r
+ if (E_OK != Ea_ValidateBlock(BlockNumber, EA_INVALIDATEBLOCK_ID)){\r
return E_NOT_OK;\r
-\r
+ }\r
/*@req <EA137>\r
*/\r
/* Lock down the module to ourself */\r
{\r
Irq_Save(state);\r
MemIf_StatusType status = Eep_GetStatus();\r
- if ((status == MEMIF_BUSY) || (status == MEMIF_BUSY_INTERNAL))\r
+ if ((status == MEMIF_BUSY) || (status == MEMIF_BUSY_INTERNAL)){\r
Ea_Global.JobStatus = EA_PENDING_ADMIN_WRITE;\r
+ }\r
Irq_Restore(state);\r
}\r
else\r
imask_t state;\r
\r
/*@req <EA136> */\r
- if (E_OK != Ea_ValidateInitialized(EA_ERASEIMMEDIATEBLOCK_ID))\r
+ if (E_OK != Ea_ValidateInitialized(EA_ERASEIMMEDIATEBLOCK_ID)){\r
return E_NOT_OK;\r
-\r
+ }\r
/*@req <EA152> */\r
- if (E_OK != Ea_ValidateBlock(BlockNumber, EA_ERASEIMMEDIATEBLOCK_ID))\r
+ if (E_OK != Ea_ValidateBlock(BlockNumber, EA_ERASEIMMEDIATEBLOCK_ID)){\r
return E_NOT_OK;\r
-\r
+ }\r
/*@req <EA137>\r
*/\r
/* Lock down the module to ourself */\r
{\r
Irq_Save(state);\r
MemIf_StatusType status = Eep_GetStatus();\r
- if ((status == MEMIF_BUSY) || (status == MEMIF_BUSY_INTERNAL))\r
+ if ((status == MEMIF_BUSY) || (status == MEMIF_BUSY_INTERNAL)){\r
Ea_Global.JobStatus = EA_PENDING_WRITE;\r
+ }\r
Irq_Restore(state);\r
}\r
}\r
{\r
Irq_Save(state);\r
MemIf_StatusType status = Eep_GetStatus();\r
- if ((status == MEMIF_BUSY) || (status == MEMIF_BUSY_INTERNAL))\r
+ if ((status == MEMIF_BUSY) || (status == MEMIF_BUSY_INTERNAL)){\r
Ea_Global.JobStatus = EA_PENDING_READ;\r
+ }\r
Irq_Restore(state);\r
}\r
}\r
{\r
Irq_Save(state);\r
MemIf_StatusType status = Eep_GetStatus();\r
- if ((status == MEMIF_BUSY) || (status == MEMIF_BUSY_INTERNAL))\r
+ if ((status == MEMIF_BUSY) || (status == MEMIF_BUSY_INTERNAL)){\r
Ea_Global.JobStatus = EA_PENDING_ERASE;\r
+ }\r
Irq_Restore(state);\r
}\r
}\r
Ea_Global.JobResult = MEMIF_JOB_CANCELLED;\r
Ea_Global.JobStatus = EA_PENDING_NONE;\r
Ea_Global.ModuleStatus = MEMIF_IDLE;\r
- return; // Should we call upper layer here?\r
- }\r
-\r
- /*@req <EA051> */\r
- /*@req <EA054> */\r
- switch(Ea_Global.JobStatus)\r
- {\r
- case EA_PENDING_READ:\r
- handleLowerLayerRead();\r
- break;\r
- case EA_PENDING_WRITE:\r
- handleLowerLayerWrite();\r
- break;\r
- case EA_PENDING_ERASE:\r
- handleLowerLayerErase();\r
- break;\r
- case EA_PENDING_ADMIN_WRITE:\r
- Ea_Global.JobType = EA_JOB_NONE;\r
- Ea_Global.JobStatus = EA_PENDING_NONE;\r
- Ea_Global.ModuleStatus = MEMIF_IDLE;\r
- /*@req <EA141> */\r
+ // Should we call upper layer here?\r
+ } else {\r
+ /*@req <EA051> */\r
/*@req <EA054> */\r
- /*@req <EA142> */\r
- /*@req <EA143> */\r
- EA_JOB_END_NOTIFICATION();\r
- break;\r
- default:\r
- assert(0); // Should never come here\r
- break;\r
+ switch(Ea_Global.JobStatus)\r
+ {\r
+ case EA_PENDING_READ:\r
+ handleLowerLayerRead();\r
+ break;\r
+ case EA_PENDING_WRITE:\r
+ handleLowerLayerWrite();\r
+ break;\r
+ case EA_PENDING_ERASE:\r
+ handleLowerLayerErase();\r
+ break;\r
+ case EA_PENDING_ADMIN_WRITE:\r
+ Ea_Global.JobType = EA_JOB_NONE;\r
+ Ea_Global.JobStatus = EA_PENDING_NONE;\r
+ Ea_Global.ModuleStatus = MEMIF_IDLE;\r
+ /*@req <EA141> */\r
+ /*@req <EA054> */\r
+ /*@req <EA142> */\r
+ /*@req <EA143> */\r
+ EA_JOB_END_NOTIFICATION();\r
+ break;\r
+ default:\r
+ assert(0); // Should never come here\r
+ break;\r
+ }\r
}\r
+ return;\r
}\r
\r
-void handleLowerLayerRead()\r
+static void handleLowerLayerRead()\r
{\r
Ea_AdminBlock* adminBlock;\r
\r
EA_JOB_END_NOTIFICATION();\r
}\r
\r
-void handleLowerLayerWrite()\r
+static void handleLowerLayerWrite()\r
{\r
Ea_AdminBlock* adminBlock;\r
Std_ReturnType result;\r
{\r
Irq_Save(state);\r
MemIf_StatusType status = Eep_GetStatus();\r
- if ((status == MEMIF_BUSY) || (status == MEMIF_BUSY_INTERNAL))\r
+ if ((status == MEMIF_BUSY) || (status == MEMIF_BUSY_INTERNAL)){\r
Ea_Global.JobStatus = EA_PENDING_ADMIN_WRITE;\r
+ }\r
Irq_Restore(state);\r
} else\r
{\r
}\r
}\r
\r
-void handleLowerLayerErase()\r
+static void handleLowerLayerErase()\r
{\r
Ea_AdminBlock* adminBlock;\r
Std_ReturnType result;\r
{\r
Irq_Save(state);\r
MemIf_StatusType status = Eep_GetStatus();\r
- if ((status == MEMIF_BUSY) || (status == MEMIF_BUSY_INTERNAL))\r
+ if ((status == MEMIF_BUSY) || (status == MEMIF_BUSY_INTERNAL)){\r
Ea_Global.JobStatus = EA_PENDING_ADMIN_WRITE;\r
+ }\r
Irq_Restore(state);\r
} else\r
{\r
Irq_Save(state);\r
\r
/*@req EA154*/\r
- if (Ea_Global.JobResult == MEMIF_JOB_PENDING)\r
+ if (Ea_Global.JobResult == MEMIF_JOB_PENDING){\r
Ea_Global.JobResult = MEMIF_JOB_FAILED;\r
+ }\r
\r
Ea_Global.JobType = EA_JOB_NONE;\r
Ea_Global.JobStatus = EA_PENDING_NONE;\r
* Local service to calculate the actual eep address.\r
*/\r
/*@req <EA007>*/\r
-Eep_AddressType calculateEepAddress(uint16 BlockIndex)\r
+static Eep_AddressType calculateEepAddress(uint16 BlockIndex)\r
{\r
const Ea_BlockConfigType *EaBlockCon;\r
uint32 totalNumOfBlocks = 0;\r
- uint16 i = 0;\r
+ uint16 i;\r
\r
EaBlockCon = Ea_Global.EaBlockConfig;\r
uint16 blockNum = EaBlockCon[BlockIndex].EaBlockNumber;\r
{\r
int blocksize = EaBlockCon[i].EaBlockSize + sizeof(Ea_AdminBlock);\r
int numOfBlocks = blocksize / EA_VIRTUAL_PAGE_SIZE;\r
- if (blocksize % EA_VIRTUAL_PAGE_SIZE)\r
+ if (blocksize % EA_VIRTUAL_PAGE_SIZE){\r
numOfBlocks++;\r
+ }\r
\r
totalNumOfBlocks = totalNumOfBlocks + numOfBlocks;\r
}\r
return totalNumOfBlocks * EA_VIRTUAL_PAGE_SIZE;\r
}\r
\r
-uint16 calculateBlockLength(uint16 BlockIndex)\r
+static uint16 calculateBlockLength(uint16 BlockIndex)\r
{\r
const Ea_BlockConfigType *EaBlockCon;\r
\r
EaBlockCon = Ea_Global.EaBlockConfig;\r
int blocksize = EaBlockCon[BlockIndex].EaBlockSize + sizeof(Ea_AdminBlock);\r
int numOfBlocks = blocksize / EA_VIRTUAL_PAGE_SIZE;\r
- if (blocksize % EA_VIRTUAL_PAGE_SIZE)\r
+ if (blocksize % EA_VIRTUAL_PAGE_SIZE){\r
numOfBlocks++;\r
+ }\r
\r
- return numOfBlocks * EA_VIRTUAL_PAGE_SIZE;\r
+ return numOfBlocks * EA_VIRTUAL_PAGE_SIZE);\r
}\r
\r
/* Some very simple checksum calculations */\r
/* Better than nothing :-) */\r
static uint8 verifyChecksum(Ea_AdminBlock* block)\r
{\r
- uint8 result = 0;\r
+ uint8 result;\r
uint8* array = (uint8*) block;\r
\r
result = array[0];\r
\r
static void addChecksum(Ea_AdminBlock* block)\r
{\r
- uint8 result = 0;\r
+ uint8 result;\r
uint8* array = (uint8*) block;\r
\r
result = array[0];\r