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