#define ECUM_E_MISMATCHED_RUN_RELEASE (0x15)\r
#define ECUM_E_STATE_PAR_OUT_OF_RANGE (0x16)\r
#define ECUM_E_UNKNOWN_WAKEUP_SOURCE (0x17)\r
+#define ECUM_E_ARC_TIMERERROR (0x18)\r
//@}\r
\r
/** @name Service id's */\r
#define ECUM_GET_BOOTARGET_ID (0x13)\r
#define ECUM_MAINFUNCTION_ID (0x18)\r
#define ECUM_COMM_HASREQUESTEDRUN_ID (0x1b)\r
+#define ECUM_ARC_STARTUPTWO_ID (0x20)\r
\r
/** Possible states */\r
typedef enum {\r
\r
void EcuM_KillAllRUNRequests(void);\r
\r
-#if defined(USE_COM)\r
+#if defined(USE_COMM)\r
Std_ReturnType EcuM_ComM_RequestRUN(NetworkHandleType channel);\r
Std_ReturnType EcuM_ComM_ReleaseRUN(NetworkHandleType channel);\r
boolean EcuM_ComM_HasRequestedRUN(NetworkHandleType channel);\r
// TODO Mcu_ResetType type = Mcu_GetResetReason();\r
\r
// Set default shutdown target\r
+ // TODO: Skriva om till funktion(EcuM_SelectShutdownTarget), och testa om satt! //REQ:Ecum2181\r
internal_data.shutdown_target = internal_data.config->EcuMDefaultShutdownTarget;\r
internal_data.shutdown_mode = internal_data.config->EcuMDefaultShutdownMode;\r
\r
// Start timer to wait for NVM job to complete\r
tickTimerStatus = GetCounterValue(Os_Arc_OsTickCounter , &tickTimerStart);\r
if (tickTimerStatus != E_OK) {\r
- // TODO: Generate error?\r
+ Det_ReportError(MODULE_ID_ECUM, 0, ECUM_ARC_STARTUPTWO_ID, ECUM_E_ARC_TIMERERROR);\r
}\r
#endif\r
\r
tickTimer = tickTimerStart; // Save this because the GetElapsedCounterValue() will destroy it.\r
tickTimerStatus = GetElapsedCounterValue(Os_Arc_OsTickCounter, &tickTimer, &tickTimerElapsed);\r
if (tickTimerStatus != E_OK) {\r
- // TODO: Generate error?\r
+ Det_ReportError(MODULE_ID_ECUM, 0, ECUM_ARC_STARTUPTWO_ID, ECUM_E_ARC_TIMERERROR);\r
}\r
} while( (readAllResult == NVM_REQ_PENDING) && (tickTimerElapsed < internal_data.config->EcuMNvramReadAllTimeout) );\r
\r
\r
Std_ReturnType EcuM_GetState(EcuM_StateType* state)\r
{\r
+ VALIDATE_RV(internal_data.initiated, ECUM_GETSTATE_ID, ECUM_E_NOT_INITIATED, E_NOT_OK);\r
VALIDATE_RV(state != NULL, ECUM_GETSTATE_ID, ECUM_E_NULL_POINTER, E_NOT_OK);\r
\r
*state = internal_data.current_state;\r
Std_ReturnType EcuM_GetShutdownTarget(EcuM_StateType *target, uint8 *mode)\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
\r
*target = internal_data.shutdown_target;\r
*mode = internal_data.shutdown_mode;\r
return E_OK;\r
}\r
\r
+// TODO: Fix this function, should only return bool, but do also return Std_ReturnType.\r
boolean EcuM_ComM_HasRequestedRUN(NetworkHandleType user)\r
{\r
VALIDATE_RV(internal_data.initiated, ECUM_COMM_HASREQUESTEDRUN_ID, ECUM_E_NOT_INITIATED, E_NOT_OK);\r