[Support Legacy Connection] Update peer disconnection logic.
[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
35 #define OEM_MACSTR_LEN 18
36 #define OEM_MACADDR_LEN 6
37 #define OEM_IPADDR_LEN 4
38 #define OEM_PINSTR_LEN 8
39 #define OEM_PASS_PHRASE_LEN 64
40 #define OEM_DEV_NAME_LEN 32
41 #define OEM_IFACE_NAME_LEN 16
42 #define OEM_SERVICE_TYPE_LEN 8
43 #define OEM_QUERY_ID_LEN 15
44 #define OEM_SERVICE_MAX_LEN 1024
45
46 #if defined(TIZEN_FEATURE_ASP)
47 /* Referring to Wi-Fi Peer-to-Peer Services Technical Specification v1.1
48  * The default P2Ps PIN is 12345670. Any device decided to be GO will use
49  * that as device password
50  */
51 #define OEM_DEFAULT_P2PS_PIN "12345670"
52 #endif /* TIZEN_FEATURE_ASP */
53
54 #define OEM_MAX_PEER_NUM 8
55
56 typedef enum {
57         WFD_OEM_SC_SUCCESS = 0,
58         WFD_OEM_SC_FAIL_INFO_CURRENTLY_UNAVAILABLE = 1,
59         WFD_OEM_SC_FAIL_INCOMPATIBLE_PARAMS = 2,
60         WFD_OEM_SC_FAIL_LIMIT_REACHED = 3,
61         WFD_OEM_SC_FAIL_INVALID_PARAMS = 4,
62         WFD_OEM_SC_FAIL_UNABLE_TO_ACCOMMODATE = 5,
63         WFD_OEM_SC_FAIL_PREV_PROTOCOL_ERROR = 6,
64         WFD_OEM_SC_FAIL_NO_COMMON_CHANNELS = 7,
65         WFD_OEM_SC_FAIL_UNKNOWN_GROUP = 8,
66         WFD_OEM_SC_FAIL_BOTH_GO_INTENT_15 = 9,
67         WFD_OEM_SC_FAIL_INCOMPATIBLE_PROV_METHOD = 10,
68         WFD_OEM_SC_FAIL_REJECTED_BY_USER = 11,
69 #if defined(TIZEN_FEATURE_ASP)
70         WFD_OEM_SC_SUCCESS_ACCEPTED_BY_USER = 12,
71 #endif /* TIZEN_FEATURE_ASP */
72 } wfd_oem_status_code_e;
73
74 typedef enum {
75         WFD_OEM_WPA_STATE_DISCONNECTED,
76         WFD_OEM_WPA_STATE_INTERFACE_DISABLED,
77         WFD_OEM_WPA_STATE_INACTIVE,
78         WFD_OEM_WPA_STATE_SCANNING,
79         WFD_OEM_WPA_STATE_AUTHENTICATING,
80         WFD_OEM_WPA_STATE_ASSOCIATING,
81         WFD_OEM_WPA_STATE_ASSOCIATED,
82         WFD_OEM_WPA_STATE_4WAY_HANDSHAKE,
83         WFD_OEM_WPA_STATE_GROUP_HANDSHAKE,
84         WFD_OEM_WPA_STATE_COMPLETED,
85         WFD_OEM_WPA_STATE_MAX,
86 } ws_wpa_state_type_e;
87
88 #if defined(TIZEN_FEATURE_ASP)
89 typedef enum {
90         WFD_OEM_ASP_WPS_TYPE_NONE = 0x00,  /**< No WPS type */
91         WFD_OEM_ASP_WPS_TYPE_DEFAULT = 0x00,  /**< Default WPS type both P2PS and PIN */
92         WFD_OEM_ASP_WPS_TYPE_PIN_BOTH = 0x02,  /**< WPS type PIN code both display and keypad*/
93         WFD_OEM_ASP_WPS_TYPE_PIN_DISPLAY = 0x03,  /**< WPS type display PIN code only*/
94         WFD_OEM_ASP_WPS_TYPE_PIN_KEYPAD = 0x04,  /**< WPS type keypad to input the PIN only*/
95 } asp_wps_type_e;
96
97 typedef enum {
98         WFD_OEM_ASP_SESSION_ROLE_NONE = 0x00,  /**< Session network role none */
99         WFD_OEM_ASP_SESSION_ROLE_NEW = 0x01,  /**< Session network role new */
100         WFD_OEM_ASP_SESSION_ROLE_CLIENT = 0x02,  /**< Session network role client */
101         WFD_OEM_ASP_SESSION_ROLE_GO = 0x04,  /**< Session network role GO */
102 } wfd_oem_asp_network_role_e;
103 #endif /* TIZEN_FEATURE_ASP */
104
105 typedef enum {
106         WFD_OEM_EVENT_NONE,
107         WFD_OEM_EVENT_DEACTIVATED,
108         WFD_OEM_EVENT_PEER_FOUND,
109         WFD_OEM_EVENT_PEER_DISAPPEARED,
110         WFD_OEM_EVENT_DISCOVERY_FINISHED,
111
112         WFD_OEM_EVENT_PROV_DISC_REQ,    /* 5 */
113         WFD_OEM_EVENT_PROV_DISC_RESP,
114         WFD_OEM_EVENT_PROV_DISC_FAIL,
115
116         WFD_OEM_EVENT_GO_NEG_REQ,
117         WFD_OEM_EVENT_GO_NEG_FAIL,
118         WFD_OEM_EVENT_GO_NEG_DONE,      /* 10 */
119         WFD_OEM_EVENT_WPS_FAIL,
120         WFD_OEM_EVENT_WPS_DONE,
121         WFD_OEM_EVENT_KEY_NEG_FAIL,
122         WFD_OEM_EVENT_KEY_NEG_DONE,
123
124         WFD_OEM_EVENT_CONN_FAIL,        /* 15 */
125         WFD_OEM_EVENT_CONN_DONE,
126
127         WFD_OEM_EVENT_GROUP_CREATED,
128         WFD_OEM_EVENT_GROUP_DESTROYED,
129
130         WFD_OEM_EVENT_INVITATION_REQ,
131         WFD_OEM_EVENT_INVITATION_RES,   /* 20 */
132         WFD_OEM_EVENT_STA_CONNECTED,
133         WFD_OEM_EVENT_STA_DISCONNECTED,
134
135         WFD_OEM_EVENT_TERMINATING,      /* 23 */
136
137 #ifdef TIZEN_FEATURE_SERVICE_DISCOVERY
138         WFD_OEM_EVENT_SERV_DISC_RESP,
139         WFD_OEM_EVENT_SERV_DISC_STARTED,
140 #endif /* TIZEN_FEATURE_SERVICE_DISCOVERY */
141
142         WFD_OEM_EVENT_GROUP_FORMATION_FAILURE,
143         WFD_OEM_EVENT_INVITATION_ACCEPTED,
144 #if defined(TIZEN_FEATURE_ASP)
145         WFD_OEM_EVENT_ASP_SERV_RESP,
146         WFD_OEM_EVENT_ASP_PROV_START,
147         WFD_OEM_EVENT_ASP_PROV_DONE,
148 #endif /* TIZEN_FEATURE_ASP */
149
150         WFD_OEM_EVENT_MAX,
151 } wfd_oem_event_e;
152
153 #ifdef TIZEN_FEATURE_WIFI_DISPLAY
154 typedef enum {
155         WFD_OEM_DISPLAY_TYPE_SOURCE,
156         WFD_OEM_DISPLAY_TYPE_PRISINK,
157         WFD_OEM_DISPLAY_TYPE_SECSINK,
158         WFD_OEM_DISPLAY_TYPE_DUAL,
159 } wfd_oem_display_type_e;
160
161 typedef struct {
162         int type;
163         int availability;
164         int wsd_support;
165         int tdls_support;
166         int hdcp_support;
167         int sync_support;
168         int port;
169         int max_tput;
170 } wfd_oem_display_s;
171 #endif /* TIZEN_FEATURE_WIFI_DISPLAY */
172
173 #if defined(TIZEN_FEATURE_ASP)
174 typedef struct {
175         unsigned int adv_id;
176         unsigned int config_method;
177         long long unsigned search_id;
178         unsigned char service_type_length;
179         char *service_type;
180 } wfd_oem_advertise_service_s;
181 #endif /* TIZEN_FEATURE_ASP */
182
183 typedef struct {
184         int age;
185         char dev_name[OEM_DEV_NAME_LEN+1];
186         unsigned char dev_addr[OEM_MACADDR_LEN];
187         unsigned char intf_addr[OEM_MACADDR_LEN];
188         unsigned char go_dev_addr[OEM_MACADDR_LEN];
189         int channel;
190         int dev_role;
191         int config_methods;
192         int pri_dev_type;
193         int sec_dev_type;
194         int dev_flags;
195         int group_flags;
196         int wps_mode;
197 #ifdef TIZEN_FEATURE_WIFI_DISPLAY
198         wfd_oem_display_s display;
199 #endif /* TIZEN_FEATURE_WIFI_DISPLAY */
200 } wfd_oem_device_s;
201
202 typedef struct {
203         unsigned char p2p_dev_addr[OEM_MACADDR_LEN];
204         unsigned char p2p_intf_addr[OEM_MACADDR_LEN];
205         char name[OEM_DEV_NAME_LEN + 1];
206         int pri_dev_type;
207         int sec_dev_type;
208         int config_methods;
209         int dev_flags;
210         int group_flags;
211         int dev_role;
212         int device_go_intent;
213 #ifdef TIZEN_FEATURE_WIFI_DISPLAY
214         wfd_oem_display_s display;
215 #endif /* TIZEN_FEATURE_WIFI_DISPLAY */
216         unsigned char p2p_go_addr[OEM_MACADDR_LEN];
217 #if defined(TIZEN_FEATURE_ASP)
218         int has_asp_services;
219 #endif /* TIZEN_FEATURE_ASP */
220 } wfd_oem_dev_data_s;
221
222 typedef struct {
223         char ssid[OEM_DEV_NAME_LEN+1];
224         unsigned char peer_device_addr[OEM_MACADDR_LEN];
225         unsigned char peer_intf_addr[OEM_MACADDR_LEN];
226         int persistent_group;
227         int wps_mode;
228         int status;
229         int error;
230 } wfd_oem_conn_data_s;
231
232 typedef struct {
233         unsigned char sa[OEM_MACADDR_LEN];
234         unsigned char go_dev_addr[OEM_MACADDR_LEN];
235         unsigned char bssid[OEM_MACADDR_LEN];
236         int persistent_id;
237         int oper_freq;
238         int listen;
239         int status;
240 } wfd_oem_invite_data_s;
241
242 typedef struct {
243         char ssid[OEM_DEV_NAME_LEN+1];
244         int freq;
245         int is_persistent;
246         char pass[OEM_PASS_PHRASE_LEN+1];
247         unsigned char go_dev_addr[OEM_MACADDR_LEN];
248 #ifdef TIZEN_FEATURE_IP_OVER_EAPOL
249         unsigned char ip_addr[OEM_IPADDR_LEN];
250         unsigned char ip_addr_mask[OEM_IPADDR_LEN];
251         unsigned char ip_addr_go[OEM_IPADDR_LEN];
252 #endif /* TIZEN_FEATURE_IP_OVER_EAPOL */
253 } wfd_oem_group_data_s;
254
255 #ifdef TIZEN_FEATURE_SERVICE_DISCOVERY
256 typedef enum {
257         WFD_OEM_SERV_STATUS_SUCCESS,
258         WFD_OEM_SERV_STATUS_FAIL,
259 } wfd_oem_serv_status_e;
260
261 typedef enum {
262         WFD_OEM_SERV_TYPE_ALL,
263         WFD_OEM_SERV_TYPE_BTADDR,
264 } wfd_oem_serv_type_e;
265
266 typedef struct {
267         int status;
268         int type;
269         unsigned char data[OEM_MACADDR_LEN];
270         unsigned char value[20];
271 } wfd_oem_service_data_s;
272 #endif /* TIZEN_FEATURE_SERVICE_DISCOVERY */
273
274 typedef struct {
275         int event_id;
276         unsigned char dev_addr[OEM_MACADDR_LEN];        /* device address */
277         unsigned char intf_addr[OEM_MACADDR_LEN];
278         int wps_mode;
279         char wps_pin[OEM_PINSTR_LEN+1]; /* just for DISPLAY */
280         char ifname[OEM_IFACE_NAME_LEN+1];
281         int dev_role;
282         unsigned char ip_addr_peer[OEM_IPADDR_LEN];
283         int edata_type;
284         void *edata;
285 #if defined(TIZEN_FEATURE_ASP)
286         void *asp_services;
287 #endif /* TIZEN_FEATURE_ASP */
288 } wfd_oem_event_s;
289
290 typedef enum {
291         WFD_OEM_EDATA_TYPE_NONE,
292         WFD_OEM_EDATA_TYPE_DEVICE,
293         WFD_OEM_EDATA_TYPE_CONN,
294         WFD_OEM_EDATA_TYPE_INVITE,
295         WFD_OEM_EDATA_TYPE_GROUP,
296         WFD_OEM_EDATA_TYPE_SERVICE,
297         WFD_OEM_EDATA_TYPE_NEW_SERVICE,
298 #if defined(TIZEN_FEATURE_ASP)
299         WFD_OEM_EDATA_TYPE_ASP_SERVICE,
300         WFD_OEM_EDATA_TYPE_ASP_PROV,
301 #endif /* TIZEN_FEATURE_ASP */
302 } ws_event_type_e;
303
304 typedef enum {
305         WFD_OEM_SCAN_MODE_ACTIVE,
306         WFD_OEM_SCAN_MODE_PASSIVE,
307 } wfd_oem_scan_mode_e;
308
309 typedef enum {
310         WFD_OEM_SCAN_TYPE_FULL,
311         WFD_OEM_SCAN_TYPE_SOCIAL,
312         WFD_OEM_SCAN_TYPE_SPECIFIC,
313         WFD_OEM_SCAN_TYPE_CHANNEL1,
314         WFD_OEM_SCAN_TYPE_CHANNEL6,
315         WFD_OEM_SCAN_TYPE_CHANNEL11,
316         WFD_OEM_SCAN_TYPE_GO_FREQ,
317 } wfd_oem_scan_type_e;
318
319 typedef enum {
320         WFD_OEM_WPS_MODE_NONE,
321         WFD_OEM_WPS_MODE_PBC = 0x1,
322         WFD_OEM_WPS_MODE_DISPLAY = 0x2,
323         WFD_OEM_WPS_MODE_KEYPAD = 0x4,
324 #if defined(TIZEN_FEATURE_ASP)
325         WFD_OEM_WPS_MODE_P2PS = 0x8,
326 #endif /* TIZEN_FEATURE_ASP */
327 } wfd_oem_wps_mode_e;
328
329 #define WFD_OEM_GROUP_FLAG_GROUP_OWNER 0x1
330 #define WFD_OEM_GROUP_FLAG_PERSISTENT_GROUP 0x2
331
332 typedef enum {
333         WFD_OEM_CONN_TYPE_NONE,
334         WFD_OEM_CONN_TYPE_JOIN,
335         WFD_OEM_CONN_TYPE_AUTH,
336         WFD_OEM_CONN_TYPE_PERSISTENT = 0x4,
337 } wfd_oem_conn_flag_e;
338
339 typedef enum {
340         WFD_OEM_DEV_ROLE_NONE,
341         WFD_OEM_DEV_ROLE_GC,
342         WFD_OEM_DEV_ROLE_GO,
343 } wfd_oem_dev_role_e;
344
345 typedef struct {
346         int scan_mode;
347         int scan_time;
348         int scan_type;
349         int freq;
350         int refresh;
351 #if defined(TIZEN_FEATURE_ASP)
352         char *seek;
353 #endif /* TIZEN_FEATURE_ASP */
354 } wfd_oem_scan_param_s;
355
356 typedef struct {
357         int wps_mode;
358         int conn_flags; /* join, auth, persistent */
359         int go_intent;
360         int freq;
361         char wps_pin[OEM_PINSTR_LEN+1];
362 } wfd_oem_conn_param_s;
363
364 typedef struct {
365         int persistent;
366         int persistent_group_id;
367         int freq;
368         char passphrase[OEM_PASS_PHRASE_LEN + 1];
369 } wfd_oem_group_param_s;
370
371 typedef struct {
372         int net_id;
373         char *ifname;
374         unsigned char go_dev_addr[OEM_MACADDR_LEN];
375 } wfd_oem_invite_param_s;
376
377 typedef enum {
378         WFD_OEM_CONFIG_ATTR_STR_DEVICE_NAME,
379         WFD_OEM_CONFIG_ATTR_STR_SSID_POSTFIX,
380         WFD_OEM_CONFIG_ATTR_STR_COUNTRY,
381         WFD_OEM_CONFIG_ATTR_NUM_GO_INTENT,
382         WFD_OEM_CONFIG_ATTR_NUM_LISTEN_FREQ,
383         WFD_OEM_CONFIG_ATTR_NUM_OPER_FREQ,
384         WFD_OEM_CONFIG_ATTR_NUM_PREF_FREQ,
385         WFD_OEM_CONFIG_ATTR_NUM_PERSIST_RECONN,
386         WFD_OEM_CONFIG_ATTR_NUM_WIFI_DISPLAY,
387         WFD_OEM_CONFIG_ATTR_NUM_P2P_DISABLED,
388         WFD_OEM_CONFIG_ATTR_NUM_MAX_STA,
389         WFD_OEM_CONFIG_ATTR_LIMIT = WFD_OEM_CONFIG_ATTR_NUM_MAX_STA,
390 } wfd_oem_conf_attr_e;
391
392 #ifdef TIZEN_FEATURE_SERVICE_DISCOVERY
393 typedef enum {
394         WFD_OEM_SERVICE_TYPE_ALL,
395         WFD_OEM_SERVICE_TYPE_BONJOUR,
396         WFD_OEM_SERVICE_TYPE_UPNP,
397         WFD_OEM_SERVICE_TYPE_WS_DISCOVERY,
398         WFD_OEM_SERVICE_TYPE_WIFI_DISPLAY,
399         WFD_OEM_SERVICE_TYPE_VENDOR = 0xff,
400 } wfd_oem_service_type_e;
401
402 typedef enum {
403         WFD_OEM_BONJOUR_RDATA_PTR = 0x0c,
404         WFD_OEM_BONJOUR_RDATA_TXT = 0x10,
405 } wfd_oem_bonjour_rdata_type_e;
406
407 typedef struct {
408         /** Device address for which service discovery is requested */
409         char dev_addr[OEM_MACSTR_LEN+1];
410
411         /** service type requested */
412         char service_type[OEM_SERVICE_TYPE_LEN+1];
413
414         /** query identifier returned by wpa_supplicant for each service discovery request */
415         char query_id[OEM_QUERY_ID_LEN+1];
416 } wfd_oem_service_s;
417
418 typedef struct {
419         int protocol;
420         int trans_id;
421         int status;
422         char *str_ptr;
423         union {
424                 struct {
425                         char *version;
426                         char *service;
427                 } upnp;
428                 struct {
429                         char *query;
430                         char *rdata;
431                         wfd_oem_bonjour_rdata_type_e rdata_type;
432                 } bonjour;
433                 struct {
434                         char *data1;
435                         char *data2;
436                 } vendor;
437         } data;
438 } wfd_oem_new_service_s;
439 #endif /* TIZEN_FEATURE_SERVICE_DISCOVERY */
440
441 #define WFD_OEM_STR_PROTO_WPA "WPA"
442 #define WFD_OEM_STR_PROTO_RSN "RSN"
443 #define WFD_OEM_STR_KEY_MGMT_IEEE8021X "WPA-EAP"
444 #define WFD_OEM_STR_KEY_MGMT_PSK "WPA-PSK"
445 #define WFD_OEM_STR_KEY_MGMT_NONE "WPA-NONE"
446 #define WFD_OEM_STR_CIPHER_NONE "NONE"
447 #define WFD_OEM_STR_CIPHER_WEP40 "WEP40"
448 #define WFD_OEM_STR_CIPHER_WEP104 "WEP104"
449 #define WFD_OEM_STR_CIPHER_TKIP "TKIP"
450 #define WFD_OEM_STR_CIPHER_CCMP "CCMP"
451 #define WFD_OEM_STR_AUTH_ALG_OPEN "OPEN"
452 #define WFD_OEM_STR_MODE_GC "0"
453 #define WFD_OEM_STR_MODE_GO "3"
454
455 typedef enum {
456         WFD_OEM_PROTO_WPA = 0x01, /* WPA */
457         WFD_OEM_PROTO_RSN = 0x02, /* RSN */
458 } wfd_oem_proto_e;
459
460 typedef enum {
461         WFD_OEM_KEY_MGMT_IEEE8021X = 0x01,      /* WPA-EAP */
462         WFD_OEM_KEY_MGMT_PSK = 0x02,    /* WPA-PSK */
463         WFD_OEM_KEY_MGMT_NONE = 0x04, /* WPA-NONE */
464 } wfd_oem_key_mgmt_e;
465
466 typedef enum {
467         WFD_OEM_CIPHER_NONE = 0x01, /* NONE */
468         WFD_OEM_CIPHER_WEP40 = 0x02, /* WEP40 */
469         WFD_OEM_CIPHER_WEP104 = 0x04, /* WEP104 */
470         WFD_OEM_CIPHER_TKIP = 0x08, /* TKIP */
471         WFD_OEM_CIPHER_CCMP = 0x10, /* CCMP */
472 } wfd_oem_cipher_e;
473
474 typedef enum {
475         WFD_OEM_AUTH_ALG_OPEN = 0x01, /* OPEN */
476 } wfd_oem_auth_alg_e;
477
478 typedef enum {
479         WFD_OEM_PERSISTENT_MODE_GC = 0x0,
480         WFD_OEM_PERSISTENT_MODE_GO = 0x3,
481 } wfd_oem_persistent_mode_e;
482
483 #if defined(TIZEN_FEATURE_ASP)
484 typedef enum {
485         WFD_OEM_TYPE_ADVERTISE,
486         WFD_OEM_TYPE_SEEK,
487         WFD_OEM_TYPE_MAX,
488 } wfd_oem_asp_service_type_e;
489
490 typedef struct {
491         wfd_oem_asp_service_type_e type;
492         unsigned int adv_id;
493         long long unsigned search_id;
494         int auto_accept;
495         int discovery_tech;
496         unsigned char preferred_connection;
497
498         unsigned char status;
499         unsigned char role;
500         unsigned int config_method;
501         unsigned char tran_id;
502
503         char *instance_name;
504         char *service_name;
505         char *service_type;
506         char *service_info;
507         char *rsp_info;
508 } wfd_oem_asp_service_s;
509
510 typedef struct {
511         unsigned char session_mac[OEM_MACADDR_LEN];
512         unsigned int session_id;
513         unsigned int adv_id;
514         int network_config;
515         int network_role;
516         int port;
517         int persist;
518         int persistent_group_id;
519         char *session_information;
520         int proto;
521         int status;
522         unsigned char service_mac[OEM_MACADDR_LEN];
523         unsigned char group_mac[OEM_MACADDR_LEN];
524         char wps_pin[OEM_PINSTR_LEN+1];
525         unsigned char ip_addr[OEM_IPADDR_LEN];
526 } wfd_oem_asp_prov_s;
527 #endif /* TIZEN_FEATURE_ASP */
528 typedef struct {
529         int network_id;
530         char ssid[OEM_DEV_NAME_LEN + 1];
531         unsigned char go_mac_address[OEM_MACADDR_LEN];
532         char psk[OEM_PASS_PHRASE_LEN +1];
533         int proto;
534         int key_mgmt;
535         int pairwise;
536         int group;
537         int auth_alg;
538         int mode;
539         int p2p_client_num;
540         unsigned char p2p_client_list[OEM_MACADDR_LEN][OEM_MAX_PEER_NUM];
541 } wfd_oem_persistent_group_s;
542
543 typedef int (*wfd_oem_event_cb) (void *user_data, void *event);
544
545 typedef struct _wfd_oem_ops_s {
546         int (*init) (wfd_oem_event_cb event_callback, void *user_data);
547         int (*deinit) (void);
548         int (*activate) (int concurrent);
549         int (*deactivate) (int concurrent);
550         int (*start_scan) (wfd_oem_scan_param_s *param);
551         int (*stop_scan) (void);
552         int (*get_visibility) (int *visibility);
553         int (*set_visibility) (int visibility);
554         int (*get_scan_result) (GList **peers, int *peer_count);
555         int (*get_peer_info) (unsigned char *peer_addr, wfd_oem_device_s **peer);
556         int (*prov_disc_req) (unsigned char *peer_addr, wfd_oem_wps_mode_e wps_mode, int join);
557         int (*connect) (unsigned char *peer_addr, wfd_oem_conn_param_s *param);
558         int (*disconnect) (unsigned char *peer_addr, int is_iface_addr);
559         int (*reject_connection) (unsigned char *peer_addr);
560         int (*cancel_connection) (unsigned char *peer_addr);
561         int (*get_connected_peers) (GList **peers, int *peer_count);
562         int (*wps_start) (unsigned char *peer_addr, int wps_mode, const char *pin);
563         int (*enrollee_start) (unsigned char *peer_addr, int wps_mode, const char *pin);
564         int (*wps_cancel) (void);
565         int (*get_pin) (char *pin);
566         int (*set_pin) (char *pin);
567         int (*generate_pin) (char **pin);
568         int (*get_supported_wps_mode) (int *wps_mode);
569         int (*create_group) (wfd_oem_group_param_s *param);
570         int (*destroy_group) (const char *ifname);
571         int (*invite) (unsigned char *peer_addr, wfd_oem_invite_param_s *param);
572
573         int (*get_dev_name) (char *dev_name);
574         int (*set_dev_name) (char *dev_name);
575         int (*get_dev_mac) (char *dev_mac);
576         int (*get_dev_type) (int *pri_dev_type, int *sec_dev_type);
577         int (*set_dev_type) (int pri_dev_type, int sec_dev_type);
578         int (*get_go_intent) (int *go_intent);
579         int (*set_go_intent) (int go_intent);
580         int (*set_country) (char *ccode);
581
582         int (*get_persistent_groups) (wfd_oem_persistent_group_s **groups, int *group_count);
583         int (*remove_persistent_group) (char *ssid, unsigned char *bssid);
584         int (*set_persistent_reconnect) (unsigned char *bssid, int reconnect);
585
586 #ifdef TIZEN_FEATURE_SERVICE_DISCOVERY
587         int (*start_service_discovery) (unsigned char mac_addr[6], int service_type);
588         int (*cancel_service_discovery) (unsigned char mac_addr[6], int service_type);
589
590         int (*serv_add) (wfd_oem_new_service_s *service);
591         int (*serv_del) (wfd_oem_new_service_s *service);
592         int (*serv_disc_start) (wfd_oem_new_service_s *service);
593         int (*serv_disc_stop) (int handle);
594 #endif /* TIZEN_FEATURE_SERVICE_DISCOVERY */
595
596 #ifdef TIZEN_FEATURE_WIFI_DISPLAY
597         int (*miracast_init) (int enable);
598         int (*set_display) (wfd_oem_display_s *wifi_display);
599 #endif /* TIZEN_FEATURE_WIFI_DISPLAY */
600
601         int (*refresh) (void);
602         int (*save_config) (void);
603         int (*set_operating_channel)(int channel);
604         int (*remove_all_network)(void);
605         int (*get_wpa_status)(int *wpa_status);
606
607 #if defined(TIZEN_FEATURE_ASP)
608         int (*advertise_service)(wfd_oem_asp_service_s *service, int replace);
609         int (*cancel_advertise_service)(wfd_oem_asp_service_s *service);
610         int (*seek_service)(wfd_oem_asp_service_s *service);
611         int (*cancel_seek_service)(wfd_oem_asp_service_s *service);
612         int (*asp_prov_disc_req)(wfd_oem_asp_prov_s *params);
613 #endif /* TIZEN_FEATURE_ASP */
614 } wfd_oem_ops_s;
615
616 int wfd_oem_init(wfd_oem_ops_s *ops, wfd_oem_event_cb event_callback, void *user_data);
617 int wfd_oem_destroy(wfd_oem_ops_s *ops);
618 int wfd_oem_activate(wfd_oem_ops_s *ops, int concurrent);
619 int wfd_oem_deactivate(wfd_oem_ops_s *ops, int concurrent);
620 int wfd_oem_start_scan(wfd_oem_ops_s *ops, wfd_oem_scan_param_s *param);
621 int wfd_oem_stop_scan(wfd_oem_ops_s *ops);
622 int wfd_oem_get_visibility(wfd_oem_ops_s *ops, int *visibility);
623 int wfd_oem_set_visibility(wfd_oem_ops_s *ops, int visibility);
624 int wfd_oem_get_scan_result(wfd_oem_ops_s *ops, GList **peers, int *peer_count);
625 int wfd_oem_get_peer_info(wfd_oem_ops_s *ops, unsigned char *peer_addr, wfd_oem_device_s **peer);
626 int wfd_oem_prov_disc_req(wfd_oem_ops_s *ops, unsigned char *peer_addr, wfd_oem_wps_mode_e wps_mode, int join);
627 int wfd_oem_connect(wfd_oem_ops_s *ops, unsigned char *peer_addr, wfd_oem_conn_param_s *param);
628 int wfd_oem_disconnect(wfd_oem_ops_s *ops, unsigned char *peer_addr, int is_iface_addr);
629 int wfd_oem_reject_connection(wfd_oem_ops_s *ops, unsigned char *peer_addr);
630 int wfd_oem_cancel_connection(wfd_oem_ops_s *ops, unsigned char *peer_addr);
631 int wfd_oem_get_connected_peers(wfd_oem_ops_s *ops, GList **peers, int *peer_count);
632 int wfd_oem_wps_start(wfd_oem_ops_s *ops, unsigned char *peer_addr, int wps_mode, const char *pin);
633 int wfd_oem_enrollee_start(wfd_oem_ops_s *ops, unsigned char *peer_addr, int wps_mode, const char *pin);
634 int wfd_oem_wps_cancel(wfd_oem_ops_s *ops);
635 int wfd_oem_get_pin(wfd_oem_ops_s *ops, char *pin);
636 int wfd_oem_set_pin(wfd_oem_ops_s *ops, char *pin);
637 int wfd_oem_generate_pin(wfd_oem_ops_s *ops, char **pin);
638 int wfd_oem_get_supported_wps_mode(wfd_oem_ops_s *ops, int *wps_mode);
639 int wfd_oem_create_group(wfd_oem_ops_s *ops, wfd_oem_group_param_s *param);
640 int wfd_oem_destroy_group(wfd_oem_ops_s *ops, const char *ifname);
641 int wfd_oem_invite(wfd_oem_ops_s *ops, unsigned char *peer_addr, wfd_oem_invite_param_s *param);
642
643 int wfd_oem_get_dev_name(wfd_oem_ops_s *ops, char *dev_name);
644 int wfd_oem_set_dev_name(wfd_oem_ops_s *ops, char *dev_name);
645 int wfd_oem_get_dev_mac(wfd_oem_ops_s *ops, char *dev_mac);
646 int wfd_oem_get_dev_type(wfd_oem_ops_s *ops, int *pri_dev_type, int *sec_dev_type);
647 int wfd_oem_set_dev_type(wfd_oem_ops_s *ops, int priv_dev_type, int sec_dev_type);
648 int wfd_oem_get_go_intent(wfd_oem_ops_s *ops, int *go_intent);
649 int wfd_oem_set_go_intent(wfd_oem_ops_s *ops, int go_intent);
650 int wfd_oem_set_country(wfd_oem_ops_s *ops, char *ccode);
651
652 int wfd_oem_get_persistent_groups(wfd_oem_ops_s *ops, wfd_oem_persistent_group_s **groups, int *group_count);
653 int wfd_oem_remove_persistent_group(wfd_oem_ops_s *ops, char *ssid, unsigned char *bssid);
654 int wfd_oem_set_persistent_reconnect(wfd_oem_ops_s *ops, unsigned char *bssid, int reconnect);
655
656 #ifdef TIZEN_FEATURE_SERVICE_DISCOVERY
657 int wfd_oem_start_service_discovery(wfd_oem_ops_s *ops, unsigned char *peer_addr, int service_type);
658 int wfd_oem_cancel_service_discovery(wfd_oem_ops_s *ops, unsigned char *peer_addr, int service_type);
659
660 int wfd_oem_serv_add(wfd_oem_ops_s *ops, wfd_oem_new_service_s *service);
661 int wfd_oem_serv_del(wfd_oem_ops_s *ops, wfd_oem_new_service_s *service);
662 int wfd_oem_serv_disc_start(wfd_oem_ops_s *ops, wfd_oem_new_service_s *service);
663 int wfd_oem_serv_disc_stop(wfd_oem_ops_s *ops, int handle);
664 #endif /* TIZEN_FEATURE_SERVICE_DISCOVERY */
665
666 #ifdef TIZEN_FEATURE_WIFI_DISPLAY
667 int wfd_oem_miracast_init(wfd_oem_ops_s *ops, int enable);
668 int wfd_oem_set_display(wfd_oem_ops_s *ops, wfd_oem_display_s *wifi_display);
669 #endif /* TIZEN_FEATURE_WIFI_DISPLAY */
670
671 int wfd_oem_refresh(wfd_oem_ops_s *ops);
672 #if defined(TIZEN_FEATURE_ASP)
673 int wfd_oem_advertise_service(wfd_oem_ops_s *ops, wfd_oem_asp_service_s *service, int replace);
674 int wfd_oem_cancel_advertise_service(wfd_oem_ops_s *ops, wfd_oem_asp_service_s *service);
675 int wfd_oem_seek_service(wfd_oem_ops_s *ops, wfd_oem_asp_service_s *service);
676 int wfd_oem_cancel_seek_service(wfd_oem_ops_s *ops, wfd_oem_asp_service_s *service);
677 int wfd_oem_asp_prov_disc_req(wfd_oem_ops_s *ops, wfd_oem_asp_prov_s *params);
678 #endif /* TIZEN_FEATURE_ASP */
679
680 #endif /* __WIFI_DIRECT_OEM_H__ */