12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250 |
- /*==================================================================================================
- * Project : RTD AUTOSAR 4.4
- * Platform : CORTEXM
- * Peripheral : Ftm Lpit Lptmr Port_Ci LpCmp
- * Dependencies : none
- *
- * Autosar Version : 4.4.0
- * Autosar Revision : ASR_REL_4_4_REV_0000
- * Autosar Conf.Variant :
- * SW Version : 1.0.0
- * Build Version : S32K1_RTD_1_0_0_HF01_D2109_ASR_REL_4_4_REV_0000_20210907
- *
- * (c) Copyright 2020-2021 NXP Semiconductors
- * All Rights Reserved.
- *
- * NXP Confidential. This software is owned or controlled by NXP and may only be
- * used strictly in accordance with the applicable license terms. By expressly
- * accepting such terms or by downloading, installing, activating and/or otherwise
- * using the software, you are agreeing that you have read, and that you agree to
- * comply with and are bound by, such license terms. If you do not agree to be
- * bound by the applicable license terms, then you may not retain, install,
- * activate or otherwise use the software.
- ==================================================================================================*/
- #ifndef ICU_H
- #define ICU_H
- /**
- * @file
- *
- * @addtogroup icu Icu Driver
- * @{
- */
- #ifdef __cplusplus
- extern "C"
- {
- #endif
- /*==================================================================================================
- * INCLUDE FILES
- * 1) system and project includes
- * 2) needed interfaces from external units
- * 3) internal and external interfaces from this unit
- ==================================================================================================*/
- #include "Mcal.h"
- #include "StandardTypes.h"
- #include "Icu_Cfg.h"
- #include "Icu_Irq.h"
- #include "Icu_Types.h"
- #include "Icu_Ipw_Types.h"
- #if (ICU_REPORT_WAKEUP_SOURCE == STD_ON)
- #include "EcuM_Externals.h"
- #endif
- #if ((ICU_SIGNALMEASUREMENT_USES_DMA == STD_ON) || (ICU_TIMESTAMP_USES_DMA == STD_ON))
- #include "CDD_Mcl.h"
- #endif
- /*==================================================================================================
- * SOURCE FILE VERSION INFORMATION
- ==================================================================================================*/
- #define ICU_VENDOR_ID 43
- #define ICU_MODULE_ID 122
- #define ICU_AR_RELEASE_MAJOR_VERSION 4
- #define ICU_AR_RELEASE_MINOR_VERSION 4
- #define ICU_AR_RELEASE_REVISION_VERSION 0
- #define ICU_SW_MAJOR_VERSION 1
- #define ICU_SW_MINOR_VERSION 0
- #define ICU_SW_PATCH_VERSION 0
- /*==================================================================================================
- * FILE VERSION CHECKS
- ==================================================================================================*/
- /* Check if header file and StandardTypes.h file are of the same Autosar version */
- #ifndef DISABLE_MCAL_INTERMODULE_ASR_CHECK
- #if ((ICU_AR_RELEASE_MAJOR_VERSION != STD_AR_RELEASE_MAJOR_VERSION) || \
- (ICU_AR_RELEASE_MINOR_VERSION != STD_AR_RELEASE_MINOR_VERSION))
- #error "AutoSar Version Numbers of Icu.h and StandardTypes.h are different"
- #endif
-
- #if ((ICU_AR_RELEASE_MAJOR_VERSION != MCAL_AR_RELEASE_MAJOR_VERSION) || \
- (ICU_AR_RELEASE_MINOR_VERSION != MCAL_AR_RELEASE_MINOR_VERSION))
- #error "AutoSar Version Numbers of Icu.h and Mcal.h are different"
- #endif
- #if ((ICU_SIGNALMEASUREMENT_USES_DMA == STD_ON) || (ICU_TIMESTAMP_USES_DMA == STD_ON))
- /* Check Icu_Cfg.c against CDD_Mcl.h file versions */
- #if ((ICU_AR_RELEASE_MAJOR_VERSION != CDD_MCL_AR_RELEASE_MAJOR_VERSION_H) || \
- (ICU_AR_RELEASE_MINOR_VERSION != CDD_MCL_AR_RELEASE_MINOR_VERSION_H))
- #error "AutoSar Version Numbers of Icu.h and CDD_Mcl.h are different"
- #endif
- #endif
- #endif
- /* Check if source file and ICU configuration header file are of the same vendor */
- #if (ICU_VENDOR_ID != ICU_CFG_VENDOR_ID)
- #error "Icu.h and Icu_Cfg.h have different vendor IDs"
- #endif
- /* Check if header file and ICU configuration header file are of the same Autosar version */
- #if ((ICU_AR_RELEASE_MAJOR_VERSION != ICU_CFG_AR_RELEASE_MAJOR_VERSION) || \
- (ICU_AR_RELEASE_MINOR_VERSION != ICU_CFG_AR_RELEASE_MINOR_VERSION) || \
- (ICU_AR_RELEASE_REVISION_VERSION != ICU_CFG_AR_RELEASE_REVISION_VERSION))
- #error "AutoSar Version Numbers of Icu.h and Icu_Cfg.h are different"
- #endif
- /* Check if header file and ICU configuration header file are of the same software version */
- #if ((ICU_SW_MAJOR_VERSION != ICU_CFG_SW_MAJOR_VERSION) || \
- (ICU_SW_MINOR_VERSION != ICU_CFG_SW_MINOR_VERSION) || \
- (ICU_SW_PATCH_VERSION != ICU_CFG_SW_PATCH_VERSION))
- #error "Software Version Numbers of Icu.h and Icu_Cfg.h are different"
- #endif
- /* Check if source file and ICU types header file are of the same vendor */
- #if (ICU_VENDOR_ID != ICU_IRQ_VENDOR_ID)
- #error "Icu.h and Icu_Irq.h have different vendor IDs"
- #endif
- /* Check if header file and ICU types header file are of the same Autosar version */
- #if ((ICU_AR_RELEASE_MAJOR_VERSION != ICU_IRQ_AR_RELEASE_MAJOR_VERSION) || \
- (ICU_AR_RELEASE_MINOR_VERSION != ICU_IRQ_AR_RELEASE_MINOR_VERSION) || \
- (ICU_AR_RELEASE_REVISION_VERSION != ICU_IRQ_AR_RELEASE_REVISION_VERSION))
- #error "AutoSar Version Numbers of Icu.h and Icu_Irq.h are different"
- #endif
- /* Check if header file and ICU types header file are of the same software version */
- #if ((ICU_SW_MAJOR_VERSION != ICU_IRQ_SW_MAJOR_VERSION) || \
- (ICU_SW_MINOR_VERSION != ICU_IRQ_SW_MINOR_VERSION) || \
- (ICU_SW_PATCH_VERSION != ICU_IRQ_SW_PATCH_VERSION))
- #error "Software Version Numbers of Icu.h and Icu_Irq.h are different"
- #endif
- /* Check if source file and ICU types header file are of the same vendor */
- #if (ICU_VENDOR_ID != ICU_TYPES_VENDOR_ID)
- #error "Icu.h and Icu_Types.h have different vendor IDs"
- #endif
- /* Check if header file and ICU types header file are of the same Autosar version */
- #if ((ICU_AR_RELEASE_MAJOR_VERSION != ICU_TYPES_AR_RELEASE_MAJOR_VERSION) || \
- (ICU_AR_RELEASE_MINOR_VERSION != ICU_TYPES_AR_RELEASE_MINOR_VERSION) || \
- (ICU_AR_RELEASE_REVISION_VERSION != ICU_TYPES_AR_RELEASE_REVISION_VERSION))
- #error "AutoSar Version Numbers of Icu.h and Icu_Types.h are different"
- #endif
- /* Check if header file and ICU types header file are of the same software version */
- #if ((ICU_SW_MAJOR_VERSION != ICU_TYPES_SW_MAJOR_VERSION) || \
- (ICU_SW_MINOR_VERSION != ICU_TYPES_SW_MINOR_VERSION) || \
- (ICU_SW_PATCH_VERSION != ICU_TYPES_SW_PATCH_VERSION))
- #error "Software Version Numbers of Icu.h and Icu_Types.h are different"
- #endif
- /* Check if source file and ICU types header file are of the same vendor */
- #if (ICU_VENDOR_ID != ICU_IPW_TYPES_VENDOR_ID)
- #error "Icu.h and Icu_Ipw_Types.h have different vendor IDs"
- #endif
- /* Check if header file and ICU types header file are of the same Autosar version */
- #if ((ICU_AR_RELEASE_MAJOR_VERSION != ICU_IPW_TYPES_AR_RELEASE_MAJOR_VERSION) || \
- (ICU_AR_RELEASE_MINOR_VERSION != ICU_IPW_TYPES_AR_RELEASE_MINOR_VERSION) || \
- (ICU_AR_RELEASE_REVISION_VERSION != ICU_IPW_TYPES_AR_RELEASE_REVISION_VERSION))
- #error "AutoSar Version Numbers of Icu.h and Icu_Ipw_Types.h are different"
- #endif
- /* Check if header file and ICU types header file are of the same software version */
- #if ((ICU_SW_MAJOR_VERSION != ICU_IPW_TYPES_SW_MAJOR_VERSION) || \
- (ICU_SW_MINOR_VERSION != ICU_IPW_TYPES_SW_MINOR_VERSION) || \
- (ICU_SW_PATCH_VERSION != ICU_IPW_TYPES_SW_PATCH_VERSION))
- #error "Software Version Numbers of Icu.h and Icu_Ipw_Types.h are different"
- #endif
- #if (ICU_REPORT_WAKEUP_SOURCE == STD_ON)
- #ifndef DISABLE_MCAL_INTERMODULE_ASR_CHECK
- /* Check if header file and EcuM_Cbk.h file are of the same Autosar version */
- #if ((ICU_AR_RELEASE_MAJOR_VERSION != ECUM_CBK_AR_RELEASE_MAJOR_VERSION) || \
- (ICU_AR_RELEASE_MINOR_VERSION != ECUM_CBK_AR_RELEASE_MINOR_VERSION))
- #error "AutoSar Version Numbers of Icu.h and EcuM_Cbk.h are different"
- #endif
- #endif
- #endif /* ICU_REPORT_WAKEUP_SOURCE */
- /*==================================================================================================
- * CONSTANTS
- ==================================================================================================*/
- /*==================================================================================================
- * DEFINES AND MACROS
- ==================================================================================================*/
- #if (ICU_VALIDATE_CALL_AND_CHANNEL == STD_ON)
- /**
- * @brief API service used with a value is not in range
- * @implements Icu_ErrorCodes_define
- * */
- #define ICU_E_PARAM_CONFIG ((uint8)0x09)
- /**
- * @brief API Icu_Init service called with wrong parameter
- * @implements Icu_ErrorCodes_define
- * */
- #define ICU_E_INIT_FAILED ((uint8)0x0D)
- /**
- * @brief API service used with an invalid channel identifier or channel was not configured for
- * the functionality of the calling API
- * @implements Icu_ErrorCodes_define
- * */
- #define ICU_E_PARAM_CHANNEL ((uint8)0x0B)
- /**
- * @brief API service used with an invalid or not feasible activation
- * @implements Icu_ErrorCodes_define
- * */
- #define ICU_E_PARAM_ACTIVATION ((uint8)0x0C)
- /**
- * @brief API service used with an invalid application-buffer pointer
- * @implements Icu_ErrorCodes_define
- * */
- #define ICU_E_PARAM_POINTER ((uint8)0x0A)
- /**
- * @brief API service used with an invalid buffer size
- * @implements Icu_ErrorCodes_define
- * */
- #define ICU_E_PARAM_BUFFER_SIZE ((uint8)0x0E)
- #if ((ICU_VALIDATE_PARAMS == STD_ON) && (ICU_SET_MODE_API == STD_ON))
- /**
- * @brief API service Icu_SetMode used with an invalid mode
- * @implements Icu_ErrorCodes_define
- * */
- #define ICU_E_PARAM_MODE ((uint8)0x0F)
- #endif
- /**
- * @brief API service used without module initialization
- * @implements Icu_ErrorCodes_define
- * */
- #define ICU_E_UNINIT ((uint8)0x14)
- #if ((ICU_VALIDATE_GLOBAL_CALL == STD_ON) && (ICU_SET_MODE_API == STD_ON))
- /**
- * @brief API service Icu_SetMode is called while a running operation
- * @implements Icu_ErrorCodes_define
- * */
- #define ICU_E_BUSY_OPERATION ((uint8)0x16)
- #endif
- /**
- * @brief API Icu_Init service called when the ICU driver and the Hardware
- * are already initialized
- * @implements Icu_ErrorCodes_define
- * */
- #define ICU_E_ALREADY_INITIALIZED ((uint8)0x17)
- /**
- * @brief API Icu_StartTimeStamp is called and the parameter NotifyInterval is invalid (e.g. 0,
- * NotifyInterval < 1)
- * @implements Icu_ErrorCodes_define
- * */
- #define ICU_E_PARAM_NOTIFY_INTERVAL ((uint8)0x18)
- /**
- * @brief API Icu_GetVersionInfo is called and the parameter versioninfo is is invalid
- * ( e.g. NULL )
- * @implements Icu_ErrorCodes_define
- * */
- #define ICU_E_PARAM_VINFO ((uint8)0x19)
- #if ((ICU_VALIDATE_PARAMS == STD_ON) && (ICU_DUAL_CLOCK_MODE_API == STD_ON))
- /**
- * @brief API Icu_SetClockMode service called with wrong parameter
- * @implements Icu_ErrorCodes_define
- */
- #define ICU_E_PARAM_CLOCK_MODE ((uint8)0x7AU)
- #endif
- #if ((ICU_OVERFLOW_NOTIFICATION_API == STD_OFF) && (ICU_VALIDATE_PARAMS == STD_ON))
- #if (ICU_VALIDATE_PARAMS == STD_ON)
- /**
- * @brief API Icu_GetEdgeNumbers service called when the Counter rolls over
- * @implements Icu_ErrorCodes_define
- * */
- #define ICU_E_EDGECOUNTING_OVERFLOW ((uint8)0xD0)
- #endif
- #if (ICU_TIMESTAMP_API == STD_ON)
- /**
- * @brief API Icu_GetTimestampIndex service called when the Time stamp count overflows
- * @implements Icu_ErrorCodes_define
- * */
- #define ICU_E_TIMESTAMP_OVERFLOW ((uint8)0xD1)
- #endif
- #if ((ICU_OVERFLOW_NOTIFICATION_API == STD_OFF)&&((ICU_GET_TIME_ELAPSED_API== STD_ON) || (ICU_GET_DUTY_CYCLE_VALUES_API== STD_ON)))
- /**
- * @brief API Icu_GetTimeElapsed service called when the Time elapsed overflows
- * @implements Icu_ErrorCodes_define
- * */
- #define ICU_E_MEASUREMENT_OVERFLOW ((uint8)0xD2)
- #endif
- #endif
- /**
- * @brief API Check mode before set up feature for channel
- * @implements Icu_ErrorCodes_define
- * */
- #define ICU_E_FORBIDEN_MODE ((uint8)0xD4)
- /**
- * @brief API service ID for Icu_Init function
- * @details Parameters used when raising an error/exception
- * */
- #define ICU_INIT_ID ((uint8)0x00)
- /**
- * @brief API service ID for Icu_DeInit function
- * @details Parameters used when raising an error/exception
- * */
- #define ICU_DEINIT_ID ((uint8)0x01)
- #if ((ICU_VALIDATE_GLOBAL_CALL == STD_ON) && (ICU_SET_MODE_API == STD_ON))
- /**
- * @brief API service ID for Icu_SetMode function
- * @details Parameters used when raising an error/exception
- * */
- #define ICU_SETMODE_ID ((uint8)0x02)
- #endif
- #if (ICU_DISABLE_WAKEUP_API == STD_ON)
- #if ((ICU_VALIDATE_CALL_AND_CHANNEL == STD_ON) || (ICU_VALIDATE_PARAMS == STD_ON))
- /**
- * @brief API service ID for Icu_DisableWakeup function
- * @details Parameters used when raising an error/exception
- * */
- #define ICU_DISABLEWAKEUP_ID ((uint8)0x03)
- #endif
- #endif
- #if (ICU_ENABLE_WAKEUP_API == STD_ON)
- #if ((ICU_VALIDATE_GLOBAL_CALL == STD_ON) || (ICU_VALIDATE_CALL_AND_CHANNEL == STD_ON) || (ICU_VALIDATE_PARAMS == STD_ON))
- /**
- * @brief API service ID for Icu_EnableWakeup function
- * @details Parameters used when raising an error/exception
- * */
- #define ICU_ENABLEWAKEUP_ID ((uint8)0x04)
- #endif
- #endif
- /**
- * @brief API service ID for Icu_SetActivationCondition function
- * @details Parameters used when raising an error/exception
- * */
- #define ICU_SETACTIVATIONCONDITION_ID ((uint8)0x05)
- /**
- * @brief API service ID for Icu_DisableNotification function
- * @details Parameters used when raising an error/exception
- * */
- #define ICU_DISABLENOTIFICATION_ID ((uint8)0x06)
- /**
- * @brief API service ID for Icu_EnableNotification function
- * @details Parameters used when raising an error/exception
- * */
- #define ICU_ENABLENOTIFICATION_ID ((uint8)0x07)
- #if ((ICU_GET_INPUT_STATE_API == STD_ON) && (ICU_VALIDATE_CALL_AND_CHANNEL == STD_ON))
- /**
- * @brief API service ID for Icu_GetInputState function
- * @details Parameters used when raising an error/exception
- * */
- #define ICU_GETINPUTSTATE_ID ((uint8)0x08)
- #endif
- /**
- * @brief API service ID for Icu_StartTimestamp function
- * @details Parameters used when raising an error/exception
- * */
- #define ICU_STARTTIMESTAMP_ID ((uint8)0x09)
- /**
- * @brief API service ID for Icu_GetTimestampIndex function
- * @details Parameters used when raising an error/exception
- * */
- #define ICU_GETTIMESTAMPINDEX_ID ((uint8)0x0B)
- /**
- * @brief API service ID for Icu_ResetEdgeCount function
- * @details Parameters used when raising an error/exception
- * */
- #define ICU_RESETEDGECOUNT_ID ((uint8)0x0C)
- /**
- * @brief API service ID for Icu_EnableEdgeCount function
- * @details Parameters used when raising an error/exception
- * */
- #define ICU_ENABLEEDGECOUNT_ID ((uint8)0x0D)
- /**
- * @brief API service ID for Icu_DisableEdgeCount function
- * @details Parameters used when raising an error/exception
- * */
- #define ICU_DISABLEEDGECOUNT_ID ((uint8)0x0E)
- /**
- * @brief API service ID for Icu_GetEdgeNumbers function
- * @details Parameters used when raising an error/exception
- * */
- #define ICU_GETEDGENUMBERS_ID ((uint8)0x0F)
- /**
- * @brief API service ID for Icu_GetTimeElapsed function
- * @details Parameters used when raising an error/exception
- * */
- #define ICU_GETTIMEELAPSED_ID ((uint8)0x10)
- #if ((ICU_VALIDATE_PARAMS == STD_ON) && (ICU_GET_DUTY_CYCLE_VALUES_API == STD_ON))
- /**
- * @brief API service ID for Icu_GetDutyCycleValues function
- * @details Parameters used when raising an error/exception
- * */
- #define ICU_GETDUTYCYCLEVALUES_ID ((uint8)0x11)
- #endif
- /**
- * @brief API service ID for Icu_GetVersionInfo function
- * @details Parameters used when raising an error/exception
- * */
- #define ICU_GETVERSIONINFO_ID ((uint8)0x12)
- /**
- * @brief API service ID for Icu_StartSignalMeasurement function
- * @details Parameters used when raising an error/exception
- * */
- #define ICU_STARTSIGNALMEASUREMENT_ID ((uint8)0x13)
- /**
- * @brief API service ID for Icu_StopSignalMeasurement function
- * @details Parameters used when raising an error/exception
- * */
- #define ICU_STOPSIGNALMEASUREMENT_ID ((uint8)0x14)
- #if ((ICU_WAKEUP_FUNCTIONALITY_API == STD_ON) && (ICU_VALIDATE_GLOBAL_CALL == STD_ON))
- /**
- * @brief API service ID for Icu_CheckWakeup function
- * @details Parameters used when raising an error/exception
- * */
- #define ICU_CHECKWAKEUP_ID ((uint8)0x15)
- #endif
- /**
- * @brief API service ID for Icu_EnableEdgeDetection function
- * @details Parameters used when raising an error/exception
- * */
- #define ICU_ENABLEEDGEDETECTION_ID ((uint8)0x16)
- /**
- * @brief API service ID for Icu_DisableEdgeDetection function
- * @details Parameters used when raising an error/exception
- * */
- #define ICU_DISABLEEDGEDETECTION_ID ((uint8)0x17)
- #if ((ICU_VALIDATE_PARAMS == STD_ON) && (ICU_DUAL_CLOCK_MODE_API == STD_ON))
- /**
- * @brief API service ID for Icu_SetClockMode function
- * @details Parameters used when raising an error/exception
- */
- #define ICU_SET_CLOCK_MODE_ID ((uint8)0x7BU)
- #endif
- #if ((ICU_CAPTURERGISTER_API == STD_ON) && ((ICU_SIGNAL_MEASUREMENT_API == STD_ON) || (ICU_TIMESTAMP_API == STD_ON)))
- /**
- * @brief API service ID for Icu_GetCaptureRegisterValue function
- * @details Parameters used when raising an error/exception
- */
- #define ICU_GET_CAPTURE_REGISTER_VALUE_ID ((uint8)0x19U)
- #endif
- #if ((ICU_GET_PULSE_WIDTH_API == STD_ON) && (ICU_SIGNAL_MEASUREMENT_API == STD_ON))
- /**
- * @brief API service ID for Icu_GetPulseWidth function
- * @details Parameters used when raising an error/exception
- */
- #define ICU_GET_PULSE_WIDTH_ID ((uint8)0x1AU)
- #endif
- #if (ICU_GET_INPUT_LEVEL_API == STD_ON)
- /**
- * @brief API service ID for Icu_GetInputLevel function
- * @details Parameters used when raising an error/exception
- * */
- #define ICU_GET_INPUT_LEVEL_ID ((uint8)0x7CU)
- #endif /* ICU_GET_INPUT_LEVEL_API */
- #endif
- #if (ICU_TIMESTAMP_API == STD_ON)
- /**
- * @brief API service ID for Icu_StopTimestamp function
- * @details Parameters used when raising an error/exception
- * */
- #define ICU_STOPTIMESTAMP_ID ((uint8)0x0A)
- /**
- * @brief API service Icu_StopTimestamp called on a channel which was not
- * started or already stopped
- * @implements Icu_ErrorCodes_define
- * */
- #define ICU_E_NOT_STARTED ((uint8)0x15)
- #endif
- /*================================================================================================*/
- /*==================================================================================================
- * ENUMS
- ==================================================================================================*/
- /*==================================================================================================
- * STRUCTURES AND OTHER TYPEDEFS
- ==================================================================================================*/
- #if ((ICU_SIGNALMEASUREMENT_USES_DMA == STD_ON) || (ICU_TIMESTAMP_USES_DMA == STD_ON))
- /** @brief Typedef for Mcl_ChannelType. */
- typedef uint8 Mcl_ChannelType;
- #endif
- /**
- * @brief Structure that contains ICU channel configuration.
- * @details It contains the information like Icu Channel Mode, Channel Notification function,
- * overflow Notification function.
- * @implements Icu_ChannelConfigType_struct
- * */
- typedef struct
- {
- /** @brief Channel wakeup capability enable. */
- boolean Icu_WakeupCapabile;
- /** @brief RISING_EDGE, FALLING_EDGE or BOTH_EDGES for EDGE_COUNTER. */
- Icu_ActivationType Icu_ActivEdge;
- /** @brief EDGE_DETECT, TIME_STAMP, SIGNAL_MEASUREMENT or EDGE_COUNTER. */
- Icu_MeasurementModeType Icu_ChannelMode;
- /** @brief CIRCULAR_BUFFER or LINEAR_BUFFER for TIME_STAMP, DUTY_CYCLE, HIGH_TIME, LOW_TIME
- * or PERIOD_TIME for SIGNAL_MEASUREMENT and RISING_EDGE, FALLING_EDGE or
- * BOTH_EDGES for EDGE_COUNTER. */
- Icu_MeasurementSubModeType Icu_ChannelProperty;
- /** @brief Icu Channel Notification function for TIME_STAMP or EDGE_COUNTER mode. */
- Icu_NotifyType Icu_ChannelNotification;
- #if ((ICU_SIGNALMEASUREMENT_USES_DMA == STD_ON) || (ICU_TIMESTAMP_USES_DMA == STD_ON))
- /** @brief Mcl_DmaChannel Id. */
- Mcl_ChannelType Mcl_DmaChannel;
- #endif
- #if defined(ICU_OVERFLOW_NOTIFICATION_API) && (ICU_OVERFLOW_NOTIFICATION_API == STD_ON)
- /** @brief Icu Channel Overflow Notification function. */
- Icu_NotifyType Icu_ChOverflowNotification;
- #endif /* ICU_OVERFLOW_NOTIFICATION_API */
- #if (ICU_REPORT_WAKEUP_SOURCE == STD_ON)
- Icu_WakeupValueType Icu_Channel_WakeupValue; /**< @brief EcuM wakeup source Id. */
- #endif /* ICU_REPORT_WAKEUP_SOURCE == STD_ON */
- /** @brief Pointer to the ipw channel pointer configuration */
- const Icu_Ipw_ChannelConfigType (*Icu_IpwChannelConfigPtr);
- } Icu_ChannelConfigType;
- /**
- * @brief This type contains initialization data.
- * @details he notification functions shall be configurable
- * as function pointers within the initialization data structure (Icu_ConfigType).
- * This type of the external data structure shall contain the
- * initialization data for the ICU driver. It shall contain:
- * - Wakeup Module Info (in case the wakeup-capability is true)
- * - ICU dependent properties for used HW units
- * - Clock source with optional prescaler (if provided by HW)
- * @implements Icu_ConfigType_struct
- * */
- typedef struct
- {
- /** @brief The number of configured logical channels. */
- uint8 nNumChannels;
- /** @brief Pointer to the list of Icu configured channels */
- const Icu_ChannelConfigType (*Icu_ChannelConfigPtr)[];
- /** @brief The number of IP instances configured */
- uint8 nNumInstances;
- /** @brief Pointer to the list of Icu configured channels */
- const Icu_Ipw_IpConfigType (*Icu_IpConfigPtr)[];
-
- /** @brief channel index in each partition map table*/
- const uint8 (*Icu_IndexChannelMap)[];
- /** @brief Core index*/
- uint8 u32CoreId;
- } Icu_ConfigType;
- /*==================================================================================================
- * GLOBAL VARIABLE DECLARATIONS
- ==================================================================================================*/
- #ifndef ICU_PRECOMPILE_SUPPORT
- #define ICU_START_SEC_CONFIG_DATA_UNSPECIFIED
- #include "Icu_MemMap.h"
- ICU_CONFIG_EXT
- #define ICU_STOP_SEC_CONFIG_DATA_UNSPECIFIED
- #include "Icu_MemMap.h"
- #endif /* #ifndef ICU_PRECOMPILE_SUPPORT */
- #define ICU_START_SEC_VAR_CLEARED_UNSPECIFIED
- #include "Icu_MemMap.h"
- /**
- * @brief Pointer initialized during init with the address of the received configuration structure.
- * @details Will be used by all functions to access the configuration data.
- **/
- extern const Icu_ConfigType *Icu_pCfgPtr[ICU_MAX_PARTITIONS];
- /**
- * @brief Saves the current Icu mode
- **/
- extern Icu_ModeType Icu_CurrentMode;
- /**
- * @brief Stores actual state and configuration of ICU Channels
- **/
- extern volatile Icu_ChannelStateType Icu_aChannelState[ICU_MAX_CHANNEL];
- #if (ICU_TIMESTAMP_API == STD_ON)
- /** @brief Pointer to the buffer-array where the timestamp values shall be placed. */
- extern Icu_ValueType *Icu_aBuffer[ICU_MAX_CHANNEL];
- /**
- * @brief Array for saving the size of the external buffer (number of entries)
- **/
- extern Icu_ValueType Icu_aBufferSize[ICU_MAX_CHANNEL];
- /**
- * @brief Array for saving Notification interval (number of events).
- **/
- extern Icu_ValueType Icu_aBufferNotify[ICU_MAX_CHANNEL];
- /**
- * @brief Array for saving the number of notify counts
- **/
- extern volatile Icu_ValueType Icu_aNotifyCount[ICU_MAX_CHANNEL];
- /**
- * @brief Array for saving the time stamp index
- **/
- extern volatile Icu_IndexType Icu_aBufferIndex[ICU_MAX_CHANNEL];
- #endif /* ICU_TIMESTAMP_API */
- #define ICU_STOP_SEC_VAR_CLEARED_UNSPECIFIED
- #include "Icu_MemMap.h"
- /*==================================================================================================
- * FUNCTION PROTOTYPES
- ==================================================================================================*/
- #define ICU_START_SEC_CODE
- #include "Icu_MemMap.h"
- /**
- * @brief This function initializes the driver.
- * @details This service is a non reentrant function used for driver initialization.
- * The Initialization function shall initialize all relevant registers of the configured
- * hardware with the values of the structure referenced by the parameter ConfigPtr.
- * If the hardware allows for only one usage of the register, the driver
- * module implementing that functionality is responsible for initializing the register.
- * The initialization function of this module shall always have a pointer as a parameter,
- * even though for Variant PC no configuration set shall be given.
- * Instead a NULL pointer shall be passed to the initialization function.
- * The Icu module environment shall not call Icu_Init during a running operation (e. g.
- * timestamp measurement or edge counting).
- *
- * @param[in] ConfigPtr Pointer to a selected configuration structure.
- *
- * @return void
- **/
- void Icu_Init(const Icu_ConfigType* ConfigPtr);
- #if (ICU_DE_INIT_API == STD_ON)
- /**
- * @brief This function de-initializes the ICU module.
- * @details This service is a Non reentrant function used for ICU De-Initialization
- * After the call of this service, the state of the peripherals used by configuration shall be
- * the same as after power on reset. Values of registers which are not writable are
- * excluded.
- * This service shall disable all used interrupts and notifications.
- * The Icu module environment shall not call Icu_DeInit during a running operation (e. g.
- * timestamp measurement or edge counting)
- *
- * @return void
- *
- * @api
- *
- * @pre Icu_Init must be called before.
- * @implements Icu_DeInit_Activity
- *
- **/
- void Icu_DeInit(void);
- #endif /* ICU_DE_INIT_API */
- #if (ICU_SET_MODE_API == STD_ON)
- /**
- * @brief This function sets the ICU mode.
- * @details This service is a non reentrant function used for ICU mode selection.
- * This service shall set the operation mode to the given mode parameter.
- * This service can be called during running operations. If so, an ongoing operation that
- * generates interrupts on a wakeup capable channel like e.g. time stamping or edge counting
- * might lead to the ICU module not being able to properly enter sleep mode. This is then a
- * system or ECU configuration issue not a problem of this specification.
- *
- * @param[in] Mode Specifies the operation mode
- * @return void
- *
- * @pre Icu_Init must be called before.
- * @implements Icu_SetMode_Activity
- *
- * @api
- *
- **/
- void Icu_SetMode(Icu_ModeType Mode);
- #endif /* ICU_SET_MODE_API */
- #if (ICU_DISABLE_WAKEUP_API == STD_ON)
- /**
- * @brief This function disables the wakeup capability of a single ICU channel.
- * @details This service is reentrant function and shall disable the wakeup capability of
- * a single ICU channel.This service is only feasible for ICU channels configured
- * statically as wakeup capable true.
- * The function Icu_DisableWakeup shall be pre compile time configurable On,Off by
- * the configuration parameter IcuDisableWakeupApi.
- *
- * @param[in] Channel Logical number of the ICU channel
- *
- * @return void
- *
- * @api
- *
- * @pre Icu_Init must be called before.
- * @implements Icu_DisableWakeup_Activity
- *
- **/
- void Icu_DisableWakeup(Icu_ChannelType Channel);
- #endif /* ICU_DISABLE_WAKEUP_API */
- #if (ICU_ENABLE_WAKEUP_API == STD_ON)
- /**
- * @brief This function (re-)enables the wakeup capability of the given ICU channel.
- * @details The function is reentrant and re-enable the wake-up capability of a single ICU channel.
- *
- * @param[in] Channel Logical number of the ICU channel
- *
- * @return void
- *
- * @api
- *
- * @pre Icu_Init must be called before. The channel must be configured as wakeup capable.
- * @implements Icu_EnableWakeup_Activity
- *
- **/
- void Icu_EnableWakeup(Icu_ChannelType Channel);
- #endif /* ICU_ENABLE_WAKEUP_API */
- #if (ICU_WAKEUP_FUNCTIONALITY_API == STD_ON)
- /**
- * @brief Checks if a wakeup capable ICU channel is the source for a wakeup event.
- * @details The function calls the ECU state manager service EcuM_SetWakeupEvent
- * in case of a valid ICU channel wakeup event.
- *
- * @param[in] WakeupSource Information on wakeup source to be checked.
- *
- * @return void
- *
- * @api
- *
- * @pre Icu_Init must be called before. The channel must be configured as wakeup capable.
- *
- * @implements Icu_CheckWakeup_Activity
- *
- **/
- void Icu_CheckWakeup(EcuM_WakeupSourceType WakeupSource);
- #endif /* ICU_WAKEUP_FUNCTIONALITY_API */
- /**
- * @brief This function sets the activation-edge for the given channel.
- * @details This service is reentrant and shall set the activation-edge according to Activation
- * parameter for the given channel.
- * This service shall support channels which are configured
- * for the following Icu_MeasurementMode:
- * - ICU_MODE_SIGNAL_EDGE_DETECT
- * - ICU_MODE_TIMESTAMP
- * - ICU_MODE_EDGE_COUNTER
- *
- * @param[in] Channel Logical number of the ICU channel
- * @param[in] Activation Type of activation.
- *
- * @return void
- *
- * @api
- *
- * @pre Icu_Init must be called before. The channel must be properly configured
- * (ICU_MODE_SIGNAL_EDGE_DETECT, ICU_MODE_TIMESTAMP, ICU_MODE_EDGE_COUNTER).
- *
- * @implements Icu_SetActivationCondition_Activity
- *
- **/
- void Icu_SetActivationCondition(Icu_ChannelType Channel, Icu_ActivationType Activation);
- /**
- * @brief This function disables the notification of a channel.
- *
- * @details This function is reentrant and disables the notification of a channel.
- * @param[in] Channel Logical number of the ICU channel
- *
- * @return void
- *
- * @api
- *
- * @pre Icu_Init must be called before.
- *
- * @implements Icu_DisableNotification_Activity
- *
- **/
- void Icu_DisableNotification(Icu_ChannelType Channel);
- /**
- * @brief This function enables the notification on the given channel.
- * @details This function is reentrant and enables the notification on the given channel. The
- * notification will be reported only when the channel measurement property is enabled or
- * started
- *
- * @param[in] Channel Logical number of the ICU channel
- *
- * @return void
- *
- * @api
- *
- * @pre Icu_Init must be called before.
- *
- * @implements Icu_EnableNotification_Activity
- *
- **/
- void Icu_EnableNotification(Icu_ChannelType Channel);
- #if (ICU_GET_INPUT_STATE_API == STD_ON)
- /**
- * @brief This function returns the status of the ICU input.
- * @details This service is reentrant shall return the status of the ICU input.
- * Only channels which are configured for the following Icu_MeasurementMode shall be
- * supported:
- * - ICU_MODE_SIGNAL_EDGE_DETECT,
- * - ICU_MODE_SIGNAL_MEASUREMENT.
- *
- * @param[in] Channel Logical number of the ICU channel
- *
- * @return Icu_InputStateType
- * @retval ICU_ACTIVE An activation edge has been detected
- * @retval ICU_IDLE No activation edge has been detected since the last call of
- * Icu_GetInputState() or Icu_Init().
- *
- * @api
- *
- * @pre Icu_Init must be called before.
- *
- * @implements Icu_GetInputState_Activity
- *
- **/
- Icu_InputStateType Icu_GetInputState(Icu_ChannelType Channel);
- #endif /* ICU_GET_INPUT_STATE_API */
- #if (STD_ON == ICU_TIMESTAMP_API)
- /**
- * @brief This function starts the capturing of timer values on the edges.
- * @details This function is reentrant and starts the capturing of timer values on the edges
- * activated by the service Icu_SetActivationCondition() to an external buffer.
- *
- * @param[in] Channel Logical number of the ICU channel
- * @param[in] BufferPtr Pointer to the buffer-array where the timestamp values shall be
- * placed.
- * @param[in] BufferSize Size of the external buffer (number of entries)
- * @param[in] NotifyInterval Notification interval (number of events).
- *
- * @return void
- *
- * @api
- *
- * @pre Icu_Init must be called before.
- */
- void Icu_StartTimestamp(Icu_ChannelType Channel, Icu_ValueType* BufferPtr, uint16 BufferSize, uint16 NotifyInterval);
- /**
- * @brief This function stops the timestamp measurement of the given channel.
- * @details This function is reentrant and stops the timestamp measurement of the given channel.
- *
- * @param[in] Channel Logical number of the ICU channel
- *
- * @return void
- *
- * @pre Icu_Init must be called before.
- **/
- void Icu_StopTimestamp(Icu_ChannelType Channel);
- /**
- * @brief This function reads the elapsed Signal Low, High or Period Time for the given channel.
- * @details This service is reentrant and reads the elapsed Signal Low Time for the given channel
- * that is configured in Measurement Mode Signal Measurement, Signal Low Time.
- * The elapsed time is measured between a falling edge and the consecutive rising edge of
- * the channel.
- * This service reads the elapsed Signal High Time for the given channel that is configured
- * in Measurement Mode Signal Measurement,Signal High Time.The elapsed time is measured
- * between a rising edge and the consecutive falling edge of the channel.
- * This service reads the elapsed Signal Period Time for the given channel that is
- * configured in Measurement Mode Signal Measurement, Signal Period Time.The elapsed time
- * is measured between consecutive rising (or falling) edges of the channel. The period
- * start edge is
- *
- * configurable.
- *
- * @param[in] Channel Logical number of the ICU channel
- *
- * @return Icu_ValueType - the elapsed Signal Low Time for the given channel that is configured in
- * Measurement Mode Signal Measurement, Signal Low Time
- * @pre Icu_Init must be called before. The channel must be configured in Measurement Mode Signal
- * Measurement.
- */
- Icu_IndexType Icu_GetTimestampIndex(Icu_ChannelType Channel);
- #endif /* ICU_TIMESTAMP_API */
- #if (ICU_EDGE_COUNT_API == STD_ON)
- /**
- * @brief This function resets the value of the counted edges to zero.
- * @details This function is reentrant and resets the value of the counted edges to zero.
- *
- * @param[in] Channel Logical number of the ICU channel.
- *
- * @return void
- *
- * @api
- *
- * @pre Icu_Init must be called before.
- *
- * @implements Icu_ResetEdgeCount_Activity
- *
- **/
- void Icu_ResetEdgeCount(Icu_ChannelType Channel);
- #endif /* ICU_EDGE_COUNT_API */
- #if (ICU_EDGE_COUNT_API == STD_ON)
- /**
- * @brief This function enables the counting of edges of the given channel.
- * @details This service is reentrant and shall enable the counting of edges of the given channel.
- * Note: This service doesnot do the real counting itself. This is done by the hardware
- * (capture unit). Only the configured edges shall be counted (rising edge, falling edge or
- * both edges).
- *
- * Configuration of the edge is done in Icu_Init or Icu_SetActivationCondition.The
- * configured edge can be changed during runtime using Icu_SetActivationCondition.
- * Interrupts are not required for edge counting.If interrupts are enabled, the interrupt
- * service routine
- * will set the overflow flag if more than 0xFFFFFF edges are measured.
- *
- * @param[in] Channel Logical number of the ICU channel
- *
- * @return void
- *
- * @api
- *
- * @pre Icu_Init must be called before. The given channel must be configured in Measurement Mode
- * Edge Counter.
- * @implements Icu_EnableEdgeCount_Activity
- *
- **/
- void Icu_EnableEdgeCount(Icu_ChannelType Channel);
- #endif /* ICU_EDGE_COUNT_API */
- #if (ICU_EDGE_COUNT_API == STD_ON)
- /**
- * @brief This function disables the counting of edges of the given channel.
- * @details This function is reentrant and disables the counting of edges of the given channel.
- *
- * @param[in] Channel Logical number of the ICU channel
- *
- * @return void
- *
- * @api
- *
- * @pre Icu_Init must be called before.The given channel must be configured in Measurement
- * Mode Edge Counter.
- *
- * @implements Icu_DisableEdgeCount_Activity
- *
- **/
- void Icu_DisableEdgeCount(Icu_ChannelType Channel);
- #endif /* ICU_EDGE_COUNT_API */
- #if (ICU_EDGE_COUNT_API == STD_ON)
- /**
- * @brief This function reads the number of counted edges.
- * @details This function is reentrant reads the number of counted edges after the last call
- * of Icu_ResetEdgeCount().
- *
- * @param[in] Channel Logical number of the ICU channel
- *
- * @return Icu_EdgeNumberType - Number of the counted edges.
- *
- * @api
- *
- * @pre Icu_Init must be called before. The given channel must be configured in Measurement
- * Mode Edge Counter.
- *
- * @implements Icu_GetEdgeNumbers_Activity
- **/
- Icu_EdgeNumberType Icu_GetEdgeNumbers(Icu_ChannelType Channel);
- #endif /* ICU_EDGE_COUNT_API */
- #if (ICU_EDGE_DETECT_API == STD_ON)
- /**
- * @brief This function enables or re-enables the detection of edges of the given channel.
- * @details This function is reentrant enables or re-enables the detection of edges of the given
- * channel.
- *
- * @param[in] Channel Logical number of the ICU channel
- *
- * @return void
- *
- * @api
- *
- * @pre Icu_Init must be called before. The channel must be configured in Measurement Mode Edge
- * Counter
- *
- * @implements Icu_EnableEdgeDetection_Activity
- **/
- void Icu_EnableEdgeDetection(Icu_ChannelType Channel);
- #endif /* ICU_EDGE_DETECT_API */
- #if (ICU_EDGE_DETECT_API == STD_ON)
- /**
- * @brief This function disables the detection of edges of the given channel.
- * @details This function is reentrant and disables the detection of edges of the given channel.
- *
- * @param[in] Channel Logical number of the ICU channel
- *
- * @return void
- *
- * @api
- *
- * @pre Icu_Init must be called before. The channel must be configured in Measurement Mode Edge
- * Detection.
- *
- * @implements Icu_DisableEdgeDetection_Activity
- *
- **/
- void Icu_DisableEdgeDetection(Icu_ChannelType Channel);
- #endif /* ICU_EDGE_DETECT_API */
- #if (ICU_GET_TIME_ELAPSED_API== STD_ON)
- /**
- * @brief This function reads the elapsed Signal Low, High or Period Time for the given channel.
- * @details This service is reentrant and reads the elapsed Signal Low Time for the given channel
- * that is configured in Measurement Mode Signal Measurement, Signal Low Time.
- * The elapsed time is measured between a falling edge and the consecutive rising edge of
- * the channel.
- * This service reads the elapsed Signal High Time for the given channel that is configured
- * in Measurement Mode Signal Measurement,Signal High Time.The elapsed time is measured
- * between a rising edge and the consecutive falling edge of the channel.
- * This service reads the elapsed Signal Period Time for the given channel that is
- * configured in Measurement Mode Signal Measurement, Signal Period Time.The elapsed time
- * is measured between consecutive rising (or falling) edges of the channel. The period
- * start edge is
- *
- * configurable.
- *
- * @param[in] Channel Logical number of the ICU channel
- *
- * @return Icu_ValueType - the elapsed Signal Low Time for the given channel that is configured in
- * Measurement Mode Signal Measurement, Signal Low Time
- *
- * @api
- *
- * @pre Icu_Init must be called before. The channel must be configured in Measurement Mode Signal
- * Measurement.
- *
- * @implements Icu_GetTimeElapsed_Activity
- *
- **/
- Icu_ValueType Icu_GetTimeElapsed(Icu_ChannelType Channel);
- #endif /* ICU_GET_TIME_ELAPSED_API */
- #if (ICU_GET_DUTY_CYCLE_VALUES_API == STD_ON)
- /**
- * @brief This function reads the coherent active time and period time for the given ICU Channel.
- * @details The function is reentrant and reads the coherent active time and period time for
- * the given ICU Channel, if it is configured in Measurement Mode Signal Measurement, Duty
- * Cycle Values.
- *
- * @param[in] Channel Logical number of the ICU channel
- * @param[out] DutyCycleValues Pointer to a buffer where the results (high time and period time)
- * shall be placed.
- *
- * @return void
- * @pre Icu_Init must be called before. The given channel must be configured in Measurement Mode
- * Signal Measurement, Duty Cycle Values.
- */
- void Icu_GetDutyCycleValues(Icu_ChannelType Channel, Icu_DutyCycleType* DutyCycleValues);
- #endif /* ICU_GET_DUTY_CYCLE_VALUES_API */
- #if (ICU_SIGNAL_MEASUREMENT_API == STD_ON)
- /**
- * @brief This function starts the measurement of signals.
- * @details This service is reentrant and starts the measurement of signals beginning with the
- * configured default start edge which occurs first after the call of this service.
- * This service shall only be available in Measurement Mode ICU_MODE_SIGNAL_MEASUREMENT.
- * This service shall reset the state for the given channel to ICU_IDLE.
- *
- * @param[in] Channel Logical number of the ICU channel
- *
- * @return void
- *
- * @api
- *
- * @pre Icu_Init must be called before. The channel must be configured in Measurement Mode Signal
- * Measurement.
- *
- * @implements Icu_StartSignalMeasurement_Activity
- *
- **/
- void Icu_StartSignalMeasurement(Icu_ChannelType Channel);
- /**
- * @brief This function stops the measurement of signals of the given channel.
- * @details This function is reentrant and stops the measurement of signals of the given channel.
- *
- * @param[in] Channel - Logical number of the ICU channel
- * @return void
- *
- * @pre Icu_Init must be called before. The channel must be configured in Measurement Mode
- * Signal Measurement.
- */
- void Icu_StopSignalMeasurement(Icu_ChannelType Channel);
- #endif /* ICU_SIGNAL_MEASUREMENT_API */
- #if (ICU_GET_VERSION_INFO_API == STD_ON)
- /**
- * @brief This service returns the version information of this module.
- * @details This service is Non reentrant and returns the version information of this module.
- * The version information includes:
- * - Module Id
- * - Vendor Id
- * - Vendor specific version numbers
- * If source code for caller and callee of this function is available this function should
- * be realized as a macro. The macro should be defined in the modules header file.
- *
- * @param[out] versioninfo Pointer to location to store version info
- *
- * @return void
- *
- * @api
- *
- * @implements Icu_GetVersionInfo_Activity
- **/
- void Icu_GetVersionInfo(Std_VersionInfoType* versioninfo);
- #endif /* ICU_GET_VERSION_INFO_API == STD_ON */
- #if (ICU_DUAL_CLOCK_MODE_API == STD_ON)
- /**
- * @brief This function sets all channels prescalers based on the input mode.
- *
- * @param selectPrescaler Select the used prescaler: prescaler/alternatePresclaer.
- * @return void
- * @pre Icu_Init must be called before.
- */
- void Icu_SetClockMode(Icu_SelectPrescalerType selectPrescaler);
- #endif /* ICU_DUAL_CLOCK_MODE_API == STD_ON */
- #if (ICU_GET_INPUT_LEVEL_API == STD_ON)
- /**
- * @brief This function returns the actual status of PIN.
- *
- * @details This function returns the actual status of PIN.
- *
- * @param[in] Channel Logical number of the ICU channel
- *
- * @return Icu_LevelType
- *
- * @pre Icu_Init must be called before.
- *
- * @implements Icu_GetInputLevel_Activity
- *
- **/
- Icu_LevelType Icu_GetInputLevel(Icu_ChannelType Channel);
- #endif
- #if ((ICU_CAPTURERGISTER_API == STD_ON) && ((ICU_SIGNAL_MEASUREMENT_API == STD_ON) || \
- (ICU_TIMESTAMP_API == STD_ON)))
- /**
- * @brief This function starts the measurement of signals.
- * @details. This service returns the value of Capture register.
- * This API is used to measure the time difference between 2 different timer channels.
- *
- * @param[in] Channel Logical number of the ICU channel
- *
- * @return Icu_ValueType Value of Capture register
- * @api
- * @pre Icu_Init must be called before.
- * @pre The given channel must be configured in SignalMeasurement or in Timestamp mode
- * @implements Icu_GetCaptureRegisterValue_Activity
- *
- **/
- Icu_ValueType Icu_GetCaptureRegisterValue(Icu_ChannelType Channel);
- #endif
- #if ((ICU_GET_PULSE_WIDTH_API == STD_ON) && (ICU_SIGNAL_MEASUREMENT_API == STD_ON))
- /**
- * @brief This function returns the signals High time, Low time and Period without using the
- * channel interrupt.
- * @details This function returns the signals High time, Low time and Period without using the
- * channel interrupt.
- * @param[in] Channel Logical number of the ICU channel
- * @pre Icu_Init must be called before.
- *
- **/
- void Icu_GetPulseWidth(Icu_ChannelType Channel);
- #endif
- #define ICU_STOP_SEC_CODE
- #include "Icu_MemMap.h"
- #ifdef __cplusplus
- }
- #endif
- /** @} */
- #endif /* ICU_H */
|