1/*
2 * Copyright (C) 2010 NXP Semiconductors
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17/*!
18* \file  phLlcNfc_Timer.h
19* \brief To create, start, stop and destroy timer.
20*
21* Project: NFC-FRI-1.1
22*
23* $Date: Thu Jun 10 17:26:41 2010 $
24* $Author: ing02260 $
25* $Revision: 1.14 $
26* $Aliases: NFC_FRI1.1_WK1023_R35_1 $
27*
28*/
29
30#ifndef PHLLCNFC_TIMER_H
31#define PHLLCNFC_TIMER_H
32
33/**
34*  \name LLC NFC state machine handling
35*
36* File: \ref phLlcNfc_StateMachine.h
37*
38*/
39/*@{*/
40#define PH_LLCNFC_TIMER_FILEREVISION "$Revision: 1.14 $" /**< \ingroup grp_hal_nfc_llc_helper */
41#define PH_LLCNFC_TIMER_FILEALIASES  "$Aliases: NFC_FRI1.1_WK1023_R35_1 $"     /**< \ingroup grp_hal_nfc_llc_helper */
42/*@}*/
43/*************************** Includes *******************************/
44
45/*********************** End of includes ****************************/
46
47/***************************** Macros *******************************/
48#define PH_LLCNFC_CONNECTIONTIMER           (0x00)      /**< Timer for connection time out */
49#define PH_LLCNFC_GUARDTIMER                (0x01)      /**< Timer for guard time out */
50#define PH_LLCNFC_ACKTIMER                  (0x02)      /**< Timer for ack time out  */
51#define PH_LLCNFC_MAX_RETRY_COUNT           (0x03)      /**< Retries */
52/** Resolution value for the timer */
53#define PH_LLCNFC_RESOLUTION                TIMER_RESOLUTION
54/**< 0x05 Timer for connection time out value */
55#define PH_LLCNFC_CONNECTION_TO_VALUE       LINK_CONNECTION_TIMEOUT
56/**< 0x05 Timer for guard time out value */
57#define PH_LLCNFC_GUARD_TO_VALUE            LINK_GUARD_TIMEOUT
58
59#ifdef PIGGY_BACK
60
61#define PH_LLCNFC_ACK_TO_VALUE              LINK_ACK_TIMEOUT
62
63#endif /* #ifdef PIGGY_BACK */
64
65#ifdef LLC_RESET_DELAY
66    #define LLC_URSET_DELAY_TIME_OUT        LLC_RESET_DELAY
67#else
68    #define LLC_URSET_DELAY_TIME_OUT        50
69#endif /* */
70
71
72
73/************************ End of macros *****************************/
74
75/********************** Callback functions **************************/
76
77/******************* End of Callback functions **********************/
78
79/********************* Structures and enums *************************/
80
81/****************** End of structures and enums *********************/
82
83/******************** Function declarations *************************/
84/**
85* \ingroup grp_hal_nfc_llc_helper
86*
87* \brief LLC timer functions \b Timer Init function
88*
89* \copydoc page_reg This is to store LLCs main context structure
90*
91* \param[in, out] psLlcCtxt     Llc main structure information
92*
93* \retval NFCSTATUS_SUCCESS                 Operation successful.
94* \retval NFCSTATUS_INVALID_PARAMETER       At least one parameter of the function is invalid.
95*
96*/
97NFCSTATUS
98phLlcNfc_TimerInit (
99    phLlcNfc_Context_t  *psLlcCtxt
100);
101
102/**
103* \ingroup grp_hal_nfc_llc_helper
104*
105* \brief LLC timer functions \b Timer UnInit function
106*
107* \copydoc page_reg This is to uninitialise all timer related information
108*
109* \param[in, out] psLlcCtxt     Llc main structure information
110*
111* \retval NFCSTATUS_SUCCESS                 Operation successful.
112* \retval NFCSTATUS_INVALID_PARAMETER       At least one parameter of the function is invalid.
113*
114*/
115void
116phLlcNfc_TimerUnInit (
117    phLlcNfc_Context_t  *psLlcCtxt
118);
119
120/**
121* \ingroup grp_hal_nfc_llc_helper
122*
123* \brief LLC timer functions \b Create timer function
124*
125* \copydoc page_reg creates all the timers in the LLC context
126*
127*
128*/
129void
130phLlcNfc_CreateTimers (void);
131
132/**
133* \ingroup grp_hal_nfc_llc_helper
134*
135* \brief LLC timer functions \b Start timer function
136*
137* \copydoc page_reg starts the timer type given by the user
138*
139* \param[in] TimerType          Timer type to start
140* \param[in] ns_value           Value of N(S) for which the timer is started
141*
142* \retval NFCSTATUS_SUCCESS                 Operation successful.
143* \retval NFCSTATUS_INVALID_PARAMETER       At least one parameter of the function is invalid.
144* \retval Others                            Errors related to OsalNfc.
145*
146*/
147NFCSTATUS
148phLlcNfc_StartTimers (
149    uint8_t             TimerType,
150    uint8_t             ns_value
151);
152
153/**
154* \ingroup grp_hal_nfc_llc_helper
155*
156* \brief LLC timer functions \b Stop timer function
157*
158* \copydoc page_reg stop the timer type given by the user
159*
160* \param[in] TimerType              Timer type to start
161* \param[in] no_of_gaurd_to_del     Guard time-out count shall be decreased as and when
162*                                   frame is removed
163*
164*
165*/
166void
167phLlcNfc_StopTimers (
168    uint8_t             TimerType,
169    uint8_t             no_of_guard_to_del
170);
171
172/**
173* \ingroup grp_hal_nfc_llc_helper
174*
175* \brief LLC timer functions \b Stop timer function
176*
177* \copydoc page_reg stop the timer type given by the user
178*
179*
180*
181*
182*/
183void
184phLlcNfc_StopAllTimers (void);
185
186
187/**
188* \ingroup grp_hal_nfc_llc_helper
189*
190* \brief LLC timer functions \b Delete timer function
191*
192* \copydoc page_reg deletes all the timers in the LLC context
193*
194* \retval NFCSTATUS_SUCCESS                 Operation successful.
195* \retval NFCSTATUS_INVALID_PARAMETER       At least one parameter of the function is invalid.
196* \retval Others                            Errors related to OsalNfc.
197*
198*/
199void
200phLlcNfc_DeleteTimer (void);
201
202#ifdef LLC_URSET_NO_DELAY
203
204    /* NO definition required */
205
206#else /* #ifdef LLC_URSET_NO_DELAY */
207
208void
209phLlcNfc_URSET_Delay_Notify (
210
211    uint32_t            delay_id);
212
213
214
215#endif /* #ifdef LLC_URSET_NO_DELAY */
216
217/****************** End of Function declarations ********************/
218#endif /* PHLLCNFC_TIMER_H */
219