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