1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036 |
- /*==================================================================================================
- * Project : RTD AUTOSAR 4.4
- * Platform : CORTEXM
- * Peripheral : Ftm_Srtc_Lptmr_LPit
- * 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 GPT_H
- #define GPT_H
- /**
- * @file Gpt.h
- *
- * @addtogroup gpt Gpt 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 "StandardTypes.h"
- #include "Gpt_Ipw_Types.h"
- #include "Gpt_Cfg.h"
- #include "Gpt_EnvCfg.h"
- #include "Mcal.h"
- #if (GPT_WAKEUP_FUNCTIONALITY_API == STD_ON)
- #include "EcuM_Externals.h"
- #endif
- /*==================================================================================================
- * SOURCE FILE VERSION INFORMATION
- ==================================================================================================*/
- /**
- * @internal
- * @brief Defines used for file version checks
- */
- #define GPT_VENDOR_ID 43
- #define GPT_MODULE_ID 100
- #define GPT_AR_RELEASE_MAJOR_VERSION 4
- #define GPT_AR_RELEASE_MINOR_VERSION 4
- #define GPT_AR_RELEASE_REVISION_VERSION 0
- #define GPT_SW_MAJOR_VERSION 1
- #define GPT_SW_MINOR_VERSION 0
- #define GPT_SW_PATCH_VERSION 0
- /*==================================================================================================
- * FILE VERSION CHECKS
- ==================================================================================================*/
- /* Check if header file and Std_Types.h file are of the same Autosar version */
- #ifndef DISABLE_MCAL_INTERMODULE_ASR_CHECK
- #if ((GPT_AR_RELEASE_MAJOR_VERSION != STD_AR_RELEASE_MAJOR_VERSION) || \
- (GPT_AR_RELEASE_MINOR_VERSION != STD_AR_RELEASE_MINOR_VERSION))
- #error "AutoSar Version Numbers of Gpt.h and Std_Types.h are different"
- #endif
- /* Check if Gpt.h file and Mcal.h header file are of the same Autosar version */
- #if ((GPT_AR_RELEASE_MAJOR_VERSION != MCAL_AR_RELEASE_MAJOR_VERSION) || \
- (GPT_AR_RELEASE_MINOR_VERSION != MCAL_AR_RELEASE_MINOR_VERSION))
- #error "AutoSar Version Numbers of Gpt.h and Mcal.h are different"
- #endif
- #endif
- /* Check if header file and EcuM_Cbk.h file are of the same Autosar version */
- #ifndef DISABLE_MCAL_INTERMODULE_ASR_CHECK
- #if (GPT_WAKEUP_FUNCTIONALITY_API == STD_ON)
- #if ((GPT_AR_RELEASE_MAJOR_VERSION != ECUM_CBK_AR_RELEASE_MAJOR_VERSION) || \
- (GPT_AR_RELEASE_MINOR_VERSION != ECUM_CBK_AR_RELEASE_MINOR_VERSION) \
- )
- #error "AutoSar Version Numbers of Gpt.h and EcuM_Externals.h are different"
- #endif
- #endif
- #endif
- #if (GPT_VENDOR_ID != GPT_IPW_TYPES_VENDOR_ID)
- #error "Gpt.h and Gpt_Ipw_Types.h have different vendor ids"
- #endif
- /* Check if this header file and GPT IPW header file are of the same Autosar version */
- #if ((GPT_AR_RELEASE_MAJOR_VERSION != GPT_IPW_TYPES_AR_RELEASE_MAJOR_VERSION) || \
- (GPT_AR_RELEASE_MINOR_VERSION != GPT_IPW_TYPES_AR_RELEASE_MINOR_VERSION) || \
- (GPT_AR_RELEASE_REVISION_VERSION != GPT_IPW_TYPES_AR_RELEASE_REVISION_VERSION) \
- )
- #error "AutoSar Version Numbers of Gpt.h and Gpt_Ipw_Types.h are different"
- #endif
- /* Check if this header file and GPT IPW header file are of the same Software version */
- #if ((GPT_SW_MAJOR_VERSION != GPT_IPW_TYPES_SW_MAJOR_VERSION) || \
- (GPT_SW_MINOR_VERSION != GPT_IPW_TYPES_SW_MINOR_VERSION) || \
- (GPT_SW_PATCH_VERSION != GPT_IPW_TYPES_SW_PATCH_VERSION) \
- )
- #error "Software Version Numbers of Gpt.h and Gpt_Ipw_Types.h are different"
- #endif
- #if ( GPT_VENDOR_ID!= GPT_ENVCFG_VENDOR_ID)
- #error "Gpt.h and Gpt_EnvCfg.h have different vendor ids"
- #endif
- /* Check if the header files are of the same Autosar version */
- #if ((GPT_AR_RELEASE_MAJOR_VERSION != GPT_ENVCFG_AR_RELEASE_MAJOR_VERSION) || \
- (GPT_AR_RELEASE_MINOR_VERSION != GPT_ENVCFG_AR_RELEASE_MINOR_VERSION) || \
- (GPT_AR_RELEASE_REVISION_VERSION != GPT_ENVCFG_AR_RELEASE_REVISION_VERSION) \
- )
- #error "AutoSar Version Numbers of Gpt.h and Gpt_EnvCfg.h are different"
- #endif
- /* Check if the header files are of the same Software version */
- #if ((GPT_SW_MAJOR_VERSION != GPT_ENVCFG_SW_MAJOR_VERSION) || \
- (GPT_SW_MINOR_VERSION != GPT_ENVCFG_SW_MINOR_VERSION) || \
- (GPT_SW_PATCH_VERSION != GPT_ENVCFG_SW_PATCH_VERSION) \
- )
- #error "Software Version Numbers of Gpt.h and Gpt_EnvCfg.h are different"
- #endif
- #if ( GPT_VENDOR_ID!= GPT_VENDOR_ID_CFG)
- #error "Gpt.h and Gpt_Cfg.h have different vendor ids"
- #endif
- /* Check if the header files are of the same Autosar version */
- #if ((GPT_AR_RELEASE_MAJOR_VERSION != GPT_AR_RELEASE_MAJOR_VERSION_CFG) || \
- (GPT_AR_RELEASE_MINOR_VERSION != GPT_AR_RELEASE_MINOR_VERSION_CFG) || \
- (GPT_AR_RELEASE_REVISION_VERSION != GPT_AR_RELEASE_REVISION_VERSION_CFG) \
- )
- #error "AutoSar Version Numbers of Gpt.h and Gpt_Cfg.h are different"
- #endif
- /* Check if the header files are of the same Software version */
- #if ((GPT_SW_MAJOR_VERSION != GPT_SW_MAJOR_VERSION_CFG) || \
- (GPT_SW_MINOR_VERSION != GPT_SW_MINOR_VERSION_CFG) || \
- (GPT_SW_PATCH_VERSION != GPT_SW_PATCH_VERSION_CFG) \
- )
- #error "Software Version Numbers of Gpt.h and Gpt_Cfg.h are different"
- #endif
- /*==================================================================================================
- * CONSTANT-LIKE DEFINES
- ==================================================================================================*/
- /*==================================================================================================
- * FUNCTION-LIKE DEFINES(MACROS)
- ==================================================================================================*/
- /*==================================================================================================*/
- /**
- * @brief Function Gpt_StartTimer is called when the driver is in sleep mode for a channel which is not wakeup enabled.
- * @details Errors and exceptions that will be detected by the GPT driver.
- *
- * @implements Gpt_Det_ErrorCodes_define
- */
- #if(GPT_VALIDATE_STATE == STD_ON)
- #if(((GPT_WAKEUP_FUNCTIONALITY_API == STD_ON) && (GPT_REPORT_WAKEUP_SOURCE == STD_ON)) || (GPT_CHANGE_NEXT_TIMEOUT_VALUE == STD_ON))
- #define GPT_E_INVALID_CALL ((uint8)0xA0U)
- #endif
- #endif
- /**
- * @brief Function called without module initialization.
- * @details Errors and exceptions that will be detected by the GPT driver.
- *
- * @implements Gpt_Det_ErrorCodes_define
- */
- #if((GPT_VALIDATE_CHANNEL_CALL == STD_ON) || (GPT_VALIDATE_GLOBAL_CALL == STD_ON))
- #define GPT_E_UNINIT ((uint8)0x0AU)
- #endif
- /**
- * @brief Initialization called when already initialized.
- * @details Errors and exceptions that will be detected by the GPT driver.
- *
- * @implements Gpt_Det_ErrorCodes_define
- */
- #if(GPT_VALIDATE_GLOBAL_CALL == STD_ON)
- #define GPT_E_ALREADY_INITIALIZED ((uint8)0x0DU)
- #endif
- /**
- * @brief Function called for invalid channel.
- * @details Errors and exceptions that will be detected by the GPT driver.
- *
- * @implements Gpt_Det_ErrorCodes_define
- */
- #define GPT_E_PARAM_CHANNEL ((uint8)0x14U)
- /**
- * @brief Function called with parameter value out of range
- * @details Errors and exceptions that will be detected by the GPT driver
- *
- * @implements Gpt_Det_ErrorCodes_define
- */
- #if (GPT_VALIDATE_PARAM == STD_ON)
- #define GPT_E_PARAM_VALUE ((uint8)0x15U)
- #endif
- #if(((GPT_PREDEFTIMER_FUNCTIONALITY_API == STD_ON) && (GPT_VALIDATE_PARAM == STD_ON)) ||\
- ((GPT_VERSION_INFO_API == STD_ON) && (GPT_DEV_ERROR_DETECT == STD_ON)))
- /**
- * @brief Function called with NULL pointer
- * @details Errors and exceptions that will be detected by the GPT driver
- *
- * @implements Gpt_Det_ErrorCodes_define
- */
- #define GPT_E_PARAM_POINTER ((uint8)0x16U)
- #endif
- #if((GPT_PREDEFTIMER_FUNCTIONALITY_API == STD_ON) && (GPT_VALIDATE_PARAM == STD_ON))
- /**
- * @brief Function called with invalid the parameter in function Gpt_GetPredefTimerValue
- * @details Errors and exceptions that will be detected by the GPT driver
- *
- * @implements Gpt_Det_ErrorCodes_define
- */
- #define GPT_E_PARAM_PREDEF_TIMER ((uint8)0x17)
- #endif /* (GPT_PREDEFTIMER_FUNCTIONALITY_API == STD_ON) && (GPT_VALIDATE_PARAM == STD_ON) */
- /**
- * @brief Function called when timer channel is still running.
- * @details Errors and exceptions that will be detected by the GPT driver.
- *
- * @implements Gpt_Det_ErrorCodes_define
- */
- #define GPT_E_BUSY ((uint8)0x0BU)
- #if(GPT_PREDEFTIMER_FUNCTIONALITY_API == STD_ON)
- /**
- * @brief Function called with invalid the parameter in function Gpt_GetPredefTimerValue
- * @details Errors and exceptions that will be detected by the GPT driver
- *
- * @implements Gpt_Det_ErrorCodes_define
- */
- #define GPT_E_MODE ((uint8)0x0C)
- #endif /* (GPT_PREDEFTIMER_FUNCTIONALITY_API == STD_ON) */
- /**
- * @brief Function called when a timeout is occurred.
- * @details Errors and exceptions that will be detected by the GPT driver.
- *
- * @implements Gpt_Det_ErrorCodes_define
- */
- #define GPT_E_TIMEOUT ((uint8)0x2BU)
- /**
- * @brief Function called with invalid the parameter in function Gpt_Init
- * @details Errors and exceptions that will be detected by the GPT driver
- *
- * @implements Gpt_Det_ErrorCodes_define
- */
- #if((GPT_VALIDATE_PARAM == STD_ON) && (GPT_DEV_ERROR_DETECT == STD_ON))
- #define GPT_E_INIT_FAILED ((uint8)0x0E)
- #endif
- /**
- * @brief API Gpt_SetClockMode service called with wrong parameter.
- * @details Parameters used when raising an error/exception
- * @implements
- */
- #if((GPT_SET_CLOCK_MODE == STD_ON) && (GPT_VALIDATE_PARAM == STD_ON))
- #define GPT_E_PARAM_CLOCK_MODE ((uint8)0x17U)
- #endif
- /**
- * @brief Function called with invalid mode param.
- * @details Errors and exceptions that will be detected by the GPT driver
- *
- * @implements Gpt_Det_ErrorCodes_define
- */
- #if ((GPT_VALIDATE_PARAM == STD_ON) &&(GPT_WAKEUP_FUNCTIONALITY_API == STD_ON) && (GPT_REPORT_WAKEUP_SOURCE == STD_ON))
- #define GPT_E_PARAM_MODE ((uint8)0x1FU)
- #endif
- /**
- * @brief function called for invalid channel on the current core
- * @details Errors and exceptions that will be detected by the GPT driver
- *
- * @implements Gpt_Det_ErrorCodes_define
- */
- #define GPT_E_PARAM_CONFIG ((uint8)0x18U)
- /** API SERVICE IDs */
- /**
- * @brief API service ID for Gpt_GetVersionInfo function
- * @details Parameters used when raising an error/exception
- */
- #if ((GPT_VERSION_INFO_API == STD_ON) && (GPT_DEV_ERROR_DETECT == STD_ON))
- #define GPT_GETVERSIONINFO_ID ((uint8)0x00U)
- #endif
- /**
- * @brief API service ID for Gpt_Init function
- * @details Parameters used when raising an error/exception
- */
- #if ((GPT_VALIDATE_GLOBAL_CALL == STD_ON) || ((GPT_VALIDATE_PARAM == STD_ON) && (GPT_DEV_ERROR_DETECT == STD_ON)))
- #define GPT_INIT_ID ((uint8)0x01U)
- #endif
- /**
- * @brief API service ID for Gpt_DeInit function
- * @details Parameters used when raising an error/exception
- */
- #if (GPT_DEINIT_API == STD_ON)
- #define GPT_DEINIT_ID ((uint8)0x02U)
- #endif
- /**
- * @brief API service ID for Gpt_GetTimeElapsed function
- * @details Parameters used when raising an error/exception
- */
- #if ((GPT_TIME_ELAPSED_API == STD_ON) && (GPT_VALIDATE_CHANNEL_CALL == STD_ON))
- #define GPT_TIMEELAPSED_ID ((uint8)0x03U)
- #endif
- /**
- * @brief API service ID for Gpt_GetTimeRemaining function
- * @details Parameters used when raising an error/exception
- */
- #if ((GPT_TIME_REMAINING_API == STD_ON) && (GPT_VALIDATE_CHANNEL_CALL == STD_ON))
- #define GPT_TIMEREMAINING_ID ((uint8)0x04U)
- #endif
- /**
- * @brief API service ID for Gpt_StartTimer function
- * @details Parameters used when raising an error/exception
- */
- #define GPT_STARTTIMER_ID ((uint8)0x05U)
- /**
- * @brief API service ID for Gpt_StopTimer function
- * @details Parameters used when raising an error/exception
- */
- #if(GPT_VALIDATE_CHANNEL_CALL == STD_ON)
- #define GPT_STOPTIMER_ID ((uint8)0x06U)
- #endif
- #if((GPT_ENABLE_DISABLE_NOTIFICATION_API == STD_ON) && ((GPT_VALIDATE_CHANNEL_CALL == STD_ON) || (GPT_VALIDATE_PARAM == STD_ON)))
- /**
- * @brief API service ID for Gpt_EnableNotification function
- * @details Parameters used when raising an error/exception
- */
- #define GPT_ENABLENOTIFICATION_ID ((uint8)0x07U)
- /**
- * @brief API service ID for Gpt_DisableNotification function
- * @details Parameters used when raising an error/exception
- */
- #define GPT_DISABLENOTIFICATION_ID ((uint8)0x08U)
- #endif
- /**
- * @brief API service ID for Gpt_SetMode function
- * @details Parameters used when raising an error/exception
- */
- #if(((GPT_WAKEUP_FUNCTIONALITY_API == STD_ON) && (GPT_VALIDATE_GLOBAL_CALL == STD_ON)) ||\
- ((GPT_VALIDATE_PARAM == STD_ON) &&(GPT_WAKEUP_FUNCTIONALITY_API == STD_ON) && (GPT_REPORT_WAKEUP_SOURCE == STD_ON)))
- #define GPT_SETMODE_ID ((uint8)0x09U)
- #endif
- #if ((GPT_WAKEUP_FUNCTIONALITY_API == STD_ON) && (GPT_REPORT_WAKEUP_SOURCE == STD_ON))
- #if((GPT_VALIDATE_CHANNEL_CALL == STD_ON) || (GPT_VALIDATE_PARAM == STD_ON))
- /**
- * @brief API service ID for Gpt_DisableWakeup function
- * @details Parameters used when raising an error/exception
- */
- #define GPT_DISABLEWAKEUP_ID ((uint8)0x0AU)
- /**
- * @brief API service ID for Gpt_EnableWakeup function
- * @details Parameters used when raising an error/exception
- */
- #define GPT_ENABLEWAKEUP_ID ((uint8)0x0BU)
- #endif
- /**
- * @brief API service ID for Gpt_CheckWakeup function
- * @details Parameters used when raising an error/exception
- */
- #if (GPT_VALIDATE_GLOBAL_CALL == STD_ON)
- #define GPT_CHECKWAKEUP_ID ((uint8)0x0CU)
- #endif
- #endif /* ((GPT_WAKEUP_FUNCTIONALITY_API == STD_ON) && (GPT_REPORT_WAKEUP_SOURCE == STD_ON)) */
- /**
- * @brief API service ID for Gpt_ProcessCommonInterrupt generic ISR handler
- * @details Parameters used when raising an error/exception
- */
- #define GPT_PROCESSCOMMONINTERRUPT_ID ((uint8)0x11U)
- /**
- * @brief API service ID for Gpt_ChangeNextTimeoutValue function
- * @details Parameters used when raising an error/exception
- */
- #if (GPT_CHANGE_NEXT_TIMEOUT_VALUE == STD_ON)
- #define GPT_CHANGE_NEXT_TIMEOUT_VALUE_ID ((uint8)0x0FU)
- #endif
- /**
- * @brief API service ID for Gpt_SetClockMode function
- * @details Parameters used when raising an error/exception
- */
- #if((GPT_VALIDATE_GLOBAL_CALL == STD_ON) && (GPT_SET_CLOCK_MODE == STD_ON))
- #define GPT_SET_CLOCK_MODE_ID ((uint8)0x10U)
- #endif
- /**
- * @brief API service ID for Gpt_GetPredefTimerValue function
- * @details Parameters used when raising an error/exception
- */
- #if(GPT_PREDEFTIMER_FUNCTIONALITY_API == STD_ON)
- #define GPT_GET_PREDEF_TIMERVALUE_ID ((uint8)0x0DU)
- #endif
- /**
- * @brief API service ID for Gpt_Channel_EnableChainMode function
- * @details Parameters used when raising an error/exception
- */
- #if(GPT_CHAIN_MODE == STD_ON)
- #define GPT_ENABLE_CHAIN_MODE_ID ((uint8)0x21U)
- #define GPT_DISABLE_CHAIN_MODE_ID ((uint8)0x22U)
- #endif
- /**
- * @brief Instance ID of this GPT driver.
- *
- */
- #define GPT_INSTANCE_ID ((uint8)0U)
- /*==================================================================================================
- * ENUMS
- ==================================================================================================*/
- /**
- * @brief This enumerated type allows the selection of different power modes.
- * @details Modes of the GPT driver.
- *
- * @implements Gpt_ModeType_enumeration
- */
- typedef enum
- {
- GPT_MODE_NORMAL = 0U, /**< @brief GPT Normal operation mode of the GPT */
- GPT_MODE_SLEEP = 1U /**< @brief GPT Sleep mode */
- } Gpt_ModeType;
- /**
- * @brief Gpt channel mode type. Indicates of whether the channel mode is "CONTINUOUS" or "ONE SHOT".
- * @details ChannelModeType of channel.
- */
- typedef enum
- {
- GPT_CH_MODE_CONTINUOUS = 0U, /**< @brief GPT channel mode - continuous mode */
- GPT_CH_MODE_ONESHOT = 1U /**< @brief GPT channel mode - one-shot mode. */
- } Gpt_ChannelModeType;
- /**
- * @brief Prescaler type. Indicates of whether the clock channel mode is "GPT_NORMAL" or "GPT_ALTERNATE".
- * @details This enumeration specifies the possible types of prescalers used to configure base-clock timers
- */
- #if (GPT_SET_CLOCK_MODE == STD_ON)
- typedef enum
- {
- GPT_CLOCKMODE_NORMAL = 0x0U, /**< @brief Selected value is the NORMAL configured prescaler */
- GPT_CLOCKMODE_ALTERNATE = 0x1U /**< @brief Selected value is the ALTERNATE configured prescaler */
- } Gpt_ClockModeType;
- #endif /* GPT_SET_CLOCK_MODE */
- /*==================================================================================================
- * STRUCTURES AND OTHER TYPEDEFS
- ==================================================================================================*/
- /**
- * @internal
- * @brief Gpt channel ID data type
- * @details Gpt channel type
- * @implements Gpt_ChannelType_typedef
- */
- typedef uint8 Gpt_ChannelType;
- /**
- * @internal
- * @brief Used for reading and setting the timer value in number of ticks.
- * @details Gpt timeout value type
- * @implements Gpt_ValueType_typedef
- */
- typedef uint32 Gpt_ValueType;
- /**
- * @internal
- * @brief The callback notifications shall be configurable as pointers to
- * user defined functions within the configuration structure.
- * @details Gpt channel notification type.
- *
- */
- typedef void (*Gpt_NotificationType)(void);
- /**
- * @internal
- * @brief Gpt channel configuration type.
- * @details Configuration structure
- *
- */
- typedef struct
- {
- /** @brief GPT ch WakeUp enable */
- boolean Gpt_bEnableWakeup;
- /** @brief Pointer to external callback */
- Gpt_NotificationType Gpt_pfNotification;
- #if ((GPT_WAKEUP_FUNCTIONALITY_API == STD_ON) && (GPT_REPORT_WAKEUP_SOURCE == STD_ON))
- /** @brief EcuM wake up source Id */
- EcuM_WakeupSourceType Gpt_uWakeupSource;
- #endif
- /** @brief Channel max tick value */
- Gpt_ValueType Gpt_uChannelTickValueMax;
- /** @brief GPT channel mode */
- Gpt_ChannelModeType Gpt_eChannelMode;
- /** @brief Hardware dependent channel configuration */
- Gpt_Ipw_HwChannelConfigType *Gpt_Ipw_HwChannelConfig;
- } Gpt_ChannelConfigType;
- /**
- * @internal
- * @brief Gpt configuration type.
- * @details This is the type of the data structure including the configuration
- * set required for initializing the GPT driver.
- *
- * @implements Gpt_ConfigType_structure
- */
- typedef struct
- {
- /** @brief Number of GPT channels (configured in tresos plugin builder) */
- Gpt_ChannelType channelCount;
- /** @brief Pointer to the GPT channel configuration */
- const Gpt_ChannelConfigType (*Gpt_pChannelConfig)[];
- /** @brief Number of GPT instances (configured in tresos plugin builder) */
- uint8 instanceCount;
- /** @brief Pointer to the GPT instance configuration */
- Gpt_Ipw_HwInstanceConfigType (*Gpt_Ipw_HwInstanceConfig)[];
- #if(GPT_PREDEFTIMER_FUNCTIONALITY_API == STD_ON)
- /** @brief Pointer to the GPT channel predef timer configuration */
- const Gpt_HwPredefChannelConfigType * const (*Gpt_pChannelPredefConfigType);
- #endif
- /** @brief channel index in each partition map table*/
- const uint8 (*u8GptChannelIdToIndexMap)[];
- } Gpt_ConfigType;
- /*==================================================================================================
- * GLOBAL VARIABLE DECLARATIONS
- ==================================================================================================*/
- #if (GPT_PRECOMPILE_SUPPORT == STD_OFF)
- /**
- * @internal
- * @brief MemMap section
- */
- #define GPT_START_SEC_CONFIG_DATA_UNSPECIFIED
- #include "Gpt_MemMap.h"
- #ifndef DISABLE_MCAL_INTERMODULE_ASR_CHECK
- /* Check if header file and MemMap.h file are of the same Autosar version */
- #if ((GPT_AR_RELEASE_MAJOR_VERSION != GPT_MEMMAP_AR_RELEASE_MAJOR_VERSION) || \
- (GPT_AR_RELEASE_MINOR_VERSION != GPT_MEMMAP_AR_RELEASE_MINOR_VERSION))
- #error "AutoSar Version Numbers of Gpt.h and Gpt_MemMap.h are different"
- #endif
- #endif
- GPT_CONFIG_EXT
- /**
- * @internal
- * @brief MemMap section
- */
- #define GPT_STOP_SEC_CONFIG_DATA_UNSPECIFIED
- #include "Gpt_MemMap.h"
- #else
- /**
- * @internal
- * @brief MemMap section
- */
- #define GPT_START_SEC_CONFIG_DATA_UNSPECIFIED
- #include "Gpt_MemMap.h"
- #ifndef DISABLE_MCAL_INTERMODULE_ASR_CHECK
- /* Check if header file and MemMap.h file are of the same Autosar version */
- #if ((GPT_AR_RELEASE_MAJOR_VERSION != GPT_MEMMAP_AR_RELEASE_MAJOR_VERSION) || \
- (GPT_AR_RELEASE_MINOR_VERSION != GPT_MEMMAP_AR_RELEASE_MINOR_VERSION))
- #error "AutoSar Version Numbers of Gpt.h and Gpt_MemMap.h are different"
- #endif
- #endif
- /* Extern declarations of GPT Pre compile configuration from Gpt_PBCfg.c */
- #if (GPT_PRECOMPILE_SUPPORT == STD_ON)
- #if(GPT_MULTICORE_ENABLED == STD_ON)
- extern const Gpt_ConfigType* const Gpt_Config[GPT_MAX_PARTITIONS];
- #else
- extern const Gpt_ConfigType Gpt_Config;
- #endif
- #endif
- /**
- * @internal
- * @brief MemMap section
- */
- #define GPT_STOP_SEC_CONFIG_DATA_UNSPECIFIED
- #include "Gpt_MemMap.h"
- #endif
- /*==================================================================================================
- * FUNCTION PROTOTYPES
- ==================================================================================================*/
- /**
- * @internal
- * @brief MemMap section
- */
- #define GPT_START_SEC_CODE
- #include "Gpt_MemMap.h"
- /*================================================================================================*/
- #if (GPT_VERSION_INFO_API == STD_ON)
- /**
- * @brief This function returns the version information of this module.
- * @details This service 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
- *
- * @pre Gpt_Init must be called before.
- * @implements Gpt_GetVersionInfo_Activity
- */
- void Gpt_GetVersionInfo(Std_VersionInfoType * VersionInfoPtr);
- #endif
- /*================================================================================================*/
- /**
- * @brief GPT driver initialization function.
- * @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.
- * All time units used within the API services of the GPT driver shall be of the unit ticks.
- * This function shall only initialize the configured resources. Resources that are
- * not configured in the configuration file shall not be touched.
- * The following rules regarding initialization of controller registers shall apply
- * to the GPT Driver implementation:
- * [1] If the hardware allows for only one usage of the register, the driver
- * module implementing that functionality is responsible for initializing the register
- * [2] If the register can affect several hardware modules and if it is an IO register it
- * shall be initialized by the PORT driver
- * [3] If the register can affect several hardware modules and if it is not an IO register
- * it shall be initialized by the MCU driver
- * [4] One-time writable registers that require initialization directly after reset shall be
- * initialized by the startup code
- * [5] All other registers shall be initialized by the startup code
- *
- * @param[in] configPtr Pointer to a selected configuration structure
- *
- * @return void
- * @api
- *
- * @pre The data structure including the configuration set required for initializing the GPT driver..
- * @implements Gpt_Init_Activity
- */
- void Gpt_Init (const Gpt_ConfigType * configPtr);
- /*================================================================================================*/
- #if (GPT_DEINIT_API == STD_ON)
- /**
- * @brief GPT driver de-initialization function.
- * @details Service for de initializing all hardware timer channels to their power on reset state.
- * The state of the peripheral after DeInit shall be the same as after power on reset.
- * The service influences only the peripherals, which are allocated by static
- * configuration and the runtime configuration set passed by the previous call of Gpt_Init()
- * The driver needs to be initialized before calling Gpt_DeInit(). Otherwise, the
- * function Gpt_DeInit shall raise the development error GPT_E_UNINIT and leave the desired
- * de initialization functionality without any action.
- *
- * @api
- * @return void
- *
- * @pre The driver needs to be initialized.
- * @implements Gpt_DeInit_Activity
- */
- void Gpt_DeInit(void);
- #endif
- /*================================================================================================*/
- #if (GPT_TIME_ELAPSED_API == STD_ON)
- /**
- * @brief GPT driver function for fetching the elapsed timer value.
- * @details Service for querying the time already elapsed.
- * In one shot mode, this is the value relative to the point in time, the channel has been
- * started with Gpt_StartTimer (calculated by the normal operation function by subtracting
- * the current minus the initial timer value and returning the absolute value).
- * In continuous mode, the function returns the timer value relative to the last timeout or
- * the start of the channel.
- * All time units used within the API services of the GPT driver shall be of the unit ticks.
- * Usage of re-entrant capability is only allowed if the callers take care that
- * there is no simultaneous usage of the same channel.
- * To get times out of register values it is necessary to know the oscillator frequency, pre
- * prescalers and so on. Since these settings are made in MCU and(or) in other modules it is
- * not possible to calculate such times. Hence the conversions between time and ticks shall
- * be part of an upper layer.
- * The driver needs to be initialized before calling Gpt_GetTimeElapsed(). Otherwise, the
- * function shall raise the development error GPT_E_UNINIT and return 0.
- *
- * @param[in] channel - channel id
- *
- * @return Gpt_ValueType - Elapsed Time in number of ticks
- *
- * @api
- *
- * @pre The driver needs to be initialized.
- * @implements Gpt_GetTimeElapsed_Activity
- */
- Gpt_ValueType Gpt_GetTimeElapsed(Gpt_ChannelType channel);
- #endif
- /*================================================================================================*/
- #if (GPT_TIME_REMAINING_API == STD_ON)
- /**
- * @brief GPT driver function for fetching the remaining timer value.
- * @details This function returns the timer value remaining until the next timeout period will
- * expire (calculated by the normal operation function by subtracting the timeout minus
- * the current timer value and returning the absolute value)
- * All time units used within the API services of the GPT driver shall be of the unit ticks.
- * Usage of re-entrant capability is only allowed if the callers take care that there is no
- * simultaneous usage of the same channel.
- * To get times out of register values it is necessary to know the oscillator frequency,
- * pre-scalers and so on. Since these settings are made in MCU and(or) in other modules it is
- * not possible to calculate such times. Hence the conversions between time and ticks shall
- * be part of an upper layer.
- * The driver needs to be initialized before calling Gpt_GetTimeRemaining(). Otherwise, the
- * function shall raise the development error GPT_E_UNINIT and return 0.
- *
- *
- * @param[in] channel - channel id
- *
- * @return Gpt_ValueType - Returns the time remaining until the target time is reached in number of ticks.
- *
- * @api
- *
- * @pre The driver needs to be initialized.
- * @implements Gpt_GetTimeRemaining_Activity
- */
- Gpt_ValueType Gpt_GetTimeRemaining(Gpt_ChannelType channel);
- #endif
- /*================================================================================================*/
- /**
- * @brief GPT driver function for starting a timer channel.
- * @details The function Gpt_StartTimer shall start the selected timer channel with a defined
- * time-out period.
- * The function Gpt_StartTimer shall invoke the configured notification for that channel
- * (see also GPT292) after the time-out period referenced via the parameter value (if
- * enabled).
- * All time units used within the API services of the GPT driver shall be of the unit ticks.
- * In production mode no error is generated. The rational is that it adds no
- * additional functionality to the driver. In this case the timer will be restarted with the
- * time-out value, given as a parameter to the service.
- * Usage of re-entrant capability is only allowed if the callers take care that
- * there is no simultaneous usage of the same channel.
- * To get times out of register values it is necessary to know the oscillator
- * frequency, pre-scalers and so on. Since these settings are made in MCU and(or) in other
- * modules it is not possible to calculate such times. Hence the conversions between time
- * and ticks shall be part of an upper layer.
- * The driver needs to be initialized before calling Gpt_StartTimer(). Otherwise, the
- * function Gpt_StartTimer shall raise the development error GPT_E_UNINIT.
- *
- * @param[in] channel channel id
- * @param[in] value time-out period (in number of ticks) after a notification or a wakeup event shall occur.
- *
- * @return void
- * @api
- * @pre The driver needs to be initialized.
- * @implements Gpt_StartTimer_Activity
- */
- void Gpt_StartTimer(Gpt_ChannelType channel,Gpt_ValueType value);
- /*================================================================================================*/
- /**
- * @brief GPT driver function for stopping a timer channel.
- * @details Service for stopping the selected timer channel
- * Stopping a timer channel, not been started before will not return a development error
- * Timer channels configured in one shot mode are stopped automatically, when the
- * time-out period has expired.
- * Usage of re-entrant capability is only allowed if the callers take care that
- * there is no simultaneous usage of the same channel.
- * The driver needs to be initialized before calling Gpt_StopTimer(). Otherwise,
- * the function shall raise the development error GPT_E_UNINIT.
- *
- * @param[in] channel channel id
- * @return void
- *
- * @api
- * @pre The driver needs to be initialized. Gpt_StartTimer must be called before.
- * @implements Gpt_StopTimer_Activity
- */
- void Gpt_StopTimer(Gpt_ChannelType channel);
- /*================================================================================================*/
- #if (GPT_ENABLE_DISABLE_NOTIFICATION_API == STD_ON)
- /**
- * @brief GPT driver function for enabling the notification for a timer channel.
- * @details Service for enabling the notification for a channel during runtime.
- * This function can be called, while the timer is already running.
- * Usage of re-entrant capability is only allowed if the callers take care that
- * there is no simultaneous usage of the same channel.
- * The driver needs to be initialized before calling Gpt_EnableNotification(). Otherwise,
- * the function Gpt_EnableNotification shall raise the development error GPT_E_UNINIT.
- *
- * @param[in] channel channel id
- * @return void
- * @api
- *
- * @pre The driver needs to be initialized.
- * @implements Gpt_EnableNotification_Activity
- */
- void Gpt_EnableNotification(Gpt_ChannelType channel);
- /*================================================================================================*/
- /**
- * @brief GPT driver function for disabling the notification for a timer channel.
- * @details Service for disabling the notification for a channel during runtime.
- * This function can be called, while the timer is already running
- * When disabled, no notification will be sent. When re-enabled again, the user
- * will not be notified of events, occurred while notifications have been disabled.
- * Usage of re-entrant capability is only allowed if the callers take care that
- * there is no simultaneous usage of the same channel.
- * The driver needs to be initialized before calling Gpt_DisableNotification().
- * Otherwise, the function shall raise the development error GPT_E_UNINIT.
- *
- * @param[in] channel channel id
- * @return void
- * @api
- *
- * @pre The driver needs to be initialized.
- * @implements Gpt_DisableNotification_Activity
- */
- void Gpt_DisableNotification(Gpt_ChannelType channel);
- #endif
- #if (GPT_WAKEUP_FUNCTIONALITY_API == STD_ON)
- /*================================================================================================*/
- /**
- * @brief GPT driver function for setting the operation mode.
- * @details Service for GPT mode selection. This service shall set the operation mode to the given
- * mode parameter .
- * When sleep mode is requested, the ECU State Manager calls Gpt_SetMode with mode
- * parameter "GPT_MODE_SLEEP" and prepares the GPT for sleep mode. The MCU Driver is then
- * putting the controller into SLEEP mode
- * The driver needs to be initialized before calling Gpt_SetMode(). Otherwise, the
- * function Gpt_SetMode shall raise the development error GPT_E_UNINIT.
- *
- * @param[in] eMode operation mode :
- * - GPT_MODE_NORMAL: Normal operation mode of the GPT driver.
- * - GPT_MODE_SLEEP: Sleep mode of the GPT driver (wakeup capable)
- * @return void
- * @api
- *
- * @pre The driver needs to be initialized.
- * @implements Gpt_SetMode_Activity
- */
- void Gpt_SetMode(Gpt_ModeType eMode);
- /*================================================================================================*/
- /**
- * @brief GPT driver function for disabling the wakeup interrupt invocation for a timer channel.
- * @details This service shall disable the wakeup interrupt invocation of a single GPT
- * channel.
- * Usage of re-entrant capability is only allowed if the callers take care that
- * there is no simultaneous usage of the same channel.
- * The driver needs to be initialized before calling Gpt_DisableWakeup(). Otherwise, the
- * function Gpt_DisableWakeup shall raise the development error GPT_E_UNINIT.
- *
- * @param[in] channel channel id
- * @return void
- * @api
- *
- * @pre The driver needs to be initialized.
- * @implements Gpt_DisableWakeup_Activity
- */
- void Gpt_DisableWakeup(Gpt_ChannelType channel);
- /*================================================================================================*/
- /**
- * @brief GPT driver function for enabling the wakeup interrupt invocation for a timer channel.
- * @details This service shall re-enable the wakeup interrupt invocation of a single GPT
- * channel.
- * If supported by hardware and enabled, an internal hardware timer can serve as a
- * wakeup source
- * Usage of re-entrant capability is only allowed if the callers take care that
- * there is no simultaneous usage of the same channel.
- *
- * @param[in] channel channel id
- * @return void
- * @api
- *
- * @pre The driver needs to be initialized. The channel must be configured as wakeup capable.
- * @implements Gpt_EnableWakeup_Activity
- */
- void Gpt_EnableWakeup(Gpt_ChannelType channel);
- /*================================================================================================*/
- /**
- * @brief GPT driver function for checking if a wakeup capable GPT channel is the source for a
- * wakeup event.
- * @details Checks if a wakeup capable GPT channel is the source for a wakeup event and calls the ECU
- * state manager service EcuM_SetWakeupEvent in case of a valid GPT channel wakeup event.
- * The driver needs to be initialized before calling Gpt_CheckWakeup(). Otherwise, the
- * function Gpt_CheckWakeup shall raise the development error GPT_E_UNINIT.
- *
- * @param[in] wakeupSource wakeup source
- * @return void
- * @api
- *
- * @pre The driver needs to be initialized. The channel must be configured as wakeup capable.
- * @implements Gpt_CheckWakeup_Activity
- */
- void Gpt_CheckWakeup(EcuM_WakeupSourceType wakeupSource);
- #endif
- /*================================================================================================*/
- #if (GPT_CHANGE_NEXT_TIMEOUT_VALUE == STD_ON)
- /**
- * @brief The function changes the time out period value of the requested running channel.
- * @details The function changes the time out period (in number of ticks) of the channel is
- * running which will be used after the first compare matching.
- * This is a non-autosar function.
- * @param[in] channel channel id
- * @param[in] value time out period (in number of ticks) after a notification shall occur
- * @return void
- * @pre Gpt_Init and Gpt_StartTimer must be called before.
- * @implements
- */
- void Gpt_ChangeNextTimeoutValue
- (
- Gpt_ChannelType channel,
- Gpt_ValueType value
- );
- #endif
- /*================================================================================================*/
- #if (GPT_SET_CLOCK_MODE == STD_ON)
- /**
- * @brief This function changes the channel pre scaler.
- * @details This function sets all channels pre scalers based on the input mode.
- *
- * @param[in] eClkMode pre scaler setting ( NORMAL or ALTERNATE )
- * @return void
- * @pre Gpt_Init must be called before.
- *
- *
- *
- * @implements Gpt_SetClockMode_Activity
- */
- void Gpt_SetClockMode(Gpt_ClockModeType eClkMode);
- #endif
- /*================================================================================================*/
- #if (GPT_CHAIN_MODE == STD_ON)
- /**
- * @brief The function enables the chain functionality for timer.
- * @details The function enables the chain functionality for timer. Timer will be chained with timer n-1.
- Channel 0 cannot be chained.
- * This is a non-autosar function.
- * @param[in] channel channel id
- * @return void
- * @pre Gpt_Init must be called before.
- *
- * @implements Gpt_Channel_EnableChainMode_Activity
- */
- void Gpt_Channel_EnableChainMode(Gpt_ChannelType channel);
- /*================================================================================================*/
- /**
- * @brief The function disables the chain functionality for timer.
- * @details The function disables the chain functionality for timer. Timer will not be chained with timer n-1.
- Channel 0 cannot be chained or unchained.
- * This is a non-autosar function.
- * @param[in] channel channel id
- * @return void
- * @pre Gpt_Init must be called before.
- *
- * @implements Gpt_Channel_DisableChainMode_Activity
- */
- void Gpt_Channel_DisableChainMode(Gpt_ChannelType channel);
- #endif
- /*================================================================================================*/
- #if(GPT_PREDEFTIMER_FUNCTIONALITY_API == STD_ON)
- /**
- * @brief Provides the current value of the given predefined free-running timer
- * @details This function provides the current value of the given predefined free-running timer.
- *
- * @param[in] PredefTimer: Gpt_PredefTimerType ( GPT_PREDEF_TIMER_1US_16BIT,
- * GPT_PREDEF_TIMER_1US_24BIT,
- * GPT_PREDEF_TIMER_1US_32BIT
- * GPT_PREDEF_TIMER_100US_32BIT)
- * @param[out] TimeValuePtr: Pointer to time value destination data in RAM
- * @pre Gpt_Init must be called before.
- * @return returnValue - E_OK: no error has been detected.
- * - E_NOT_OK: aborted due to errors.
- *
- *
- * @implements Gpt_GetPredefTimerValue_Activity
- */
- Std_ReturnType Gpt_GetPredefTimerValue
- (
- Gpt_PredefTimerType PredefTimer,
- uint32 * TimeValuePtr
- );
- #endif
- /**
- * @internal
- * @brief MemMap section
- */
- #define GPT_STOP_SEC_CODE
- #include "Gpt_MemMap.h"
- #ifdef __cplusplus
- }
- #endif
- /** @} */
- #endif /* GPT_H */
|