OSDN Git Service

DO NOT MERGE Fix unexpected behavior in smp_sm_event
[android-x86/system-bt.git] / stack / gap / gap_api.c
index e04fc8e..5518efd 100644 (file)
 #include "bt_target.h"
 #include "bt_utils.h"
 #include "gap_int.h"
-#include "btm_int.h"
-#include "gki.h"
-#include "btu.h"
 
-/*******************************************************************************
-**
-** Function         GAP_SetDiscoverableMode
-**
-** Description      This function is called to allow or disallow a service to
-**                  discovered (Inquiry Scans).
-**
-** Parameters:      mode        - GAP_NON_DISCOVERABLE, GAP_LIMITED_DISCOVERABLE,
-**                                  or GAP_GENERAL_DISCOVERABLE
-**
-**                  duration    - Amount of time for the duration of an inquiry scan.
-**                                The step size is in 0.625 msec intervals.
-**                                Range: 0x0012 - 0x1000 (11.25 - 2560 msecs)
-**
-**                                If a value of '0' is entered the default of
-**                                0x0012 (11.25 msecs) will be used.
-**                                Note: The duration must be less than or equal to
-**                                the interval.
-**
-**                  interval    - Amount of time between the start of two inquiry scans.
-**                                The step size is in 0.625 msec intervals.
-**                                Range: 0x0012 - 0x1000 (11.25 - 2560 msecs)
-**                                If a value of '0' is entered the default of
-**                                0x800 (1.28 secs) will be used.
-**
-**
-** Returns          BT_PASS (0) if successful,
-**                  GAP_ERR_ILL_PARM if a bad parameter is detected,
-**                  GAP_DEVICE_NOT_UP if the device is not active,
-**                  GAP_ERR_PROCESSING if not enough resources to carry out request
-**
-*******************************************************************************/
-UINT16 GAP_SetDiscoverableMode (UINT16 mode, UINT16 duration, UINT16 interval)
-{
-    tBTM_STATUS status;
-
-    status = BTM_SetDiscoverability(mode, duration, interval);
-
-    return (gap_convert_btm_status (status));
-}
-
-
-/*******************************************************************************
-**
-** Function         GAP_ReadDiscoverableMode
-**
-** Description      This function is called to retrieve the current discoverable mode
-**                  for the local device.
-**
-** Parameters:      duration    - pointer to the amount of time of an inquiry scan.
-**                                The step size is in 0.625 msec intervals.
-**                                Range: 0x0012 - 0x1000 (11.25 - 2560 msecs)
-**
-**                  interval    - pointer to the amount of time between the start of
-**                                two inquiry scans.
-**                                The step size is in 0.625 msec intervals.
-**                                Range: 0x0012 - 0x1000 (11.25 - 2560 msecs)
-**
-**
-** Returns          GAP_NON_DISCOVERABLE, GAP_LIMITED_DISCOVERABLE, or
-**                  GAP_GENERAL_DISCOVERABLE
-**
-*******************************************************************************/
-UINT16 GAP_ReadDiscoverableMode (UINT16 *duration, UINT16 *interval)
-{
-    return (BTM_ReadDiscoverability(duration, interval));
-}
-
-
-/*******************************************************************************
-**
-** Function         GAP_SetConnectableMode
-**
-** Description      This function is called to allow or disallow a
-**                  connections on the local device.
-**
-** Parameters:      mode        - GAP_NON_CONNECTABLE, GAP_CONNECTABLE,
-**
-**                  duration    - Amount of time for the duration of a page scan.
-**                                The step size is in 0.625 msec intervals.
-**                                Range: 0x0012 - 0x1000 (11.25 - 2560 msecs)
-**
-**                                If a value of '0' is entered the default of
-**                                0x0012 (11.25 msecs) will be used.
-**                                Note: The duration must be less than or equal to
-**                                the interval.
-**
-**                  interval    - Amount of time between the start of two page scans.
-**                                The step size is in 0.625 msec intervals.
-**                                Range: 0x0012 - 0x1000 (11.25 - 2560 msecs)
-**                                If a value of '0' is entered the default of
-**                                0x800 (1.28 secs) will be used.
-**
-**
-** Returns          BT_PASS (0) if successful,
-**                  GAP_ERR_ILL_PARM if a bad parameter is detected,
-**                  GAP_DEVICE_NOT_UP if the device is not active,
-**                  GAP_ERR_PROCESSING if not enough resources to carry out request
-**
-*******************************************************************************/
-UINT16 GAP_SetConnectableMode (UINT16 mode, UINT16 duration, UINT16 interval)
-{
-    tBTM_STATUS status;
-
-    status = BTM_SetConnectability(mode, duration, interval);
-
-    return (gap_convert_btm_status (status));
-}
-
-
-/*******************************************************************************
-**
-** Function         GAP_FindAddrByName
-**
-** Description      This function is called to retrieve a device address given
-**                  a device name.  It first looks in the current local inquiry
-**                  database for the device with the specified name.  If not found
-**                  it initiates a general inquiry.  Upon completion, it retrieves
-**                  the name for each device until a match is found or all devices
-**                  have been checked.  Note:  This process can take a while to
-**                  complete.
-**
-** Parameters:      devname -
-**
-**                  inqparms - pointer to the inquiry information
-**                      mode - GAP_GENERAL_INQUIRY or GAP_LIMITED_INQUIRY inquiry
-**                      duration - length in 1.28 sec intervals
-**                      max_resps - maximum amount of devices to search for before ending the inquiry
-**                      filter_cond_type - GAP_CLR_INQUIRY_FILTER, GAP_FILTER_COND_DEVICE_CLASS, or
-**                                         GAP_FILTER_COND_BD_ADDR
-**                      filter_cond - value for the filter (based on filter_cond_type)
-**
-**
-** Returns          BT_PASS if the name was immediately available.  (BD_ADDR is returned)
-**                  GAP_CMD_INITIATED if an inquiry has been initiated
-**
-*******************************************************************************/
-UINT16 GAP_FindAddrByName (BD_NAME devname, tGAP_INQ_PARMS *p_inq_parms, tGAP_CALLBACK *p_addr_cb,
-                           BD_ADDR bd_addr)
-{
-    UINT16           status;
-    tBTM_STATUS      btm_status;
-
-
-    /* If the remote name is retrieved automatically during an inquiry search the local db first */
-    if ((status = gap_find_local_addr_by_name (devname, bd_addr)) != BT_PASS)
-    {
-        /* If this code is used, the name wasn't in the current inquiry database */
-        /* A general inquiry must now be initiated */
-        if (gap_cb.findaddr_cb.in_use == FALSE)
-        {
-            gap_cb.findaddr_cb.p_cback = p_addr_cb;
-            gap_cb.findaddr_cb.p_cur_inq = (tBTM_INQ_INFO *) NULL;     /* Reset to the beginning of the database */
-            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);
-
-            /* make sure we have an end of string char */
-            gap_cb.findaddr_cb.results.devname[BTM_MAX_REM_BD_NAME_LEN] = 0;
-
-            btm_status = BTM_StartInquiry (p_inq_parms, (tBTM_INQ_RESULTS_CB *) NULL,
-                    (tBTM_CMPL_CB *) gap_find_addr_inq_cb);
-                gap_cb.findaddr_cb.in_use = TRUE;
-
-            /* convert the error code into a GAP code and check the results for any errors */
-            if ((status = gap_convert_btm_status (btm_status)) == GAP_CMD_INITIATED)
-                gap_cb.findaddr_cb.in_use = TRUE;
-        }
-        else
-            status = GAP_ERR_BUSY;
-    }
-
-    return (status);
-}
-
-
-/*******************************************************************************
-**
-** Function         GAP_ReadConnectableMode
-**
-** Description      This function is called to retrieve the current connectability
-**                  mode for the local device.
-**
-** Parameters:      duration    - pointer to the amount of time of an page scan.
-**                                The step size is in 0.625 msec intervals.
-**                                Range: 0x0012 - 0x1000 (11.25 - 2560 msecs)
-**
-**                  interval    - pointer to the amount of time between the start of
-**                                two page scans.
-**                                The step size is in 0.625 msec intervals.
-**                                Range: 0x0012 - 0x1000 (11.25 - 2560 msecs)
-**
-**
-** Returns          GAP_NON_CONNECTABLE, GAP_CONNECTABLE
-**
-*******************************************************************************/
-
-UINT16 GAP_ReadConnectableMode (UINT16 *duration, UINT16 *interval)
-{
-    return (BTM_ReadConnectability(duration, interval));
-}
-
-
-/*******************************************************************************
-**
-** Function         GAP_SetSecurityMode
-**
-** Description      Set security mode for the device
-**
-** Returns          void
-**
-*******************************************************************************/
-void GAP_SetSecurityMode (UINT8 sec_mode)
-{
-    BTM_SetSecurityMode (sec_mode);
-}
-
-
-/*******************************************************************************
-**
-** Function         GAP_Bond
-**
-** Description      This function is called to perform bonding with peer device
-**
-** Parameters:      bd_addr      - Address of the device to bond
-**                  pin_len      - length in bytes of the PIN Code
-**                  p_pin        - pointer to array with the PIN Code
-**                  trusted_mask - bitwise OR of trusted services (array of UINT32)
-**
-*******************************************************************************/
-UINT8 GAP_Bond (BD_ADDR bd_addr, UINT8 pin_len, UINT8 *p_pin, UINT32 trusted_mask[])
-{
-    return ((UINT8) BTM_SecBond (bd_addr, pin_len, p_pin, trusted_mask));
-}
-
-
-/*******************************************************************************
-**
-** Function         GAP_SecRegister
-**
-** Description      Application manager calls this function to register for
-**                  security services.  There can be one and only one application
-**                  saving link keys.  BTM allows only first registration.
-**
-** Returns          TRUE if registered OK, else FALSE
-**
-*******************************************************************************/
-BOOLEAN  GAP_SecRegister (tBTM_APPL_INFO *p_cb_info)
-{
-    return (BTM_SecRegister (p_cb_info));
-}
-
-
-/*******************************************************************************
-**
-** Function         GAP_PinRsp
-**
-** Description      This function is called from UI after Security Manager submitted
-**                  PIN code request.
-**
-** Parameters:      bd_addr      - Address of the device for which PIN was requested
-**                  res          - result of the operation BTM_SUCCESS if success
-**                  pin_len      - length in bytes of the PIN Code
-**                  p_pin        - pointer to array with the PIN Code
-**                  trusted_mask - bitwise OR of trusted services (array of UINT32)
-**
-*******************************************************************************/
-void GAP_PinRsp (BD_ADDR bd_addr, UINT8 res, UINT8 pin_len, UINT8 *p_pin, UINT32 trusted_mask[])
-{
-    BTM_PINCodeReply (bd_addr, res, pin_len, p_pin, trusted_mask);
-}
-
-
-/*******************************************************************************
-**
-** Function         GAP_AuthorizeRsp
-**
-** Description      This function is called from UI after Security Manager submitted
-**                  authorization request
-**
-** Parameters:      bd_addr      - Address of the device for which PIN was requested
-**                  res          - result of the operation BTM_SUCCESS if success
-**                  trusted_mask - bitwise OR of trusted services (array of UINT32)
-**
-*******************************************************************************/
-void GAP_AuthorizeRsp (BD_ADDR bd_addr, UINT8 res, UINT32 trusted_mask[])
-{
-    BTM_DeviceAuthorized (bd_addr, res, trusted_mask);
-}
-
-
-/*******************************************************************************
-**
-** Function         GAP_SetPairableMode
-**
-** Description      This function is called to allow or disallow pairing
-**                  on the local device.
-**
-** Parameters:      mode        - GAP_ALLOW_PAIRING, GAP_DISALLOW_PAIRING
-**                  connect_only_pairable - TRUE or FALSE connect only to paired devices
-**
-**                  callback    - The callback is called when a pin number is requested.
-**
-** Returns          BT_PASS (0) if successful, or a non-zero error code
-**
-*******************************************************************************/
-
-UINT16 GAP_SetPairableMode (UINT16 mode, BOOLEAN connect_only_paired)
-{
-    tBTM_STATUS btm_status;
-    UINT16      status = BT_PASS;
-
-    if (mode == GAP_ALLOW_PAIRING)
-    {
-        btm_status = BTM_SetConnectability(BTM_CONNECTABLE, 0, 0);
-
-        if ((status = gap_convert_btm_status (btm_status)) == BT_PASS)
-            BTM_SetPairableMode (TRUE, connect_only_paired);
-    }
-    else if (mode == GAP_DISALLOW_PAIRING)
-    {
-        BTM_SetPairableMode (FALSE, connect_only_paired);
-    }
-    else
-    {
-        GAP_TRACE_ERROR1 ("GAP_SetPairableMode: illegal mode %d", mode);
-        status = GAP_ERR_ILL_MODE;
-    }
-    return (status);
-}
-
-
-/*******************************************************************************
-**
-** Function         GAP_StartInquiry
-**
-** Description      This function initiates a single inquiry.
-**
-** Parameters:      p_inqparms - pointer to the inquiry information
-**                      mode - GAP_GENERAL_INQUIRY or GAP_LIMITED_INQUIRY inquiry
-**                      duration - length in 1.28 sec intervals
-**                      max_resps - maximum amount of devices to search for before ending the inquiry
-**                      filter_cond_type - GAP_CLR_INQUIRY_FILTER, GAP_FILTER_COND_DEVICE_CLASS, or
-**                                         GAP_FILTER_COND_BD_ADDR
-**                      filter_cond - value for the filter (based on filter_cond_type)
-**
-**                  p_results_cb - Pointer to the callback routine which gets called
-**                                 upon receipt of an inquiry result. If this field is
-**                                 NULL, the application is not notified.
-**
-**                  p_cmpl_cb   - Pointer to the callback routine which gets called
-**                                upon completion.  If this field is NULL, the
-**                                application is not notified when completed.
-**
-**
-** Returns          BT_PASS (0) if successful,
-**                  GAP_ERR_ILL_MODE if a bad mode parameter was passed
-**                  GAP_ERR_ILL_INQ_TIME if a bad interval or duration was passed
-**                  GAP_ERR_NO_CTRL_BLK if out of control blocks
-**                  GAP_ERR_ILL_PARM if a bad parameter was detected in BTM
-**                  GAP_ERR_BUSY if the device already has an iquiry active
-**                  GAP_DEVICE_NOT_UP if the device is not initialized yet
-**                  GAP_ERR_PROCESSING if any other BTM error was returned
-**
-*******************************************************************************/
-UINT16 GAP_StartInquiry (tGAP_INQ_PARMS *p_inq_parms, tGAP_CALLBACK *p_results_cb, tGAP_CALLBACK *p_cmpl_cb)
-{
-    tGAP_INFO   *p_cb;
-    tBTM_STATUS  btm_status;
-    UINT16       retval;
-
-    /*** Make sure the parameters are valid before continuing ***/
-    if (p_inq_parms->mode != GAP_GENERAL_INQUIRY && p_inq_parms->mode != GAP_LIMITED_INQUIRY)
-        return (GAP_ERR_ILL_MODE);
-
-    if (p_inq_parms->duration < GAP_MIN_INQUIRY_LEN   ||
-        p_inq_parms->duration > GAP_MAX_INQUIRY_LENGTH)
-        return (GAP_ERR_ILL_INQ_TIME);
-
-    /*** get a control block for this operation ***/
-    if ((p_cb = gap_allocate_cb()) != NULL)
-    {
-        p_cb->gap_cback = p_cmpl_cb;
-        p_cb->gap_inq_rslt_cback = p_results_cb;
-        p_cb->event = GAP_EVT_INQUIRY_COMPLETE; /* Return event expected */
-
-        btm_status = BTM_StartInquiry(p_inq_parms, gap_inq_results_cb,
-                        (tBTM_CMPL_CB *) gap_cb.btm_cback[p_cb->index]);
-
-        /* convert the error code into a GAP code and check the results for any errors */
-        if ((retval = gap_convert_btm_status (btm_status)) != GAP_CMD_INITIATED)
-            gap_free_cb(p_cb);      /* Error starting the inquiry */
-    }
-    else
-        retval = GAP_ERR_NO_CTRL_BLK;
-
-    return (retval);
-}
-
-
-/*******************************************************************************
-**
-** Function         GAP_StartPeriodicInquiry
-**
-** Description      This function initiates a periodic inquiry.
-**
-** Parameters:      p_inqparms - pointer to the inquiry information
-**                      mode - GAP_GENERAL_INQUIRY or GAP_LIMITED_INQUIRY inquiry
-**                      duration - length in 1.28 sec intervals
-**                      max_resps - maximum amount of devices to search for before ending the inquiry
-**                      filter_cond_type - GAP_CLR_INQUIRY_FILTER, GAP_FILTER_COND_DEVICE_CLASS, or
-**                                         GAP_FILTER_COND_BD_ADDR
-**                      filter_cond - value for the filter (based on filter_cond_type)
-**
-**                  min_time    - Minimum amount of time between consecutive inquiries.
-**                                The value is in 1.28 second intervals.
-**                                Range: 0x0002 - 0xFFFE (2.56 - 83883.52 seconds)
-**
-**                  max_time    - Maximum amount of time between consecutive inquiries.
-**                                The value is in 1.28 sec intervals.
-**                                Range: 0x0003 - 0xFFFF (3.84 - 83884.8 seconds)
-**
-**                  p_results_cb - Pointer to the callback routine which gets called
-**                                 upon receipt of an inquiry result. If this field is
-**                                 NULL, the application is not notified.
-**
-**
-** Returns          BT_PASS (0) if successful,
-**                  GAP_ERR_ILL_MODE if a bad mode parameter was passed
-**                  GAP_ERR_ILL_INQ_TIME if a bad interval or duration was passed
-**                  GAP_ERR_NO_CTRL_BLK if out of control blocks
-**                  GAP_ERR_ILL_PARM if a bad parameter was detected in BTM
-**                  GAP_ERR_BUSY if the device already has an iquiry active
-**                  GAP_DEVICE_NOT_UP if the device is not initialized yet
-**                  GAP_ERR_PROCESSING if any other BTM error was returned
-**
-*******************************************************************************/
-
-UINT16 GAP_StartPeriodicInquiry (tGAP_INQ_PARMS *p_inq_parms, UINT16 min_time,
-                                 UINT16 max_time, tGAP_CALLBACK *p_results_cb)
-{
-    tGAP_INFO   *p_cb;
-    tBTM_STATUS  btm_status;
-    UINT16       retval = BT_PASS;
-
-    /*** Make sure the parameters are valid before continuing ***/
-    if (p_inq_parms->mode != GAP_GENERAL_INQUIRY && p_inq_parms->mode != GAP_LIMITED_INQUIRY)
-        return (GAP_ERR_ILL_MODE);
-
-    if (p_inq_parms->duration < GAP_MIN_INQUIRY_LEN     ||
-        p_inq_parms->duration > GAP_MAX_INQUIRY_LENGTH  ||
-        min_time <= p_inq_parms->duration               ||
-        min_time < GAP_PER_INQ_MIN_MIN_PERIOD           ||
-        min_time > GAP_PER_INQ_MAX_MIN_PERIOD           ||
-        max_time <= min_time                            ||
-        max_time < GAP_PER_INQ_MIN_MAX_PERIOD)
-    {
-        return (GAP_ERR_ILL_INQ_TIME);
-    }
-
-    /*** get a control block for this operation ***/
-    if ((p_cb = gap_allocate_cb()) != NULL)
-    {
-        p_cb->gap_inq_rslt_cback = p_results_cb;
-        p_cb->event = GAP_EVT_INQUIRY_COMPLETE; /* mark the inquiry event active */
-
-        btm_status = BTM_SetPeriodicInquiryMode(p_inq_parms, max_time, min_time,
-                                                gap_inq_results_cb);
-
-        /* convert the error code into a GAP code and check the results for any errors */
-        if ((retval = gap_convert_btm_status (btm_status)) != GAP_CMD_INITIATED)
-            gap_free_cb(p_cb);      /* Error starting the inquiry */
-    }
-    else
-        retval = GAP_ERR_NO_CTRL_BLK;
-
-    return (retval);
-}
-
-
-/*******************************************************************************
-**
-** Function         GAP_CancelInquiry
-**
-** Description      This function cancels a single inquiry (if in progress)
-**
-** Parameters:      None
-**
-** Returns          BOOLEAN (TRUE if successful, otherwise FALSE)
-**
-*******************************************************************************/
-UINT16 GAP_CancelInquiry(void)
-{
-    tGAP_INFO   *p_cb = &gap_cb.blk[0];
-    UINT8        x;
-    tBTM_STATUS  btm_status;
-    UINT16       status;
-
-    btm_status = BTM_CancelInquiry();
-    if ((status = gap_convert_btm_status (btm_status)) == BT_PASS)
-    {
-        /* Free the control block that is waiting for the inquiry complete event */
-        for (x = 0; x < GAP_MAX_BLOCKS; x++, p_cb++)
-        {
-            if (p_cb->in_use && p_cb->event == GAP_EVT_INQUIRY_COMPLETE)
-            {
-                gap_free_cb(p_cb);
-                return (BT_PASS);
-            }
-        }
-
-        /* If here the control block was not found */
-        status = GAP_ERR_NO_CTRL_BLK;
-    }
-
-    return (status);
-}
-
-
-/*******************************************************************************
-**
-** Function         GAP_CancelPeriodicInquiry
-**
-** Description      This function cancels a periodic inquiry (if in progress)
-**
-** Parameters:      None
-**
-** Returns          BOOLEAN: (TRUE if successful, otherwise FALSE)
-**
-*******************************************************************************/
-UINT16 GAP_CancelPeriodicInquiry(void)
-{
-    tGAP_INFO   *p_cb = &gap_cb.blk[0];
-    UINT8        x;
-    tBTM_STATUS  btm_status;
-    UINT16       status;
-
-    btm_status = BTM_CancelPeriodicInquiry();
-    if ((status = gap_convert_btm_status (btm_status)) == BT_PASS)
-    {
-        /* Free the control block that is waiting for the inquiry complete event */
-        for (x = 0; x < GAP_MAX_BLOCKS; x++, p_cb++)
-        {
-            if (p_cb->in_use && p_cb->event == GAP_EVT_INQUIRY_COMPLETE)
-            {
-                gap_free_cb(p_cb);
-                return (BT_PASS);
-            }
-        }
-
-        /* If here the control block was not found */
-        status = GAP_ERR_NO_CTRL_BLK;
-    }
-
-    return (status);
-}
-
-
-/*******************************************************************************
-**
-** Function         GAP_GetFirstInquiryResult
-**
-** Description      This function retrieves the first valid inquiry result.
-**
-** Parameters:      p_results - pointer to the inquiry results
-**
-** Returns          BT_PASS (0) if successful, or a non-zero error code
-**                  GAP_EOINQDB if no more entries in the database.
-**
-*******************************************************************************/
-UINT16 GAP_GetFirstInquiryResult(tGAP_INQ_RESULTS *p_results)
-{
-    UINT8 *ptr;
-
-    gap_cb.cur_inqptr = BTM_InqFirstResult();
-
-    if (gap_cb.cur_inqptr != NULL)
-    {
-        memcpy(p_results, &gap_cb.cur_inqptr->results, sizeof(tBTM_INQ_RESULTS));
-
-        ptr = (UINT8 *)gap_cb.cur_inqptr->results.remote_bd_addr;
-        GAP_TRACE_EVENT6("GAP_GetFirstInqResult %02x%02x%02x%02x%02x%02x",
-                    ptr[0],ptr[1],ptr[2],ptr[3],ptr[4],ptr[5]);
-        return(BT_PASS);
-    }
-    else
-    {
-        GAP_TRACE_EVENT0("GAP_FirstInqResults:  No BD_ADDRs Found");
-        memset(p_results, 0, sizeof(tBTM_INQ_RESULTS));
-        return(GAP_EOINQDB);
-    }
-}
-
-
-/*******************************************************************************
-**
-** Function         GAP_GetNextInquiryResult
-**
-** Description      This function retrieves the next valid inquiry result.
-**
-** Parameters:      p_results  - pointer to the inquiry results
-**
-** Returns          BT_PASS (0) if successful, or a non-zero status code
-**                  GAP_EOINQDB if no more entries in the database.
-**
-*******************************************************************************/
-UINT16 GAP_GetNextInquiryResult(tGAP_INQ_RESULTS *p_results)
-{
-    UINT8 *ptr;
-
-    /*** if the current inquiry db pointer is NULL then call the first entry ***/
-    if (gap_cb.cur_inqptr)
-    {
-        gap_cb.cur_inqptr = BTM_InqNextResult(gap_cb.cur_inqptr);
-        if (gap_cb.cur_inqptr != NULL)
-        {
-            memcpy(p_results, &gap_cb.cur_inqptr->results,
-                   sizeof(tGAP_INQ_RESULTS));
-
-            ptr = (UINT8 *)gap_cb.cur_inqptr->results.remote_bd_addr;
-            GAP_TRACE_EVENT6("GAP_GetNextInqResult %02x%02x%02x%02x%02x%02x",
-                        ptr[0],ptr[1],ptr[2],ptr[3],ptr[4],ptr[5]);
-
-            return(BT_PASS);
-        }
-        else
-        {
-            GAP_TRACE_EVENT0("GAP_NextInqResults:  No BD_ADDRs Found");
-            memset(p_results, 0, sizeof(tBTM_INQ_RESULTS));
-            return(GAP_EOINQDB);
-        }
-    }
-    else
-        return (GAP_GetFirstInquiryResult(p_results));
-}
-
-
-/*******************************************************************************
-**
-** Function         GAP_ReadLocalDeviceInfo
-**
-** Description      This function retrieves local device information to the caller.
-**
-** Parameters:      name        - (output) pointer to the UTF-8 encoded string representing
-**                                the device name.
-**
-**                  addr        - (output) pointer to the Bluetooth device address (BD_ADDR).
-**
-**                  verinfo     - (output) pointer to the LMP version information.
-**
-**                  features    - (output) pointer to the LMP features for the device.
-**
-**                  NOTE:  Return parameters that are set to NULL are not retrieved.
-**
-** Returns          BT_PASS (0) if successful, or a non-zero error code
-**
-*******************************************************************************/
-
-UINT16 GAP_ReadLocalDeviceInfo(UINT8 *name, BD_ADDR *addr, tGAP_LMP_VERSION *verinfo,
-                               tGAP_LMP_FEATURES *features)
-{
-    UNUSED(name);
-    UNUSED(addr);
-    UNUSED(verinfo);
-    UNUSED(features);
-    return (GAP_UNSUPPORTED);
-}
-
-
-
-/*******************************************************************************
-**
-** Function         GAP_GetRemoteDeviceName
-**
-** Description      The remote name is retrieved from the specified remote device.  If
-**                  GAP_CMD_INITIATED is returned by the function, the command was
-**                  successfully sent to the controller.  The GAP_EVT_NAME_RESP event
-**                  is passed in the callback when the remote device name has been retrieved.
-**
-** Parameters:      addr        - The Bluetooth device address (BD_ADDR) of the remote
-**                                device.
-**
-**                  callback    - pointer to the callback which is called after the
-**                                remote device has been retrieved.
-**                                p_data in the callback points to the structure containing the
-**                                status, device name length, and the UTF-8 encoded
-**                                device name. (type tBTM_REMOTE_DEV_NAME)
-**                                The event field in the callback is set to GAP_EVT_REM_NAME_COMPLETE.
-**  The callback is not called unless (GAP_CMD_INITIATED) is returned.
-**
-**
-** Returns
-**                  GAP_CMD_INITIATED if remote search successfully initiated
-**                  GAP_ERR_BUSY if a remote name request is already in progress,
-**                  GAP_ERR_NO_CTRL_BLK if out of control blocks (too many commands pending)
-**                  GAP_BAD_BD_ADDR if the device address is bad,
-**                  GAP_DEVICE_NOT_UP if the device has not been initialized yet
-**                  GAP_ERR_PROCESSING if any other BTM error has been returned
-**
-*******************************************************************************/
-UINT16 GAP_GetRemoteDeviceName (BD_ADDR addr, tGAP_CALLBACK *callback)
-{
-    tGAP_INFO   *p_cb;
-    UINT16       retval;
-    tBTM_STATUS  btm_status;
-
-    if ((p_cb = gap_allocate_cb()) != NULL)
-    {
-        p_cb->gap_cback = callback;
-        p_cb->event = GAP_EVT_REM_NAME_COMPLETE;     /* Return event expected */
-
-        btm_status = BTM_ReadRemoteDeviceName (addr, gap_cb.btm_cback[p_cb->index], BT_TRANSPORT_BR_EDR);
-
-        /* If the name was not returned immediately, or if an error occurred, release the control block */
-        if ((retval = gap_convert_btm_status (btm_status)) != GAP_CMD_INITIATED)
-            gap_free_cb (p_cb);
-    }
-    else
-        retval = GAP_ERR_NO_CTRL_BLK;
-
-    return (retval);
-}
-
-/*******************************************************************************
-**
-** Function         GAP_SetDeviceClass
-**
-** Description      This function updates the local Device Class.
-**
-** Parameters:
-**                  p_cod   - Pointer to the device class to set to
-**
-**                  cmd     - the fields of the device class to update.
-**                            GAP_SET_COD_MAJOR_MINOR, - overwrite major, minor class
-**                            GAP_SET_COD_SERVICE_CLASS - set the bits in the input
-**                            GAP_CLR_COD_SERVICE_CLASS - clear the bits in the input
-**                            GAP_SET_COD_ALL - overwrite major, minor, set the bits in service class
-**                            GAP_INIT_COD - overwrite major, minor, and service class
-**
-** Returns          BT_PASS (0) if successful,
-**                  GAP_ERR_BUSY if a discovery is already in progress
-**                  GAP_ERR_ILL_PARM if an illegal parameter was detected
-**                  GAP_ERR_PROCESSING if any other BTM error has been returned
-**
-*******************************************************************************/
-UINT16 GAP_SetDeviceClass(tGAP_COD *p_cod, UINT8 cmd)
-{
-    tBTM_STATUS btm_status;
-    UINT8 *dev;
-    UINT16 service;
-    UINT8  minor, major;
-    DEV_CLASS dev_class;
-
-    dev = BTM_ReadDeviceClass();
-    BTM_COD_SERVICE_CLASS( service, dev );
-    BTM_COD_MINOR_CLASS(minor, dev );
-    BTM_COD_MAJOR_CLASS(major, dev );
-
-    switch(cmd)
-    {
-    case GAP_SET_COD_MAJOR_MINOR:
-        minor = p_cod->minor & BTM_COD_MINOR_CLASS_MASK;
-        major = p_cod->major & BTM_COD_MAJOR_CLASS_MASK;
-        break;
-
-    case GAP_SET_COD_SERVICE_CLASS:
-        /* clear out the bits that is not SERVICE_CLASS bits */
-        p_cod->service &= BTM_COD_SERVICE_CLASS_MASK;
-        service = service | p_cod->service;
-        break;
-
-    case GAP_CLR_COD_SERVICE_CLASS:
-        p_cod->service &= BTM_COD_SERVICE_CLASS_MASK;
-        service = service & (~p_cod->service);
-        break;
-
-    case GAP_SET_COD_ALL:
-        minor = p_cod->minor & BTM_COD_MINOR_CLASS_MASK;
-        major = p_cod->major & BTM_COD_MAJOR_CLASS_MASK;
-        p_cod->service &= BTM_COD_SERVICE_CLASS_MASK;
-        service = service | p_cod->service;
-        break;
-
-    case GAP_INIT_COD:
-        minor = p_cod->minor & BTM_COD_MINOR_CLASS_MASK;
-        major = p_cod->major & BTM_COD_MAJOR_CLASS_MASK;
-        service = p_cod->service & BTM_COD_SERVICE_CLASS_MASK;
-        break;
-
-    default:
-        return GAP_ERR_ILL_PARM;
-    }
-
-    /* convert the fields into the device class type */
-    FIELDS_TO_COD(dev_class, minor, major, service);
-
-    btm_status = BTM_SetDeviceClass(dev_class);
-    return (gap_convert_btm_status (btm_status));
-}
-
-/*******************************************************************************
-**
-** Function         GAP_ReadDeviceClass
-**
-** Description      This function reads the local Device Class.
-**
-** Parameters:
-**
-** Returns          PASS
-**
-*******************************************************************************/
-UINT16   GAP_ReadDeviceClass(tGAP_COD *p_cod)
-{
-    UINT8 *dev;
-
-    dev = BTM_ReadDeviceClass();
-
-    BTM_COD_SERVICE_CLASS( p_cod->service, dev );
-    BTM_COD_MINOR_CLASS( p_cod->minor, dev );
-    BTM_COD_MAJOR_CLASS( p_cod->major, dev );
-
-    return (BT_PASS);
-}
+tGAP_CB  gap_cb;
 
 /*******************************************************************************
 **
@@ -881,25 +58,15 @@ void GAP_Init(void)
 {
     memset (&gap_cb, 0, sizeof (tGAP_CB));
 
-    /*** Initialize the callbacks for BTM; Needs to be one per GAP_MAX_BLOCKS ***/
-    gap_cb.btm_cback[0] = gap_btm_cback0;
-#if GAP_MAX_BLOCKS > 1
-    gap_cb.btm_cback[1] = gap_btm_cback1;
-#endif
-#if GAP_MAX_BLOCKS > 2
-    gap_cb.btm_cback[2] = gap_btm_cback2;
-#endif
-
 #if defined(GAP_INITIAL_TRACE_LEVEL)
     gap_cb.trace_level = GAP_INITIAL_TRACE_LEVEL;
 #else
     gap_cb.trace_level = BT_TRACE_LEVEL_NONE;    /* No traces */
 #endif
 
-    /* Initialize the connection control block if included in build */
 #if GAP_CONN_INCLUDED == TRUE
     gap_conn_init();
-#endif  /* GAP_CONN_INCLUDED */
+#endif
 
 #if BLE_INCLUDED == TRUE
     gap_attr_db_init();