bta_pan_api.cc revision f355ef5a4d7fb667fc57a0dfb60f738d870e252e
15738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************
25738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *
35738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  Copyright (C) 2004-2012 Broadcom Corporation
45738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *
55738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  Licensed under the Apache License, Version 2.0 (the "License");
65738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  you may not use this file except in compliance with the License.
75738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  You may obtain a copy of the License at:
85738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *
95738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  http://www.apache.org/licenses/LICENSE-2.0
105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *
115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  See the License for the specific language governing permissions and
155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  limitations under the License.
165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *
175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ******************************************************************************/
185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************
205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *
215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  This is the implementation of the API for PAN subsystem of BTA,
225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  Broadcom's Bluetooth application layer for mobile phones.
235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *
245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ******************************************************************************/
25f355ef5a4d7fb667fc57a0dfb60f738d870e252eMyles Watson#include <string.h>
265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bt_target.h"
285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_api.h"
305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_sys.h"
315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "pan_api.h"
32258c2538e3b62a8cdb403f2730c45d721e5292b4Pavlin Radoslavov#include "bt_common.h"
335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_pan_api.h"
345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_pan_int.h"
353576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chen#include "bt_utils.h"
36d7ffd64accbd50a27289a388856e56244ccbb5daMyles Watson#include "osi/include/osi.h"
373576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chen
38e9e58ced195ec2c983c7723c9cbdabd45eb0f2fdMarie Janssen#if (BTA_PAN_INCLUDED == TRUE)
395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectstatic const tBTA_SYS_REG bta_pan_reg =
415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    bta_pan_hdl_event,
435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_PanDisable
445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project};
455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
478af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson *
488af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function         BTA_PanEnable
498af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson *
508af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description      Enable PAN service.  This function must be
518af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson *                  called before any other functions in the PAN API are called.
528af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson *                  When the enable operation is complete the callback function
538af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson *                  will be called with a BTA_PAN_ENABLE_EVT.
548af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson *
558af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns          void
568af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson *
578af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/
585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_PanEnable(tBTA_PAN_CBACK p_cback)
595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
60717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    tBTA_PAN_API_ENABLE *p_buf =
61717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        (tBTA_PAN_API_ENABLE *)osi_malloc(sizeof(tBTA_PAN_API_ENABLE));
625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    /* register with BTA system manager */
645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    bta_sys_register(BTA_ID_PAN, &bta_pan_reg);
655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
66717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->hdr.event = BTA_PAN_API_ENABLE_EVT;
67717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->p_cback = p_cback;
685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
69717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    bta_sys_sendmsg(p_buf);
705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
758af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson *
768af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function         BTA_PanDisable
778af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson *
788af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description      Disables PAN service.
798af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson *
808af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson *
818af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns          void
828af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson *
838af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/
845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_PanDisable(void)
855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
86717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    bta_sys_deregister(BTA_ID_PAN);
89717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->event = BTA_PAN_API_DISABLE_EVT;
90717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov
91717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    bta_sys_sendmsg(p_buf);
925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
958af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson *
968af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function         BTA_PanSetRole
978af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson *
988af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description      Sets PAN roles. When the enable operation is complete
998af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson *                  the callback function will be called with a BTA_PAN_SET_ROLE_EVT.
1008af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson *
1018af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns          void
1028af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson *
1038af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/
1045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_PanSetRole(tBTA_PAN_ROLE role, tBTA_PAN_ROLE_INFO *p_user_info, tBTA_PAN_ROLE_INFO *p_gn_info,
1055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project                                        tBTA_PAN_ROLE_INFO *p_nap_info)
1065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
107717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    tBTA_PAN_API_SET_ROLE  *p_buf =
10817a8221910d4f5ed99f2585aa41390aa80d50f4fSharvil Nanavati        (tBTA_PAN_API_SET_ROLE *)osi_calloc(sizeof(tBTA_PAN_API_SET_ROLE));
1095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
110717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->hdr.event = BTA_PAN_API_SET_ROLE_EVT;
111717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->role = role;
1125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
113717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    if (p_user_info && (role & BTA_PAN_ROLE_PANU)) {
114717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        if (p_user_info->p_srv_name)
115717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov            strlcpy(p_buf->user_name, p_user_info->p_srv_name, BTA_SERVICE_NAME_LEN);
1165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
117717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        p_buf->user_app_id = p_user_info->app_id;
118717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        p_buf->user_sec_mask = p_user_info->sec_mask;
119717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    }
1205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
121717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    if (p_gn_info && (role & BTA_PAN_ROLE_GN)) {
122717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        if (p_gn_info->p_srv_name)
123717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov            strlcpy(p_buf->gn_name, p_gn_info->p_srv_name, BTA_SERVICE_NAME_LEN);
1245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
125717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        p_buf->gn_app_id = p_gn_info->app_id;
126717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        p_buf->gn_sec_mask = p_gn_info->sec_mask;
127717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    }
1285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
129717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    if (p_nap_info && (role & BTA_PAN_ROLE_NAP)) {
130717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov      if (p_nap_info->p_srv_name)
131717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov          strlcpy(p_buf->nap_name, p_nap_info->p_srv_name, BTA_SERVICE_NAME_LEN);
1325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
133717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov      p_buf->nap_app_id = p_nap_info->app_id;
134717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov      p_buf->nap_sec_mask = p_nap_info->sec_mask;
1355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
137717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov
138717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    bta_sys_sendmsg(p_buf);
1395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
1405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
1428af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson *
1438af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function         BTA_PanOpen
1448af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson *
1458af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description      Opens a connection to a peer device.
1468af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson *                  When connection is open callback function is called
1478af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson *                  with a BTA_PAN_OPEN_EVT.
1488af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson *
1498af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson *
1508af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns          void
1518af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson *
1528af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/
15324933b5b1a06274c47133debac5251a97128a267June R. Tate-Gansvoid BTA_PanOpen(BD_ADDR bd_addr, tBTA_PAN_ROLE    local_role, tBTA_PAN_ROLE    peer_role)
1545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
155717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    tBTA_PAN_API_OPEN *p_buf =
156717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        (tBTA_PAN_API_OPEN *)osi_malloc(sizeof(tBTA_PAN_API_OPEN));
1575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
158717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->hdr.event = BTA_PAN_API_OPEN_EVT;
159717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->local_role = local_role;
160717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->peer_role = peer_role;
161717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    bdcpy(p_buf->bd_addr, bd_addr);
1625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
163717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    bta_sys_sendmsg(p_buf);
1645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
1655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
1678af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson *
1688af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function         BTA_PanClose
1698af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson *
1708af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description      Close a PAN  connection to a peer device.
1718af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson *
1728af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson *
1738af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns          void
1748af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson *
1758af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/
176e9e58ced195ec2c983c7723c9cbdabd45eb0f2fdMarie Janssenvoid BTA_PanClose(uint16_t handle)
1775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
178717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
1795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
180717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->event = BTA_PAN_API_CLOSE_EVT;
181717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->layer_specific = handle;
182717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov
183717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    bta_sys_sendmsg(p_buf);
1845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
1853576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chen#else
1863576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chen
187d35a648d39710bbc5ac59f8add85166455af5af7Myles Watsonvoid BTA_PanEnable(UNUSED_ATTR tBTA_PAN_CBACK p_cback)
1883576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chen{
1893576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chen}
1903576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chen
1913576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chenvoid BTA_PanDisable(void)
1923576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chen{
1933576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chen}
1943576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chen
195d35a648d39710bbc5ac59f8add85166455af5af7Myles Watsonvoid BTA_PanSetRole(UNUSED_ATTR tBTA_PAN_ROLE role, UNUSED_ATTR tBTA_PAN_ROLE_INFO *p_user_info, UNUSED_ATTR tBTA_PAN_ROLE_INFO *p_gn_info,
196d35a648d39710bbc5ac59f8add85166455af5af7Myles Watson                    UNUSED_ATTR tBTA_PAN_ROLE_INFO *p_nap_info)
1973576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chen{
1983576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chen}
1993576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chen
200d35a648d39710bbc5ac59f8add85166455af5af7Myles Watsonvoid BTA_PanOpen(UNUSED_ATTR BD_ADDR bd_addr, UNUSED_ATTR tBTA_PAN_ROLE local_role,
201d35a648d39710bbc5ac59f8add85166455af5af7Myles Watson                 UNUSED_ATTR tBTA_PAN_ROLE peer_role)
2023576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chen{
2033576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chen}
2043576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chen
205d35a648d39710bbc5ac59f8add85166455af5af7Myles Watsonvoid BTA_PanClose(UNUSED_ATTR uint16_t handle)
2063576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chen{
2073576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chen}
2083576c564b33c20b5e2e90fdd3bca7ce24392ca50Mike J. Chen
2095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif /* BTA_PAN_INCLUDED */
210