1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
|
//---------------------------------------------------------------------------
//
// Copyright (c) 2013 Realtek Semiconductor, Inc. All rights reserved.
//
//---------------------------------------------------------------------------
// Description:
// P2P Service interface for upper layers
//
#ifndef __INC_P2P_SVC_TYPE_H
#define __INC_P2P_SVC_TYPE_H
//-----------------------------------------------------------------------------
// P2PSVC Version
//-----------------------------------------------------------------------------
// The current support version of WFD
#define P2PSVC_MIN_SUPPORT_VER 0
#define P2PSVC_MAX_SUPPORT_VER 0
#define P2PSVC_OBJECT_VERSION_DONT_CARE 0
#define P2PSVC_OBJECT_VERSION_INVLAID 0xFFFFFFFF
//-----------------------------------------------------------------------------
// Reason string
//-----------------------------------------------------------------------------
typedef u4Byte P2PSVC_REASON, *PP2PSVC_REASON;
#define P2PSVC_REASON_NONE ((P2PSVC_REASON)0x00000000)
#define P2PSVC_REASON_PEER_UNRECOGNIZED ((P2PSVC_REASON)0x00000001)
#define P2PSVC_REASON_ADV_ID_MISMATCH ((P2PSVC_REASON)0x00000002)
#define P2PSVC_REASON_CONFIG_METHOD_MISMATCH ((P2PSVC_REASON)0x00000003)
#define P2PSVC_REASON_INVALID_CONN_CAP ((P2PSVC_REASON)0x00000004)
#define P2PSVC_REASON_NO_MATCHING_SVC ((P2PSVC_REASON)0x00000005)
#define P2PSVC_REASON_REQ_SVC_NOT_AVAILABLE ((P2PSVC_REASON)0x00000006)
#define P2PSVC_REASON_MISS_ATTR_STATUS ((P2PSVC_REASON)0x00000007)
#define P2PSVC_REASON_MISS_ATTR_CONN_CAP ((P2PSVC_REASON)0x00000008)
#define P2PSVC_REASON_MISS_ATTR_GRP_ID ((P2PSVC_REASON)0x00000009)
#define P2PSVC_REASON_MISS_ATTR_INTF_ADDR ((P2PSVC_REASON)0x0000000A)
#define P2PSVC_REASON_MISS_ATTR_OP_CHNL ((P2PSVC_REASON)0x0000000B)
#define P2PSVC_REASON_MISS_ATTR_SESSION_ID_INFO ((P2PSVC_REASON)0x0000000C)
#define P2PSVC_REASON_MISS_ATTR_DEV_INFO ((P2PSVC_REASON)0x0000000D)
#define P2PSVC_DEFINE_REASON(__reasonStr) (#__reasonStr)
static char* P2PSVC_REASON_STR_TAB[] =
{
P2PSVC_DEFINE_REASON(P2PSVC_REASON_NONE), // 0x00000000
P2PSVC_DEFINE_REASON(P2PSVC_REASON_PEER_UNRECOGNIZED), // 0x00000001
P2PSVC_DEFINE_REASON(P2PSVC_REASON_ADV_ID_MISMATCH), // 0x00000002
P2PSVC_DEFINE_REASON(P2PSVC_REASON_CONFIG_METHOD_MISMATCH), // 0x00000003
P2PSVC_DEFINE_REASON(P2PSVC_REASON_INVALID_CONN_CAP), // 0x00000004
P2PSVC_DEFINE_REASON(P2PSVC_REASON_NO_MATCHING_SVC), // 0x00000005
P2PSVC_DEFINE_REASON(P2PSVC_REASON_REQ_SVC_NOT_AVAILABLE), // 0x00000006
P2PSVC_DEFINE_REASON(P2PSVC_REASON_MISS_ATTR_STATUS), // 0x00000007
P2PSVC_DEFINE_REASON(P2PSVC_REASON_MISS_ATTR_CONN_CAP), // 0x00000008
P2PSVC_DEFINE_REASON(P2PSVC_REASON_MISS_ATTR_GRP_ID), // 0x00000009
P2PSVC_DEFINE_REASON(P2PSVC_REASON_MISS_ATTR_INTF_ADDR), // 0x0000000A
P2PSVC_DEFINE_REASON(P2PSVC_REASON_MISS_ATTR_OP_CHNL), // 0x0000000B
P2PSVC_DEFINE_REASON(P2PSVC_REASON_MISS_ATTR_SESSION_ID_INFO), // 0x0000000C
P2PSVC_DEFINE_REASON(P2PSVC_REASON_MISS_ATTR_DEV_INFO), // 0x0000000D
};
//-----------------------------------------------------------------------------
// Object Header
//-----------------------------------------------------------------------------
#define P2PSVC_OBJ_HDR_ID_BMP_DATA ((u4Byte)BIT28)
#define P2PSVC_OBJ_HDR_ID_BMP_ACTION ((u4Byte)BIT29)
#define P2PSVC_OBJ_HDR_ID_BMP_INDICATE ((u4Byte)BIT30)
#define P2PSVC_OBJ_HDR_ID_BMP_RSVD_2 ((u4Byte)BIT31)
#define P2PSVC_OBJ_HDR_ID_UNKNOWN ((u4Byte)0x00000000)
// Data obj ID
#define P2PSVC_OBJ_HDR_ID_DATA_UNKNOWN ((u4Byte)0x00000000 | P2PSVC_OBJ_HDR_ID_BMP_DATA)
#define P2PSVC_OBJ_HDR_ID_DATA_OBJ_LIST ((u4Byte)0x00000001 | P2PSVC_OBJ_HDR_ID_BMP_DATA)
#define P2PSVC_OBJ_HDR_ID_DATA_BENABLE ((u4Byte)0x00000002 | P2PSVC_OBJ_HDR_ID_BMP_DATA)
#define P2PSVC_OBJ_HDR_ID_DATA_SVC_NAME ((u4Byte)0x00000003 | P2PSVC_OBJ_HDR_ID_BMP_DATA)
#define P2PSVC_OBJ_HDR_ID_DATA_SVC_NAME_HASH ((u4Byte)0x00000004 | P2PSVC_OBJ_HDR_ID_BMP_DATA)
#define P2PSVC_OBJ_HDR_ID_DATA_SVC_INFO_REQ ((u4Byte)0x00000005 | P2PSVC_OBJ_HDR_ID_BMP_DATA)
#define P2PSVC_OBJ_HDR_ID_DATA_SVC_INFO ((u4Byte)0x00000006 | P2PSVC_OBJ_HDR_ID_BMP_DATA)
#define P2PSVC_OBJ_HDR_ID_DATA_SVC_AUTO_ACCEPT ((u4Byte)0x00000007 | P2PSVC_OBJ_HDR_ID_BMP_DATA)
#define P2PSVC_OBJ_HDR_ID_DATA_SVC_STATUS ((u4Byte)0x00000008 | P2PSVC_OBJ_HDR_ID_BMP_DATA)
#define P2PSVC_OBJ_HDR_ID_DATA_ADV_ID ((u4Byte)0x00000009 | P2PSVC_OBJ_HDR_ID_BMP_DATA)
#define P2PSVC_OBJ_HDR_ID_DATA_DEV_ADDR ((u4Byte)0x0000000A | P2PSVC_OBJ_HDR_ID_BMP_DATA)
#define P2PSVC_OBJ_HDR_ID_DATA_SEARCH_ID ((u4Byte)0x0000000B | P2PSVC_OBJ_HDR_ID_BMP_DATA)
#define P2PSVC_OBJ_HDR_ID_DATA_DEV_NAME ((u4Byte)0x0000000C | P2PSVC_OBJ_HDR_ID_BMP_DATA)
#define P2PSVC_OBJ_HDR_ID_DATA_SVC_DESC_LIST ((u4Byte)0x0000000D | P2PSVC_OBJ_HDR_ID_BMP_DATA)
#define P2PSVC_OBJ_HDR_ID_DATA_SESSION_INFO ((u4Byte)0x0000000E | P2PSVC_OBJ_HDR_ID_BMP_DATA)
#define P2PSVC_OBJ_HDR_ID_DATA_NETWORK_ROLE ((u4Byte)0x0000000F | P2PSVC_OBJ_HDR_ID_BMP_DATA)
#define P2PSVC_OBJ_HDR_ID_DATA_CONN_CAP ((u4Byte)0x00000010 | P2PSVC_OBJ_HDR_ID_BMP_DATA)
#define P2PSVC_OBJ_HDR_ID_DATA_SESSION_ID ((u4Byte)0x00000011 | P2PSVC_OBJ_HDR_ID_BMP_DATA)
#define P2PSVC_OBJ_HDR_ID_DATA_USER_ACCEPTED ((u4Byte)0x00000012 | P2PSVC_OBJ_HDR_ID_BMP_DATA)
#define P2PSVC_OBJ_HDR_ID_DATA_SVC_COUNT ((u4Byte)0x00000013 | P2PSVC_OBJ_HDR_ID_BMP_DATA)
#define P2PSVC_OBJ_HDR_ID_DATA_P2P_STATUS ((u4Byte)0x00000014 | P2PSVC_OBJ_HDR_ID_BMP_DATA)
#define P2PSVC_OBJ_HDR_ID_DATA_P2P_ATTRIBUTES ((u4Byte)0x00000015 | P2PSVC_OBJ_HDR_ID_BMP_DATA)
#define P2PSVC_OBJ_HDR_ID_DATA_SSID ((u4Byte)0x00000016 | P2PSVC_OBJ_HDR_ID_BMP_DATA)
#define P2PSVC_OBJ_HDR_ID_DATA_INTF_ADDR ((u4Byte)0x00000017 | P2PSVC_OBJ_HDR_ID_BMP_DATA)
#define P2PSVC_OBJ_HDR_ID_DATA_OP_CHNL ((u4Byte)0x00000018 | P2PSVC_OBJ_HDR_ID_BMP_DATA)
#define P2PSVC_OBJ_HDR_ID_DATA_CONFIG_METHOD ((u4Byte)0x00000019 | P2PSVC_OBJ_HDR_ID_BMP_DATA)
#define P2PSVC_OBJ_HDR_ID_DATA_DEFERRED ((u4Byte)0x0000001A | P2PSVC_OBJ_HDR_ID_BMP_DATA)
#define P2PSVC_OBJ_HDR_ID_DATA_IS_SD_DONE ((u4Byte)0x0000001B | P2PSVC_OBJ_HDR_ID_BMP_DATA)
#define P2PSVC_OBJ_HDR_ID_DATA_IS_PERSISTENT ((u4Byte)0x0000001C | P2PSVC_OBJ_HDR_ID_BMP_DATA)
#define P2PSVC_OBJ_HDR_ID_DATA_CONN_ACTION ((u4Byte)0x0000001D | P2PSVC_OBJ_HDR_ID_BMP_DATA)
#define P2PSVC_OBJ_HDR_ID_DATA_REASON ((u4Byte)0x0000001E | P2PSVC_OBJ_HDR_ID_BMP_DATA)
#define P2PSVC_OBJ_HDR_ID_DATA_NETWORK_CONFIG ((u4Byte)0x0000001F | P2PSVC_OBJ_HDR_ID_BMP_DATA)
#define P2PSVC_OBJ_HDR_ID_DATA_GET_NETWORK_CONFIG_PIN ((u4Byte)0x00000020 | P2PSVC_OBJ_HDR_ID_BMP_DATA)
#define P2PSVC_OBJ_HDR_ID_DATA_NETWORK_CONFIG_PIN ((u4Byte)0x00000021 | P2PSVC_OBJ_HDR_ID_BMP_DATA)
#define P2PSVC_OBJ_HDR_ID_DATA_GRP_DEV_ADDR ((u4Byte)0x00000022 | P2PSVC_OBJ_HDR_ID_BMP_DATA)
// Action obj ID
#define P2PSVC_OBJ_HDR_ID_ACT_UNKNOWN ((u4Byte)0x00000000 | P2PSVC_OBJ_HDR_ID_BMP_ACTION)
#define P2PSVC_OBJ_HDR_ID_ACT_ENABLE ((u4Byte)0x00000001 | P2PSVC_OBJ_HDR_ID_BMP_ACTION)
#define P2PSVC_OBJ_HDR_ID_ACT_SEEK ((u4Byte)0x00000002 | P2PSVC_OBJ_HDR_ID_BMP_ACTION)
#define P2PSVC_OBJ_HDR_ID_ACT_CANCEL_SEEK ((u4Byte)0x00000003 | P2PSVC_OBJ_HDR_ID_BMP_ACTION)
#define P2PSVC_OBJ_HDR_ID_ACT_ADVERTISE ((u4Byte)0x00000004 | P2PSVC_OBJ_HDR_ID_BMP_ACTION)
#define P2PSVC_OBJ_HDR_ID_ACT_CANCEL_ADVERTISE ((u4Byte)0x00000005 | P2PSVC_OBJ_HDR_ID_BMP_ACTION)
#define P2PSVC_OBJ_HDR_ID_ACT_SVC_STATUS ((u4Byte)0x00000006 | P2PSVC_OBJ_HDR_ID_BMP_ACTION)
#define P2PSVC_OBJ_HDR_ID_ACT_PD_REQ ((u4Byte)0x00000007 | P2PSVC_OBJ_HDR_ID_BMP_ACTION)
#define P2PSVC_OBJ_HDR_ID_ACT_FOPD_REQ ((u4Byte)0x00000008 | P2PSVC_OBJ_HDR_ID_BMP_ACTION)
#define P2PSVC_OBJ_HDR_ID_ACT_CONN_CAP ((u4Byte)0x00000009 | P2PSVC_OBJ_HDR_ID_BMP_ACTION)
// Indication obj ID
#define P2PSVC_OBJ_HDR_ID_INDIC_UNKNOWN ((u4Byte)0x00000000 | P2PSVC_OBJ_HDR_ID_BMP_INDICATE)
#define P2PSVC_OBJ_HDR_ID_INDIC_INITOR_PD_REQ_SENT ((u4Byte)0x00000100 | P2PSVC_OBJ_HDR_ID_BMP_INDICATE)
#define P2PSVC_OBJ_HDR_ID_INDIC_INITOR_ON_PD_RSP ((u4Byte)0x00000101 | P2PSVC_OBJ_HDR_ID_BMP_INDICATE)
#define P2PSVC_OBJ_HDR_ID_INDIC_INITOR_ON_FOPD_REQ ((u4Byte)0x00000102 | P2PSVC_OBJ_HDR_ID_BMP_INDICATE)
#define P2PSVC_OBJ_HDR_ID_INDIC_INITOR_FOPD_RSP_SENT ((u4Byte)0x00000103 | P2PSVC_OBJ_HDR_ID_BMP_INDICATE)
#define P2PSVC_OBJ_HDR_ID_INDIC_INITOR_PD_REQ_SEND_FAILED ((u4Byte)0x00000104 | P2PSVC_OBJ_HDR_ID_BMP_INDICATE)
#define P2PSVC_OBJ_HDR_ID_INDIC_INITOR_PD_TOPOLOGY ((u4Byte)0x00000105 | P2PSVC_OBJ_HDR_ID_BMP_INDICATE)
#define P2PSVC_OBJ_HDR_ID_INDIC_INITOR_ON_BAD_PD_RSP ((u4Byte)0x00000106 | P2PSVC_OBJ_HDR_ID_BMP_INDICATE)
#define P2PSVC_OBJ_HDR_ID_INDIC_INITOR_ON_BAD_FOPD_REQ ((u4Byte)0x00000107 | P2PSVC_OBJ_HDR_ID_BMP_INDICATE)
#define P2PSVC_OBJ_HDR_ID_INDIC_RSPDOR_ON_PD_REQ ((u4Byte)0x00000200 | P2PSVC_OBJ_HDR_ID_BMP_INDICATE)
#define P2PSVC_OBJ_HDR_ID_INDIC_RSPDOR_PD_RSP_SENT ((u4Byte)0x00000201 | P2PSVC_OBJ_HDR_ID_BMP_INDICATE)
#define P2PSVC_OBJ_HDR_ID_INDIC_RSPDOR_FOPD_REQ_SENT ((u4Byte)0x00000202 | P2PSVC_OBJ_HDR_ID_BMP_INDICATE)
#define P2PSVC_OBJ_HDR_ID_INDIC_RSPDOR_ON_FOPD_RSP ((u4Byte)0x00000203 | P2PSVC_OBJ_HDR_ID_BMP_INDICATE)
#define P2PSVC_OBJ_HDR_ID_INDIC_RSPDOR_FOPD_REQ_SEND_FAILED ((u4Byte)0x00000204 | P2PSVC_OBJ_HDR_ID_BMP_INDICATE)
#define P2PSVC_OBJ_HDR_ID_INDIC_RSPDOR_PD_TOPOLOGY ((u4Byte)0x00000205 | P2PSVC_OBJ_HDR_ID_BMP_INDICATE)
#define P2PSVC_OBJ_HDR_ID_INDIC_RSPDOR_ON_BAD_PD_REQ ((u4Byte)0x00000206 | P2PSVC_OBJ_HDR_ID_BMP_INDICATE)
#define P2PSVC_OBJ_HDR_ID_INDIC_RSPDOR_ON_BAD_FOPD_RSP ((u4Byte)0x00000207 | P2PSVC_OBJ_HDR_ID_BMP_INDICATE)
#define P2PSVC_OBJ_HDR_ID_INDIC_NEGO_REQ_SENT ((u4Byte)0x00000400 | P2PSVC_OBJ_HDR_ID_BMP_INDICATE)
#define P2PSVC_OBJ_HDR_ID_INDIC_NEGO_RSP_RECVD ((u4Byte)0x00000401 | P2PSVC_OBJ_HDR_ID_BMP_INDICATE)
#define P2PSVC_OBJ_HDR_ID_INDIC_NEGO_CONF_SENT ((u4Byte)0x00000402 | P2PSVC_OBJ_HDR_ID_BMP_INDICATE)
#define P2PSVC_OBJ_HDR_ID_INDIC_NEGO_REQ_SEND_FAILED ((u4Byte)0x00000403 | P2PSVC_OBJ_HDR_ID_BMP_INDICATE)
#define P2PSVC_OBJ_HDR_ID_INDIC_NEGO_CONF_SEND_FAILED ((u4Byte)0x00000404 | P2PSVC_OBJ_HDR_ID_BMP_INDICATE)
#define P2PSVC_OBJ_HDR_ID_INDIC_NEGO_REQ_RECVD ((u4Byte)0x00000800 | P2PSVC_OBJ_HDR_ID_BMP_INDICATE)
#define P2PSVC_OBJ_HDR_ID_INDIC_NEGO_RSP_SENT ((u4Byte)0x00000801 | P2PSVC_OBJ_HDR_ID_BMP_INDICATE)
#define P2PSVC_OBJ_HDR_ID_INDIC_NEGO_CONF_RECVD ((u4Byte)0x00000802 | P2PSVC_OBJ_HDR_ID_BMP_INDICATE)
#define P2PSVC_OBJ_HDR_ID_INDIC_NEGO_RSP_SEND_FAILED ((u4Byte)0x00000803 | P2PSVC_OBJ_HDR_ID_BMP_INDICATE)
#define P2PSVC_OBJ_HDR_ID_INDIC_SEARCH_RESULT ((u4Byte)0x00000C00 | P2PSVC_OBJ_HDR_ID_BMP_INDICATE)
#define P2PSVC_MAX_OBJ_LIST_ENTRIES 32
#define P2PSVC_WIFI_WFDS_SERVICE_NAME "org.wi-fi.wfds"
#define P2PSVC_WIFI_WFDS_MAX_SERVICE_NAME_LEN 255
typedef struct _P2PSVC_SVC_NAME_HASH_TAB
{
WCHAR svcName[256];
UCHAR hash[6];
}P2PSVC_SVC_NAME_HASH_TAB, *PP2PSVC_SVC_NAME_HASH_TAB;
static P2PSVC_SVC_NAME_HASH_TAB gP2PSVC_NameHashTab[] =
{
{L"org.wi-fi.wfds", {0x6d, 0xb8, 0x71, 0x03, 0x11, 0xf8}},
{L"org.wi-fi.wfds.send.rx", {0xeb, 0xac, 0xb9, 0x5f, 0x37, 0x4e}},
{L"org.wi-fi.wfds.send.tx", {0x28, 0x6d, 0xef, 0xe4, 0x6d, 0xd5}},
{L"org.wi-fi.wfds.play.rx", {0x20, 0xcd, 0xdd, 0x02, 0x10, 0xca}},
{L"org.wi-fi.wfds.play.tx", {0xe8, 0x19, 0x14, 0x6c, 0x33, 0xe3}},
{L"org.wi-fi.wfds.display.rx", {0x9e, 0x26, 0x60, 0x5a, 0x4f, 0xd4}},
{L"org.wi-fi.wfds.display.tx", {0x0b, 0x8c, 0x3c, 0xd4, 0x22, 0x05}},
{L"org.wi-fi.wfds.print.rx", {0xe8, 0x52, 0xf0, 0xab, 0xd5, 0x8b}},
{L"org.wi-fi.wfds.print.tx", {0x94, 0x63, 0x35, 0xc3, 0xdf, 0xd7}},
//------------------------------------------------------------
{L"", {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}},
};
#pragma pack(1)
typedef struct _P2PSVC_OBJ_LIST
{
// Hdr
RT_OBJECT_HEADER hdr; // len is form Value to the end of the structure including the var len field
// Fixed
u4Byte nObjs;
u4Byte ObjTab[P2PSVC_MAX_OBJ_LIST_ENTRIES];
// Var
u1Byte varStart[1];
}P2PSVC_OBJ_LIST, *PP2PSVC_OBJ_LIST;
#pragma pack()
// Return ptr to the obj in the obj list of a specifc index
// If index is beyond the # of objs in the list, return NULL
#define P2PSVC_OBJ_LIST_GET_OBJ(__pObjList, __index) \
(((__index) < ((__pObjList)->nObjs)) ? \
(((PRT_OBJECT_HEADER)(((__pObjList)->varStart) + ((__pObjList)->ObjTab)[(__index)]))) : \
(NULL))
// Return the length of the total obj list structure including the var field
// Assume the obj list is valid
#define P2PSVC_OBJ_LIST_LEN(__pObjList) ((FIELD_OFFSET(RT_OBJECT_HEADER, Value) + ((__pObjList)->hdr.Length)))
#define P2PSVC_OBJ_LIST_VAR_LEN(__pObjList) (((__pObjList)->hdr.Length) - (FIELD_OFFSET(P2PSVC_OBJ_LIST, varStart) - FIELD_OFFSET(RT_OBJECT_HEADER, Value)))
#define P2PSVC_OBJ_LIST_INIT(__pObjList, __type, __id, __ver)\
{\
RT_ASSIGN_OBJECT_HEADER(&(__pObjList)->hdr, __type, __id, __ver, FIELD_OFFSET(P2PSVC_OBJ_LIST, varStart) - FIELD_OFFSET(RT_OBJECT_HEADER, Value));\
(__pObjList)->nObjs = 0;\
}
//
// P2P Services connection capability bitmap
//
#define P2PSVC_CONN_CAP_BMP_NONE ((u1Byte)0)
#define P2PSVC_CONN_CAP_BMP_NEW ((u1Byte)BIT0)
#define P2PSVC_CONN_CAP_BMP_CLI ((u1Byte)BIT1)
#define P2PSVC_CONN_CAP_BMP_GO ((u1Byte)BIT2)
//
// P2P Services connection methods
//
#define P2PSVC_CONN_METHOD_NONE ((u4Byte)0x00000000)
#define P2PSVC_CONN_METHOD_INIT_NEGO ((u4Byte)0x00000001) // Init GO Negotiation
#define P2PSVC_CONN_METHOD_WAIT_NEGO ((u4Byte)0x00000002) // Wait GO Negotiation
#define P2PSVC_CONN_METHOD_JOIN_BY ((u4Byte)0x00000003) // Peer will join existing group
#define P2PSVC_CONN_METHOD_JOIN ((u4Byte)0x00000004) // Join existing group peer is hosting
#define P2PSVC_CONN_METHOD_AUTO_GO ((u4Byte)0x00000005) // Start Auto GO for peer to join
#endif // #ifndef __INC_P2P_SVC_TYPE_H
|