blob: 47449bc3438fb70823d57255ded716816c59ef01 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
2 * Copyright (c) 2012, Code Aurora Forum. All rights reserved.
3 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
20 */
21
22/******************************************************************************
23*
24* Name: p2p_Api.h
25*
26* Description: P2P FSM defines.
27*
28* Copyright 2008 (c) Qualcomm, Incorporated. All Rights Reserved.
29* Qualcomm Confidential and Proprietary.
30*
31******************************************************************************/
32
33#ifndef __P2P_API_H__
34#define __P2P_API_H__
35
36#include "vos_types.h"
37#include "halTypes.h"
38#include "palTimer.h"
39#include "vos_lock.h"
40
41typedef struct sP2pPsConfig{
42 tANI_U8 opp_ps;
43 tANI_U32 ctWindow;
44 tANI_U8 count;
45 tANI_U32 duration;
46 tANI_U32 interval;
47 tANI_U32 single_noa_duration;
48 tANI_U8 psSelection;
49 tANI_U8 sessionid;
50}tP2pPsConfig,*tpP2pPsConfig;
51
52typedef eHalStatus (*remainOnChanCallback)( tHalHandle, void* context,
53 eHalStatus status );
54
55typedef struct sRemainOnChn{
56 tANI_U8 chn;
57 tANI_U32 duration;
58 remainOnChanCallback callback;
59 void *pCBContext;
60}tRemainOnChn, tpRemainOnChn;
61
62#ifdef WLAN_FEATURE_P2P_INTERNAL
63
64#define MAX_SOCIAL_CHANNELS 3
65#define P2P_OPERATING_CHANNEL 6
66#define P2P_MAX_GROUP_LIMIT 5
67#define P2P_MAC_ADDRESS_LEN 6
68#define MAX_LISTEN_SEARCH_CYCLE 3
69#define P2P_LISTEN_TIMEOUT_AUTO 500 //0.5 sec
70#define P2P_LISTEN_TIMEOUT_HIGH 200 //0.4 sec
71#define P2P_LISTEN_TIMEOUT 1000 //1 sec
72#define P2P_REMAIN_ON_CHAN_TIMEOUT 300
73#define P2P_REMAIN_ON_CHAN_TIMEOUT_HIGH 1000
74#define P2P_REMAIN_ON_CHAN_TIMEOUT_LOW 100
75#define ACTION_FRAME_RETRY_TIMEOUT 50
76#define P2P_COUNTRY_CODE_LEN 3
77
78#define P2P_CLEAR_POWERSAVE 0
79#define P2P_OPPORTUNISTIC_PS 1
80#define P2P_PERIODIC_NOA 2
81#define P2P_SINGLE_NOA 4
82
83
84/* Wi-Fi Direct Device Discovery Type */
85typedef enum ep2pDiscoverType {
86 /** Driver must perform device discovery only using the scan phase*/
87 WFD_DISCOVER_TYPE_SCAN_ONLY = 1,
88 /** Driver must perform device discovery only using the find phase*/
89 WFD_DISCOVER_TYPE_FIND_ONLY = 2,
90 /** Driver can use either use scan phase or find phase to discovery
91 P2P devices. In our case Driver uses scan phase */
92 WFD_DISCOVER_TYPE_AUTO = 3,
93 /*Scan only social channel*/
94 WFD_DISCOVER_SCAN_ONLY_SOCIAL_CHN,
95 /** If it is set, driver must perform a complete discovery,
96 If it is false, it can do partial discovery.*/
97 WFD_DISCOVER_TYPE_FORCED = 0x80000000
98} ep2pDiscoverType, *ePp2pDiscoverType;
99
100//bit mask for what to discover
101#define QCWLAN_P2P_DISCOVER_DEVICE 0x1
102#define QCWLAN_P2P_DISCOVER_GO 0x2
103#define QCWLAN_P2P_DISCOVER_ANY 0x8
104
105#define P2P_DISCOVER_SCAN_ONLY(t) ( (WFD_DISCOVER_TYPE_SCAN_ONLY == (t)) \
106 || (WFD_DISCOVER_SCAN_ONLY_SOCIAL_CHN == (t)) )
107
108/* Scan Type */
109typedef enum ep2pScanType {
110 P2P_SCAN_TYPE_ACTIVE = 1, /** device should perform active scans for the scan phase of device discovery */
111 P2P_SCAN_TYPE_PASSIVE = 2, /** device should perform passive scanning for the scan phase of device discovery */
112 P2P_SCAN_TYPE_AUTO = 3 /** The selection of the scan type is upto the driver */
113} ep2pScanType, * ePp2pScanType;
114
115/** Listen State Discoverability */
116typedef enum ep2pListenStateDiscoverability {
117 P2P_DEVICE_NOT_DISCOVERABLE, /** Wi-Fi Direct Device Port must not make itself discoverable */
118 P2P_DEVICE_AUTO_AVAILABILITY, /** Wi-Fi Direct Device Port must periodically put itself in the listen state to become discoverable*/
119 P2P_DEVICE_HIGH_AVAILABILITY /** Wi-Fi Direct Device Port must be frequently put itself in the listen state
120 to increase the speed and reliability of remote devices discovering it */
121} ep2pListenStateDiscoverability, * ePp2pListenStateDiscoverability;
122
123typedef enum ep2pOperatingMode {
124 OPERATION_MODE_INVALID,
125 OPERATION_MODE_P2P_DEVICE,
126 OPERATION_MODE_P2P_GROUP_OWNER,
127 OPERATION_MODE_P2P_CLIENT
128}ep2pOperatingMode;
129
130typedef struct _tp2pDiscoverDeviceFilter{
131 tSirMacAddr DeviceID;
132 v_UCHAR_t ucBitmask;
133 tSirMacSSid GroupSSID;
134} tp2pDiscoverDeviceFilter;
135
136typedef struct _tp2pDiscoverRequest {
137 ep2pDiscoverType discoverType;
138 ep2pScanType scanType;
139 tANI_U32 uDiscoverTimeout;
140 tANI_U32 uNumDeviceFilters;
141 tp2pDiscoverDeviceFilter *pDeviceFilters;
142 tANI_BOOLEAN bForceScanLegacyNetworks;
143 tANI_U32 uNumOfLegacySSIDs;
144 tANI_U8 *pLegacySSIDs;
145 tANI_U32 uIELen;
146 tANI_U8 *pIEField;
147} tP2PDiscoverRequest;
148
149typedef enum _eP2PDiscoverStatus {
150 eP2P_DISCOVER_SUCCESS,
151 eP2P_DISCOVER_FAILURE,
152 eP2P_DISCOVER_ABORT,
153 eP2P_DIRECTED_DISCOVER
154} eP2PDiscoverStatus;
155
156typedef eHalStatus (*p2pDiscoverCompleteCallback)(tHalHandle hHal, void *pContext, eP2PDiscoverStatus discoverStatus);
157
158typedef struct sP2PGroupId {
159 tANI_U8 present;
160 tANI_U8 deviceAddress[6];
161 tANI_U8 num_ssid;
162 tANI_U8 ssid[32];
163} tP2PGroupId;
164
165typedef struct sP2PGroupBssid {
166 tANI_U8 present;
167 tANI_U8 P2PGroupBssid[6];
168} tP2PGroupBssid;
169
170typedef struct sP2PChannel {
171 tANI_U8 present;
172 tANI_U8 countryString[P2P_COUNTRY_CODE_LEN];
173 tANI_U8 regulatoryClass;
174 tANI_U8 channel;
175} tP2P_OperatingChannel, tP2P_ListenChannel;
176
177/** Structure contains parameters required for Wi-Fi Direct Device functionality such as device discovery, Group Owner Negotiation */
178typedef enum P2PFrameType {
179 eP2P_INVALID_FRM,
180 eP2P_PROBE_REQ,
181 eP2P_PROBE_RSP,
182 eP2P_GONEGO_REQ,
183 eP2P_GONEGO_RES,
184 eP2P_GONEGO_CNF,
185 eP2P_PROVISION_DISCOVERY_REQUEST,
186 eP2P_PROVISION_DISCOVERY_RESPONSE,
187 eP2P_BEACON,
188 eP2P_GROUP_ID,
189 eP2P_ASSOC_REQ,
190 eP2P_INVITATION_REQ,
191 eP2P_INVITATION_RSP,
192 eP2P_DEVICE_DISCOVERY_REQ,
193 eP2P_DEVICE_DISCOVERY_RSP,
194} eP2PFrameType;
195
196typedef enum P2PRequest {
197 eWFD_DISCOVER_REQUEST,
198 eWFD_DEVICE_ID,
199 eWFD_DEVICE_CAPABILITY,
200 eWFD_GROUP_OWNER_CAPABILITY,
201 eWFD_DEVICE_INFO,
202 eWFD_SECONDARY_DEVICE_TYPE_LIST,
203 eWFD_ADDITIONAL_IE,
204 eWFD_GROUP_ID,
205 eWFD_SEND_GO_NEGOTIATION_REQUEST,
206 eWFD_SEND_GO_NEGOTIATION_RESPONSE,
207 eWFD_SEND_GO_NEGOTIATION_CONFIRMATION,
208 eWFD_SEND_PROVISION_DISCOVERY_REQUEST,
209 eWFD_SEND_PROVISION_DISCOVERY_RESPONSE,
210 eWFD_SEND_INVITATION_REQUEST,
211 eWFD_SEND_INVITATION_RESPONSE,
212 eWFD_OPERATING_CHANNEL,
213 eWFD_LISTEN_CHANNEL
214} eP2PRequest;
215
216typedef struct _p2p_device_capability_config {
217 tANI_BOOLEAN bServiceDiscoveryEnabled;
218 tANI_BOOLEAN bClientDiscoverabilityEnabled;
219 tANI_BOOLEAN bConcurrentOperationSupported;
220 tANI_BOOLEAN bInfrastructureManagementEnabled;
221 tANI_BOOLEAN bDeviceLimitReached;
222 tANI_BOOLEAN bInvitationProcedureEnabled;
223 tANI_U32 WPSVersionsEnabled;
224} tp2p_device_capability_config;
225
226typedef struct _p2p_group_owner_capability_config {
227 tANI_BOOLEAN bPersistentGroupEnabled;
228 tANI_BOOLEAN bIntraBSSDistributionSupported;
229 tANI_BOOLEAN bCrossConnectionSupported;
230 tANI_BOOLEAN bPersistentReconnectSupported;
231 tANI_BOOLEAN bGroupFormationEnabled;
232 tANI_U32 uMaximumGroupLimit;
233} tp2p_group_owner_capability_config;
234
235typedef struct _tP2P_ProvDiscoveryReq {
236 tANI_U8 dialogToken;
237 tANI_U8 PeerDeviceAddress[P2P_MAC_ADDRESS_LEN];
238 tANI_U32 uSendTimeout;
239 tANI_U8 GroupCapability;
240 tP2PGroupId GroupId;
241 tANI_BOOLEAN bUseGroupID;
242 tANI_U32 uIELength;
243 tANI_U8 *IEdata;
244} tP2P_ProvDiscoveryReq;
245
246typedef struct _tP2P_ProvDiscoveryRes {
247 tANI_U8 dialogToken;
248 tANI_U8 ReceiverDeviceAddress[P2P_MAC_ADDRESS_LEN];
249 tANI_U32 uSendTimeout;
250 tANI_U32 uIELength;
251 tANI_U8 *IEdata;
252} tP2P_ProvDiscoveryRes;
253
254typedef struct p2p_go_request {
255 tANI_U8 dialogToken;
256 tANI_U8 peerDeviceAddress[P2P_MAC_ADDRESS_LEN];
257 tANI_U32 uSendTimeout;
258 tANI_U8 GoIntent;
259 tANI_U32 GoTimeout;
260 tANI_U32 ClientTimeout;
261 tANI_U8 IntendedInterfaceAddress[P2P_MAC_ADDRESS_LEN];
262 tANI_U8 GroupCapability;
263 tANI_U32 uIELength;
264 tANI_U8 *IEdata;
265} tP2P_go_request;
266
267typedef struct p2p_go_confirm {
268 tANI_U8 peerDeviceAddress[P2P_MAC_ADDRESS_LEN];
269 tANI_U8 dialog_token;
270 tANI_U32 uSendTimeout;
271 tANI_U8 status;
272 tANI_U8 GroupCapability;
273 tP2PGroupId GroupId;
274 tANI_BOOLEAN bUsedGroupId;
275 tANI_U32 uIELength;
276 tANI_U8 *IEdata;
277} tP2P_go_confirm;
278
279typedef struct p2p_go_response {
280 tANI_U8 peerDeviceAddress[P2P_MAC_ADDRESS_LEN];
281 tANI_U8 dialog_token;
282 tANI_U32 uSendTimeout;
283 tANI_U8 status;
284 tANI_U8 GoIntent;
285 tANI_U32 GoTimeout;
286 tANI_U32 ClientTimeout;
287 tANI_U8 IntendedInterfaceAddress[P2P_MAC_ADDRESS_LEN];
288 tANI_U8 GroupCapability;
289 tP2PGroupId GroupId;
290 tANI_BOOLEAN bUsedGroupId;
291 tANI_U32 uIELength;
292 tANI_U8 *IEdata;
293} tP2P_go_response;
294
295//Invitation Req parameters
296typedef struct p2p_invitation_request {
297 tANI_U8 DialogToken;
298 tANI_U8 PeerDeviceAddress[P2P_MAC_ADDRESS_LEN];
299 tANI_U32 uSendTimeout;
300 tANI_U32 GoTimeout;
301 tANI_U32 ClientTimeout;
302 tANI_U8 InvitationFlags;
303 tP2PGroupBssid GroupBSSID;
304 tP2P_OperatingChannel OperatingChannel;
305 tP2PGroupId GroupID;
306 tANI_U32 uIELength;
307 tANI_U8 *IEdata;
308} tP2P_invitation_request;
309
310
311//Invitation Response parameters
312typedef struct p2p_invitation_response {
313 tANI_U8 ReceiverDeviceAddress[P2P_MAC_ADDRESS_LEN];
314 tANI_U8 DialogToken;
315 void* RequestContext;
316 tANI_U32 uSendTimeout;
317 tANI_U8 status;
318 tANI_U32 GoTimeout;
319 tANI_U32 ClientTimeout;
320 tP2PGroupBssid GroupBSSID;
321 tP2P_OperatingChannel OperatingChannel;
322 tANI_U32 uIELength;
323 tANI_U8 *IEdata;
324} tP2P_invitation_response;
325
326typedef enum eOUISubType {
327 eOUI_P2P_GONEGO_REQ,
328 eOUI_P2P_GONEGO_RES,
329 eOUI_P2P_GONEGO_CNF,
330 eOUI_P2P_INVITATION_REQ,
331 eOUI_P2P_INVITATION_RES,
332 eOUI_P2P_DEVICE_DISCOVERABILITY_REQ,
333 eOUI_P2P_DEVICE_DISCOVERABILITY_RES,
334 eOUI_P2P_PROVISION_DISCOVERY_REQ,
335 eOUI_P2P_PROVISION_DISCOVERY_RES,
336 eOUI_P2P_INVALID
337}eOUISubType;
338
339typedef enum _eP2PPort {
340 eP2PPortDevice,
341 eP2PPortGroupOwner,
342 eP2PPortClient
343} eP2PPort;
344
345typedef enum eListenDiscoverableState {
346 eStateDisabled,
347 eStateEnabled,
348
349}eListenDiscoverableState;
350
351typedef enum P2PRemainOnChnReason
352{
353 eP2PRemainOnChnReasonUnknown,
354 eP2PRemainOnChnReasonDiscovery, //Part of the discovery (search and listen)
355 eP2PRemainOnChnReasonSendFrame, //Found peer and before sending request frame
356 eP2PRemainOnChnReasonListen, //In listen-only mode
357}eP2PRemainOnChnReason;
358
359typedef struct sGroupFormationReq {
360 tCsrBssid deviceAddress;
361 tANI_U8 targetListenChannel;
362 tANI_U8 persistent_group;
363 tANI_U8 group_limit; /* may be internal */
364 tANI_U8 GO_config_timeout;
365 tANI_U8 CL_config_timeout;
366 tANI_U8 GO_intent;
367 tANI_U16 devicePasswdId;
368 tSirMacAddr groupBssid;
369 tSirMacSSid groupSsid;
370}tGroupFormationReq;
371
372typedef struct tP2PConfigParam
373{
374 v_U32_t P2POperatingChannel;
375 v_U32_t P2PListenChannel;
376 v_U32_t P2PPSSelection;
377 v_U32_t P2POpPSCTWindow;
378 v_U32_t P2PNoADuration;
379 v_U32_t P2PNoACount;
380 v_U32_t P2PNoAInterval;
381}tP2PConfigParam;
382
383#endif
384
385typedef struct sp2pContext
386{
387 v_CONTEXT_t vosContext;
388 tHalHandle hHal;
389 tANI_U8 sessionId; //Session id corresponding to P2P. On windows it is same as HDD sessionid not sme sessionid.
390 tANI_U8 SMEsessionId;
391 tANI_U8 probeReqForwarding;
392 tANI_U8 *probeRspIe;
393 tANI_U32 probeRspIeLength;
394#ifdef WLAN_FEATURE_P2P_INTERNAL
395 tANI_U8 numClients;
396 tANI_U32 maxGroupLimit;
397 ep2pOperatingMode operatingmode;
398 tANI_U8 state;
399 tANI_U8 socialChannel[MAX_SOCIAL_CHANNELS];
400 tANI_U8 currentSearchIndex;
401 tANI_U8 listenIndex;
402 tANI_U8 dialogToken;
403 tANI_U8 receivedDialogToken;
404 eOUISubType actionFrameOUI;
405 eP2PFrameType actionFrameType;
406 tANI_BOOLEAN actionFrameTimeout;
407 tANI_U8 *pSentActionFrame;
408 tANI_U32 ActionFrameLen;
409 tANI_U32 ActionFrameSendTimeout;
410 eListenDiscoverableState listenDiscoverableState;
411 tPalTimerHandle listenTimerHandler;
412 tPalTimerHandle WPSRegistrarCheckTimerHandler;
413 tANI_U32 WPSRegistrarSet;
414 tANI_U8 bWaitForWPSReady;
415 tANI_U8 bInGroupFormation;
416 tPalTimerHandle discoverTimer;
417 tPalTimerHandle retryActionFrameTimer;
418 tPalTimerHandle actionFrameTimer;
419 tPalTimerHandle nextActionFrameTimer;
420 tANI_U8 peerMacAddress[P2P_MAC_ADDRESS_LEN];
421 tANI_U8 selfMacAddress[P2P_MAC_ADDRESS_LEN];
422 tANI_U8 ReceiverDeviceAddress[P2P_MAC_ADDRESS_LEN];
423 tANI_U8 listen_search_cycle;
424 ep2pDiscoverType discoverType;
425 ep2pScanType scanType;
426 tANI_U32 uDiscoverTimeout;
427 tp2pDiscoverDeviceFilter *directedDiscoveryFilter;
428 tANI_U32 uNumDeviceFilters;
429 //Number of deviceFilter directedDiscoveryFilter holds
430 tANI_U32 uNumDeviceFilterAllocated;
431 tGroupFormationReq formationReq;
432 tANI_U8 GroupFormationPending;
433 tANI_BOOLEAN PeerFound;
434 tANI_BOOLEAN directedDiscovery;
435 tANI_U32 listenDuration;
436 tANI_U32 expire_time;
437 p2pDiscoverCompleteCallback p2pDiscoverCBFunc;
438 void *pContext;
439 tANI_BOOLEAN bForceScanLegacyNetworks;
440 tANI_U8 *DiscoverReqIeField;
441 tANI_U32 DiscoverReqIeLength;
442 tANI_U8 *GoNegoReqIeField;
443 tANI_U32 GoNegoReqIeLength;
444 tANI_U8 *GoNegoResIeField;
445 tANI_U32 GoNegoResIeLength;
446 tANI_U8 *GoNegoCnfIeField;
447 tANI_U32 GoNegoCnfIeLength;
448 tANI_U8 *ProvDiscReqIeField;
449 tANI_U32 ProvDiscReqIeLength;
450 tANI_U8 *ProvDiscResIeField;
451 tANI_U32 ProvDiscResIeLength;
452 tANI_U8 *InvitationReqIeField;
453 tANI_U32 InvitationReqIeLength;
454 tANI_U8 *InvitationResIeField;
455 tANI_U32 InvitationResIeLength;
456 tANI_U32 DiscoverableCfg;
457 vos_spin_lock_t lState;
458 tANI_U8 *pNextActionFrm;
459 tANI_U32 nNextFrmLen;
460 tANI_U32 nNextFrameTimeOut;
461 eP2PFrameType NextActionFrameType;
462 tANI_U8 ssid[32];
463 v_U32_t P2PListenChannel;
464 v_U32_t P2POperatingChannel;
465 tP2pPsConfig pNoA;
466 tANI_U8 OriginalGroupCapability;
467#endif
468} tp2pContext, *tPp2pContext;
469
470
471eHalStatus sme_RemainOnChannel( tHalHandle hHal, tANI_U8 sessionId,
472 tANI_U8 channel, tANI_U32 duration,
473 remainOnChanCallback callback,
474 void *pContext );
475eHalStatus sme_ReportProbeReq( tHalHandle hHal, tANI_U8 flag );
476eHalStatus sme_updateP2pIe( tHalHandle hHal, void *p2pIe,
477 tANI_U32 p2pIeLength );
478eHalStatus sme_sendAction( tHalHandle hHal, tANI_U8 sessionId,
Jeff Johnsone7245742012-09-05 17:12:55 -0700479 const tANI_U8 *pBuf, tANI_U32 len,
480 tANI_U16 wait, tANI_BOOLEAN noack);
Jeff Johnson295189b2012-06-20 16:38:30 -0700481eHalStatus sme_CancelRemainOnChannel( tHalHandle hHal, tANI_U8 sessionId );
482eHalStatus sme_p2pOpen( tHalHandle hHal );
483eHalStatus p2pStop( tHalHandle hHal );
484eHalStatus sme_p2pClose( tHalHandle hHal );
485eHalStatus sme_p2pSetPs( tHalHandle hHal, tP2pPsConfig * data );
486#ifdef WLAN_FEATURE_P2P_INTERNAL
487eHalStatus p2pRemainOnChannel( tHalHandle hHal, tANI_U8 sessionId,
488 tANI_U8 channel, tANI_U32 duration,
489 remainOnChanCallback callback, void *pContext,
490 eP2PRemainOnChnReason reason);
491#else
492eHalStatus p2pRemainOnChannel( tHalHandle hHal, tANI_U8 sessionId,
493 tANI_U8 channel, tANI_U32 duration,
494 remainOnChanCallback callback, void *pContext);
495#endif
496eHalStatus p2pSendAction( tHalHandle hHal, tANI_U8 sessionId,
Jeff Johnsone7245742012-09-05 17:12:55 -0700497 const tANI_U8 *pBuf, tANI_U32 len,
498 tANI_U16 wait, tANI_BOOLEAN noack);
Jeff Johnson295189b2012-06-20 16:38:30 -0700499eHalStatus p2pCancelRemainOnChannel( tHalHandle hHal, tANI_U8 sessionId );
500eHalStatus p2pSetPs( tHalHandle hHal, tP2pPsConfig *pNoA );
501#ifdef WLAN_FEATURE_P2P_INTERNAL
502eHalStatus p2pRemainOnChannelCallback(tHalHandle halHandle, void *pContext, eHalStatus scan_status);
503eHalStatus P2P_DiscoverRequest(tHalHandle hHal, tANI_U8 SessionID, tP2PDiscoverRequest *pDiscoverRequest,
504 p2pDiscoverCompleteCallback callback, void *pContext);
505tANI_U8 p2pGetDialogToken(tHalHandle hHal, tANI_U8 SessionID, eP2PFrameType actionFrameType);
506eHalStatus P2P_ListenStateDiscoverable(tHalHandle hHal, tANI_U8 sessionId, ep2pListenStateDiscoverability listenState);
507eHalStatus p2pCreateSendActionFrame(tHalHandle hHal, tANI_U8 SessionID,
508 void *p2pactionframe, eP2PFrameType actionFrameType, tANI_U32 timeout);
509eHalStatus p2pScanRequest(tp2pContext *p2pContext, p2pDiscoverCompleteCallback callback, void *pContext);
510void p2pActionFrameTimerHandler(void *pContext);
511void p2pListenDiscoverTimerHandler(void *pContext);
512void p2pDiscoverTimerHandler(void *pContext);
513void p2pRetryActionFrameTimerHandler(void *pContext);
514eHalStatus p2pGrpFormationRemainOnChanRspCallback(tHalHandle halHandle, void *pContext, tANI_U32 scanId, eCsrScanStatus scan_status);
515eHalStatus p2pChangeDefaultConfigParam(tHalHandle hHal, tP2PConfigParam *pParam);
516eHalStatus p2pGetConfigParam(tHalHandle hHal, tP2PConfigParam *pParam);
517eHalStatus p2pPS(tHalHandle hHal, tANI_U8 sessionId);
518eHalStatus p2pCloseSession(tHalHandle hHal, tANI_U8 SessionID);
519eHalStatus p2pSetSessionId(tHalHandle hHal, tANI_U8 SessionID, tANI_U8 SmeSessionId);
520tANI_BOOLEAN p2pIsOperatingChannEqualListenChann(tHalHandle hHal, tANI_U8 SessionID);
521eHalStatus p2pGetListenChannel(tHalHandle hHal, tANI_U8 SessionID, tANI_U8 *channel);
522eHalStatus p2pSetListenChannel(tHalHandle hHal, tANI_U8 SessionID, tANI_U8 channel);
523eHalStatus p2pStopDiscovery(tHalHandle hHal, tANI_U8 SessionID);
524tANI_U8 getP2PSessionIdFromSMESessionId(tHalHandle hHal, tANI_U8 SessionID);
525void p2pCallDiscoverCallback(tp2pContext *p2pContext, eP2PDiscoverStatus statusCode);
526eHalStatus p2pGetResultFilter(tp2pContext *pP2pContext,
527 tCsrScanResultFilter *pFilter);
528#endif//INTERNAL
529#endif //__P2P_API_H__