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