]> rtime.felk.cvut.cz Git - arc.git/blob - include/EcuM_Types.h
Merge with ac7a40bc631fb2dfca15ae7785ba2aa768ee23d8
[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(_DEFINED_TYPEDEF_FOR_EcuM_StateType_)\r
39 /** Possible states */\r
40 typedef enum {\r
41         ECUM_STATE_APP_RUN = 0x32,          //!< ECUM_STATE_APP_RUN\r
42         ECUM_STATE_SHUTDOWN = 0x40,         //!< ECUM_STATE_SHUTDOWN\r
43         ECUM_STATE_WAKEUP = 0x20,           //!< ECUM_STATE_WAKEUP\r
44         ECUM_SUBSTATE_MASK = 0x0F,          //!< ECUM_SUBSTATE_MASK\r
45         ECUM_STATE_WAKEUP_WAKESLEEP = 0x25, //!< ECUM_STATE_WAKEUP_WAKESLEEP\r
46         ECUM_STATE_WAKEUP_ONE = 0x21,       //!< ECUM_STATE_WAKEUP_ONE\r
47         ECUM_STATE_OFF = 0x80,              //!< ECUM_STATE_OFF\r
48         ECUM_STATE_STARTUP = 0x10,          //!< ECUM_STATE_STARTUP\r
49         ECUM_STATE_PREP_SHUTDOWN = 0x44,    //!< ECUM_STATE_PREP_SHUTDOWN\r
50         ECUM_STATE_RUN = 0x30,              //!< ECUM_STATE_RUN\r
51         ECUM_STATE_STARTUP_TWO = 0x12,      //!< ECUM_STATE_STARTUP_TWO\r
52         ECUM_STATE_WAKEUP_TTII = 0x26,      //!< ECUM_STATE_WAKEUP_TTII\r
53         ECUM_STATE_WAKEUP_VALIDATION = 0x22,//!< ECUM_STATE_WAKEUP_VALIDATION\r
54         ECUM_STATE_GO_SLEEP = 0x49,         //!< ECUM_STATE_GO_SLEEP\r
55         ECUM_STATE_STARTUP_ONE = 0x11,      //!< ECUM_STATE_STARTUP_ONE\r
56         ECUM_STATE_WAKEUP_TWO = 0x24,       //!< ECUM_STATE_WAKEUP_TWO\r
57         ECUM_STATE_SLEEP = 0x50,            //!< ECUM_STATE_SLEEP\r
58         ECUM_STATE_WAKEUP_REACTION = 0x23,  //!< ECUM_STATE_WAKEUP_REACTION\r
59         ECUM_STATE_APP_POST_RUN = 0x33,     //!< ECUM_STATE_APP_POST_RUN\r
60         ECUM_STATE_GO_OFF_TWO = 0x4e,       //!< ECUM_STATE_GO_OFF_TWO\r
61         ECUM_STATE_RESET = 0x90,            //!< ECUM_STATE_RESET\r
62         ECUM_STATE_GO_OFF_ONE = 0x4d        //!< ECUM_STATE_GO_OFF_ONE\r
63 } EcuM_StateType;\r
64 \r
65 #define _DEFINED_TYPEDEF_FOR_EcuM_StateType_\r
66 \r
67 #endif\r
68 \r
69 #if !defined(_DEFINED_TYPEDEF_FOR_EcuM_UserType_)\r
70 typedef uint8 EcuM_UserType;\r
71 \r
72 #define _DEFINED_TYPEDEF_FOR_EcuM_UserType_\r
73 #endif\r
74 \r
75 enum {\r
76         /** Internal reset of µC (bit 2).\r
77          *  The internal reset typically only resets the µC\r
78          *  core but not peripherals or memory\r
79          *  controllers. The exact behavior is hardware\r
80          *  specific.\r
81          *  This source may also indicate an unhandled\r
82          *  exception. */\r
83         ECUM_WKSOURCE_INTERNAL_RESET = 0x04,\r
84 \r
85         /** Reset by external watchdog (bit 4), if\r
86          *  detection supported by hardware */\r
87         ECUM_WKSOURCE_EXTERNAL_WDG = 0x10,\r
88 \r
89         /** Reset by internal watchdog (bit 3) */\r
90         ECUM_WKSOURCE_INTERNAL_WDG = 0x08,\r
91 \r
92         /** Power cycle (bit 0) */\r
93         ECUM_WKSOURCE_POWER = 0x01,\r
94 \r
95         /** ~0 to the power of 29 */\r
96         ECUM_WKSOURCE_ALL_SOURCES = 0x3FFFFFFF,\r
97 \r
98         /** Hardware reset (bit 1).\r
99          *  If hardware cannot distinguish between a\r
100          *  power cycle and a reset reason, then this\r
101          *  shall be the default wakeup source */\r
102         ECUM_WKSOURCE_RESET = 0x02\r
103 };\r
104 \r
105 typedef uint32 EcuM_WakeupSourceType;\r
106 \r
107 typedef enum\r
108 {\r
109         ECUM_WKSTATUS_NONE = 0,        /**< No pending wakeup event was detected */\r
110         ECUM_WKSTATUS_PENDING = 1,     /**< The wakeup event was detected but not yet validated */\r
111         ECUM_WKSTATUS_VALIDATED = 2,   /**< The wakeup event is valid */\r
112         ECUM_WKSTATUS_EXPIRED = 3     /**< The wakeup event has not been validated and has expired therefore */\r
113 } EcuM_WakeupStatusType;\r
114 \r
115 typedef enum\r
116 {\r
117         ECUM_WWKACT_RUN = 0,       /**< Initialization into RUN state */\r
118         ECUM_WKACT_TTII = 2,       /**< Execute time triggered increased inoperation protocol and shutdown */\r
119         ECUM_WKACT_SHUTDOWN = 3   /**< Immediate shutdown */\r
120 } EcuM_WakeupReactionType;\r
121 \r
122 #if !defined(_DEFINED_TYPEDEF_FOR_EcuM_BootTargetType_)\r
123 typedef enum\r
124 {\r
125         ECUM_BOOT_TARGET_APP = 0,          /**< The Ecu will boot into the application */\r
126         ECUM_BOOT_TARGET_BOOTLOADER = 1   /**< The Ecu will boot into the bootloader */\r
127 } EcuM_BootTargetType;\r
128 #define _DEFINED_TYPEDEF_FOR_EcuM_BootTargetType_\r
129 #endif\r
130 \r
131 #endif /* ECUM_TYPES_H_ */\r
132 /** @} */\r