1 /* -------------------------------- Arctic Core ------------------------------
\r
2 * Arctic Core - the open source AUTOSAR platform http://arccore.com
\r
4 * Copyright (C) 2009 ArcCore AB <contact@arccore.com>
\r
6 * This source code is free software; you can redistribute it and/or modify it
\r
7 * under the terms of the GNU General Public License version 2 as published by the
\r
8 * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.
\r
10 * This program is distributed in the hope that it will be useful, but
\r
11 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
\r
12 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
\r
14 * -------------------------------- Arctic Core ------------------------------*/
\r
16 /** @addtogroup EcuM ECU State Manager
\r
20 * API and type definitions for ECU State Manager.
\r
24 * Include structure:
\r
28 * Rte_Type.h --> Std_Types.h
\r
31 * Rte_EcuM.h <-- EcuM_Types.h*
\r
33 * | | /-----> EcuM_Cfg.h
\r
34 * | | /------> EcuM_Generated_Types.h
\r
35 * | | / (Holds EcuM_ConfigType and includes all BSW modules )
\r
36 * | | /-------> EcuM_Cbk.h
\r
37 * | | / (want types EcuM_WakeupSourceType, EcuM_ConfigType *, EcuM_WakeupSourceType , EcuM_WakeupReactionType )
\r
39 * | EcuM.h <----- EcuM_Callout_Stubs.c
\r
40 * | ^ \--- EcuM_PBCfg.c
\r
43 * `---------- EcuM_xxx.c ---> Memmap.h
\r
46 * *) Only ifdef CFG_ECUM_USE_SERVICE_COMPONENT
\r
49 * - Can_Cfg.h can include just "EcuM_Cbk.h"...
\r
50 * .. it will need at EcuM.h.. problem is that EcuM.h includes EcuM_Cbk.h
\r
51 * - Most BSW modules uses DEM that in Dem_Types.h will include "Rte_Type.h"
\r
52 * (if enabled by CFG_DEM_USE_RTE)
\r
54 * - EcuM_Generated_Types.h is quite crappy since it includes the
\r
57 * - EcuM_Cfg.h , must not include ANY include files.
\r
58 * - EcuM_Pbcfg.c must include "EcuM_Generated_Types.h"
\r
59 * - EcuM.c, etc must include "EcuM_Generated_Types.h"
\r
60 * --> The GOOD, we keep circular include from EcuM_Generated_Types.h
\r
70 #include "Modules.h"
\r
72 #define ECUM_MODULE_ID MODULE_ID_ECUM
\r
73 #define ECUM_VENDOR_ID 1
\r
75 #define ECUM_SW_MAJOR_VERSION 2
\r
76 #define ECUM_SW_MINOR_VERSION 0
\r
77 #define ECUM_SW_PATCH_VERSION 0
\r
79 #define ECUM_AR_MAJOR_VERSION 1
\r
80 #define ECUM_AR_MINOR_VERSION 2
\r
81 #define ECUM_AR_PATCH_VERSION 2
\r
83 //#include "EcuM_Types.h"
\r
84 //struct EcuM_Config;
\r
85 //typedef struct EcuM_Config EcuM_ConfigType;
\r
87 /* Holds EcuM_ConfigType */
\r
88 /* TODO: forward declare all config types here ? */
\r
89 /* TODO: EcuM_Generated_Types must have types from Ecu_Types.h */
\r
90 #include "EcuM_Types.h"
\r
91 #include "EcuM_Cfg.h"
\r
92 #include "EcuM_Cbk.h"
\r
94 #if defined(USE_COM)
\r
95 #include "ComStack_Types.h"
\r
100 /** @name Error Codes */
\r
102 #define ECUM_E_NOT_INITIATED (0x10)
\r
103 #define ECUM_E_SERVICE_DISABLED (0x11)
\r
104 #define ECUM_E_NULL_POINTER (0x12)
\r
105 #define ECUM_E_INVALID_PAR (0x13)
\r
106 #define ECUM_E_MULTIPLE_RUN_REQUESTS (0x14)
\r
107 #define ECUM_E_MISMATCHED_RUN_RELEASE (0x15)
\r
108 #define ECUM_E_STATE_PAR_OUT_OF_RANGE (0x16)
\r
109 #define ECUM_E_UNKNOWN_WAKEUP_SOURCE (0x17)
\r
110 #define ECUM_E_ARC_TIMERERROR (0x18)
\r
113 /** @name Service id's */
\r
115 #define ECUM_REQUESTRUN_ID (0x03)
\r
116 #define ECUM_RELEASERUN_ID (0x04)
\r
117 #define ECUM_SELECTSHUTDOWNTARGET_ID (0x06)
\r
118 #define ECUM_GETSTATE_ID (0x07)
\r
119 #define ECUM_GETSHUTDOWNTARGET_ID (0x09)
\r
120 #define ECUM_COMM_REQUESTRUN_ID (0x0e)
\r
121 #define ECUM_REQUESTPOSTRUN_ID (0x0a)
\r
122 #define ECUM_RELEASEPOSTRUN_ID (0x0b)
\r
123 #define ECUM_SELECTAPPMODE_ID (0x0f)
\r
124 #define ECUM_COMM_RELEASERUN_ID (0x10)
\r
125 #define ECUM_GETAPPMODE_ID (0x11)
\r
126 #define ECUM_SELECT_BOOTARGET_ID (0x12)
\r
127 #define ECUM_GET_BOOTARGET_ID (0x13)
\r
128 #define ECUM_MAINFUNCTION_ID (0x18)
\r
129 #define ECUM_COMM_HASREQUESTEDRUN_ID (0x1b)
\r
130 #define ECUM_ARC_STARTUPTWO_ID (0x20)
\r
133 #define ECUM_MODULE_ID MODULE_ID_ECUM
\r
134 #define ECUM_VENDOR_ID 1
\r
136 #define ECUM_SW_MAJOR_VERSION 2
\r
137 #define ECUM_SW_MINOR_VERSION 0
\r
138 #define ECUM_SW_PATCH_VERSION 0
\r
140 #define ECUM_AR_MAJOR_VERSION 1
\r
141 #define ECUM_AR_MINOR_VERSION 2
\r
142 #define ECUM_AR_PATCH_VERSION 2
\r
144 //#include "EcuM_Cfg.h"
\r
146 #if ( ECUM_VERSION_INFO_API == STD_ON)
\r
147 #define EcuM_GetVersionInfo(_vi) STD_GET_VERSION_INFO(_vi,ECUM)
\r
150 void EcuM_Init( void );
\r
151 void EcuM_StartupTwo(void);
\r
152 void EcuM_Shutdown(void);
\r
154 Std_ReturnType EcuM_GetState(EcuM_StateType* state);
\r
156 Std_ReturnType EcuM_RequestRUN(EcuM_UserType user);
\r
157 Std_ReturnType EcuM_ReleaseRUN(EcuM_UserType user);
\r
159 Std_ReturnType EcuM_RequestPOST_RUN(EcuM_UserType user);
\r
160 Std_ReturnType EcuM_ReleasePOST_RUN(EcuM_UserType user);
\r
162 void EcuM_KillAllRUNRequests(void);
\r
164 #if defined(USE_COMM)
\r
165 Std_ReturnType EcuM_ComM_RequestRUN(NetworkHandleType channel);
\r
166 Std_ReturnType EcuM_ComM_ReleaseRUN(NetworkHandleType channel);
\r
167 boolean EcuM_ComM_HasRequestedRUN(NetworkHandleType channel);
\r
170 Std_ReturnType EcuM_SelectShutdownTarget(EcuM_StateType shutdownTarget, uint8 sleepMode);
\r
171 Std_ReturnType EcuM_GetShutdownTarget(EcuM_StateType* shutdownTarget, uint8* sleepMode);
\r
172 Std_ReturnType EcuM_GetLastShutdownTarget(EcuM_StateType* shutdownTarget, uint8* sleepMode);
\r
174 EcuM_WakeupSourceType EcuM_GetPendingWakeupEvents(void);
\r
175 void EcuM_ClearWakeupEvent(EcuM_WakeupSourceType sources);
\r
176 EcuM_WakeupSourceType EcuM_GetValidatedWakeupEvents(void);
\r
177 EcuM_WakeupSourceType EcuM_GetExpiredWakeupEvents(void);
\r
178 EcuM_WakeupStatusType EcuM_GetStatusOfWakeupSource(EcuM_WakeupSourceType sources);
\r
180 Std_ReturnType EcuM_SelectApplicationMode(AppModeType appMode);
\r
181 Std_ReturnType EcuM_GetApplicationMode(AppModeType* appMode);
\r
183 Std_ReturnType EcuM_SelectBootTarget(EcuM_BootTargetType target);
\r
184 Std_ReturnType EcuM_GetBootTarget(EcuM_BootTargetType* target);
\r
186 void EcuM_SetWakeupEvent(EcuM_WakeupSourceType sources);
\r
188 void EcuM_MainFunction(void);
\r