This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Update the function name Icu_GetTimeStampIndex

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

  • Hi Kamia,

    I see this mis-spelling as well in 7.3 SDK, and even later SDKs.

    Currently, it is not generating a compilation issue because it is not used in the example application, I assume you have an app that used it and you found the error.

    I have raised a bug for this, reference number - MCAL-7962.

    Regards,

    Erick

  • Hello Erick,

    Thanks for your feedback.

    Can I get a reference link for bug  MCAL-7962 which is being raised . So that I can see  it as well.

    And any update in which release it will be corrected. Please let me know.

    Regards,

    Kamia