Added AddVsie, GetVsie, RemoveVsie and GetConnectingPeer methods
[platform/core/connectivity/wifi-direct-manager.git] / oem / wifi-direct-oem.h
1 /*
2  * Network Configuration Module
3  *
4  * Copyright (c) 2012 Samsung Electronics Co., Ltd. All rights reserved.
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  *
18  */
19
20 /**
21  * This file declares wifi direct oem functions and structures.
22  *
23  * @file                wifi-direct-ome.h
24  * @author      Gibyoung Kim (lastkgb.kim@samsung.com)
25  * @version     0.7
26  */
27
28 #ifndef __WIFI_DIRECT_OEM_H__
29 #define __WIFI_DIRECT_OEM_H__
30
31 #define SUPPL_PLUGIN_PATH "/usr/lib/wifi-direct-plugin-wpasupplicant.so"
32 #define SUPPL_PLUGIN_64BIT_PATH "/usr/lib64/wifi-direct-plugin-wpasupplicant.so"
33
34 #if defined TIZEN_ENABLE_PRD
35 #define SUPPL_PRD_PLUGIN_PATH "/usr/lib/wifi-direct-prd-plugin-wpasupplicant.so"
36 #define SUPPL_PRD_PLUGIN_64BIT_PATH "/usr/lib64/wifi-direct-prd-plugin-wpasupplicant.so"
37 #endif /* TIZEN_ENABLE_PRD */
38
39 #define OEM_MACSTR_LEN 18
40 #define OEM_MACADDR_LEN 6
41 #define OEM_IPADDR_LEN 4
42 #define OEM_PINSTR_LEN 8
43 #define OEM_PASS_PHRASE_LEN 64
44 #define OEM_DEV_NAME_LEN 32
45 #define OEM_IFACE_NAME_LEN 16
46 #define OEM_SERVICE_TYPE_LEN 8
47 #define OEM_QUERY_ID_LEN 15
48 #define OEM_SERVICE_MAX_LEN 1024
49
50 #if defined(TIZEN_FEATURE_ASP)
51 /* Referring to Wi-Fi Peer-to-Peer Services Technical Specification v1.1
52  * The default P2Ps PIN is 12345670. Any device decided to be GO will use
53  * that as device password
54  */
55 #define OEM_DEFAULT_P2PS_PIN "12345670"
56 #endif /* TIZEN_FEATURE_ASP */
57
58 #define OEM_MAX_PEER_NUM 8
59
60 typedef enum {
61         WFD_OEM_SC_SUCCESS = 0,
62         WFD_OEM_SC_FAIL_INFO_CURRENTLY_UNAVAILABLE = 1,
63         WFD_OEM_SC_FAIL_INCOMPATIBLE_PARAMS = 2,
64         WFD_OEM_SC_FAIL_LIMIT_REACHED = 3,
65         WFD_OEM_SC_FAIL_INVALID_PARAMS = 4,
66         WFD_OEM_SC_FAIL_UNABLE_TO_ACCOMMODATE = 5,
67         WFD_OEM_SC_FAIL_PREV_PROTOCOL_ERROR = 6,
68         WFD_OEM_SC_FAIL_NO_COMMON_CHANNELS = 7,
69         WFD_OEM_SC_FAIL_UNKNOWN_GROUP = 8,
70         WFD_OEM_SC_FAIL_BOTH_GO_INTENT_15 = 9,
71         WFD_OEM_SC_FAIL_INCOMPATIBLE_PROV_METHOD = 10,
72         WFD_OEM_SC_FAIL_REJECTED_BY_USER = 11,
73 #if defined(TIZEN_FEATURE_ASP)
74         WFD_OEM_SC_SUCCESS_ACCEPTED_BY_USER = 12,
75 #endif /* TIZEN_FEATURE_ASP */
76 } wfd_oem_status_code_e;
77
78 typedef enum {
79         WFD_OEM_WPA_STATE_DISCONNECTED,
80         WFD_OEM_WPA_STATE_INTERFACE_DISABLED,
81         WFD_OEM_WPA_STATE_INACTIVE,
82         WFD_OEM_WPA_STATE_SCANNING,
83         WFD_OEM_WPA_STATE_AUTHENTICATING,
84         WFD_OEM_WPA_STATE_ASSOCIATING,
85         WFD_OEM_WPA_STATE_ASSOCIATED,
86         WFD_OEM_WPA_STATE_4WAY_HANDSHAKE,
87         WFD_OEM_WPA_STATE_GROUP_HANDSHAKE,
88         WFD_OEM_WPA_STATE_COMPLETED,
89         WFD_OEM_WPA_STATE_MAX,
90 } ws_wpa_state_type_e;
91
92 #if defined(TIZEN_FEATURE_ASP)
93 typedef enum {
94         WFD_OEM_ASP_WPS_TYPE_NONE = 0x00,  /**< No WPS type */
95         WFD_OEM_ASP_WPS_TYPE_DEFAULT = 0x00,  /**< Default WPS type both P2PS and PIN */
96         WFD_OEM_ASP_WPS_TYPE_PIN_BOTH = 0x02,  /**< WPS type PIN code both display and keypad*/
97         WFD_OEM_ASP_WPS_TYPE_PIN_DISPLAY = 0x03,  /**< WPS type display PIN code only*/
98         WFD_OEM_ASP_WPS_TYPE_PIN_KEYPAD = 0x04,  /**< WPS type keypad to input the PIN only*/
99 } asp_wps_type_e;
100
101 typedef enum {
102         WFD_OEM_ASP_SESSION_ROLE_NONE = 0x00,  /**< Session network role none */
103         WFD_OEM_ASP_SESSION_ROLE_NEW = 0x01,  /**< Session network role new */
104         WFD_OEM_ASP_SESSION_ROLE_CLIENT = 0x02,  /**< Session network role client */
105         WFD_OEM_ASP_SESSION_ROLE_GO = 0x04,  /**< Session network role GO */
106 } wfd_oem_asp_network_role_e;
107 #endif /* TIZEN_FEATURE_ASP */
108
109 typedef enum {
110         WFD_OEM_EVENT_NONE,
111         WFD_OEM_EVENT_DEACTIVATED,
112         WFD_OEM_EVENT_PEER_FOUND,
113         WFD_OEM_EVENT_PEER_DISAPPEARED,
114         WFD_OEM_EVENT_DISCOVERY_FINISHED,
115
116         WFD_OEM_EVENT_PROV_DISC_REQ,    /* 5 */
117         WFD_OEM_EVENT_PROV_DISC_RESP,
118         WFD_OEM_EVENT_PROV_DISC_FAIL,
119
120         WFD_OEM_EVENT_GO_NEG_REQ,
121         WFD_OEM_EVENT_GO_NEG_FAIL,
122         WFD_OEM_EVENT_GO_NEG_DONE,      /* 10 */
123         WFD_OEM_EVENT_WPS_FAIL,
124         WFD_OEM_EVENT_WPS_DONE,
125         WFD_OEM_EVENT_KEY_NEG_FAIL,
126         WFD_OEM_EVENT_KEY_NEG_DONE,
127
128         WFD_OEM_EVENT_CONN_FAIL,        /* 15 */
129         WFD_OEM_EVENT_CONN_DONE,
130
131         WFD_OEM_EVENT_GROUP_CREATED,
132         WFD_OEM_EVENT_GROUP_DESTROYED,
133
134         WFD_OEM_EVENT_INVITATION_REQ,
135         WFD_OEM_EVENT_INVITATION_RES,   /* 20 */
136         WFD_OEM_EVENT_STA_CONNECTED,
137         WFD_OEM_EVENT_STA_DISCONNECTED,
138
139         WFD_OEM_EVENT_TERMINATING,      /* 23 */
140
141 #ifdef TIZEN_FEATURE_SERVICE_DISCOVERY
142         WFD_OEM_EVENT_SERV_DISC_RESP,
143         WFD_OEM_EVENT_SERV_DISC_STARTED,
144 #endif /* TIZEN_FEATURE_SERVICE_DISCOVERY */
145
146         WFD_OEM_EVENT_GROUP_FORMATION_FAILURE,
147         WFD_OEM_EVENT_INVITATION_ACCEPTED,
148 #if defined(TIZEN_FEATURE_ASP)
149         WFD_OEM_EVENT_ASP_SERV_RESP,
150         WFD_OEM_EVENT_ASP_PROV_START,
151         WFD_OEM_EVENT_ASP_PROV_DONE,
152 #endif /* TIZEN_FEATURE_ASP */
153
154         WFD_OEM_EVENT_MAX,
155 } wfd_oem_event_e;
156
157 /**
158  * This enumeration is used in frame id value in vsie method calls
159  */
160 typedef enum {
161         WFD_OEM_VSIE_FRAME_P2P_PROBE_REQ = 0,
162         WFD_OEM_VSIE_FRAME_P2P_PROBE_RESP = 1,
163         WFD_OEM_VSIE_FRAME_P2P_GO_PROBE_RESP = 2,
164         WFD_OEM_VSIE_FRAME_P2P_GO_BEACON = 3,
165         WFD_OEM_VSIE_FRAME_P2P_PD_REQ = 4,
166         WFD_OEM_VSIE_FRAME_P2P_PD_RESP = 5,
167         WFD_OEM_VSIE_FRAME_P2P_GO_NEG_REQ = 6,
168         WFD_OEM_VSIE_FRAME_P2P_GO_NEG_RESP = 7,
169         WFD_OEM_VSIE_FRAME_P2P_GO_NEG_CONF = 8,
170         WFD_OEM_VSIE_FRAME_P2P_INV_REQ = 9,
171         WFD_OEM_VSIE_FRAME_P2P_INV_RESP = 10,
172         WFD_OEM_VSIE_FRAME_P2P_ASSOC_REQ = 11,
173         WFD_OEM_VSIE_FRAME_P2P_ASSOC_RESP = 12,
174         WFD_OEM_VSIE_FRAME_ASSOC_REQ = 13,
175         WFD_OEM_VSIE_FRAME_MAX
176 } wfd_oem_vsie_frames_e;
177
178 #ifdef TIZEN_FEATURE_WIFI_DISPLAY
179 typedef enum {
180         WFD_OEM_DISPLAY_TYPE_SOURCE,
181         WFD_OEM_DISPLAY_TYPE_PRISINK,
182         WFD_OEM_DISPLAY_TYPE_SECSINK,
183         WFD_OEM_DISPLAY_TYPE_DUAL,
184 } wfd_oem_display_type_e;
185
186 typedef struct {
187         int type;
188         int availability;
189         int wsd_support;
190         int tdls_support;
191         int hdcp_support;
192         int sync_support;
193         int port;
194         int max_tput;
195 } wfd_oem_display_s;
196 #endif /* TIZEN_FEATURE_WIFI_DISPLAY */
197
198 #if defined(TIZEN_FEATURE_ASP)
199 typedef struct {
200         unsigned int adv_id;
201         unsigned int config_method;
202         long long unsigned search_id;
203         unsigned char service_type_length;
204         char *service_type;
205         unsigned char instance_name_length;
206         char *instance_name;
207 } wfd_oem_advertise_service_s;
208 #endif /* TIZEN_FEATURE_ASP */
209
210 typedef struct {
211         int age;
212         char dev_name[OEM_DEV_NAME_LEN+1];
213         unsigned char dev_addr[OEM_MACADDR_LEN];
214         unsigned char intf_addr[OEM_MACADDR_LEN];
215         unsigned char go_dev_addr[OEM_MACADDR_LEN];
216         int channel;
217         int dev_role;
218         int config_methods;
219         int pri_dev_type;
220         int sec_dev_type;
221         int dev_flags;
222         int group_flags;
223         int wps_mode;
224 #ifdef TIZEN_FEATURE_WIFI_DISPLAY
225         wfd_oem_display_s display;
226 #endif /* TIZEN_FEATURE_WIFI_DISPLAY */
227         int rssi;
228 } wfd_oem_device_s;
229
230 typedef struct {
231         unsigned char p2p_dev_addr[OEM_MACADDR_LEN];
232         unsigned char p2p_intf_addr[OEM_MACADDR_LEN];
233         char name[OEM_DEV_NAME_LEN + 1];
234         int pri_dev_type;
235         int sec_dev_type;
236         int config_methods;
237         int dev_flags;
238         int group_flags;
239         int dev_role;
240         int device_go_intent;
241 #ifdef TIZEN_FEATURE_WIFI_DISPLAY
242         wfd_oem_display_s display;
243 #endif /* TIZEN_FEATURE_WIFI_DISPLAY */
244         unsigned char p2p_go_addr[OEM_MACADDR_LEN];
245 #if defined(TIZEN_FEATURE_ASP)
246         int has_asp_services;
247         int has_asp2_services;
248 #endif /* TIZEN_FEATURE_ASP */
249         int rssi;
250 } wfd_oem_dev_data_s;
251
252 typedef struct {
253         char ssid[OEM_DEV_NAME_LEN+1];
254         unsigned char peer_device_addr[OEM_MACADDR_LEN];
255         unsigned char peer_intf_addr[OEM_MACADDR_LEN];
256         int persistent_group;
257         int wps_mode;
258         int status;
259         int error;
260 } wfd_oem_conn_data_s;
261
262 typedef struct {
263         unsigned char sa[OEM_MACADDR_LEN];
264         unsigned char go_dev_addr[OEM_MACADDR_LEN];
265         unsigned char bssid[OEM_MACADDR_LEN];
266         int persistent_id;
267         int oper_freq;
268         int listen;
269         int status;
270 } wfd_oem_invite_data_s;
271
272 typedef struct {
273         char ssid[OEM_DEV_NAME_LEN+1];
274         int freq;
275         int is_persistent;
276         char pass[OEM_PASS_PHRASE_LEN+1];
277         unsigned char go_dev_addr[OEM_MACADDR_LEN];
278 #ifdef TIZEN_FEATURE_IP_OVER_EAPOL
279         unsigned char ip_addr[OEM_IPADDR_LEN];
280         unsigned char ip_addr_mask[OEM_IPADDR_LEN];
281         unsigned char ip_addr_go[OEM_IPADDR_LEN];
282 #endif /* TIZEN_FEATURE_IP_OVER_EAPOL */
283 } wfd_oem_group_data_s;
284
285 #ifdef TIZEN_FEATURE_SERVICE_DISCOVERY
286 typedef enum {
287         WFD_OEM_SERV_STATUS_SUCCESS,
288         WFD_OEM_SERV_STATUS_FAIL,
289 } wfd_oem_serv_status_e;
290
291 typedef enum {
292         WFD_OEM_SERV_TYPE_ALL,
293         WFD_OEM_SERV_TYPE_BTADDR,
294 } wfd_oem_serv_type_e;
295
296 typedef struct {
297         int status;
298         int type;
299         unsigned char data[OEM_MACADDR_LEN];
300         unsigned char value[20];
301 } wfd_oem_service_data_s;
302 #endif /* TIZEN_FEATURE_SERVICE_DISCOVERY */
303
304 typedef struct {
305         int event_id;
306         unsigned char dev_addr[OEM_MACADDR_LEN];        /* device address */
307         unsigned char intf_addr[OEM_MACADDR_LEN];
308         int wps_mode;
309         char wps_pin[OEM_PINSTR_LEN+1]; /* just for DISPLAY */
310         char ifname[OEM_IFACE_NAME_LEN+1];
311         int dev_role;
312         unsigned char ip_addr_peer[OEM_IPADDR_LEN];
313         int edata_type;
314         void *edata;
315 #if defined(TIZEN_FEATURE_ASP)
316         void *asp_services;
317         void *asp2_services;
318 #endif /* TIZEN_FEATURE_ASP */
319 } wfd_oem_event_s;
320
321 typedef enum {
322         WFD_OEM_EDATA_TYPE_NONE,
323         WFD_OEM_EDATA_TYPE_DEVICE,
324         WFD_OEM_EDATA_TYPE_CONN,
325         WFD_OEM_EDATA_TYPE_INVITE,
326         WFD_OEM_EDATA_TYPE_GROUP,
327         WFD_OEM_EDATA_TYPE_SERVICE,
328         WFD_OEM_EDATA_TYPE_NEW_SERVICE,
329 #if defined(TIZEN_FEATURE_ASP)
330         WFD_OEM_EDATA_TYPE_ASP_SERVICE,
331         WFD_OEM_EDATA_TYPE_ASP_PROV,
332 #endif /* TIZEN_FEATURE_ASP */
333 } ws_event_type_e;
334
335 typedef enum {
336         WFD_OEM_SCAN_MODE_ACTIVE,
337         WFD_OEM_SCAN_MODE_PASSIVE,
338 } wfd_oem_scan_mode_e;
339
340 typedef enum {
341         WFD_OEM_SCAN_TYPE_FULL,
342         WFD_OEM_SCAN_TYPE_SOCIAL,
343         WFD_OEM_SCAN_TYPE_SPECIFIC,
344         WFD_OEM_SCAN_TYPE_CHANNEL1,
345         WFD_OEM_SCAN_TYPE_CHANNEL6,
346         WFD_OEM_SCAN_TYPE_CHANNEL11,
347         WFD_OEM_SCAN_TYPE_GO_FREQ,
348 } wfd_oem_scan_type_e;
349
350 typedef enum {
351         WFD_OEM_WPS_MODE_NONE,
352         WFD_OEM_WPS_MODE_PBC = 0x1,
353         WFD_OEM_WPS_MODE_DISPLAY = 0x2,
354         WFD_OEM_WPS_MODE_KEYPAD = 0x4,
355 #if defined(TIZEN_FEATURE_ASP)
356         WFD_OEM_WPS_MODE_P2PS = 0x8,
357 #endif /* TIZEN_FEATURE_ASP */
358 } wfd_oem_wps_mode_e;
359
360 #define WFD_OEM_GROUP_FLAG_GROUP_OWNER 0x1
361 #define WFD_OEM_GROUP_FLAG_PERSISTENT_GROUP 0x2
362
363 typedef enum {
364         WFD_OEM_CONN_TYPE_NONE,
365         WFD_OEM_CONN_TYPE_JOIN,
366         WFD_OEM_CONN_TYPE_AUTH,
367         WFD_OEM_CONN_TYPE_PERSISTENT = 0x4,
368 } wfd_oem_conn_flag_e;
369
370 typedef enum {
371         WFD_OEM_DEV_ROLE_NONE,
372         WFD_OEM_DEV_ROLE_GC,
373         WFD_OEM_DEV_ROLE_GO,
374 } wfd_oem_dev_role_e;
375
376 typedef struct {
377         int scan_mode;
378         int scan_time;
379         int scan_type;
380         int freq;
381         int refresh;
382 #if defined(TIZEN_FEATURE_ASP)
383         char *seek;
384 #endif /* TIZEN_FEATURE_ASP */
385 } wfd_oem_scan_param_s;
386
387 typedef struct {
388         int wps_mode;
389         int conn_flags; /* join, auth, persistent */
390         int go_intent;
391         int freq;
392         char wps_pin[OEM_PINSTR_LEN+1];
393 } wfd_oem_conn_param_s;
394
395 typedef struct {
396         int persistent;
397         int persistent_group_id;
398         int freq;
399         char passphrase[OEM_PASS_PHRASE_LEN + 1];
400 } wfd_oem_group_param_s;
401
402 typedef struct {
403         int net_id;
404         char *ifname;
405         unsigned char go_dev_addr[OEM_MACADDR_LEN];
406 } wfd_oem_invite_param_s;
407
408 typedef enum {
409         WFD_OEM_CONFIG_ATTR_STR_DEVICE_NAME,
410         WFD_OEM_CONFIG_ATTR_STR_SSID_POSTFIX,
411         WFD_OEM_CONFIG_ATTR_STR_COUNTRY,
412         WFD_OEM_CONFIG_ATTR_NUM_GO_INTENT,
413         WFD_OEM_CONFIG_ATTR_NUM_LISTEN_FREQ,
414         WFD_OEM_CONFIG_ATTR_NUM_OPER_FREQ,
415         WFD_OEM_CONFIG_ATTR_NUM_PREF_FREQ,
416         WFD_OEM_CONFIG_ATTR_NUM_PERSIST_RECONN,
417         WFD_OEM_CONFIG_ATTR_NUM_WIFI_DISPLAY,
418         WFD_OEM_CONFIG_ATTR_NUM_P2P_DISABLED,
419         WFD_OEM_CONFIG_ATTR_NUM_MAX_STA,
420         WFD_OEM_CONFIG_ATTR_LIMIT = WFD_OEM_CONFIG_ATTR_NUM_MAX_STA,
421 } wfd_oem_conf_attr_e;
422
423 #ifdef TIZEN_FEATURE_SERVICE_DISCOVERY
424 typedef enum {
425         WFD_OEM_SERVICE_TYPE_ALL,
426         WFD_OEM_SERVICE_TYPE_BONJOUR,
427         WFD_OEM_SERVICE_TYPE_UPNP,
428         WFD_OEM_SERVICE_TYPE_WS_DISCOVERY,
429         WFD_OEM_SERVICE_TYPE_WIFI_DISPLAY,
430         WFD_OEM_SERVICE_TYPE_VENDOR = 0xff,
431 } wfd_oem_service_type_e;
432
433 typedef enum {
434         WFD_OEM_BONJOUR_RDATA_PTR = 0x0c,
435         WFD_OEM_BONJOUR_RDATA_TXT = 0x10,
436 } wfd_oem_bonjour_rdata_type_e;
437
438 typedef struct {
439         /** Device address for which service discovery is requested */
440         char dev_addr[OEM_MACSTR_LEN+1];
441
442         /** service type requested */
443         char service_type[OEM_SERVICE_TYPE_LEN+1];
444
445         /** query identifier returned by wpa_supplicant for each service discovery request */
446         char query_id[OEM_QUERY_ID_LEN+1];
447 } wfd_oem_service_s;
448
449 typedef struct {
450         int protocol;
451         int trans_id;
452         int status;
453         char *str_ptr;
454         union {
455                 struct {
456                         char *version;
457                         char *service;
458                 } upnp;
459                 struct {
460                         char *query;
461                         char *rdata;
462                         wfd_oem_bonjour_rdata_type_e rdata_type;
463                 } bonjour;
464                 struct {
465                         char *data1;
466                         char *data2;
467                 } vendor;
468         } data;
469 } wfd_oem_new_service_s;
470 #endif /* TIZEN_FEATURE_SERVICE_DISCOVERY */
471
472 #define WFD_OEM_STR_PROTO_WPA "WPA"
473 #define WFD_OEM_STR_PROTO_RSN "RSN"
474 #define WFD_OEM_STR_KEY_MGMT_IEEE8021X "WPA-EAP"
475 #define WFD_OEM_STR_KEY_MGMT_PSK "WPA-PSK"
476 #define WFD_OEM_STR_KEY_MGMT_NONE "WPA-NONE"
477 #define WFD_OEM_STR_CIPHER_NONE "NONE"
478 #define WFD_OEM_STR_CIPHER_WEP40 "WEP40"
479 #define WFD_OEM_STR_CIPHER_WEP104 "WEP104"
480 #define WFD_OEM_STR_CIPHER_TKIP "TKIP"
481 #define WFD_OEM_STR_CIPHER_CCMP "CCMP"
482 #define WFD_OEM_STR_AUTH_ALG_OPEN "OPEN"
483 #define WFD_OEM_STR_MODE_GC "0"
484 #define WFD_OEM_STR_MODE_GO "3"
485
486 typedef enum {
487         WFD_OEM_PROTO_WPA = 0x01, /* WPA */
488         WFD_OEM_PROTO_RSN = 0x02, /* RSN */
489 } wfd_oem_proto_e;
490
491 typedef enum {
492         WFD_OEM_KEY_MGMT_IEEE8021X = 0x01,      /* WPA-EAP */
493         WFD_OEM_KEY_MGMT_PSK = 0x02,    /* WPA-PSK */
494         WFD_OEM_KEY_MGMT_NONE = 0x04, /* WPA-NONE */
495 } wfd_oem_key_mgmt_e;
496
497 typedef enum {
498         WFD_OEM_CIPHER_NONE = 0x01, /* NONE */
499         WFD_OEM_CIPHER_WEP40 = 0x02, /* WEP40 */
500         WFD_OEM_CIPHER_WEP104 = 0x04, /* WEP104 */
501         WFD_OEM_CIPHER_TKIP = 0x08, /* TKIP */
502         WFD_OEM_CIPHER_CCMP = 0x10, /* CCMP */
503 } wfd_oem_cipher_e;
504
505 typedef enum {
506         WFD_OEM_AUTH_ALG_OPEN = 0x01, /* OPEN */
507 } wfd_oem_auth_alg_e;
508
509 typedef enum {
510         WFD_OEM_PERSISTENT_MODE_GC = 0x0,
511         WFD_OEM_PERSISTENT_MODE_GO = 0x3,
512 } wfd_oem_persistent_mode_e;
513
514 #if defined(TIZEN_FEATURE_ASP)
515 typedef enum {
516         WFD_OEM_TYPE_ADVERTISE,
517         WFD_OEM_TYPE_SEEK,
518         WFD_OEM_TYPE_MAX,
519 } wfd_oem_asp_service_type_e;
520
521 typedef struct {
522         wfd_oem_asp_service_type_e type;
523         unsigned int adv_id;
524         long long unsigned asp_search_id;
525         long long unsigned search_id;
526         int auto_accept;
527         int discovery_tech;
528         unsigned char preferred_connection;
529
530         unsigned char status;
531         unsigned char role;
532         unsigned int config_method;
533         unsigned char tran_id;
534
535         char *instance_name;
536         char *service_name;
537         char *service_type;
538         char *service_info;
539         char *rsp_info;
540 } wfd_oem_asp_service_s;
541
542 typedef struct {
543         unsigned char session_mac[OEM_MACADDR_LEN];
544         unsigned int session_id;
545         unsigned int adv_id;
546         int network_config;
547         int network_role;
548         int port;
549         int persist;
550         int persistent_group_id;
551         char *session_information;
552         int proto;
553         int status;
554         int deferring;
555         unsigned char service_mac[OEM_MACADDR_LEN];
556         unsigned char group_mac[OEM_MACADDR_LEN];
557         char wps_pin[OEM_PINSTR_LEN+1];
558         unsigned char ip_addr[OEM_IPADDR_LEN];
559 } wfd_oem_asp_prov_s;
560 #endif /* TIZEN_FEATURE_ASP */
561 typedef struct {
562         int network_id;
563         char ssid[OEM_DEV_NAME_LEN + 1];
564         unsigned char go_mac_address[OEM_MACADDR_LEN];
565         char psk[OEM_PASS_PHRASE_LEN +1];
566         int proto;
567         int key_mgmt;
568         int pairwise;
569         int group;
570         int auth_alg;
571         int mode;
572         int p2p_client_num;
573         unsigned char p2p_client_list[OEM_MAX_PEER_NUM][OEM_MACADDR_LEN];
574 } wfd_oem_persistent_group_s;
575
576 typedef struct {
577         void (*deactivated_cb) (wfd_oem_event_s *event);
578         void (*peer_found_cb) (wfd_oem_event_s *event);
579         void (*peer_disappeared_cb) (wfd_oem_event_s *event);
580         void (*discovery_finished_cb) (wfd_oem_event_s *event);
581
582         void (*prov_disc_req_cb) (wfd_oem_event_s *event);
583         void (*prov_disc_resp_cb) (wfd_oem_event_s *event);
584         void (*prov_disc_fail_cb) (wfd_oem_event_s *event);
585
586         void (*go_neg_req_cb) (wfd_oem_event_s *event);
587         void (*go_neg_fail_cb) (wfd_oem_event_s *event);
588         void (*go_neg_done_cb) (wfd_oem_event_s *event);
589
590         void (*wps_fail_cb) (wfd_oem_event_s *event);
591         void (*wps_done_cb) (wfd_oem_event_s *event);
592         void (*key_neg_fail_cb) (wfd_oem_event_s *event);
593         void (*key_neg_done_cb) (wfd_oem_event_s *event);
594
595         void (*conn_fail_cb) (wfd_oem_event_s *event);
596         void (*conn_done_cb) (wfd_oem_event_s *event);
597
598         void (*group_created_cb) (wfd_oem_event_s *event);
599         void (*group_destroyed_cb) (wfd_oem_event_s *event);
600
601         void (*invitation_req_cb) (wfd_oem_event_s *event);
602         void (*invitation_resp_cb) (wfd_oem_event_s *event);
603         void (*sta_connected_cb) (wfd_oem_event_s *event);
604         void (*sta_disconnected_cb) (wfd_oem_event_s *event);
605
606         void (*terminating_cb) (wfd_oem_event_s *event);
607
608 #ifdef TIZEN_FEATURE_SERVICE_DISCOVERY
609         void (*serv_disc_resp_cb) (wfd_oem_event_s *event);
610         void (*serv_disc_started_cb) (wfd_oem_event_s *event);
611 #endif /* TIZEN_FEATURE_SERVICE_DISCOVERY */
612
613         void (*group_formation_failure_cb) (wfd_oem_event_s *event);
614         void (*invitation_accepted_cb) (wfd_oem_event_s *event);
615
616 #if defined(TIZEN_FEATURE_ASP)
617         void (*asp_serv_resp_cb) (wfd_oem_event_s *event);
618         void (*asp_prov_start_cb) (wfd_oem_event_s *event);
619         void (*asp_prov_done_cb) (wfd_oem_event_s *event);
620 #endif /* TIZEN_FEATURE_ASP */
621
622         void *extra_data;
623 } wfd_oem_event_cbs_s;
624
625 typedef struct {
626         int (*init) (wfd_oem_event_cbs_s *event_cbs);
627         int (*deinit) (void);
628         int (*activate) (int concurrent);
629         int (*deactivate) (int concurrent);
630
631         int (*start_scan) (wfd_oem_scan_param_s *param);
632         int (*stop_scan) (void);
633         int (*get_visibility) (int *visibility);
634         int (*set_visibility) (int visibility);
635         int (*get_scan_result) (GList **peers, int *peer_count);
636         int (*get_peer_info) (unsigned char *peer_addr, wfd_oem_device_s **peer);
637         int (*prov_disc_req) (unsigned char *peer_addr, wfd_oem_wps_mode_e wps_mode, int join);
638         int (*connect) (unsigned char *peer_addr, wfd_oem_conn_param_s *param);
639         int (*disconnect) (unsigned char *peer_addr, int is_iface_addr);
640         int (*reject_connection) (unsigned char *peer_addr);
641         int (*cancel_connection) (unsigned char *peer_addr);
642         int (*get_connected_peers) (GList **peers, int *peer_count);
643         int (*wps_start) (unsigned char *peer_addr, int wps_mode, const char *pin);
644         int (*enrollee_start) (unsigned char *peer_addr, int wps_mode, const char *pin);
645         int (*wps_cancel) (void);
646         int (*get_pin) (char *pin);
647         int (*set_pin) (char *pin);
648         int (*generate_pin) (char **pin);
649         int (*get_supported_wps_mode) (int *wps_mode);
650         int (*create_group) (wfd_oem_group_param_s *param);
651         int (*destroy_group) (const char *ifname);
652         int (*invite) (unsigned char *peer_addr, wfd_oem_invite_param_s *param);
653
654         int (*get_dev_name) (char *dev_name);
655         int (*set_dev_name) (char *dev_name);
656         int (*get_dev_mac) (char *dev_mac);
657         int (*get_dev_type) (int *pri_dev_type, int *sec_dev_type);
658         int (*set_dev_type) (int pri_dev_type, int sec_dev_type);
659         int (*get_go_intent) (int *go_intent);
660         int (*set_go_intent) (int go_intent);
661         int (*set_country) (char *ccode);
662
663         int (*get_persistent_groups) (wfd_oem_persistent_group_s **groups, int *group_count);
664         int (*remove_persistent_group) (char *ssid, unsigned char *bssid);
665         int (*set_persistent_reconnect) (unsigned char *bssid, int reconnect);
666
667 #ifdef TIZEN_FEATURE_SERVICE_DISCOVERY
668         int (*start_service_discovery) (unsigned char mac_addr[6], int service_type);
669         int (*cancel_service_discovery) (unsigned char mac_addr[6], int service_type);
670
671         int (*serv_add) (wfd_oem_new_service_s *service);
672         int (*serv_del) (wfd_oem_new_service_s *service);
673         int (*serv_disc_start) (wfd_oem_new_service_s *service);
674         int (*serv_disc_stop) (int handle);
675 #endif /* TIZEN_FEATURE_SERVICE_DISCOVERY */
676
677 #ifdef TIZEN_FEATURE_WIFI_DISPLAY
678         int (*miracast_init) (int enable);
679         int (*set_display) (wfd_oem_display_s *wifi_display);
680 #endif /* TIZEN_FEATURE_WIFI_DISPLAY */
681
682         int (*refresh) (void);
683         int (*save_config) (void);
684         int (*set_operating_channel)(int channel);
685         int (*remove_all_network)(void);
686         int (*get_wpa_status)(int *wpa_status);
687
688 #if defined(TIZEN_FEATURE_ASP)
689         int (*advertise_service)(wfd_oem_asp_service_s *service, int replace);
690         int (*cancel_advertise_service)(wfd_oem_asp_service_s *service);
691         int (*seek_service)(wfd_oem_asp_service_s *service);
692         int (*cancel_seek_service)(wfd_oem_asp_service_s *service);
693         int (*asp_prov_disc_req)(wfd_oem_asp_prov_s *params);
694 #endif /* TIZEN_FEATURE_ASP */
695
696         int (*add_vsie)(wfd_oem_vsie_frames_e frame_id, const char* vsie);
697         int (*get_vsie)(wfd_oem_vsie_frames_e frame_id, char **vsie);
698         int (*remove_vsie)(wfd_oem_vsie_frames_e frame_id, const char *vsie);
699
700         void *extra_data;
701 } wfd_oem_ops_s;
702
703 int wfd_oem_init(wfd_oem_ops_s *ops);
704 int wfd_oem_destroy(wfd_oem_ops_s *ops);
705 int wfd_oem_activate(wfd_oem_ops_s *ops, int concurrent);
706 int wfd_oem_deactivate(wfd_oem_ops_s *ops, int concurrent);
707
708 int wfd_oem_start_scan(wfd_oem_ops_s *ops, wfd_oem_scan_param_s *param);
709 int wfd_oem_stop_scan(wfd_oem_ops_s *ops);
710 int wfd_oem_get_visibility(wfd_oem_ops_s *ops, int *visibility);
711 int wfd_oem_set_visibility(wfd_oem_ops_s *ops, int visibility);
712 int wfd_oem_get_scan_result(wfd_oem_ops_s *ops, GList **peers, int *peer_count);
713 int wfd_oem_get_peer_info(wfd_oem_ops_s *ops, unsigned char *peer_addr, wfd_oem_device_s **peer);
714 int wfd_oem_prov_disc_req(wfd_oem_ops_s *ops, unsigned char *peer_addr, wfd_oem_wps_mode_e wps_mode, int join);
715 int wfd_oem_connect(wfd_oem_ops_s *ops, unsigned char *peer_addr, wfd_oem_conn_param_s *param);
716 int wfd_oem_disconnect(wfd_oem_ops_s *ops, unsigned char *peer_addr, int is_iface_addr);
717 int wfd_oem_reject_connection(wfd_oem_ops_s *ops, unsigned char *peer_addr);
718 int wfd_oem_cancel_connection(wfd_oem_ops_s *ops, unsigned char *peer_addr);
719 int wfd_oem_get_connected_peers(wfd_oem_ops_s *ops, GList **peers, int *peer_count);
720 int wfd_oem_wps_start(wfd_oem_ops_s *ops, unsigned char *peer_addr, int wps_mode, const char *pin);
721 int wfd_oem_enrollee_start(wfd_oem_ops_s *ops, unsigned char *peer_addr, int wps_mode, const char *pin);
722 int wfd_oem_wps_cancel(wfd_oem_ops_s *ops);
723 int wfd_oem_get_pin(wfd_oem_ops_s *ops, char *pin);
724 int wfd_oem_set_pin(wfd_oem_ops_s *ops, char *pin);
725 int wfd_oem_generate_pin(wfd_oem_ops_s *ops, char **pin);
726 int wfd_oem_get_supported_wps_mode(wfd_oem_ops_s *ops, int *wps_mode);
727 int wfd_oem_create_group(wfd_oem_ops_s *ops, wfd_oem_group_param_s *param);
728 int wfd_oem_destroy_group(wfd_oem_ops_s *ops, const char *ifname);
729 int wfd_oem_invite(wfd_oem_ops_s *ops, unsigned char *peer_addr, wfd_oem_invite_param_s *param);
730
731 int wfd_oem_get_dev_name(wfd_oem_ops_s *ops, char *dev_name);
732 int wfd_oem_set_dev_name(wfd_oem_ops_s *ops, char *dev_name);
733 int wfd_oem_get_dev_mac(wfd_oem_ops_s *ops, char *dev_mac);
734 int wfd_oem_get_dev_type(wfd_oem_ops_s *ops, int *pri_dev_type, int *sec_dev_type);
735 int wfd_oem_set_dev_type(wfd_oem_ops_s *ops, int priv_dev_type, int sec_dev_type);
736 int wfd_oem_get_go_intent(wfd_oem_ops_s *ops, int *go_intent);
737 int wfd_oem_set_go_intent(wfd_oem_ops_s *ops, int go_intent);
738 int wfd_oem_set_country(wfd_oem_ops_s *ops, char *ccode);
739
740 int wfd_oem_get_persistent_groups(wfd_oem_ops_s *ops, wfd_oem_persistent_group_s **groups, int *group_count);
741 int wfd_oem_remove_persistent_group(wfd_oem_ops_s *ops, char *ssid, unsigned char *bssid);
742 int wfd_oem_set_persistent_reconnect(wfd_oem_ops_s *ops, unsigned char *bssid, int reconnect);
743
744 #ifdef TIZEN_FEATURE_SERVICE_DISCOVERY
745 int wfd_oem_start_service_discovery(wfd_oem_ops_s *ops, unsigned char *peer_addr, int service_type);
746 int wfd_oem_cancel_service_discovery(wfd_oem_ops_s *ops, unsigned char *peer_addr, int service_type);
747
748 int wfd_oem_serv_add(wfd_oem_ops_s *ops, wfd_oem_new_service_s *service);
749 int wfd_oem_serv_del(wfd_oem_ops_s *ops, wfd_oem_new_service_s *service);
750 int wfd_oem_serv_disc_start(wfd_oem_ops_s *ops, wfd_oem_new_service_s *service);
751 int wfd_oem_serv_disc_stop(wfd_oem_ops_s *ops, int handle);
752 #endif /* TIZEN_FEATURE_SERVICE_DISCOVERY */
753
754 #ifdef TIZEN_FEATURE_WIFI_DISPLAY
755 int wfd_oem_miracast_init(wfd_oem_ops_s *ops, int enable);
756 int wfd_oem_set_display(wfd_oem_ops_s *ops, wfd_oem_display_s *wifi_display);
757 #endif /* TIZEN_FEATURE_WIFI_DISPLAY */
758
759 int wfd_oem_refresh(wfd_oem_ops_s *ops);
760 #if defined(TIZEN_FEATURE_ASP)
761 int wfd_oem_advertise_service(wfd_oem_ops_s *ops, wfd_oem_asp_service_s *service, int replace);
762 int wfd_oem_cancel_advertise_service(wfd_oem_ops_s *ops, wfd_oem_asp_service_s *service);
763 int wfd_oem_seek_service(wfd_oem_ops_s *ops, wfd_oem_asp_service_s *service);
764 int wfd_oem_cancel_seek_service(wfd_oem_ops_s *ops, wfd_oem_asp_service_s *service);
765 int wfd_oem_asp_prov_disc_req(wfd_oem_ops_s *ops, wfd_oem_asp_prov_s *params);
766 #endif /* TIZEN_FEATURE_ASP */
767
768 int wfd_oem_add_vsie(wfd_oem_ops_s *ops, wfd_oem_vsie_frames_e frame_id,
769                      const char* vsie);
770 int wfd_oem_get_vsie(wfd_oem_ops_s *ops, wfd_oem_vsie_frames_e frame_id,
771                      char **vsie);
772 int wfd_oem_remove_vsie(wfd_oem_ops_s *ops, wfd_oem_vsie_frames_e frame_id,
773                         const char *vsie);
774
775 #if defined TIZEN_ENABLE_PRD
776 typedef struct {
777         void (*prd_example_cb) (wfd_oem_event_s *event);
778 } wfd_oem_prd_event_cbs_s;
779
780 typedef struct {
781         int (*prd_init) (wfd_oem_event_cbs_s *event_cbs);
782 } wfd_oem_prd_ops_s;
783
784 int wfd_oem_prd_init(wfd_oem_ops_s *ops);
785 #endif /* TIZEN_ENABLE_PRD */
786
787 #endif /* __WIFI_DIRECT_OEM_H__ */