1 /*
2  * Copyright 2020-2023 NXP
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #ifndef EMIOS_ICU_IP_TYPES_H
8 #define EMIOS_ICU_IP_TYPES_H
9 
10 /**
11  *   @file       Emios_Icu_Ip_[!IF "var:defined('postBuildVariant')"!][!"$postBuildVariant"!]_[!ENDIF!]PBcfg.c
12  *   @version    3.0.0
13  *
14  *   @brief      AUTOSAR Icu - contains the data exported by the Icu module
15  *   @details    Contains the information that will be exported by the module, as requested by AUTOSAR.
16  *
17  *   @addtogroup emios_icu_ip EMIOS IPL
18  *   @{
19  */
20 
21 #ifdef __cplusplus
22 extern "C"{
23 #endif
24 
25 /*==================================================================================================
26                                          INCLUDE FILES
27  1) system and project includes
28  2) needed interfaces from external units
29  3) internal and external interfaces from this unit
30 ==================================================================================================*/
31 #include "Emios_Icu_Ip_Defines.h"
32 
33 /*==================================================================================================
34                                SOURCE FILE VERSION INFORMATION
35 ==================================================================================================*/
36 #define EMIOS_ICU_IP_TYPES_VENDOR_ID                     43
37 #define EMIOS_ICU_IP_TYPES_AR_RELEASE_MAJOR_VERSION      4
38 #define EMIOS_ICU_IP_TYPES_AR_RELEASE_MINOR_VERSION      7
39 #define EMIOS_ICU_IP_TYPES_AR_RELEASE_REVISION_VERSION   0
40 #define EMIOS_ICU_IP_TYPES_SW_MAJOR_VERSION              3
41 #define EMIOS_ICU_IP_TYPES_SW_MINOR_VERSION              0
42 #define EMIOS_ICU_IP_TYPES_SW_PATCH_VERSION              0
43 
44 /*==================================================================================================
45                                       FILE VERSION CHECKS
46 ==================================================================================================*/
47 #if (EMIOS_ICU_IP_TYPES_VENDOR_ID != EMIOS_ICU_IP_DEFINES_VENDOR_ID)
48     #error "Emios_Icu_Ip_Types.h and Emios_Icu_Ip_Defines.h have different vendor ids"
49 #endif
50 
51 /* Check if  header file and Emios_Icu_Ip_Defines.h file are of the same Autosar version */
52 #if ((EMIOS_ICU_IP_TYPES_AR_RELEASE_MAJOR_VERSION != EMIOS_ICU_IP_DEFINES_AR_RELEASE_MAJOR_VERSION) || \
53      (EMIOS_ICU_IP_TYPES_AR_RELEASE_MINOR_VERSION != EMIOS_ICU_IP_DEFINES_AR_RELEASE_MINOR_VERSION) || \
54      (EMIOS_ICU_IP_TYPES_AR_RELEASE_REVISION_VERSION != EMIOS_ICU_IP_DEFINES_AR_RELEASE_REVISION_VERSION))
55     #error "AutoSar Version Numbers of Emios_Icu_Ip_Types.h and Emios_Icu_Ip_Defines.h are different"
56 #endif
57 
58 /* Check if header file and Emios_Icu_Ip_Defines.h file are of the same Software version */
59 #if ((EMIOS_ICU_IP_TYPES_SW_MAJOR_VERSION != EMIOS_ICU_IP_DEFINES_SW_MAJOR_VERSION) || \
60      (EMIOS_ICU_IP_TYPES_SW_MINOR_VERSION != EMIOS_ICU_IP_DEFINES_SW_MINOR_VERSION) || \
61      (EMIOS_ICU_IP_TYPES_SW_PATCH_VERSION != EMIOS_ICU_IP_DEFINES_SW_PATCH_VERSION))
62     #error "Software Version Numbers of Emios_Icu_Ip_Types.h and Emios_Icu_Ip_Defines.h are different"
63 #endif
64 
65 /*==================================================================================================
66                                            CONSTANTS
67 ==================================================================================================*/
68 
69 /*==================================================================================================
70                                        DEFINES AND MACROS
71 ==================================================================================================*/
72 #if (STD_ON == EMIOS_ICU_IP_USED)
73 /**
74 * @brief EMIOS Channels defines
75 */
76 #define EMIOS_ICU_IP_CB_NONE       ((uint8)0xFF)
77 #define EMIOS_ICU_IP_CB_DIVERSE    ((uint8)0x07)
78 #define EMIOS_ICU_IP_CHANNEL_0     ((uint8)0x00)
79 #define EMIOS_ICU_IP_CHANNEL_7     ((uint8)0x07)
80 #define EMIOS_ICU_IP_CHANNEL_8     ((uint8)0x08)
81 #define EMIOS_ICU_IP_CHANNEL_15    ((uint8)0x0F)
82 #define EMIOS_ICU_IP_CHANNEL_16    ((uint8)0x10)
83 #define EMIOS_ICU_IP_CHANNEL_22    ((uint8)0x16)
84 #define EMIOS_ICU_IP_CHANNEL_23    ((uint8)0x17)
85 #define EMIOS_ICU_IP_CHANNEL_24    ((uint8)0x18)
86 
87 #if (STD_ON == EMIOS_ICU_IP_CHANNEL_24_USED)
88 #define EMIOS_ICU_IP_CHANNEL_31    ((uint8)0x1F)
89 #endif
90 
91 #define EMIOS_ICU_IP_MCB_INT_CLOCK_U32         ((uint32)(0x50U))
92 #if (EMIOS_ICU_IP_EDGE_COUNT_API == STD_ON)
93 #define EMIOS_ICU_IP_MCB_EXT_CLOCK_U32         ((uint32)(0x51U))
94 #endif
95 
96 #define EMIOS_ICU_IP_CCR_CLEAR_U32             ((uint32)(0x0U))
97 #define EMIOS_ICU_IP_CSR_CLEAR_U32             ((uint32)(0xFFFFFFFFU))
98 
99 #if ((EMIOS_ICU_IP_EDGE_COUNT_API == STD_ON) || (EMIOS_ICU_IP_SIGNAL_MEASUREMENT_API == STD_ON) || (EMIOS_ICU_IP_TIMESTAMP_API == STD_ON))
100 #define EMIOS_ICU_IP_INIT_CCNTR_U32            (0x00000000U)
101 #define EMIOS_ICU_IP_INIT_CADR_U32             ((uint32)EMIOS_ICU_IP_COUNTER_MASK)
102 #endif
103 
104 #define EMIOS_ICU_IP_CCR_MODE_GPI_U32          ((uint32)(0x00))
105 #define EMIOS_ICU_IP_CCR_MODE_SAIC_U32         ((uint32)(0x02))
106 
107 #if (EMIOS_ICU_IP_SIGNAL_MEASUREMENT_API == STD_ON)
108 #define EMIOS_ICU_IP_CCR_MODE_IPWM_U32         ((uint32)(0x04))
109 #define EMIOS_ICU_IP_CCR_MODE_IPM_U32          ((uint32)(0x05))
110 #endif
111 
112 /*==================================================================================================
113                                              ENUMS
114 ==================================================================================================*/
115 
116 /**
117 * @brief    eMIOS_Activation EDGE
118 * @details  Indicates the channel activation type(Rising, Falling, Both Edges or Opposite Edges).
119 */
120 typedef enum
121 {
122     /** @brief No trigger. */
123     EMIOS_ICU_NO_PIN_CONTROL    = 0x0U,
124     /** @brief Rising edge trigger. */
125     EMIOS_ICU_RISING_EDGE       = 0x1U,
126     /** @brief Rising edge trigger. */
127     EMIOS_ICU_FALLING_EDGE      = 0x2U,
128     /** @brief Rising and falling edge trigger */
129     EMIOS_ICU_BOTH_EDGES        = 0x3U
130 #if (STD_ON == EMIOS_ICU_IP_SIGNAL_MEASUREMENT_USES_SAIC_MODE)
131     /** @brief EMIOS_OPPOSITE_EDGES = An appropriate action shall be executed when either a falling or rising edge occur on the ICU input signal. */
132     ,EMIOS_OPPOSITE_EDGES       = 0x4U
133 #endif   /* STD_ON == EMIOS_ICU_IP_SIGNAL_MEASUREMENT_USES_SAIC_MODE */
134 } eMios_Icu_Ip_EdgeType;
135 
136 /** @brief Operation mode for ICU driver. */
137 typedef enum
138 {
139     /** @brief No measurement mode. */
140     EMIOS_ICU_MODE_NO_MEASUREMENT                   = 0x0U,
141     /** @brief Signal edge detect measurement mode. */
142     EMIOS_ICU_MODE_SIGNAL_EDGE_DETECT               = 0x1U,
143     /** @brief Signal measurement mode.*/
144     EMIOS_ICU_MODE_SIGNAL_MEASUREMENT               = 0x2U,
145     /** @brief Timestamp measurement mode.*/
146     EMIOS_ICU_MODE_TIMESTAMP                        = 0x4U,
147     /** @brief Edge counter measurement mode.*/
148     EMIOS_ICU_MODE_EDGE_COUNTER                     = 0x8U
149 } eMios_Icu_Ip_ModeType;
150 
151 /** @brief Enable/disable DMA support for timestamp. */
152 typedef enum
153 {
154     /* Disable DMA support. */
155     EMIOS_ICU_MODE_WITHOUT_DMA = 0U,
156     /* Enable DMA support. */
157     EMIOS_ICU_MODE_WITH_DMA    = 1U
158 } eMios_Icu_Ip_SubModeType;
159 
160 /** @brief Stores the state in which a signal measurement is. */
161 typedef enum
162 {
163     /* This is the initial state of measurement */
164     EMIOS_ICU_MEASUREMENT_PENDING       = 0U,
165     /* First edge has triggered - measuring duty cycle */
166     EMIOS_ICU_MEASUREMENT_DUTY          = 1U,
167     /* Second edge has triggered - measuring period */
168     EMIOS_ICU_MEASUREMENT_PERIOD        = 2U
169 } eMios_Icu_Ip_MeasStatusType;
170 
171 /** @brief Type of operation for signal measurement. */
172 typedef enum
173 {
174     /** @brief No measurement. */
175     EMIOS_ICU_NO_MEASUREMENT = 0U,
176     /** @brief The time measurement for OFF period. */
177     EMIOS_ICU_LOW_TIME       = 1U,
178     /** @brief The time measurement for ON period. */
179     EMIOS_ICU_HIGH_TIME      = 2U,
180     /** @brief Period measurement between two consecutive falling/raising edges. */
181     EMIOS_ICU_PERIOD_TIME    = 4U,
182     /** @brief The fraction of active period. */
183     EMIOS_ICU_DUTY_CYCLE     = 8U
184 } eMios_Icu_Ip_MeasType;
185 
186 #if (EMIOS_ICU_IP_TIMESTAMP_API == STD_ON)
187 /** @brief Type of operation for timestamp. */
188 typedef enum
189 {
190     /** @brief No timestamp. */
191     EMIOS_ICU_NO_TIMESTAMP      = 0U,
192     /** @brief The timestamp with circular buffer . */
193     EMIOS_ICU_CIRCULAR_BUFFER   = 1U,
194     /** @brief The timestamp with linear buffer . */
195     EMIOS_ICU_LINEAR_BUFFER     = 2U
196 } eMios_Icu_Ip_TimestampBufferType;
197 #endif
198 
199 #if (STD_ON == EMIOS_ICU_IP_GET_INPUT_LEVEL_API)
200 /** @brief Enumeration used for returning the level of input pin. */
201 typedef enum
202 {
203     /** @brief Low level state.  */
204     EMIOS_ICU_LEVEL_LOW   = 0x0U,
205     /** @brief High level state. */
206     EMIOS_ICU_LEVEL_HIGH  = 0x1U
207 } eMios_Icu_Ip_LevelType;
208 #endif
209 #if (EMIOS_ICU_IP_DUAL_CLOCK_MODE_API == STD_ON)
210 /** @brief Definition of prescaler type (Normal or Alternate) */
211 typedef enum
212 {
213     EMIOS_ICU_NORMAL_CLK        = 0x0U,  /**< @brief Normal prescaler         */
214     EMIOS_ICU_ALTERNATE_CLK     = 0x1U   /**< @brief Alternate prescaler      */
215 } eMios_Icu_Ip_ClockModeType;
216 #endif
217 
218 /** @brief Definition of master bus type */
219 typedef enum
220 {
221     EMIOS_ICU_BUS_A                 = 0x0U, /**< @brief Bus A            */
222     EMIOS_ICU_BUS_DIVERSE           = 0x1U, /**< @brief Bus diverse      */
223     EMIOS_ICU_BUS_F                 = 0x2U, /**< @brief Bus F            */
224     EMIOS_ICU_BUS_INTERNAL_COUNTER  = 0x3U  /**< @brief Internal counter */
225 } eMios_Icu_Ip_BusType;
226 
227 /** @brief Generic error codes. */
228 typedef enum
229 {
230     /** @brief Generic operation success status. */
231     EMIOS_IP_STATUS_SUCCESS                  = 0x00U,
232     /** @brief Generic operation failure status. */
233     EMIOS_IP_STATUS_ERROR                    = 0x01U
234 } eMios_Icu_Ip_StatusType;
235 
236 /** @brief Selection of the signal measurement mode when IcuSignalMeasurementProperty is ICU_DUTY_CYCLE. */
237 typedef enum
238 {
239     /** @brief un-initialized. */
240     EMIOS_ICU_UNINIT                = 0x00U,
241     /** @brief SAIC mode. */
242     EMIOS_ICU_SAIC                  = 0x01U,
243     /** @brief IPWM mode. */
244     EMIOS_ICU_IPM                   = 0x02U,
245     /** @brief IPWM mode. */
246     EMIOS_ICU_IPWM                  = 0x03U
247 } eMios_Icu_Ip_UCModeType;
248 
249 
250 /** @brief Selects the clock divider value for the UC internal prescaler. */
251 typedef enum
252 {
253     /** @brief EMIOS_PRESCALER_DIVIDE_1. */
254     EMIOS_PRESCALER_DIVIDE_1                    = 0x00U,
255     /** @brief EMIOS_PRESCALER_DIVIDE_2. */
256     EMIOS_PRESCALER_DIVIDE_2                    = 0x01U,
257     /** @brief EMIOS_PRESCALER_DIVIDE_3. */
258     EMIOS_PRESCALER_DIVIDE_3                    = 0x02U,
259     /** @brief EMIOS_PRESCALER_DIVIDE_4. */
260     EMIOS_PRESCALER_DIVIDE_4                    = 0x03U,
261     /** @brief EMIOS_PRESCALER_DIVIDE_5. */
262     EMIOS_PRESCALER_DIVIDE_5                    = 0x04U,
263     /** @brief EMIOS_PRESCALER_DIVIDE_6. */
264     EMIOS_PRESCALER_DIVIDE_6                    = 0x05U,
265     /** @brief EMIOS_PRESCALER_DIVIDE_7. */
266     EMIOS_PRESCALER_DIVIDE_7                    = 0x06U,
267     /** @brief EMIOS_PRESCALER_DIVIDE_8. */
268     EMIOS_PRESCALER_DIVIDE_8                    = 0x07U,
269     /** @brief EMIOS_PRESCALER_DIVIDE_9. */
270     EMIOS_PRESCALER_DIVIDE_9                    = 0x08U,
271     /** @brief EMIOS_PRESCALER_DIVIDE_10. */
272     EMIOS_PRESCALER_DIVIDE_10                   = 0x09U,
273     /** @brief EMIOS_PRESCALER_DIVIDE_11. */
274     EMIOS_PRESCALER_DIVIDE_11                   = 0x0AU,
275     /** @brief EMIOS_PRESCALER_DIVIDE_12. */
276     EMIOS_PRESCALER_DIVIDE_12                   = 0x0BU,
277     /** @brief EMIOS_PRESCALER_DIVIDE_13. */
278     EMIOS_PRESCALER_DIVIDE_13                   = 0x0CU,
279     /** @brief EMIOS_PRESCALER_DIVIDE_14. */
280     EMIOS_PRESCALER_DIVIDE_14                   = 0x0DU,
281     /** @brief EMIOS_PRESCALER_DIVIDE_15. */
282     EMIOS_PRESCALER_DIVIDE_15                   = 0x0EU,
283     /** @brief EMIOS_PRESCALER_DIVIDE_16. */
284     EMIOS_PRESCALER_DIVIDE_16                   = 0x0FU
285 } eMios_Icu_Ip_PrescalerType;
286 
287 /** @brief Selects the the input filter. */
288 typedef enum
289 {
290     /** @brief EMIOS_DIGITAL_FILTER_BYPASSED. */
291     EMIOS_DIGITAL_FILTER_BYPASSED              = 0x00U,
292     /** @brief EMIOS_DIGITAL_FILTER_02. */
293     EMIOS_DIGITAL_FILTER_02                    = 0x01U,
294     /** @brief EMIOS_DIGITAL_FILTER_04. */
295     EMIOS_DIGITAL_FILTER_04                    = 0x02U,
296     /** @brief EMIOS_DIGITAL_FILTER_08. */
297     EMIOS_DIGITAL_FILTER_08                    = 0x04U,
298     /** @brief EMIOS_DIGITAL_FILTER_16. */
299     EMIOS_DIGITAL_FILTER_16                    = 0x08U
300 } eMios_Icu_Ip_FilterType;
301 
302 /*==================================================================================================
303                                  STRUCTURES AND OTHER TYPEDEFS
304 ==================================================================================================*/
305 /** @brief The notification functions shall have no parameters and no return value.*/
306 typedef void (*eMios_Icu_Ip_NotifyType)(void);
307 
308 /**
309 * @brief Structure that contains ICU Duty cycle parameters. It contains the values needed for
310 *        calculating duty cycles i.e Period time value and active time value.
311 * @implements eMios_Icu_Ip_DutyCycleType_struct
312 */
313 typedef struct
314 {
315     eMios_Icu_ValueType   ActiveTime;         /**< @brief Low or High time value. */
316     eMios_Icu_ValueType   PeriodTime;         /**< @brief Period time value. */
317 } eMios_Icu_Ip_DutyCycleType;
318 
319 /** @brief HLD Callback type for each channel reporting events or events and overflow . */
320 typedef void (*eMios_Icu_Ip_CallbackType)(uint16 callbackParam1, boolean callbackParam2);
321 
322 /** @brief Callback type for each channel. */
323 typedef void (*eMios_Icu_Ip_LogicChStateCbType)(uint16 logicChannel, uint8 mask, boolean set);
324 
325 typedef struct
326 {
327     uint8                               hwChannel;                  /*!< Channel Id */
328     eMios_Icu_Ip_UCModeType             ucMode;                     /*!< eMios UC mode of operation  */
329     boolean                             FreezeEn;                   /*!< Freeze enable for UC */
330     eMios_Icu_Ip_PrescalerType          Prescaler;                  /*!< Channel Prescaler */
331     eMios_Icu_Ip_PrescalerType          AltPrescaler;               /*!< Channel Alternate Prescaler */
332     eMios_Icu_Ip_BusType                CntBus;                     /*!< Channel Counter bus selection */
333     eMios_Icu_Ip_ModeType               chMode;                     /*!< eMios module ICU mode of operation  */
334     eMios_Icu_Ip_SubModeType            chSubMode;                  /*!< eMios ICU mode with or without DMA  */
335     eMios_Icu_Ip_MeasType               measurementMode;            /*!< subMode selection for Signal Measurement*/
336     eMios_Icu_Ip_EdgeType               edgeAlignement;             /*!< Edge alignment for measurement */
337     eMios_Icu_Ip_FilterType             Filter;                     /*!< Channel Digital Input Filter */
338     eMios_Icu_Ip_CallbackType           callback;                   /*!< The HLD callback function for channels events */
339     eMios_Icu_Ip_LogicChStateCbType     logicChStateCallback;      /*!< The HLD callback function for changing logic channels status */
340     uint8                               callbackParams;             /*!< The HLD logical channel serviced */
341     boolean                             bWithoutInterrupt;          /*!< Measurement of ICU signal property without using interrupt */
342 #if (EMIOS_ICU_IP_TIMESTAMP_API == STD_ON)
343     eMios_Icu_Ip_TimestampBufferType    timestampBufferType;        /*!< Timestamp buffer type for timestamp mode*/
344 #endif
345 #if ((STD_ON == EMIOS_ICU_IP_SIGNALMEASUREMENT_USES_DMA_IPL) || (STD_ON == EMIOS_ICU_IP_TIMESTAMP_USES_DMA_IPL))
346     /** @brief Dma Channel Id. */
347     uint8                               dmaChannel;
348 #endif /* ((STD_ON == EMIOS_ICU_IP_SIGNALMEASUREMENT_USES_DMA_IPL) || (STD_ON == EMIOS_ICU_IP_TIMESTAMP_USES_DMA_IPL)) */
349     eMios_Icu_Ip_NotifyType             eMiosChannelNotification;   /*!< The notification and overflow have no parameters and no return value and are generated */
350     eMios_Icu_Ip_NotifyType             eMiosOverflowNotification;  /*!< based on channel run environment - HLD or IPL - statically,precompile configured*/
351 } eMios_Icu_Ip_ChannelConfigType;
352 
353 /**
354 * @brief      eTimer IP specific configuration structure type
355 */
356 typedef struct
357 {
358     /** @brief Number of eMios channels in the Icu configuration */
359     uint8                           nNumChannels;
360     /** @brief Pointer to the configured channels for eMios */
361     const eMios_Icu_Ip_ChannelConfigType (*pChannelsConfig)[];
362 } eMios_Icu_Ip_ConfigType;
363 
364 
365 /** @brief This structure is used by the IPL driver for internal logic. */
366 typedef struct
367 {
368     /** @brief eMios UC mode of operation. */
369     eMios_Icu_Ip_UCModeType                         operationMode;
370     /** @brief Master bus selection. */
371     eMios_Icu_Ip_BusType                            BusSelected;
372     /** @brief EMIOS channel mode. */
373     eMios_Icu_Ip_ModeType                           channelMode;
374     /** @brief Support DMA or not. */
375     eMios_Icu_Ip_SubModeType                        dmaMode;
376     /** @brief Type of edge used for activation. */
377     eMios_Icu_Ip_EdgeType                           edgeTrigger;
378     /** @brief Calback for other types of measurement.*/
379     eMios_Icu_Ip_CallbackType                       callback;
380     /** @brief Calback for HLD logic channel status changes */
381     eMios_Icu_Ip_LogicChStateCbType                 logicChStateCallback;
382     /** @brief Logic channel for which callback is executed. */
383     uint16                                          callbackParam;
384     /** @brief Measurement of ICU signal property without using interrupt. */
385     boolean                                         msWithoutInterrupt;
386 #if (STD_ON == EMIOS_ICU_IP_TIMESTAMP_API)
387     /** @brief Timestamp buffer type for timestamp mode. */
388     eMios_Icu_Ip_TimestampBufferType                timestampBufferType;
389     /** @brief Pointer to the buffer-array where the timestamp values shall be placed. */
390     eMios_Icu_ValueType                             *eMios_Icu_Ip_aBuffer;
391     /** @brief Variable for saving the size of the external buffer (number of entries). */
392     uint16                                          eMios_Icu_Ip_aBufferSize;
393     /** @brief Variable for saving Notification interval (number of events). */
394     uint16                                          eMios_Icu_Ip_aBufferNotify;
395     /** @brief Variable for saving the number of notify counts. */
396     uint16                                          eMios_Icu_Ip_aNotifyCount;
397     /** @brief Variable for saving the time stamp index. */
398     uint16                                          eMios_Icu_Ip_aBufferIndex;
399 #endif /* (STD_ON == EMIOS_ICU_IP_TIMESTAMP_API) */
400 #if (defined(EMIOS_ICU_IP_SIGNAL_MEASUREMENT_API) && (STD_ON == EMIOS_ICU_IP_SIGNAL_MEASUREMENT_API))
401     /** @brief Store the status of the first measurement. */
402     boolean                                         firstEdge;
403     /** @brief Signal measurement mode. */
404     eMios_Icu_Ip_MeasType                           measurement;
405     /** @brief Variable for saving the period. */
406     eMios_Icu_ValueType                             eMios_Icu_Ip_aPeriod;
407     /** @brief Variable for saving the pulse width of active time. */
408     eMios_Icu_ValueType                             eMios_Icu_Ip_aActivePulseWidth;
409 #endif /* (defined(EMIOS_ICU_IP_SIGNAL_MEASUREMENT_API) && (STD_ON == EMIOS_ICU_IP_SIGNAL_MEASUREMENT_API)) */
410 #if ((STD_ON == EMIOS_ICU_IP_SIGNALMEASUREMENT_USES_DMA_IPL) || (STD_ON == EMIOS_ICU_IP_TIMESTAMP_USES_DMA_IPL))
411     /** @brief Dma Channel Id. */
412     uint8                                           dmaChannel;
413 #endif /* ((STD_ON == EMIOS_ICU_IP_SIGNALMEASUREMENT_USES_DMA_IPL) || (STD_ON == EMIOS_ICU_IP_TIMESTAMP_USES_DMA_IPL)) */
414 #if (defined(EMIOS_ICU_IP_EDGE_COUNT_API) && (STD_ON == EMIOS_ICU_IP_EDGE_COUNT_API))
415     /** @brief Logic variable to count edges. */
416     uint16                                          edgeNumbers;
417 
418 #if (STD_ON == EMIOS_ICU_IP_SET_MAX_COUNTER)
419     /** @brief Logic variable to count edges. */
420     uint32                                          maxCounterValue;
421 #endif  /* STD_ON == EMIOS_ICU_IP_SET_MAX_COUNTER */
422 #endif /* (defined(EMIOS_ICU_IP_EDGE_COUNT_API) && (STD_ON == EMIOS_ICU_IP_EDGE_COUNT_API)) */
423     /** @brief The notification functions for TIME_STAMP or SIGNAL_EDGE_DETECT mode. */
424     eMios_Icu_Ip_NotifyType                         eMiosChannelNotification;
425     /** @brief The notification functions for TIME_STAMP or SIGNAL_EDGE_DETECT mode. */
426     eMios_Icu_Ip_NotifyType                         eMiosOverflowNotification;
427     /** @brief Enables or disables the user notification call */
428     boolean                                         notificationEnable;
429     /* State of initialized EMIOS modules. */
430     boolean                                         channelsInitState;
431 } eMios_Icu_Ip_ChStateType;
432 
433 #endif  /* EMIOS_ICU_IP_USED */
434 
435 /*==================================================================================================
436                                  GLOBAL VARIABLE DECLARATIONS
437 ==================================================================================================*/
438 
439 /*==================================================================================================
440                                      FUNCTION PROTOTYPES
441 ==================================================================================================*/
442 
443 #ifdef __cplusplus
444 }
445 #endif
446 
447 /** @} */
448 
449 #endif  /* EMIOS_ICU_IP_TYPES_H */
450