]> rtime.felk.cvut.cz Git - arc.git/commitdiff
Minor refactoring of EcuM. ecum-dev
authoreija <devnull@localhost>
Thu, 3 Feb 2011 13:57:30 +0000 (14:57 +0100)
committereija <devnull@localhost>
Thu, 3 Feb 2011 13:57:30 +0000 (14:57 +0100)
include/EcuM.h
system/EcuM/EcuM.c
system/EcuM/EcuM_Internals.h
system/EcuM/EcuM_Main.c

index ac0bf50f860648a4a88243d37af76d27e67ced4e..aaeb3dc298f77ebb0379ae91a27a2ab27680731f 100644 (file)
@@ -180,9 +180,9 @@ Std_ReturnType EcuM_ComM_ReleaseRUN(NetworkHandleType channel);
 boolean EcuM_ComM_HasRequestedRUN(NetworkHandleType channel);\r
 #endif\r
 \r
-Std_ReturnType EcuM_SelectShutdownTarget(EcuM_StateType target, uint8 mode);\r
-Std_ReturnType EcuM_GetShutdownTarget(EcuM_StateType* target, uint8* mode);\r
-Std_ReturnType EcuM_GetLastShutdownTarget(EcuM_StateType* target, uint8* mode);\r
+Std_ReturnType EcuM_SelectShutdownTarget(EcuM_StateType shutdownTarget, uint8 sleepMode);\r
+Std_ReturnType EcuM_GetShutdownTarget(EcuM_StateType* shutdownTarget, uint8* sleepMode);\r
+Std_ReturnType EcuM_GetLastShutdownTarget(EcuM_StateType* shutdownTarget, uint8* sleepMode);\r
 \r
 EcuM_WakeupSourceType EcuM_GetPendingWakeupEvents(void);\r
 void EcuM_ClearWakeupEvent(EcuM_WakeupSourceType sources);\r
index cc0c810238df3f1683596ae705d79d2318da4184..e6062df32edaf2623f475863fbd73ba7d78ad261 100644 (file)
@@ -35,6 +35,7 @@ EcuM_GlobalType internal_data;
 \r
 void EcuM_Init( void )\r
 {\r
+       Std_ReturnType status;\r
        internal_data.current_state = ECUM_STATE_STARTUP_ONE;\r
 \r
        // Initialize drivers that are needed to determine PostBuild configuration\r
@@ -58,12 +59,18 @@ void EcuM_Init( void )
        // TODO Mcu_ResetType type = Mcu_GetResetReason();\r
 \r
        // Set default shutdown target\r
-       // TODO: Rewrite into function (EcuM_SelectShutdownTarget). //REQ:Ecum2181\r
-       internal_data.shutdown_target = internal_data.config->EcuMDefaultShutdownTarget;\r
-       internal_data.shutdown_mode = internal_data.config->EcuMDefaultShutdownMode;\r
+       status = EcuM_SelectShutdownTarget(internal_data.config->EcuMDefaultShutdownTarget,internal_data.config->EcuMDefaultSleepMode);/** @req EcuM2181 */\r
+       if(status!=E_OK){\r
+               //TODO: Report error.\r
+       }\r
+\r
 \r
        // Set default application mode\r
-       internal_data.app_mode = internal_data.config->EcuMDefaultAppMode;\r
+       status =  EcuM_SelectApplicationMode(internal_data.config->EcuMDefaultAppMode);\r
+       if(status!=E_OK){\r
+               //TODO: Report error.\r
+       }\r
+\r
 #if defined(USE_COMM)\r
        internal_data.run_comm_requests = 0;\r
 #endif\r
@@ -73,11 +80,13 @@ void EcuM_Init( void )
        internal_data.initiated = TRUE;\r
 \r
        // Start this baby up\r
-       StartOS(internal_data.app_mode);\r
+       AppModeType appMode;\r
+       StartOS(EcuM_GetApplicationMode(&appMode)); /** @req EcuM2141 */\r
 }\r
 \r
 void EcuM_StartupTwo(void)\r
 {\r
+       //TODO:  Validate that we are in state STARTUP_ONE.\r
 #if defined(USE_NVM)\r
        extern CounterType Os_Arc_OsTickCounter;\r
        TickType tickTimerStart, tickTimer, tickTimerElapsed;\r
@@ -169,10 +178,9 @@ Std_ReturnType EcuM_SelectApplicationMode(AppModeType appMode)
 {\r
        VALIDATE_RV(internal_data.initiated, ECUM_SELECTAPPMODE_ID, ECUM_E_NOT_INITIATED, E_NOT_OK);\r
 \r
-       // TODO Save this application mode for next startup\r
-       (void) appMode;\r
+       internal_data.app_mode = appMode;\r
 \r
-       return E_NOT_OK;\r
+       return E_OK;\r
 }\r
 \r
 Std_ReturnType EcuM_GetApplicationMode(AppModeType* appMode)\r
@@ -207,26 +215,26 @@ Std_ReturnType EcuM_GetBootTarget(EcuM_BootTargetType* target)
 }\r
 \r
 \r
-Std_ReturnType EcuM_SelectShutdownTarget(EcuM_StateType target, uint8 mode)\r
+Std_ReturnType EcuM_SelectShutdownTarget(EcuM_StateType shutdownTarget, uint8 sleepMode)\r
 {\r
        VALIDATE_RV(internal_data.initiated, ECUM_SELECTSHUTDOWNTARGET_ID, ECUM_E_NOT_INITIATED, E_NOT_OK);\r
-       VALIDATE_RV((target == ECUM_STATE_OFF) || (target == ECUM_STATE_RESET) || (target == ECUM_STATE_SLEEP), ECUM_SELECTSHUTDOWNTARGET_ID, ECUM_E_INVALID_PAR, E_NOT_OK);\r
+       VALIDATE_RV((shutdownTarget == ECUM_STATE_OFF) || (shutdownTarget == ECUM_STATE_RESET) || (shutdownTarget == ECUM_STATE_SLEEP), ECUM_SELECTSHUTDOWNTARGET_ID, ECUM_E_INVALID_PAR, E_NOT_OK);\r
 \r
-       internal_data.shutdown_target = target;\r
-       internal_data.shutdown_mode = mode;\r
+       internal_data.shutdown_target = shutdownTarget;\r
+       internal_data.sleep_mode = sleepMode;\r
 \r
        return E_OK;\r
 }\r
 \r
 \r
-Std_ReturnType EcuM_GetShutdownTarget(EcuM_StateType *target, uint8 *mode)\r
+Std_ReturnType EcuM_GetShutdownTarget(EcuM_StateType* shutdownTarget, uint8* sleepMode) /** @req EcuM2824 */\r
 {\r
        VALIDATE_RV(internal_data.initiated, ECUM_GETSHUTDOWNTARGET_ID, ECUM_E_NOT_INITIATED, E_NOT_OK);\r
-       VALIDATE_RV(target != NULL, ECUM_GETSHUTDOWNTARGET_ID, ECUM_E_NULL_POINTER, E_NOT_OK);\r
-       VALIDATE_RV(mode != NULL, ECUM_GETSHUTDOWNTARGET_ID, ECUM_E_NULL_POINTER, E_NOT_OK);\r
+       VALIDATE_RV(shutdownTarget != NULL, ECUM_GETSHUTDOWNTARGET_ID, ECUM_E_NULL_POINTER, E_NOT_OK);\r
+       VALIDATE_RV(sleepMode != NULL, ECUM_GETSHUTDOWNTARGET_ID, ECUM_E_NULL_POINTER, E_NOT_OK);\r
 \r
-       *target = internal_data.shutdown_target;\r
-       *mode = internal_data.shutdown_mode;\r
+       *shutdownTarget = internal_data.shutdown_target;\r
+       *sleepMode = internal_data.sleep_mode;\r
 \r
        return E_OK;\r
 }\r
@@ -253,32 +261,32 @@ Std_ReturnType EcuM_ReleaseRUN(EcuM_UserType user)
 }\r
 \r
 #if defined(USE_COMM)\r
-Std_ReturnType EcuM_ComM_RequestRUN(NetworkHandleType user)\r
+Std_ReturnType EcuM_ComM_RequestRUN(NetworkHandleType channel)\r
 {\r
        VALIDATE_RV(internal_data.initiated, ECUM_COMM_REQUESTRUN_ID, ECUM_E_NOT_INITIATED, E_NOT_OK);\r
-       VALIDATE_RV(user < 32, ECUM_COMM_REQUESTRUN_ID, ECUM_E_INVALID_PAR, E_NOT_OK);\r
+       VALIDATE_RV(channel < 32, ECUM_COMM_REQUESTRUN_ID, ECUM_E_INVALID_PAR, E_NOT_OK);\r
 \r
-       internal_data.run_comm_requests |= (uint32)1 << user;\r
+       internal_data.run_comm_requests |= (uint32)1 << channel;\r
 \r
        return E_OK;\r
 }\r
 \r
-Std_ReturnType EcuM_ComM_ReleaseRUN(NetworkHandleType user)\r
+Std_ReturnType EcuM_ComM_ReleaseRUN(NetworkHandleType channel)\r
 {\r
        VALIDATE_RV(internal_data.initiated, ECUM_COMM_RELEASERUN_ID, ECUM_E_NOT_INITIATED, E_NOT_OK);\r
-       VALIDATE_RV(user < 32, ECUM_COMM_RELEASERUN_ID, ECUM_E_INVALID_PAR, E_NOT_OK);\r
+       VALIDATE_RV(channel < 32, ECUM_COMM_RELEASERUN_ID, ECUM_E_INVALID_PAR, E_NOT_OK);\r
 \r
-       internal_data.run_comm_requests &= ~((uint32)1 << user);\r
+       internal_data.run_comm_requests &= ~((uint32)1 << channel);\r
 \r
        return E_OK;\r
 }\r
 \r
-boolean EcuM_ComM_HasRequestedRUN(NetworkHandleType user)\r
+boolean EcuM_ComM_HasRequestedRUN(NetworkHandleType channel)\r
 {\r
        VALIDATE_RV(internal_data.initiated, ECUM_COMM_HASREQUESTEDRUN_ID, ECUM_E_NOT_INITIATED, FALSE);\r
-       VALIDATE_RV(user < 32, ECUM_COMM_HASREQUESTEDRUN_ID, ECUM_E_INVALID_PAR, FALSE);\r
+       VALIDATE_RV(channel < 32, ECUM_COMM_HASREQUESTEDRUN_ID, ECUM_E_INVALID_PAR, FALSE);\r
 \r
-       return (internal_data.run_comm_requests &((uint32)1 << user)) != 0;\r
+       return (internal_data.run_comm_requests &((uint32)1 << channel)) != 0;\r
 }\r
 #endif\r
 \r
index 1727a884912840fd4d8f21a4f86d7bf32eb5b0b2..a12feef060d839e24420df072e6c52333252a363 100644 (file)
@@ -59,7 +59,7 @@ typedef struct
        boolean initiated;\r
        EcuM_ConfigType* config;\r
        EcuM_StateType shutdown_target;\r
-       uint8 shutdown_mode;\r
+       uint8 sleep_mode;\r
        AppModeType app_mode;\r
        EcuM_StateType current_state;\r
 #if defined(USE_COMM)\r
index 464e3e357989a992627f3aef6f4727b57167f31c..e3283a529ca49f35104df3e2183d75f1a7576b89 100644 (file)
@@ -105,6 +105,8 @@ static inline void in_state_appPostRun(void){
                internal_data.current_state = ECUM_STATE_PREP_SHUTDOWN;/** @req EcuM2761 */\r
 \r
                EcuM_OnPrepShutdown();\r
+       } else {\r
+               // TODO: Do something?\r
        }\r
 }\r
 \r