15738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************************************************** 25738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 35738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Copyright (C) 2009-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 192e5a95d39f6c131142610d10f395aeeea4df5acfYK Jeffrey Chao/****************************************************************************** 205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Filename: bta_pan_co.c 225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Description: PAN stack callout api 245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 262e5a95d39f6c131142610d10f395aeeea4df5acfYK Jeffrey Chao ******************************************************************************/ 275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_api.h" 285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_pan_api.h" 295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_pan_ci.h" 305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_pan_co.h" 315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "pan_api.h" 32a11035b5ecbc6cbd9da5bd707683504c47e2744ePavlin Radoslavov#include "bt_common.h" 335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include <hardware/bluetooth.h> 345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include <hardware/bt_pan.h> 355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "btif_pan_internal.h" 36f4b8f8aa313d3b7d88b683bfe0e5f9eb0a29b3b3Sharvil Nanavati#include "btif_sock_thread.h" 372e5a95d39f6c131142610d10f395aeeea4df5acfYK Jeffrey Chao#include <string.h> 385cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen#include "btif_util.h" 396ba8fda60a9137a9f53f7e14edd87184610744fcHemant Gupta#include "btcore/include/bdaddr.h" 405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_pan_co_init 445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description 465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns Data flow mask. 495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectUINT8 bta_pan_co_init(UINT8 *q_level) 525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 53e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati BTIF_TRACE_API("bta_pan_co_init"); 545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* set the q_level to 30 buffers */ 565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *q_level = 30; 575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project //return (BTA_PAN_RX_PULL | BTA_PAN_TX_PULL); 595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (BTA_PAN_RX_PUSH_BUF | BTA_PAN_RX_PUSH | BTA_PAN_TX_PULL); 605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 622e5a95d39f6c131142610d10f395aeeea4df5acfYK Jeffrey Chao/****************************************************************************** 635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_pan_co_open 655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description 675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 752e5a95d39f6c131142610d10f395aeeea4df5acfYK Jeffrey Chaovoid bta_pan_co_open(UINT16 handle, UINT8 app_id, tBTA_PAN_ROLE local_role, 762e5a95d39f6c131142610d10f395aeeea4df5acfYK Jeffrey Chao tBTA_PAN_ROLE peer_role, BD_ADDR peer_addr) 775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 78e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati BTIF_TRACE_API("bta_pan_co_open:app_id:%d, local_role:%d, peer_role:%d, " 792e5a95d39f6c131142610d10f395aeeea4df5acfYK Jeffrey Chao "handle:%d", app_id, local_role, peer_role, handle); 805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btpan_conn_t* conn = btpan_find_conn_addr(peer_addr); 815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if(conn == NULL) 825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project conn = btpan_new_conn(handle, peer_addr, local_role, peer_role); 835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if(conn) 845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 85e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati BTIF_TRACE_DEBUG("bta_pan_co_open:tap_fd:%d, open_count:%d, " 862e5a95d39f6c131142610d10f395aeeea4df5acfYK Jeffrey Chao "conn->handle:%d should = handle:%d, local_role:%d, remote_role:%d", 872e5a95d39f6c131142610d10f395aeeea4df5acfYK Jeffrey Chao btpan_cb.tap_fd, btpan_cb.open_count, conn->handle, handle, 882e5a95d39f6c131142610d10f395aeeea4df5acfYK Jeffrey Chao conn->local_role, conn->remote_role); 895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project //refresh the role & bt address 905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btpan_cb.open_count++; 925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project conn->handle = handle; 935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project //bdcpy(conn->peer, peer_addr); 945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if(btpan_cb.tap_fd < 0) 955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btpan_cb.tap_fd = btpan_tap_open(); 975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if(btpan_cb.tap_fd >= 0) 985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project create_tap_read_thread(btpan_cb.tap_fd); 995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 1005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if(btpan_cb.tap_fd >= 0) 1015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 102f4b8f8aa313d3b7d88b683bfe0e5f9eb0a29b3b3Sharvil Nanavati btpan_cb.flow = 1; 1035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project conn->state = PAN_STATE_OPEN; 1045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_pan_ci_rx_ready(handle); 1055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 1065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 1075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 1085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 1105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_pan_co_close 1125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function is called by PAN when a connection to a 1145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** peer is closed. 1155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 1185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 1205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bta_pan_co_close(UINT16 handle, UINT8 app_id) 1215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 122e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati BTIF_TRACE_API("bta_pan_co_close:app_id:%d, handle:%d", app_id, handle); 1235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btpan_conn_t* conn = btpan_find_conn_handle(handle); 1245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if(conn && conn->state == PAN_STATE_OPEN) 1255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 126e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati BTIF_TRACE_DEBUG("bta_pan_co_close"); 1275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project // let bta close event reset this handle as it needs 1295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project // the handle to find the connection upon CLOSE 1305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project //conn->handle = -1; 1315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project conn->state = PAN_STATE_CLOSE; 1325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btpan_cb.open_count--; 1335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 134f4b8f8aa313d3b7d88b683bfe0e5f9eb0a29b3b3Sharvil Nanavati if(btpan_cb.open_count == 0 && btpan_cb.tap_fd != -1) 1355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 136f4b8f8aa313d3b7d88b683bfe0e5f9eb0a29b3b3Sharvil Nanavati btpan_tap_close(btpan_cb.tap_fd); 137f4b8f8aa313d3b7d88b683bfe0e5f9eb0a29b3b3Sharvil Nanavati btpan_cb.tap_fd = -1; 1385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 1395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 1405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 1415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 1435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_pan_co_tx_path 1455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function is called by PAN to transfer data on the 1475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** TX path; that is, data being sent from BTA to the phone. 1485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** This function is used when the TX data path is configured 1495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** to use the pull interface. The implementation of this 1505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** function will typically call Bluetooth stack functions 1515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** PORT_Read() or PORT_ReadData() to read data from RFCOMM 1525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** and then a platform-specific function to send data that 1535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** data to the phone. 1545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 1575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 1595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bta_pan_co_tx_path(UINT16 handle, UINT8 app_id) 1605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p_buf; 1625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BD_ADDR src; 1635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BD_ADDR dst; 1645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 protocol; 1655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN ext; 1665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN forward; 1675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1686ba8fda60a9137a9f53f7e14edd87184610744fcHemant Gupta BTIF_TRACE_API("%s, handle:%d, app_id:%d", __func__, handle, app_id); 1695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btpan_conn_t* conn = btpan_find_conn_handle(handle); 1716ba8fda60a9137a9f53f7e14edd87184610744fcHemant Gupta if (!conn) 1725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1736ba8fda60a9137a9f53f7e14edd87184610744fcHemant Gupta BTIF_TRACE_ERROR("%s: cannot find pan connection", __func__); 1745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return; 1755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 1766ba8fda60a9137a9f53f7e14edd87184610744fcHemant Gupta else if(conn->state != PAN_STATE_OPEN) 1776ba8fda60a9137a9f53f7e14edd87184610744fcHemant Gupta { 1786ba8fda60a9137a9f53f7e14edd87184610744fcHemant Gupta BTIF_TRACE_ERROR("%s: conn is not opened, conn:%p, conn->state:%d", 1796ba8fda60a9137a9f53f7e14edd87184610744fcHemant Gupta __func__, conn, conn->state); 1806ba8fda60a9137a9f53f7e14edd87184610744fcHemant Gupta return; 1816ba8fda60a9137a9f53f7e14edd87184610744fcHemant Gupta } 1826ba8fda60a9137a9f53f7e14edd87184610744fcHemant Gupta 1835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project do 1845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* read next data buffer from pan */ 1865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_buf = bta_pan_ci_readbuf(handle, src, dst, &protocol, 1875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project &ext, &forward))) 1885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1896ba8fda60a9137a9f53f7e14edd87184610744fcHemant Gupta bdstr_t bdstr; 1906ba8fda60a9137a9f53f7e14edd87184610744fcHemant Gupta BTIF_TRACE_DEBUG("%s, calling btapp_tap_send, " 1916ba8fda60a9137a9f53f7e14edd87184610744fcHemant Gupta "p_buf->len:%d, offset:%d", __func__, p_buf->len, p_buf->offset); 1925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if(is_empty_eth_addr(conn->eth_addr) && is_valid_bt_eth_addr(src)) 1935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1946ba8fda60a9137a9f53f7e14edd87184610744fcHemant Gupta BTIF_TRACE_DEBUG("%s pan bt peer addr: %s", __func__, 1956ba8fda60a9137a9f53f7e14edd87184610744fcHemant Gupta bdaddr_to_string((bt_bdaddr_t *)conn->peer, bdstr, sizeof(bdstr))); 1966ba8fda60a9137a9f53f7e14edd87184610744fcHemant Gupta bdaddr_to_string((bt_bdaddr_t *)src, bdstr, sizeof(bdstr)); 1976ba8fda60a9137a9f53f7e14edd87184610744fcHemant Gupta BTIF_TRACE_DEBUG("%s: update its ethernet addr: %s", __func__, 1986ba8fda60a9137a9f53f7e14edd87184610744fcHemant Gupta bdaddr_to_string((bt_bdaddr_t *)src, bdstr, sizeof(bdstr))); 1995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memcpy(conn->eth_addr, src, sizeof(conn->eth_addr)); 2005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 2022e5a95d39f6c131142610d10f395aeeea4df5acfYK Jeffrey Chao btpan_tap_send(btpan_cb.tap_fd, src, dst, protocol, 2032e5a95d39f6c131142610d10f395aeeea4df5acfYK Jeffrey Chao (char*)(p_buf + 1) + p_buf->offset, p_buf->len, ext, forward); 204abd70abb5e42c9431df94fe9d2c4a78a0d8d9af9Pavlin Radoslavov osi_free(p_buf); 2055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 2065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } while (p_buf != NULL); 2085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 2095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 2115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_pan_co_rx_path 2135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description 2155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 2205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 2225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bta_pan_co_rx_path(UINT16 handle, UINT8 app_id) 2235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 2245cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen UNUSED(handle); 2255cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen UNUSED(app_id); 2265cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen 227e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati BTIF_TRACE_API("bta_pan_co_rx_path not used"); 2285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 2295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 2315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_pan_co_tx_write 2335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function is called by PAN to send data to the phone 2355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** when the TX path is configured to use a push interface. 2365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** The implementation of this function must copy the data to 2375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** the phone's memory. 2385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 2415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 2432e5a95d39f6c131142610d10f395aeeea4df5acfYK Jeffrey Chaovoid bta_pan_co_tx_write(UINT16 handle, UINT8 app_id, BD_ADDR src, BD_ADDR dst, 2442e5a95d39f6c131142610d10f395aeeea4df5acfYK Jeffrey Chao UINT16 protocol, UINT8 *p_data, 2455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 len, BOOLEAN ext, BOOLEAN forward) 2465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 2475cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen UNUSED(handle); 2485cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen UNUSED(app_id); 2495cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen UNUSED(src); 2505cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen UNUSED(dst); 2515cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen UNUSED(protocol); 2525cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen UNUSED(p_data); 2535cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen UNUSED(len); 2545cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen UNUSED(ext); 2555cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen UNUSED(forward); 2565cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen 257e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati BTIF_TRACE_API("bta_pan_co_tx_write not used"); 2585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 2595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 2615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_pan_co_tx_writebuf 2635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function is called by PAN to send data to the phone 2655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** when the TX path is configured to use a push interface with 2665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** zero copy. The phone must free the buffer using function 267abd70abb5e42c9431df94fe9d2c4a78a0d8d9af9Pavlin Radoslavov** osi_free() when it is through processing the buffer. 2685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns TRUE if flow enabled 2715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 2732e5a95d39f6c131142610d10f395aeeea4df5acfYK Jeffrey Chaovoid bta_pan_co_tx_writebuf(UINT16 handle, UINT8 app_id, BD_ADDR src, 2742e5a95d39f6c131142610d10f395aeeea4df5acfYK Jeffrey Chao BD_ADDR dst, UINT16 protocol, BT_HDR *p_buf, 2752e5a95d39f6c131142610d10f395aeeea4df5acfYK Jeffrey Chao BOOLEAN ext, BOOLEAN forward) 2765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 2775cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen UNUSED(handle); 2785cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen UNUSED(app_id); 2795cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen UNUSED(src); 2805cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen UNUSED(dst); 2815cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen UNUSED(protocol); 2825cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen UNUSED(p_buf); 2835cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen UNUSED(ext); 2845cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen UNUSED(forward); 2855cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen 286e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati BTIF_TRACE_API("bta_pan_co_tx_writebuf not used"); 2875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 2885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 2905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_pan_co_rx_flow 2925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function is called by PAN to enable or disable 2945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** data flow on the RX path when it is configured to use 2955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** a push interface. If data flow is disabled the phone must 2965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** not call bta_pan_ci_rx_write() or bta_pan_ci_rx_writebuf() 2975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** until data flow is enabled again. 2985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 3015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 3035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bta_pan_co_rx_flow(UINT16 handle, UINT8 app_id, BOOLEAN enable) 3045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 3055cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen UNUSED(handle); 3065cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen UNUSED(app_id); 3075cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen UNUSED(enable); 3085cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen 309e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati BTIF_TRACE_API("bta_pan_co_rx_flow, enabled:%d, not used", enable); 310f4b8f8aa313d3b7d88b683bfe0e5f9eb0a29b3b3Sharvil Nanavati btpan_conn_t* conn = btpan_find_conn_handle(handle); 311f4b8f8aa313d3b7d88b683bfe0e5f9eb0a29b3b3Sharvil Nanavati if(!conn || conn->state != PAN_STATE_OPEN) 312f4b8f8aa313d3b7d88b683bfe0e5f9eb0a29b3b3Sharvil Nanavati return; 313f4b8f8aa313d3b7d88b683bfe0e5f9eb0a29b3b3Sharvil Nanavati btpan_set_flow_control(enable); 3145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 3155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 3175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_pan_co_filt_ind 3195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description protocol filter indication from peer device 3215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 3235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 3255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bta_pan_co_pfilt_ind(UINT16 handle, BOOLEAN indication, tBTA_PAN_STATUS result, 3265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 len, UINT8 *p_filters) 3275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 3285cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen UNUSED(handle); 3295cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen UNUSED(indication); 3305cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen UNUSED(result); 3315cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen UNUSED(len); 3325cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen UNUSED(p_filters); 3335cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen 334e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati BTIF_TRACE_API("bta_pan_co_pfilt_ind"); 3355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 3362e5a95d39f6c131142610d10f395aeeea4df5acfYK Jeffrey Chao 3375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 3385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_pan_co_mfilt_ind 3405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description multicast filter indication from peer device 3425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 3445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 3465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bta_pan_co_mfilt_ind(UINT16 handle, BOOLEAN indication, tBTA_PAN_STATUS result, 3475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 len, UINT8 *p_filters) 3485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 3495cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen UNUSED(handle); 3505cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen UNUSED(indication); 3515cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen UNUSED(result); 3525cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen UNUSED(len); 3535cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen UNUSED(p_filters); 3545cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen 355e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati BTIF_TRACE_API("bta_pan_co_mfilt_ind"); 3565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 3575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 358