]> rtime.felk.cvut.cz Git - arc.git/blob - include/EcuM_Types.h
56ace85d9ed74008a29dd42081b2c2d4fcf98448
[arc.git] / include / EcuM_Types.h
1 /* -------------------------------- Arctic Core ------------------------------\r
2  * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
3  *\r
4  * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
5  *\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
9  *\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
13  * for more details.\r
14  * -------------------------------- Arctic Core ------------------------------*/\r
15 \r
16 /**\r
17  * @addtogroup EcuM ECU State Manager\r
18  * @{\r
19  *\r
20  * @file EcuM_Types.h\r
21  * Typedefs needed by EcuM module. Note that types that are generated together with\r
22  * Ecum Service Ports should be guarded by _DEFINED_TYPEDEF_FOR_<Type>_ to avoid re-definition.
23  */\r
24 #ifndef ECUM_TYPES_H_\r
25 #define ECUM_TYPES_H_\r
26 \r
27 #include "Std_Types.h"\r
28 #include <Os.h>\r
29 \r
30 #if defined(RTE_TYPE_H) && defined(__GNUC__)\r
31 //#warning RTE_TYPE included before EcuM_Types.h\r
32 #endif\r
33 \r
34 #ifdef CFG_ECUM_USE_SERVICE_COMPONENT\r
35 #include "Rte_Type.h"\r
36 #endif\r
37 \r
38 #if defined(USE_WDGM)\r
39 #include "WdgM.h"\r
40 #endif\r
41 \r
42 #include "Mcu.h"\r
43 \r
44 \r
45 #if defined(USE_WDGM)\r
46 typedef struct EcuM_WdgM\r
47 {\r
48         WdgM_ModeType EcuMWdgMWakeupMode;\r
49         WdgM_ModeType EcuMWdgMStartupMode;\r
50         WdgM_ModeType EcuMWdgMRunMode;\r
51         WdgM_ModeType EcuMWdgMPostRunMode;\r
52         WdgM_ModeType EcuMWdgMShutdownMode;\r
53 } EcuM_WdgMType;\r
54 #endif\r
55 \r
56 typedef struct EcuM_SleepMode\r
57 {\r
58    uint8                                        EcuMSleepModeId;\r
59    EcuM_WakeupSourceType        EcuMWakeupSourceMask;\r
60    Mcu_ModeType                         EcuMSleepModeMcuMode;\r
61 #if defined(USE_WDGM)\r
62    WdgM_ModeType                        EcuMSleepModeWdgMMode;\r
63 #endif\r
64  } EcuM_SleepModeType;\r
65 \r
66 \r
67 #if !defined(_DEFINED_TYPEDEF_FOR_EcuM_StateType_)\r
68 /** Possible states */\r
69 typedef enum {\r
70         ECUM_STATE_APP_RUN = 0x32,          //!< ECUM_STATE_APP_RUN\r
71         ECUM_STATE_SHUTDOWN = 0x40,         //!< ECUM_STATE_SHUTDOWN\r
72         ECUM_STATE_WAKEUP = 0x20,           //!< ECUM_STATE_WAKEUP\r
73         ECUM_SUBSTATE_MASK = 0x0F,          //!< ECUM_SUBSTATE_MASK\r
74         ECUM_STATE_WAKEUP_WAKESLEEP = 0x25, //!< ECUM_STATE_WAKEUP_WAKESLEEP\r
75         ECUM_STATE_WAKEUP_ONE = 0x21,       //!< ECUM_STATE_WAKEUP_ONE\r
76         ECUM_STATE_OFF = 0x80,              //!< ECUM_STATE_OFF\r
77         ECUM_STATE_STARTUP = 0x10,          //!< ECUM_STATE_STARTUP\r
78         ECUM_STATE_PREP_SHUTDOWN = 0x44,    //!< ECUM_STATE_PREP_SHUTDOWN\r
79         ECUM_STATE_RUN = 0x30,              //!< ECUM_STATE_RUN\r
80         ECUM_STATE_STARTUP_TWO = 0x12,      //!< ECUM_STATE_STARTUP_TWO\r
81         ECUM_STATE_WAKEUP_TTII = 0x26,      //!< ECUM_STATE_WAKEUP_TTII\r
82         ECUM_STATE_WAKEUP_VALIDATION = 0x22,//!< ECUM_STATE_WAKEUP_VALIDATION\r
83         ECUM_STATE_GO_SLEEP = 0x49,         //!< ECUM_STATE_GO_SLEEP\r
84         ECUM_STATE_STARTUP_ONE = 0x11,      //!< ECUM_STATE_STARTUP_ONE\r
85         ECUM_STATE_WAKEUP_TWO = 0x24,       //!< ECUM_STATE_WAKEUP_TWO\r
86         ECUM_STATE_SLEEP = 0x50,            //!< ECUM_STATE_SLEEP\r
87         ECUM_STATE_WAKEUP_REACTION = 0x23,  //!< ECUM_STATE_WAKEUP_REACTION\r
88         ECUM_STATE_APP_POST_RUN = 0x33,     //!< ECUM_STATE_APP_POST_RUN\r
89         ECUM_STATE_GO_OFF_TWO = 0x4e,       //!< ECUM_STATE_GO_OFF_TWO\r
90         ECUM_STATE_RESET = 0x90,            //!< ECUM_STATE_RESET\r
91         ECUM_STATE_GO_OFF_ONE = 0x4d        //!< ECUM_STATE_GO_OFF_ONE\r
92 } EcuM_StateType;\r
93 \r
94 #define _DEFINED_TYPEDEF_FOR_EcuM_StateType_\r
95 \r
96 #endif\r
97 \r
98 \r
99 #if !defined(_DEFINED_TYPEDEF_FOR_EcuM_UserType_)\r
100 typedef uint8 EcuM_UserType;\r
101 \r
102 #define _DEFINED_TYPEDEF_FOR_EcuM_UserType_\r
103 #endif\r
104 \r
105 #if 0\r
106 enum {\r
107         /** Internal reset of µC (bit 2).\r
108          *  The internal reset typically only resets the µC\r
109          *  core but not peripherals or memory\r
110          *  controllers. The exact behavior is hardware\r
111          *  specific.\r
112          *  This source may also indicate an unhandled\r
113          *  exception. */\r
114         ECUM_WKSOURCE_INTERNAL_RESET = 0x04,\r
115 \r
116         /** Reset by external watchdog (bit 4), if\r
117          *  detection supported by hardware */\r
118         ECUM_WKSOURCE_EXTERNAL_WDG = 0x10,\r
119 \r
120         /** Reset by internal watchdog (bit 3) */\r
121         ECUM_WKSOURCE_INTERNAL_WDG = 0x08,\r
122 \r
123         /** Power cycle (bit 0) */\r
124         ECUM_WKSOURCE_POWER = 0x01,\r
125 \r
126         /** ~0 to the power of 29 */\r
127         ECUM_WKSOURCE_ALL_SOURCES = 0x3FFFFFFF,\r
128 \r
129         /** Hardware reset (bit 1).\r
130          *  If hardware cannot distinguish between a\r
131          *  power cycle and a reset reason, then this\r
132          *  shall be the default wakeup source */\r
133         ECUM_WKSOURCE_RESET = 0x02\r
134 };\r
135 \r
136 \r
137 typedef uint32 EcuM_WakeupSourceType;\r
138 \r
139 #endif\r
140 \r
141 typedef enum\r
142 {\r
143         ECUM_WKSTATUS_NONE = 0,        /**< No pending wakeup event was detected */\r
144         ECUM_WKSTATUS_PENDING = 1,     /**< The wakeup event was detected but not yet validated */\r
145         ECUM_WKSTATUS_VALIDATED = 2,   /**< The wakeup event is valid */\r
146         ECUM_WKSTATUS_EXPIRED = 3     /**< The wakeup event has not been validated and has expired therefore */\r
147 } EcuM_WakeupStatusType;\r
148 \r
149 typedef enum\r
150 {\r
151         ECUM_WWKACT_RUN = 0,       /**< Initialization into RUN state */\r
152         ECUM_WKACT_TTII = 2,       /**< Execute time triggered increased inoperation protocol and shutdown */\r
153         ECUM_WKACT_SHUTDOWN = 3   /**< Immediate shutdown */\r
154 } EcuM_WakeupReactionType;\r
155 \r
156 \r
157 #if !defined(_DEFINED_TYPEDEF_FOR_EcuM_BootTargetType_)\r
158 typedef enum\r
159 {\r
160         ECUM_BOOT_TARGET_APP = 0,          /**< The Ecu will boot into the application */\r
161         ECUM_BOOT_TARGET_BOOTLOADER = 1   /**< The Ecu will boot into the bootloader */\r
162 } EcuM_BootTargetType;\r
163 #define _DEFINED_TYPEDEF_FOR_EcuM_BootTargetType_\r
164 #endif\r
165 \r
166 #endif /* ECUM_TYPES_H_ */\r
167 /** @} */\r