1ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/****************************************************************************** 2ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta * 3ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta * Copyright (C) 2009-2013 Broadcom Corporation 4ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta * 5ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta * Licensed under the Apache License, Version 2.0 (the "License"); 6ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta * you may not use this file except in compliance with the License. 7ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta * You may obtain a copy of the License at: 8ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta * 9ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta * http://www.apache.org/licenses/LICENSE-2.0 10ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta * 11ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta * Unless required by applicable law or agreed to in writing, software 12ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta * distributed under the License is distributed on an "AS IS" BASIS, 13ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta * See the License for the specific language governing permissions and 15ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta * limitations under the License. 16ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta * 17ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta ******************************************************************************/ 18ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 19ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#include <string.h> 20ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 21ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#include "bt_target.h" 225cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen#include "bt_utils.h" 23ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#include "gap_int.h" 24ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#include "btm_int.h" 25ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#include "gki.h" 26ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#include "btu.h" 27ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 28ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/******************************************************************************* 29ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 30ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Function GAP_SetDiscoverableMode 31ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 32ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Description This function is called to allow or disallow a service to 33ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** discovered (Inquiry Scans). 34ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 35ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Parameters: mode - GAP_NON_DISCOVERABLE, GAP_LIMITED_DISCOVERABLE, 36ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** or GAP_GENERAL_DISCOVERABLE 37ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 38ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** duration - Amount of time for the duration of an inquiry scan. 39ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** The step size is in 0.625 msec intervals. 40ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Range: 0x0012 - 0x1000 (11.25 - 2560 msecs) 41ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 42ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** If a value of '0' is entered the default of 43ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 0x0012 (11.25 msecs) will be used. 44ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Note: The duration must be less than or equal to 45ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** the interval. 46ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 47ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** interval - Amount of time between the start of two inquiry scans. 48ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** The step size is in 0.625 msec intervals. 49ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Range: 0x0012 - 0x1000 (11.25 - 2560 msecs) 50ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** If a value of '0' is entered the default of 51ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 0x800 (1.28 secs) will be used. 52ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 53ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 54ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Returns BT_PASS (0) if successful, 55ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_ERR_ILL_PARM if a bad parameter is detected, 56ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_DEVICE_NOT_UP if the device is not active, 57ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_ERR_PROCESSING if not enough resources to carry out request 58ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 59ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta*******************************************************************************/ 60ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi BattaUINT16 GAP_SetDiscoverableMode (UINT16 mode, UINT16 duration, UINT16 interval) 61ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta{ 62ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta tBTM_STATUS status; 63ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 64ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta status = BTM_SetDiscoverability(mode, duration, interval); 65ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 66ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta return (gap_convert_btm_status (status)); 67ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta} 68ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 69ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 70ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/******************************************************************************* 71ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 72ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Function GAP_ReadDiscoverableMode 73ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 74ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Description This function is called to retrieve the current discoverable mode 75ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** for the local device. 76ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 77ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Parameters: duration - pointer to the amount of time of an inquiry scan. 78ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** The step size is in 0.625 msec intervals. 79ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Range: 0x0012 - 0x1000 (11.25 - 2560 msecs) 80ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 81ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** interval - pointer to the amount of time between the start of 82ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** two inquiry scans. 83ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** The step size is in 0.625 msec intervals. 84ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Range: 0x0012 - 0x1000 (11.25 - 2560 msecs) 85ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 86ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 87ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Returns GAP_NON_DISCOVERABLE, GAP_LIMITED_DISCOVERABLE, or 88ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_GENERAL_DISCOVERABLE 89ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 90ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta*******************************************************************************/ 91ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi BattaUINT16 GAP_ReadDiscoverableMode (UINT16 *duration, UINT16 *interval) 92ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta{ 93ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta return (BTM_ReadDiscoverability(duration, interval)); 94ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta} 95ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 96ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 97ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/******************************************************************************* 98ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 99ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Function GAP_SetConnectableMode 100ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 101ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Description This function is called to allow or disallow a 102ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** connections on the local device. 103ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 104ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Parameters: mode - GAP_NON_CONNECTABLE, GAP_CONNECTABLE, 105ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 106ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** duration - Amount of time for the duration of a page scan. 107ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** The step size is in 0.625 msec intervals. 108ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Range: 0x0012 - 0x1000 (11.25 - 2560 msecs) 109ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 110ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** If a value of '0' is entered the default of 111ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 0x0012 (11.25 msecs) will be used. 112ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Note: The duration must be less than or equal to 113ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** the interval. 114ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 115ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** interval - Amount of time between the start of two page scans. 116ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** The step size is in 0.625 msec intervals. 117ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Range: 0x0012 - 0x1000 (11.25 - 2560 msecs) 118ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** If a value of '0' is entered the default of 119ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 0x800 (1.28 secs) will be used. 120ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 121ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 122ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Returns BT_PASS (0) if successful, 123ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_ERR_ILL_PARM if a bad parameter is detected, 124ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_DEVICE_NOT_UP if the device is not active, 125ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_ERR_PROCESSING if not enough resources to carry out request 126ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 127ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta*******************************************************************************/ 128ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi BattaUINT16 GAP_SetConnectableMode (UINT16 mode, UINT16 duration, UINT16 interval) 129ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta{ 130ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta tBTM_STATUS status; 131ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 132ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta status = BTM_SetConnectability(mode, duration, interval); 133ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 134ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta return (gap_convert_btm_status (status)); 135ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta} 136ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 137ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 138ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/******************************************************************************* 139ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 140ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Function GAP_FindAddrByName 141ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 142ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Description This function is called to retrieve a device address given 143ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** a device name. It first looks in the current local inquiry 144ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** database for the device with the specified name. If not found 145ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** it initiates a general inquiry. Upon completion, it retrieves 146ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** the name for each device until a match is found or all devices 147ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** have been checked. Note: This process can take a while to 148ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** complete. 149ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 150ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Parameters: devname - 151ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 152ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** inqparms - pointer to the inquiry information 153ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** mode - GAP_GENERAL_INQUIRY or GAP_LIMITED_INQUIRY inquiry 154ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** duration - length in 1.28 sec intervals 155ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** max_resps - maximum amount of devices to search for before ending the inquiry 156ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** filter_cond_type - GAP_CLR_INQUIRY_FILTER, GAP_FILTER_COND_DEVICE_CLASS, or 157ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_FILTER_COND_BD_ADDR 158ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** filter_cond - value for the filter (based on filter_cond_type) 159ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 160ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 161ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Returns BT_PASS if the name was immediately available. (BD_ADDR is returned) 162ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_CMD_INITIATED if an inquiry has been initiated 163ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 164ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta*******************************************************************************/ 165ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi BattaUINT16 GAP_FindAddrByName (BD_NAME devname, tGAP_INQ_PARMS *p_inq_parms, tGAP_CALLBACK *p_addr_cb, 166ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta BD_ADDR bd_addr) 167ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta{ 168ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta UINT16 status; 169ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta tBTM_STATUS btm_status; 170ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 171ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 172ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta /* If the remote name is retrieved automatically during an inquiry search the local db first */ 173ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta if ((status = gap_find_local_addr_by_name (devname, bd_addr)) != BT_PASS) 174ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta { 175ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta /* If this code is used, the name wasn't in the current inquiry database */ 176ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta /* A general inquiry must now be initiated */ 177ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta if (gap_cb.findaddr_cb.in_use == FALSE) 178ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta { 179ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta gap_cb.findaddr_cb.p_cback = p_addr_cb; 180ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta gap_cb.findaddr_cb.p_cur_inq = (tBTM_INQ_INFO *) NULL; /* Reset to the beginning of the database */ 181ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta BCM_STRNCPY_S ((char *)gap_cb.findaddr_cb.results.devname, sizeof(gap_cb.findaddr_cb.results.devname), (char *)devname, BTM_MAX_REM_BD_NAME_LEN); 182ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 183ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta /* make sure we have an end of string char */ 184ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta gap_cb.findaddr_cb.results.devname[BTM_MAX_REM_BD_NAME_LEN] = 0; 185ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 186ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta btm_status = BTM_StartInquiry (p_inq_parms, (tBTM_INQ_RESULTS_CB *) NULL, 187ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta (tBTM_CMPL_CB *) gap_find_addr_inq_cb); 188ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta gap_cb.findaddr_cb.in_use = TRUE; 189ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 190ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta /* convert the error code into a GAP code and check the results for any errors */ 191ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta if ((status = gap_convert_btm_status (btm_status)) == GAP_CMD_INITIATED) 192ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta gap_cb.findaddr_cb.in_use = TRUE; 193ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta } 194ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta else 195ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta status = GAP_ERR_BUSY; 196ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta } 197ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 198ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta return (status); 199ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta} 200ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 201ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 202ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/******************************************************************************* 203ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 204ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Function GAP_ReadConnectableMode 205ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 206ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Description This function is called to retrieve the current connectability 207ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** mode for the local device. 208ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 209ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Parameters: duration - pointer to the amount of time of an page scan. 210ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** The step size is in 0.625 msec intervals. 211ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Range: 0x0012 - 0x1000 (11.25 - 2560 msecs) 212ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 213ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** interval - pointer to the amount of time between the start of 214ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** two page scans. 215ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** The step size is in 0.625 msec intervals. 216ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Range: 0x0012 - 0x1000 (11.25 - 2560 msecs) 217ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 218ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 219ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Returns GAP_NON_CONNECTABLE, GAP_CONNECTABLE 220ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 221ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta*******************************************************************************/ 222ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 223ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi BattaUINT16 GAP_ReadConnectableMode (UINT16 *duration, UINT16 *interval) 224ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta{ 225ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta return (BTM_ReadConnectability(duration, interval)); 226ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta} 227ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 228ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 229ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/******************************************************************************* 230ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 231ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Function GAP_SetSecurityMode 232ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 233ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Description Set security mode for the device 234ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 235ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Returns void 236ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 237ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta*******************************************************************************/ 238ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Battavoid GAP_SetSecurityMode (UINT8 sec_mode) 239ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta{ 240ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta BTM_SetSecurityMode (sec_mode); 241ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta} 242ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 243ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 244ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/******************************************************************************* 245ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 246ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Function GAP_Bond 247ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 248ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Description This function is called to perform bonding with peer device 249ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 250ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Parameters: bd_addr - Address of the device to bond 251ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** pin_len - length in bytes of the PIN Code 252ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** p_pin - pointer to array with the PIN Code 253ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** trusted_mask - bitwise OR of trusted services (array of UINT32) 254ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 255ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta*******************************************************************************/ 256ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi BattaUINT8 GAP_Bond (BD_ADDR bd_addr, UINT8 pin_len, UINT8 *p_pin, UINT32 trusted_mask[]) 257ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta{ 258ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta return ((UINT8) BTM_SecBond (bd_addr, pin_len, p_pin, trusted_mask)); 259ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta} 260ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 261ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 262ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/******************************************************************************* 263ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 264ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Function GAP_SecRegister 265ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 266ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Description Application manager calls this function to register for 267ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** security services. There can be one and only one application 268ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** saving link keys. BTM allows only first registration. 269ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 270ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Returns TRUE if registered OK, else FALSE 271ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 272ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta*******************************************************************************/ 273ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi BattaBOOLEAN GAP_SecRegister (tBTM_APPL_INFO *p_cb_info) 274ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta{ 275ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta return (BTM_SecRegister (p_cb_info)); 276ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta} 277ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 278ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 279ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/******************************************************************************* 280ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 281ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Function GAP_PinRsp 282ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 283ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Description This function is called from UI after Security Manager submitted 284ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** PIN code request. 285ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 286ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Parameters: bd_addr - Address of the device for which PIN was requested 287ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** res - result of the operation BTM_SUCCESS if success 288ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** pin_len - length in bytes of the PIN Code 289ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** p_pin - pointer to array with the PIN Code 290ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** trusted_mask - bitwise OR of trusted services (array of UINT32) 291ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 292ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta*******************************************************************************/ 293ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Battavoid GAP_PinRsp (BD_ADDR bd_addr, UINT8 res, UINT8 pin_len, UINT8 *p_pin, UINT32 trusted_mask[]) 294ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta{ 295ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta BTM_PINCodeReply (bd_addr, res, pin_len, p_pin, trusted_mask); 296ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta} 297ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 298ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 299ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/******************************************************************************* 300ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 301ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Function GAP_AuthorizeRsp 302ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 303ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Description This function is called from UI after Security Manager submitted 304ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** authorization request 305ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 306ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Parameters: bd_addr - Address of the device for which PIN was requested 307ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** res - result of the operation BTM_SUCCESS if success 308ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** trusted_mask - bitwise OR of trusted services (array of UINT32) 309ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 310ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta*******************************************************************************/ 311ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Battavoid GAP_AuthorizeRsp (BD_ADDR bd_addr, UINT8 res, UINT32 trusted_mask[]) 312ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta{ 313ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta BTM_DeviceAuthorized (bd_addr, res, trusted_mask); 314ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta} 315ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 316ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 317ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/******************************************************************************* 318ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 319ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Function GAP_SetPairableMode 320ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 321ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Description This function is called to allow or disallow pairing 322ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** on the local device. 323ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 324ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Parameters: mode - GAP_ALLOW_PAIRING, GAP_DISALLOW_PAIRING 325ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** connect_only_pairable - TRUE or FALSE connect only to paired devices 326ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 327ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** callback - The callback is called when a pin number is requested. 328ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 329ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Returns BT_PASS (0) if successful, or a non-zero error code 330ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 331ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta*******************************************************************************/ 332ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 333ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi BattaUINT16 GAP_SetPairableMode (UINT16 mode, BOOLEAN connect_only_paired) 334ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta{ 335ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta tBTM_STATUS btm_status; 336ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta UINT16 status = BT_PASS; 337ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 338ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta if (mode == GAP_ALLOW_PAIRING) 339ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta { 340ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta btm_status = BTM_SetConnectability(BTM_CONNECTABLE, 0, 0); 341ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 342ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta if ((status = gap_convert_btm_status (btm_status)) == BT_PASS) 343ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta BTM_SetPairableMode (TRUE, connect_only_paired); 344ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta } 345ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta else if (mode == GAP_DISALLOW_PAIRING) 346ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta { 347ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta BTM_SetPairableMode (FALSE, connect_only_paired); 348ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta } 349ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta else 350ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta { 351d5bba906b0704cd60e824613bd2e438935ba5d89Sharvil Nanavati GAP_TRACE_ERROR ("GAP_SetPairableMode: illegal mode %d", mode); 352ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta status = GAP_ERR_ILL_MODE; 353ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta } 354ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta return (status); 355ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta} 356ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 357ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 358ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/******************************************************************************* 359ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 360ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Function GAP_StartInquiry 361ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 362ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Description This function initiates a single inquiry. 363ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 364ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Parameters: p_inqparms - pointer to the inquiry information 365ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** mode - GAP_GENERAL_INQUIRY or GAP_LIMITED_INQUIRY inquiry 366ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** duration - length in 1.28 sec intervals 367ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** max_resps - maximum amount of devices to search for before ending the inquiry 368ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** filter_cond_type - GAP_CLR_INQUIRY_FILTER, GAP_FILTER_COND_DEVICE_CLASS, or 369ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_FILTER_COND_BD_ADDR 370ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** filter_cond - value for the filter (based on filter_cond_type) 371ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 372ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** p_results_cb - Pointer to the callback routine which gets called 373ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** upon receipt of an inquiry result. If this field is 374ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** NULL, the application is not notified. 375ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 376ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** p_cmpl_cb - Pointer to the callback routine which gets called 377ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** upon completion. If this field is NULL, the 378ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** application is not notified when completed. 379ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 380ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 381ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Returns BT_PASS (0) if successful, 382ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_ERR_ILL_MODE if a bad mode parameter was passed 383ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_ERR_ILL_INQ_TIME if a bad interval or duration was passed 384ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_ERR_NO_CTRL_BLK if out of control blocks 385ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_ERR_ILL_PARM if a bad parameter was detected in BTM 386ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_ERR_BUSY if the device already has an iquiry active 387ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_DEVICE_NOT_UP if the device is not initialized yet 388ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_ERR_PROCESSING if any other BTM error was returned 389ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 390ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta*******************************************************************************/ 391ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi BattaUINT16 GAP_StartInquiry (tGAP_INQ_PARMS *p_inq_parms, tGAP_CALLBACK *p_results_cb, tGAP_CALLBACK *p_cmpl_cb) 392ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta{ 393ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta tGAP_INFO *p_cb; 394ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta tBTM_STATUS btm_status; 395ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta UINT16 retval; 396ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 397ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta /*** Make sure the parameters are valid before continuing ***/ 398ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta if (p_inq_parms->mode != GAP_GENERAL_INQUIRY && p_inq_parms->mode != GAP_LIMITED_INQUIRY) 399ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta return (GAP_ERR_ILL_MODE); 400ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 401ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta if (p_inq_parms->duration < GAP_MIN_INQUIRY_LEN || 402ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta p_inq_parms->duration > GAP_MAX_INQUIRY_LENGTH) 403ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta return (GAP_ERR_ILL_INQ_TIME); 404ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 405ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta /*** get a control block for this operation ***/ 406ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta if ((p_cb = gap_allocate_cb()) != NULL) 407ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta { 408ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta p_cb->gap_cback = p_cmpl_cb; 409ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta p_cb->gap_inq_rslt_cback = p_results_cb; 410ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta p_cb->event = GAP_EVT_INQUIRY_COMPLETE; /* Return event expected */ 411ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 412ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta btm_status = BTM_StartInquiry(p_inq_parms, gap_inq_results_cb, 413ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta (tBTM_CMPL_CB *) gap_cb.btm_cback[p_cb->index]); 414ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 415ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta /* convert the error code into a GAP code and check the results for any errors */ 416ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta if ((retval = gap_convert_btm_status (btm_status)) != GAP_CMD_INITIATED) 417ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta gap_free_cb(p_cb); /* Error starting the inquiry */ 418ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta } 419ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta else 420ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta retval = GAP_ERR_NO_CTRL_BLK; 421ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 422ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta return (retval); 423ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta} 424ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 425ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 426ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/******************************************************************************* 427ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 428ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Function GAP_StartPeriodicInquiry 429ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 430ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Description This function initiates a periodic inquiry. 431ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 432ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Parameters: p_inqparms - pointer to the inquiry information 433ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** mode - GAP_GENERAL_INQUIRY or GAP_LIMITED_INQUIRY inquiry 434ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** duration - length in 1.28 sec intervals 435ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** max_resps - maximum amount of devices to search for before ending the inquiry 436ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** filter_cond_type - GAP_CLR_INQUIRY_FILTER, GAP_FILTER_COND_DEVICE_CLASS, or 437ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_FILTER_COND_BD_ADDR 438ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** filter_cond - value for the filter (based on filter_cond_type) 439ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 440ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** min_time - Minimum amount of time between consecutive inquiries. 441ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** The value is in 1.28 second intervals. 442ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Range: 0x0002 - 0xFFFE (2.56 - 83883.52 seconds) 443ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 444ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** max_time - Maximum amount of time between consecutive inquiries. 445ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** The value is in 1.28 sec intervals. 446ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Range: 0x0003 - 0xFFFF (3.84 - 83884.8 seconds) 447ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 448ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** p_results_cb - Pointer to the callback routine which gets called 449ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** upon receipt of an inquiry result. If this field is 450ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** NULL, the application is not notified. 451ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 452ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 453ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Returns BT_PASS (0) if successful, 454ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_ERR_ILL_MODE if a bad mode parameter was passed 455ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_ERR_ILL_INQ_TIME if a bad interval or duration was passed 456ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_ERR_NO_CTRL_BLK if out of control blocks 457ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_ERR_ILL_PARM if a bad parameter was detected in BTM 458ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_ERR_BUSY if the device already has an iquiry active 459ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_DEVICE_NOT_UP if the device is not initialized yet 460ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_ERR_PROCESSING if any other BTM error was returned 461ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 462ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta*******************************************************************************/ 463ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 464ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi BattaUINT16 GAP_StartPeriodicInquiry (tGAP_INQ_PARMS *p_inq_parms, UINT16 min_time, 465ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta UINT16 max_time, tGAP_CALLBACK *p_results_cb) 466ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta{ 467ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta tGAP_INFO *p_cb; 468ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta tBTM_STATUS btm_status; 469ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta UINT16 retval = BT_PASS; 470ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 471ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta /*** Make sure the parameters are valid before continuing ***/ 472ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta if (p_inq_parms->mode != GAP_GENERAL_INQUIRY && p_inq_parms->mode != GAP_LIMITED_INQUIRY) 473ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta return (GAP_ERR_ILL_MODE); 474ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 475ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta if (p_inq_parms->duration < GAP_MIN_INQUIRY_LEN || 476ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta p_inq_parms->duration > GAP_MAX_INQUIRY_LENGTH || 477ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta min_time <= p_inq_parms->duration || 478ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta min_time < GAP_PER_INQ_MIN_MIN_PERIOD || 479ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta min_time > GAP_PER_INQ_MAX_MIN_PERIOD || 480ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta max_time <= min_time || 481ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta max_time < GAP_PER_INQ_MIN_MAX_PERIOD) 482ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta { 483ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta return (GAP_ERR_ILL_INQ_TIME); 484ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta } 485ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 486ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta /*** get a control block for this operation ***/ 487ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta if ((p_cb = gap_allocate_cb()) != NULL) 488ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta { 489ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta p_cb->gap_inq_rslt_cback = p_results_cb; 490ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta p_cb->event = GAP_EVT_INQUIRY_COMPLETE; /* mark the inquiry event active */ 491ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 492ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta btm_status = BTM_SetPeriodicInquiryMode(p_inq_parms, max_time, min_time, 493ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta gap_inq_results_cb); 494ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 495ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta /* convert the error code into a GAP code and check the results for any errors */ 496ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta if ((retval = gap_convert_btm_status (btm_status)) != GAP_CMD_INITIATED) 497ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta gap_free_cb(p_cb); /* Error starting the inquiry */ 498ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta } 499ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta else 500ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta retval = GAP_ERR_NO_CTRL_BLK; 501ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 502ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta return (retval); 503ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta} 504ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 505ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 506ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/******************************************************************************* 507ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 508ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Function GAP_CancelInquiry 509ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 510ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Description This function cancels a single inquiry (if in progress) 511ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 512ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Parameters: None 513ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 514ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Returns BOOLEAN (TRUE if successful, otherwise FALSE) 515ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 516ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta*******************************************************************************/ 517ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi BattaUINT16 GAP_CancelInquiry(void) 518ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta{ 519ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta tGAP_INFO *p_cb = &gap_cb.blk[0]; 520ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta UINT8 x; 521ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta tBTM_STATUS btm_status; 522ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta UINT16 status; 523ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 524ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta btm_status = BTM_CancelInquiry(); 525ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta if ((status = gap_convert_btm_status (btm_status)) == BT_PASS) 526ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta { 527ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta /* Free the control block that is waiting for the inquiry complete event */ 528ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta for (x = 0; x < GAP_MAX_BLOCKS; x++, p_cb++) 529ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta { 530ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta if (p_cb->in_use && p_cb->event == GAP_EVT_INQUIRY_COMPLETE) 531ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta { 532ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta gap_free_cb(p_cb); 533ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta return (BT_PASS); 534ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta } 535ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta } 536ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 537ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta /* If here the control block was not found */ 538ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta status = GAP_ERR_NO_CTRL_BLK; 539ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta } 540ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 541ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta return (status); 542ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta} 543ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 544ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 545ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/******************************************************************************* 546ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 547ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Function GAP_CancelPeriodicInquiry 548ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 549ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Description This function cancels a periodic inquiry (if in progress) 550ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 551ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Parameters: None 552ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 553ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Returns BOOLEAN: (TRUE if successful, otherwise FALSE) 554ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 555ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta*******************************************************************************/ 556ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi BattaUINT16 GAP_CancelPeriodicInquiry(void) 557ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta{ 558ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta tGAP_INFO *p_cb = &gap_cb.blk[0]; 559ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta UINT8 x; 560ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta tBTM_STATUS btm_status; 561ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta UINT16 status; 562ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 563ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta btm_status = BTM_CancelPeriodicInquiry(); 564ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta if ((status = gap_convert_btm_status (btm_status)) == BT_PASS) 565ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta { 566ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta /* Free the control block that is waiting for the inquiry complete event */ 567ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta for (x = 0; x < GAP_MAX_BLOCKS; x++, p_cb++) 568ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta { 569ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta if (p_cb->in_use && p_cb->event == GAP_EVT_INQUIRY_COMPLETE) 570ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta { 571ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta gap_free_cb(p_cb); 572ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta return (BT_PASS); 573ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta } 574ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta } 575ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 576ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta /* If here the control block was not found */ 577ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta status = GAP_ERR_NO_CTRL_BLK; 578ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta } 579ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 580ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta return (status); 581ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta} 582ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 583ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 584ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/******************************************************************************* 585ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 586ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Function GAP_GetFirstInquiryResult 587ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 588ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Description This function retrieves the first valid inquiry result. 589ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 590ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Parameters: p_results - pointer to the inquiry results 591ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 592ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Returns BT_PASS (0) if successful, or a non-zero error code 593ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_EOINQDB if no more entries in the database. 594ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 595ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta*******************************************************************************/ 596ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi BattaUINT16 GAP_GetFirstInquiryResult(tGAP_INQ_RESULTS *p_results) 597ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta{ 598ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta UINT8 *ptr; 599ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 600ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta gap_cb.cur_inqptr = BTM_InqFirstResult(); 601ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 602ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta if (gap_cb.cur_inqptr != NULL) 603ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta { 604ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta memcpy(p_results, &gap_cb.cur_inqptr->results, sizeof(tBTM_INQ_RESULTS)); 605ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 606ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta ptr = (UINT8 *)gap_cb.cur_inqptr->results.remote_bd_addr; 607d5bba906b0704cd60e824613bd2e438935ba5d89Sharvil Nanavati GAP_TRACE_EVENT("GAP_GetFirstInqResult %02x%02x%02x%02x%02x%02x", 608ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta ptr[0],ptr[1],ptr[2],ptr[3],ptr[4],ptr[5]); 609ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta return(BT_PASS); 610ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta } 611ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta else 612ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta { 613d5bba906b0704cd60e824613bd2e438935ba5d89Sharvil Nanavati GAP_TRACE_EVENT("GAP_FirstInqResults: No BD_ADDRs Found"); 614ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta memset(p_results, 0, sizeof(tBTM_INQ_RESULTS)); 615ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta return(GAP_EOINQDB); 616ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta } 617ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta} 618ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 619ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 620ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/******************************************************************************* 621ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 622ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Function GAP_GetNextInquiryResult 623ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 624ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Description This function retrieves the next valid inquiry result. 625ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 626ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Parameters: p_results - pointer to the inquiry results 627ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 628ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Returns BT_PASS (0) if successful, or a non-zero status code 629ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_EOINQDB if no more entries in the database. 630ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 631ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta*******************************************************************************/ 632ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi BattaUINT16 GAP_GetNextInquiryResult(tGAP_INQ_RESULTS *p_results) 633ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta{ 634ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta UINT8 *ptr; 635ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 636ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta /*** if the current inquiry db pointer is NULL then call the first entry ***/ 637ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta if (gap_cb.cur_inqptr) 638ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta { 639ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta gap_cb.cur_inqptr = BTM_InqNextResult(gap_cb.cur_inqptr); 640ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta if (gap_cb.cur_inqptr != NULL) 641ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta { 642ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta memcpy(p_results, &gap_cb.cur_inqptr->results, 643ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta sizeof(tGAP_INQ_RESULTS)); 644ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 645ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta ptr = (UINT8 *)gap_cb.cur_inqptr->results.remote_bd_addr; 646d5bba906b0704cd60e824613bd2e438935ba5d89Sharvil Nanavati GAP_TRACE_EVENT("GAP_GetNextInqResult %02x%02x%02x%02x%02x%02x", 647ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta ptr[0],ptr[1],ptr[2],ptr[3],ptr[4],ptr[5]); 648ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 649ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta return(BT_PASS); 650ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta } 651ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta else 652ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta { 653d5bba906b0704cd60e824613bd2e438935ba5d89Sharvil Nanavati GAP_TRACE_EVENT("GAP_NextInqResults: No BD_ADDRs Found"); 654ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta memset(p_results, 0, sizeof(tBTM_INQ_RESULTS)); 655ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta return(GAP_EOINQDB); 656ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta } 657ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta } 658ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta else 659ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta return (GAP_GetFirstInquiryResult(p_results)); 660ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta} 661ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 662ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 663ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/******************************************************************************* 664ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 665ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Function GAP_ReadLocalDeviceInfo 666ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 667ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Description This function retrieves local device information to the caller. 668ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 669ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Parameters: name - (output) pointer to the UTF-8 encoded string representing 670ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** the device name. 671ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 672ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** addr - (output) pointer to the Bluetooth device address (BD_ADDR). 673ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 674ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** verinfo - (output) pointer to the LMP version information. 675ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 676ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** features - (output) pointer to the LMP features for the device. 677ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 678ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** NOTE: Return parameters that are set to NULL are not retrieved. 679ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 680ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Returns BT_PASS (0) if successful, or a non-zero error code 681ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 682ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta*******************************************************************************/ 683ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 684ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi BattaUINT16 GAP_ReadLocalDeviceInfo(UINT8 *name, BD_ADDR *addr, tGAP_LMP_VERSION *verinfo, 685ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta tGAP_LMP_FEATURES *features) 686ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta{ 6875cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen UNUSED(name); 6885cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen UNUSED(addr); 6895cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen UNUSED(verinfo); 6905cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen UNUSED(features); 691ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta return (GAP_UNSUPPORTED); 692ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta} 693ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 694ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 695ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 696ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/******************************************************************************* 697ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 698ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Function GAP_GetRemoteDeviceName 699ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 700ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Description The remote name is retrieved from the specified remote device. If 701ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_CMD_INITIATED is returned by the function, the command was 702ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** successfully sent to the controller. The GAP_EVT_NAME_RESP event 703ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** is passed in the callback when the remote device name has been retrieved. 704ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 705ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Parameters: addr - The Bluetooth device address (BD_ADDR) of the remote 706ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** device. 707ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 708ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** callback - pointer to the callback which is called after the 709ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** remote device has been retrieved. 710ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** p_data in the callback points to the structure containing the 711ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** status, device name length, and the UTF-8 encoded 712ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** device name. (type tBTM_REMOTE_DEV_NAME) 713ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** The event field in the callback is set to GAP_EVT_REM_NAME_COMPLETE. 714ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** The callback is not called unless (GAP_CMD_INITIATED) is returned. 715ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 716ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 717ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Returns 718ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_CMD_INITIATED if remote search successfully initiated 719ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_ERR_BUSY if a remote name request is already in progress, 720ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_ERR_NO_CTRL_BLK if out of control blocks (too many commands pending) 721ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_BAD_BD_ADDR if the device address is bad, 722ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_DEVICE_NOT_UP if the device has not been initialized yet 723ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_ERR_PROCESSING if any other BTM error has been returned 724ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 725ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta*******************************************************************************/ 726ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi BattaUINT16 GAP_GetRemoteDeviceName (BD_ADDR addr, tGAP_CALLBACK *callback) 727ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta{ 728ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta tGAP_INFO *p_cb; 729ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta UINT16 retval; 730ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta tBTM_STATUS btm_status; 731ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 732ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta if ((p_cb = gap_allocate_cb()) != NULL) 733ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta { 734ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta p_cb->gap_cback = callback; 735ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta p_cb->event = GAP_EVT_REM_NAME_COMPLETE; /* Return event expected */ 736ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 7378fe58875ce67c6e1099e7ba2339dcd2b979491b0Ganesh Ganapathi Batta btm_status = BTM_ReadRemoteDeviceName (addr, gap_cb.btm_cback[p_cb->index], BT_TRANSPORT_BR_EDR); 738ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 739ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta /* If the name was not returned immediately, or if an error occurred, release the control block */ 740ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta if ((retval = gap_convert_btm_status (btm_status)) != GAP_CMD_INITIATED) 741ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta gap_free_cb (p_cb); 742ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta } 743ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta else 744ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta retval = GAP_ERR_NO_CTRL_BLK; 745ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 746ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta return (retval); 747ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta} 748ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 749ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/******************************************************************************* 750ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 751ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Function GAP_SetDeviceClass 752ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 753ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Description This function updates the local Device Class. 754ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 755ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Parameters: 756ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** p_cod - Pointer to the device class to set to 757ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 758ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** cmd - the fields of the device class to update. 759ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_SET_COD_MAJOR_MINOR, - overwrite major, minor class 760ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_SET_COD_SERVICE_CLASS - set the bits in the input 761ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_CLR_COD_SERVICE_CLASS - clear the bits in the input 762ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_SET_COD_ALL - overwrite major, minor, set the bits in service class 763ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_INIT_COD - overwrite major, minor, and service class 764ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 765ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Returns BT_PASS (0) if successful, 766ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_ERR_BUSY if a discovery is already in progress 767ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_ERR_ILL_PARM if an illegal parameter was detected 768ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** GAP_ERR_PROCESSING if any other BTM error has been returned 769ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 770ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta*******************************************************************************/ 771ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi BattaUINT16 GAP_SetDeviceClass(tGAP_COD *p_cod, UINT8 cmd) 772ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta{ 773ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta tBTM_STATUS btm_status; 774ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta UINT8 *dev; 775ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta UINT16 service; 776ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta UINT8 minor, major; 777ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta DEV_CLASS dev_class; 778ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 779ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta dev = BTM_ReadDeviceClass(); 780ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta BTM_COD_SERVICE_CLASS( service, dev ); 781ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta BTM_COD_MINOR_CLASS(minor, dev ); 782ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta BTM_COD_MAJOR_CLASS(major, dev ); 783ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 784ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta switch(cmd) 785ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta { 786ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta case GAP_SET_COD_MAJOR_MINOR: 787ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta minor = p_cod->minor & BTM_COD_MINOR_CLASS_MASK; 788ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta major = p_cod->major & BTM_COD_MAJOR_CLASS_MASK; 789ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta break; 790ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 791ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta case GAP_SET_COD_SERVICE_CLASS: 792ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta /* clear out the bits that is not SERVICE_CLASS bits */ 793ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta p_cod->service &= BTM_COD_SERVICE_CLASS_MASK; 794ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta service = service | p_cod->service; 795ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta break; 796ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 797ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta case GAP_CLR_COD_SERVICE_CLASS: 798ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta p_cod->service &= BTM_COD_SERVICE_CLASS_MASK; 799ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta service = service & (~p_cod->service); 800ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta break; 801ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 802ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta case GAP_SET_COD_ALL: 803ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta minor = p_cod->minor & BTM_COD_MINOR_CLASS_MASK; 804ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta major = p_cod->major & BTM_COD_MAJOR_CLASS_MASK; 805ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta p_cod->service &= BTM_COD_SERVICE_CLASS_MASK; 806ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta service = service | p_cod->service; 807ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta break; 808ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 809ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta case GAP_INIT_COD: 810ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta minor = p_cod->minor & BTM_COD_MINOR_CLASS_MASK; 811ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta major = p_cod->major & BTM_COD_MAJOR_CLASS_MASK; 812ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta service = p_cod->service & BTM_COD_SERVICE_CLASS_MASK; 813ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta break; 814ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 815ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta default: 816ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta return GAP_ERR_ILL_PARM; 817ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta } 818ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 819ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta /* convert the fields into the device class type */ 820ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta FIELDS_TO_COD(dev_class, minor, major, service); 821ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 822ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta btm_status = BTM_SetDeviceClass(dev_class); 823ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta return (gap_convert_btm_status (btm_status)); 824ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta} 825ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 826ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/******************************************************************************* 827ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 828ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Function GAP_ReadDeviceClass 829ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 830ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Description This function reads the local Device Class. 831ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 832ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Parameters: 833ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 834ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Returns PASS 835ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 836ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta*******************************************************************************/ 837ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi BattaUINT16 GAP_ReadDeviceClass(tGAP_COD *p_cod) 838ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta{ 839ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta UINT8 *dev; 840ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 841ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta dev = BTM_ReadDeviceClass(); 842ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 843ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta BTM_COD_SERVICE_CLASS( p_cod->service, dev ); 844ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta BTM_COD_MINOR_CLASS( p_cod->minor, dev ); 845ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta BTM_COD_MAJOR_CLASS( p_cod->major, dev ); 846ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 847ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta return (BT_PASS); 848ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta} 849ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 850ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/******************************************************************************* 851ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 852ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Function GAP_SetTraceLevel 853ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 854ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Description This function sets the trace level for GAP. If called with 855ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** a value of 0xFF, it simply returns the current trace level. 856ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 857ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Returns The new or current trace level 858ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 859ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta*******************************************************************************/ 860ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi BattaUINT8 GAP_SetTraceLevel (UINT8 new_level) 861ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta{ 862ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta if (new_level != 0xFF) 863ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta gap_cb.trace_level = new_level; 864ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 865ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta return (gap_cb.trace_level); 866ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta} 867ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 868ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/******************************************************************************* 869ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 870ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Function GAP_Init 871ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 872ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Description Initializes the control blocks used by GAP. 873ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 874ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** This routine should not be called except once per 875ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** stack invocation. 876ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 877ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Returns Nothing 878ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 879ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta*******************************************************************************/ 880ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Battavoid GAP_Init(void) 881ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta{ 882ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta memset (&gap_cb, 0, sizeof (tGAP_CB)); 883ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 884ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta /*** Initialize the callbacks for BTM; Needs to be one per GAP_MAX_BLOCKS ***/ 885ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta gap_cb.btm_cback[0] = gap_btm_cback0; 886ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#if GAP_MAX_BLOCKS > 1 887ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta gap_cb.btm_cback[1] = gap_btm_cback1; 888ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#endif 889ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#if GAP_MAX_BLOCKS > 2 890ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta gap_cb.btm_cback[2] = gap_btm_cback2; 891ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#endif 892ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 893ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#if defined(GAP_INITIAL_TRACE_LEVEL) 894ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta gap_cb.trace_level = GAP_INITIAL_TRACE_LEVEL; 895ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#else 896ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta gap_cb.trace_level = BT_TRACE_LEVEL_NONE; /* No traces */ 897ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#endif 898ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 899ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta /* Initialize the connection control block if included in build */ 900ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#if GAP_CONN_INCLUDED == TRUE 901ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta gap_conn_init(); 902ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#endif /* GAP_CONN_INCLUDED */ 903ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 904ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#if BLE_INCLUDED == TRUE 905ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta gap_attr_db_init(); 906ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#endif 907ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta} 908ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 909