/*
* Copyright (C) 2010 NXP Semiconductors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*!
* \file phLlcNfc_Timer.h
* \brief To create, start, stop and destroy timer.
*
* Project: NFC-FRI-1.1
*
* $Date: Thu Jun 10 17:26:41 2010 $
* $Author: ing02260 $
* $Revision: 1.14 $
* $Aliases: NFC_FRI1.1_WK1023_R35_1 $
*
*/
#ifndef PHLLCNFC_TIMER_H
#define PHLLCNFC_TIMER_H
/**
* \name LLC NFC state machine handling
*
* File: \ref phLlcNfc_StateMachine.h
*
*/
/*@{*/
#define PH_LLCNFC_TIMER_FILEREVISION "$Revision: 1.14 $" /**< \ingroup grp_hal_nfc_llc_helper */
#define PH_LLCNFC_TIMER_FILEALIASES "$Aliases: NFC_FRI1.1_WK1023_R35_1 $" /**< \ingroup grp_hal_nfc_llc_helper */
/*@}*/
/*************************** Includes *******************************/
/*********************** End of includes ****************************/
/***************************** Macros *******************************/
#define PH_LLCNFC_CONNECTIONTIMER (0x00) /**< Timer for connection time out */
#define PH_LLCNFC_GUARDTIMER (0x01) /**< Timer for guard time out */
#define PH_LLCNFC_ACKTIMER (0x02) /**< Timer for ack time out */
#define PH_LLCNFC_MAX_RETRY_COUNT (0x03) /**< Retries */
/** Resolution value for the timer */
#define PH_LLCNFC_RESOLUTION TIMER_RESOLUTION
/**< 0x05 Timer for connection time out value */
#define PH_LLCNFC_CONNECTION_TO_VALUE LINK_CONNECTION_TIMEOUT
/**< 0x05 Timer for guard time out value */
#define PH_LLCNFC_GUARD_TO_VALUE LINK_GUARD_TIMEOUT
#ifdef PIGGY_BACK
#define PH_LLCNFC_ACK_TO_VALUE LINK_ACK_TIMEOUT
#endif /* #ifdef PIGGY_BACK */
#ifdef LLC_RESET_DELAY
#define LLC_URSET_DELAY_TIME_OUT LLC_RESET_DELAY
#else
#define LLC_URSET_DELAY_TIME_OUT 50
#endif /* */
/************************ End of macros *****************************/
/********************** Callback functions **************************/
/******************* End of Callback functions **********************/
/********************* Structures and enums *************************/
/****************** End of structures and enums *********************/
/******************** Function declarations *************************/
/**
* \ingroup grp_hal_nfc_llc_helper
*
* \brief LLC timer functions \b Timer Init function
*
* \copydoc page_reg This is to store LLCs main context structure
*
* \param[in, out] psLlcCtxt Llc main structure information
*
* \retval NFCSTATUS_SUCCESS Operation successful.
* \retval NFCSTATUS_INVALID_PARAMETER At least one parameter of the function is invalid.
*
*/
NFCSTATUS
phLlcNfc_TimerInit (
phLlcNfc_Context_t *psLlcCtxt
);
/**
* \ingroup grp_hal_nfc_llc_helper
*
* \brief LLC timer functions \b Timer UnInit function
*
* \copydoc page_reg This is to uninitialise all timer related information
*
* \param[in, out] psLlcCtxt Llc main structure information
*
* \retval NFCSTATUS_SUCCESS Operation successful.
* \retval NFCSTATUS_INVALID_PARAMETER At least one parameter of the function is invalid.
*
*/
void
phLlcNfc_TimerUnInit (
phLlcNfc_Context_t *psLlcCtxt
);
/**
* \ingroup grp_hal_nfc_llc_helper
*
* \brief LLC timer functions \b Create timer function
*
* \copydoc page_reg creates all the timers in the LLC context
*
*
*/
void
phLlcNfc_CreateTimers (void);
/**
* \ingroup grp_hal_nfc_llc_helper
*
* \brief LLC timer functions \b Start timer function
*
* \copydoc page_reg starts the timer type given by the user
*
* \param[in] TimerType Timer type to start
* \param[in] ns_value Value of N(S) for which the timer is started
*
* \retval NFCSTATUS_SUCCESS Operation successful.
* \retval NFCSTATUS_INVALID_PARAMETER At least one parameter of the function is invalid.
* \retval Others Errors related to OsalNfc.
*
*/
NFCSTATUS
phLlcNfc_StartTimers (
uint8_t TimerType,
uint8_t ns_value
);
/**
* \ingroup grp_hal_nfc_llc_helper
*
* \brief LLC timer functions \b Stop timer function
*
* \copydoc page_reg stop the timer type given by the user
*
* \param[in] TimerType Timer type to start
* \param[in] no_of_gaurd_to_del Guard time-out count shall be decreased as and when
* frame is removed
*
*
*/
void
phLlcNfc_StopTimers (
uint8_t TimerType,
uint8_t no_of_guard_to_del
);
/**
* \ingroup grp_hal_nfc_llc_helper
*
* \brief LLC timer functions \b Stop timer function
*
* \copydoc page_reg stop the timer type given by the user
*
*
*
*
*/
void
phLlcNfc_StopAllTimers (void);
/**
* \ingroup grp_hal_nfc_llc_helper
*
* \brief LLC timer functions \b Delete timer function
*
* \copydoc page_reg deletes all the timers in the LLC context
*
* \retval NFCSTATUS_SUCCESS Operation successful.
* \retval NFCSTATUS_INVALID_PARAMETER At least one parameter of the function is invalid.
* \retval Others Errors related to OsalNfc.
*
*/
void
phLlcNfc_DeleteTimer (void);
#ifdef LLC_URSET_NO_DELAY
/* NO definition required */
#else /* #ifdef LLC_URSET_NO_DELAY */
void
phLlcNfc_URSET_Delay_Notify (
uint32_t delay_id);
#endif /* #ifdef LLC_URSET_NO_DELAY */
/****************** End of Function declarations ********************/
#endif /* PHLLCNFC_TIMER_H */