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 implements wifi direct oem functions.
23 * @file wifi-direct-oem.c
24 * @author Gibyoung Kim (lastkgb.kim@samsung.com)
32 #include "wifi-direct-oem.h"
33 #include "wifi-direct-event.h"
35 #if defined TIZEN_ENABLE_PRD
36 #include "wifi-direct-prd.h"
38 wfd_oem_prd_event_cbs_s g_prd_event_cbs;
39 #endif /* TIZEN_ENABLE_PRD */
41 wfd_oem_event_cbs_s g_event_cbs;
43 int wfd_oem_configure(wfd_oem_ops_s *ops, wfd_oem_config_s *conf)
45 if (!ops || !ops->configure)
46 #if defined(BUILD_GTESTS)
52 return ops->configure(conf);
55 int wfd_oem_init(wfd_oem_ops_s *ops)
57 if (!ops || !ops->init)
60 wfd_event_init(&g_event_cbs);
62 return ops->init(&g_event_cbs);
66 int wfd_oem_deinit(wfd_oem_ops_s *ops)
68 if (!ops || !ops->deinit)
75 int wfd_oem_activate(wfd_oem_ops_s *ops, int concurrent)
77 if (!ops || !ops->activate)
78 #if defined(BUILD_GTESTS)
83 return ops->activate(concurrent);
86 int wfd_oem_deactivate(wfd_oem_ops_s *ops, int concurrent)
88 if (!ops || !ops->deactivate)
89 #if defined(BUILD_GTESTS)
95 return ops->deactivate(concurrent);
98 int wfd_oem_start_scan(wfd_oem_ops_s *ops, wfd_oem_scan_param_s *param)
100 if (!ops || !ops->start_scan)
101 #if defined(BUILD_GTESTS)
107 return ops->start_scan(param);
110 int wfd_oem_stop_scan(wfd_oem_ops_s *ops)
112 if (!ops || !ops->stop_scan)
113 #if defined(BUILD_GTESTS)
119 return ops->stop_scan();
122 int wfd_oem_get_visibility(wfd_oem_ops_s *ops, int *visibility)
124 if (!ops || !ops->get_visibility)
125 #if defined(BUILD_GTESTS)
131 return ops->get_visibility(visibility);
134 int wfd_oem_set_visibility(wfd_oem_ops_s *ops, int visibility)
136 if (!ops || !ops->set_visibility)
137 #if defined(BUILD_GTESTS)
143 return ops->set_visibility(visibility);
146 int wfd_oem_get_scan_result(wfd_oem_ops_s *ops, GList **peers, int *peer_count)
148 if (!ops || !ops->get_scan_result)
149 #if defined(BUILD_GTESTS)
155 return ops->get_scan_result(peers, peer_count);
158 int wfd_oem_get_peer_info(wfd_oem_ops_s *ops, unsigned char *peer_addr, wfd_oem_device_s **peer)
160 if (!ops || !ops->get_peer_info)
161 #if defined(BUILD_GTESTS)
167 return ops->get_peer_info(peer_addr, peer);
170 int wfd_oem_prov_disc_req(wfd_oem_ops_s *ops, unsigned char *peer_addr, wfd_oem_wps_mode_e wps_mode, int join)
172 if (!ops || !ops->prov_disc_req)
173 #if defined(BUILD_GTESTS)
179 return ops->prov_disc_req(peer_addr, wps_mode, join);
182 int wfd_oem_connect(wfd_oem_ops_s *ops, unsigned char *peer_addr, wfd_oem_conn_param_s *param)
184 if (!ops || !ops->connect)
185 #if defined(BUILD_GTESTS)
191 return ops->connect(peer_addr, param);
194 int wfd_oem_reject_connection(wfd_oem_ops_s *ops, unsigned char *peer_addr)
196 if (!ops || !ops->reject_connection)
197 #if defined(BUILD_GTESTS)
203 return ops->reject_connection(peer_addr);
206 int wfd_oem_cancel_connection(wfd_oem_ops_s *ops, unsigned char *peer_addr)
208 if (!ops || !ops->cancel_connection)
209 #if defined(BUILD_GTESTS)
215 return ops->cancel_connection(peer_addr);
218 int wfd_oem_disconnect(wfd_oem_ops_s *ops, unsigned char *peer_addr, int is_iface_addr)
220 if (!ops || !ops->disconnect)
221 #if defined(BUILD_GTESTS)
227 return ops->disconnect(peer_addr, is_iface_addr);
230 int wfd_oem_get_connected_peers(wfd_oem_ops_s *ops, GList **peers, int *peer_count)
232 if (!ops || !ops->get_connected_peers)
233 #if defined(BUILD_GTESTS)
239 return ops->get_connected_peers(peers, peer_count);
242 int wfd_oem_get_pin(wfd_oem_ops_s *ops, char *pin)
244 if (!ops || !ops->get_pin)
245 #if defined(BUILD_GTESTS)
251 return ops->get_pin(pin);
254 int wfd_oem_set_pin(wfd_oem_ops_s *ops, char *pin)
256 if (!ops || !ops->set_pin)
257 #if defined(BUILD_GTESTS)
263 return ops->set_pin(pin);
266 int wfd_oem_generate_pin(wfd_oem_ops_s *ops, char **pin)
268 if (!ops || !ops->generate_pin)
269 #if defined(BUILD_GTESTS)
275 return ops->generate_pin(pin);
278 int wfd_oem_get_supported_wps_mode(wfd_oem_ops_s *ops, int *wps_mode)
280 if (!ops || !ops->get_supported_wps_mode)
281 #if defined(BUILD_GTESTS)
287 return ops->get_supported_wps_mode(wps_mode);
290 int wfd_oem_create_group(wfd_oem_ops_s *ops, wfd_oem_group_param_s *param)
292 if (!ops || !ops->create_group)
293 #if defined(BUILD_GTESTS)
299 return ops->create_group(param);
302 int wfd_oem_destroy_group(wfd_oem_ops_s *ops, const char *ifname)
304 if (!ops || !ops->destroy_group)
305 #if defined(BUILD_GTESTS)
311 return ops->destroy_group(ifname);
314 int wfd_oem_invite(wfd_oem_ops_s *ops, unsigned char *peer_addr, wfd_oem_invite_param_s *param)
316 if (!ops || !ops->invite)
317 #if defined(BUILD_GTESTS)
323 return ops->invite(peer_addr, param);
326 int wfd_oem_wps_start(wfd_oem_ops_s *ops, unsigned char *peer_addr, int wps_mode, const char *pin)
328 if (!ops || !ops->wps_start)
329 #if defined(BUILD_GTESTS)
335 return ops->wps_start(peer_addr, wps_mode, pin);
338 int wfd_oem_enrollee_start(wfd_oem_ops_s *ops, unsigned char *peer_addr, int wps_mode, const char *pin)
340 if (!ops || !ops->enrollee_start)
341 #if defined(BUILD_GTESTS)
347 return ops->enrollee_start(peer_addr, wps_mode, pin);
350 int wfd_oem_wps_cancel(wfd_oem_ops_s *ops)
352 if (!ops || !ops->wps_cancel)
353 #if defined(BUILD_GTESTS)
359 return ops->wps_cancel();
362 int wfd_oem_get_dev_name(wfd_oem_ops_s *ops, char *dev_name)
364 if (!ops || !ops->get_dev_name)
365 #if defined(BUILD_GTESTS)
371 return ops->get_dev_name(dev_name);
374 int wfd_oem_set_dev_name(wfd_oem_ops_s *ops, char *dev_name)
376 if (!ops || !ops->set_dev_name)
377 #if defined(BUILD_GTESTS)
383 return ops->set_dev_name(dev_name);
386 int wfd_oem_get_dev_mac(wfd_oem_ops_s *ops, char *dev_mac)
388 if (!ops || !ops->get_dev_mac)
389 #if defined(BUILD_GTESTS)
395 return ops->get_dev_mac(dev_mac);
398 int wfd_oem_get_dev_type(wfd_oem_ops_s *ops, int *pri_dev_type, int *sec_dev_type)
400 if (!ops || !ops->get_dev_type)
401 #if defined(BUILD_GTESTS)
407 return ops->get_dev_type(pri_dev_type, sec_dev_type);
410 int wfd_oem_set_dev_type(wfd_oem_ops_s *ops, int pri_dev_type, int sec_dev_type)
412 if (!ops || !ops->set_dev_type)
413 #if defined(BUILD_GTESTS)
419 return ops->set_dev_type(pri_dev_type, sec_dev_type);
422 int wfd_oem_get_go_intent(wfd_oem_ops_s *ops, int *go_intent)
424 if (!ops || !ops->get_go_intent)
425 #if defined(BUILD_GTESTS)
431 return ops->get_go_intent(go_intent);
434 int wfd_oem_set_go_intent(wfd_oem_ops_s *ops, int go_intent)
436 if (!ops || !ops->set_go_intent)
437 #if defined(BUILD_GTESTS)
443 return ops->set_go_intent(go_intent);
446 int wfd_oem_set_country(wfd_oem_ops_s *ops, char *ccode)
448 if (!ops || !ops->set_country)
449 #if defined(BUILD_GTESTS)
455 return ops->set_country(ccode);
458 int wfd_oem_get_persistent_groups(wfd_oem_ops_s *ops, wfd_oem_persistent_group_s **groups, int *group_count)
460 if (!ops || !ops->get_persistent_groups)
461 #if defined(BUILD_GTESTS)
467 return ops->get_persistent_groups(groups, group_count);
470 int wfd_oem_remove_persistent_group(wfd_oem_ops_s *ops, char *ssid, unsigned char *bssid)
472 if (!ops || !ops->remove_persistent_group)
473 #if defined(BUILD_GTESTS)
479 return ops->remove_persistent_group(ssid, bssid);
483 int wfd_oem_set_persistent_reconnect(wfd_oem_ops_s *ops, unsigned char *bssid, int reconnect)
485 if (!ops || !ops->set_persistent_reconnect)
486 #if defined(BUILD_GTESTS)
492 return ops->set_persistent_reconnect(bssid, reconnect);
495 int wfd_oem_start_service_discovery(wfd_oem_ops_s *ops, unsigned char *peer_addr, int service_type)
497 if (!ops || !ops->start_service_discovery)
498 #if defined(BUILD_GTESTS)
504 return ops->start_service_discovery(peer_addr, service_type);
507 int wfd_oem_cancel_service_discovery(wfd_oem_ops_s *ops, unsigned char *peer_addr, int service_type)
509 if (!ops || !ops->cancel_service_discovery)
510 #if defined(BUILD_GTESTS)
516 return ops->cancel_service_discovery(peer_addr, service_type);
519 int wfd_oem_serv_add(wfd_oem_ops_s *ops, wfd_oem_new_service_s *service)
521 if (!ops || !ops->serv_add)
522 #if defined(BUILD_GTESTS)
528 return ops->serv_add(service);
531 int wfd_oem_serv_del(wfd_oem_ops_s *ops, wfd_oem_new_service_s *service)
533 if (!ops || !ops->serv_del)
534 #if defined(BUILD_GTESTS)
540 return ops->serv_del(service);
543 int wfd_oem_serv_disc_start(wfd_oem_ops_s *ops, wfd_oem_new_service_s *service)
545 if (!ops || !ops->serv_disc_start)
546 #if defined(BUILD_GTESTS)
552 return ops->serv_disc_start(service);
555 int wfd_oem_serv_disc_stop(wfd_oem_ops_s *ops, int handle)
557 if (!ops || !ops->serv_disc_stop)
558 #if defined(BUILD_GTESTS)
564 return ops->serv_disc_stop(handle);
567 int wfd_oem_miracast_init(wfd_oem_ops_s *ops, int enable)
569 if (!ops || !ops->miracast_init)
570 #if defined(BUILD_GTESTS)
576 return ops->miracast_init(enable);
579 int wfd_oem_set_display(wfd_oem_ops_s *ops, wfd_oem_display_s *wifi_display)
581 if (!ops || !ops->set_display)
582 #if defined(BUILD_GTESTS)
588 return ops->set_display(wifi_display);
591 int wfd_oem_refresh(wfd_oem_ops_s *ops)
593 if (!ops || !ops->refresh)
596 return ops->refresh();
599 int wfd_oem_advertise_service(wfd_oem_ops_s *ops, wfd_oem_asp_service_s *service, int replace)
601 if (!ops || !ops->advertise_service)
602 #if defined(BUILD_GTESTS)
608 return ops->advertise_service(service, replace);
611 int wfd_oem_cancel_advertise_service(wfd_oem_ops_s *ops, wfd_oem_asp_service_s *service)
613 if (!ops || !ops->cancel_advertise_service)
614 #if defined(BUILD_GTESTS)
620 return ops->cancel_advertise_service(service);
623 int wfd_oem_seek_service(wfd_oem_ops_s *ops, wfd_oem_asp_service_s *service)
625 if (!ops || !ops->seek_service)
626 #if defined(BUILD_GTESTS)
632 return ops->seek_service(service);
635 int wfd_oem_cancel_seek_service(wfd_oem_ops_s *ops, wfd_oem_asp_service_s *service)
637 if (!ops || !ops->cancel_seek_service)
638 #if defined(BUILD_GTESTS)
644 return ops->cancel_seek_service(service);
647 int wfd_oem_asp_prov_disc_req(wfd_oem_ops_s *ops, wfd_oem_asp_prov_s *params)
649 if (!ops || !ops->asp_prov_disc_req)
650 #if defined(BUILD_GTESTS)
656 return ops->asp_prov_disc_req(params);
659 int wfd_oem_set_eapol_ip_config(wfd_oem_ops_s *ops, int enable)
661 if (!ops || !ops->set_eapol_ip_config)
662 #if defined(BUILD_GTESTS)
668 return ops->set_eapol_ip_config(enable);
671 int wfd_oem_add_vsie(wfd_oem_ops_s *ops, wfd_oem_vsie_frames_e frame_id,
674 if (!ops || !ops->add_vsie)
675 #if defined(BUILD_GTESTS)
681 return ops->add_vsie(frame_id, vsie);
684 int wfd_oem_get_vsie(wfd_oem_ops_s *ops, wfd_oem_vsie_frames_e frame_id,
687 if (!ops || !ops->get_vsie)
688 #if defined(BUILD_GTESTS)
694 return ops->get_vsie(frame_id, vsie);
697 int wfd_oem_remove_vsie(wfd_oem_ops_s *ops, wfd_oem_vsie_frames_e frame_id,
700 if (!ops || !ops->remove_vsie)
701 #if defined(BUILD_GTESTS)
707 return ops->remove_vsie(frame_id, vsie);
710 #if defined TIZEN_ENABLE_PRD
711 int wfd_oem_prd_init(wfd_oem_ops_s *ops)
713 wfd_oem_prd_ops_s *prd_ops;
718 prd_ops = ops->extra_data;
720 if (!prd_ops || !prd_ops->prd_init)
723 g_event_cbs.extra_data = &g_prd_event_cbs;
724 wfd_prd_event_init(&g_event_cbs);
726 return prd_ops->prd_init(&g_event_cbs);
728 #endif /* TIZEN_ENABLE_PRD */
730 int wfd_oem_set_supported_wps_mode(wfd_oem_ops_s *ops, int wps_mode)
732 if (!ops || !ops->set_supported_wps_mode) {
736 return ops->set_supported_wps_mode(wps_mode);
739 int wfd_oem_remove_persistent_device(wfd_oem_ops_s *ops, unsigned char *peer_mac_address)
741 if (!ops || !ops->remove_persistent_device) {
745 return ops->remove_persistent_device(peer_mac_address);
748 int wfd_oem_remove_all_persistent_device(wfd_oem_ops_s *ops)
750 if (!ops || !ops->remove_all_persistent_device) {
754 return ops->remove_all_persistent_device();
757 int wfd_oem_get_supported_channels(wfd_oem_ops_s *ops, wfd_oem_supported_channels_s *data)
759 if (!ops || !ops->get_supported_channels)
762 return ops->get_supported_channels(data);