1e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/****************************************************************************** 2e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 3e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * Copyright (C) 1999-2012 Broadcom Corporation 4e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 5e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 6e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * you may not use this file except in compliance with the License. 7e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * You may obtain a copy of the License at: 8e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 9e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 11e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * See the License for the specific language governing permissions and 15e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * limitations under the License. 16e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 17e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ******************************************************************************/ 18e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_H 19e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_H 20e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 21e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifdef BUILDCFG 22303fec1d79b7ac30a09713e5db9fff299f7227fbRuchi Kandoi#if (NFC_HAL_TARGET == FALSE) 236fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#include "buildcfg.h" 24e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#else 256fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi/* Build config when building HAL */ 266fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#include "buildcfg_hal.h" 27e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 28e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 29e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 30303fec1d79b7ac30a09713e5db9fff299f7227fbRuchi Kandoi#ifndef NFC_STANDALONE 31303fec1d79b7ac30a09713e5db9fff299f7227fbRuchi Kandoi#define NFC_STANDALONE FALSE 32303fec1d79b7ac30a09713e5db9fff299f7227fbRuchi Kandoi#endif 33303fec1d79b7ac30a09713e5db9fff299f7227fbRuchi Kandoi 34e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Include platform-specific over-rides */ 35303fec1d79b7ac30a09713e5db9fff299f7227fbRuchi Kandoi#if (NFC_STANDALONE == TRUE) 366fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#include "bt_types.h" 376fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#include "gki_target.h" 38303fec1d79b7ac30a09713e5db9fff299f7227fbRuchi Kandoi#elif (NFC_HAL_TARGET == TRUE) 396fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi/* If building NFC HAL, then use hal target file */ 406fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#include "gki_hal_target.h" 416fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#include "nfc_types.h" 42e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#else 436fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi/* For non-nfc_standalone, include Bluetooth definitions */ 446fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#include "bt_types.h" 45e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 46e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 476fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_BUFFER_DEBUG FALSE 48e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 49e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Error codes */ 506fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_SUCCESS 0x00 516fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_FAILURE 0x01 526fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_INVALID_TASK 0xF0 536fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_INVALID_POOL 0xFF 54e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 55e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/************************************************************************ 56e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Mailbox definitions. Each task has 4 mailboxes that are used to 57e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** send buffers to the task. 58e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 596fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define TASK_MBOX_0 0 606fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define TASK_MBOX_1 1 616fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define TASK_MBOX_2 2 626fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define TASK_MBOX_3 3 63e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 646fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define NUM_TASK_MBOX 4 65e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 66e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/************************************************************************ 67e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Event definitions. 68e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 69e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** There are 4 reserved events used to signal messages rcvd in task mailboxes. 70e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** There are 4 reserved events used to signal timeout events. 71e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** There are 8 general purpose events available for applications. 72e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 736fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define MAX_EVENTS 16 746fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi 756fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define TASK_MBOX_0_EVT_MASK 0x0001 766fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define TASK_MBOX_1_EVT_MASK 0x0002 776fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define TASK_MBOX_2_EVT_MASK 0x0004 786fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define TASK_MBOX_3_EVT_MASK 0x0008 796fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi 806fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define TIMER_0 0 816fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define TIMER_1 1 826fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define TIMER_2 2 836fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define TIMER_3 3 846fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi 856fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define TIMER_0_EVT_MASK 0x0010 866fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define TIMER_1_EVT_MASK 0x0020 876fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define TIMER_2_EVT_MASK 0x0040 886fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define TIMER_3_EVT_MASK 0x0080 896fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi 906fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define APPL_EVT_0 8 916fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define APPL_EVT_1 9 926fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define APPL_EVT_2 10 936fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define APPL_EVT_3 11 946fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define APPL_EVT_4 12 956fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define APPL_EVT_5 13 966fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define APPL_EVT_6 14 976fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define APPL_EVT_7 15 986fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi 996fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define EVENT_MASK(evt) ((uint16_t)(0x0001 << (evt))) 100e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 101e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/************************************************************************ 102e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Max Time Queue 103e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**/ 104e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_MAX_TIMER_QUEUES 1056fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_MAX_TIMER_QUEUES 3 106e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 107e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 108e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/************************************************************************ 1096fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi** Macro to determine the pool buffer size based on the GKI POOL ID at compile 1106fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi*time. 111e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Pool IDs index from 0 to GKI_NUM_FIXED_BUF_POOLS - 1 112e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 113e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 114e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 1) 115e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 116e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_0 1176fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_POOL_ID_0 0 118e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_0 */ 119e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 120e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF0_SIZE 1216fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_BUF0_SIZE 0 122e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF0_SIZE */ 123e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 124e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 1 */ 125e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 126e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 2) 127e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 128e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_1 1296fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_POOL_ID_1 0 130e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_1 */ 131e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 132e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF1_SIZE 1336fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_BUF1_SIZE 0 134e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF1_SIZE */ 135e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 136e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 2 */ 137e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 138e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 3) 139e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 140e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_2 1416fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_POOL_ID_2 0 142e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_2 */ 143e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 144e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF2_SIZE 1456fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_BUF2_SIZE 0 146e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF2_SIZE */ 147e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 148e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 3 */ 149e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 150e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 4) 151e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 152e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_3 1536fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_POOL_ID_3 0 154e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_4 */ 155e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 156e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF3_SIZE 1576fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_BUF3_SIZE 0 158e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF3_SIZE */ 159e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 160e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 4 */ 161e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 162e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 5) 163e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 164e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_4 1656fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_POOL_ID_4 0 166e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_4 */ 167e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 168e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF4_SIZE 1696fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_BUF4_SIZE 0 170e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF4_SIZE */ 171e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 172e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 5 */ 173e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 174e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 6) 175e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 176e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_5 1776fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_POOL_ID_5 0 178e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_5 */ 179e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 180e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF5_SIZE 1816fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_BUF5_SIZE 0 182e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF5_SIZE */ 183e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 184e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 6 */ 185e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 186e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 7) 187e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 188e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_6 1896fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_POOL_ID_6 0 190e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_6 */ 191e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 192e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF6_SIZE 1936fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_BUF6_SIZE 0 194e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF6_SIZE */ 195e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 196e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 7 */ 197e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 198e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 8) 199e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 200e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_7 2016fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_POOL_ID_7 0 202e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_7 */ 203e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 204e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF7_SIZE 2056fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_BUF7_SIZE 0 206e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF7_SIZE */ 207e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 208e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 8 */ 209e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 210e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 9) 211e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 212e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_8 2136fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_POOL_ID_8 0 214e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_8 */ 215e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 216e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF8_SIZE 2176fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_BUF8_SIZE 0 218e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF8_SIZE */ 219e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 220e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 9 */ 221e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 222e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 10) 223e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 224e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_9 2256fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_POOL_ID_9 0 226e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_9 */ 227e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 228e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF9_SIZE 2296fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_BUF9_SIZE 0 230e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF9_SIZE */ 231e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 232e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 10 */ 233e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 234e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 11) 235e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 236e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_10 2376fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_POOL_ID_10 0 238e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_10 */ 239e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 240e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF10_SIZE 2416fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_BUF10_SIZE 0 242e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF10_SIZE */ 243e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 244e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 11 */ 245e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 246e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 12) 247e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 248e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_11 2496fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_POOL_ID_11 0 250e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_11 */ 251e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 252e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF11_SIZE 2536fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_BUF11_SIZE 0 254e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF11_SIZE */ 255e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 256e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 12 */ 257e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 258e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 13) 259e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 260e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_12 2616fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_POOL_ID_12 0 262e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_12 */ 263e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 264e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF12_SIZE 2656fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_BUF12_SIZE 0 266e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF12_SIZE */ 267e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 268e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 13 */ 269e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 270e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 14) 271e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 272e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_13 2736fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_POOL_ID_13 0 274e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_13 */ 275e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 276e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF13_SIZE 2776fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_BUF13_SIZE 0 278e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF13_SIZE */ 279e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 280e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 14 */ 281e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 282e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 15) 283e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 284e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_14 2856fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_POOL_ID_14 0 286e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_14 */ 287e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 288e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF14_SIZE 2896fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_BUF14_SIZE 0 290e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF14_SIZE */ 291e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 292e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 15 */ 293e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 294e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 16) 295e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 296e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_15 2976fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_POOL_ID_15 0 298e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_15 */ 299e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 300e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF15_SIZE 3016fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_BUF15_SIZE 0 302e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF15_SIZE */ 303e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 304e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 16 */ 305e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 306e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Timer list entry callback type 307e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 3086fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef void(TIMER_CBACK)(void* p_tle); 309c2c337f02f62a0c2763bc36a8cbb3126dd443595Ruchi Kandoi 310e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Define a timer list entry 311e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 3126fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef struct _tle { 3136fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi struct _tle* p_next; 3146fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi struct _tle* p_prev; 3156fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi TIMER_CBACK* p_cback; 3166fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi int32_t ticks; 3176fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi uintptr_t param; 3186fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi uint16_t event; 3196fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi uint8_t in_use; 320e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} TIMER_LIST_ENT; 321e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 322e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Define a timer list queue 323e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 3246fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef struct { 3256fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi TIMER_LIST_ENT* p_first; 3266fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi TIMER_LIST_ENT* p_last; 3276fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi int32_t last_ticks; 328e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} TIMER_LIST_Q; 329e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 330e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*********************************************************************** 331e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** This queue is a general purpose buffer queue, for application use. 332e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 3336fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef struct { 3346fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi void* p_first; 3356fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi void* p_last; 3366fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi uint16_t count; 337e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} BUFFER_Q; 338e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 339e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_IS_QUEUE_EMPTY(p_q) ((p_q)->count == 0) 340e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 341e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Task constants 342e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 343e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef TASKPTR 344512ee63c7cc8feb016863e507a5d33cd0f4242bfRuchi Kandoitypedef void (*TASKPTR)(uint32_t); 345e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 346e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 34746e6e28414b5e37ffad65353916520fc56ea3a86Ruchi Kandoi/* General pool accessible to GKI_getbuf() */ 34846e6e28414b5e37ffad65353916520fc56ea3a86Ruchi Kandoi#define GKI_PUBLIC_POOL 0 3496fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_RESTRICTED_POOL 1 /* Inaccessible pool to GKI_getbuf() */ 350e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 351e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*********************************************************************** 352e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function prototypes 353e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 354e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 355e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifdef __cplusplus 356e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern "C" { 357e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 358e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 359e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Task management 360e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 3616fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern uint8_t GKI_create_task(TASKPTR, uint8_t, int8_t*, uint16_t*, uint16_t, 3626fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi void*, void*); 3636fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void GKI_exit_task(uint8_t); 3644182dab9b5de4222ffd4a539fa084cb2b56bc6a1Ruchi Kandoiextern uint8_t GKI_get_taskid(void); 3656fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void GKI_init(void); 3661e67a856a17ee5200cc2b8a4757e8b474ba89da6George Burgess IVextern int8_t* GKI_map_taskname(uint8_t); 3674182dab9b5de4222ffd4a539fa084cb2b56bc6a1Ruchi Kandoiextern uint8_t GKI_resume_task(uint8_t); 3686fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void GKI_run(void*); 3696fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void GKI_stop(void); 3704182dab9b5de4222ffd4a539fa084cb2b56bc6a1Ruchi Kandoiextern uint8_t GKI_suspend_task(uint8_t); 3714182dab9b5de4222ffd4a539fa084cb2b56bc6a1Ruchi Kandoiextern uint8_t GKI_is_task_running(uint8_t); 3726fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void GKI_shutdown(void); 373e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 374e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* memory management 375e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 3766fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void GKI_shiftdown(uint8_t* p_mem, uint32_t len, uint32_t shift_amount); 3776fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void GKI_shiftup(uint8_t* p_dest, uint8_t* p_src, uint32_t len); 378e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 379e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* To send buffers and events between tasks 380e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 3816fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern uint8_t GKI_isend_event(uint8_t, uint16_t); 3826fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void GKI_isend_msg(uint8_t, uint8_t, void*); 3836fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void* GKI_read_mbox(uint8_t); 3846fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void GKI_send_msg(uint8_t, uint8_t, void*); 3856fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern uint8_t GKI_send_event(uint8_t, uint16_t); 386e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 387e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* To get and release buffers, change owner and get size 388e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 3896fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void GKI_change_buf_owner(void*, uint8_t); 3906fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern uint8_t GKI_create_pool(uint16_t, uint16_t, uint8_t, void*); 3916fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void GKI_delete_pool(uint8_t); 3926fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void* GKI_find_buf_start(void*); 3936fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void GKI_freebuf(void*); 394303fec1d79b7ac30a09713e5db9fff299f7227fbRuchi Kandoi#if (GKI_BUFFER_DEBUG == TRUE) 3956fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_getbuf(size) GKI_getbuf_debug(size, __func__, __LINE__) 3966fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void* GKI_getbuf_debug(uint16_t, const char*, int); 397e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#else 3986fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void* GKI_getbuf(uint16_t); 399e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 4006fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern uint16_t GKI_get_buf_size(void*); 401303fec1d79b7ac30a09713e5db9fff299f7227fbRuchi Kandoi#if (GKI_BUFFER_DEBUG == TRUE) 4026fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_getpoolbuf(id) GKI_getpoolbuf_debug(id, __func__, __LINE__) 4036fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void* GKI_getpoolbuf_debug(uint8_t, const char*, int); 404e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#else 4056fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void* GKI_getpoolbuf(uint8_t); 406e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 407e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 4086fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern uint16_t GKI_poolcount(uint8_t); 4096fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern uint16_t GKI_poolfreecount(uint8_t); 4106fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern uint16_t GKI_poolutilization(uint8_t); 4116fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void GKI_register_mempool(void* p_mem); 4124182dab9b5de4222ffd4a539fa084cb2b56bc6a1Ruchi Kandoiextern uint8_t GKI_set_pool_permission(uint8_t, uint8_t); 413e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 414e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* User buffer queue management 415e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 4166fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void* GKI_dequeue(BUFFER_Q*); 4176fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void GKI_enqueue(BUFFER_Q*, void*); 4186fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void GKI_enqueue_head(BUFFER_Q*, void*); 4196fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void* GKI_getfirst(BUFFER_Q*); 4206fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void* GKI_getlast(BUFFER_Q*); 4216fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void* GKI_getnext(void*); 4226fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void GKI_init_q(BUFFER_Q*); 4236fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern bool GKI_queue_is_empty(BUFFER_Q*); 4246fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void* GKI_remove_from_queue(BUFFER_Q*, void*); 4256fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern uint16_t GKI_get_pool_bufsize(uint8_t); 426e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 427e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Timer management 428e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 4296fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void GKI_add_to_timer_list(TIMER_LIST_Q*, TIMER_LIST_ENT*); 4306fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void GKI_delay(uint32_t); 4316fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern uint32_t GKI_get_tick_count(void); 4326fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern int8_t* GKI_get_time_stamp(int8_t*); 4336fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void GKI_init_timer_list(TIMER_LIST_Q*); 4346fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void GKI_init_timer_list_entry(TIMER_LIST_ENT*); 4356fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern int32_t GKI_ready_to_sleep(void); 4366fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void GKI_remove_from_timer_list(TIMER_LIST_Q*, TIMER_LIST_ENT*); 4376fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void GKI_start_timer(uint8_t, int32_t, bool); 4386fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void GKI_stop_timer(uint8_t); 4396fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void GKI_timer_update(int32_t); 4406fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern uint16_t GKI_update_timer_list(TIMER_LIST_Q*, int32_t); 4416fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern uint32_t GKI_get_remaining_ticks(TIMER_LIST_Q*, TIMER_LIST_ENT*); 4426fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern uint16_t GKI_wait(uint16_t, uint32_t); 443e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 444e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Start and Stop system time tick callback 445e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * true for start system tick if time queue is not empty 446e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * false to stop system tick if time queue is empty 447e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 4486fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef void(SYSTEM_TICK_CBACK)(bool); 449e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 450e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Time queue management for system ticks 451e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 4526fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern bool GKI_timer_queue_empty(void); 4536fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void GKI_timer_queue_register_callback(SYSTEM_TICK_CBACK*); 454e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 455e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Disable Interrupts, Enable Interrupts 456e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 4576fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void GKI_enable(void); 4586fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void GKI_disable(void); 4596fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void GKI_sched_lock(void); 4606fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void GKI_sched_unlock(void); 461e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 462e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Allocate (Free) memory from an OS 463e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 4646fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void* GKI_os_malloc(uint32_t); 4656fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void GKI_os_free(void*); 466e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 467e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* os timer operation */ 4684182dab9b5de4222ffd4a539fa084cb2b56bc6a1Ruchi Kandoiextern uint32_t GKI_get_os_tick_count(void); 469e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 470e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Exception handling 471e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 4726fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void GKI_exception(uint16_t, char*); 473e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 474303fec1d79b7ac30a09713e5db9fff299f7227fbRuchi Kandoi#if (GKI_DEBUG == TRUE) 4756fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void GKI_PrintBufferUsage(uint8_t* p_num_pools, uint16_t* p_cur_used); 4766fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void GKI_PrintBuffer(void); 4776fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void GKI_print_task(void); 478e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#else 479e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#undef GKI_PrintBufferUsage 480e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_PrintBuffer() NULL 481e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 482e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 483e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifdef __cplusplus 484e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 485e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 486e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 487e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 488