1e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/****************************************************************************** 2e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 3e9629bad30a9f478b336ab46b8e6e02f7f87af46Evan Chu * Copyright (C) 2010-2014 Broadcom Corporation 4e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 5e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 6e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * you may not use this file except in compliance with the License. 7e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * You may obtain a copy of the License at: 8e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 9e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 11e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * See the License for the specific language governing permissions and 15e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * limitations under the License. 16e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 17e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ******************************************************************************/ 18e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 19e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/****************************************************************************** 20e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 21e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * This is the private interface file for the NFA P2P. 22e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 23e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ******************************************************************************/ 24e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NFA_P2P_INT_H 25e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_P2P_INT_H 26e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 27303fec1d79b7ac30a09713e5db9fff299f7227fbRuchi Kandoi#if (NFA_P2P_INCLUDED == TRUE) 28e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "nfa_dm_int.h" 296fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#include "nfa_p2p_api.h" 30e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 31e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/***************************************************************************** 32e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Constants and data types 33e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*****************************************************************************/ 346fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define NFA_P2P_DEBUG BT_TRACE_VERBOSE 35e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 36e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* NFA P2P LLCP link state */ 376fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoienum { 386fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFA_P2P_LLCP_STATE_IDLE, 396fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFA_P2P_LLCP_STATE_LISTENING, 406fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFA_P2P_LLCP_STATE_ACTIVATED, 41e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 426fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFA_P2P_LLCP_STATE_MAX 43e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project}; 44e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 45512ee63c7cc8feb016863e507a5d33cd0f4242bfRuchi Kandoitypedef uint8_t tNFA_P2P_LLCP_STATE; 46e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 47e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* NFA P2P events */ 486fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoienum { 496fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFA_P2P_API_REG_SERVER_EVT = NFA_SYS_EVT_START(NFA_ID_P2P), 506fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFA_P2P_API_REG_CLIENT_EVT, 516fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFA_P2P_API_DEREG_EVT, 526fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFA_P2P_API_ACCEPT_CONN_EVT, 536fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFA_P2P_API_REJECT_CONN_EVT, 546fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFA_P2P_API_DISCONNECT_EVT, 556fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFA_P2P_API_CONNECT_EVT, 566fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFA_P2P_API_SEND_UI_EVT, 576fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFA_P2P_API_SEND_DATA_EVT, 586fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFA_P2P_API_SET_LOCAL_BUSY_EVT, 596fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFA_P2P_API_GET_LINK_INFO_EVT, 606fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFA_P2P_API_GET_REMOTE_SAP_EVT, 616fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFA_P2P_API_SET_LLCP_CFG_EVT, 626fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFA_P2P_INT_RESTART_RF_DISC_EVT, 636fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi 646fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFA_P2P_LAST_EVT 65e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project}; 66e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 67e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_P2P_API_REG_SERVER_EVT */ 686fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef struct { 696fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFC_HDR hdr; 706fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi uint8_t server_sap; 716fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_P2P_LINK_TYPE link_type; 726fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi char service_name[LLCP_MAX_SN_LEN + 1]; 736fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_P2P_CBACK* p_cback; 74e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_P2P_API_REG_SERVER; 75e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 76e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_P2P_API_REG_CLIENT_EVT */ 776fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef struct { 786fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFC_HDR hdr; 796fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_P2P_LINK_TYPE link_type; 806fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_P2P_CBACK* p_cback; 81e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_P2P_API_REG_CLIENT; 82e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 83e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_P2P_API_DEREG_EVT */ 846fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef struct { 856fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFC_HDR hdr; 866fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_HANDLE handle; 87e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_P2P_API_DEREG; 88e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 89e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_P2P_API_ACCEPT_CONN_EVT */ 906fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef struct { 916fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFC_HDR hdr; 926fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_HANDLE conn_handle; 936fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi uint16_t miu; 946fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi uint8_t rw; 95e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_P2P_API_ACCEPT_CONN; 96e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 97e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_P2P_API_REJECT_CONN_EVT */ 986fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef struct { 996fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFC_HDR hdr; 1006fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_HANDLE conn_handle; 101e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_P2P_API_REJECT_CONN; 102e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 103e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_P2P_API_DISCONNECT_EVT */ 1046fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef struct { 1056fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFC_HDR hdr; 1066fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_HANDLE conn_handle; 1076fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi bool flush; 108e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_P2P_API_DISCONNECT; 109e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 110e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_P2P_API_CONNECT_EVT */ 1116fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef struct { 1126fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFC_HDR hdr; 1136fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_HANDLE client_handle; 1146fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi char service_name[LLCP_MAX_SN_LEN + 1]; 1156fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi uint8_t dsap; 1166fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi uint16_t miu; 1176fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi uint8_t rw; 118e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_P2P_API_CONNECT; 119e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 120e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_P2P_API_SEND_UI_EVT */ 1216fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef struct { 1226fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFC_HDR hdr; 1236fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_HANDLE handle; 1246fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi uint8_t dsap; 1256fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFC_HDR* p_msg; 126e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_P2P_API_SEND_UI; 127e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 128e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_P2P_API_SEND_DATA_EVT */ 1296fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef struct { 1306fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFC_HDR hdr; 1316fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_HANDLE conn_handle; 1326fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFC_HDR* p_msg; 133e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_P2P_API_SEND_DATA; 134e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 135e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_P2P_API_SET_LOCAL_BUSY_EVT */ 1366fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef struct { 1376fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFC_HDR hdr; 1386fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_HANDLE conn_handle; 1396fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi bool is_busy; 140e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_P2P_API_SET_LOCAL_BUSY; 141e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 142e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_P2P_API_GET_LINK_INFO_EVT */ 1436fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef struct { 1446fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFC_HDR hdr; 1456fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_HANDLE handle; 146e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_P2P_API_GET_LINK_INFO; 147e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 148e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_P2P_API_GET_REMOTE_SAP_EVT */ 1496fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef struct { 1506fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFC_HDR hdr; 1516fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_HANDLE handle; 1526fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi char service_name[LLCP_MAX_SN_LEN + 1]; 153e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_P2P_API_GET_REMOTE_SAP; 154e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 155e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_P2P_API_SET_LLCP_CFG_EVT */ 1566fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef struct { 1576fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFC_HDR hdr; 1586fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi uint16_t link_miu; 1596fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi uint8_t opt; 1606fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi uint8_t wt; 1616fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi uint16_t link_timeout; 1626fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi uint16_t inact_timeout_init; 1636fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi uint16_t inact_timeout_target; 1646fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi uint16_t symm_delay; 1656fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi uint16_t data_link_timeout; 1666fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi uint16_t delay_first_pdu_timeout; 167e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_P2P_API_SET_LLCP_CFG; 168e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 169e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* union of all event data types */ 1706fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef union { 1716fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFC_HDR hdr; 1726fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_P2P_API_REG_SERVER api_reg_server; 1736fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_P2P_API_REG_CLIENT api_reg_client; 1746fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_P2P_API_DEREG api_dereg; 1756fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_P2P_API_ACCEPT_CONN api_accept; 1766fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_P2P_API_REJECT_CONN api_reject; 1776fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_P2P_API_DISCONNECT api_disconnect; 1786fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_P2P_API_CONNECT api_connect; 1796fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_P2P_API_SEND_UI api_send_ui; 1806fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_P2P_API_SEND_DATA api_send_data; 1816fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_P2P_API_SET_LOCAL_BUSY api_local_busy; 1826fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_P2P_API_GET_LINK_INFO api_link_info; 1836fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_P2P_API_GET_REMOTE_SAP api_remote_sap; 1846fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_P2P_API_SET_LLCP_CFG api_set_llcp_cfg; 185e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_P2P_MSG; 186e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 187e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/***************************************************************************** 188e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** control block 189e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*****************************************************************************/ 19046e6e28414b5e37ffad65353916520fc56ea3a86Ruchi Kandoi/* Bit flag for connection handle */ 19146e6e28414b5e37ffad65353916520fc56ea3a86Ruchi Kandoi#define NFA_P2P_HANDLE_FLAG_CONN 0x80 192e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 193e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* NFA P2P Connection block */ 19446e6e28414b5e37ffad65353916520fc56ea3a86Ruchi Kandoi/* Connection control block is used */ 19546e6e28414b5e37ffad65353916520fc56ea3a86Ruchi Kandoi#define NFA_P2P_CONN_FLAG_IN_USE 0x01 19646e6e28414b5e37ffad65353916520fc56ea3a86Ruchi Kandoi/* Remote set RW to 0 (flow off) */ 19746e6e28414b5e37ffad65353916520fc56ea3a86Ruchi Kandoi#define NFA_P2P_CONN_FLAG_REMOTE_RW_ZERO 0x02 19846e6e28414b5e37ffad65353916520fc56ea3a86Ruchi Kandoi/* data link connection is congested */ 19946e6e28414b5e37ffad65353916520fc56ea3a86Ruchi Kandoi#define NFA_P2P_CONN_FLAG_CONGESTED 0x04 200e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 2016fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef struct { 2026fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi uint8_t flags; /* internal flags for data link connection */ 2036fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi uint8_t local_sap; /* local SAP of data link connection */ 2046fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi uint8_t remote_sap; /* remote SAP of data link connection */ 2056fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi uint16_t remote_miu; /* MIU of remote end point */ 2066fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi uint8_t num_pending_i_pdu; /* number of tx I PDU not processed by NFA */ 207e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_P2P_CONN_CB; 208e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 209e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* NFA P2P SAP control block */ 21046e6e28414b5e37ffad65353916520fc56ea3a86Ruchi Kandoi/* registered server */ 21146e6e28414b5e37ffad65353916520fc56ea3a86Ruchi Kandoi#define NFA_P2P_SAP_FLAG_SERVER 0x01 21246e6e28414b5e37ffad65353916520fc56ea3a86Ruchi Kandoi/* registered client */ 21346e6e28414b5e37ffad65353916520fc56ea3a86Ruchi Kandoi#define NFA_P2P_SAP_FLAG_CLIENT 0x02 21446e6e28414b5e37ffad65353916520fc56ea3a86Ruchi Kandoi/* logical link connection is congested */ 21546e6e28414b5e37ffad65353916520fc56ea3a86Ruchi Kandoi#define NFA_P2P_SAP_FLAG_LLINK_CONGESTED 0x04 216e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 2176fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef struct { 2186fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi uint8_t flags; /* internal flags for local SAP */ 2196fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_P2P_CBACK* p_cback; /* callback function for local SAP */ 2206fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi uint8_t num_pending_ui_pdu; /* number of tx UI PDU not processed by NFA */ 221e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_P2P_SAP_CB; 222e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 223e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* NFA P2P SDP control block */ 2246fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef struct { 2256fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi uint8_t tid; /* transaction ID */ 2266fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi uint8_t local_sap; 227e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_P2P_SDP_CB; 228e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 2296fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define NFA_P2P_NUM_SAP 64 230e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 231e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* NFA P2P control block */ 2326fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef struct { 2336fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_HANDLE dm_disc_handle; 2346fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi 2356fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_DM_RF_DISC_STATE rf_disc_state; 2366fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_P2P_LLCP_STATE llcp_state; 2376fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi bool is_initiator; 2386fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi bool is_active_mode; 2396fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi uint16_t local_link_miu; 2406fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi uint16_t remote_link_miu; 2416fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi 2426fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_TECHNOLOGY_MASK listen_tech_mask; /* for P2P listening */ 2436fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_TECHNOLOGY_MASK 2446fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi listen_tech_mask_to_restore; /* to retry without active listen mode */ 2456fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi TIMER_LIST_ENT 2466fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi active_listen_restore_timer; /* timer to restore active listen mode */ 2476fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi bool is_p2p_listening; 2486fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi bool is_snep_listening; 2496fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi 2506fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_P2P_SAP_CB sap_cb[NFA_P2P_NUM_SAP]; 2516fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_P2P_CONN_CB conn_cb[LLCP_MAX_DATA_LINK]; 2526fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_P2P_SDP_CB sdp_cb[LLCP_MAX_SDP_TRANSAC]; 2536fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi 2546fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi uint8_t 2556fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi total_pending_ui_pdu; /* total number of tx UI PDU not processed by NFA */ 2566fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi uint8_t 2576fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi total_pending_i_pdu; /* total number of tx I PDU not processed by NFA */ 2586fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi 2596fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi uint8_t trace_level; 260e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_P2P_CB; 261e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 262e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/***************************************************************************** 263e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** External variables 264e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*****************************************************************************/ 265e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 266e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* NFA P2P control block */ 267e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern tNFA_P2P_CB nfa_p2p_cb; 268e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 269e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/***************************************************************************** 270e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** External functions 271e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*****************************************************************************/ 272e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* 273e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** nfa_p2p_main.c 274e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 2756fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoivoid nfa_p2p_init(void); 2766fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoivoid nfa_p2p_update_listen_tech(tNFA_TECHNOLOGY_MASK tech_mask); 2776fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoivoid nfa_p2p_enable_listening(tNFA_SYS_ID sys_id, bool update_wks); 2786fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoivoid nfa_p2p_disable_listening(tNFA_SYS_ID sys_id, bool update_wks); 2796fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoivoid nfa_p2p_activate_llcp(tNFC_DISCOVER* p_data); 2806fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoivoid nfa_p2p_deactivate_llcp(void); 2816fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoivoid nfa_p2p_set_config(tNFA_DM_DISC_TECH_PROTO_MASK disc_mask); 282e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 283e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* 284e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** nfa_p2p_act.c 285e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 2866fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoivoid nfa_p2p_proc_llcp_data_ind(tLLCP_SAP_CBACK_DATA* p_data); 2876fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoivoid nfa_p2p_proc_llcp_connect_ind(tLLCP_SAP_CBACK_DATA* p_data); 2886fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoivoid nfa_p2p_proc_llcp_connect_resp(tLLCP_SAP_CBACK_DATA* p_data); 2896fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoivoid nfa_p2p_proc_llcp_disconnect_ind(tLLCP_SAP_CBACK_DATA* p_data); 2906fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoivoid nfa_p2p_proc_llcp_disconnect_resp(tLLCP_SAP_CBACK_DATA* p_data); 2916fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoivoid nfa_p2p_proc_llcp_congestion(tLLCP_SAP_CBACK_DATA* p_data); 2926fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoivoid nfa_p2p_proc_llcp_link_status(tLLCP_SAP_CBACK_DATA* p_data); 2936fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi 2946fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoibool nfa_p2p_start_sdp(char* p_service_name, uint8_t local_sap); 2956fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi 2966fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoibool nfa_p2p_reg_server(tNFA_P2P_MSG* p_msg); 2976fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoibool nfa_p2p_reg_client(tNFA_P2P_MSG* p_msg); 2986fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoibool nfa_p2p_dereg(tNFA_P2P_MSG* p_msg); 2996fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoibool nfa_p2p_accept_connection(tNFA_P2P_MSG* p_msg); 3006fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoibool nfa_p2p_reject_connection(tNFA_P2P_MSG* p_msg); 3016fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoibool nfa_p2p_disconnect(tNFA_P2P_MSG* p_msg); 3026fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoibool nfa_p2p_create_data_link_connection(tNFA_P2P_MSG* p_msg); 3036fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoibool nfa_p2p_send_ui(tNFA_P2P_MSG* p_msg); 3046fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoibool nfa_p2p_send_data(tNFA_P2P_MSG* p_msg); 3056fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoibool nfa_p2p_set_local_busy(tNFA_P2P_MSG* p_msg); 3066fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoibool nfa_p2p_get_link_info(tNFA_P2P_MSG* p_msg); 3076fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoibool nfa_p2p_get_remote_sap(tNFA_P2P_MSG* p_msg); 3086fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoibool nfa_p2p_set_llcp_cfg(tNFA_P2P_MSG* p_msg); 3096fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoibool nfa_p2p_restart_rf_discovery(tNFA_P2P_MSG* p_msg); 310e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 311e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (BT_TRACE_VERBOSE == TRUE) 3126fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoichar* nfa_p2p_evt_code(uint16_t evt_code); 313e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 314e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 315e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#else 316e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 317e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define nfa_p2p_init () 3186fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define nfa_p2p_activate_llcp (a){}; 319e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define nfa_p2p_deactivate_llcp () 320e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define nfa_p2p_set_config () 321e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 322303fec1d79b7ac30a09713e5db9fff299f7227fbRuchi Kandoi#endif /* (NFA_P2P_INCLUDED == TRUE) */ 323e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* NFA_P2P_INT_H */ 324