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