2 * Network Configuration Module
4 * Copyright (c) 2012 Samsung Electronics Co., Ltd. All rights reserved.
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
10 * http://www.apache.org/licenses/LICENSE-2.0
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.
21 * This file declares wifi direct oem functions and structures.
23 * @file wifi-direct-ome.h
24 * @author Gibyoung Kim (lastkgb.kim@samsung.com)
28 #ifndef __WIFI_DIRECT_OEM_H__
29 #define __WIFI_DIRECT_OEM_H__
31 #define SUPPL_PLUGIN_PATH "/usr/lib/wifi-direct-plugin-wpasupplicant.so"
33 #define OEM_MACSTR_LEN 18
34 #define OEM_MACADDR_LEN 6
35 #define OEM_PINSTR_LEN 8
36 #define OEM_PASS_PHRASE_LEN 8
37 #define OEM_DEV_NAME_LEN 32
38 #define OEM_IFACE_NAME_LEN 16
42 WFD_OEM_EVENT_DEACTIVATED,
43 WFD_OEM_EVENT_PEER_FOUND,
44 WFD_OEM_EVENT_PEER_DISAPPEARED,
45 WFD_OEM_EVENT_DISCOVERY_FINISHED,
47 WFD_OEM_EVENT_PROV_DISC_REQ, // 5
48 WFD_OEM_EVENT_PROV_DISC_DISPLAY,
49 WFD_OEM_EVENT_PROV_DISC_KEYPAD,
50 WFD_OEM_EVENT_PROV_DISC_RESP,
51 WFD_OEM_EVENT_PROV_DISC_FAIL,
53 WFD_OEM_EVENT_GO_NEG_REQ, // 10
54 WFD_OEM_EVENT_GO_NEG_FAIL,
55 WFD_OEM_EVENT_GO_NEG_DONE,
56 WFD_OEM_EVENT_WPS_FAIL,
57 WFD_OEM_EVENT_WPS_DONE,
58 WFD_OEM_EVENT_KEY_NEG_FAIL, // 15
59 WFD_OEM_EVENT_KEY_NEG_DONE,
61 WFD_OEM_EVENT_CONN_FAIL,
62 WFD_OEM_EVENT_CONN_DONE,
64 WFD_OEM_EVENT_GROUP_CREATED,
65 WFD_OEM_EVENT_GROUP_DESTROYED, // 20
67 WFD_OEM_EVENT_INVITATION_REQ,
68 WFD_OEM_EVENT_INVITATION_RES,
69 WFD_OEM_EVENT_STA_CONNECTED,
70 WFD_OEM_EVENT_STA_DISCONNECTED,
72 WFD_OEM_EVENT_CONNECTED, // 25
73 WFD_OEM_EVENT_DISCONNECTED,
75 WFD_OEM_EVENT_SERV_DISC_RESP,
77 WFD_OEM_EVENT_TERMINATING,
84 char dev_name[OEM_DEV_NAME_LEN+1];
85 unsigned char dev_addr[OEM_MACADDR_LEN];
86 unsigned char intf_addr[OEM_MACADDR_LEN];
87 unsigned char go_dev_addr[OEM_MACADDR_LEN];
103 unsigned char p2p_dev_addr[OEM_MACADDR_LEN];
104 unsigned char p2p_intf_addr[OEM_MACADDR_LEN];
105 char name[OEM_DEV_NAME_LEN + 1];
112 unsigned char p2p_go_addr[OEM_MACADDR_LEN];
113 } wfd_oem_dev_data_s;
116 unsigned char peer_intf_addr[OEM_MACADDR_LEN];
120 } wfd_oem_conn_data_s;
123 unsigned char go_dev_addr[OEM_MACADDR_LEN];
124 unsigned char bssid[OEM_MACADDR_LEN];
127 } wfd_oem_invite_data_s;
130 char ssid[OEM_DEV_NAME_LEN+1];
132 char pass[OEM_PASS_PHRASE_LEN+1];
133 unsigned char go_dev_addr[OEM_MACADDR_LEN];
134 } wfd_oem_group_data_s;
138 unsigned char dev_addr[OEM_MACADDR_LEN]; // device address
139 unsigned char intf_addr[OEM_MACADDR_LEN];
141 char wps_pin[OEM_PINSTR_LEN+1]; // just for DISPLAY
142 char ifname[OEM_IFACE_NAME_LEN+1];
149 WFD_OEM_EDATA_TYPE_NONE,
150 WFD_OEM_EDATA_TYPE_DEVICE,
151 WFD_OEM_EDATA_TYPE_CONN,
152 WFD_OEM_EDATA_TYPE_INVITE,
153 WFD_OEM_EDATA_TYPE_GROUP,
154 WFD_OEM_EDATA_TYPE_SERVICE,
158 WFD_OEM_SCAN_MODE_ACTIVE,
159 WFD_OEM_SCAN_MODE_PASSIVE,
160 } wfd_oem_scan_mode_e;
163 WFD_OEM_SCAN_TYPE_FULL,
164 WFD_OEM_SCAN_TYPE_SOCIAL,
165 WFD_OEM_SCAN_TYPE_SPECIFIC,
166 } wfd_oem_scan_type_e;
169 WFD_OEM_WPS_MODE_NONE,
170 WFD_OEM_WPS_MODE_PBC = 0x1,
171 WFD_OEM_WPS_MODE_DISPLAY = 0x2,
172 WFD_OEM_WPS_MODE_KEYPAD = 0x4,
173 } wfd_oem_wps_mode_e;
175 #define WFD_OEM_GROUP_FLAG_GROUP_OWNER 0x1
176 #define WFD_OEM_GROUP_FLAG_PERSISTENT_GROUP 0x2
179 WFD_OEM_CONN_TYPE_NONE,
180 WFD_OEM_CONN_TYPE_JOIN,
181 WFD_OEM_CONN_TYPE_AUTH,
182 WFD_OEM_CONN_TYPE_PERSISTENT = 0x4,
183 } wfd_oem_conn_flag_e;
186 WFD_OEM_DEV_ROLE_NONE,
189 } wfd_oem_dev_role_e;
194 WFD_OEM_SERVICE_BONJOUR,
195 WFD_OEM_SERVICE_UPNP,
196 WFD_OEM_SERVICE_WSDISCOVERY,
197 WFD_OEM_SERVICE_WIFIDISPLAY,
198 WFD_OEM_SERVICE_VENDORSPEC = 0xff,
207 } wfd_oem_scan_param_s;
211 int conn_flags; // join, auth, persistent
214 char wps_pin[OEM_PINSTR_LEN+1];
215 } wfd_oem_conn_param_s;
220 unsigned char go_dev_addr[OEM_MACADDR_LEN];
221 } wfd_oem_invite_param_s;
226 char ssid[OEM_DEV_NAME_LEN + 1];
227 unsigned char go_mac_address[OEM_MACADDR_LEN];
228 } wfd_oem_persistent_group_s;
230 typedef int (*wfd_oem_event_cb) (void *user_data, void *event);
232 typedef struct _wfd_oem_ops_s {
233 int (*init) (wfd_oem_event_cb event_callback, void *user_data);
234 int (*deinit) (void);
235 int (*activate) (void);
236 int (*deactivate) (void);
237 int (*start_scan) (wfd_oem_scan_param_s *param);
238 int (*stop_scan) (void);
239 int (*get_visibility) (int *visibility);
240 int (*set_visibility) (int visibility);
241 int (*get_scan_result) (GList **peers, int *peer_count);
242 int (*get_peer_info) (unsigned char *peer_addr, wfd_oem_device_s **peer);
243 int (*prov_disc_req) (unsigned char *peer_addr, wfd_oem_wps_mode_e wps_mode, int join);
244 int (*connect) (unsigned char *peer_addr, wfd_oem_conn_param_s *param);
245 int (*disconnect) (unsigned char *peer_addr);
246 int (*reject_connection) (unsigned char *peer_addr);
247 int (*cancel_connection) (unsigned char *peer_addr);
248 int (*get_connected_peers) (GList **peers, int *peer_count);
249 int (*wps_start) (unsigned char *peer_addr, int wps_mode, const char *pin);
250 int (*enrollee_start) (unsigned char *peer_addr, int wps_mode, const char *pin);
251 int (*wps_cancel) (void);
252 int (*get_pin) (char *pin);
253 int (*set_pin) (char *pin);
254 // int (*generate_pin) (char *pin);
255 int (*get_supported_wps_mode) (int *wps_mode);
256 int (*create_group) (int persistent, int freq);
257 int (*destroy_group) (const char *ifname);
258 int (*invite) (unsigned char *peer_addr, wfd_oem_invite_param_s *param);
260 int (*get_dev_name) (char *dev_name);
261 int (*set_dev_name) (char *dev_name);
262 int (*get_dev_mac) (char *dev_mac);
263 int (*get_dev_type) (int *pri_dev_type, int *sec_dev_type);
264 int (*set_dev_type) (int pri_dev_type, int sec_dev_type);
265 int (*get_go_intent) (int *go_intent);
266 int (*set_go_intent) (int go_intent);
268 int (*get_persistent_groups) (wfd_oem_persistent_group_s **groups, int *group_count);
269 int (*remove_persistent_group) (char *ssid, unsigned char *bssid);
270 int (*set_persistent_reconnect) (unsigned char *bssid, int reconnect);
272 int (*service_add) (wfd_oem_service_e type,char *data);
273 int (*service_del) (wfd_oem_service_e type,char *data);
274 int (*serv_disc_req) (unsigned char* MAC, wfd_oem_service_e type,char *data);
275 int (*serv_disc_cancel) (int identifier);
279 int wfd_oem_init(wfd_oem_ops_s *ops, wfd_oem_event_cb event_callback, void *user_data);
280 int wfd_oem_destroy(wfd_oem_ops_s *ops);
281 int wfd_oem_activate(wfd_oem_ops_s *ops);
282 int wfd_oem_deactivate(wfd_oem_ops_s *ops);
283 int wfd_oem_start_scan(wfd_oem_ops_s *ops, wfd_oem_scan_param_s *param);
284 int wfd_oem_stop_scan(wfd_oem_ops_s *ops);
285 int wfd_oem_get_visibility(wfd_oem_ops_s *ops, int *visibility);
286 int wfd_oem_set_visibility(wfd_oem_ops_s *ops, int visibility);
287 int wfd_oem_get_scan_result(wfd_oem_ops_s *ops, GList **peers, int *peer_count);
288 int wfd_oem_get_peer_info(wfd_oem_ops_s *ops, unsigned char *peer_addr, wfd_oem_device_s **peer);
289 int wfd_oem_prov_disc_req(wfd_oem_ops_s *ops, unsigned char *peer_addr, wfd_oem_wps_mode_e wps_mode, int join);
290 int wfd_oem_connect(wfd_oem_ops_s *ops, unsigned char *peer_addr, wfd_oem_conn_param_s *param);
291 int wfd_oem_disconnect(wfd_oem_ops_s *ops, unsigned char *peer_addr);
292 int wfd_oem_reject_connection(wfd_oem_ops_s *ops, unsigned char *peer_addr);
293 int wfd_oem_cancel_connection(wfd_oem_ops_s *ops, unsigned char *peer_addr);
294 int wfd_oem_get_connected_peers(wfd_oem_ops_s *ops, GList **peers, int *peer_count);
295 int wfd_oem_wps_start(wfd_oem_ops_s *ops, unsigned char *peer_addr, int wps_mode, const char *pin);
296 int wfd_oem_enrollee_start(wfd_oem_ops_s *ops, unsigned char *peer_addr, int wps_mode, const char *pin);
297 int wfd_oem_wps_cancel(wfd_oem_ops_s *ops);
298 int wfd_oem_get_pin(wfd_oem_ops_s *ops, char *pin);
299 int wfd_oem_set_pin(wfd_oem_ops_s *ops, char *pin);
300 //int wfd_oem_generate_pin(wfd_oem_ops_s *ops, char *pin);
301 int wfd_oem_get_supported_wps_mode(wfd_oem_ops_s *ops, int *wps_mode);
302 int wfd_oem_create_group(wfd_oem_ops_s *ops, int persistent, int freq);
303 int wfd_oem_destroy_group(wfd_oem_ops_s *ops, const char *ifname);
304 int wfd_oem_invite(wfd_oem_ops_s *ops, unsigned char *peer_addr, wfd_oem_invite_param_s *param);
306 int wfd_oem_get_dev_name(wfd_oem_ops_s *ops, char *dev_name);
307 int wfd_oem_set_dev_name(wfd_oem_ops_s *ops, char *dev_name);
308 int wfd_oem_get_dev_mac(wfd_oem_ops_s *ops, char *dev_mac);
309 int wfd_oem_get_dev_type(wfd_oem_ops_s *ops, int *pri_dev_type, int *sec_dev_type);
310 int wfd_oem_set_dev_type(wfd_oem_ops_s *ops, int priv_dev_type, int sec_dev_type);
311 int wfd_oem_get_go_intent(wfd_oem_ops_s *ops, int *go_intent);
312 int wfd_oem_set_go_intent(wfd_oem_ops_s *ops, int go_intent);
314 int wfd_oem_get_persistent_groups(wfd_oem_ops_s *ops, wfd_oem_persistent_group_s **groups, int *group_count);
315 int wfd_oem_remove_persistent_group(wfd_oem_ops_s *ops, char *ssid, unsigned char *bssid);
316 int wfd_oem_set_persistent_reconnect(wfd_oem_ops_s *ops, unsigned char *bssid, int reconnect);
318 int wfd_oem_service_add(wfd_oem_ops_s *ops, wfd_oem_service_e type, char *data);
319 int wfd_oem_service_del(wfd_oem_ops_s *ops, wfd_oem_service_e type, char *data);
320 int wfd_oem_serv_disc_req(wfd_oem_ops_s *ops, unsigned char* MAC, wfd_oem_service_e type, char *data);
321 int wfd_oem_serv_disc_cancel(wfd_oem_ops_s *ops, int identifier);
323 #endif /* __WIFI_DIRECT_OEM_H__ */