4 * Copyright (c) 2012 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: Sungsik Jang <sungsik.jang@samsung.com>, Dongwook Lee <dwmax.lee@samsung.com>
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
23 /*****************************************************************************
25 *****************************************************************************/
32 #include <sys/socket.h>
37 #include <sys/ioctl.h>
39 #include <linux/unistd.h>
47 /*****************************************************************************
49 *****************************************************************************/
51 #include <system_info.h>
53 /*****************************************************************************
54 * Wi-Fi Direct Service headers
55 *****************************************************************************/
56 #include "wifi-direct.h"
57 #include "wifi-direct-internal.h"
58 #include "wifi-direct-client-proxy.h"
59 #include "wifi-direct-ipc.h"
60 #include "wifi-direct-log.h"
61 #include "wifi-direct-dbus.h"
63 /*****************************************************************************
65 *****************************************************************************/
67 /*****************************************************************************
69 *****************************************************************************/
71 static __thread wifi_direct_client_info_s g_client_info = {0, };
73 /*****************************************************************************
74 * Local Functions Definition
75 *****************************************************************************/
77 static wifi_direct_client_info_s *__wfd_get_control()
79 return &g_client_info;
82 static int __net_wifidirect_gerror_to_enum(GError* error)
84 int ret = WIFI_DIRECT_ERROR_NONE;
86 WDC_LOGI("GError is NULL!!");
90 WDC_LOGE("wifi_direct_dbus_method_call_sync() failed. error [%d: %s]",
91 error->code, error->message);
93 if (NULL == strstr(error->message, "net.wifidirect.Error")) {
95 if (NULL != strstr(error->message, ".AccessDenied")) {
96 WDC_LOGE("Client doesn't have wifidirect privilege");
97 ret = WIFI_DIRECT_ERROR_PERMISSION_DENIED;
99 WDC_LOGE("DBus failure");
100 ret = WIFI_DIRECT_ERROR_OPERATION_FAILED;
104 if (NULL != strstr(error->message, "InvalidParameter"))
105 ret = WIFI_DIRECT_ERROR_INVALID_PARAMETER;
106 else if (NULL != strstr(error->message, "NotPermitted"))
107 ret = WIFI_DIRECT_ERROR_NOT_PERMITTED;
108 else if (NULL != strstr(error->message, "OperationFailed"))
109 ret = WIFI_DIRECT_ERROR_OPERATION_FAILED;
111 else if (NULL != strstr(error->message, "TooManyClient"))
112 ret = WIFI_DIRECT_ERROR_TOO_MANY_CLIENT;
114 ret = WIFI_DIRECT_ERROR_OPERATION_FAILED;
121 static int __wfd_check_display_feature()
123 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_DISPLAY_FEATURE);
125 return WIFI_DIRECT_ERROR_NONE;
128 static int __wfd_check_service_discovery_feature()
130 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_SERVICE_DISCOVERY_FEATURE);
132 return WIFI_DIRECT_ERROR_NONE;
136 void __wfd_vconf_state_changed_cb(keynode_t *key, void *data)
138 __WDC_LOG_FUNC_START__;
142 if (!g_client_info.state_cb) {
143 WDC_LOGI("g_state_cb is NULL!!");
144 __WDC_LOG_FUNC_END__;
145 return; //LCOV_EXCL_LINE
148 res = vconf_get_int(VCONFKEY_WIFI_DIRECT_STATE, &state);
150 WDC_LOGE("Failed to get vconf value [%s]\n",
151 VCONFKEY_WIFI_DIRECT_STATE);
152 __WDC_LOG_FUNC_END__;
156 if (state == VCONFKEY_WIFI_DIRECT_ACTIVATED) {
157 state = WIFI_DIRECT_STATE_ACTIVATED;
158 } else if (state == VCONFKEY_WIFI_DIRECT_DEACTIVATED) {
159 state = WIFI_DIRECT_STATE_DEACTIVATED;
160 } else if (state == VCONFKEY_WIFI_DIRECT_CONNECTED) {
161 state = WIFI_DIRECT_STATE_CONNECTED;
162 } else if (state == VCONFKEY_WIFI_DIRECT_GROUP_OWNER) {
163 state = WIFI_DIRECT_STATE_CONNECTED;
164 } else if (state == VCONFKEY_WIFI_DIRECT_DISCOVERING) {
165 state = WIFI_DIRECT_STATE_DISCOVERING;
166 } else if (state == VCONFKEY_WIFI_DIRECT_DEACTIVATING) {
167 state = WIFI_DIRECT_STATE_DEACTIVATING;
168 } else if (state == VCONFKEY_WIFI_DIRECT_ACTIVATING) {
169 state = WIFI_DIRECT_STATE_ACTIVATING;
170 } else if (state == VCONFKEY_WIFI_DIRECT_CONNECTING) {
171 state = WIFI_DIRECT_STATE_CONNECTING;
172 } else if (state == VCONFKEY_WIFI_DIRECT_DISCONNECTING) {
173 state = WIFI_DIRECT_STATE_DISCONNECTING;
175 WDC_LOGE("This state cannot be set as wifi_direct vconf state[%d]", state);
176 __WDC_LOG_FUNC_END__;
180 g_client_info.state_cb(state, g_client_info.user_data_for_cb_state);
182 __WDC_LOG_FUNC_END__;
188 void wifi_direct_process_manage_activation(GDBusConnection *connection,
190 const gchar *object_path,
191 const gchar *interface,
193 GVariant *parameters,
196 __WDC_LOG_FUNC_START__;
198 wifi_direct_client_info_s *client = __wfd_get_control();
200 if (!client->activation_cb) {
201 WDC_LOGI("activation_cb is NULL!!");
202 return; //LCOV_EXCL_LINE
206 __WDC_LOG_FUNC_END__;
210 g_variant_get(parameters, "(i)", &error_code);
212 client->activation_cb(error_code,
213 WIFI_DIRECT_DEVICE_STATE_ACTIVATED,
214 client->user_data_for_cb_activation);
216 __WDC_LOG_FUNC_END__;
219 void wifi_direct_process_manage_deactivation(GDBusConnection *connection,
221 const gchar *object_path,
222 const gchar *interface,
224 GVariant *parameters,
227 __WDC_LOG_FUNC_START__;
229 wifi_direct_client_info_s *client = __wfd_get_control();
232 __WDC_LOG_FUNC_END__;
233 return; //LCOV_EXCL_LINE
236 if (!client->activation_cb) {
237 WDC_LOGI("activation_cb is NULL!!");
238 __WDC_LOG_FUNC_END__;
242 g_variant_get(parameters, "(i)", &error_code);
244 client->activation_cb(error_code,
245 WIFI_DIRECT_DEVICE_STATE_DEACTIVATED,
246 client->user_data_for_cb_activation);
248 __WDC_LOG_FUNC_END__;
252 void wifi_direct_process_manage_connection(GDBusConnection *connection,
254 const gchar *object_path,
255 const gchar *interface,
257 GVariant *parameters,
260 __WDC_LOG_FUNC_START__;
262 wifi_direct_connection_state_e connection_state;
263 const gchar *peer_mac_address = NULL;
264 wifi_direct_client_info_s *client = __wfd_get_control();
267 __WDC_LOG_FUNC_END__;
271 if (!client->connection_cb) {
272 WDC_LOGI("connection_cb is NULL!!");
273 __WDC_LOG_FUNC_END__;
277 g_variant_get(parameters, "(ii&s)",
278 &error_code, &connection_state, &peer_mac_address);
280 client->connection_cb(error_code,
283 client->user_data_for_cb_connection);
285 __WDC_LOG_FUNC_END__;
288 void wifi_direct_process_manage_disconnection(GDBusConnection *connection,
290 const gchar *object_path,
291 const gchar *interface,
293 GVariant *parameters,
296 __WDC_LOG_FUNC_START__;
298 wifi_direct_connection_state_e connection_state;
299 const gchar *peer_mac_address = NULL;
300 wifi_direct_client_info_s *client = __wfd_get_control();
303 __WDC_LOG_FUNC_END__;
307 if (!client->connection_cb) {
308 WDC_LOGI("connection_cb is NULL!!");
309 __WDC_LOG_FUNC_END__;
313 g_variant_get(parameters, "(ii&s)",
314 &error_code, &connection_state, &peer_mac_address);
316 client->connection_cb(error_code,
319 client->user_data_for_cb_connection);
321 __WDC_LOG_FUNC_END__;
324 void wifi_direct_process_manage_disconnection_ind(GDBusConnection *connection,
326 const gchar *object_path,
327 const gchar *interface,
329 GVariant *parameters,
332 __WDC_LOG_FUNC_START__;
334 wifi_direct_connection_state_e connection_state;
335 const gchar *peer_mac_address = NULL;
336 const gchar *peer_dev_name = NULL;
337 wifi_direct_connection_state_cb_data_s data_s;
339 wifi_direct_client_info_s *client = __wfd_get_control();
342 __WDC_LOG_FUNC_END__;
346 g_variant_get(parameters, "(ii&s&s)",
347 &error_code, &connection_state, &peer_mac_address, &peer_dev_name);
349 memset(&data_s, 0x00, sizeof(wifi_direct_connection_state_cb_data_s));
350 g_strlcpy(data_s.mac_address, peer_mac_address, WIFI_DIRECT_MAC_ADDRESS_LEN+1);
351 g_strlcpy(data_s.device_name, peer_dev_name, WIFI_DIRECT_MAX_DEVICE_NAME_LEN+1);
353 if (client->connection_cb) {
354 client->connection_cb(error_code,
357 client->user_data_for_cb_connection);
360 if (client->peer_data_connection_cb) {
361 client->peer_data_connection_cb(error_code,
364 client->user_data_for_cb_peer_data_connection);
367 __WDC_LOG_FUNC_END__;
370 void wifi_direct_process_manage_peer_ip_assigned(GDBusConnection *connection,
372 const gchar *object_path,
373 const gchar *interface,
375 GVariant *parameters,
378 __WDC_LOG_FUNC_START__;
379 const char *get_str = NULL;
380 GError* error = NULL;
381 GVariant *reply = NULL;
382 const gchar *peer_mac_address = NULL;
383 const gchar *assigned_ip_address = NULL;
385 wifi_direct_client_info_s *client = __wfd_get_control();
388 __WDC_LOG_FUNC_END__;
392 g_variant_get(parameters, "(&s&s)",
393 &peer_mac_address, &assigned_ip_address);
395 if (!client->ip_assigned_cb) {
396 WDC_LOGI("ip_assigned_cb is NULL!!");
397 __WDC_LOG_FUNC_END__;
401 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_CONFIG_INTERFACE,
406 WDC_LOGE("wifi_direct_dbus_method_call_sync() failed."
407 "error [%d: %s]", error->code, error->message);
409 __WDC_LOG_FUNC_END__;
413 g_variant_get(reply, "(i&s)", &ret, &get_str);
414 g_variant_unref(reply);
416 WDC_LOGD("Interface Name = [%s]", get_str);
417 WDC_LOGD("%s() return : [%d]", __func__, ret);
419 client->ip_assigned_cb(peer_mac_address, assigned_ip_address, get_str,
420 client->user_data_for_cb_ip_assigned);
422 __WDC_LOG_FUNC_END__;
425 void wifi_direct_process_manage_listen_started(GDBusConnection *connection,
427 const gchar *object_path,
428 const gchar *interface,
430 GVariant *parameters,
433 __WDC_LOG_FUNC_START__;
434 wifi_direct_client_info_s *client = __wfd_get_control();
436 if (!client->discover_cb) {
437 WDC_LOGI("discover_cb is NULL!!");
438 __WDC_LOG_FUNC_END__;
442 client->discover_cb(WIFI_DIRECT_ERROR_NONE,
443 WIFI_DIRECT_ONLY_LISTEN_STARTED,
444 client->user_data_for_cb_discover);
446 __WDC_LOG_FUNC_END__;
449 void wifi_direct_process_manage_discovery_started(GDBusConnection *connection,
451 const gchar *object_path,
452 const gchar *interface,
454 GVariant *parameters,
457 __WDC_LOG_FUNC_START__;
458 wifi_direct_client_info_s *client = __wfd_get_control();
460 if (!client->discover_cb) {
461 WDC_LOGI("discover_cb is NULL!!");
462 __WDC_LOG_FUNC_END__;
466 client->discover_cb(WIFI_DIRECT_ERROR_NONE,
467 WIFI_DIRECT_DISCOVERY_STARTED,
468 client->user_data_for_cb_discover);
470 __WDC_LOG_FUNC_END__;
473 void wifi_direct_process_manage_discovery_finished(GDBusConnection *connection,
475 const gchar *object_path,
476 const gchar *interface,
478 GVariant *parameters,
481 __WDC_LOG_FUNC_START__;
482 wifi_direct_client_info_s *client = __wfd_get_control();
484 if (!client->discover_cb) {
485 WDC_LOGI("discover_cb is NULL!!");
486 __WDC_LOG_FUNC_END__;
490 client->discover_cb(WIFI_DIRECT_ERROR_NONE,
491 WIFI_DIRECT_DISCOVERY_FINISHED,
492 client->user_data_for_cb_discover);
494 __WDC_LOG_FUNC_END__;
497 void wifi_direct_process_manage_peer_found(GDBusConnection *connection,
499 const gchar *object_path,
500 const gchar *interface,
502 GVariant *parameters,
505 __WDC_LOG_FUNC_START__;
506 const gchar *peer_mac_address = NULL;
507 wifi_direct_client_info_s *client = __wfd_get_control();
510 __WDC_LOG_FUNC_END__;
514 g_variant_get(parameters, "(&s)", &peer_mac_address);
516 if (client->peer_found_cb) {
517 client->peer_found_cb(WIFI_DIRECT_ERROR_NONE,
518 WIFI_DIRECT_DISCOVERY_FOUND,
520 client->user_data_for_cb_discover);
522 WDC_LOGI("peer_found_cb is NULL!!");
525 if (!client->discover_cb) {
526 WDC_LOGI("discover_cb is NULL!!");
527 __WDC_LOG_FUNC_END__;
531 client->discover_cb(WIFI_DIRECT_ERROR_NONE,
532 WIFI_DIRECT_DISCOVERY_FOUND,
533 client->user_data_for_cb_discover);
535 __WDC_LOG_FUNC_END__;
538 void wifi_direct_process_manage_peer_lost(GDBusConnection *connection,
540 const gchar *object_path,
541 const gchar *interface,
543 GVariant *parameters,
546 __WDC_LOG_FUNC_START__;
547 const gchar *peer_mac_address = NULL;
548 wifi_direct_client_info_s *client = __wfd_get_control();
551 __WDC_LOG_FUNC_END__;
555 g_variant_get(parameters, "(&s)", &peer_mac_address);
557 if (client->peer_found_cb) {
558 client->peer_found_cb(WIFI_DIRECT_ERROR_NONE,
559 WIFI_DIRECT_DISCOVERY_LOST,
561 client->user_data_for_cb_discover);
563 WDC_LOGI("peer_found_cb is NULL!!");
566 if (!client->discover_cb) {
567 WDC_LOGI("discover_cb is NULL!!");
568 __WDC_LOG_FUNC_END__;
572 client->discover_cb(WIFI_DIRECT_ERROR_NONE,
573 WIFI_DIRECT_DISCOVERY_LOST,
574 client->user_data_for_cb_discover);
576 __WDC_LOG_FUNC_END__;
580 void wifi_direct_process_group_created(GDBusConnection *connection,
582 const gchar *object_path,
583 const gchar *interface,
585 GVariant *parameters,
588 __WDC_LOG_FUNC_START__;
589 wifi_direct_client_info_s *client = __wfd_get_control();
591 if (!client->connection_cb) {
592 WDC_LOGI("connection_cb is NULL!!");
593 __WDC_LOG_FUNC_END__;
597 client->connection_cb(WIFI_DIRECT_ERROR_NONE,
598 WIFI_DIRECT_GROUP_CREATED,
600 client->user_data_for_cb_connection);
602 __WDC_LOG_FUNC_END__;
605 void wifi_direct_process_group_destroyed(GDBusConnection *connection,
607 const gchar *object_path,
608 const gchar *interface,
610 GVariant *parameters,
613 __WDC_LOG_FUNC_START__;
614 wifi_direct_client_info_s *client = __wfd_get_control();
616 if (!client->connection_cb) {
617 WDC_LOGI("connection_cb is NULL!!");
618 __WDC_LOG_FUNC_END__;
622 client->connection_cb(WIFI_DIRECT_ERROR_NONE,
623 WIFI_DIRECT_GROUP_DESTROYED,
625 client->user_data_for_cb_connection);
627 __WDC_LOG_FUNC_END__;
631 void wifi_direct_process_service_discovery_started(GDBusConnection *connection,
633 const gchar *object_path,
634 const gchar *interface,
636 GVariant *parameters,
639 __WDC_LOG_FUNC_START__;
640 wifi_direct_client_info_s *client = __wfd_get_control();
642 if (!client->is_service_discovery_supported) {
643 WDC_LOGI("service discovery is not supported\n");
644 __WDC_LOG_FUNC_END__;
648 if (!client->service_cb) {
649 WDC_LOGI("service_cb is NULL!!\n");
650 __WDC_LOG_FUNC_END__;
654 client->service_cb(WIFI_DIRECT_ERROR_NONE,
655 WIFI_DIRECT_SERVICE_DISCOVERY_STARTED,
656 WIFI_DIRECT_SERVICE_TYPE_ALL,
659 client->user_data_for_cb_service);
661 __WDC_LOG_FUNC_END__;
664 void wifi_direct_process_service_discovery_found(GDBusConnection *connection,
666 const gchar *object_path,
667 const gchar *interface,
669 GVariant *parameters,
672 __WDC_LOG_FUNC_START__;
673 wifi_direct_service_type_e service_type;
674 const gchar* response_data = NULL;
675 const gchar* peer_mac_address = NULL;
676 wifi_direct_client_info_s *client = __wfd_get_control();
678 if (!client->is_service_discovery_supported) {
679 WDC_LOGI("service discovery is not supported\n");
680 __WDC_LOG_FUNC_END__;
685 __WDC_LOG_FUNC_END__;
689 g_variant_get(parameters, "(i&s&s)",
690 &service_type, &response_data, &peer_mac_address);
692 if (!client->service_cb) {
693 WDC_LOGI("service_cb is NULL!!\n");
694 __WDC_LOG_FUNC_END__;
698 client->service_cb(WIFI_DIRECT_ERROR_NONE,
699 WIFI_DIRECT_SERVICE_DISCOVERY_FOUND,
701 (void *) response_data,
703 client->user_data_for_cb_service);
705 __WDC_LOG_FUNC_END__;
708 void wifi_direct_process_service_discovery_finished(GDBusConnection *connection,
710 const gchar *object_path,
711 const gchar *interface,
713 GVariant *parameters,
716 __WDC_LOG_FUNC_START__;
717 wifi_direct_client_info_s *client = __wfd_get_control();
719 if (!client->is_service_discovery_supported) {
720 WDC_LOGI("service discovery is not supported\n");
721 __WDC_LOG_FUNC_END__;
725 if (!client->service_cb) {
726 WDC_LOGI("service_cb is NULL!!\n");
727 __WDC_LOG_FUNC_END__;
731 client->service_cb(WIFI_DIRECT_ERROR_NONE,
732 WIFI_DIRECT_SERVICE_DISCOVERY_FINISHED,
733 WIFI_DIRECT_SERVICE_TYPE_ALL,
736 client->user_data_for_cb_service);
738 __WDC_LOG_FUNC_END__;
742 void __wfd_client_print_entry_list(wfd_discovery_entry_s *list, int num)
746 WDC_LOGD("------------------------------------------");
747 for (i = 0; i < num; i++) {
748 WDC_LOGD("== Peer index : %d ==", i);
749 WDC_LOGD("is Group Owner ? %s", list[i].is_group_owner ? "YES" : "NO");
750 WDC_LOGD("device_name : %s", list[i].device_name);
751 WDC_LOGD("MAC address : "MACSECSTR, MAC2SECSTR(list[i].mac_address));
752 WDC_LOGD("wps cfg method : %x", list[i].wps_cfg_methods);
753 WDC_LOGD("Device Type: %d - %d", list[i].category, list[i].subcategory);
754 WDC_LOGD("Listen channel: %d", list[i].channel);
756 WDC_LOGD("------------------------------------------");
759 void __wfd_client_print_connected_peer_info(wfd_connected_peer_info_s *list, int num)
763 WDC_LOGD("------------------------------------------\n");
764 for (i = 0; i < num; i++) {
765 WDC_LOGD("== Peer index : %d ==\n", i);
766 WDC_LOGD("device_name : %s\n", list[i].device_name);
767 WDC_LOGD("Device MAC : " MACSECSTR "\n", MAC2SECSTR(list[i].mac_address));
768 WDC_LOGD("Device Type: %d - %d", list[i].category, list[i].subcategory);
769 WDC_LOGD("channel : %d\n", list[i].channel);
770 WDC_LOGD("IP ["IPSECSTR"]\n", IP2SECSTR(list[i].ip_address));
772 WDC_LOGD("------------------------------------------\n");
775 void __wfd_client_print_persistent_group_info(wfd_persistent_group_info_s *list, int num)
779 WDC_LOGD("------------------------------------------\n");
780 for (i = 0; i < num; i++) {
781 WDC_LOGD("== Persistent Group index : %d ==", i);
782 WDC_LOGD("ssid : %s", list[i].ssid);
783 WDC_LOGD("GO MAC : " MACSECSTR, MAC2SECSTR(list[i].go_mac_address));
785 WDC_LOGD("------------------------------------------\n");
789 static void __wfd_client_extract_discovered_peer_info(GVariantIter *iter,
790 wifi_direct_discovered_peer_info_s *info) {
791 __WDC_LOG_FUNC_START__;
792 GVariant *var = NULL;
795 while (g_variant_iter_loop(iter, "{sv}", &key, &var)) {
796 if (!g_strcmp0(key, "DeviceName")) {
797 const char *device_name = NULL;
799 g_variant_get(var, "&s", &device_name);
800 info->device_name = g_strndup(device_name, WIFI_DIRECT_MAX_DEVICE_NAME_LEN+1);
802 } else if (!g_strcmp0(key, "DeviceAddress")) {
803 unsigned char mac_address[MACADDR_LEN] = {0, };
805 wifi_direct_dbus_unpack_ay(mac_address, var, MACADDR_LEN);
806 info->mac_address = (char*) g_try_malloc0(MACSTR_LEN);
807 if (info->mac_address)
808 g_snprintf(info->mac_address, MACSTR_LEN, MACSTR, MAC2STR(mac_address));
810 } else if (!g_strcmp0(key, "InterfaceAddress")) {
811 unsigned char intf_address[MACADDR_LEN] = {0, };
813 wifi_direct_dbus_unpack_ay(intf_address, var, MACADDR_LEN);
814 info->interface_address = (char*) g_try_malloc0(MACSTR_LEN);
815 if (info->interface_address)
816 g_snprintf(info->interface_address, MACSTR_LEN, MACSTR, MAC2STR(intf_address));
818 } else if (!g_strcmp0(key, "Channel")) {
819 info->channel = g_variant_get_uint16(var);
821 } else if (!g_strcmp0(key, "IsGroupOwner")) {
822 info->is_group_owner = g_variant_get_boolean(var);
824 } else if (!g_strcmp0(key, "IsPersistentGO")) {
825 info->is_persistent_group_owner = g_variant_get_boolean(var);
827 } else if (!g_strcmp0(key, "IsConnected")) {
828 info->is_connected = g_variant_get_boolean(var);
830 } else if (!g_strcmp0(key, "Category")) {
831 info->primary_device_type = g_variant_get_uint16(var);
833 } else if (!g_strcmp0(key, "SubCategory")) {
834 info->secondary_device_type = g_variant_get_uint16(var);
836 } else if (!g_strcmp0(key, "IsWfdDevice")) {
837 if (g_client_info.is_display_supported)
838 info->is_miracast_device = g_variant_get_boolean(var);
844 __WDC_LOG_FUNC_END__;
848 int wifi_direct_initialize(void)
850 __WDC_LOG_FUNC_START__;
852 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
854 GError* error = NULL;
855 GVariant *reply = NULL;
856 bool wifi_direct_enable;
859 if (g_client_info.is_registered == TRUE) {
860 WDC_LOGW("Warning!!! Already registered\nUpdate user data and callback!");
861 __WDC_LOG_FUNC_END__;
862 return WIFI_DIRECT_ERROR_ALREADY_INITIALIZED;
865 res = system_info_get_platform_bool("tizen.org/feature/network.wifi.direct", &wifi_direct_enable);
867 WDC_LOGE("Failed to get sys info");
868 __WDC_LOG_FUNC_END__;
869 return res; //LCOV_EXCL_LINE
872 if (!wifi_direct_enable) {
873 WDC_LOGE("Wi-Fi Direct not supported");
874 return WIFI_DIRECT_ERROR_NOT_SUPPORTED; //LCOV_EXCL_LINE
877 if (wifi_direct_dbus_init() == FALSE) {
878 WDC_LOGW("Failed to initialize dbus");
879 __WDC_LOG_FUNC_END__;
880 return WIFI_DIRECT_ERROR_OPERATION_FAILED; //LCOV_EXCL_LINE
883 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_MANAGE_INTERFACE,
884 "AddClient", NULL, &error);
885 res = __net_wifidirect_gerror_to_enum(error);
886 if (res != WIFI_DIRECT_ERROR_NONE) {
887 WDC_LOGE("Failed to Add Active Client");
891 g_variant_get(reply, "(i)", &res);
892 WDC_LOGD("Active Client id Added, ret[%d]", res);
894 g_client_info.is_registered = TRUE;
896 if (__wfd_check_display_feature() == WIFI_DIRECT_ERROR_NONE)
897 g_client_info.is_display_supported = TRUE;
899 g_client_info.is_display_supported = FALSE;
901 if (__wfd_check_service_discovery_feature() == WIFI_DIRECT_ERROR_NONE)
902 g_client_info.is_service_discovery_supported = TRUE;
904 g_client_info.is_service_discovery_supported = FALSE;
906 /* Initialize callbacks */
907 g_client_info.activation_cb = NULL;
908 g_client_info.user_data_for_cb_activation = NULL;
910 g_client_info.discover_cb = NULL;
911 g_client_info.user_data_for_cb_discover = NULL;
913 g_client_info.connection_cb = NULL;
914 g_client_info.user_data_for_cb_connection = NULL;
916 g_client_info.ip_assigned_cb = NULL;
917 g_client_info.user_data_for_cb_ip_assigned = NULL;
919 g_client_info.peer_found_cb = NULL;
920 g_client_info.user_data_for_cb_peer_found = NULL;
922 g_client_info.service_cb = NULL;
923 g_client_info.user_data_for_cb_service = NULL;
925 __WDC_LOG_FUNC_END__;
926 return WIFI_DIRECT_ERROR_NONE;
929 int wifi_direct_deinitialize(void)
931 __WDC_LOG_FUNC_START__;
933 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
935 if (g_client_info.is_registered == false) {
936 WDC_LOGE("Client is already deregistered");
937 __WDC_LOG_FUNC_END__;
938 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
941 wifi_direct_dbus_deinit();
943 g_client_info.activation_cb = NULL;
944 g_client_info.user_data_for_cb_activation = NULL;
946 g_client_info.discover_cb = NULL;
947 g_client_info.user_data_for_cb_discover = NULL;
949 g_client_info.connection_cb = NULL;
950 g_client_info.user_data_for_cb_connection = NULL;
952 g_client_info.ip_assigned_cb = NULL;
953 g_client_info.user_data_for_cb_ip_assigned = NULL;
955 g_client_info.peer_found_cb = NULL;
956 g_client_info.user_data_for_cb_peer_found = NULL;
958 g_client_info.service_cb = NULL;
959 g_client_info.user_data_for_cb_service = NULL;
961 g_client_info.is_registered = FALSE;
963 __WDC_LOG_FUNC_END__;
964 return WIFI_DIRECT_ERROR_NONE;
968 int wifi_direct_set_device_state_changed_cb(wifi_direct_device_state_changed_cb cb,
971 __WDC_LOG_FUNC_START__;
973 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
976 WDC_LOGE("Invalid parameter");
977 __WDC_LOG_FUNC_END__;
978 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
981 if (g_client_info.is_registered == false) {
982 WDC_LOGE("Client is not initialized.");
983 __WDC_LOG_FUNC_END__;
984 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
987 g_client_info.activation_cb = cb;
988 g_client_info.user_data_for_cb_activation = user_data;
990 __WDC_LOG_FUNC_END__;
991 return WIFI_DIRECT_ERROR_NONE;
995 int wifi_direct_unset_device_state_changed_cb(void)
997 __WDC_LOG_FUNC_START__;
999 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
1001 if (g_client_info.is_registered == false) {
1002 WDC_LOGE("Client is not initialized.\n");
1003 __WDC_LOG_FUNC_END__;
1004 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
1007 g_client_info.activation_cb = NULL;
1008 g_client_info.user_data_for_cb_activation = NULL;
1010 __WDC_LOG_FUNC_END__;
1011 return WIFI_DIRECT_ERROR_NONE;
1016 wifi_direct_set_discovery_state_changed_cb(wifi_direct_discovery_state_chagned_cb cb,
1019 __WDC_LOG_FUNC_START__;
1021 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
1024 WDC_LOGE("Callback is NULL.\n");
1025 __WDC_LOG_FUNC_END__;
1026 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
1029 if (g_client_info.is_registered == false) {
1030 WDC_LOGE("Client is not initialized.\n");
1031 __WDC_LOG_FUNC_END__;
1032 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
1035 g_client_info.discover_cb = cb;
1036 g_client_info.user_data_for_cb_discover = user_data;
1038 __WDC_LOG_FUNC_END__;
1039 return WIFI_DIRECT_ERROR_NONE;
1043 int wifi_direct_unset_discovery_state_changed_cb(void)
1045 __WDC_LOG_FUNC_START__;
1047 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
1049 if (g_client_info.is_registered == false) {
1050 WDC_LOGE("Client is not initialized.\n");
1051 __WDC_LOG_FUNC_END__;
1052 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
1055 g_client_info.discover_cb = NULL;
1056 g_client_info.user_data_for_cb_discover = NULL;
1058 __WDC_LOG_FUNC_END__;
1059 return WIFI_DIRECT_ERROR_NONE;
1062 int wifi_direct_set_peer_found_cb(wifi_direct_peer_found_cb cb,
1065 __WDC_LOG_FUNC_START__;
1067 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
1070 WDC_LOGE("Callback is NULL.\n");
1071 __WDC_LOG_FUNC_END__;
1072 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
1075 if (g_client_info.is_registered == false) {
1076 WDC_LOGE("Client is not initialized.\n");
1077 __WDC_LOG_FUNC_END__;
1078 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
1081 g_client_info.peer_found_cb = cb;
1082 g_client_info.user_data_for_cb_peer_found = user_data;
1084 __WDC_LOG_FUNC_END__;
1085 return WIFI_DIRECT_ERROR_NONE;
1089 int wifi_direct_unset_peer_found_cb(void)
1091 __WDC_LOG_FUNC_START__;
1093 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
1095 if (g_client_info.is_registered == false) {
1096 WDC_LOGE("Client is not initialized.\n");
1097 __WDC_LOG_FUNC_END__;
1098 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
1101 g_client_info.peer_found_cb = NULL;
1102 g_client_info.user_data_for_cb_peer_found = NULL;
1104 __WDC_LOG_FUNC_END__;
1105 return WIFI_DIRECT_ERROR_NONE;
1108 int wifi_direct_set_service_state_changed_cb(wifi_direct_service_state_changed_cb cb,
1111 __WDC_LOG_FUNC_START__;
1113 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_SERVICE_DISCOVERY_FEATURE);
1117 WDC_LOGE("Callback is NULL.");
1118 __WDC_LOG_FUNC_END__;
1119 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
1122 if (g_client_info.is_registered == false) {
1123 WDC_LOGE("Client is not initialized.");
1124 __WDC_LOG_FUNC_END__;
1125 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
1128 g_client_info.service_cb = cb;
1129 g_client_info.user_data_for_cb_service = user_data;
1131 __WDC_LOG_FUNC_END__;
1133 return WIFI_DIRECT_ERROR_NONE;
1137 int wifi_direct_unset_service_state_changed_cb(void)
1139 __WDC_LOG_FUNC_START__;
1141 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_SERVICE_DISCOVERY_FEATURE);
1144 if (g_client_info.is_registered == false) {
1145 WDC_LOGE("Client is not initialized.");
1146 __WDC_LOG_FUNC_END__;
1147 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
1150 g_client_info.service_cb = NULL;
1151 g_client_info.user_data_for_cb_service = NULL;
1153 __WDC_LOG_FUNC_END__;
1155 return WIFI_DIRECT_ERROR_NONE;
1158 int wifi_direct_set_connection_state_changed_cb(wifi_direct_connection_state_changed_cb cb,
1161 __WDC_LOG_FUNC_START__;
1163 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
1166 WDC_LOGE("Callback is NULL.\n");
1167 __WDC_LOG_FUNC_END__;
1168 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
1171 if (g_client_info.is_registered == false) {
1172 WDC_LOGE("Client is not initialized.\n");
1173 __WDC_LOG_FUNC_END__;
1174 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
1177 g_client_info.connection_cb = cb;
1178 g_client_info.user_data_for_cb_connection = user_data;
1180 __WDC_LOG_FUNC_END__;
1181 return WIFI_DIRECT_ERROR_NONE;
1185 int wifi_direct_unset_connection_state_changed_cb(void)
1187 __WDC_LOG_FUNC_START__;
1189 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
1191 if (g_client_info.is_registered == false) {
1192 WDC_LOGE("Client is not initialized");
1193 __WDC_LOG_FUNC_END__;
1194 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
1197 g_client_info.connection_cb = NULL;
1198 g_client_info.user_data_for_cb_connection = NULL;
1200 __WDC_LOG_FUNC_END__;
1201 return WIFI_DIRECT_ERROR_NONE;
1204 int wifi_direct_set_peer_info_connection_state_changed_cb(wifi_direct_peer_info_connection_state_changed_cb cb, void *user_data)
1206 __WDC_LOG_FUNC_START__;
1208 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_DISPLAY_FEATURE);
1211 WDC_LOGE("Callback is NULL");
1212 __WDC_LOG_FUNC_END__;
1213 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
1216 if (g_client_info.is_registered == false) {
1217 WDC_LOGE("Client is not initialized");
1218 __WDC_LOG_FUNC_END__;
1219 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
1222 g_client_info.peer_data_connection_cb = cb;
1223 g_client_info.user_data_for_cb_peer_data_connection = user_data;
1225 __WDC_LOG_FUNC_END__;
1226 return WIFI_DIRECT_ERROR_NONE;
1229 int wifi_direct_unset_peer_info_connection_state_changed_cb(void)
1231 __WDC_LOG_FUNC_START__;
1233 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_DISPLAY_FEATURE);
1235 if (g_client_info.is_registered == false) {
1236 WDC_LOGE("Client is not initialized");
1237 __WDC_LOG_FUNC_END__;
1238 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
1241 g_client_info.peer_data_connection_cb = NULL;
1242 g_client_info.user_data_for_cb_peer_data_connection = NULL;
1244 __WDC_LOG_FUNC_END__;
1245 return WIFI_DIRECT_ERROR_NONE;
1248 int wifi_direct_set_client_ip_address_assigned_cb(wifi_direct_client_ip_address_assigned_cb cb,
1251 __WDC_LOG_FUNC_START__;
1253 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
1256 WDC_LOGE("Callback is NULL");
1257 __WDC_LOG_FUNC_END__;
1258 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
1261 if (g_client_info.is_registered == false) {
1262 WDC_LOGE("Client is not initialized");
1263 __WDC_LOG_FUNC_END__;
1264 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
1267 g_client_info.ip_assigned_cb = cb;
1268 g_client_info.user_data_for_cb_ip_assigned = user_data;
1270 __WDC_LOG_FUNC_END__;
1271 return WIFI_DIRECT_ERROR_NONE;
1274 int wifi_direct_unset_client_ip_address_assigned_cb(void)
1276 __WDC_LOG_FUNC_START__;
1278 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
1280 if (g_client_info.is_registered == false) {
1281 WDC_LOGE("Client is not initialized");
1282 __WDC_LOG_FUNC_END__;
1283 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
1286 g_client_info.ip_assigned_cb = NULL;
1287 g_client_info.user_data_for_cb_ip_assigned = NULL;
1289 __WDC_LOG_FUNC_END__;
1290 return WIFI_DIRECT_ERROR_NONE;
1293 int wifi_direct_set_state_changed_cb(wifi_direct_state_changed_cb cb, void *user_data)
1295 __WDC_LOG_FUNC_START__;
1296 int ret = WIFI_DIRECT_ERROR_NONE;
1298 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
1301 WDC_LOGE("Callback is NULL");
1302 __WDC_LOG_FUNC_END__;
1303 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
1306 ret = vconf_notify_key_changed(VCONFKEY_WIFI_DIRECT_STATE,
1307 __wfd_vconf_state_changed_cb, NULL);
1309 WDC_LOGE("Failed to set vconf notification callback");
1310 __WDC_LOG_FUNC_END__;
1311 return WIFI_DIRECT_ERROR_OPERATION_FAILED;
1314 g_client_info.state_cb = cb;
1315 g_client_info.user_data_for_cb_state = user_data;
1317 __WDC_LOG_FUNC_END__;
1318 return WIFI_DIRECT_ERROR_NONE;
1321 int wifi_direct_unset_state_changed_cb(void)
1323 __WDC_LOG_FUNC_START__;
1326 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
1328 ret = vconf_ignore_key_changed(VCONFKEY_WIFI_DIRECT_STATE,
1329 __wfd_vconf_state_changed_cb);
1331 WDC_LOGE("Failed to ignore vconf notification callback");
1332 __WDC_LOG_FUNC_END__;
1333 return WIFI_DIRECT_ERROR_OPERATION_FAILED;
1336 g_client_info.state_cb = NULL;
1337 g_client_info.user_data_for_cb_state = NULL;
1339 __WDC_LOG_FUNC_END__;
1340 return WIFI_DIRECT_ERROR_NONE;
1343 int wifi_direct_activate(void)
1345 __WDC_LOG_FUNC_START__;
1346 GError *error = NULL;
1347 GVariant *reply = NULL;
1348 int ret = WIFI_DIRECT_ERROR_NONE;
1350 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
1352 if (g_client_info.is_registered == false) {
1353 WDC_LOGE("Client is NOT registered");
1354 __WDC_LOG_FUNC_END__;
1355 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
1358 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_MANAGE_INTERFACE,
1359 "Activate", NULL, &error);
1361 ret = __net_wifidirect_gerror_to_enum(error);
1362 if (ret == WIFI_DIRECT_ERROR_NONE) {
1363 g_variant_get(reply, "(i)", &ret);
1364 g_variant_unref(reply);
1367 WDC_LOGD("%s() return : [%d]", __func__, ret);
1368 __WDC_LOG_FUNC_END__;
1372 int wifi_direct_deactivate(void)
1374 __WDC_LOG_FUNC_START__;
1375 GError *error = NULL;
1376 GVariant *reply = NULL;
1377 int ret = WIFI_DIRECT_ERROR_NONE;
1379 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
1381 if (g_client_info.is_registered == false) {
1382 WDC_LOGE("Client is NOT registered");
1383 __WDC_LOG_FUNC_END__;
1384 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
1387 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_MANAGE_INTERFACE,
1388 "Deactivate", NULL, &error);
1390 ret = __net_wifidirect_gerror_to_enum(error);
1391 if (ret == WIFI_DIRECT_ERROR_NONE) {
1392 g_variant_get(reply, "(i)", &ret);
1393 g_variant_unref(reply);
1396 WDC_LOGD("%s() return : [%d]", __func__, ret);
1397 __WDC_LOG_FUNC_END__;
1401 int wifi_direct_start_discovery(bool listen_only, int timeout)
1403 __WDC_LOG_FUNC_START__;
1404 GVariantBuilder *builder = NULL;
1405 GVariant *params = NULL;
1406 GError *error = NULL;
1407 GVariant *reply = NULL;
1408 int ret = WIFI_DIRECT_ERROR_NONE;
1410 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
1412 if (g_client_info.is_registered == false) {
1413 WDC_LOGE("Client is NOT registered");
1414 __WDC_LOG_FUNC_END__;
1415 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
1419 WDC_LOGE("Negative value. Param [timeout]!");
1420 __WDC_LOG_FUNC_END__;
1421 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
1424 builder = g_variant_builder_new(G_VARIANT_TYPE("a{sv}"));
1425 g_variant_builder_add(builder, "{sv}", "Mode", g_variant_new("b", listen_only));
1426 g_variant_builder_add(builder, "{sv}", "Timeout", g_variant_new("i", timeout));
1427 params = g_variant_new("(a{sv})", builder);
1428 g_variant_builder_unref(builder);
1429 WDC_LOGI("listen only (%d) timeout (%d)", listen_only, timeout);
1431 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_MANAGE_INTERFACE,
1432 "StartDiscovery", params, &error);
1434 ret = __net_wifidirect_gerror_to_enum(error);
1435 if (ret == WIFI_DIRECT_ERROR_NONE) {
1436 g_variant_get(reply, "(i)", &ret);
1437 g_variant_unref(reply);
1440 WDC_LOGD("%s() return : [%d]", __func__, ret);
1441 __WDC_LOG_FUNC_END__;
1445 int wifi_direct_start_discovery_specific_channel(bool listen_only,
1447 wifi_direct_discovery_channel_e channel)
1449 __WDC_LOG_FUNC_START__;
1450 GVariantBuilder *builder = NULL;
1451 GVariant *params = NULL;
1452 GError *error = NULL;
1453 GVariant *reply = NULL;
1454 int ret = WIFI_DIRECT_ERROR_NONE;
1456 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
1458 if (g_client_info.is_registered == false) {
1459 WDC_LOGE("Client is NOT registered");
1460 __WDC_LOG_FUNC_END__;
1461 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
1465 WDC_LOGE("Negative value. Param [timeout]!");
1466 __WDC_LOG_FUNC_END__;
1467 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
1470 builder = g_variant_builder_new(G_VARIANT_TYPE("a{sv}"));
1471 g_variant_builder_add(builder, "{sv}", "Mode", g_variant_new("b", listen_only));
1472 g_variant_builder_add(builder, "{sv}", "Timeout", g_variant_new("i", timeout));
1473 g_variant_builder_add(builder, "{sv}", "Channel", g_variant_new("i", channel));
1474 params = g_variant_new("(a{sv})", builder);
1475 g_variant_builder_unref(builder);
1476 WDC_LOGI("listen only (%d) timeout (%d)", listen_only, timeout);
1478 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_MANAGE_INTERFACE,
1479 "StartDiscovery", params, &error);
1481 ret = __net_wifidirect_gerror_to_enum(error);
1482 if (ret == WIFI_DIRECT_ERROR_NONE) {
1483 g_variant_get(reply, "(i)", &ret);
1484 g_variant_unref(reply);
1487 WDC_LOGD("%s() return : [%d]", __func__, ret);
1488 __WDC_LOG_FUNC_END__;
1492 int wifi_direct_start_discovery_specific_freq(bool listen_only,
1493 int timeout, int frequency)
1495 __WDC_LOG_FUNC_START__;
1496 GVariantBuilder *builder = NULL;
1497 GVariant *params = NULL;
1498 GError *error = NULL;
1499 GVariant *reply = NULL;
1500 int ret = WIFI_DIRECT_ERROR_NONE;
1502 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
1504 if (g_client_info.is_registered == false) {
1505 WDC_LOGE("Client is NOT registered");
1506 __WDC_LOG_FUNC_END__;
1507 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
1510 if (timeout < 0 || frequency <= 0) {
1511 WDC_LOGE("Invalid parameter");
1512 __WDC_LOG_FUNC_END__;
1513 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
1516 builder = g_variant_builder_new(G_VARIANT_TYPE("a{sv}"));
1517 g_variant_builder_add(builder, "{sv}", "Mode",
1518 g_variant_new("b", listen_only));
1519 g_variant_builder_add(builder, "{sv}", "Timeout",
1520 g_variant_new("i", timeout));
1521 g_variant_builder_add(builder, "{sv}", "Frequency",
1522 g_variant_new("i", frequency));
1523 params = g_variant_new("(a{sv})", builder);
1524 g_variant_builder_unref(builder);
1526 WDC_LOGI("listen only (%d) timeout (%d) frequency (%d)", listen_only,
1527 timeout, frequency);
1529 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_MANAGE_INTERFACE,
1530 "StartDiscovery", params,
1533 ret = __net_wifidirect_gerror_to_enum(error);
1534 if (ret == WIFI_DIRECT_ERROR_NONE) {
1535 g_variant_get(reply, "(i)", &ret);
1536 g_variant_unref(reply);
1539 WDC_LOGD("%s() return : [%d]", __func__, ret);
1540 __WDC_LOG_FUNC_END__;
1544 int wifi_direct_cancel_discovery(void)
1546 __WDC_LOG_FUNC_START__;
1547 GError *error = NULL;
1548 GVariant *reply = NULL;
1549 int ret = WIFI_DIRECT_ERROR_NONE;
1551 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
1553 if (g_client_info.is_registered == false) {
1554 WDC_LOGE("Client is NOT registered");
1555 __WDC_LOG_FUNC_END__;
1556 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
1559 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_MANAGE_INTERFACE,
1560 "StopDiscovery", NULL, &error);
1562 ret = __net_wifidirect_gerror_to_enum(error);
1563 if (ret == WIFI_DIRECT_ERROR_NONE) {
1564 g_variant_get(reply, "(i)", &ret);
1565 g_variant_unref(reply);
1568 WDC_LOGD("%s() return : [%d]", __func__, ret);
1569 __WDC_LOG_FUNC_END__;
1574 static char **get_service_list(char *services, unsigned int *count)
1576 __WDC_LOG_FUNC_START__;
1577 char **result = NULL;
1580 unsigned int cnt = 0;
1583 char *saveptr = NULL;
1585 if (!count || !services || (services && strlen(services) <= 0)) {
1586 WDC_LOGE("Invalid parameters.");
1587 __WDC_LOG_FUNC_END__;
1592 pos2 = g_strdup(services);
1594 pos1 = strtok_r(pos1, ",\n", &saveptr);
1597 pos1 = strtok_r(NULL, ",\n", &saveptr);
1599 WDC_LOGD("Total Service Count = %d", cnt);
1602 result = (char**) g_try_malloc0_n(cnt, sizeof(char *));
1604 WDC_LOGE("Failed to allocate memory for result");
1608 pos2 = strtok_r(pos2, ",\n", &saveptr);
1609 while (pos2 != NULL) {
1610 char *s = strchr(pos2, ' ');
1613 result[i++] = strdup(pos2);
1614 pos2 = strtok_r(NULL, ",\n", &saveptr);
1628 for (j = 0; j < i && result[j] != NULL; j++)
1635 #endif /* TIZEN_FEATURE_SERVICE_DISCOVERY */
1637 int wifi_direct_foreach_discovered_peers(wifi_direct_discovered_peer_cb cb,
1640 __WDC_LOG_FUNC_START__;
1642 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
1644 GVariant *params = NULL;
1645 GError *error = NULL;
1646 GVariant *reply = NULL;
1647 GVariantIter *iter_peers = NULL;
1648 GVariantIter *iter_peer = NULL;
1649 int ret = WIFI_DIRECT_ERROR_NONE;
1651 if (g_client_info.is_registered == false) {
1652 WDC_LOGE("Client is NOT registered");
1653 __WDC_LOG_FUNC_END__;
1654 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
1658 WDC_LOGE("NULL Param [callback]!");
1659 __WDC_LOG_FUNC_END__;
1660 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
1663 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_MANAGE_INTERFACE,
1664 "GetDiscoveredPeers", params, &error);
1666 ret = __net_wifidirect_gerror_to_enum(error);
1667 if (ret != WIFI_DIRECT_ERROR_NONE)
1670 g_variant_get(reply, "(iaa{sv})", &ret, &iter_peers);
1671 if (ret != WIFI_DIRECT_ERROR_NONE) {
1672 __WDC_LOG_FUNC_END__;
1673 return WIFI_DIRECT_ERROR_OPERATION_FAILED;
1676 WDC_LOGD("wifi_direct_foreach_discovered_peers() SUCCESS");
1678 while (g_variant_iter_loop(iter_peers, "a{sv}", &iter_peer)) {
1679 wifi_direct_discovered_peer_info_s *peer_info = NULL;
1681 peer_info = (wifi_direct_discovered_peer_info_s *)
1682 g_try_malloc0(sizeof(wifi_direct_discovered_peer_info_s));
1684 WDC_LOGE("Failed to allocate memory");
1688 __wfd_client_extract_discovered_peer_info(iter_peer, peer_info);
1689 /* __wfd_client_print_entry_list(peer_info, 1); */
1691 if (!cb(peer_info, user_data)) {
1692 g_variant_iter_free(iter_peer);
1697 g_variant_iter_free(iter_peers);
1698 g_variant_unref(reply);
1699 __WDC_LOG_FUNC_END__;
1700 return WIFI_DIRECT_ERROR_NONE;
1703 int wifi_direct_connect(char *mac_address)
1705 __WDC_LOG_FUNC_START__;
1707 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
1709 GVariant *params = NULL;
1710 GError *error = NULL;
1711 GVariant *reply = NULL;
1712 int ret = WIFI_DIRECT_ERROR_NONE;
1714 if (g_client_info.is_registered == false) {
1715 WDC_LOGE("Client is NOT registered");
1716 __WDC_LOG_FUNC_END__;
1717 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
1721 WDC_LOGE("mac_addr is NULL");
1722 __WDC_LOG_FUNC_END__;
1723 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
1726 params = g_variant_new("(s)", mac_address);
1727 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_MANAGE_INTERFACE,
1728 "Connect", params, &error);
1730 ret = __net_wifidirect_gerror_to_enum(error);
1731 if (ret == WIFI_DIRECT_ERROR_NONE) {
1732 g_variant_get(reply, "(i)", &ret);
1733 g_variant_unref(reply);
1736 WDC_LOGD("%s() return : [%d]", __func__, ret);
1737 __WDC_LOG_FUNC_END__;
1742 int wifi_direct_cancel_connection(char *mac_address)
1744 __WDC_LOG_FUNC_START__;
1746 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
1748 GVariant *params = NULL;
1749 GError *error = NULL;
1750 GVariant *reply = NULL;
1751 int ret = WIFI_DIRECT_ERROR_NONE;
1753 if (g_client_info.is_registered == false) {
1754 WDC_LOGE("Client is NOT registered");
1755 __WDC_LOG_FUNC_END__;
1756 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
1760 WDC_LOGE("mac_addr is NULL");
1761 __WDC_LOG_FUNC_END__;
1762 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
1765 params = g_variant_new("(s)", mac_address);
1766 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_MANAGE_INTERFACE,
1767 "CancelConnection", params, &error);
1769 ret = __net_wifidirect_gerror_to_enum(error);
1770 if (ret == WIFI_DIRECT_ERROR_NONE) {
1771 g_variant_get(reply, "(i)", &ret);
1772 g_variant_unref(reply);
1775 WDC_LOGD("%s() return : [%d]", __func__, ret);
1776 __WDC_LOG_FUNC_END__;
1781 int wifi_direct_reject_connection(char *mac_address)
1783 __WDC_LOG_FUNC_START__;
1785 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
1787 GVariant *params = NULL;
1788 GError *error = NULL;
1789 GVariant *reply = NULL;
1790 int ret = WIFI_DIRECT_ERROR_NONE;
1792 if (g_client_info.is_registered == false) {
1793 WDC_LOGE("Client is NOT registered");
1794 __WDC_LOG_FUNC_END__;
1795 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
1799 WDC_LOGE("mac_addr is NULL");
1800 __WDC_LOG_FUNC_END__;
1801 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
1804 params = g_variant_new("(s)", mac_address);
1805 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_MANAGE_INTERFACE,
1806 "RejectConnection", params, &error);
1808 ret = __net_wifidirect_gerror_to_enum(error);
1809 if (ret == WIFI_DIRECT_ERROR_NONE) {
1810 g_variant_get(reply, "(i)", &ret);
1811 g_variant_unref(reply);
1814 WDC_LOGD("%s() return : [%d]", __func__, ret);
1815 __WDC_LOG_FUNC_END__;
1820 int wifi_direct_disconnect_all(void)
1822 __WDC_LOG_FUNC_START__;
1824 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
1826 GError *error = NULL;
1827 GVariant *reply = NULL;
1828 int ret = WIFI_DIRECT_ERROR_NONE;
1830 if (g_client_info.is_registered == false) {
1831 WDC_LOGE("Client is NOT registered");
1832 __WDC_LOG_FUNC_END__;
1833 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
1836 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_MANAGE_INTERFACE,
1837 "DisconnectAll", NULL, &error);
1839 ret = __net_wifidirect_gerror_to_enum(error);
1840 if (ret == WIFI_DIRECT_ERROR_NONE) {
1841 g_variant_get(reply, "(i)", &ret);
1842 g_variant_unref(reply);
1845 WDC_LOGD("%s() return : [%d]", __func__, ret);
1846 __WDC_LOG_FUNC_END__;
1851 int wifi_direct_disconnect(char *mac_address)
1853 __WDC_LOG_FUNC_START__;
1855 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
1857 GVariant *params = NULL;
1858 GError *error = NULL;
1859 GVariant *reply = NULL;
1860 int ret = WIFI_DIRECT_ERROR_NONE;
1862 if (g_client_info.is_registered == false) {
1863 WDC_LOGE("Client is NOT registered");
1864 __WDC_LOG_FUNC_END__;
1865 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
1869 WDC_LOGE("mac_addr is NULL");
1870 __WDC_LOG_FUNC_END__;
1871 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
1874 params = g_variant_new("(s)", mac_address);
1875 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_MANAGE_INTERFACE,
1876 "Disconnect", params, &error);
1878 ret = __net_wifidirect_gerror_to_enum(error);
1879 if (ret == WIFI_DIRECT_ERROR_NONE) {
1880 g_variant_get(reply, "(i)", &ret);
1881 g_variant_unref(reply);
1884 WDC_LOGD("%s() return : [%d]", __func__, ret);
1885 __WDC_LOG_FUNC_END__;
1889 int wifi_direct_accept_connection(char *mac_address)
1891 __WDC_LOG_FUNC_START__;
1893 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
1895 GVariant *params = NULL;
1896 GError *error = NULL;
1897 GVariant *reply = NULL;
1898 int ret = WIFI_DIRECT_ERROR_NONE;
1900 if (g_client_info.is_registered == false) {
1901 WDC_LOGE("Client is NOT registered");
1902 __WDC_LOG_FUNC_END__;
1903 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
1907 WDC_LOGE("mac_addr is NULL");
1908 __WDC_LOG_FUNC_END__;
1909 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
1912 params = g_variant_new("(s)", mac_address);
1913 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_MANAGE_INTERFACE,
1914 "AcceptConnection", params, &error);
1916 ret = __net_wifidirect_gerror_to_enum(error);
1917 if (ret == WIFI_DIRECT_ERROR_NONE) {
1918 g_variant_get(reply, "(i)", &ret);
1919 g_variant_unref(reply);
1922 WDC_LOGD("%s() return : [%d]", __func__, ret);
1923 __WDC_LOG_FUNC_END__;
1928 int wifi_direct_foreach_connected_peers(wifi_direct_connected_peer_cb cb,
1931 __WDC_LOG_FUNC_START__;
1933 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
1935 GVariant *params = NULL;
1936 GError *error = NULL;
1937 GVariant *reply = NULL;
1938 GVariantIter *iter_peers = NULL;
1939 GVariantIter *iter_peer = NULL;
1940 GVariant *var = NULL;
1942 int ret = WIFI_DIRECT_ERROR_NONE;
1944 if (g_client_info.is_registered == false) {
1945 WDC_LOGE("Client is NOT registered");
1946 __WDC_LOG_FUNC_END__;
1947 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
1951 WDC_LOGE("NULL Param [callback]!");
1952 __WDC_LOG_FUNC_END__;
1953 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
1957 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_MANAGE_INTERFACE,
1958 "GetConnectedPeers", params, &error);
1960 ret = __net_wifidirect_gerror_to_enum(error);
1961 if (ret != WIFI_DIRECT_ERROR_NONE)
1964 g_variant_get(reply, "(iaa{sv})", &ret, &iter_peers);
1965 if (ret != WIFI_DIRECT_ERROR_NONE) {
1966 __WDC_LOG_FUNC_END__;
1967 return WIFI_DIRECT_ERROR_OPERATION_FAILED;
1970 WDC_LOGD("wifi_direct_foreach_connected_peers() SUCCESS");
1972 while (g_variant_iter_loop(iter_peers, "a{sv}", &iter_peer)) {
1973 wifi_direct_connected_peer_info_s *peer_list = NULL;
1975 peer_list = (wifi_direct_connected_peer_info_s *) g_try_malloc0(sizeof(wifi_direct_connected_peer_info_s));
1977 WDC_LOGE("Failed to allocate memory");
1981 while (g_variant_iter_loop(iter_peer, "{sv}", &key, &var)) {
1982 if (!g_strcmp0(key, "DeviceName")) {
1983 const char *device_name = NULL;
1985 g_variant_get(var, "&s", &device_name);
1986 peer_list->device_name = g_strndup(device_name, WIFI_DIRECT_MAX_DEVICE_NAME_LEN+1);
1988 } else if (!g_strcmp0(key, "DeviceAddress")) {
1989 unsigned char mac_address[MACADDR_LEN] = {0, };
1991 wifi_direct_dbus_unpack_ay(mac_address, var, MACADDR_LEN);
1992 peer_list->mac_address = (char*) g_try_malloc0(MACSTR_LEN);
1993 if (peer_list->mac_address)
1994 g_snprintf(peer_list->mac_address, MACSTR_LEN, MACSTR, MAC2STR(mac_address));
1996 } else if (!g_strcmp0(key, "InterfaceAddress")) {
1997 unsigned char intf_address[MACADDR_LEN] = {0, };
1999 wifi_direct_dbus_unpack_ay(intf_address, var, MACADDR_LEN);
2000 peer_list->interface_address = (char*) g_try_malloc0(MACSTR_LEN);
2001 if (peer_list->interface_address)
2002 g_snprintf(peer_list->interface_address, MACSTR_LEN, MACSTR, MAC2STR(intf_address));
2004 } else if (!g_strcmp0(key, "IPAddress")) {
2005 unsigned char ip_address[IPADDR_LEN] = {0, };
2007 wifi_direct_dbus_unpack_ay(ip_address, var, IPADDR_LEN);
2008 peer_list->ip_address = (char*) g_try_malloc0(IPSTR_LEN);
2009 if (peer_list->ip_address)
2010 g_snprintf(peer_list->ip_address, IPSTR_LEN, IPSTR, IP2STR(ip_address));
2012 } else if (!g_strcmp0(key, "Channel")) {
2013 peer_list->channel = g_variant_get_uint16(var);
2015 } else if (!g_strcmp0(key, "Category")) {
2016 peer_list->primary_device_type = g_variant_get_uint16(var);
2018 } else if (!g_strcmp0(key, "SubCategory")) {
2019 peer_list->secondary_device_type = g_variant_get_uint16(var);
2021 } else if (!g_strcmp0(key, "IsWfdDevice")) {
2023 if (g_client_info.is_display_supported)
2024 peer_list->is_miracast_device = g_variant_get_boolean(var);
2025 } else if (!g_strcmp0(key, "IsP2P")) {
2026 peer_list->p2p_supported = g_variant_get_boolean(var);
2033 /* __wfd_client_print_connected_peer_info(peer_list, 1); */
2034 if (!cb(peer_list, user_data)) {
2035 g_variant_iter_free(iter_peer);
2040 g_variant_iter_free(iter_peers);
2041 g_variant_unref(reply);
2043 __WDC_LOG_FUNC_END__;
2044 return WIFI_DIRECT_ERROR_NONE;
2048 int wifi_direct_create_group(void)
2050 __WDC_LOG_FUNC_START__;
2052 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
2054 GVariantBuilder *builder = NULL;
2055 GVariant *params = NULL;
2056 GError *error = NULL;
2057 GVariant *reply = NULL;
2058 int ret = WIFI_DIRECT_ERROR_NONE;
2060 if (g_client_info.is_registered == false) {
2061 WDC_LOGE("Client is NOT registered");
2062 __WDC_LOG_FUNC_END__;
2063 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
2066 builder = g_variant_builder_new(G_VARIANT_TYPE("a{sv}"));
2067 params = g_variant_new("(a{sv})", builder);
2068 g_variant_builder_unref(builder);
2070 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_GROUP_INTERFACE,
2071 "CreateGroup", params, &error);
2073 ret = __net_wifidirect_gerror_to_enum(error);
2074 if (ret == WIFI_DIRECT_ERROR_NONE) {
2075 g_variant_get(reply, "(i)", &ret);
2076 g_variant_unref(reply);
2079 WDC_LOGD("%s() return : [%d]", __func__, ret);
2080 __WDC_LOG_FUNC_END__;
2084 int wifi_direct_create_group_with_ssid(const char *ssid)
2086 __WDC_LOG_FUNC_START__;
2088 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
2090 GVariantBuilder *builder = NULL;
2091 GVariant *params = NULL;
2092 GError *error = NULL;
2093 GVariant *reply = NULL;
2094 int ret = WIFI_DIRECT_ERROR_NONE;
2096 if (g_client_info.is_registered == false) {
2097 WDC_LOGE("Client is NOT registered");
2098 __WDC_LOG_FUNC_END__;
2099 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
2103 WDC_LOGE("NULL Param");
2104 __WDC_LOG_FUNC_END__;
2105 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
2108 builder = g_variant_builder_new(G_VARIANT_TYPE("a{sv}"));
2109 g_variant_builder_add(builder, "{sv}", "ssid", g_variant_new_string(ssid));
2110 params = g_variant_new("(a{sv})", builder);
2111 g_variant_builder_unref(builder);
2113 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_GROUP_INTERFACE,
2114 "CreateGroup", params, &error);
2116 ret = __net_wifidirect_gerror_to_enum(error);
2117 if (ret == WIFI_DIRECT_ERROR_NONE) {
2118 g_variant_get(reply, "(i)", &ret);
2119 g_variant_unref(reply);
2122 WDC_LOGD("%s() return : [%d]", __func__, ret);
2123 __WDC_LOG_FUNC_END__;
2127 int wifi_direct_destroy_group(void)
2129 __WDC_LOG_FUNC_START__;
2131 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
2133 GError *error = NULL;
2134 GVariant *reply = NULL;
2135 int ret = WIFI_DIRECT_ERROR_NONE;
2137 if (g_client_info.is_registered == false) {
2138 WDC_LOGE("Client is NOT registered");
2139 __WDC_LOG_FUNC_END__;
2140 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
2143 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_GROUP_INTERFACE,
2144 "DestroyGroup", NULL, &error);
2146 ret = __net_wifidirect_gerror_to_enum(error);
2147 if (ret == WIFI_DIRECT_ERROR_NONE) {
2148 g_variant_get(reply, "(i)", &ret);
2149 g_variant_unref(reply);
2152 WDC_LOGD("%s() return : [%d]", __func__, ret);
2153 __WDC_LOG_FUNC_END__;
2158 int wifi_direct_is_group_owner(bool *owner)
2160 __WDC_LOG_FUNC_START__;
2162 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
2164 GError* error = NULL;
2165 GVariant *reply = NULL;
2166 int ret = WIFI_DIRECT_ERROR_NONE;
2169 if (g_client_info.is_registered == false) {
2170 WDC_LOGE("Client is NOT registered");
2171 __WDC_LOG_FUNC_END__;
2172 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
2176 WDC_LOGE("NULL Param [owner]!");
2177 __WDC_LOG_FUNC_END__;
2178 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
2181 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_GROUP_INTERFACE,
2186 ret = __net_wifidirect_gerror_to_enum(error);
2187 if (ret != WIFI_DIRECT_ERROR_NONE)
2190 WDC_LOGD("%s() SUCCESS", __func__);
2191 g_variant_get(reply, "(b)", &val);
2193 g_variant_unref(reply);
2195 __WDC_LOG_FUNC_END__;
2196 return WIFI_DIRECT_ERROR_NONE;
2199 int wifi_direct_is_autonomous_group(bool *autonomous_group)
2201 __WDC_LOG_FUNC_START__;
2203 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
2205 GError* error = NULL;
2206 GVariant *reply = NULL;
2207 int ret = WIFI_DIRECT_ERROR_NONE;
2210 if (g_client_info.is_registered == false) {
2211 WDC_LOGE("Client is NOT registered");
2212 __WDC_LOG_FUNC_END__;
2213 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
2216 if (!autonomous_group) {
2217 WDC_LOGE("NULL Param [autonomous_group]!\n");
2218 __WDC_LOG_FUNC_END__;
2219 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
2222 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_GROUP_INTERFACE,
2227 ret = __net_wifidirect_gerror_to_enum(error);
2228 if (ret != WIFI_DIRECT_ERROR_NONE)
2231 WDC_LOGD("%s() SUCCESS", __func__);
2232 g_variant_get(reply, "(b)", &val);
2233 *autonomous_group = val;
2234 g_variant_unref(reply);
2236 __WDC_LOG_FUNC_END__;
2237 return WIFI_DIRECT_ERROR_NONE;
2241 int wifi_direct_set_group_owner_intent(int intent)
2243 __WDC_LOG_FUNC_START__;
2245 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
2247 GError* error = NULL;
2248 GVariant *reply = NULL;
2249 GVariant *params = NULL;
2250 int ret = WIFI_DIRECT_ERROR_NONE;
2252 if (g_client_info.is_registered == false) {
2253 WDC_LOGE("Client is NOT registered");
2254 __WDC_LOG_FUNC_END__;
2255 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
2258 if (intent < 0 || intent > 15) {
2259 WDC_LOGE("Invalid Param : intent[%d]", intent);
2260 __WDC_LOG_FUNC_END__;
2261 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
2264 params = g_variant_new("(i)", intent);
2265 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_CONFIG_INTERFACE,
2270 ret = __net_wifidirect_gerror_to_enum(error);
2271 if (ret == WIFI_DIRECT_ERROR_NONE) {
2272 g_variant_get(reply, "(i)", &ret);
2273 g_variant_unref(reply);
2276 WDC_LOGD("%s() return : [%d]", __func__, ret);
2277 __WDC_LOG_FUNC_END__;
2281 int wifi_direct_get_group_owner_intent(int *intent)
2283 __WDC_LOG_FUNC_START__;
2285 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
2287 GError* error = NULL;
2288 GVariant *reply = NULL;
2290 int ret = WIFI_DIRECT_ERROR_NONE;
2292 if (g_client_info.is_registered == false) {
2293 WDC_LOGE("Client is NOT registered");
2294 __WDC_LOG_FUNC_END__;
2295 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
2299 WDC_LOGE("Invalid Parameter");
2300 __WDC_LOG_FUNC_END__;
2301 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
2304 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_CONFIG_INTERFACE,
2309 ret = __net_wifidirect_gerror_to_enum(error);
2310 if (ret != WIFI_DIRECT_ERROR_NONE)
2313 g_variant_get(reply, "(ii)", &ret, &val);
2315 g_variant_unref(reply);
2317 WDC_LOGD("Intent = [%d]", *intent);
2318 WDC_LOGD("%s() return : [%d]", __func__, ret);
2319 __WDC_LOG_FUNC_END__;
2323 int wifi_direct_set_go_intent_per_type(int type, int intent)
2325 __WDC_LOG_FUNC_START__;
2327 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_DISPLAY_FEATURE);
2329 GError *error = NULL;
2330 GVariant *reply = NULL;
2331 GVariant *params = NULL;
2332 int ret = WIFI_DIRECT_ERROR_NONE;
2334 if (g_client_info.is_registered == false) {
2335 WDC_LOGE("Client is NOT registered");
2336 __WDC_LOG_FUNC_END__;
2337 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
2340 if (type < 0 || type >= WIFI_DIRECT_MAX_TYPE) {
2341 WDC_LOGE("Invalid Param : type[%d]", type);
2342 __WDC_LOG_FUNC_END__;
2343 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
2346 if (intent < 0 || intent > 15) {
2347 WDC_LOGE("Invalid Param : intent[%d]", intent);
2348 __WDC_LOG_FUNC_END__;
2349 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
2352 params = g_variant_new("(ii)", type, intent);
2353 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_CONFIG_INTERFACE,
2354 "SetGoIntentPerType",
2358 ret = __net_wifidirect_gerror_to_enum(error);
2359 if (ret == WIFI_DIRECT_ERROR_NONE) {
2360 g_variant_get(reply, "(i)", &ret);
2361 g_variant_unref(reply);
2364 WDC_LOGD("return : [%d]", ret);
2365 __WDC_LOG_FUNC_END__;
2369 int wifi_direct_get_go_intent_per_type(int type, int *intent)
2371 __WDC_LOG_FUNC_START__;
2373 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_DISPLAY_FEATURE);
2375 GError *error = NULL;
2376 GVariant *reply = NULL;
2377 GVariant *params = NULL;
2379 int ret = WIFI_DIRECT_ERROR_NONE;
2381 if (g_client_info.is_registered == false) {
2382 WDC_LOGE("Client is NOT registered");
2383 __WDC_LOG_FUNC_END__;
2384 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
2387 if (type < 0 || type >= WIFI_DIRECT_MAX_TYPE) {
2388 WDC_LOGE("Invalid Param : type[%d]", type);
2389 __WDC_LOG_FUNC_END__;
2390 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
2394 WDC_LOGE("Invalid Parameter");
2395 __WDC_LOG_FUNC_END__;
2396 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
2399 params = g_variant_new("(i)", type);
2400 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_CONFIG_INTERFACE,
2401 "GetGoIntentPerType",
2405 ret = __net_wifidirect_gerror_to_enum(error);
2406 if (ret != WIFI_DIRECT_ERROR_NONE) {
2410 g_variant_get(reply, "(ii)", &ret, &val);
2412 g_variant_unref(reply);
2414 WDC_LOGD("Intent = [%d]", *intent);
2415 WDC_LOGD("return : [%d]", ret);
2416 __WDC_LOG_FUNC_END__;
2420 int wifi_direct_set_max_clients(int max)
2422 __WDC_LOG_FUNC_START__;
2424 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
2426 GError* error = NULL;
2427 GVariant *reply = NULL;
2428 GVariant *params = NULL;
2429 int ret = WIFI_DIRECT_ERROR_NONE;
2431 if (g_client_info.is_registered == false) {
2432 WDC_LOGE("Client is NOT registered");
2433 __WDC_LOG_FUNC_END__;
2434 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
2436 WDC_LOGD("max client [%d]\n", max);
2438 params = g_variant_new("(i)", max);
2439 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_CONFIG_INTERFACE,
2444 ret = __net_wifidirect_gerror_to_enum(error);
2445 if (ret == WIFI_DIRECT_ERROR_NONE) {
2446 g_variant_get(reply, "(i)", &ret);
2447 g_variant_unref(reply);
2450 WDC_LOGD("%s() return : [%d]", __func__, ret);
2451 __WDC_LOG_FUNC_END__;
2455 int wifi_direct_get_max_clients(int *max)
2457 __WDC_LOG_FUNC_START__;
2459 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
2461 GError* error = NULL;
2462 GVariant *reply = NULL;
2464 int ret = WIFI_DIRECT_ERROR_NONE;
2466 if (g_client_info.is_registered == false) {
2467 WDC_LOGE("Client is NOT registered");
2468 __WDC_LOG_FUNC_END__;
2469 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
2473 WDC_LOGE("Invalid Parameter");
2474 __WDC_LOG_FUNC_END__;
2475 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
2478 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_CONFIG_INTERFACE,
2483 ret = __net_wifidirect_gerror_to_enum(error);
2484 if (ret != WIFI_DIRECT_ERROR_NONE)
2487 g_variant_get(reply, "(ii)", &ret, &val);
2489 g_variant_unref(reply);
2491 WDC_LOGD("max_client = [%d]", *max);
2492 WDC_LOGD("%s() return : [%d]", __func__, ret);
2493 __WDC_LOG_FUNC_END__;
2494 return WIFI_DIRECT_ERROR_NONE;
2497 int wifi_direct_get_operating_channel(int *channel)
2499 __WDC_LOG_FUNC_START__;
2501 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
2503 GError* error = NULL;
2504 GVariant *reply = NULL;
2506 int ret = WIFI_DIRECT_ERROR_NONE;
2508 if (g_client_info.is_registered == false) {
2509 WDC_LOGE("Client is NOT registered");
2510 __WDC_LOG_FUNC_END__;
2511 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
2515 WDC_LOGE("NULL Param [channel]!\n");
2516 __WDC_LOG_FUNC_END__;
2517 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
2520 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_CONFIG_INTERFACE,
2521 "GetOperatingChannel",
2525 ret = __net_wifidirect_gerror_to_enum(error);
2526 if (ret != WIFI_DIRECT_ERROR_NONE)
2529 g_variant_get(reply, "(ii)", &ret, &val);
2531 g_variant_unref(reply);
2533 WDC_LOGD("channel = [%d]", *channel);
2534 WDC_LOGD("%s() return : [%d]", __func__, ret);
2535 __WDC_LOG_FUNC_END__;
2536 return WIFI_DIRECT_ERROR_NONE;
2539 int wifi_direct_activate_pushbutton(void)
2541 __WDC_LOG_FUNC_START__;
2543 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
2545 GError* error = NULL;
2546 GVariant *reply = NULL;
2547 int ret = WIFI_DIRECT_ERROR_NONE;
2549 if (g_client_info.is_registered == false) {
2550 WDC_LOGE("Client is NOT registered");
2551 __WDC_LOG_FUNC_END__;
2552 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
2555 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_GROUP_INTERFACE,
2556 "ActivatePushButton",
2560 ret = __net_wifidirect_gerror_to_enum(error);
2561 if (ret == WIFI_DIRECT_ERROR_NONE) {
2562 g_variant_get(reply, "(i)", &ret);
2563 g_variant_unref(reply);
2566 WDC_LOGD("%s() return : [%d]", __func__, ret);
2567 __WDC_LOG_FUNC_END__;
2571 int wifi_direct_set_wps_pin(char *pin)
2573 __WDC_LOG_FUNC_START__;
2575 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
2577 GError* error = NULL;
2578 GVariant *reply = NULL;
2579 GVariant *params = NULL;
2580 int ret = WIFI_DIRECT_ERROR_NONE;
2582 if (g_client_info.is_registered == false) {
2583 WDC_LOGE("Client is NOT registered");
2584 __WDC_LOG_FUNC_END__;
2585 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
2589 WDC_LOGE("NULL Param [pin]!");
2590 __WDC_LOG_FUNC_END__;
2591 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
2593 WDC_LOGE("pin = [%s]\n", pin);
2595 params = g_variant_new("(s)", pin);
2596 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_CONFIG_INTERFACE,
2601 ret = __net_wifidirect_gerror_to_enum(error);
2602 if (ret == WIFI_DIRECT_ERROR_NONE) {
2603 g_variant_get(reply, "(i)", &ret);
2604 g_variant_unref(reply);
2607 WDC_LOGD("%s() return : [%d]", __func__, ret);
2608 __WDC_LOG_FUNC_END__;
2613 int wifi_direct_get_wps_pin(char **pin)
2615 __WDC_LOG_FUNC_START__;
2617 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
2619 GError* error = NULL;
2620 GVariant *reply = NULL;
2621 const char *str = NULL;
2622 int ret = WIFI_DIRECT_ERROR_NONE;
2624 if (g_client_info.is_registered == false) {
2625 WDC_LOGE("Client is NOT registered");
2626 __WDC_LOG_FUNC_END__;
2627 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
2631 WDC_LOGE("NULL Param [pin]!");
2632 __WDC_LOG_FUNC_END__;
2633 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
2636 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_CONFIG_INTERFACE,
2641 ret = __net_wifidirect_gerror_to_enum(error);
2642 if (ret != WIFI_DIRECT_ERROR_NONE)
2645 g_variant_get(reply, "(i&s)", &ret, &str);
2648 g_variant_unref(reply);
2650 WDC_LOGD("%s() return : [%d]", __func__, ret);
2651 __WDC_LOG_FUNC_END__;
2655 int wifi_direct_get_supported_wps_mode(int *wps_mode)
2657 __WDC_LOG_FUNC_START__;
2659 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
2661 GError* error = NULL;
2662 GVariant *reply = NULL;
2664 int ret = WIFI_DIRECT_ERROR_NONE;
2666 if (g_client_info.is_registered == false) {
2667 WDC_LOGE("Client is NOT registered");
2668 __WDC_LOG_FUNC_END__;
2669 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
2673 WDC_LOGE("NULL Param [wps_mode]!");
2674 __WDC_LOG_FUNC_END__;
2675 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
2678 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_CONFIG_INTERFACE,
2679 "GetSupportedWpsMode",
2683 ret = __net_wifidirect_gerror_to_enum(error);
2684 if (ret != WIFI_DIRECT_ERROR_NONE)
2687 g_variant_get(reply, "(ii)", &ret, &mode);
2689 g_variant_unref(reply);
2691 WDC_LOGD("%s() return : [%d]", __func__, ret);
2692 __WDC_LOG_FUNC_END__;
2696 int wifi_direct_foreach_supported_wps_types(wifi_direct_supported_wps_type_cb cb, void* user_data)
2698 __WDC_LOG_FUNC_START__;
2700 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
2702 GError* error = NULL;
2703 GVariant *reply = NULL;
2705 int ret = WIFI_DIRECT_ERROR_NONE;
2706 gboolean result = FALSE;
2708 if (g_client_info.is_registered == false) {
2709 WDC_LOGE("Client is NOT registered");
2710 __WDC_LOG_FUNC_END__;
2711 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
2715 WDC_LOGE("NULL Param [callback]!");
2716 __WDC_LOG_FUNC_END__;
2717 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
2720 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_CONFIG_INTERFACE,
2721 "GetSupportedWpsMode",
2725 ret = __net_wifidirect_gerror_to_enum(error);
2726 if (ret != WIFI_DIRECT_ERROR_NONE)
2729 g_variant_get(reply, "(ii)", &ret, &wps_mode);
2730 g_variant_unref(reply);
2732 if (wps_mode & WIFI_DIRECT_WPS_TYPE_PBC)
2733 result = cb(WIFI_DIRECT_WPS_TYPE_PBC, user_data);
2734 if ((result == TRUE) && (wps_mode & WIFI_DIRECT_WPS_TYPE_PIN_DISPLAY))
2735 result = cb(WIFI_DIRECT_WPS_TYPE_PIN_DISPLAY, user_data);
2736 if ((result == TRUE) && (wps_mode & WIFI_DIRECT_WPS_TYPE_PIN_KEYPAD))
2737 cb(WIFI_DIRECT_WPS_TYPE_PIN_KEYPAD, user_data);
2739 WDC_LOGD("%s() return : [%d]", __func__, ret);
2740 __WDC_LOG_FUNC_END__;
2744 int wifi_direct_get_local_wps_type(wifi_direct_wps_type_e *type)
2746 __WDC_LOG_FUNC_START__;
2748 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
2750 GError* error = NULL;
2751 GVariant *reply = NULL;
2753 int ret = WIFI_DIRECT_ERROR_NONE;
2755 if (g_client_info.is_registered == false) {
2756 WDC_LOGE("Client is NOT registered");
2757 __WDC_LOG_FUNC_END__;
2758 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
2762 WDC_LOGE("NULL Param [type]!\n");
2763 __WDC_LOG_FUNC_END__;
2764 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
2767 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_CONFIG_INTERFACE,
2772 ret = __net_wifidirect_gerror_to_enum(error);
2773 if (ret != WIFI_DIRECT_ERROR_NONE)
2776 g_variant_get(reply, "(ii)", &ret, &mode);
2778 g_variant_unref(reply);
2780 WDC_LOGD("%s() return : [%d]", __func__, ret);
2781 __WDC_LOG_FUNC_END__;
2785 int wifi_direct_set_req_wps_type(wifi_direct_wps_type_e type)
2787 __WDC_LOG_FUNC_START__;
2789 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
2791 GError* error = NULL;
2792 GVariant *reply = NULL;
2793 GVariant *params = NULL;
2794 int ret = WIFI_DIRECT_ERROR_NONE;
2796 if (g_client_info.is_registered == false) {
2797 WDC_LOGE("Client is NOT registered");
2798 __WDC_LOG_FUNC_END__;
2799 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
2802 if (type == WIFI_DIRECT_WPS_TYPE_PBC ||
2803 type == WIFI_DIRECT_WPS_TYPE_PIN_DISPLAY ||
2804 type == WIFI_DIRECT_WPS_TYPE_PIN_KEYPAD) {
2805 WDC_LOGD("Param wps_mode [%d]", type);
2807 WDC_LOGE("Invalid Param [wps_mode]!");
2808 __WDC_LOG_FUNC_END__;
2809 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
2812 params = g_variant_new("(i)", type);
2813 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_CONFIG_INTERFACE,
2818 ret = __net_wifidirect_gerror_to_enum(error);
2819 if (ret == WIFI_DIRECT_ERROR_NONE) {
2820 g_variant_get(reply, "(i)", &ret);
2821 g_variant_unref(reply);
2824 WDC_LOGD("%s() return : [%d]", __func__, ret);
2825 __WDC_LOG_FUNC_END__;
2829 int wifi_direct_get_req_wps_type(wifi_direct_wps_type_e *type)
2831 __WDC_LOG_FUNC_START__;
2833 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
2835 GError* error = NULL;
2836 GVariant *reply = NULL;
2840 if (g_client_info.is_registered == false) {
2841 WDC_LOGE("Client is NOT registered");
2842 __WDC_LOG_FUNC_END__;
2843 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
2847 WDC_LOGE("NULL Param [type]!\n");
2848 __WDC_LOG_FUNC_END__;
2849 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
2852 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_CONFIG_INTERFACE,
2857 ret = __net_wifidirect_gerror_to_enum(error);
2858 if (ret != WIFI_DIRECT_ERROR_NONE)
2861 g_variant_get(reply, "(ii)", &ret, &mode);
2863 g_variant_unref(reply);
2865 WDC_LOGD("%s() return : [%d]", __func__, ret);
2866 __WDC_LOG_FUNC_END__;
2870 int wifi_direct_get_ssid(char **ssid)
2872 __WDC_LOG_FUNC_START__;
2874 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
2876 GError* error = NULL;
2877 GVariant *reply = NULL;
2878 const char *str = NULL;
2879 int ret = WIFI_DIRECT_ERROR_NONE;
2881 if (g_client_info.is_registered == false) {
2882 WDC_LOGE("Client is NOT registered");
2883 __WDC_LOG_FUNC_END__;
2884 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
2888 WDC_LOGE("Invalid Parameter");
2889 __WDC_LOG_FUNC_END__;
2890 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
2893 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_CONFIG_INTERFACE,
2898 ret = __net_wifidirect_gerror_to_enum(error);
2899 if (ret != WIFI_DIRECT_ERROR_NONE)
2902 g_variant_get(reply, "(i&s)", &ret, &str);
2904 *ssid = strdup(str);
2905 g_variant_unref(reply);
2907 WDC_LOGD("%s() return : [%d]", __func__, ret);
2908 __WDC_LOG_FUNC_END__;
2912 int wifi_direct_get_device_name(char **device_name)
2914 __WDC_LOG_FUNC_START__;
2916 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
2918 GError* error = NULL;
2919 GVariant *reply = NULL;
2920 const char *str = NULL;
2921 int ret = WIFI_DIRECT_ERROR_NONE;
2923 if (g_client_info.is_registered == false) {
2924 WDC_LOGE("Client is NOT registered");
2925 __WDC_LOG_FUNC_END__;
2926 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
2930 WDC_LOGE("Invalid Parameter");
2931 __WDC_LOG_FUNC_END__;
2932 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
2935 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_CONFIG_INTERFACE,
2940 ret = __net_wifidirect_gerror_to_enum(error);
2941 if (ret != WIFI_DIRECT_ERROR_NONE)
2944 g_variant_get(reply, "(i&s)", &ret, &str);
2946 *device_name = strdup(str);
2947 g_variant_unref(reply);
2949 WDC_LOGD("%s() return : [%d]", __func__, ret);
2950 __WDC_LOG_FUNC_END__;
2954 int wifi_direct_set_device_name(const char *device_name)
2956 __WDC_LOG_FUNC_START__;
2958 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
2960 GError* error = NULL;
2961 GVariant *reply = NULL;
2962 GVariant *params = NULL;
2963 int ret = WIFI_DIRECT_ERROR_NONE;
2965 if (g_client_info.is_registered == false) {
2966 WDC_LOGE("Client is NOT registered");
2967 __WDC_LOG_FUNC_END__;
2968 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
2972 WDC_LOGE("NULL Param [device_name]!");
2973 __WDC_LOG_FUNC_END__;
2974 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
2976 WDC_LOGE("device_name = [%s]", device_name);
2978 params = g_variant_new("(s)", device_name);
2979 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_CONFIG_INTERFACE,
2984 ret = __net_wifidirect_gerror_to_enum(error);
2985 if (ret == WIFI_DIRECT_ERROR_NONE) {
2986 g_variant_get(reply, "(i)", &ret);
2987 g_variant_unref(reply);
2990 WDC_LOGD("%s() return : [%d]", __func__, ret);
2991 __WDC_LOG_FUNC_END__;
2996 int wifi_direct_get_network_interface_name(char **name)
2998 __WDC_LOG_FUNC_START__;
3000 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
3002 wifi_direct_state_e status = 0;
3003 const char *get_str = NULL;
3004 GError* error = NULL;
3005 GVariant *reply = NULL;
3006 int ret = WIFI_DIRECT_ERROR_NONE;
3008 if (g_client_info.is_registered == false) {
3009 WDC_LOGE("Client is NOT registered");
3010 __WDC_LOG_FUNC_END__;
3011 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
3015 WDC_LOGE("NULL Param [name]!\n");
3016 __WDC_LOG_FUNC_END__;
3017 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
3020 ret = wifi_direct_get_state(&status);
3021 WDC_LOGD("wifi_direct_get_state() state=[%d], ret=[%d]\n", status, ret);
3023 if (status < WIFI_DIRECT_STATE_CONNECTED) {
3024 WDC_LOGE("Device is not connected!\n");
3025 __WDC_LOG_FUNC_END__;
3026 return WIFI_DIRECT_ERROR_NOT_PERMITTED;
3029 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_CONFIG_INTERFACE,
3034 ret = __net_wifidirect_gerror_to_enum(error);
3035 if (ret != WIFI_DIRECT_ERROR_NONE)
3038 g_variant_get(reply, "(i&s)", &ret, &get_str);
3039 if (get_str != NULL)
3040 *name = strdup(get_str);
3041 g_variant_unref(reply);
3043 WDC_LOGD("Interface Name = [%s]", *name);
3044 WDC_LOGD("%s() return : [%d]", __func__, ret);
3046 __WDC_LOG_FUNC_END__;
3047 return WIFI_DIRECT_ERROR_NONE;
3050 int wifi_direct_get_ip_address(char **ip_address)
3052 __WDC_LOG_FUNC_START__;
3054 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
3056 GError* error = NULL;
3057 GVariant *reply = NULL;
3058 const char *str = NULL;
3059 int ret = WIFI_DIRECT_ERROR_NONE;
3061 if (g_client_info.is_registered == false) {
3062 WDC_LOGE("Client is NOT registered");
3063 __WDC_LOG_FUNC_END__;
3064 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
3068 WDC_LOGE("NULL Param [ip_address]!\n");
3069 __WDC_LOG_FUNC_END__;
3070 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
3073 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_CONFIG_INTERFACE,
3078 ret = __net_wifidirect_gerror_to_enum(error);
3079 if (ret != WIFI_DIRECT_ERROR_NONE)
3082 g_variant_get(reply, "(i&s)", &ret, &str);
3084 *ip_address = strdup(str);
3085 g_variant_unref(reply);
3087 WDC_LOGD("IP address = [%s]", *ip_address);
3088 WDC_LOGD("%s() return : [%d]", __func__, ret);
3089 __WDC_LOG_FUNC_END__;
3093 int wifi_direct_get_subnet_mask(char **subnet_mask)
3095 __WDC_LOG_FUNC_START__;
3097 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
3099 wifi_direct_state_e status = 0;
3100 GError* error = NULL;
3101 GVariant *reply = NULL;
3102 char *get_str = NULL;
3103 int ret = WIFI_DIRECT_ERROR_NONE;
3105 if (g_client_info.is_registered == false) {
3106 WDC_LOGE("Client is NOT registered");
3107 __WDC_LOG_FUNC_END__;
3108 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
3112 WDC_LOGE("NULL Param [subnet_mask]!");
3113 __WDC_LOG_FUNC_END__;
3114 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
3117 ret = wifi_direct_get_state(&status);
3118 WDC_LOGD("wifi_direct_get_state() state=[%d], ret=[%d]", status, ret);
3119 if (status < WIFI_DIRECT_STATE_CONNECTED) {
3120 WDC_LOGE("Device is not connected!");
3121 __WDC_LOG_FUNC_END__;
3122 return WIFI_DIRECT_ERROR_NOT_PERMITTED;
3125 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_CONFIG_INTERFACE,
3130 ret = __net_wifidirect_gerror_to_enum(error);
3131 if (ret != WIFI_DIRECT_ERROR_NONE)
3134 g_variant_get(reply, "(i&s)", &ret, &get_str);
3135 if (get_str != NULL)
3136 *subnet_mask = strdup(get_str);
3137 g_variant_unref(reply);
3139 WDC_LOGD("Subnet Mask = [%s]", *subnet_mask);
3140 WDC_LOGD("%s() return : [%d]", __func__, ret);
3142 __WDC_LOG_FUNC_END__;
3143 return WIFI_DIRECT_ERROR_NONE;
3146 int wifi_direct_get_gateway_address(char **gateway_address)
3148 __WDC_LOG_FUNC_START__;
3150 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
3152 wifi_direct_state_e status = 0;
3153 GError* error = NULL;
3154 GVariant *reply = NULL;
3155 const char *get_str = NULL;
3156 int ret = WIFI_DIRECT_ERROR_NONE;
3158 if (g_client_info.is_registered == false) {
3159 WDC_LOGE("Client is NOT registered");
3160 __WDC_LOG_FUNC_END__;
3161 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
3164 if (!gateway_address) {
3165 WDC_LOGE("NULL Param [gateway_address]!");
3166 __WDC_LOG_FUNC_END__;
3167 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
3170 ret = wifi_direct_get_state(&status);
3171 WDC_LOGD("wifi_direct_get_state() state=[%d], ret=[%d]", status, ret);
3172 if (status < WIFI_DIRECT_STATE_CONNECTED) {
3173 WDC_LOGE("Device is not connected!");
3174 __WDC_LOG_FUNC_END__;
3175 return WIFI_DIRECT_ERROR_NOT_PERMITTED;
3178 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_CONFIG_INTERFACE,
3183 ret = __net_wifidirect_gerror_to_enum(error);
3184 if (ret != WIFI_DIRECT_ERROR_NONE)
3187 g_variant_get(reply, "(i&s)", &ret, &get_str);
3188 if (get_str != NULL)
3189 *gateway_address = strdup(get_str);
3190 g_variant_unref(reply);
3192 WDC_LOGD("Gateway Address = [%s]", *gateway_address);
3193 WDC_LOGD("%s() return : [%d]", __func__, ret);
3195 __WDC_LOG_FUNC_END__;
3196 return WIFI_DIRECT_ERROR_NONE;
3200 int wifi_direct_get_mac_address(char **mac_address)
3202 __WDC_LOG_FUNC_START__;
3204 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
3206 GError* error = NULL;
3207 GVariant *reply = NULL;
3208 const char *str = NULL;
3209 int ret = WIFI_DIRECT_ERROR_NONE;
3211 if (g_client_info.is_registered == false) {
3212 WDC_LOGE("Client is NOT registered");
3213 __WDC_LOG_FUNC_END__;
3214 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
3218 WDC_LOGE("NULL Param [mac_address]!");
3219 __WDC_LOG_FUNC_END__;
3220 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
3223 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_CONFIG_INTERFACE,
3228 ret = __net_wifidirect_gerror_to_enum(error);
3229 if (ret != WIFI_DIRECT_ERROR_NONE)
3232 g_variant_get(reply, "(i&s)", &ret, &str);
3234 *mac_address = strdup(str);
3235 g_variant_unref(reply);
3237 WDC_SECLOGD("MAC address = [%s]", *mac_address);
3238 WDC_LOGD("%s() return : [%d]", __func__, ret);
3239 __WDC_LOG_FUNC_END__;
3243 int wifi_direct_get_state(wifi_direct_state_e *state)
3245 __WDC_LOG_FUNC_START__;
3247 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
3250 int ret = WIFI_DIRECT_ERROR_NONE;
3253 WDC_LOGE("Invalid Parameter");
3254 __WDC_LOG_FUNC_END__;
3255 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
3258 ret = vconf_get_int(VCONFKEY_WIFI_DIRECT_STATE, &val);
3260 WDC_LOGE("Failed to get vconf value [%s]\n", VCONFKEY_WIFI_DIRECT_STATE);
3261 __WDC_LOG_FUNC_END__;
3262 return WIFI_DIRECT_ERROR_OPERATION_FAILED;
3265 if (val == VCONFKEY_WIFI_DIRECT_ACTIVATED) {
3266 *state = WIFI_DIRECT_STATE_ACTIVATED;
3267 } else if (val == VCONFKEY_WIFI_DIRECT_DEACTIVATED) {
3268 *state = WIFI_DIRECT_STATE_DEACTIVATED;
3269 } else if (val == VCONFKEY_WIFI_DIRECT_CONNECTED) {
3270 *state = WIFI_DIRECT_STATE_CONNECTED;
3271 } else if (val == VCONFKEY_WIFI_DIRECT_GROUP_OWNER) {
3272 *state = WIFI_DIRECT_STATE_CONNECTED;
3273 } else if (val == VCONFKEY_WIFI_DIRECT_DISCOVERING) {
3274 *state = WIFI_DIRECT_STATE_DISCOVERING;
3275 } else if (val == VCONFKEY_WIFI_DIRECT_DEACTIVATING) {
3276 *state = WIFI_DIRECT_STATE_DEACTIVATING;
3277 } else if (val == VCONFKEY_WIFI_DIRECT_ACTIVATING) {
3278 *state = WIFI_DIRECT_STATE_ACTIVATING;
3279 } else if (val == VCONFKEY_WIFI_DIRECT_CONNECTING) {
3280 *state = WIFI_DIRECT_STATE_CONNECTING;
3281 } else if (val == VCONFKEY_WIFI_DIRECT_DISCONNECTING) {
3282 *state = WIFI_DIRECT_STATE_DISCONNECTING;
3284 WDC_LOGE("This state cannot be set as wifi_direct vconf state[%d]", val);
3285 return WIFI_DIRECT_ERROR_OPERATION_FAILED;
3288 WDC_LOGD("State = [%d]", *state);
3289 WDC_LOGD("%s() return : [%d]", __func__, ret);
3290 __WDC_LOG_FUNC_END__;
3294 int wifi_direct_is_discoverable(bool* discoverable)
3296 __WDC_LOG_FUNC_START__;
3298 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
3300 GError* error = NULL;
3301 GVariant *reply = NULL;
3303 int ret = WIFI_DIRECT_ERROR_NONE;
3305 if (g_client_info.is_registered == false) {
3306 WDC_LOGE("Client is NOT registered");
3307 __WDC_LOG_FUNC_END__;
3308 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
3311 if (!discoverable) {
3312 WDC_LOGE("Invalid Parameter");
3313 __WDC_LOG_FUNC_END__;
3314 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
3317 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_MANAGE_INTERFACE,
3318 "IsDiscoverable", NULL, &error);
3320 ret = __net_wifidirect_gerror_to_enum(error);
3321 if (ret != WIFI_DIRECT_ERROR_NONE)
3324 g_variant_get(reply, "(b)", &val);
3325 *discoverable = val;
3326 WDC_LOGD("Discoverable = [%s]", *discoverable ? "Yes" : "No");
3328 WDC_LOGD("%s() SUCCESS", __func__);
3329 g_variant_unref(reply);
3331 __WDC_LOG_FUNC_END__;
3332 return WIFI_DIRECT_ERROR_NONE;
3335 int wifi_direct_is_listening_only(bool* listen_only)
3337 __WDC_LOG_FUNC_START__;
3339 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
3341 GError* error = NULL;
3342 GVariant *reply = NULL;
3343 int ret = WIFI_DIRECT_ERROR_NONE;
3346 if (g_client_info.is_registered == false) {
3347 WDC_LOGE("Client is NOT registered");
3348 __WDC_LOG_FUNC_END__;
3349 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
3353 WDC_LOGE("Invalid Parameter");
3354 __WDC_LOG_FUNC_END__;
3355 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
3358 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_MANAGE_INTERFACE,
3359 "IsListeningOnly", NULL, &error);
3361 ret = __net_wifidirect_gerror_to_enum(error);
3362 if (ret != WIFI_DIRECT_ERROR_NONE)
3365 g_variant_get(reply, "(b)", &val);
3368 WDC_LOGD("Is listen only = [%s]", *listen_only ? "Yes" : "No");
3369 WDC_LOGD("%s() SUCCESS", __func__);
3370 g_variant_unref(reply);
3372 __WDC_LOG_FUNC_END__;
3373 return WIFI_DIRECT_ERROR_NONE;
3377 int wifi_direct_get_primary_device_type(wifi_direct_primary_device_type_e* type)
3379 __WDC_LOG_FUNC_START__;
3381 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
3383 GError* error = NULL;
3384 GVariant *reply = NULL;
3385 int ret = WIFI_DIRECT_ERROR_NONE;
3386 int primary_device_type = 0;
3388 if (g_client_info.is_registered == false) {
3389 WDC_LOGE("Client is NOT registered");
3390 __WDC_LOG_FUNC_END__;
3391 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
3395 WDC_LOGE("NULL Param [type]!");
3396 __WDC_LOG_FUNC_END__;
3397 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
3400 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_CONFIG_INTERFACE,
3401 "GetPrimaryDevType",
3404 ret = __net_wifidirect_gerror_to_enum(error);
3405 if (ret != WIFI_DIRECT_ERROR_NONE)
3408 WDC_LOGD("%s() SUCCESS", __func__);
3409 g_variant_get(reply, "(ii)", &ret, &primary_device_type);
3410 g_variant_unref(reply);
3411 *type = primary_device_type;
3413 __WDC_LOG_FUNC_END__;
3417 int wifi_direct_get_secondary_device_type(wifi_direct_secondary_device_type_e* type)
3419 __WDC_LOG_FUNC_START__;
3421 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
3423 GError* error = NULL;
3424 GVariant *reply = NULL;
3425 int ret = WIFI_DIRECT_ERROR_NONE;
3426 int secondary_device_type = 0;
3428 if (g_client_info.is_registered == false) {
3429 WDC_LOGE("Client is NOT registered");
3430 __WDC_LOG_FUNC_END__;
3431 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
3435 WDC_LOGE("NULL Param [type]!");
3436 __WDC_LOG_FUNC_END__;
3437 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
3440 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_CONFIG_INTERFACE,
3441 "GetSecondaryDevType",
3444 ret = __net_wifidirect_gerror_to_enum(error);
3445 if (ret != WIFI_DIRECT_ERROR_NONE)
3448 WDC_LOGD("%s() SUCCESS", __func__);
3449 g_variant_get(reply, "(ii)", &ret, &secondary_device_type);
3450 g_variant_unref(reply);
3451 *type = secondary_device_type;
3453 __WDC_LOG_FUNC_END__;
3457 int wifi_direct_set_autoconnection_mode(bool mode)
3459 __WDC_LOG_FUNC_START__;
3461 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
3463 GError* error = NULL;
3464 GVariant *reply = NULL;
3465 GVariant *params = NULL;
3466 int ret = WIFI_DIRECT_ERROR_NONE;
3468 if (g_client_info.is_registered == false) {
3469 WDC_LOGE("Client is NOT registered");
3470 __WDC_LOG_FUNC_END__;
3471 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
3474 params = g_variant_new("(b)", mode);
3475 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_CONFIG_INTERFACE,
3476 "SetAutoConnectionMode",
3480 ret = __net_wifidirect_gerror_to_enum(error);
3481 if (ret == WIFI_DIRECT_ERROR_NONE) {
3482 g_variant_get(reply, "(i)", &ret);
3483 g_variant_unref(reply);
3486 WDC_LOGD("%s() return : [%d]", __func__, ret);
3487 __WDC_LOG_FUNC_END__;
3491 int wifi_direct_is_autoconnection_mode(bool *mode)
3493 __WDC_LOG_FUNC_START__;
3495 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
3497 GError* error = NULL;
3498 GVariant *reply = NULL;
3499 gboolean val = FALSE;
3500 int ret = WIFI_DIRECT_ERROR_NONE;
3502 if (g_client_info.is_registered == false) {
3503 WDC_LOGE("Client is NOT registered");
3504 __WDC_LOG_FUNC_END__;
3505 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
3509 WDC_LOGE("NULL Param [mode]!");
3510 __WDC_LOG_FUNC_END__;
3511 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
3514 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_CONFIG_INTERFACE,
3515 "IsAutoConnectionMode",
3519 ret = __net_wifidirect_gerror_to_enum(error);
3520 if (ret != WIFI_DIRECT_ERROR_NONE)
3523 g_variant_get(reply, "(ib)", &ret, &val);
3525 g_variant_unref(reply);
3527 WDC_LOGD("%s() return : [%d]", __func__, ret);
3528 __WDC_LOG_FUNC_END__;
3533 int wifi_direct_set_persistent_group_enabled(bool enabled)
3535 __WDC_LOG_FUNC_START__;
3537 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
3539 GError* error = NULL;
3540 GVariant *reply = NULL;
3541 GVariant *params = NULL;
3542 int ret = WIFI_DIRECT_ERROR_NONE;
3544 if (g_client_info.is_registered == false) {
3545 WDC_LOGE("Client is NOT registered");
3546 __WDC_LOG_FUNC_END__;
3547 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
3550 params = g_variant_new("(b)", enabled);
3551 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_GROUP_INTERFACE,
3552 "SetPersistentGroupEnabled",
3556 ret = __net_wifidirect_gerror_to_enum(error);
3557 if (ret == WIFI_DIRECT_ERROR_NONE) {
3558 g_variant_get(reply, "(i)", &ret);
3559 g_variant_unref(reply);
3562 WDC_LOGD("%s() return : [%d]", __func__, ret);
3564 __WDC_LOG_FUNC_END__;
3565 return WIFI_DIRECT_ERROR_NONE;
3569 int wifi_direct_is_persistent_group_enabled(bool *enabled)
3571 __WDC_LOG_FUNC_START__;
3573 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
3575 GError* error = NULL;
3576 GVariant *reply = NULL;
3577 int ret = WIFI_DIRECT_ERROR_NONE;
3580 if (g_client_info.is_registered == false) {
3581 WDC_LOGE("Client is NOT registered");
3582 __WDC_LOG_FUNC_END__;
3583 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
3587 WDC_LOGE("NULL Param [enabled]!");
3588 __WDC_LOG_FUNC_END__;
3589 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
3592 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_GROUP_INTERFACE,
3593 "IsPersistentGroupEnabled",
3597 ret = __net_wifidirect_gerror_to_enum(error);
3598 if (ret != WIFI_DIRECT_ERROR_NONE)
3601 WDC_LOGD("%s() SUCCESS", __func__);
3602 g_variant_get(reply, "(b)", &val);
3604 g_variant_unref(reply);
3606 __WDC_LOG_FUNC_END__;
3607 return WIFI_DIRECT_ERROR_NONE;
3610 int wifi_direct_foreach_persistent_groups(wifi_direct_persistent_group_cb cb,
3613 __WDC_LOG_FUNC_START__;
3615 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
3617 GVariant *params = NULL;
3618 GError *error = NULL;
3619 GVariant *reply = NULL;
3620 GVariantIter *iter_groups = NULL;
3621 GVariantIter *iter_group = NULL;
3622 GVariant *var = NULL;
3624 int ret = WIFI_DIRECT_ERROR_NONE;
3626 if (g_client_info.is_registered == false) {
3627 WDC_LOGE("Client is NOT registered");
3628 __WDC_LOG_FUNC_END__;
3629 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
3633 WDC_LOGE("NULL Param [callback]!");
3634 __WDC_LOG_FUNC_END__;
3635 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
3638 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_GROUP_INTERFACE,
3639 "GetPersistentGroups", params, &error);
3641 ret = __net_wifidirect_gerror_to_enum(error);
3642 if (ret != WIFI_DIRECT_ERROR_NONE)
3645 g_variant_get(reply, "(iaa{sv})", &ret, &iter_groups);
3646 if (ret != WIFI_DIRECT_ERROR_NONE) {
3647 __WDC_LOG_FUNC_END__;
3648 return WIFI_DIRECT_ERROR_OPERATION_FAILED;
3651 WDC_LOGD("wifi_direct_foreach_persistent_groups() SUCCESS");
3653 while (g_variant_iter_loop(iter_groups, "a{sv}", &iter_group)) {
3654 const char *ssid = NULL;
3655 char *go_mac_address = NULL;
3657 while (g_variant_iter_loop(iter_group, "{sv}", &key, &var)) {
3658 if (!g_strcmp0(key, "SSID")) {
3659 g_variant_get(var, "&s", &ssid);
3661 } else if (!g_strcmp0(key, "GOMacAddress")) {
3662 unsigned char mac_address[MACADDR_LEN] = {0, };
3664 wifi_direct_dbus_unpack_ay(mac_address, var, MACADDR_LEN);
3665 go_mac_address = (char*) g_try_malloc0(MACSTR_LEN);
3667 g_snprintf(go_mac_address, MACSTR_LEN, MACSTR, MAC2STR(mac_address));
3674 ret = cb(go_mac_address, ssid, user_data);
3675 g_free(go_mac_address);
3676 go_mac_address = NULL;
3678 g_variant_iter_free(iter_group);
3683 g_variant_iter_free(iter_groups);
3684 __WDC_LOG_FUNC_END__;
3685 return WIFI_DIRECT_ERROR_NONE;
3689 int wifi_direct_remove_persistent_group(char *mac_address, const char *ssid)
3691 __WDC_LOG_FUNC_START__;
3693 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
3695 GError* error = NULL;
3696 GVariant *reply = NULL;
3697 GVariant *params = NULL;
3698 int ret = WIFI_DIRECT_ERROR_NONE;
3700 if (g_client_info.is_registered == false) {
3701 WDC_LOGE("Client is NOT registered");
3702 __WDC_LOG_FUNC_END__;
3703 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
3706 if (!mac_address || !ssid) {
3707 WDC_LOGE("NULL Param");
3708 __WDC_LOG_FUNC_END__;
3709 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
3712 params = g_variant_new("(ss)", mac_address, ssid);
3713 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_GROUP_INTERFACE,
3714 "RemovePersistentGroup",
3718 ret = __net_wifidirect_gerror_to_enum(error);
3719 if (ret == WIFI_DIRECT_ERROR_NONE) {
3720 g_variant_get(reply, "(i)", &ret);
3721 g_variant_unref(reply);
3724 WDC_LOGD("%s() return : [%d]", __func__, ret);
3726 __WDC_LOG_FUNC_END__;
3727 return WIFI_DIRECT_ERROR_NONE;
3731 int wifi_direct_start_service_discovery(char *mac_address,
3732 wifi_direct_service_type_e type)
3734 __WDC_LOG_FUNC_START__;
3736 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_SERVICE_DISCOVERY_FEATURE);
3740 GError* error = NULL;
3741 GVariant *reply = NULL;
3742 GVariant *params = NULL;
3743 int ret = WIFI_DIRECT_ERROR_NONE;
3745 if (g_client_info.is_registered == false) {
3746 WDC_LOGE("Client is NOT registered.");
3747 __WDC_LOG_FUNC_END__;
3748 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
3750 WDC_LOGD("Param service_type [%d]", type);
3753 params = g_variant_new("(is)", type, mac_address);
3755 params = g_variant_new("(is)", type, "00:00:00:00:00:00");
3757 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_SERVICE_INTERFACE,
3762 ret = __net_wifidirect_gerror_to_enum(error);
3763 if (ret == WIFI_DIRECT_ERROR_NONE) {
3764 g_variant_get(reply, "(i)", &ret);
3765 g_variant_unref(reply);
3768 WDC_LOGD("%s() return : [%d]", __func__, ret);
3769 __WDC_LOG_FUNC_END__;
3775 int wifi_direct_cancel_service_discovery(char *mac_address,
3776 wifi_direct_service_type_e type)
3778 __WDC_LOG_FUNC_START__;
3780 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_SERVICE_DISCOVERY_FEATURE);
3782 GError* error = NULL;
3783 GVariant *reply = NULL;
3784 GVariant *params = NULL;
3785 int ret = WIFI_DIRECT_ERROR_NONE;
3787 if (g_client_info.is_registered == false) {
3788 WDC_LOGE("Client is NOT registered.");
3789 __WDC_LOG_FUNC_END__;
3790 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
3792 WDC_LOGD("Param service_type [%d]", type);
3795 params = g_variant_new("(is)", type, mac_address);
3797 params = g_variant_new("(is)", type, "00:00:00:00:00:00");
3799 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_SERVICE_INTERFACE,
3804 ret = __net_wifidirect_gerror_to_enum(error);
3805 if (ret == WIFI_DIRECT_ERROR_NONE) {
3806 g_variant_get(reply, "(i)", &ret);
3807 g_variant_unref(reply);
3810 WDC_LOGD("%s() return : [%d]", __func__, ret);
3811 __WDC_LOG_FUNC_END__;
3816 int wifi_direct_register_service(wifi_direct_service_type_e type, char *info1, char *info2, unsigned int *service_id)
3818 __WDC_LOG_FUNC_START__;
3820 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_SERVICE_DISCOVERY_FEATURE);
3822 GError* error = NULL;
3823 GVariant *reply = NULL;
3824 GVariant *params = NULL;
3826 int ret = WIFI_DIRECT_ERROR_NONE;
3829 if (g_client_info.is_registered == false) {
3830 WDC_LOGE("Client is NOT registered.");
3831 __WDC_LOG_FUNC_END__;
3832 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
3835 if (!info1 || !info2) {
3836 WDC_LOGE("info1 or info2 is NULL");
3837 __WDC_LOG_FUNC_END__;
3838 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
3842 WDC_LOGE("Invalid Param [service_id]!");
3843 __WDC_LOG_FUNC_END__;
3844 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
3847 WDC_LOGD("Service type [%d]", type);
3849 len = strlen(info1) + strlen(info2) + 2;
3850 WDC_LOGD("info [%s|%s], len [%d]", info1, info2, len);
3852 buf = g_try_malloc0(len);
3854 WDC_LOGE("Failed to allocate memory for buf");
3855 return WIFI_DIRECT_ERROR_OUT_OF_MEMORY;
3858 g_snprintf(buf, len, "%s|%s", info1, info2);
3860 params = g_variant_new("(is)", type, buf);
3861 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_SERVICE_INTERFACE,
3866 ret = __net_wifidirect_gerror_to_enum(error);
3867 if (ret != WIFI_DIRECT_ERROR_NONE) {
3872 g_variant_get(reply, "(ii)", &ret, service_id);
3873 g_variant_unref(reply);
3876 WDC_LOGD("%s() return : [%d]", __func__, ret);
3877 __WDC_LOG_FUNC_END__;
3882 int wifi_direct_deregister_service(unsigned int service_id)
3884 __WDC_LOG_FUNC_START__;
3886 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_SERVICE_DISCOVERY_FEATURE);
3888 GError* error = NULL;
3889 GVariant *reply = NULL;
3890 GVariant *params = NULL;
3891 int ret = WIFI_DIRECT_ERROR_NONE;
3893 if (g_client_info.is_registered == false) {
3894 WDC_LOGE("Client is NOT registered.");
3895 __WDC_LOG_FUNC_END__;
3896 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
3899 params = g_variant_new("(i)", service_id);
3900 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_SERVICE_INTERFACE,
3905 ret = __net_wifidirect_gerror_to_enum(error);
3906 if (ret == WIFI_DIRECT_ERROR_NONE) {
3907 g_variant_get(reply, "(i)", &ret);
3908 g_variant_unref(reply);
3911 WDC_LOGD("%s() return : [%d]", __func__, ret);
3912 __WDC_LOG_FUNC_END__;
3917 int wifi_direct_init_miracast(bool enable)
3919 __WDC_LOG_FUNC_START__;
3920 int ret = WIFI_DIRECT_ERROR_NONE;
3923 ret = wifi_direct_init_display();
3925 ret = wifi_direct_deinit_display();
3927 __WDC_LOG_FUNC_END__;
3931 int wifi_direct_get_peer_info(char* mac_address, wifi_direct_discovered_peer_info_s** peer_info)
3933 __WDC_LOG_FUNC_START__;
3935 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
3937 GVariant *params = NULL;
3938 GError *error = NULL;
3939 GVariant *reply = NULL;
3940 GVariantIter *iter_peer = NULL;
3941 GVariant *var = NULL;
3943 int ret = WIFI_DIRECT_ERROR_NONE;
3945 if (g_client_info.is_registered == false) {
3946 WDC_LOGE("Client is NOT registered");
3947 __WDC_LOG_FUNC_END__;
3948 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
3952 WDC_LOGE("mac_addr is NULL");
3953 __WDC_LOG_FUNC_END__;
3954 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
3958 WDC_LOGE("peer_info is NULL");
3959 __WDC_LOG_FUNC_END__;
3960 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
3963 params = g_variant_new("(s)", mac_address);
3964 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_MANAGE_INTERFACE,
3965 "GetPeerInfo", params, &error);
3967 ret = __net_wifidirect_gerror_to_enum(error);
3968 if (ret != WIFI_DIRECT_ERROR_NONE)
3971 g_variant_get(reply, "(ia{sv})", &ret, &iter_peer);
3972 if (ret != WIFI_DIRECT_ERROR_NONE) {
3973 __WDC_LOG_FUNC_END__;
3974 return WIFI_DIRECT_ERROR_OPERATION_FAILED;
3977 WDC_LOGD("wifi_direct_get_peer() SUCCESS");
3979 wifi_direct_discovered_peer_info_s *peer = NULL;
3981 peer = (wifi_direct_discovered_peer_info_s *) g_try_malloc0(sizeof(wifi_direct_discovered_peer_info_s));
3983 WDC_LOGE("Failed to allocate memory");
3984 __WDC_LOG_FUNC_END__;
3985 return WIFI_DIRECT_ERROR_OPERATION_FAILED;
3988 while (g_variant_iter_loop(iter_peer, "{sv}", &key, &var)) {
3989 if (!g_strcmp0(key, "DeviceName")) {
3990 const char *device_name = NULL;
3992 g_variant_get(var, "&s", &device_name);
3993 peer->device_name = g_strndup(device_name, WIFI_DIRECT_MAX_DEVICE_NAME_LEN+1);
3995 } else if (!g_strcmp0(key, "DeviceAddress")) {
3996 unsigned char l_mac_address[MACADDR_LEN] = {0, };
3998 wifi_direct_dbus_unpack_ay(l_mac_address, var, MACADDR_LEN);
3999 peer->mac_address = (char*) g_try_malloc0(MACSTR_LEN);
4000 if (peer->mac_address)
4001 g_snprintf(peer->mac_address, MACSTR_LEN, MACSTR, MAC2STR(l_mac_address));
4003 } else if (!g_strcmp0(key, "InterfaceAddress")) {
4004 unsigned char intf_address[MACADDR_LEN] = {0, };
4006 wifi_direct_dbus_unpack_ay(intf_address, var, MACADDR_LEN);
4007 peer->interface_address = (char*) g_try_malloc0(MACSTR_LEN);
4008 if (peer->interface_address)
4009 g_snprintf(peer->interface_address, MACSTR_LEN, MACSTR, MAC2STR(intf_address));
4011 } else if (!g_strcmp0(key, "Channel")) {
4012 peer->channel = g_variant_get_uint16(var);
4014 } else if (!g_strcmp0(key, "IsGroupOwner")) {
4015 peer->is_group_owner = g_variant_get_boolean(var);
4017 } else if (!g_strcmp0(key, "IsPersistentGO")) {
4018 peer->is_persistent_group_owner = g_variant_get_boolean(var);
4020 } else if (!g_strcmp0(key, "IsConnected")) {
4021 peer->is_connected = g_variant_get_boolean(var);
4023 } else if (!g_strcmp0(key, "Category")) {
4024 peer->primary_device_type = g_variant_get_uint16(var);
4026 } else if (!g_strcmp0(key, "SubCategory")) {
4027 peer->secondary_device_type = g_variant_get_uint16(var);
4029 } else if (!g_strcmp0(key, "IsWfdDevice")) {
4030 if (g_client_info.is_display_supported)
4031 peer->is_miracast_device = g_variant_get_boolean(var);
4039 g_variant_unref(reply);
4041 __WDC_LOG_FUNC_END__;
4042 return WIFI_DIRECT_ERROR_NONE;
4045 int wifi_direct_set_passphrase(const char *passphrase)
4047 __WDC_LOG_FUNC_START__;
4049 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
4051 GError* error = NULL;
4052 GVariant *reply = NULL;
4053 GVariant *params = NULL;
4054 int ret = WIFI_DIRECT_ERROR_NONE;
4056 if (g_client_info.is_registered == false) {
4057 WDC_LOGE("Client is NOT registered.");
4058 __WDC_LOG_FUNC_END__;
4059 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
4063 WDC_LOGE("NULL Param [passphrase]!");
4064 __WDC_LOG_FUNC_END__;
4065 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
4067 WDC_LOGD("passphrase = [%s]", passphrase);
4069 params = g_variant_new("(s)", passphrase);
4070 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_GROUP_INTERFACE,
4075 ret = __net_wifidirect_gerror_to_enum(error);
4076 if (ret == WIFI_DIRECT_ERROR_NONE) {
4077 g_variant_get(reply, "(i)", &ret);
4078 g_variant_unref(reply);
4081 WDC_LOGD("%s() SUCCESS", __func__);
4083 __WDC_LOG_FUNC_END__;
4084 return WIFI_DIRECT_ERROR_NONE;
4087 int wifi_direct_get_passphrase(char** passphrase)
4089 __WDC_LOG_FUNC_START__;
4091 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
4093 GError* error = NULL;
4094 GVariant *reply = NULL;
4095 const char *val = NULL;
4096 int ret = WIFI_DIRECT_ERROR_NONE;
4098 if (g_client_info.is_registered == false) {
4099 WDC_LOGE("Client is NOT registered.");
4100 __WDC_LOG_FUNC_END__;
4101 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
4105 WDC_LOGE("NULL Param [passphrase]!");
4106 __WDC_LOG_FUNC_END__;
4107 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
4110 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_GROUP_INTERFACE,
4115 ret = __net_wifidirect_gerror_to_enum(error);
4116 if (ret != WIFI_DIRECT_ERROR_NONE)
4119 WDC_LOGD("%s() SUCCESS", __func__);
4120 g_variant_get(reply, "(i&s)", &ret, &val);
4122 *passphrase = strdup(val);
4123 g_variant_unref(reply);
4125 WDC_LOGD("%s() return : [%d]", __func__, ret);
4126 __WDC_LOG_FUNC_END__;
4130 int wifi_direct_set_autoconnection_peer(char *mac_address)
4132 __WDC_LOG_FUNC_START__;
4134 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
4136 GError* error = NULL;
4137 GVariant *reply = NULL;
4138 GVariant *params = NULL;
4139 int ret = WIFI_DIRECT_ERROR_NONE;
4141 if (g_client_info.is_registered == false) {
4142 WDC_LOGE("Client is NOT registered.");
4143 __WDC_LOG_FUNC_END__;
4144 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
4148 WDC_LOGE("NULL Param!");
4149 __WDC_LOG_FUNC_END__;
4150 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
4153 params = g_variant_new("(s)", mac_address);
4154 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_CONFIG_INTERFACE,
4155 "SetAutoConnectionPeer",
4159 ret = __net_wifidirect_gerror_to_enum(error);
4160 if (ret == WIFI_DIRECT_ERROR_NONE) {
4161 g_variant_get(reply, "(i)", &ret);
4162 g_variant_unref(reply);
4165 WDC_LOGD("%s() return : [%d]", __func__, ret);
4166 __WDC_LOG_FUNC_END__;
4170 int wifi_direct_init_display(void)
4172 __WDC_LOG_FUNC_START__;
4174 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_DISPLAY_FEATURE);
4176 GError* error = NULL;
4177 GVariant *reply = NULL;
4178 int ret = WIFI_DIRECT_ERROR_NONE;
4180 if (g_client_info.is_registered == false) {
4181 WDC_LOGE("Client is NOT registered.");
4182 __WDC_LOG_FUNC_END__;
4183 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
4186 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_DISPLAY_INTERFACE,
4191 ret = __net_wifidirect_gerror_to_enum(error);
4192 if (ret == WIFI_DIRECT_ERROR_NONE) {
4193 g_variant_get(reply, "(i)", &ret);
4194 g_variant_unref(reply);
4197 WDC_LOGD("%s() return : [%d]", __func__, ret);
4198 __WDC_LOG_FUNC_END__;
4203 int wifi_direct_deinit_display(void)
4205 __WDC_LOG_FUNC_START__;
4207 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_DISPLAY_FEATURE);
4209 GError* error = NULL;
4210 GVariant *reply = NULL;
4211 int ret = WIFI_DIRECT_ERROR_NONE;
4213 if (g_client_info.is_registered == false) {
4214 WDC_LOGE("Client is NOT registered");
4215 __WDC_LOG_FUNC_END__;
4216 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
4219 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_DISPLAY_INTERFACE,
4224 ret = __net_wifidirect_gerror_to_enum(error);
4225 if (ret == WIFI_DIRECT_ERROR_NONE) {
4226 g_variant_get(reply, "(i)", &ret);
4227 g_variant_unref(reply);
4230 WDC_LOGD("%s() return : [%d]", __func__, ret);
4231 __WDC_LOG_FUNC_END__;
4236 int wifi_direct_set_display(wifi_direct_display_type_e type, int port, int hdcp)
4238 __WDC_LOG_FUNC_START__;
4240 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_DISPLAY_FEATURE);
4242 GError* error = NULL;
4243 GVariant *reply = NULL;
4244 GVariant *params = NULL;
4245 int ret = WIFI_DIRECT_ERROR_NONE;
4247 if (g_client_info.is_registered == false) {
4248 WDC_LOGE("Client is NOT registered");
4249 __WDC_LOG_FUNC_END__;
4250 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
4253 if (port < 0 || hdcp < 0) {
4254 WDC_LOGE("Invalid paramaeters passed type[%d], port[%d], hdcp[%d]!", type, port, hdcp);
4255 __WDC_LOG_FUNC_END__;
4256 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
4259 params = g_variant_new("(iii)", type, port, hdcp);
4260 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_DISPLAY_INTERFACE,
4265 ret = __net_wifidirect_gerror_to_enum(error);
4266 if (ret == WIFI_DIRECT_ERROR_NONE) {
4267 g_variant_get(reply, "(i)", &ret);
4268 g_variant_unref(reply);
4271 WDC_LOGD("%s() return : [%d]", __func__, ret);
4272 __WDC_LOG_FUNC_END__;
4277 int wifi_direct_set_display_availability(bool availability)
4279 __WDC_LOG_FUNC_START__;
4281 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_DISPLAY_FEATURE);
4283 GError* error = NULL;
4284 GVariant *reply = NULL;
4285 GVariant *params = NULL;
4286 int ret = WIFI_DIRECT_ERROR_NONE;
4288 if (g_client_info.is_registered == false) {
4289 WDC_LOGE("Client is NOT registered.");
4290 __WDC_LOG_FUNC_END__;
4291 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
4295 params = g_variant_new("(i)", availability);
4296 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_DISPLAY_INTERFACE,
4301 ret = __net_wifidirect_gerror_to_enum(error);
4302 if (ret == WIFI_DIRECT_ERROR_NONE) {
4303 g_variant_get(reply, "(i)", &ret);
4304 g_variant_unref(reply);
4307 WDC_LOGD("%s() return : [%d]", __func__, ret);
4308 __WDC_LOG_FUNC_END__;
4313 int wifi_direct_get_display(wifi_direct_display_type_e *type, int *port, int *hdcp)
4315 __WDC_LOG_FUNC_START__;
4317 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_DISPLAY_FEATURE);
4319 GError* error = NULL;
4320 GVariant *reply = NULL;
4321 int ret = WIFI_DIRECT_ERROR_NONE;
4324 if (g_client_info.is_registered == false) {
4325 WDC_LOGE("Client is NOT registered");
4326 __WDC_LOG_FUNC_END__;
4327 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
4330 if (!type || !port || !hdcp) {
4331 WDC_LOGE("Invalid paramaeters passed!");
4332 __WDC_LOG_FUNC_END__;
4333 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
4336 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_DISPLAY_INTERFACE,
4341 ret = __net_wifidirect_gerror_to_enum(error);
4342 if (ret != WIFI_DIRECT_ERROR_NONE)
4345 g_variant_get(reply, "(iiii)", &ret, &val, port, hdcp);
4347 g_variant_unref(reply);
4349 WDC_LOGD("%s() return : [%d]", __func__, ret);
4350 __WDC_LOG_FUNC_END__;
4355 int wifi_direct_get_display_availability(bool *availability)
4357 __WDC_LOG_FUNC_START__;
4359 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_DISPLAY_FEATURE);
4361 GError* error = NULL;
4362 GVariant *reply = NULL;
4363 int ret = WIFI_DIRECT_ERROR_NONE;
4366 if (g_client_info.is_registered == false) {
4367 WDC_LOGE("Client is NOT registered.");
4368 __WDC_LOG_FUNC_END__;
4369 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
4372 if (!availability) {
4373 WDC_LOGE("Invalid paramaeters passed!");
4374 __WDC_LOG_FUNC_END__;
4375 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
4378 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_DISPLAY_INTERFACE,
4383 ret = __net_wifidirect_gerror_to_enum(error);
4384 if (ret != WIFI_DIRECT_ERROR_NONE)
4387 g_variant_get(reply, "(ii)", &ret, &val);
4388 *availability = val;
4389 g_variant_unref(reply);
4391 WDC_LOGD("%s() return : [%d]", __func__, ret);
4392 __WDC_LOG_FUNC_END__;
4398 int wifi_direct_get_peer_display_type(char *mac_address, wifi_direct_display_type_e *type)
4400 __WDC_LOG_FUNC_START__;
4402 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_DISPLAY_FEATURE);
4404 GError* error = NULL;
4405 GVariant *reply = NULL;
4406 GVariant *params = NULL;
4408 int ret = WIFI_DIRECT_ERROR_NONE;
4410 if (g_client_info.is_registered == false) {
4411 WDC_LOGE("Client is NOT registered");
4412 __WDC_LOG_FUNC_END__;
4413 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
4416 if (!mac_address || !type) {
4417 WDC_LOGE("NULL Param!");
4418 __WDC_LOG_FUNC_END__;
4419 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
4422 params = g_variant_new("(s)", mac_address);
4423 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_DISPLAY_INTERFACE,
4428 ret = __net_wifidirect_gerror_to_enum(error);
4429 if (ret != WIFI_DIRECT_ERROR_NONE)
4432 g_variant_get(reply, "(ii)", &ret, &val);
4434 g_variant_unref(reply);
4436 WDC_LOGD("%s() return : [%d]", __func__, ret);
4437 __WDC_LOG_FUNC_END__;
4442 int wifi_direct_get_peer_display_availability(char *mac_address, bool *availability)
4444 __WDC_LOG_FUNC_START__;
4446 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_DISPLAY_FEATURE);
4448 GError* error = NULL;
4449 GVariant *reply = NULL;
4450 GVariant *params = NULL;
4452 int ret = WIFI_DIRECT_ERROR_NONE;
4454 if (g_client_info.is_registered == false) {
4455 WDC_LOGE("Client is NOT registered");
4456 __WDC_LOG_FUNC_END__;
4457 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
4460 if (!mac_address || !availability) {
4461 WDC_LOGE("NULL Param!");
4462 __WDC_LOG_FUNC_END__;
4463 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
4466 params = g_variant_new("(s)", mac_address);
4467 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_DISPLAY_INTERFACE,
4468 "GetPeerAvailability",
4472 ret = __net_wifidirect_gerror_to_enum(error);
4473 if (ret != WIFI_DIRECT_ERROR_NONE)
4476 g_variant_get(reply, "(ii)", &ret, &val);
4477 *availability = val;
4478 g_variant_unref(reply);
4480 WDC_LOGD("%s() return : [%d]", __func__, ret);
4481 __WDC_LOG_FUNC_END__;
4486 int wifi_direct_get_peer_display_hdcp(char *mac_address, int *hdcp)
4488 __WDC_LOG_FUNC_START__;
4490 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_DISPLAY_FEATURE);
4492 GError* error = NULL;
4493 GVariant *reply = NULL;
4494 GVariant *params = NULL;
4496 int ret = WIFI_DIRECT_ERROR_NONE;
4498 if (g_client_info.is_registered == false) {
4499 WDC_LOGE("Client is NOT registered");
4500 __WDC_LOG_FUNC_END__;
4501 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
4504 if (!mac_address || !hdcp) {
4505 WDC_LOGE("NULL Param!");
4506 __WDC_LOG_FUNC_END__;
4507 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
4510 params = g_variant_new("(s)", mac_address);
4511 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_DISPLAY_INTERFACE,
4516 ret = __net_wifidirect_gerror_to_enum(error);
4517 if (ret != WIFI_DIRECT_ERROR_NONE)
4520 g_variant_get(reply, "(ii)", &ret, &val);
4522 g_variant_unref(reply);
4524 WDC_LOGD("%s() return : [%d]", __func__, ret);
4525 __WDC_LOG_FUNC_END__;
4530 int wifi_direct_get_peer_display_port(char *mac_address, int *port)
4532 __WDC_LOG_FUNC_START__;
4534 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_DISPLAY_FEATURE);
4536 GError* error = NULL;
4537 GVariant *reply = NULL;
4538 GVariant *params = NULL;
4540 int ret = WIFI_DIRECT_ERROR_NONE;
4542 if (g_client_info.is_registered == false) {
4543 WDC_LOGE("Client is NOT registered");
4544 __WDC_LOG_FUNC_END__;
4545 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
4548 if (!mac_address || !port) {
4549 WDC_LOGE("NULL Param!");
4550 __WDC_LOG_FUNC_END__;
4551 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
4554 params = g_variant_new("(s)", mac_address);
4555 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_DISPLAY_INTERFACE,
4560 ret = __net_wifidirect_gerror_to_enum(error);
4561 if (ret != WIFI_DIRECT_ERROR_NONE)
4564 g_variant_get(reply, "(ii)", &ret, &val);
4566 g_variant_unref(reply);
4568 WDC_LOGD("%s() return : [%d]", __func__, ret);
4569 __WDC_LOG_FUNC_END__;
4574 int wifi_direct_get_peer_display_throughput(char *mac_address, int *throughput)
4576 __WDC_LOG_FUNC_START__;
4578 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_DISPLAY_FEATURE);
4580 GError* error = NULL;
4581 GVariant *reply = NULL;
4582 GVariant *params = NULL;
4584 int ret = WIFI_DIRECT_ERROR_NONE;
4586 if (g_client_info.is_registered == false) {
4587 WDC_LOGE("Client is NOT registered");
4588 __WDC_LOG_FUNC_END__;
4589 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
4592 if (!mac_address || !throughput) {
4593 WDC_LOGE("NULL Param!");
4594 __WDC_LOG_FUNC_END__;
4595 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
4598 params = g_variant_new("(s)", mac_address);
4599 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_DISPLAY_INTERFACE,
4600 "GetPeerThroughput",
4604 ret = __net_wifidirect_gerror_to_enum(error);
4605 if (ret != WIFI_DIRECT_ERROR_NONE)
4608 g_variant_get(reply, "(ii)", &ret, &val);
4610 g_variant_unref(reply);
4612 WDC_LOGD("%s() return : [%d]", __func__, ret);
4613 __WDC_LOG_FUNC_END__;
4618 int wifi_direct_set_session_timer(int seconds)
4620 __WDC_LOG_FUNC_START__;
4622 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
4624 GError* error = NULL;
4625 GVariant *reply = NULL;
4626 GVariant *params = NULL;
4627 int ret = WIFI_DIRECT_ERROR_NONE;
4629 if (g_client_info.is_registered == false) {
4630 WDC_LOGE("Client is NOT registered.");
4631 __WDC_LOG_FUNC_END__;
4632 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
4635 WDC_LOGE("Negative Timer Value");
4636 __WDC_LOG_FUNC_END__;
4637 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
4640 WDC_LOGD("seconds = [%d]", seconds);
4642 params = g_variant_new("(i)", seconds);
4643 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_CONFIG_INTERFACE,
4648 ret = __net_wifidirect_gerror_to_enum(error);
4649 if (ret == WIFI_DIRECT_ERROR_NONE) {
4650 g_variant_get(reply, "(i)", &ret);
4651 g_variant_unref(reply);
4654 WDC_LOGD("%s() SUCCESS", __func__);
4656 __WDC_LOG_FUNC_END__;
4657 return WIFI_DIRECT_ERROR_NONE;
4661 int wifi_direct_get_session_timer(int *seconds)
4663 __WDC_LOG_FUNC_START__;
4665 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
4667 GError* error = NULL;
4668 GVariant *reply = NULL;
4670 int ret = WIFI_DIRECT_ERROR_NONE;
4672 if (g_client_info.is_registered == false) {
4673 WDC_LOGE("Client is NOT registered");
4674 __WDC_LOG_FUNC_END__;
4675 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
4679 WDC_LOGE("Invalid Parameter");
4680 __WDC_LOG_FUNC_END__;
4681 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
4684 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_CONFIG_INTERFACE,
4689 ret = __net_wifidirect_gerror_to_enum(error);
4690 if (ret != WIFI_DIRECT_ERROR_NONE)
4693 g_variant_get(reply, "(ii)", &ret, &val);
4695 g_variant_unref(reply);
4697 WDC_LOGD("Session Timer = [%d] Seconds", *seconds);
4698 WDC_LOGD("%s() return : [%d]", __func__, ret);
4700 __WDC_LOG_FUNC_END__;
4704 int wifi_direct_set_auto_group_removal(bool enable)
4706 __WDC_LOG_FUNC_START__;
4708 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
4710 GError* error = NULL;
4711 GVariant *reply = NULL;
4712 GVariant *params = NULL;
4713 int ret = WIFI_DIRECT_ERROR_NONE;
4715 if (g_client_info.is_registered == false) {
4716 WDC_LOGE("Client is NOT registered");
4717 __WDC_LOG_FUNC_END__;
4718 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
4721 params = g_variant_new("(b)", enable);
4722 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_CONFIG_INTERFACE,
4723 "SetAutoGroupRemoval",
4727 ret = __net_wifidirect_gerror_to_enum(error);
4728 if (ret == WIFI_DIRECT_ERROR_NONE) {
4729 g_variant_get(reply, "(i)", &ret);
4730 g_variant_unref(reply);
4733 WDC_LOGD("%s() return : [%d]", __func__, ret);
4734 __WDC_LOG_FUNC_END__;
4738 int wifi_direct_get_peer_rssi(char *mac_address, int *rssi)
4740 __WDC_LOG_FUNC_START__;
4742 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
4744 GError* error = NULL;
4745 GVariant *reply = NULL;
4746 GVariant *params = NULL;
4748 int ret = WIFI_DIRECT_ERROR_NONE;
4750 if (g_client_info.is_registered == false) {
4751 WDC_LOGE("Client is NOT registered");
4752 __WDC_LOG_FUNC_END__;
4753 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
4756 if (!mac_address || !rssi) {
4757 WDC_LOGE("NULL Param!");
4758 __WDC_LOG_FUNC_END__;
4759 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
4762 params = g_variant_new("(s)", mac_address);
4764 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_CONFIG_INTERFACE,
4769 ret = __net_wifidirect_gerror_to_enum(error);
4771 if (ret != WIFI_DIRECT_ERROR_NONE)
4774 g_variant_get(reply, "(ii)", &ret, &val);
4776 g_variant_unref(reply);
4778 WDC_LOGD("%s() return : [%d]", __func__, ret);
4779 __WDC_LOG_FUNC_END__;
4783 int wifi_direct_add_vsie(wifi_direct_vsie_frames_e frame_id,
4784 const char *vsie_str)
4786 __WDC_LOG_FUNC_START__;
4788 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
4790 GError* error = NULL;
4791 GVariant *reply = NULL;
4792 GVariant *params = NULL;
4793 int ret = WIFI_DIRECT_ERROR_NONE;
4795 if (g_client_info.is_registered == false) {
4796 WDC_LOGE("Client is NOT registered.");
4797 __WDC_LOG_FUNC_END__;
4798 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
4802 WDC_LOGE("NULL Param [vsie_str]!");
4803 __WDC_LOG_FUNC_END__;
4804 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
4807 params = g_variant_new("(is)", frame_id, vsie_str);
4808 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_CONFIG_INTERFACE,
4809 "AddVsie", params, &error);
4811 ret = __net_wifidirect_gerror_to_enum(error);
4812 if (ret != WIFI_DIRECT_ERROR_NONE)
4815 g_variant_get(reply, "(i)", &ret);
4816 g_variant_unref(reply);
4818 WDC_LOGD("%s() return : [%d]", __func__, ret);
4819 __WDC_LOG_FUNC_END__;
4823 int wifi_direct_get_vsie(wifi_direct_vsie_frames_e frame_id, char **vsie_str)
4825 __WDC_LOG_FUNC_START__;
4827 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
4829 GError* error = NULL;
4830 GVariant *reply = NULL;
4831 GVariant *params = NULL;
4832 const char *val = NULL;
4833 int ret = WIFI_DIRECT_ERROR_NONE;
4835 if (g_client_info.is_registered == false) {
4836 WDC_LOGE("Client is NOT registered.");
4837 __WDC_LOG_FUNC_END__;
4838 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
4842 WDC_LOGE("NULL Param [vsie_str]!");
4843 __WDC_LOG_FUNC_END__;
4844 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
4847 params = g_variant_new("(i)", frame_id);
4848 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_CONFIG_INTERFACE,
4849 "GetVsie", params, &error);
4851 ret = __net_wifidirect_gerror_to_enum(error);
4852 if (ret != WIFI_DIRECT_ERROR_NONE)
4855 g_variant_get(reply, "(i&s)", &ret, &val);
4857 *vsie_str = strdup(val);
4858 g_variant_unref(reply);
4860 WDC_LOGD("%s() return : [%d] vsie [%s]", __func__, ret, *vsie_str);
4861 __WDC_LOG_FUNC_END__;
4865 int wifi_direct_remove_vsie(wifi_direct_vsie_frames_e frame_id,
4866 const char *vsie_str)
4868 __WDC_LOG_FUNC_START__;
4870 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
4872 GError* error = NULL;
4873 GVariant *reply = NULL;
4874 GVariant *params = NULL;
4875 int ret = WIFI_DIRECT_ERROR_NONE;
4877 if (g_client_info.is_registered == false) {
4878 WDC_LOGE("Client is NOT registered.");
4879 __WDC_LOG_FUNC_END__;
4880 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
4884 WDC_LOGE("NULL Param [vsie_str]!");
4885 __WDC_LOG_FUNC_END__;
4886 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
4889 params = g_variant_new("(is)", frame_id, vsie_str);
4890 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_CONFIG_INTERFACE,
4891 "RemoveVsie", params, &error);
4893 ret = __net_wifidirect_gerror_to_enum(error);
4894 if (ret != WIFI_DIRECT_ERROR_NONE)
4897 g_variant_get(reply, "(i)", &ret);
4898 g_variant_unref(reply);
4900 WDC_LOGD("%s() return : [%d]", __func__, ret);
4901 __WDC_LOG_FUNC_END__;
4905 int wifi_direct_get_connecting_peer_info(
4906 wifi_direct_discovered_peer_info_s **peer_info)
4908 __WDC_LOG_FUNC_START__;
4910 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
4912 GError *error = NULL;
4913 GVariant *reply = NULL;
4914 GVariantIter *iter_peer = NULL;
4915 wifi_direct_discovered_peer_info_s *peer = NULL;
4916 int ret = WIFI_DIRECT_ERROR_NONE;
4918 if (g_client_info.is_registered == false) {
4919 WDC_LOGE("Client is NOT registered");
4920 __WDC_LOG_FUNC_END__;
4921 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
4925 WDC_LOGE("peer_info is NULL");
4926 __WDC_LOG_FUNC_END__;
4927 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
4930 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_MANAGE_INTERFACE,
4931 "GetConnectingPeer", NULL,
4934 ret = __net_wifidirect_gerror_to_enum(error);
4935 if (ret != WIFI_DIRECT_ERROR_NONE) {
4936 __WDC_LOG_FUNC_END__;
4940 g_variant_get(reply, "(ia{sv})", &ret, &iter_peer);
4941 if (ret != WIFI_DIRECT_ERROR_NONE) {
4942 __WDC_LOG_FUNC_END__;
4943 return WIFI_DIRECT_ERROR_OPERATION_FAILED;
4946 WDC_LOGD("wifi_direct_get_peer() SUCCESS");
4948 peer = (wifi_direct_discovered_peer_info_s *)
4949 g_try_malloc0(sizeof(wifi_direct_discovered_peer_info_s));
4951 WDC_LOGE("Failed to allocate memory");
4952 __WDC_LOG_FUNC_END__;
4953 return WIFI_DIRECT_ERROR_OPERATION_FAILED;
4956 __wfd_client_extract_discovered_peer_info(iter_peer, peer);
4957 /* __wfd_client_print_entry_list(peer, 1); */
4961 g_variant_unref(reply);
4963 WDC_LOGD("%s() return : [%d]", __func__, ret);
4964 __WDC_LOG_FUNC_END__;
4968 int wifi_direct_get_peer_vsie(char *mac_address, char **vsie)
4970 __WDC_LOG_FUNC_START__;
4972 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
4974 GError* error = NULL;
4975 GVariant *reply = NULL;
4976 GVariant *params = NULL;
4977 const gchar *val = 0;
4978 int ret = WIFI_DIRECT_ERROR_NONE;
4980 if (g_client_info.is_registered == false) {
4981 WDC_LOGE("Client is NOT registered");
4982 __WDC_LOG_FUNC_END__;
4983 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
4986 if (!mac_address || !vsie) {
4987 WDC_LOGE("NULL Param!");
4988 __WDC_LOG_FUNC_END__;
4989 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
4992 params = g_variant_new("(s)", mac_address);
4994 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_MANAGE_INTERFACE,
4999 ret = __net_wifidirect_gerror_to_enum(error);
5001 if (ret != WIFI_DIRECT_ERROR_NONE)
5004 g_variant_get(reply, "(i&s)", &ret, &val);
5005 *vsie = strdup(val);
5006 g_variant_unref(reply);
5008 WDC_LOGD("%s() return : [%d]", __func__, ret);
5009 __WDC_LOG_FUNC_END__;
5014 int wifi_direct_set_wps_config_method(int type)
5016 __WDC_LOG_FUNC_START__;
5018 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
5020 GError *error = NULL;
5021 GVariant *reply = NULL;
5022 GVariant *params = NULL;
5023 int ret = WIFI_DIRECT_ERROR_NONE;
5025 if (g_client_info.is_registered == false) {
5026 WDC_LOGE("Client is NOT registered");
5027 __WDC_LOG_FUNC_END__;
5028 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
5031 if ((type < WIFI_DIRECT_CONFIG_METHOD_DEFAULT) ||
5032 (type > WIFI_DIRECT_CONFIG_METHOD_PIN_KEYPAD)) {
5033 WDC_LOGE("Invalid wps config method");
5034 __WDC_LOG_FUNC_END__;
5035 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
5038 WDC_LOGD("Param wps_mode [%d]", type);
5040 params = g_variant_new("(i)", type);
5041 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_CONFIG_INTERFACE,
5042 "SetWpsConfigMethod",
5046 ret = __net_wifidirect_gerror_to_enum(error);
5047 if (ret == WIFI_DIRECT_ERROR_NONE) {
5048 g_variant_get(reply, "(i)", &ret);
5049 g_variant_unref(reply);
5052 WDC_LOGD("return : [%d]", ret);
5053 __WDC_LOG_FUNC_END__;
5057 int wifi_direct_get_wps_config_method(int *type)
5059 __WDC_LOG_FUNC_START__;
5061 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
5063 GError *error = NULL;
5064 GVariant *reply = NULL;
5068 if (g_client_info.is_registered == false) {
5069 WDC_LOGE("Client is NOT registered");
5070 __WDC_LOG_FUNC_END__;
5071 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
5075 WDC_LOGE("NULL Param type");
5076 __WDC_LOG_FUNC_END__;
5077 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
5080 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_CONFIG_INTERFACE,
5081 "GetWpsConfigMethod",
5085 ret = __net_wifidirect_gerror_to_enum(error);
5086 if (ret != WIFI_DIRECT_ERROR_NONE) {
5090 g_variant_get(reply, "(ii)", &ret, &mode);
5092 g_variant_unref(reply);
5094 WDC_LOGD("return : [%d]", ret);
5095 __WDC_LOG_FUNC_END__;
5099 int wifi_direct_remove_persistent_device(char *mac_address)
5101 __WDC_LOG_FUNC_START__;
5103 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
5105 GError *error = NULL;
5106 GVariant *reply = NULL;
5107 GVariant *params = NULL;
5108 int ret = WIFI_DIRECT_ERROR_NONE;
5110 if (g_client_info.is_registered == false) {
5111 WDC_LOGE("Client is NOT registered");
5112 __WDC_LOG_FUNC_END__;
5113 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
5117 WDC_LOGE("NULL Param");
5118 __WDC_LOG_FUNC_END__;
5119 return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
5122 params = g_variant_new("(s)", mac_address);
5123 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_GROUP_INTERFACE,
5124 "RemovePersistentDevice",
5128 ret = __net_wifidirect_gerror_to_enum(error);
5129 if (ret == WIFI_DIRECT_ERROR_NONE) {
5130 g_variant_get(reply, "(i)", &ret);
5131 g_variant_unref(reply);
5134 WDC_LOGD("return : [%d]", ret);
5136 __WDC_LOG_FUNC_END__;
5140 int wifi_direct_remove_all_persistent_devices(void)
5142 __WDC_LOG_FUNC_START__;
5144 CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
5146 GError *error = NULL;
5147 GVariant *reply = NULL;
5148 int ret = WIFI_DIRECT_ERROR_NONE;
5150 if (g_client_info.is_registered == false) {
5151 WDC_LOGE("Client is NOT registered");
5152 __WDC_LOG_FUNC_END__;
5153 return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
5156 reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_GROUP_INTERFACE,
5157 "RemoveAllPersistentDevice",
5161 ret = __net_wifidirect_gerror_to_enum(error);
5162 if (ret == WIFI_DIRECT_ERROR_NONE) {
5163 g_variant_get(reply, "(i)", &ret);
5164 g_variant_unref(reply);
5167 WDC_LOGD("return : [%d]", ret);
5169 __WDC_LOG_FUNC_END__;