xref: /aosp_15_r20/system/nfc/src/gki/common/gki.h (revision 7eba2f3b06c51ae21384f6a4f14577b668a869b3)
1*7eba2f3bSAndroid Build Coastguard Worker /******************************************************************************
2*7eba2f3bSAndroid Build Coastguard Worker  *
3*7eba2f3bSAndroid Build Coastguard Worker  *  Copyright (C) 1999-2012 Broadcom Corporation
4*7eba2f3bSAndroid Build Coastguard Worker  *
5*7eba2f3bSAndroid Build Coastguard Worker  *  Licensed under the Apache License, Version 2.0 (the "License");
6*7eba2f3bSAndroid Build Coastguard Worker  *  you may not use this file except in compliance with the License.
7*7eba2f3bSAndroid Build Coastguard Worker  *  You may obtain a copy of the License at:
8*7eba2f3bSAndroid Build Coastguard Worker  *
9*7eba2f3bSAndroid Build Coastguard Worker  *  http://www.apache.org/licenses/LICENSE-2.0
10*7eba2f3bSAndroid Build Coastguard Worker  *
11*7eba2f3bSAndroid Build Coastguard Worker  *  Unless required by applicable law or agreed to in writing, software
12*7eba2f3bSAndroid Build Coastguard Worker  *  distributed under the License is distributed on an "AS IS" BASIS,
13*7eba2f3bSAndroid Build Coastguard Worker  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*7eba2f3bSAndroid Build Coastguard Worker  *  See the License for the specific language governing permissions and
15*7eba2f3bSAndroid Build Coastguard Worker  *  limitations under the License.
16*7eba2f3bSAndroid Build Coastguard Worker  *
17*7eba2f3bSAndroid Build Coastguard Worker  ******************************************************************************/
18*7eba2f3bSAndroid Build Coastguard Worker #ifndef GKI_H
19*7eba2f3bSAndroid Build Coastguard Worker #define GKI_H
20*7eba2f3bSAndroid Build Coastguard Worker 
21*7eba2f3bSAndroid Build Coastguard Worker #ifdef BUILDCFG
22*7eba2f3bSAndroid Build Coastguard Worker #include "buildcfg.h"
23*7eba2f3bSAndroid Build Coastguard Worker #endif
24*7eba2f3bSAndroid Build Coastguard Worker 
25*7eba2f3bSAndroid Build Coastguard Worker #ifndef NFC_STANDALONE
26*7eba2f3bSAndroid Build Coastguard Worker #define NFC_STANDALONE FALSE
27*7eba2f3bSAndroid Build Coastguard Worker #endif
28*7eba2f3bSAndroid Build Coastguard Worker 
29*7eba2f3bSAndroid Build Coastguard Worker #ifdef NFC_INTEGRATION_FUZZER
30*7eba2f3bSAndroid Build Coastguard Worker #include <list>
31*7eba2f3bSAndroid Build Coastguard Worker #endif
32*7eba2f3bSAndroid Build Coastguard Worker 
33*7eba2f3bSAndroid Build Coastguard Worker #include <string>
34*7eba2f3bSAndroid Build Coastguard Worker 
35*7eba2f3bSAndroid Build Coastguard Worker #include "bt_types.h"
36*7eba2f3bSAndroid Build Coastguard Worker #include "gki_target.h"
37*7eba2f3bSAndroid Build Coastguard Worker 
38*7eba2f3bSAndroid Build Coastguard Worker /* Error codes */
39*7eba2f3bSAndroid Build Coastguard Worker #define GKI_SUCCESS 0x00
40*7eba2f3bSAndroid Build Coastguard Worker #define GKI_FAILURE 0x01
41*7eba2f3bSAndroid Build Coastguard Worker #define GKI_INVALID_TASK 0xF0
42*7eba2f3bSAndroid Build Coastguard Worker #define GKI_INVALID_POOL 0xFF
43*7eba2f3bSAndroid Build Coastguard Worker 
44*7eba2f3bSAndroid Build Coastguard Worker /************************************************************************
45*7eba2f3bSAndroid Build Coastguard Worker ** Mailbox definitions. Each task has 4 mailboxes that are used to
46*7eba2f3bSAndroid Build Coastguard Worker ** send buffers to the task.
47*7eba2f3bSAndroid Build Coastguard Worker */
48*7eba2f3bSAndroid Build Coastguard Worker #define TASK_MBOX_0 0
49*7eba2f3bSAndroid Build Coastguard Worker #define TASK_MBOX_2 2
50*7eba2f3bSAndroid Build Coastguard Worker 
51*7eba2f3bSAndroid Build Coastguard Worker #define NUM_TASK_MBOX 4
52*7eba2f3bSAndroid Build Coastguard Worker 
53*7eba2f3bSAndroid Build Coastguard Worker /************************************************************************
54*7eba2f3bSAndroid Build Coastguard Worker ** Event definitions.
55*7eba2f3bSAndroid Build Coastguard Worker **
56*7eba2f3bSAndroid Build Coastguard Worker ** There are 4 reserved events used to signal messages rcvd in task mailboxes.
57*7eba2f3bSAndroid Build Coastguard Worker ** There are 4 reserved events used to signal timeout events.
58*7eba2f3bSAndroid Build Coastguard Worker ** There are 8 general purpose events available for applications.
59*7eba2f3bSAndroid Build Coastguard Worker */
60*7eba2f3bSAndroid Build Coastguard Worker 
61*7eba2f3bSAndroid Build Coastguard Worker #define TASK_MBOX_0_EVT_MASK 0x0001
62*7eba2f3bSAndroid Build Coastguard Worker #define TASK_MBOX_1_EVT_MASK 0x0002
63*7eba2f3bSAndroid Build Coastguard Worker #define TASK_MBOX_2_EVT_MASK 0x0004
64*7eba2f3bSAndroid Build Coastguard Worker #define TASK_MBOX_3_EVT_MASK 0x0008
65*7eba2f3bSAndroid Build Coastguard Worker 
66*7eba2f3bSAndroid Build Coastguard Worker #define TIMER_0 0
67*7eba2f3bSAndroid Build Coastguard Worker #define TIMER_1 1
68*7eba2f3bSAndroid Build Coastguard Worker #define TIMER_2 2
69*7eba2f3bSAndroid Build Coastguard Worker #define TIMER_3 3
70*7eba2f3bSAndroid Build Coastguard Worker 
71*7eba2f3bSAndroid Build Coastguard Worker #define TIMER_0_EVT_MASK 0x0010
72*7eba2f3bSAndroid Build Coastguard Worker #define TIMER_1_EVT_MASK 0x0020
73*7eba2f3bSAndroid Build Coastguard Worker #define TIMER_2_EVT_MASK 0x0040
74*7eba2f3bSAndroid Build Coastguard Worker #define TIMER_3_EVT_MASK 0x0080
75*7eba2f3bSAndroid Build Coastguard Worker 
76*7eba2f3bSAndroid Build Coastguard Worker #define APPL_EVT_0 8
77*7eba2f3bSAndroid Build Coastguard Worker #define APPL_EVT_7 15
78*7eba2f3bSAndroid Build Coastguard Worker 
79*7eba2f3bSAndroid Build Coastguard Worker #define EVENT_MASK(evt) ((uint16_t)(0x0001 << (evt)))
80*7eba2f3bSAndroid Build Coastguard Worker 
81*7eba2f3bSAndroid Build Coastguard Worker /************************************************************************
82*7eba2f3bSAndroid Build Coastguard Worker **  Max Time Queue
83*7eba2f3bSAndroid Build Coastguard Worker **/
84*7eba2f3bSAndroid Build Coastguard Worker #ifndef GKI_MAX_TIMER_QUEUES
85*7eba2f3bSAndroid Build Coastguard Worker #define GKI_MAX_TIMER_QUEUES 3
86*7eba2f3bSAndroid Build Coastguard Worker #endif
87*7eba2f3bSAndroid Build Coastguard Worker 
88*7eba2f3bSAndroid Build Coastguard Worker /************************************************************************
89*7eba2f3bSAndroid Build Coastguard Worker **  Utility macros for timer conversion
90*7eba2f3bSAndroid Build Coastguard Worker **/
91*7eba2f3bSAndroid Build Coastguard Worker #ifdef TICKS_PER_SEC
92*7eba2f3bSAndroid Build Coastguard Worker #define GKI_MS_TO_TICKS(x) ((x) / (1000 / TICKS_PER_SEC))
93*7eba2f3bSAndroid Build Coastguard Worker #define GKI_SECS_TO_TICKS(x) ((x) * (TICKS_PER_SEC))
94*7eba2f3bSAndroid Build Coastguard Worker #define GKI_TICKS_TO_MS(x) ((x) * (1000 / TICKS_PER_SEC))
95*7eba2f3bSAndroid Build Coastguard Worker #define GKI_TICKS_TO_SECS(x) ((x) * (1 / TICKS_PER_SEC))
96*7eba2f3bSAndroid Build Coastguard Worker #endif
97*7eba2f3bSAndroid Build Coastguard Worker 
98*7eba2f3bSAndroid Build Coastguard Worker /************************************************************************
99*7eba2f3bSAndroid Build Coastguard Worker **  Macro to determine the pool buffer size based on the GKI POOL ID at compile
100*7eba2f3bSAndroid Build Coastguard Worker **  time. Pool IDs index from 0 to GKI_NUM_FIXED_BUF_POOLS - 1
101*7eba2f3bSAndroid Build Coastguard Worker */
102*7eba2f3bSAndroid Build Coastguard Worker 
103*7eba2f3bSAndroid Build Coastguard Worker #if (GKI_NUM_FIXED_BUF_POOLS < 1)
104*7eba2f3bSAndroid Build Coastguard Worker 
105*7eba2f3bSAndroid Build Coastguard Worker #ifndef GKI_POOL_ID_0
106*7eba2f3bSAndroid Build Coastguard Worker #define GKI_POOL_ID_0 0
107*7eba2f3bSAndroid Build Coastguard Worker #endif /* ifndef GKI_POOL_ID_0 */
108*7eba2f3bSAndroid Build Coastguard Worker 
109*7eba2f3bSAndroid Build Coastguard Worker #ifndef GKI_BUF0_SIZE
110*7eba2f3bSAndroid Build Coastguard Worker #define GKI_BUF0_SIZE 0
111*7eba2f3bSAndroid Build Coastguard Worker #endif /* ifndef GKI_BUF0_SIZE */
112*7eba2f3bSAndroid Build Coastguard Worker 
113*7eba2f3bSAndroid Build Coastguard Worker #endif /* GKI_NUM_FIXED_BUF_POOLS < 1 */
114*7eba2f3bSAndroid Build Coastguard Worker 
115*7eba2f3bSAndroid Build Coastguard Worker #if (GKI_NUM_FIXED_BUF_POOLS < 2)
116*7eba2f3bSAndroid Build Coastguard Worker 
117*7eba2f3bSAndroid Build Coastguard Worker #ifndef GKI_POOL_ID_1
118*7eba2f3bSAndroid Build Coastguard Worker #define GKI_POOL_ID_1 0
119*7eba2f3bSAndroid Build Coastguard Worker #endif /* ifndef GKI_POOL_ID_1 */
120*7eba2f3bSAndroid Build Coastguard Worker 
121*7eba2f3bSAndroid Build Coastguard Worker #ifndef GKI_BUF1_SIZE
122*7eba2f3bSAndroid Build Coastguard Worker #define GKI_BUF1_SIZE 0
123*7eba2f3bSAndroid Build Coastguard Worker #endif /* ifndef GKI_BUF1_SIZE */
124*7eba2f3bSAndroid Build Coastguard Worker 
125*7eba2f3bSAndroid Build Coastguard Worker #endif /* GKI_NUM_FIXED_BUF_POOLS < 2 */
126*7eba2f3bSAndroid Build Coastguard Worker 
127*7eba2f3bSAndroid Build Coastguard Worker #if (GKI_NUM_FIXED_BUF_POOLS < 3)
128*7eba2f3bSAndroid Build Coastguard Worker 
129*7eba2f3bSAndroid Build Coastguard Worker #ifndef GKI_POOL_ID_2
130*7eba2f3bSAndroid Build Coastguard Worker #define GKI_POOL_ID_2 0
131*7eba2f3bSAndroid Build Coastguard Worker #endif /* ifndef GKI_POOL_ID_2 */
132*7eba2f3bSAndroid Build Coastguard Worker 
133*7eba2f3bSAndroid Build Coastguard Worker #ifndef GKI_BUF2_SIZE
134*7eba2f3bSAndroid Build Coastguard Worker #define GKI_BUF2_SIZE 0
135*7eba2f3bSAndroid Build Coastguard Worker #endif /* ifndef GKI_BUF2_SIZE */
136*7eba2f3bSAndroid Build Coastguard Worker 
137*7eba2f3bSAndroid Build Coastguard Worker #endif /* GKI_NUM_FIXED_BUF_POOLS < 3 */
138*7eba2f3bSAndroid Build Coastguard Worker 
139*7eba2f3bSAndroid Build Coastguard Worker #if (GKI_NUM_FIXED_BUF_POOLS < 4)
140*7eba2f3bSAndroid Build Coastguard Worker 
141*7eba2f3bSAndroid Build Coastguard Worker #ifndef GKI_POOL_ID_3
142*7eba2f3bSAndroid Build Coastguard Worker #define GKI_POOL_ID_3 0
143*7eba2f3bSAndroid Build Coastguard Worker #endif /* ifndef GKI_POOL_ID_4 */
144*7eba2f3bSAndroid Build Coastguard Worker 
145*7eba2f3bSAndroid Build Coastguard Worker #ifndef GKI_BUF3_SIZE
146*7eba2f3bSAndroid Build Coastguard Worker #define GKI_BUF3_SIZE 0
147*7eba2f3bSAndroid Build Coastguard Worker #endif /* ifndef GKI_BUF3_SIZE */
148*7eba2f3bSAndroid Build Coastguard Worker 
149*7eba2f3bSAndroid Build Coastguard Worker #endif /* GKI_NUM_FIXED_BUF_POOLS < 4 */
150*7eba2f3bSAndroid Build Coastguard Worker 
151*7eba2f3bSAndroid Build Coastguard Worker #if (GKI_NUM_FIXED_BUF_POOLS < 5)
152*7eba2f3bSAndroid Build Coastguard Worker 
153*7eba2f3bSAndroid Build Coastguard Worker #ifndef GKI_POOL_ID_4
154*7eba2f3bSAndroid Build Coastguard Worker #define GKI_POOL_ID_4 0
155*7eba2f3bSAndroid Build Coastguard Worker #endif /* ifndef GKI_POOL_ID_4 */
156*7eba2f3bSAndroid Build Coastguard Worker 
157*7eba2f3bSAndroid Build Coastguard Worker #ifndef GKI_BUF4_SIZE
158*7eba2f3bSAndroid Build Coastguard Worker #define GKI_BUF4_SIZE 0
159*7eba2f3bSAndroid Build Coastguard Worker #endif /* ifndef GKI_BUF4_SIZE */
160*7eba2f3bSAndroid Build Coastguard Worker 
161*7eba2f3bSAndroid Build Coastguard Worker #endif /* GKI_NUM_FIXED_BUF_POOLS < 5 */
162*7eba2f3bSAndroid Build Coastguard Worker 
163*7eba2f3bSAndroid Build Coastguard Worker #if (GKI_NUM_FIXED_BUF_POOLS < 6)
164*7eba2f3bSAndroid Build Coastguard Worker 
165*7eba2f3bSAndroid Build Coastguard Worker #ifndef GKI_POOL_ID_5
166*7eba2f3bSAndroid Build Coastguard Worker #define GKI_POOL_ID_5 0
167*7eba2f3bSAndroid Build Coastguard Worker #endif /* ifndef GKI_POOL_ID_5 */
168*7eba2f3bSAndroid Build Coastguard Worker 
169*7eba2f3bSAndroid Build Coastguard Worker #ifndef GKI_BUF5_SIZE
170*7eba2f3bSAndroid Build Coastguard Worker #define GKI_BUF5_SIZE 0
171*7eba2f3bSAndroid Build Coastguard Worker #endif /* ifndef GKI_BUF5_SIZE */
172*7eba2f3bSAndroid Build Coastguard Worker 
173*7eba2f3bSAndroid Build Coastguard Worker #endif /* GKI_NUM_FIXED_BUF_POOLS < 6 */
174*7eba2f3bSAndroid Build Coastguard Worker 
175*7eba2f3bSAndroid Build Coastguard Worker #if (GKI_NUM_FIXED_BUF_POOLS < 7)
176*7eba2f3bSAndroid Build Coastguard Worker 
177*7eba2f3bSAndroid Build Coastguard Worker #ifndef GKI_POOL_ID_6
178*7eba2f3bSAndroid Build Coastguard Worker #define GKI_POOL_ID_6 0
179*7eba2f3bSAndroid Build Coastguard Worker #endif /* ifndef GKI_POOL_ID_6 */
180*7eba2f3bSAndroid Build Coastguard Worker 
181*7eba2f3bSAndroid Build Coastguard Worker #ifndef GKI_BUF6_SIZE
182*7eba2f3bSAndroid Build Coastguard Worker #define GKI_BUF6_SIZE 0
183*7eba2f3bSAndroid Build Coastguard Worker #endif /* ifndef GKI_BUF6_SIZE */
184*7eba2f3bSAndroid Build Coastguard Worker 
185*7eba2f3bSAndroid Build Coastguard Worker #endif /* GKI_NUM_FIXED_BUF_POOLS < 7 */
186*7eba2f3bSAndroid Build Coastguard Worker 
187*7eba2f3bSAndroid Build Coastguard Worker #if (GKI_NUM_FIXED_BUF_POOLS < 8)
188*7eba2f3bSAndroid Build Coastguard Worker 
189*7eba2f3bSAndroid Build Coastguard Worker #ifndef GKI_POOL_ID_7
190*7eba2f3bSAndroid Build Coastguard Worker #define GKI_POOL_ID_7 0
191*7eba2f3bSAndroid Build Coastguard Worker #endif /* ifndef GKI_POOL_ID_7 */
192*7eba2f3bSAndroid Build Coastguard Worker 
193*7eba2f3bSAndroid Build Coastguard Worker #ifndef GKI_BUF7_SIZE
194*7eba2f3bSAndroid Build Coastguard Worker #define GKI_BUF7_SIZE 0
195*7eba2f3bSAndroid Build Coastguard Worker #endif /* ifndef GKI_BUF7_SIZE */
196*7eba2f3bSAndroid Build Coastguard Worker 
197*7eba2f3bSAndroid Build Coastguard Worker #endif /* GKI_NUM_FIXED_BUF_POOLS < 8 */
198*7eba2f3bSAndroid Build Coastguard Worker 
199*7eba2f3bSAndroid Build Coastguard Worker #if (GKI_NUM_FIXED_BUF_POOLS < 9)
200*7eba2f3bSAndroid Build Coastguard Worker 
201*7eba2f3bSAndroid Build Coastguard Worker #ifndef GKI_POOL_ID_8
202*7eba2f3bSAndroid Build Coastguard Worker #define GKI_POOL_ID_8 0
203*7eba2f3bSAndroid Build Coastguard Worker #endif /* ifndef GKI_POOL_ID_8 */
204*7eba2f3bSAndroid Build Coastguard Worker 
205*7eba2f3bSAndroid Build Coastguard Worker #ifndef GKI_BUF8_SIZE
206*7eba2f3bSAndroid Build Coastguard Worker #define GKI_BUF8_SIZE 0
207*7eba2f3bSAndroid Build Coastguard Worker #endif /* ifndef GKI_BUF8_SIZE */
208*7eba2f3bSAndroid Build Coastguard Worker 
209*7eba2f3bSAndroid Build Coastguard Worker #endif /* GKI_NUM_FIXED_BUF_POOLS < 9 */
210*7eba2f3bSAndroid Build Coastguard Worker 
211*7eba2f3bSAndroid Build Coastguard Worker #if (GKI_NUM_FIXED_BUF_POOLS < 10)
212*7eba2f3bSAndroid Build Coastguard Worker 
213*7eba2f3bSAndroid Build Coastguard Worker #ifndef GKI_POOL_ID_9
214*7eba2f3bSAndroid Build Coastguard Worker #define GKI_POOL_ID_9 0
215*7eba2f3bSAndroid Build Coastguard Worker #endif /* ifndef GKI_POOL_ID_9 */
216*7eba2f3bSAndroid Build Coastguard Worker 
217*7eba2f3bSAndroid Build Coastguard Worker #ifndef GKI_BUF9_SIZE
218*7eba2f3bSAndroid Build Coastguard Worker #define GKI_BUF9_SIZE 0
219*7eba2f3bSAndroid Build Coastguard Worker #endif /* ifndef GKI_BUF9_SIZE */
220*7eba2f3bSAndroid Build Coastguard Worker 
221*7eba2f3bSAndroid Build Coastguard Worker #endif /* GKI_NUM_FIXED_BUF_POOLS < 10 */
222*7eba2f3bSAndroid Build Coastguard Worker 
223*7eba2f3bSAndroid Build Coastguard Worker #if (GKI_NUM_FIXED_BUF_POOLS < 11)
224*7eba2f3bSAndroid Build Coastguard Worker 
225*7eba2f3bSAndroid Build Coastguard Worker #ifndef GKI_POOL_ID_10
226*7eba2f3bSAndroid Build Coastguard Worker #define GKI_POOL_ID_10 0
227*7eba2f3bSAndroid Build Coastguard Worker #endif /* ifndef GKI_POOL_ID_10 */
228*7eba2f3bSAndroid Build Coastguard Worker 
229*7eba2f3bSAndroid Build Coastguard Worker #ifndef GKI_BUF10_SIZE
230*7eba2f3bSAndroid Build Coastguard Worker #define GKI_BUF10_SIZE 0
231*7eba2f3bSAndroid Build Coastguard Worker #endif /* ifndef GKI_BUF10_SIZE */
232*7eba2f3bSAndroid Build Coastguard Worker 
233*7eba2f3bSAndroid Build Coastguard Worker #endif /* GKI_NUM_FIXED_BUF_POOLS < 11 */
234*7eba2f3bSAndroid Build Coastguard Worker 
235*7eba2f3bSAndroid Build Coastguard Worker #if (GKI_NUM_FIXED_BUF_POOLS < 12)
236*7eba2f3bSAndroid Build Coastguard Worker 
237*7eba2f3bSAndroid Build Coastguard Worker #ifndef GKI_POOL_ID_11
238*7eba2f3bSAndroid Build Coastguard Worker #define GKI_POOL_ID_11 0
239*7eba2f3bSAndroid Build Coastguard Worker #endif /* ifndef GKI_POOL_ID_11 */
240*7eba2f3bSAndroid Build Coastguard Worker 
241*7eba2f3bSAndroid Build Coastguard Worker #ifndef GKI_BUF11_SIZE
242*7eba2f3bSAndroid Build Coastguard Worker #define GKI_BUF11_SIZE 0
243*7eba2f3bSAndroid Build Coastguard Worker #endif /* ifndef GKI_BUF11_SIZE */
244*7eba2f3bSAndroid Build Coastguard Worker 
245*7eba2f3bSAndroid Build Coastguard Worker #endif /* GKI_NUM_FIXED_BUF_POOLS < 12 */
246*7eba2f3bSAndroid Build Coastguard Worker 
247*7eba2f3bSAndroid Build Coastguard Worker #if (GKI_NUM_FIXED_BUF_POOLS < 13)
248*7eba2f3bSAndroid Build Coastguard Worker 
249*7eba2f3bSAndroid Build Coastguard Worker #ifndef GKI_POOL_ID_12
250*7eba2f3bSAndroid Build Coastguard Worker #define GKI_POOL_ID_12 0
251*7eba2f3bSAndroid Build Coastguard Worker #endif /* ifndef GKI_POOL_ID_12 */
252*7eba2f3bSAndroid Build Coastguard Worker 
253*7eba2f3bSAndroid Build Coastguard Worker #ifndef GKI_BUF12_SIZE
254*7eba2f3bSAndroid Build Coastguard Worker #define GKI_BUF12_SIZE 0
255*7eba2f3bSAndroid Build Coastguard Worker #endif /* ifndef GKI_BUF12_SIZE */
256*7eba2f3bSAndroid Build Coastguard Worker 
257*7eba2f3bSAndroid Build Coastguard Worker #endif /* GKI_NUM_FIXED_BUF_POOLS < 13 */
258*7eba2f3bSAndroid Build Coastguard Worker 
259*7eba2f3bSAndroid Build Coastguard Worker #if (GKI_NUM_FIXED_BUF_POOLS < 14)
260*7eba2f3bSAndroid Build Coastguard Worker 
261*7eba2f3bSAndroid Build Coastguard Worker #ifndef GKI_POOL_ID_13
262*7eba2f3bSAndroid Build Coastguard Worker #define GKI_POOL_ID_13 0
263*7eba2f3bSAndroid Build Coastguard Worker #endif /* ifndef GKI_POOL_ID_13 */
264*7eba2f3bSAndroid Build Coastguard Worker 
265*7eba2f3bSAndroid Build Coastguard Worker #ifndef GKI_BUF13_SIZE
266*7eba2f3bSAndroid Build Coastguard Worker #define GKI_BUF13_SIZE 0
267*7eba2f3bSAndroid Build Coastguard Worker #endif /* ifndef GKI_BUF13_SIZE */
268*7eba2f3bSAndroid Build Coastguard Worker 
269*7eba2f3bSAndroid Build Coastguard Worker #endif /* GKI_NUM_FIXED_BUF_POOLS < 14 */
270*7eba2f3bSAndroid Build Coastguard Worker 
271*7eba2f3bSAndroid Build Coastguard Worker #if (GKI_NUM_FIXED_BUF_POOLS < 15)
272*7eba2f3bSAndroid Build Coastguard Worker 
273*7eba2f3bSAndroid Build Coastguard Worker #ifndef GKI_POOL_ID_14
274*7eba2f3bSAndroid Build Coastguard Worker #define GKI_POOL_ID_14 0
275*7eba2f3bSAndroid Build Coastguard Worker #endif /* ifndef GKI_POOL_ID_14 */
276*7eba2f3bSAndroid Build Coastguard Worker 
277*7eba2f3bSAndroid Build Coastguard Worker #ifndef GKI_BUF14_SIZE
278*7eba2f3bSAndroid Build Coastguard Worker #define GKI_BUF14_SIZE 0
279*7eba2f3bSAndroid Build Coastguard Worker #endif /* ifndef GKI_BUF14_SIZE */
280*7eba2f3bSAndroid Build Coastguard Worker 
281*7eba2f3bSAndroid Build Coastguard Worker #endif /* GKI_NUM_FIXED_BUF_POOLS < 15 */
282*7eba2f3bSAndroid Build Coastguard Worker 
283*7eba2f3bSAndroid Build Coastguard Worker #if (GKI_NUM_FIXED_BUF_POOLS < 16)
284*7eba2f3bSAndroid Build Coastguard Worker 
285*7eba2f3bSAndroid Build Coastguard Worker #ifndef GKI_POOL_ID_15
286*7eba2f3bSAndroid Build Coastguard Worker #define GKI_POOL_ID_15 0
287*7eba2f3bSAndroid Build Coastguard Worker #endif /* ifndef GKI_POOL_ID_15 */
288*7eba2f3bSAndroid Build Coastguard Worker 
289*7eba2f3bSAndroid Build Coastguard Worker #ifndef GKI_BUF15_SIZE
290*7eba2f3bSAndroid Build Coastguard Worker #define GKI_BUF15_SIZE 0
291*7eba2f3bSAndroid Build Coastguard Worker #endif /* ifndef GKI_BUF15_SIZE */
292*7eba2f3bSAndroid Build Coastguard Worker 
293*7eba2f3bSAndroid Build Coastguard Worker #endif /* GKI_NUM_FIXED_BUF_POOLS < 16 */
294*7eba2f3bSAndroid Build Coastguard Worker 
295*7eba2f3bSAndroid Build Coastguard Worker #ifndef GKI_SHUTDOWN_EVT
296*7eba2f3bSAndroid Build Coastguard Worker #define GKI_SHUTDOWN_EVT APPL_EVT_7
297*7eba2f3bSAndroid Build Coastguard Worker #endif
298*7eba2f3bSAndroid Build Coastguard Worker 
299*7eba2f3bSAndroid Build Coastguard Worker /* Timer list entry callback type */
300*7eba2f3bSAndroid Build Coastguard Worker struct TIMER_LIST_ENT;
301*7eba2f3bSAndroid Build Coastguard Worker typedef void(TIMER_CBACK)(TIMER_LIST_ENT* p_tle);
302*7eba2f3bSAndroid Build Coastguard Worker 
303*7eba2f3bSAndroid Build Coastguard Worker /* Define a timer list entry */
304*7eba2f3bSAndroid Build Coastguard Worker #ifdef NFC_INTEGRATION_FUZZER
305*7eba2f3bSAndroid Build Coastguard Worker struct TIMER_LIST_ENT {
306*7eba2f3bSAndroid Build Coastguard Worker   TIMER_CBACK* p_cback;
307*7eba2f3bSAndroid Build Coastguard Worker   int32_t ticks;
308*7eba2f3bSAndroid Build Coastguard Worker   uintptr_t param;
309*7eba2f3bSAndroid Build Coastguard Worker   uint16_t event;
310*7eba2f3bSAndroid Build Coastguard Worker   uint8_t in_use;
311*7eba2f3bSAndroid Build Coastguard Worker };
312*7eba2f3bSAndroid Build Coastguard Worker #else
313*7eba2f3bSAndroid Build Coastguard Worker struct TIMER_LIST_ENT {
314*7eba2f3bSAndroid Build Coastguard Worker   TIMER_LIST_ENT* p_next;
315*7eba2f3bSAndroid Build Coastguard Worker   TIMER_LIST_ENT* p_prev;
316*7eba2f3bSAndroid Build Coastguard Worker   TIMER_CBACK* p_cback;
317*7eba2f3bSAndroid Build Coastguard Worker   int32_t ticks;
318*7eba2f3bSAndroid Build Coastguard Worker   uintptr_t param;
319*7eba2f3bSAndroid Build Coastguard Worker   uint16_t event;
320*7eba2f3bSAndroid Build Coastguard Worker   uint8_t in_use;
321*7eba2f3bSAndroid Build Coastguard Worker };
322*7eba2f3bSAndroid Build Coastguard Worker #endif
323*7eba2f3bSAndroid Build Coastguard Worker 
324*7eba2f3bSAndroid Build Coastguard Worker /* Define a timer list queue */
325*7eba2f3bSAndroid Build Coastguard Worker #ifdef NFC_INTEGRATION_FUZZER
326*7eba2f3bSAndroid Build Coastguard Worker typedef std::list<TIMER_LIST_ENT*> TIMER_LIST_Q;
327*7eba2f3bSAndroid Build Coastguard Worker #else
328*7eba2f3bSAndroid Build Coastguard Worker typedef struct {
329*7eba2f3bSAndroid Build Coastguard Worker   TIMER_LIST_ENT* p_first;
330*7eba2f3bSAndroid Build Coastguard Worker   TIMER_LIST_ENT* p_last;
331*7eba2f3bSAndroid Build Coastguard Worker   int32_t last_ticks;
332*7eba2f3bSAndroid Build Coastguard Worker } TIMER_LIST_Q;
333*7eba2f3bSAndroid Build Coastguard Worker #endif
334*7eba2f3bSAndroid Build Coastguard Worker 
335*7eba2f3bSAndroid Build Coastguard Worker /***********************************************************************
336*7eba2f3bSAndroid Build Coastguard Worker ** This queue is a general purpose buffer queue, for application use.
337*7eba2f3bSAndroid Build Coastguard Worker */
338*7eba2f3bSAndroid Build Coastguard Worker typedef struct {
339*7eba2f3bSAndroid Build Coastguard Worker   void* p_first;
340*7eba2f3bSAndroid Build Coastguard Worker   void* p_last;
341*7eba2f3bSAndroid Build Coastguard Worker   uint16_t count;
342*7eba2f3bSAndroid Build Coastguard Worker } BUFFER_Q;
343*7eba2f3bSAndroid Build Coastguard Worker 
344*7eba2f3bSAndroid Build Coastguard Worker /* Task constants */
345*7eba2f3bSAndroid Build Coastguard Worker #ifndef TASKPTR
346*7eba2f3bSAndroid Build Coastguard Worker typedef uint32_t (*TASKPTR)(uint32_t);
347*7eba2f3bSAndroid Build Coastguard Worker #endif
348*7eba2f3bSAndroid Build Coastguard Worker 
349*7eba2f3bSAndroid Build Coastguard Worker /* General pool accessible to GKI_getbuf() */
350*7eba2f3bSAndroid Build Coastguard Worker #define GKI_RESTRICTED_POOL 1 /* Inaccessible pool to GKI_getbuf() */
351*7eba2f3bSAndroid Build Coastguard Worker 
352*7eba2f3bSAndroid Build Coastguard Worker /***********************************************************************
353*7eba2f3bSAndroid Build Coastguard Worker ** Function prototypes
354*7eba2f3bSAndroid Build Coastguard Worker */
355*7eba2f3bSAndroid Build Coastguard Worker 
356*7eba2f3bSAndroid Build Coastguard Worker /* Task management */
357*7eba2f3bSAndroid Build Coastguard Worker extern uint8_t GKI_create_task(TASKPTR, uint8_t, int8_t*, uint16_t*, uint16_t,
358*7eba2f3bSAndroid Build Coastguard Worker                                void*, void*);
359*7eba2f3bSAndroid Build Coastguard Worker extern void GKI_exit_task(uint8_t);
360*7eba2f3bSAndroid Build Coastguard Worker extern uint8_t GKI_get_taskid(void);
361*7eba2f3bSAndroid Build Coastguard Worker extern void GKI_init(void);
362*7eba2f3bSAndroid Build Coastguard Worker extern int8_t* GKI_map_taskname(uint8_t);
363*7eba2f3bSAndroid Build Coastguard Worker extern uint8_t GKI_resume_task(uint8_t);
364*7eba2f3bSAndroid Build Coastguard Worker extern void GKI_run(void*);
365*7eba2f3bSAndroid Build Coastguard Worker extern void GKI_stop(void);
366*7eba2f3bSAndroid Build Coastguard Worker extern uint8_t GKI_suspend_task(uint8_t);
367*7eba2f3bSAndroid Build Coastguard Worker 
368*7eba2f3bSAndroid Build Coastguard Worker /* memory management */
369*7eba2f3bSAndroid Build Coastguard Worker extern void GKI_shiftdown(uint8_t* p_mem, uint32_t len, uint32_t shift_amount);
370*7eba2f3bSAndroid Build Coastguard Worker extern void GKI_shiftup(uint8_t* p_dest, uint8_t* p_src, uint32_t len);
371*7eba2f3bSAndroid Build Coastguard Worker 
372*7eba2f3bSAndroid Build Coastguard Worker /* To send buffers and events between tasks */
373*7eba2f3bSAndroid Build Coastguard Worker extern uint8_t GKI_isend_event(uint8_t, uint16_t);
374*7eba2f3bSAndroid Build Coastguard Worker extern void GKI_isend_msg(uint8_t, uint8_t, void*);
375*7eba2f3bSAndroid Build Coastguard Worker extern void* GKI_read_mbox(uint8_t);
376*7eba2f3bSAndroid Build Coastguard Worker extern void GKI_send_msg(uint8_t, uint8_t, void*);
377*7eba2f3bSAndroid Build Coastguard Worker extern uint8_t GKI_send_event(uint8_t, uint16_t);
378*7eba2f3bSAndroid Build Coastguard Worker 
379*7eba2f3bSAndroid Build Coastguard Worker /* To get and release buffers, change owner and get size */
380*7eba2f3bSAndroid Build Coastguard Worker extern void GKI_change_buf_owner(void*, uint8_t);
381*7eba2f3bSAndroid Build Coastguard Worker extern uint8_t GKI_create_pool(uint16_t, uint16_t, uint8_t, void*);
382*7eba2f3bSAndroid Build Coastguard Worker extern void GKI_delete_pool(uint8_t);
383*7eba2f3bSAndroid Build Coastguard Worker extern void* GKI_find_buf_start(void*);
384*7eba2f3bSAndroid Build Coastguard Worker extern void GKI_freebuf(void*);
385*7eba2f3bSAndroid Build Coastguard Worker extern void* GKI_getbuf(uint16_t);
386*7eba2f3bSAndroid Build Coastguard Worker extern uint16_t GKI_get_buf_size(void*);
387*7eba2f3bSAndroid Build Coastguard Worker extern void* GKI_getpoolbuf(uint8_t);
388*7eba2f3bSAndroid Build Coastguard Worker 
389*7eba2f3bSAndroid Build Coastguard Worker extern uint16_t GKI_poolcount(uint8_t);
390*7eba2f3bSAndroid Build Coastguard Worker extern uint16_t GKI_poolfreecount(uint8_t);
391*7eba2f3bSAndroid Build Coastguard Worker extern uint16_t GKI_poolutilization(uint8_t);
392*7eba2f3bSAndroid Build Coastguard Worker extern void GKI_register_mempool(void* p_mem);
393*7eba2f3bSAndroid Build Coastguard Worker extern uint8_t GKI_set_pool_permission(uint8_t, uint8_t);
394*7eba2f3bSAndroid Build Coastguard Worker 
395*7eba2f3bSAndroid Build Coastguard Worker /* User buffer queue management */
396*7eba2f3bSAndroid Build Coastguard Worker extern void* GKI_dequeue(BUFFER_Q*);
397*7eba2f3bSAndroid Build Coastguard Worker extern void GKI_enqueue(BUFFER_Q*, void*);
398*7eba2f3bSAndroid Build Coastguard Worker extern void GKI_enqueue_head(BUFFER_Q*, void*);
399*7eba2f3bSAndroid Build Coastguard Worker extern void* GKI_getfirst(BUFFER_Q*);
400*7eba2f3bSAndroid Build Coastguard Worker extern void* GKI_getlast(BUFFER_Q*);
401*7eba2f3bSAndroid Build Coastguard Worker extern void* GKI_getnext(void*);
402*7eba2f3bSAndroid Build Coastguard Worker extern void GKI_init_q(BUFFER_Q*);
403*7eba2f3bSAndroid Build Coastguard Worker extern bool GKI_queue_is_empty(BUFFER_Q*);
404*7eba2f3bSAndroid Build Coastguard Worker extern void* GKI_remove_from_queue(BUFFER_Q*, void*);
405*7eba2f3bSAndroid Build Coastguard Worker extern uint16_t GKI_get_pool_bufsize(uint8_t);
406*7eba2f3bSAndroid Build Coastguard Worker 
407*7eba2f3bSAndroid Build Coastguard Worker /* Timer management */
408*7eba2f3bSAndroid Build Coastguard Worker extern void GKI_add_to_timer_list(TIMER_LIST_Q*, TIMER_LIST_ENT*);
409*7eba2f3bSAndroid Build Coastguard Worker extern void GKI_delay(uint32_t);
410*7eba2f3bSAndroid Build Coastguard Worker extern uint32_t GKI_get_tick_count(void);
411*7eba2f3bSAndroid Build Coastguard Worker extern int8_t* GKI_get_time_stamp(int8_t*);
412*7eba2f3bSAndroid Build Coastguard Worker extern void GKI_init_timer_list(TIMER_LIST_Q*);
413*7eba2f3bSAndroid Build Coastguard Worker extern void GKI_init_timer_list_entry(TIMER_LIST_ENT*);
414*7eba2f3bSAndroid Build Coastguard Worker extern int32_t GKI_ready_to_sleep(void);
415*7eba2f3bSAndroid Build Coastguard Worker extern void GKI_remove_from_timer_list(TIMER_LIST_Q*, TIMER_LIST_ENT*);
416*7eba2f3bSAndroid Build Coastguard Worker extern void GKI_start_timer(uint8_t, int32_t, bool);
417*7eba2f3bSAndroid Build Coastguard Worker extern void GKI_stop_timer(uint8_t);
418*7eba2f3bSAndroid Build Coastguard Worker extern void GKI_timer_update(int32_t);
419*7eba2f3bSAndroid Build Coastguard Worker extern bool GKI_timer_list_empty(TIMER_LIST_Q*);
420*7eba2f3bSAndroid Build Coastguard Worker extern TIMER_LIST_ENT* GKI_timer_list_first(TIMER_LIST_Q*);
421*7eba2f3bSAndroid Build Coastguard Worker extern uint16_t GKI_update_timer_list(TIMER_LIST_Q*, int32_t);
422*7eba2f3bSAndroid Build Coastguard Worker extern uint32_t GKI_get_remaining_ticks(TIMER_LIST_Q*, TIMER_LIST_ENT*);
423*7eba2f3bSAndroid Build Coastguard Worker extern uint16_t GKI_wait(uint16_t, uint32_t);
424*7eba2f3bSAndroid Build Coastguard Worker 
425*7eba2f3bSAndroid Build Coastguard Worker /* Start and Stop system time tick callback
426*7eba2f3bSAndroid Build Coastguard Worker  * true for start system tick if time queue is not empty
427*7eba2f3bSAndroid Build Coastguard Worker  * false to stop system tick if time queue is empty
428*7eba2f3bSAndroid Build Coastguard Worker  */
429*7eba2f3bSAndroid Build Coastguard Worker typedef void(SYSTEM_TICK_CBACK)(bool);
430*7eba2f3bSAndroid Build Coastguard Worker 
431*7eba2f3bSAndroid Build Coastguard Worker /* Time queue management for system ticks */
432*7eba2f3bSAndroid Build Coastguard Worker extern bool GKI_timer_queue_empty(void);
433*7eba2f3bSAndroid Build Coastguard Worker extern void GKI_timer_queue_register_callback(SYSTEM_TICK_CBACK*);
434*7eba2f3bSAndroid Build Coastguard Worker 
435*7eba2f3bSAndroid Build Coastguard Worker /* Disable Interrupts, Enable Interrupts */
436*7eba2f3bSAndroid Build Coastguard Worker extern void GKI_enable(void);
437*7eba2f3bSAndroid Build Coastguard Worker extern void GKI_disable(void);
438*7eba2f3bSAndroid Build Coastguard Worker extern void GKI_sched_lock(void);
439*7eba2f3bSAndroid Build Coastguard Worker extern void GKI_sched_unlock(void);
440*7eba2f3bSAndroid Build Coastguard Worker 
441*7eba2f3bSAndroid Build Coastguard Worker /* Allocate (Free) memory from an OS */
442*7eba2f3bSAndroid Build Coastguard Worker extern void* GKI_os_malloc(uint32_t);
443*7eba2f3bSAndroid Build Coastguard Worker extern void GKI_os_free(void*);
444*7eba2f3bSAndroid Build Coastguard Worker 
445*7eba2f3bSAndroid Build Coastguard Worker /* os timer operation */
446*7eba2f3bSAndroid Build Coastguard Worker extern uint32_t GKI_get_os_tick_count(void);
447*7eba2f3bSAndroid Build Coastguard Worker 
448*7eba2f3bSAndroid Build Coastguard Worker /* Exception handling */
449*7eba2f3bSAndroid Build Coastguard Worker extern void GKI_exception(uint16_t, std::string);
450*7eba2f3bSAndroid Build Coastguard Worker 
451*7eba2f3bSAndroid Build Coastguard Worker #endif
452