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 22e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "buildcfg.h" 23e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 24e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 25e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Include platform-specific over-rides */ 26e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (defined(NFC_STANDALONE) && (NFC_STANDALONE == TRUE)) 27e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project #include "gki_target.h" 28e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#else 29e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* For non-nfc_standalone, include Bluetooth definitions */ 30e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project #include "bt_target.h" 31e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 32e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 33e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 34e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 35e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "bt_types.h" 36e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 37e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Uncomment this line for verbose GKI debugging and buffer tracking */ 38e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*#define GKI_BUFFER_DEBUG TRUE*/ 39e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 40e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 41e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Error codes */ 42e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_SUCCESS 0x00 43e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_FAILURE 0x01 44e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_INVALID_TASK 0xF0 45e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_INVALID_POOL 0xFF 46e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 47e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 48e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/************************************************************************ 49e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Mailbox definitions. Each task has 4 mailboxes that are used to 50e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** send buffers to the task. 51e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 52e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TASK_MBOX_0 0 53e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TASK_MBOX_1 1 54e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TASK_MBOX_2 2 55e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TASK_MBOX_3 3 56e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 57e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NUM_TASK_MBOX 4 58e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 59e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/************************************************************************ 60e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Event definitions. 61e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 62e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** There are 4 reserved events used to signal messages rcvd in task mailboxes. 63e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** There are 4 reserved events used to signal timeout events. 64e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** There are 8 general purpose events available for applications. 65e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 66e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define MAX_EVENTS 16 67e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 68e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TASK_MBOX_0_EVT_MASK 0x0001 69e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TASK_MBOX_1_EVT_MASK 0x0002 70e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TASK_MBOX_2_EVT_MASK 0x0004 71e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TASK_MBOX_3_EVT_MASK 0x0008 72e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 73e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 74e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TIMER_0 0 75e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TIMER_1 1 76e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TIMER_2 2 77e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TIMER_3 3 78e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 79e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TIMER_0_EVT_MASK 0x0010 80e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TIMER_1_EVT_MASK 0x0020 81e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TIMER_2_EVT_MASK 0x0040 82e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TIMER_3_EVT_MASK 0x0080 83e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 84e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define APPL_EVT_0 8 85e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define APPL_EVT_1 9 86e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define APPL_EVT_2 10 87e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define APPL_EVT_3 11 88e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define APPL_EVT_4 12 89e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define APPL_EVT_5 13 90e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define APPL_EVT_6 14 91e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define APPL_EVT_7 15 92e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 93e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define EVENT_MASK(evt) ((UINT16)(0x0001 << (evt))) 94e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 95e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/************************************************************************ 96e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Max Time Queue 97e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**/ 98e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_MAX_TIMER_QUEUES 99e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_MAX_TIMER_QUEUES 3 100e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 101e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 102e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/************************************************************************ 103e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Utility macros for timer conversion 104e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**/ 105e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifdef TICKS_PER_SEC 106e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_MS_TO_TICKS(x) ((x) / (1000/TICKS_PER_SEC)) 107e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_SECS_TO_TICKS(x) ((x) * (TICKS_PER_SEC)) 108e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_TICKS_TO_MS(x) ((x) * (1000/TICKS_PER_SEC)) 109e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_TICKS_TO_SECS(x) ((x) * (1/TICKS_PER_SEC)) 110e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 111e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 112e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 113e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/************************************************************************ 114e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Macro to determine the pool buffer size based on the GKI POOL ID at compile time. 115e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Pool IDs index from 0 to GKI_NUM_FIXED_BUF_POOLS - 1 116e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 117e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 118e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 1) 119e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 120e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_0 121e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_POOL_ID_0 0 122e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_0 */ 123e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 124e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF0_SIZE 125e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_BUF0_SIZE 0 126e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF0_SIZE */ 127e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 128e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 1 */ 129e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 130e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 131e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 2) 132e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 133e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_1 134e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_POOL_ID_1 0 135e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_1 */ 136e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 137e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF1_SIZE 138e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_BUF1_SIZE 0 139e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF1_SIZE */ 140e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 141e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 2 */ 142e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 143e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 144e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 3) 145e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 146e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_2 147e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_POOL_ID_2 0 148e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_2 */ 149e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 150e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF2_SIZE 151e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_BUF2_SIZE 0 152e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF2_SIZE */ 153e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 154e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 3 */ 155e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 156e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 157e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 4) 158e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 159e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_3 160e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_POOL_ID_3 0 161e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_4 */ 162e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 163e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF3_SIZE 164e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_BUF3_SIZE 0 165e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF3_SIZE */ 166e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 167e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 4 */ 168e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 169e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 170e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 5) 171e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 172e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_4 173e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_POOL_ID_4 0 174e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_4 */ 175e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 176e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF4_SIZE 177e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_BUF4_SIZE 0 178e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF4_SIZE */ 179e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 180e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 5 */ 181e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 182e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 183e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 6) 184e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 185e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_5 186e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_POOL_ID_5 0 187e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_5 */ 188e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 189e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF5_SIZE 190e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_BUF5_SIZE 0 191e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF5_SIZE */ 192e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 193e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 6 */ 194e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 195e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 196e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 7) 197e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 198e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_6 199e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_POOL_ID_6 0 200e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_6 */ 201e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 202e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF6_SIZE 203e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_BUF6_SIZE 0 204e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF6_SIZE */ 205e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 206e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 7 */ 207e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 208e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 209e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 8) 210e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 211e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_7 212e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_POOL_ID_7 0 213e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_7 */ 214e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 215e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF7_SIZE 216e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_BUF7_SIZE 0 217e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF7_SIZE */ 218e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 219e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 8 */ 220e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 221e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 222e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 9) 223e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 224e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_8 225e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_POOL_ID_8 0 226e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_8 */ 227e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 228e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF8_SIZE 229e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_BUF8_SIZE 0 230e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF8_SIZE */ 231e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 232e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 9 */ 233e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 234e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 235e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 10) 236e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 237e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_9 238e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_POOL_ID_9 0 239e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_9 */ 240e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 241e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF9_SIZE 242e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_BUF9_SIZE 0 243e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF9_SIZE */ 244e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 245e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 10 */ 246e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 247e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 248e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 11) 249e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 250e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_10 251e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_POOL_ID_10 0 252e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_10 */ 253e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 254e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF10_SIZE 255e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_BUF10_SIZE 0 256e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF10_SIZE */ 257e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 258e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 11 */ 259e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 260e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 261e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 12) 262e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 263e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_11 264e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_POOL_ID_11 0 265e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_11 */ 266e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 267e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF11_SIZE 268e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_BUF11_SIZE 0 269e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF11_SIZE */ 270e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 271e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 12 */ 272e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 273e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 274e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 13) 275e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 276e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_12 277e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_POOL_ID_12 0 278e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_12 */ 279e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 280e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF12_SIZE 281e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_BUF12_SIZE 0 282e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF12_SIZE */ 283e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 284e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 13 */ 285e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 286e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 287e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 14) 288e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 289e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_13 290e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_POOL_ID_13 0 291e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_13 */ 292e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 293e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF13_SIZE 294e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_BUF13_SIZE 0 295e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF13_SIZE */ 296e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 297e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 14 */ 298e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 299e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 300e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 15) 301e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 302e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_14 303e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_POOL_ID_14 0 304e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_14 */ 305e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 306e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF14_SIZE 307e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_BUF14_SIZE 0 308e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF14_SIZE */ 309e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 310e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 15 */ 311e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 312e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 313e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 16) 314e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 315e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_15 316e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_POOL_ID_15 0 317e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_15 */ 318e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 319e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF15_SIZE 320e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_BUF15_SIZE 0 321e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF15_SIZE */ 322e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 323e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 16 */ 324e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 325e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 326e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Timer list entry callback type 327e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 328e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef void (TIMER_CBACK)(void *p_tle); 329e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef TIMER_PARAM_TYPE 330e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifdef WIN2000 331e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TIMER_PARAM_TYPE void * 332e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#else 333e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TIMER_PARAM_TYPE UINT32 334e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 335e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 336e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Define a timer list entry 337e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 338e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct _tle 339e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 340e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project struct _tle *p_next; 341e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project struct _tle *p_prev; 342e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project TIMER_CBACK *p_cback; 343e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project INT32 ticks; 344e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project TIMER_PARAM_TYPE param; 345e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT16 event; 346e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 in_use; 347e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} TIMER_LIST_ENT; 348e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 349e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Define a timer list queue 350e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 351e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 352e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 353e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project TIMER_LIST_ENT *p_first; 354e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project TIMER_LIST_ENT *p_last; 355e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project INT32 last_ticks; 356e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} TIMER_LIST_Q; 357e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 358e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 359e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*********************************************************************** 360e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** This queue is a general purpose buffer queue, for application use. 361e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 362e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 363e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 364e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project void *p_first; 365e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project void *p_last; 366e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT16 count; 367e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} BUFFER_Q; 368e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 369e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_IS_QUEUE_EMPTY(p_q) ((p_q)->count == 0) 370e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 371e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Task constants 372e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 373e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef TASKPTR 374e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef void (*TASKPTR)(UINT32); 375e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 376e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 377e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 378e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_PUBLIC_POOL 0 /* General pool accessible to GKI_getbuf() */ 379e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_RESTRICTED_POOL 1 /* Inaccessible pool to GKI_getbuf() */ 380e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 381e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*********************************************************************** 382e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function prototypes 383e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 384e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 385e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifdef __cplusplus 386e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern "C" { 387e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 388e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 389e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Task management 390e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 391e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern UINT8 GKI_create_task (TASKPTR, UINT8, INT8 *, UINT16 *, UINT16, void*, void*); 392e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void GKI_exit_task(UINT8); 393e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern UINT8 GKI_get_taskid(void); 394e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void GKI_init(void); 395e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern INT8 *GKI_map_taskname(UINT8); 396e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern UINT8 GKI_resume_task(UINT8); 397e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void GKI_run(void *); 398e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void GKI_stop(void); 399e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern UINT8 GKI_suspend_task(UINT8); 400e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern UINT8 GKI_is_task_running(UINT8); 401e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 402e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* memory management 403e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 404e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void GKI_shiftdown (UINT8 *p_mem, UINT32 len, UINT32 shift_amount); 405e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void GKI_shiftup (UINT8 *p_dest, UINT8 *p_src, UINT32 len); 406e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 407e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* To send buffers and events between tasks 408e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 409e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern UINT8 GKI_isend_event (UINT8, UINT16); 410e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void GKI_isend_msg (UINT8, UINT8, void *); 411e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void *GKI_read_mbox (UINT8); 412e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void GKI_send_msg (UINT8, UINT8, void *); 413e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern UINT8 GKI_send_event (UINT8, UINT16); 414e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 415e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 416e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* To get and release buffers, change owner and get size 417e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 418e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void GKI_change_buf_owner (void *, UINT8); 419e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern UINT8 GKI_create_pool (UINT16, UINT16, UINT8, void *); 420e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void GKI_delete_pool (UINT8); 421e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void *GKI_find_buf_start (void *); 422e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void GKI_freebuf (void *); 423e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if GKI_BUFFER_DEBUG 424e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_getbuf(size) GKI_getbuf_debug(size, __FUNCTION__, __LINE__) 425e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void *GKI_getbuf_debug (UINT16, const char *, int); 426e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#else 427e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void *GKI_getbuf (UINT16); 428e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 429e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern UINT16 GKI_get_buf_size (void *); 430e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if GKI_BUFFER_DEBUG 431e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_getpoolbuf(id) GKI_getpoolbuf_debug(id, __FUNCTION__, __LINE__) 432e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void *GKI_getpoolbuf_debug (UINT8, const char *, int); 433e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#else 434e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void *GKI_getpoolbuf (UINT8); 435e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 436e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 437e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern UINT16 GKI_poolcount (UINT8); 438e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern UINT16 GKI_poolfreecount (UINT8); 439e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern UINT16 GKI_poolutilization (UINT8); 440e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void GKI_register_mempool (void *p_mem); 441e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern UINT8 GKI_set_pool_permission(UINT8, UINT8); 442e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 443e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 444e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* User buffer queue management 445e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 446e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void *GKI_dequeue (BUFFER_Q *); 447e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void GKI_enqueue (BUFFER_Q *, void *); 448e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void GKI_enqueue_head (BUFFER_Q *, void *); 449e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void *GKI_getfirst (BUFFER_Q *); 450e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void *GKI_getlast (BUFFER_Q *); 451e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void *GKI_getnext (void *); 452e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void GKI_init_q (BUFFER_Q *); 453e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern BOOLEAN GKI_queue_is_empty(BUFFER_Q *); 454e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void *GKI_remove_from_queue (BUFFER_Q *, void *); 455e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern UINT16 GKI_get_pool_bufsize (UINT8); 456e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 457e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Timer management 458e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 459e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void GKI_add_to_timer_list (TIMER_LIST_Q *, TIMER_LIST_ENT *); 460e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void GKI_delay(UINT32); 461e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern UINT32 GKI_get_tick_count(void); 462e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern INT8 *GKI_get_time_stamp(INT8 *); 463e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void GKI_init_timer_list (TIMER_LIST_Q *); 464e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void GKI_init_timer_list_entry (TIMER_LIST_ENT *); 465e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern INT32 GKI_ready_to_sleep (void); 466e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void GKI_remove_from_timer_list (TIMER_LIST_Q *, TIMER_LIST_ENT *); 467e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void GKI_start_timer(UINT8, INT32, BOOLEAN); 468e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void GKI_stop_timer (UINT8); 469e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void GKI_timer_update(INT32); 470e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern UINT16 GKI_update_timer_list (TIMER_LIST_Q *, INT32); 471e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern UINT32 GKI_get_remaining_ticks (TIMER_LIST_Q *, TIMER_LIST_ENT *); 472e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern UINT16 GKI_wait(UINT16, UINT32); 473e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 474e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Start and Stop system time tick callback 475e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * true for start system tick if time queue is not empty 476e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * false to stop system tick if time queue is empty 477e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 478e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef void (SYSTEM_TICK_CBACK)(BOOLEAN); 479e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 480e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Time queue management for system ticks 481e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 482e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern BOOLEAN GKI_timer_queue_empty (void); 483e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void GKI_timer_queue_register_callback(SYSTEM_TICK_CBACK *); 484e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 485e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Disable Interrupts, Enable Interrupts 486e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 487e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void GKI_enable(void); 488e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void GKI_disable(void); 489e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void GKI_sched_lock(void); 490e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void GKI_sched_unlock(void); 491e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 492e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Allocate (Free) memory from an OS 493e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 494e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void *GKI_os_malloc (UINT32); 495e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void GKI_os_free (void *); 496e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 497e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* os timer operation */ 498e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern UINT32 GKI_get_os_tick_count(void); 499e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 500e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Exception handling 501e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 502e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void GKI_exception (UINT16, char *); 503e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 504e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if GKI_DEBUG == TRUE 505e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void GKI_PrintBufferUsage(UINT8 *p_num_pools, UINT16 *p_cur_used); 506e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void GKI_PrintBuffer(void); 507e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void GKI_print_task(void); 508e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#else 509e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#undef GKI_PrintBufferUsage 510e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_PrintBuffer() NULL 511e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 512e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 513e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifdef __cplusplus 514e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 515e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 516e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 517e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 518e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 519e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 520