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