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