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
17 * @addtogroup EcuM ECU State Manager
\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.
24 #ifndef ECUM_TYPES_H_
\r
25 #define ECUM_TYPES_H_
\r
27 #include "Std_Types.h"
\r
30 #if defined(RTE_TYPE_H) && defined(__GNUC__)
\r
31 //#warning RTE_TYPE included before EcuM_Types.h
\r
34 #ifdef CFG_ECUM_USE_SERVICE_COMPONENT
\r
35 #include "Rte_Type.h"
\r
38 #if defined(USE_WDGM)
\r
45 #if defined(USE_WDGM)
\r
46 typedef struct EcuM_WdgM
\r
48 WdgM_SupervisedEntityIdType EcuMSupervisedEntity;
\r
49 WdgM_ModeType EcuMWdgMWakeupMode;
\r
50 WdgM_ModeType EcuMWdgMStartupMode;
\r
51 WdgM_ModeType EcuMWdgMRunMode;
\r
52 WdgM_ModeType EcuMWdgMPostRunMode;
\r
53 WdgM_ModeType EcuMWdgMShutdownMode;
\r
57 typedef struct EcuM_WakeupSourceConfig {
\r
58 EcuM_WakeupSourceType EcuMWakeupSourceId;
\r
59 uint32 EcuMValidationTimeout;
\r
60 Mcu_ResetType EcuMResetReason;
\r
61 boolean EcuMWakeupSourcePolling;
\r
62 uint8 EcuMComMChannel;
\r
63 } EcuM_WakeupSourceConfigType;
\r
65 typedef struct EcuM_SleepMode
\r
67 uint8 EcuMSleepModeId;
\r
68 EcuM_WakeupSourceType EcuMWakeupSourceMask;
\r
69 Mcu_ModeType EcuMSleepModeMcuMode;
\r
70 #if defined(USE_WDGM)
\r
71 WdgM_ModeType EcuMSleepModeWdgMMode;
\r
73 } EcuM_SleepModeType;
\r
76 #if !defined(_DEFINED_TYPEDEF_FOR_EcuM_StateType_)
\r
77 /** Possible states */
\r
79 ECUM_STATE_APP_RUN = 0x32, //!< ECUM_STATE_APP_RUN
\r
80 ECUM_STATE_SHUTDOWN = 0x40, //!< ECUM_STATE_SHUTDOWN
\r
81 ECUM_STATE_WAKEUP = 0x20, //!< ECUM_STATE_WAKEUP
\r
82 ECUM_SUBSTATE_MASK = 0x0F, //!< ECUM_SUBSTATE_MASK
\r
83 ECUM_STATE_WAKEUP_WAKESLEEP = 0x25, //!< ECUM_STATE_WAKEUP_WAKESLEEP
\r
84 ECUM_STATE_WAKEUP_ONE = 0x21, //!< ECUM_STATE_WAKEUP_ONE
\r
85 ECUM_STATE_OFF = 0x80, //!< ECUM_STATE_OFF
\r
86 ECUM_STATE_STARTUP = 0x10, //!< ECUM_STATE_STARTUP
\r
87 ECUM_STATE_PREP_SHUTDOWN = 0x44, //!< ECUM_STATE_PREP_SHUTDOWN
\r
88 ECUM_STATE_RUN = 0x30, //!< ECUM_STATE_RUN
\r
89 ECUM_STATE_STARTUP_TWO = 0x12, //!< ECUM_STATE_STARTUP_TWO
\r
90 ECUM_STATE_WAKEUP_TTII = 0x26, //!< ECUM_STATE_WAKEUP_TTII
\r
91 ECUM_STATE_WAKEUP_VALIDATION = 0x22,//!< ECUM_STATE_WAKEUP_VALIDATION
\r
92 ECUM_STATE_GO_SLEEP = 0x49, //!< ECUM_STATE_GO_SLEEP
\r
93 ECUM_STATE_STARTUP_ONE = 0x11, //!< ECUM_STATE_STARTUP_ONE
\r
94 ECUM_STATE_WAKEUP_TWO = 0x24, //!< ECUM_STATE_WAKEUP_TWO
\r
95 ECUM_STATE_SLEEP = 0x50, //!< ECUM_STATE_SLEEP
\r
96 ECUM_STATE_WAKEUP_REACTION = 0x23, //!< ECUM_STATE_WAKEUP_REACTION
\r
97 ECUM_STATE_APP_POST_RUN = 0x33, //!< ECUM_STATE_APP_POST_RUN
\r
98 ECUM_STATE_GO_OFF_TWO = 0x4e, //!< ECUM_STATE_GO_OFF_TWO
\r
99 ECUM_STATE_RESET = 0x90, //!< ECUM_STATE_RESET
\r
100 ECUM_STATE_GO_OFF_ONE = 0x4d //!< ECUM_STATE_GO_OFF_ONE
\r
103 #define _DEFINED_TYPEDEF_FOR_EcuM_StateType_
\r
108 #if !defined(_DEFINED_TYPEDEF_FOR_EcuM_UserType_)
\r
109 typedef uint8 EcuM_UserType;
\r
111 #define _DEFINED_TYPEDEF_FOR_EcuM_UserType_
\r
116 /** Internal reset of µC (bit 2).
\r
117 * The internal reset typically only resets the µC
\r
118 * core but not peripherals or memory
\r
119 * controllers. The exact behavior is hardware
\r
121 * This source may also indicate an unhandled
\r
123 ECUM_WKSOURCE_INTERNAL_RESET = 0x04,
\r
125 /** Reset by external watchdog (bit 4), if
\r
126 * detection supported by hardware */
\r
127 ECUM_WKSOURCE_EXTERNAL_WDG = 0x10,
\r
129 /** Reset by internal watchdog (bit 3) */
\r
130 ECUM_WKSOURCE_INTERNAL_WDG = 0x08,
\r
132 /** Power cycle (bit 0) */
\r
133 ECUM_WKSOURCE_POWER = 0x01,
\r
135 /** ~0 to the power of 29 */
\r
136 ECUM_WKSOURCE_ALL_SOURCES = 0x3FFFFFFF,
\r
138 /** Hardware reset (bit 1).
\r
139 * If hardware cannot distinguish between a
\r
140 * power cycle and a reset reason, then this
\r
141 * shall be the default wakeup source */
\r
142 ECUM_WKSOURCE_RESET = 0x02
\r
146 typedef uint32 EcuM_WakeupSourceType;
\r
152 ECUM_WKSTATUS_NONE = 0, /**< No pending wakeup event was detected */
\r
153 ECUM_WKSTATUS_PENDING = 1, /**< The wakeup event was detected but not yet validated */
\r
154 ECUM_WKSTATUS_VALIDATED = 2, /**< The wakeup event is valid */
\r
155 ECUM_WKSTATUS_EXPIRED = 3 /**< The wakeup event has not been validated and has expired therefore */
\r
156 } EcuM_WakeupStatusType;
\r
160 ECUM_WKACT_RUN = 0, /**< Initialization into RUN state */
\r
161 ECUM_WKACT_TTII = 2, /**< Execute time triggered increased inoperation protocol and shutdown */
\r
162 ECUM_WKACT_SHUTDOWN = 3 /**< Immediate shutdown */
\r
163 } EcuM_WakeupReactionType;
\r
166 #if !defined(_DEFINED_TYPEDEF_FOR_EcuM_BootTargetType_)
\r
169 ECUM_BOOT_TARGET_APP = 0, /**< The Ecu will boot into the application */
\r
170 ECUM_BOOT_TARGET_BOOTLOADER = 1 /**< The Ecu will boot into the bootloader */
\r
171 } EcuM_BootTargetType;
\r
172 #define _DEFINED_TYPEDEF_FOR_EcuM_BootTargetType_
\r
175 #endif /* ECUM_TYPES_H_ */
\r