1525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project/*
2525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project * Copyright (C) 2012 The Android Open Source Project
3525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project *
4525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
5525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project * you may not use this file except in compliance with the License.
6525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project * You may obtain a copy of the License at
7525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project *
8525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
9525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project *
10525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
11525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
12525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project * See the License for the specific language governing permissions and
14525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project * limitations under the License.
15525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project */
16525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
17525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project/*
18525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project *  Communicate with a peer using NFC-DEP, LLCP, SNEP.
19525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project */
20525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project#pragma once
21525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project#include <utils/RefBase.h>
22525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project#include <utils/StrongPointer.h>
23525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project#include "SyncEvent.h"
24525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project#include "NfcJniUtil.h"
25525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project#include <string>
26525c260303268a83da4c3413b953d13c9084e834The Android Open Source Projectextern "C"
27525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project{
28525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    #include "nfa_p2p_api.h"
29525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project}
30525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
31525c260303268a83da4c3413b953d13c9084e834The Android Open Source Projectclass P2pServer;
32525c260303268a83da4c3413b953d13c9084e834The Android Open Source Projectclass P2pClient;
33525c260303268a83da4c3413b953d13c9084e834The Android Open Source Projectclass NfaConn;
34525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project#define MAX_NFA_CONNS_PER_SERVER    5
35525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
36525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project/*****************************************************************************
37525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
38525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**  Name:           PeerToPeer
39525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
40525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**  Description:    Communicate with a peer using NFC-DEP, LLCP, SNEP.
41525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
42525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project*****************************************************************************/
43525c260303268a83da4c3413b953d13c9084e834The Android Open Source Projectclass PeerToPeer
44525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project{
45525c260303268a83da4c3413b953d13c9084e834The Android Open Source Projectpublic:
46525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    typedef unsigned int tJNI_HANDLE;
47525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
48525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
49525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
50525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        PeerToPeer
51525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
52525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Initialize member variables.
53525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
54525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         None
55525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
56525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
57525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    PeerToPeer ();
58525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
59525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
60525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
61525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
62525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        ~PeerToPeer
63525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
64525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Free all resources.
65525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
66525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         None
67525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
68525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
69525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ~PeerToPeer ();
70525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
71525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
72525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
73525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
74525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        getInstance
75525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
76525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Get the singleton PeerToPeer object.
77525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
78525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         Singleton PeerToPeer object.
79525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
80525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
81525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    static PeerToPeer& getInstance();
82525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
83525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
84525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
85525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
86525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        initialize
87525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
88525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Initialize member variables.
89525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
90525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         None
91525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
92525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
93525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    void initialize ();
94525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
95525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
96525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
97525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
98525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        llcpActivatedHandler
99525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
100525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Receive LLLCP-activated event from stack.
101525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  nat: JVM-related data.
102525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  activated: Event data.
103525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
104525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         None
105525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
106525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
107525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    void llcpActivatedHandler (nfc_jni_native_data* nativeData, tNFA_LLCP_ACTIVATED& activated);
108525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
109525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
110525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
111525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
112525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        llcpDeactivatedHandler
113525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
114525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Receive LLLCP-deactivated event from stack.
115525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  nat: JVM-related data.
116525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  deactivated: Event data.
117525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
118525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         None
119525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
120525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
121525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    void llcpDeactivatedHandler (nfc_jni_native_data* nativeData, tNFA_LLCP_DEACTIVATED& deactivated);
122525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
12357a44d07a3de327e8cdbbcd622118aa517313dbeMartijn Coenen    void llcpFirstPacketHandler(nfc_jni_native_data* nativeData);
124525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
125525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
126525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
127525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        connectionEventHandler
128525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
129525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Receive events from the stack.
130525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  event: Event code.
131525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  eventData: Event data.
132525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
133525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         None
134525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
135525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
136525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    void connectionEventHandler (UINT8 event, tNFA_CONN_EVT_DATA* eventData);
137525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
138525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
139525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
140525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
141525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        registerServer
142525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
143525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Let a server start listening for peer's connection request.
144525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  jniHandle: Connection handle.
145525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  serviceName: Server's service name.
146525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
147525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         True if ok.
148525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
149525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
150525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    bool registerServer (tJNI_HANDLE jniHandle, const char* serviceName);
151525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
152525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
153525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
154525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
155525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        deregisterServer
156525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
157525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Stop a P2pServer from listening for peer.
158525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
159525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         True if ok.
160525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
161525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
162525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    bool deregisterServer (tJNI_HANDLE jniHandle);
163525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
164525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
165525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
166525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
167525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        accept
168525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
169525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Accept a peer's request to connect.
170525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  serverJniHandle: Server's handle.
171525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  connJniHandle: Connection handle.
172525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  maxInfoUnit: Maximum information unit.
173525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  recvWindow: Receive window size.
174525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
175525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         True if ok.
176525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
177525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
178525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    bool accept (tJNI_HANDLE serverJniHandle, tJNI_HANDLE connJniHandle, int maxInfoUnit, int recvWindow);
179525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
180525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
181525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
182525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
183525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        createClient
184525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
185525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Create a P2pClient object for a new out-bound connection.
186525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  jniHandle: Connection handle.
187525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  miu: Maximum information unit.
188525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  rw: Receive window size.
189525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
190525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         True if ok.
191525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
192525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
193525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    bool createClient (tJNI_HANDLE jniHandle, UINT16 miu, UINT8 rw);
194525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
195525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
196525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
197525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
198525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        connectConnOriented
199525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
200525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Estabish a connection-oriented connection to a peer.
201525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  jniHandle: Connection handle.
202525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  serviceName: Peer's service name.
203525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
204525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         True if ok.
205525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
206525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
207525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    bool connectConnOriented (tJNI_HANDLE jniHandle, const char* serviceName);
208525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
209525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
210525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
211525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
212525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        connectConnOriented
213525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
214525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Estabish a connection-oriented connection to a peer.
215525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  jniHandle: Connection handle.
216525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  destinationSap: Peer's service access point.
217525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
218525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         True if ok.
219525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
220525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
221525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    bool connectConnOriented (tJNI_HANDLE jniHandle, UINT8 destinationSap);
222525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
223525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
224525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
225525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
226525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        send
227525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
228525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Send data to peer.
229525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  jniHandle: Handle of connection.
230525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  buffer: Buffer of data.
231525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  bufferLen: Length of data.
232525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
233525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         True if ok.
234525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
235525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
236525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    bool send (tJNI_HANDLE jniHandle, UINT8* buffer, UINT16 bufferLen);
237525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
238525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
239525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
240525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
241525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        receive
242525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
243525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Receive data from peer.
244525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  jniHandle: Handle of connection.
245525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  buffer: Buffer to store data.
246525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  bufferLen: Max length of buffer.
247525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  actualLen: Actual length received.
248525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
249525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         True if ok.
250525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
251525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
252525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    bool receive (tJNI_HANDLE jniHandle, UINT8* buffer, UINT16 bufferLen, UINT16& actualLen);
253525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
254525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
255525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
256525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
257525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        disconnectConnOriented
258525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
259525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Disconnect a connection-oriented connection with peer.
260525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  jniHandle: Handle of connection.
261525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
262525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         True if ok.
263525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
264525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
265525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    bool disconnectConnOriented (tJNI_HANDLE jniHandle);
266525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
267525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
268525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
269525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
270525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        getRemoteMaxInfoUnit
271525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
272525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Get peer's max information unit.
273525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  jniHandle: Handle of the connection.
274525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
275525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         Peer's max information unit.
276525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
277525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
278525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    UINT16 getRemoteMaxInfoUnit (tJNI_HANDLE jniHandle);
279525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
280525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
281525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
282525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
283525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        getRemoteRecvWindow
284525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
285525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Get peer's receive window size.
286525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  jniHandle: Handle of the connection.
287525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
288525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         Peer's receive window size.
289525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
290525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
291525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    UINT8 getRemoteRecvWindow (tJNI_HANDLE jniHandle);
292525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
293525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
294525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
295525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
296525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        setP2pListenMask
297525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
298525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Sets the p2p listen technology mask.
299525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  p2pListenMask: the p2p listen mask to be set?
300525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
301525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         None
302525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
303525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
304525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    void setP2pListenMask (tNFA_TECHNOLOGY_MASK p2pListenMask);
305525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
306525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
307525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
308525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        enableP2pListening
309525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
310525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Start/stop polling/listening to peer that supports P2P.
311525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  isEnable: Is enable polling/listening?
312525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
313525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         None
314525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
315525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
316525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    void enableP2pListening (bool isEnable);
317525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
318525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
319525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
320525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
321525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        handleNfcOnOff
322525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
323525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Handle events related to turning NFC on/off by the user.
324525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  isOn: Is NFC turning on?
325525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
326525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         None
327525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
328525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
329525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    void handleNfcOnOff (bool isOn);
330525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
331525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
332525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
333525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
334525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        getNextJniHandle
335525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
336525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Get a new JNI handle.
337525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
338525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         A new JNI handle.
339525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
340525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
341525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    tJNI_HANDLE getNewJniHandle ();
342525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
343525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
344525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
345525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        nfaServerCallback
346525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
347525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Receive LLCP-related events from the stack.
348525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  p2pEvent: Event code.
349525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  eventData: Event data.
350525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
351525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         None
352525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
353525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
354525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    static void nfaServerCallback  (tNFA_P2P_EVT p2pEvent, tNFA_P2P_EVT_DATA *eventData);
355525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
356525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
357525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
358525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
359525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        nfaClientCallback
360525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
361525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Receive LLCP-related events from the stack.
362525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  p2pEvent: Event code.
363525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  eventData: Event data.
364525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
365525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         None
366525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
367525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
368525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    static void nfaClientCallback  (tNFA_P2P_EVT p2pEvent, tNFA_P2P_EVT_DATA *eventData);
369525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
370525c260303268a83da4c3413b953d13c9084e834The Android Open Source Projectprivate:
371525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    static const int sMax = 10;
372525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    static PeerToPeer sP2p;
373525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
374525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    // Variables below only accessed from a single thread
375525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    UINT16          mRemoteWKS;                 // Peer's well known services
376525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    bool            mIsP2pListening;            // If P2P listening is enabled or not
377525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    tNFA_TECHNOLOGY_MASK    mP2pListenTechMask; // P2P Listen mask
378525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
379525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    // Variable below is protected by mNewJniHandleMutex
380525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    tJNI_HANDLE     mNextJniHandle;
381525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
382525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    // Variables below protected by mMutex
383525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    // A note on locking order: mMutex in PeerToPeer is *ALWAYS*
384525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    // locked before any locks / guards in P2pServer / P2pClient
385525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    Mutex                    mMutex;
386525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    android::sp<P2pServer>   mServers [sMax];
387525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    android::sp<P2pClient>   mClients [sMax];
388525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
389525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    // Synchronization variables
390525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    SyncEvent       mSetTechEvent;              // completion event for NFA_SetP2pListenTech()
391525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    SyncEvent       mSnepDefaultServerStartStopEvent; // completion event for NFA_SnepStartDefaultServer(), NFA_SnepStopDefaultServer()
392525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    SyncEvent       mSnepRegisterEvent;         // completion event for NFA_SnepRegisterClient()
393525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    Mutex           mDisconnectMutex;           // synchronize the disconnect operation
394525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    Mutex           mNewJniHandleMutex;         // synchronize the creation of a new JNI handle
395525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
396525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
397525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
398525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
399525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        ndefTypeCallback
400525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
401525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Receive NDEF-related events from the stack.
402525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  ndefEvent: Event code.
403525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  eventData: Event data.
404525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
405525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         None
406525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
407525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
408525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    static void ndefTypeCallback   (tNFA_NDEF_EVT event, tNFA_NDEF_EVT_DATA *evetnData);
409525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
410525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
411525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
412525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
413525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        findServer
414525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
415525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Find a PeerToPeer object by connection handle.
416525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  nfaP2pServerHandle: Connectin handle.
417525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
418525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         PeerToPeer object.
419525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
420525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
421525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    android::sp<P2pServer>   findServerLocked (tNFA_HANDLE nfaP2pServerHandle);
422525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
423525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
424525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
425525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
426525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        findServer
427525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
428525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Find a PeerToPeer object by connection handle.
429525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  serviceName: service name.
430525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
431525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         PeerToPeer object.
432525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
433525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
434525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    android::sp<P2pServer>   findServerLocked (tJNI_HANDLE jniHandle);
435525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
436525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
437525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
438525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
439525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        findServer
440525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
441525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Find a PeerToPeer object by service name
442525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  serviceName: service name.
443525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
444525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         PeerToPeer object.
445525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
446525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
447525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    android::sp<P2pServer>   findServerLocked (const char *serviceName);
448525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
449525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
450525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
451525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
452525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        removeServer
453525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
454525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Free resources related to a server.
455525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  jniHandle: Connection handle.
456525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
457525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         None
458525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
459525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
460525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    void        removeServer (tJNI_HANDLE jniHandle);
461525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
462525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
463525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
464525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
465525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        removeConn
466525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
467525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Free resources related to a connection.
468525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  jniHandle: Connection handle.
469525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
470525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         None
471525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
472525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
473525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    void        removeConn (tJNI_HANDLE jniHandle);
474525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
475525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
476525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
477525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
478525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        createDataLinkConn
479525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
480525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Establish a connection-oriented connection to a peer.
481525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  jniHandle: Connection handle.
482525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  serviceName: Peer's service name.
483525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  destinationSap: Peer's service access point.
484525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
485525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         True if ok.
486525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
487525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
488525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    bool        createDataLinkConn (tJNI_HANDLE jniHandle, const char* serviceName, UINT8 destinationSap);
489525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
490525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
491525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
492525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
493525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        findClient
494525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
495525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Find a PeerToPeer object with a client connection handle.
496525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  nfaConnHandle: Connection handle.
497525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
498525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         PeerToPeer object.
499525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
500525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
501525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    android::sp<P2pClient>   findClient (tNFA_HANDLE nfaConnHandle);
502525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
503525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
504525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
505525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
506525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        findClient
507525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
508525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Find a PeerToPeer object with a client connection handle.
509525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  jniHandle: Connection handle.
510525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
511525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         PeerToPeer object.
512525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
513525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
514525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    android::sp<P2pClient>   findClient (tJNI_HANDLE jniHandle);
515525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
516525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
517525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
518525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
519525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        findClientCon
520525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
521525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Find a PeerToPeer object with a client connection handle.
522525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  nfaConnHandle: Connection handle.
523525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
524525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         PeerToPeer object.
525525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
526525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
527525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    android::sp<P2pClient>   findClientCon (tNFA_HANDLE nfaConnHandle);
528525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
529525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
530525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
531525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
532525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        findConnection
533525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
534525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Find a PeerToPeer object with a connection handle.
535525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  nfaConnHandle: Connection handle.
536525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
537525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         PeerToPeer object.
538525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
539525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
540525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    android::sp<NfaConn>     findConnection (tNFA_HANDLE nfaConnHandle);
541525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
542525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
543525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
544525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
545525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        findConnection
546525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
547525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Find a PeerToPeer object with a connection handle.
548525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  jniHandle: Connection handle.
549525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
550525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         PeerToPeer object.
551525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
552525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
553525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    android::sp<NfaConn>     findConnection (tJNI_HANDLE jniHandle);
554525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project};
555525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
556525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
557525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project/*****************************************************************************
558525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
559525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**  Name:           NfaConn
560525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
561525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**  Description:    Store information about a connection related to a peer.
562525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
563525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project*****************************************************************************/
564525c260303268a83da4c3413b953d13c9084e834The Android Open Source Projectclass NfaConn : public android::RefBase
565525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project{
566525c260303268a83da4c3413b953d13c9084e834The Android Open Source Projectpublic:
567525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    tNFA_HANDLE         mNfaConnHandle;         // NFA handle of the P2P connection
568525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    PeerToPeer::tJNI_HANDLE         mJniHandle;             // JNI handle of the P2P connection
569525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    UINT16              mMaxInfoUnit;
570525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    UINT8               mRecvWindow;
571525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    UINT16              mRemoteMaxInfoUnit;
572525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    UINT8               mRemoteRecvWindow;
573525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    SyncEvent           mReadEvent;             // event for reading
574525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    SyncEvent           mCongEvent;             // event for congestion
575525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    SyncEvent           mDisconnectingEvent;     // event for disconnecting
576525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
577525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
578525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
579525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
580525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        NfaConn
581525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
582525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Initialize member variables.
583525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
584525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         None
585525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
586525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
587525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    NfaConn();
588525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project};
589525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
590525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
591525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project/*****************************************************************************
592525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
593525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**  Name:           P2pServer
594525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
595525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**  Description:    Store information about an in-bound connection from a peer.
596525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
597525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project*****************************************************************************/
598525c260303268a83da4c3413b953d13c9084e834The Android Open Source Projectclass P2pServer : public android::RefBase
599525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project{
600525c260303268a83da4c3413b953d13c9084e834The Android Open Source Projectpublic:
601525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    static const std::string sSnepServiceName;
602525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
603525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    tNFA_HANDLE     mNfaP2pServerHandle;    // NFA p2p handle of local server
604525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    PeerToPeer::tJNI_HANDLE     mJniHandle;     // JNI Handle
605525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    SyncEvent       mRegServerEvent;        // for NFA_P2pRegisterServer()
606525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    SyncEvent       mConnRequestEvent;      // for accept()
607525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    std::string     mServiceName;
608525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
609525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
610525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
611525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        P2pServer
612525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
613525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Initialize member variables.
614525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
615525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         None
616525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
617525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
618525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    P2pServer (PeerToPeer::tJNI_HANDLE jniHandle, const char* serviceName);
619525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
620525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
621525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
622525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        registerWithStack
623525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
624525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Register this server with the stack.
625525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
626525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         True if ok.
627525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
628525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
629525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    bool registerWithStack();
630525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
631525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
632525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
633525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        accept
634525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
635525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Accept a peer's request to connect.
636525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  serverJniHandle: Server's handle.
637525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  connJniHandle: Connection handle.
638525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  maxInfoUnit: Maximum information unit.
639525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  recvWindow: Receive window size.
640525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
641525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         True if ok.
642525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
643525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
644525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    bool accept (PeerToPeer::tJNI_HANDLE serverJniHandle, PeerToPeer::tJNI_HANDLE connJniHandle,
645525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project            int maxInfoUnit, int recvWindow);
646525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
647525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
648525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
649525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        unblockAll
650525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
651525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Unblocks all server connections
652525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
653525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         True if ok.
654525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
655525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
656525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    void unblockAll();
657525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
658525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
659525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
660525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        findServerConnection
661525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
662525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Find a P2pServer that has the handle.
663525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  nfaConnHandle: NFA connection handle.
664525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
665525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         P2pServer object.
666525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
667525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
668525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    android::sp<NfaConn> findServerConnection (tNFA_HANDLE nfaConnHandle);
669525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
670525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
671525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
672525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        findServerConnection
673525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
674525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Find a P2pServer that has the handle.
675525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  jniHandle: JNI connection handle.
676525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
677525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         P2pServer object.
678525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
679525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
680525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    android::sp<NfaConn> findServerConnection (PeerToPeer::tJNI_HANDLE jniHandle);
681525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
682525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
683525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
684525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        removeServerConnection
685525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
686525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Remove a server connection with the provided handle.
687525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  jniHandle: JNI connection handle.
688525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
689525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         True if connection found and removed.
690525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
691525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
692525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    bool removeServerConnection(PeerToPeer::tJNI_HANDLE jniHandle);
693525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
694525c260303268a83da4c3413b953d13c9084e834The Android Open Source Projectprivate:
695525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    Mutex           mMutex;
696525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    // mServerConn is protected by mMutex
697525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    android::sp<NfaConn>     mServerConn[MAX_NFA_CONNS_PER_SERVER];
698525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
699525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
700525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
701525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        allocateConnection
702525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
703525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Allocate a new connection to accept on
704525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  jniHandle: JNI connection handle.
705525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
706525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         Allocated connection object
707525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **                  NULL if the maximum number of connections was reached
708525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
709525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
710525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    android::sp<NfaConn> allocateConnection (PeerToPeer::tJNI_HANDLE jniHandle);
711525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project};
712525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
713525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
714525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project/*****************************************************************************
715525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
716525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**  Name:           P2pClient
717525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
718525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**  Description:    Store information about an out-bound connection to a peer.
719525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
720525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project*****************************************************************************/
721525c260303268a83da4c3413b953d13c9084e834The Android Open Source Projectclass P2pClient : public android::RefBase
722525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project{
723525c260303268a83da4c3413b953d13c9084e834The Android Open Source Projectpublic:
724525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    tNFA_HANDLE           mNfaP2pClientHandle;    // NFA p2p handle of client
725525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    bool                  mIsConnecting;          // Set true while connecting
726525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    android::sp<NfaConn>  mClientConn;
727525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    SyncEvent             mRegisteringEvent;      // For client registration
728525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    SyncEvent             mConnectingEvent;       // for NFA_P2pConnectByName or Sap()
729525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    SyncEvent             mSnepEvent;             // To wait for SNEP completion
730525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
731525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
732525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
733525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        P2pClient
734525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
735525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Initialize member variables.
736525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
737525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         None
738525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
739525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
740525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    P2pClient ();
741525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
742525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
743525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
744525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
745525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        ~P2pClient
746525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
747525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Free all resources.
748525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
749525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         None
750525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
751525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
752525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ~P2pClient ();
753525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
754525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
755525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    /*******************************************************************************
756525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
757525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Function:        unblock
758525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
759525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Description:     Unblocks any threads that are locked on this connection
760525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
761525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ** Returns:         None
762525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    **
763525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    *******************************************************************************/
764525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    void unblock();
765525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project};
766525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
767