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