For MCAL
ti-processor-sdk-rtos-j721e-evm-07_03_00_07,
In the Icu module the Icu.c file at line no. 560 ,
has the function Icu_GetTimeStampIndex name as Icu_GetTimeStampIndex
but as per AS431 (refer attched screenshot)
the name should be Icu_GetTimestampIndex
Due to this mismatch there is an issue during compilation.
Refer the EB_update file after the update the compilation is fine.
/* * * Copyright (c) 2021 Texas Instruments Incorporated * * All rights reserved not granted herein. * * Limited License. * * Texas Instruments Incorporated grants a world-wide, royalty-free, non-exclusive * license under copyrights and patents it now or hereafter owns or controls to make, * have made, use, import, offer to sell and sell ("Utilize") this software subject to the * terms herein. With respect to the foregoing patent license, such license is granted * solely to the extent that any such patent is necessary to Utilize the software alone. * The patent license shall not apply to any combinations which include this software, * other than combinations with devices manufactured by or for TI ("TI Devices"). * No hardware patent is licensed hereunder. * * Redistributions must preserve existing copyright notices and reproduce this license * (including the above copyright notice and the disclaimer and (if applicable) source * code license limitations below) in the documentation and/or other materials provided * with the distribution * * Redistribution and use in binary form, without modification, are permitted provided * that the following conditions are met: * * * No reverse engineering, decompilation, or disassembly of this software is * permitted with respect to any software provided in binary form. * * * any redistribution and use are licensed by TI for use only with TI Devices. * * * Nothing shall obligate TI to provide you with source code for the software * licensed and provided to you in object code. * * If software source code is provided to you, modification and redistribution of the * source code are permitted provided that the following conditions are met: * * * any redistribution and use of the source code, including any resulting derivative * works, are licensed by TI for use only with TI Devices. * * * any redistribution and use of any object code compiled from the source code * and any resulting derivative works, are licensed by TI for use only with TI Devices. * * Neither the name of Texas Instruments Incorporated nor the names of its suppliers * * may be used to endorse or promote products derived from this software without * specific prior written permission. * * DISCLAIMER. * * THIS SOFTWARE IS PROVIDED BY TI AND TI'S LICENSORS "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL TI AND TI'S LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. * */ /** * \file Icu.c * * \brief This file contains ICU MCAL driver * */ /* ========================================================================== */ /* Include Files */ /* ========================================================================== */ #include "string.h" #include "Icu.h" #include "SchM_Icu.h" #if (STD_ON == ICU_DEV_ERROR_DETECT) #include "Det.h" #endif #include "Icu_Irq.h" #include "Icu_Priv.h" /* There are static inline functions in hw_types.h file. Map them as well */ #define ICU_START_SEC_CODE #include "Icu_MemMap.h" #define ICU_STOP_SEC_CODE #include "Icu_MemMap.h" /* ========================================================================== */ /* Macros & Typedefs */ /* ========================================================================== */ /* AUTOSAR version information check has to match definition in header file */ #if ((ICU_AR_RELEASE_MAJOR_VERSION != (4U)) || \ (ICU_AR_RELEASE_MINOR_VERSION != (3U)) || \ (ICU_AR_RELEASE_REVISION_VERSION != (1U))) #error "Icu: AUTOSAR Version Numbers of Icu are different!!" #endif /* AUTOSAR version information check has to match definition in header file */ #if ((ICU_SW_MAJOR_VERSION != (1U)) || \ (ICU_SW_MINOR_VERSION != (3U)) || \ (ICU_SW_PATCH_VERSION != (2U))) #error "Icu: Software Version Numbers are inconsistent!!" #endif /* ========================================================================== */ /* Structures and Enums */ /* ========================================================================== */ /* ========================================================================== */ /* Internal Function Declarations */ /* ========================================================================== */ /* ========================================================================== */ /* Global Variables */ /* ========================================================================== */ #define ICU_START_SEC_VAR_INIT_32 #include "Icu_MemMap.h" /** \brief Icu driver init status */ ICU_VAR_DATA_INIT_8_SECTION volatile VAR(uint8, ICU_VAR_INIT) Icu_DrvStatus = ICU_STATUS_UNINIT; #define ICU_STOP_SEC_VAR_INIT_32 #include "Icu_MemMap.h" #define ICU_START_SEC_VAR_NO_INIT_UNSPECIFIED #include "Icu_MemMap.h" /** \brief ICU driver object. */ ICU_VAR_DATA_NO_INIT_UNSPECIFIED_SECTION VAR(Icu_ChObjType, ICU_VAR_NO_INIT) Icu_ChObj[ICU_MAX_NUM_CHANNELS]; /* Icu_ChObj is not static storage class, as this requires to be accessed by debug interface provided. */ #define ICU_STOP_SEC_VAR_NO_INIT_UNSPECIFIED #include "Icu_MemMap.h" /* ========================================================================== */ /* Function Definitions */ /* ========================================================================== */ #define ICU_START_SEC_CODE #include "Icu_MemMap.h" /* Design : DES_ICU_006 */ /* Requirements : MCAL-4610, MCAL-4611, MCAL-4612, MCAL-4613, MCAL-4614, MCAL-4616, MCAL-4617, MCAL-4618, MCAL-4619, MCAL-4620 */ ICU_FUNC_TEXT_SECTION FUNC(void, ICU_CODE) Icu_Init( P2CONST(Icu_ConfigType, AUTOMATIC, ICU_PBCFG) ConfigPtr) { uint32 chIdx, chNum; uint32 maxCh; const Icu_ConfigType *IcuConfigPtr = ConfigPtr; #if (STD_ON == ICU_PRE_COMPILE_VARIANT) IcuConfigPtr = &ICU_INIT_CONFIG_PC; #endif #if (STD_ON == ICU_DEV_ERROR_DETECT) if (NULL == IcuConfigPtr) { (void)Icu_reportDetError(ICU_INIT_ID, ICU_E_PARAM_POINTER); } else if (ICU_STATUS_INIT == Icu_DrvStatus) { (void)Icu_reportDetError(ICU_INIT_ID, ICU_E_ALREADY_INITIALIZED); } else #endif /* (STD_ON == ICU_DEV_ERROR_DETECT) */ { maxCh = (uint32) IcuConfigPtr->icuMaxChannel; for (chNum = 0U; chNum < maxCh; chNum++) { #if (STD_ON == ICU_DEV_ERROR_DETECT) if(((&IcuConfigSet_PC)->chCfg[chNum].channelId) >= (uint32)ICU_MAX_NUM_CHANNELS) { /*Invalid channel */ (void)Icu_reportDetError(ICU_INIT_ID, ICU_E_PARAM_CHANNEL); } else #endif /* (STD_ON == ICU_DEV_ERROR_DETECT) */ { for (chIdx = 0; chIdx < ICU_MAX_NUM_CHANNELS; chIdx++) { if(chIdx == ((&IcuConfigSet_PC)->chCfg[chNum].channelId)) { /* Reset Channel object */ Icu_ResetChObj(&Icu_ChObj[chIdx]); /* Copy the configuration */ Icu_CopyConfig(&Icu_ChObj[chIdx], &IcuConfigPtr->chCfg[chNum],&IcuConfigSet_PC.chCfg[chNum]); /* HW Channel Init */ Icu_HwUnitInit(&Icu_ChObj[chIdx]); #if (STD_ON == ICU_TIMESTAMP_API) Icu_ChObj[chIdx].IsActive = FALSE; #endif break; } } } } #if (STD_ON == ICU_DEV_ERROR_DETECT) Icu_DrvStatus = ICU_STATUS_INIT; #endif } return; } #if (STD_ON == ICU_DE_INIT_API) /* Design : DES_ICU_007 */ /* Requirements : MCAL-4621, MCAL-4622, MCAL-4623, MCAL-4624, MCAL-4625, MCAL-4626, MCAL-4627, MCAL-4628, MCAL-4629, MCAL-4630 */ ICU_FUNC_TEXT_SECTION FUNC(void, ICU_CODE) Icu_DeInit(void) { uint32 chIdx; #if (STD_ON == ICU_DEV_ERROR_DETECT) if (ICU_STATUS_UNINIT == Icu_DrvStatus) { (void)Icu_reportDetError(ICU_DEINIT_ID, ICU_E_UNINIT); } else #endif /* (STD_ON == ICU_DEV_ERROR_DETECT) */ { Icu_DrvStatus = ICU_STATUS_UNINIT; for (chIdx = 0; chIdx < ICU_MAX_NUM_CHANNELS; chIdx++) { /*Check if any channel is running. If yes, cannot call Deinit*/ if(FALSE == Icu_ChObj[chIdx].IsRunning) { /*Disable and Clear Interrupts*/ ECAPIntDisable(Icu_ChObj[chIdx].baseAddr, ECAP_INT_ALL); ECAPIntStatusClear(Icu_ChObj[chIdx].baseAddr, ECAP_INT_ALL); /* Disable CAP1-CAP4 register loads */ ECAPCaptureLoadingDisable(Icu_ChObj[chIdx].baseAddr); Icu_ResetChObj(&Icu_ChObj[chIdx]); } } } return; } #endif /*ICU_DE_INIT_API*/ /* Design : DES_ICU_009 */ /* Requirements : MCAL-4665, MCAL-4666, MCAL-4667, MCAL-4668 */ ICU_FUNC_TEXT_SECTION FUNC(void, ICU_CODE) Icu_DisableNotification( Icu_ChannelType Channel) { #if (STD_ON == ICU_DEV_ERROR_DETECT) if (ICU_STATUS_UNINIT == Icu_DrvStatus) { (void)Icu_reportDetError(ICU_DISABLENOTIFICATION_ID, ICU_E_UNINIT); } else if (ICU_MAX_NUM_CHANNELS <= Channel) { (void)Icu_reportDetError(ICU_DISABLENOTIFICATION_ID, ICU_E_PARAM_CHANNEL); } else #endif /* (STD_ON == ICU_DEV_ERROR_DETECT) */ { Icu_ChObj[Channel].NotificationEnabled = FALSE; /* Disable the notification on the given channel */ } } /* Design : DES_ICU_010 */ /* Requirements : MCAL-4669, MCAL-4670, MCAL-4671, MCAL-4672 */ ICU_FUNC_TEXT_SECTION FUNC(void, ICU_CODE) Icu_EnableNotification( Icu_ChannelType Channel) { #if (STD_ON == ICU_DEV_ERROR_DETECT) if (ICU_STATUS_UNINIT == Icu_DrvStatus) { (void)Icu_reportDetError(ICU_ENABLENOTIFICATION_ID, ICU_E_UNINIT); } else if (ICU_MAX_NUM_CHANNELS <= Channel) { (void)Icu_reportDetError(ICU_ENABLENOTIFICATION_ID, ICU_E_PARAM_CHANNEL); } else #endif /* (STD_ON == ICU_DEV_ERROR_DETECT) */ { Icu_ChObj[Channel].NotificationEnabled = TRUE; /* Enables the notification on the given channel */ } return; } /* Design : DES_ICU_008 */ /* Requirements : MCAL-4659, MCAL-4660, MCAL-4661, MCAL-4662, MCAL-4663, MCAL-4664 */ ICU_FUNC_TEXT_SECTION FUNC(void, ICU_CODE) Icu_SetActivationCondition( Icu_ChannelType Channel, Icu_ActivationType Activation ) { #if (STD_ON == ICU_DEV_ERROR_DETECT) if (ICU_STATUS_UNINIT == Icu_DrvStatus) { (void)Icu_reportDetError(ICU_SETACTIVATIONCONDITION_ID, ICU_E_UNINIT); } else if (ICU_MAX_NUM_CHANNELS <= Channel) { (void)Icu_reportDetError(ICU_SETACTIVATIONCONDITION_ID, ICU_E_PARAM_CHANNEL); } else if (ICU_MODE_SIGNAL_MEASUREMENT == Icu_ChObj[Channel].chCfg.measurementMode) { (void)Icu_reportDetError(ICU_SETACTIVATIONCONDITION_ID, ICU_E_PARAM_CHANNEL); } else if ((Activation != ICU_RISING_EDGE) && (Activation != ICU_FALLING_EDGE) && (Activation != ICU_BOTH_EDGES)) { (void)Icu_reportDetError(ICU_SETACTIVATIONCONDITION_ID, ICU_E_PARAM_ACTIVATION); } else #endif /* (STD_ON == ICU_DEV_ERROR_DETECT) */ { Icu_ChObj[Channel].activation_edge = Activation; #if ((ICU_EDGE_DETECT_API == STD_ON) || (ICU_SIGNAL_MEASUREMENT_API == STD_ON)) Icu_ChObj[Channel].InputState = ICU_IDLE; #endif } return; } #if (STD_ON == ICU_GET_INPUT_STATE_API) /* Design : DES_ICU_011 */ /* Requirements : MCAL-4673, MCAL-4674, MCAL-4675, MCAL-4676, MCAL-4677, MCAL-4678, MCAL-4679, MCAL-4680, MCAL-4681, MCAL-4682, MCAL-4683 */ ICU_FUNC_TEXT_SECTION FUNC(Icu_InputStateType, ICU_CODE) Icu_GetInputState( Icu_ChannelType Channel) { Icu_InputStateType retState = ICU_IDLE; #if (STD_ON == ICU_DEV_ERROR_DETECT) if (ICU_STATUS_UNINIT == Icu_DrvStatus) { (void)Icu_reportDetError(ICU_GETINPUTSTATE_ID, ICU_E_UNINIT); } else if (ICU_MAX_NUM_CHANNELS <= Channel) { (void)Icu_reportDetError(ICU_GETINPUTSTATE_ID, ICU_E_PARAM_CHANNEL); } else if ((ICU_MODE_SIGNAL_EDGE_DETECT != Icu_ChObj[Channel].chCfg.measurementMode) && (ICU_MODE_SIGNAL_MEASUREMENT != Icu_ChObj[Channel].chCfg.measurementMode)) { (void)Icu_reportDetError(ICU_GETINPUTSTATE_ID, ICU_E_PARAM_CHANNEL); } else #endif /* (STD_ON == ICU_DEV_ERROR_DETECT) */ { /* Return the current input status for the channel */ Icu_InputStateType CurrentState = Icu_ChObj[Channel].InputState; if (CurrentState == ICU_ACTIVE) { Icu_ChObj[Channel].InputState = ICU_IDLE; } if (Icu_ChObj[Channel].chCfg.measurementMode == ICU_MODE_SIGNAL_MEASUREMENT) { /*Check if measurement is completed before returning ICU_ACTIVE*/ if (Icu_ChObj[Channel].IsRunning) { Icu_ChObj[Channel].InputState = CurrentState; retState = ICU_IDLE; } else { retState = CurrentState; } } else { retState = CurrentState; } } return retState; } #endif /* ICU_GET_INPUT_STATE_API*/ #if (STD_ON == ICU_EDGE_DETECT_API) /* Design : DES_ICU_017 */ /* Requirements : MCAL-4731, MCAL-4732, MCAL-4733, MCAL-4734, MCAL-4735, MCAL-4736, MCAL-4737, MCAL-4738 */ ICU_FUNC_TEXT_SECTION FUNC(void, ICU_CODE) Icu_EnableEdgeDetection( Icu_ChannelType Channel) { uint32 baseAddr; #if (STD_ON == ICU_DEV_ERROR_DETECT) if (ICU_STATUS_UNINIT == Icu_DrvStatus) { (void)Icu_reportDetError(ICU_ENABLEEDGEDETECTION_ID, ICU_E_UNINIT); } else if (ICU_MAX_NUM_CHANNELS <= Channel) { (void)Icu_reportDetError(ICU_ENABLEEDGEDETECTION_ID, ICU_E_PARAM_CHANNEL); } else if (ICU_MODE_SIGNAL_EDGE_DETECT != Icu_ChObj[Channel].chCfg.measurementMode) { (void)Icu_reportDetError(ICU_ENABLEEDGEDETECTION_ID, ICU_E_PARAM_CHANNEL); } else #endif /* (STD_ON == ICU_DEV_ERROR_DETECT) */ { baseAddr = Icu_ChObj[Channel].baseAddr; Icu_ConfigEcap(baseAddr, Icu_ChObj[Channel].activation_edge, ICU_DELTA_MODE, TRUE); Icu_ChObj[Channel].IsRunning = TRUE; } } /* Design : DES_ICU_018 */ /* Requirements : MCAL-4739, MCAL-4740, MCAL-4741, MCAL-4742, MCAL-4743, MCAL-4744 */ ICU_FUNC_TEXT_SECTION FUNC(void, ICU_CODE) Icu_DisableEdgeDetection( Icu_ChannelType Channel) { uint32 baseAddr; #if (STD_ON == ICU_DEV_ERROR_DETECT) if (ICU_STATUS_UNINIT == Icu_DrvStatus) { (void)Icu_reportDetError(ICU_DISABLEEDGEDETECTION_ID, ICU_E_UNINIT); } else if (ICU_MAX_NUM_CHANNELS <= Channel) { (void)Icu_reportDetError(ICU_DISABLEEDGEDETECTION_ID, ICU_E_PARAM_CHANNEL); } else if (ICU_MODE_SIGNAL_EDGE_DETECT != Icu_ChObj[Channel].chCfg.measurementMode) { (void)Icu_reportDetError(ICU_DISABLEEDGEDETECTION_ID, ICU_E_PARAM_CHANNEL); } else #endif /* (STD_ON == ICU_DEV_ERROR_DETECT) */ { baseAddr = Icu_ChObj[Channel].baseAddr; /*Disable Interrupts*/ ECAPIntDisable(baseAddr, ECAP_INT_ALL); ECAPIntStatusClear(baseAddr, ECAP_INT_ALL); /* Disable CAP1-CAP4 register loads */ ECAPCaptureLoadingDisable(baseAddr); Icu_ChObj[Channel].IsRunning = FALSE; } } #endif /*ICU_EDGE_DETECT_API*/ #if (STD_ON == ICU_TIMESTAMP_API) /* Design : DES_ICU_012 */ /* Requirements : MCAL-4684, MCAL-4685, MCAL-4686, MCAL-4687, MCAL-4688, MCAL-4689, MCAL-4690, MCAL-4691, MCAL-4692, MCAL-4693, MCAL-4694, MCAL-4695, MCAL-4696, MCAL-4697, MCAL-4198, MCAL-4199 */ ICU_FUNC_TEXT_SECTION FUNC(void, ICU_CODE) Icu_StartTimestamp( Icu_ChannelType Channel, Icu_ValueType* BufferPtr, uint16 BufferSize, uint16 NotifyInterval) { uint32 baseAddr; #if (STD_ON == ICU_DEV_ERROR_DETECT) if (ICU_STATUS_UNINIT == Icu_DrvStatus) { (void)Icu_reportDetError(ICU_STARTTIMESTAMP_ID, ICU_E_UNINIT); } else if (ICU_MAX_NUM_CHANNELS <= Channel) { (void)Icu_reportDetError(ICU_STARTTIMESTAMP_ID, ICU_E_PARAM_CHANNEL); } else if (ICU_MODE_TIMESTAMP != Icu_ChObj[Channel].chCfg.measurementMode) { (void)Icu_reportDetError(ICU_STARTTIMESTAMP_ID, ICU_E_PARAM_CHANNEL); } else if (NULL_PTR == BufferPtr) { (void)Icu_reportDetError(ICU_STARTTIMESTAMP_ID, ICU_E_PARAM_POINTER); } else if (0U == BufferSize) { (void)Icu_reportDetError(ICU_STARTTIMESTAMP_ID, ICU_E_PARAM_BUFFER_SIZE); } else #endif /* (STD_ON == ICU_DEV_ERROR_DETECT) */ { baseAddr = Icu_ChObj[Channel].baseAddr; Icu_TimeStamp_Init(Channel, BufferPtr, BufferSize, NotifyInterval); Icu_ConfigEcap(baseAddr, Icu_ChObj[Channel].activation_edge, ICU_ABSOLUTE_MODE, TRUE); Icu_ChObj[Channel].IsRunning = TRUE; Icu_ChObj[Channel].IsActive = TRUE; } return; } /* Design : DES_ICU_013 */ /* Requirements : MCAL-4700, MCAL-4701, MCAL-4702, MCAL-4703, MCAL-4704, MCAL-4705, MCAL-4706, MCAL-4707 */ ICU_FUNC_TEXT_SECTION FUNC(void, ICU_CODE) Icu_StopTimestamp( Icu_ChannelType Channel) { uint32 baseAddr; #if (STD_ON == ICU_DEV_ERROR_DETECT) if (ICU_STATUS_UNINIT == Icu_DrvStatus) { (void)Icu_reportDetError(ICU_STOPTIMESTAMP_ID, ICU_E_UNINIT); } else if (ICU_MAX_NUM_CHANNELS <= Channel) { (void)Icu_reportDetError(ICU_STOPTIMESTAMP_ID, ICU_E_PARAM_CHANNEL); } else if (ICU_MODE_TIMESTAMP != Icu_ChObj[Channel].chCfg.measurementMode) { (void)Icu_reportDetError(ICU_STOPTIMESTAMP_ID, ICU_E_PARAM_CHANNEL); } else #endif /* (STD_ON == ICU_DEV_ERROR_DETECT) */ { if (FALSE == Icu_ChObj[Channel].IsActive && FALSE == Icu_ChObj[Channel].IsRunning) { (void)Icu_reportDetRuntimeError(ICU_STOPTIMESTAMP_ID, ICU_E_NOT_STARTED); } else { baseAddr = Icu_ChObj[Channel].baseAddr; ECAPIntDisable(baseAddr, ECAP_INT_ALL); ECAPIntStatusClear(baseAddr, ECAP_INT_ALL); /* Disable CAP1-CAP4 register loads */ ECAPCaptureLoadingDisable(baseAddr); Icu_TimeStamp_Clear(Channel); Icu_ChObj[Channel].IsRunning = FALSE; Icu_ChObj[Channel].IsActive = FALSE; } } return; } /* Design : DES_ICU_014 */ /* Requirements : MCAL-4708, MCAL-4709, MCAL-4710, MCAL-4710, MCAL-4711, MCAL-4712, MCAL-4713, MCAL-47104, MCAL-4715, MCAL-4716 */ /* Integration_legal_note_comment ASCTI-316 update MemMap handling */ ICU_FUNC_TEXT_SECTIONFUNC(Icu_IndexType, ICU_CODE) Icu_GetTimestampIndex( Icu_ChannelType Channel) { Icu_IndexType index = 0; #if (STD_ON == ICU_DEV_ERROR_DETECT) if (ICU_STATUS_UNINIT == Icu_DrvStatus) { (void)Icu_reportDetError(ICU_STOPTIMESTAMP_ID, ICU_E_UNINIT); } else if (ICU_MAX_NUM_CHANNELS <= Channel) { (void)Icu_reportDetError(ICU_STOPTIMESTAMP_ID, ICU_E_PARAM_CHANNEL); } else if (ICU_MODE_TIMESTAMP != Icu_ChObj[Channel].chCfg.measurementMode) { (void)Icu_reportDetError(ICU_STOPTIMESTAMP_ID, ICU_E_PARAM_CHANNEL); } else #endif { if ((Icu_ChObj[Channel].IsActive)) { index = Icu_ChObj[Channel].NextTimeStampIndex; } else { /*return 0*/ } } return index; } #endif /* ICU_TIMESTAMP_API*/ #if (STD_ON == ICU_EDGE_COUNT_API) /* Design : DES_ICU_015 */ /* Requirements : MCAL-4717, MCAL-4719, MCAL-4720, MCAL-4718, MCAL-4721, MCAL-4722 */ ICU_FUNC_TEXT_SECTION FUNC(void, ICU_CODE) Icu_ResetEdgeCount( Icu_ChannelType Channel) { #if (STD_ON == ICU_DEV_ERROR_DETECT) if (ICU_STATUS_UNINIT == Icu_DrvStatus) { (void)Icu_reportDetError(ICU_RESETEDGECOUNT_ID, ICU_E_UNINIT); } else if (ICU_MAX_NUM_CHANNELS <= Channel) { (void)Icu_reportDetError(ICU_RESETEDGECOUNT_ID, ICU_E_PARAM_CHANNEL); } else if (ICU_MODE_EDGE_COUNTER != Icu_ChObj[Channel].chCfg.measurementMode) { (void)Icu_reportDetError(ICU_RESETEDGECOUNT_ID, ICU_E_PARAM_CHANNEL); } else #endif /* (STD_ON == ICU_DEV_ERROR_DETECT) */ { Icu_ChObj[Channel].EdgeCounter = 0; } } /* Design : DES_ICU_016 */ /* Requirements : MCAL-4723, MCAL-4724, MCAL-4725, MCAL-4726, MCAL-4727, MCAL-4728, MCAL-4729, MCAL-4730 */ ICU_FUNC_TEXT_SECTION FUNC(void, ICU_CODE) Icu_EnableEdgeCount( Icu_ChannelType Channel) { uint32 baseAddr; #if (STD_ON == ICU_DEV_ERROR_DETECT) if (ICU_STATUS_UNINIT == Icu_DrvStatus) { (void)Icu_reportDetError(ICU_ENABLEEDGECOUNT_ID, ICU_E_UNINIT); } else if (ICU_MAX_NUM_CHANNELS <= Channel) { (void)Icu_reportDetError(ICU_ENABLEEDGECOUNT_ID, ICU_E_PARAM_CHANNEL); } else if (ICU_MODE_EDGE_COUNTER != Icu_ChObj[Channel].chCfg.measurementMode) { (void)Icu_reportDetError(ICU_ENABLEEDGECOUNT_ID, ICU_E_PARAM_CHANNEL); } else #endif /* (STD_ON == ICU_DEV_ERROR_DETECT) */ { baseAddr = Icu_ChObj[Channel].baseAddr; Icu_ConfigEcap(baseAddr, Icu_ChObj[Channel].activation_edge, ICU_DELTA_MODE, TRUE); Icu_ChObj[Channel].IsRunning = TRUE; } } /* Design : DES_ICU_019 */ /* Requirements : MCAL-4745, MCAL-4746, MCAL-4747, MCAL-4748, MCAL-4749, MCAL-4750 */ ICU_FUNC_TEXT_SECTION FUNC(void, ICU_CODE) Icu_DisableEdgeCount( Icu_ChannelType Channel) { uint32 baseAddr; #if (STD_ON == ICU_DEV_ERROR_DETECT) if (ICU_STATUS_UNINIT == Icu_DrvStatus) { (void)Icu_reportDetError(ICU_DISABLEEDGECOUNT_ID, ICU_E_UNINIT); } else if (ICU_MAX_NUM_CHANNELS <= Channel) { (void)Icu_reportDetError(ICU_DISABLEEDGECOUNT_ID, ICU_E_PARAM_CHANNEL); } else if (ICU_MODE_EDGE_COUNTER != Icu_ChObj[Channel].chCfg.measurementMode) { (void)Icu_reportDetError(ICU_DISABLEEDGECOUNT_ID, ICU_E_PARAM_CHANNEL); } else #endif /* (STD_ON == ICU_DEV_ERROR_DETECT) */ { baseAddr = Icu_ChObj[Channel].baseAddr; ECAPIntDisable(baseAddr, ECAP_INT_ALL); ECAPIntStatusClear(baseAddr, ECAP_INT_ALL); /* Disable CAP1-CAP4 register loads */ ECAPCaptureLoadingDisable(baseAddr); Icu_ChObj[Channel].IsRunning = FALSE; } } /* Design : DES_ICU_020 */ /* Requirements : MCAL-4751, MCAL-4752, MCAL-4753, MCAL-4754, MCAL-4755, MCAL-4756, MCAL-4757 */ ICU_FUNC_TEXT_SECTION FUNC(Icu_EdgeNumberType, ICU_CODE) Icu_GetEdgeNumbers( Icu_ChannelType Channel) { Icu_EdgeNumberType edgecount = 0; #if (STD_ON == ICU_DEV_ERROR_DETECT) if (ICU_STATUS_UNINIT == Icu_DrvStatus) { (void)Icu_reportDetError(ICU_GETEDGENUMBERS_ID, ICU_E_UNINIT); } else if (ICU_MAX_NUM_CHANNELS <= Channel) { (void)Icu_reportDetError(ICU_GETEDGENUMBERS_ID, ICU_E_PARAM_CHANNEL); } else if (ICU_MODE_EDGE_COUNTER != Icu_ChObj[Channel].chCfg.measurementMode) { (void)Icu_reportDetError(ICU_GETEDGENUMBERS_ID, ICU_E_PARAM_CHANNEL); } else #endif /* (STD_ON == ICU_DEV_ERROR_DETECT) */ { edgecount= Icu_ChObj[Channel].EdgeCounter; } return edgecount; } #endif /*ICU_EDGE_COUNT_API*/ #if (STD_ON == ICU_SIGNAL_MEASUREMENT_API) /* Design : DES_ICU_021 */ /* Requirements : MCAL-4758, MCAL-4759, MCAL-4760, MCAL-4761, MCAL-4762, MCAL-4763, MCAL-4764, MCAL-4765 */ ICU_FUNC_TEXT_SECTION FUNC(void, ICU_CODE) Icu_StartSignalMeasurement( Icu_ChannelType Channel) { uint32 baseAddr; #if (STD_ON == ICU_DEV_ERROR_DETECT) if (ICU_STATUS_UNINIT == Icu_DrvStatus) { (void)Icu_reportDetError(ICU_STARTSIGNALMEASUREMENT_ID, ICU_E_UNINIT); } else if (ICU_MAX_NUM_CHANNELS <= Channel) { (void)Icu_reportDetError(ICU_STARTSIGNALMEASUREMENT_ID, ICU_E_PARAM_CHANNEL); } else if (ICU_MODE_SIGNAL_MEASUREMENT != Icu_ChObj[Channel].chCfg.measurementMode) { (void)Icu_reportDetError(ICU_STARTSIGNALMEASUREMENT_ID, ICU_E_PARAM_CHANNEL); } else #endif /* (STD_ON == ICU_DEV_ERROR_DETECT) */ { baseAddr = Icu_ChObj[Channel].baseAddr; Icu_ChObj[Channel].InputState = ICU_IDLE; Icu_SignalMeasurement_Init(Channel); Icu_ConfigEcap(baseAddr, ICU_BOTH_EDGES, ICU_DELTA_MODE, FALSE); Icu_ChObj[Channel].IsRunning = TRUE; } return; } /* Design : DES_ICU_022 */ /* Requirements : MCAL-4766, MCAL-4767, MCAL-4768, MCAL-4769, MCAL-4770, MCAL-4771, MCAL-4772 */ ICU_FUNC_TEXT_SECTION FUNC(void, ICU_CODE) Icu_StopSignalMeasurement( Icu_ChannelType Channel) { uint32 baseAddr; Icu_ValueType highTime, lowTime, period; #if (STD_ON == ICU_DEV_ERROR_DETECT) if (ICU_STATUS_UNINIT == Icu_DrvStatus) { (void)Icu_reportDetError(ICU_STOPSIGNALMEASUREMENT_ID, ICU_E_UNINIT); } else if (ICU_MAX_NUM_CHANNELS <= Channel) { (void)Icu_reportDetError(ICU_STOPSIGNALMEASUREMENT_ID, ICU_E_PARAM_CHANNEL); } else if (ICU_MODE_SIGNAL_MEASUREMENT != Icu_ChObj[Channel].chCfg.measurementMode) { (void)Icu_reportDetError(ICU_STOPSIGNALMEASUREMENT_ID, ICU_E_PARAM_CHANNEL); } else #endif /* (STD_ON == ICU_DEV_ERROR_DETECT) */ { baseAddr = Icu_ChObj[Channel].baseAddr; ECAPIntDisable(baseAddr, ECAP_INT_ALL); ECAPIntStatusClear(baseAddr, ECAP_INT_ALL); /* Disable CAP1-CAP4 register loads */ ECAPCaptureLoadingDisable(baseAddr); Icu_ChObj[Channel].cap1 = ECAPTimeStampRead(baseAddr, ECAP_CAPTURE_EVENT_1); Icu_ChObj[Channel].cap2 = ECAPTimeStampRead(baseAddr, ECAP_CAPTURE_EVENT_2); Icu_ChObj[Channel].cap3 = ECAPTimeStampRead(baseAddr, ECAP_CAPTURE_EVENT_3); Icu_ChObj[Channel].cap4 = ECAPTimeStampRead(baseAddr, ECAP_CAPTURE_EVENT_4); if ((Icu_ChObj[Channel].cap1 == 0U) || (Icu_ChObj[Channel].cap2 == 0U) || (Icu_ChObj[Channel].cap3 == 0U) || (Icu_ChObj[Channel].cap4 == 0U)) { Icu_ChObj[Channel].DutyAcquired = FALSE; Icu_ChObj[Channel].PeriodAcquired = FALSE; } else { uint32 clkFreq_Mhz = Icu_ChObj[Channel].chCfg.instanceClkMHz; highTime = Icu_ChObj[Channel].cap2 / clkFreq_Mhz; lowTime = Icu_ChObj[Channel].cap3 / clkFreq_Mhz; period = highTime + lowTime; Icu_ChObj[Channel].HighTime = highTime; Icu_ChObj[Channel].LowTime = lowTime; Icu_ChObj[Channel].Period = period; Icu_ChObj[Channel].DutyCycle.PeriodTime = period; Icu_ChObj[Channel].DutyCycle.ActiveTime = highTime; Icu_ChObj[Channel].DutyAcquired = TRUE; Icu_ChObj[Channel].PeriodAcquired = TRUE; } Icu_ChObj[Channel].IsRunning = FALSE; } return; } #endif /* ICU_SIGNAL_MEASUREMENT_API*/ #if (STD_ON == ICU_GET_TIME_ELAPSED_API) /* Design : DES_ICU_023 */ /* Requirements : MCAL-4773, MCAL-4774, MCAL-4775, MCAL-4776, MCAL-4777, MCAL-4778, MCAL-4779, MCAL-4780, MCAL-4781, MCAL-4782, MCAL-4783, MCAL-4784 */ ICU_FUNC_TEXT_SECTION FUNC(Icu_ValueType, ICU_CODE) Icu_GetTimeElapsed ( Icu_ChannelType Channel) { Icu_ValueType elapsedTime = 0U; #if (STD_ON == ICU_DEV_ERROR_DETECT) if (ICU_STATUS_UNINIT == Icu_DrvStatus) { (void)Icu_reportDetError(ICU_GETTIMEELAPSED_ID, ICU_E_UNINIT); } else if (ICU_MAX_NUM_CHANNELS <= Channel) { (void)Icu_reportDetError(ICU_GETTIMEELAPSED_ID, ICU_E_PARAM_CHANNEL); } else if (ICU_MODE_SIGNAL_MEASUREMENT != Icu_ChObj[Channel].chCfg.measurementMode) { (void)Icu_reportDetError(ICU_GETTIMEELAPSED_ID, ICU_E_PARAM_CHANNEL); } else #endif /* (STD_ON == ICU_DEV_ERROR_DETECT) */ { if (Icu_ChObj[Channel].PeriodAcquired == TRUE) { switch (Icu_ChObj[Channel].chCfg.signalMeasurementProperty) { case ICU_DUTY_CYCLE: elapsedTime = Icu_ChObj[Channel].Period; break; case ICU_PERIOD_TIME: elapsedTime = Icu_ChObj[Channel].Period; break; case ICU_HIGH_TIME: elapsedTime = Icu_ChObj[Channel].HighTime; break; case ICU_LOW_TIME: elapsedTime = Icu_ChObj[Channel].LowTime; break; default: elapsedTime = 0U; break; } Icu_ChObj[Channel].PeriodAcquired = FALSE; } else { elapsedTime = 0U; } } return elapsedTime; } #endif #if (STD_ON == ICU_GET_DUTY_CYCLE_VALUES_API) /* Design : DES_ICU_024 */ /* Requirements : MCAL-4785, MCAL-4786, MCAL-4787, MCAL-4788, MCAL-4789, MCAL-4790, MCAL-4791, MCAL-4792, MCAL-4793, MCAL-4794 */ FUNC (void, ICU_CODE) Icu_GetDutyCycleValues( Icu_ChannelType Channel, Icu_DutyCycleType* DutyCycleValues ) { #if (STD_ON == ICU_DEV_ERROR_DETECT) if (ICU_STATUS_UNINIT == Icu_DrvStatus) { (void)Icu_reportDetError(ICU_GETDUTYCYCLEVALUES_ID, ICU_E_UNINIT); } else if (ICU_MAX_NUM_CHANNELS <= Channel) { (void)Icu_reportDetError(ICU_GETDUTYCYCLEVALUES_ID, ICU_E_PARAM_CHANNEL); } else if (ICU_MODE_SIGNAL_MEASUREMENT != Icu_ChObj[Channel].chCfg.measurementMode) { (void)Icu_reportDetError(ICU_GETDUTYCYCLEVALUES_ID, ICU_E_PARAM_CHANNEL); } else if (NULL_PTR == DutyCycleValues) { (void)Icu_reportDetError(ICU_GETDUTYCYCLEVALUES_ID, ICU_E_PARAM_POINTER); } else #endif /* (STD_ON == ICU_DEV_ERROR_DETECT) */ { if (Icu_ChObj[Channel].DutyAcquired == TRUE) { DutyCycleValues->PeriodTime = Icu_ChObj[Channel].DutyCycle.PeriodTime; DutyCycleValues->ActiveTime = Icu_ChObj[Channel].DutyCycle.ActiveTime; Icu_ChObj[Channel].DutyAcquired = FALSE; } else { DutyCycleValues->PeriodTime = 0U; DutyCycleValues->ActiveTime = 0U; } } } #endif #if (STD_ON == ICU_GET_VERSION_INFO_API) /* Design : DES_ICU_025 */ /* Requirements : MCAL-4795, MCAL-4796 */ ICU_FUNC_TEXT_SECTION FUNC(void, ICU_CODE) Icu_GetVersionInfo( P2VAR(Std_VersionInfoType, AUTOMATIC, ICU_APPL_DATA) VersionInfoPtr) { #if (STD_ON == ICU_DEV_ERROR_DETECT) if (NULL_PTR == VersionInfoPtr) { Icu_reportDetError(ICU_GETVERSIONINFO_ID, ICU_E_PARAM_VINFO); } else #endif { VersionInfoPtr->vendorID = ICU_VENDOR_ID; VersionInfoPtr->moduleID = ICU_MODULE_ID; VersionInfoPtr->sw_major_version = (uint8) ICU_SW_MAJOR_VERSION; VersionInfoPtr->sw_minor_version = (uint8) ICU_SW_MINOR_VERSION; VersionInfoPtr->sw_patch_version = (uint8) ICU_SW_PATCH_VERSION; } return; } #endif /* ICU_GET_VERSION_INFO_API*/
the function name should be updated as defined in AS431 document.
Please let us know regarding this update.
Regards,
Kamia