* @brief TODO (can be removed) Create a configuration for Enable request.
* @since_tizen 6.0
* @param[out] config
- * @return 0 on success, otherwise a negative error value
- * @retval #WIFI_AWARE_ERROR_NONE
- * @see wifi_aware_enable_config_destroy
+ * @return 0 on success, otherwise a negative error value
+ * @retval #WIFI_AWARE_ERROR_NONE
+ * @see wifi_aware_enable_config_destroy
*/
int wifi_aware_enable_config_create(wifi_aware_enable_config_h *config);
* @brief TODO (can be removed) Destroy a configuration for Enable request.
* @since_tizen 6.0
* @param[in] config
- * @return 0 on success, otherwise a negative error value
- * @retval #WIFI_AWARE_ERROR_NONE
- * @see wifi_aware_enable_config_create
+ * @return 0 on success, otherwise a negative error value
+ * @retval #WIFI_AWARE_ERROR_NONE
+ * @see wifi_aware_enable_config_create
*/
int wifi_aware_enable_config_destroy(wifi_aware_enable_config_h config);
* @return 0 on success, otherwise a negative error value
* @retval #WIFI_AWARE_ERROR_NONE
*/
-int wifi_aware_publish_config_set_publish_type(wifi_aware_publish_config_h config, wifi_aware_publish_type_e publish_type);
+int wifi_aware_publish_config_set_type(wifi_aware_publish_config_h config, wifi_aware_publish_type_e publish_type);
/**
* @brief Set the name of the service.
* @since_tizen 6.0
* @param[in] config
- * @param[in] service_name
- * @param[in] len
+ * @param[in] service_name. It should be a null-terminated string.
* @return 0 on success, otherwise a negative error value
* @retval #WIFI_AWARE_ERROR_NONE
*/
* @return 0 on success, otherwise a negative error value
* @retval #WIFI_AWARE_ERROR_NONE
*/
-int wifi_aware_publish_config_set_match_filter(wifi_aware_publish_config_h config, unsigned char *match_filter, size_t len);
+int wifi_aware_publish_config_add_match_filter(wifi_aware_publish_config_h config, unsigned char *match_filter, size_t len);
+
+int wifi_aware_publish_config_clear_all_match_filters(wifi_aware_publish_config_h config);
/**
* @brief TODO (Need decision to add) Set whether notifying a termination of the service or not.
* @return 0 on success, otherwise a negative error value
* @retval #WIFI_AWARE_ERROR_NONE
*/
-int wifi_aware_subscribe_config_set_subscribe_type(wifi_aware_subscribe_config_h config, wifi_aware_subscribe_type_e subscribe_type);
+int wifi_aware_subscribe_config_set_type(wifi_aware_subscribe_config_h config, wifi_aware_subscribe_type_e subscribe_type);
/**
* @brief
* @since_tizen 6.0
* @param[in] config
- * @param[in] service_name
- * @param[in] len
+ * @param[in] service_name. It should be a null-terminated string.
* @return 0 on success, otherwise a negative error value
* @retval #WIFI_AWARE_ERROR_NONE
*/
*/
int wifi_aware_subscribe_config_set_match_filter(wifi_aware_subscribe_config_h config, unsigned char *match_filter, size_t len);
+int wifi_aware_subscribe_config_clear_all_match_filters(wifi_aware_subscribe_config_h config);
+
/**
* @brief
* @since_tizen 6.0
typedef void(*wifi_aware_discovery_result_cb)(
unsigned int subscribe_id, wifi_aware_peer_h peer,
unsigned char *service_specific_info, size_t service_specific_info_len,
- unsigned char *match_filter, size_t match_filter_len);
+ unsigned char *match_filter, size_t match_filter_len, void *user_data);
/**
* @brief
* @since_tizen 6.0
* @param[in] wifi_aware
* @param[in] callback
+ * @param[in] user_data
* @return 0 on success, otherwise a negative error value
* @retval #WIFI_AWARE_ERROR_NONE
*/
int wifi_aware_set_discovery_result_cb(wifi_aware_h wifi_aware,
- wifi_aware_discovery_result_cb callback);
+ wifi_aware_discovery_result_cb callback, void *user_data);
/**
* @brief
${WIFI_AWARE_PATH}/wifi-aware-config.c
${WIFI_AWARE_PATH}/wifi-aware-enable.c
${WIFI_AWARE_PATH}/wifi-aware-gdbus.c
- ${WIFI_AWARE_PATH}/wifi-aware-gdbus-signal-adapter.c
${WIFI_AWARE_PATH}/wifi-aware-peer.c
${WIFI_AWARE_PATH}/wifi-aware-publish.c
${WIFI_AWARE_PATH}/wifi-aware-private.c
g_free(parameters_debug_str);\
} while (0)
-typedef enum {
- WIFI_AWARE_GDBUS_SIGNAL,
-
- WIFI_AWARE_GDBUS_SIGNAL_MAX,
-} wifi_aware_gdbus_signal_e;
-
-typedef void (*wifi_aware_gdbus_signal_callback)(const gchar *key,
- GVariant *value,
- gpointer user_data);
-
-int wifi_aware_gdbus_signal_adapter_create();
-void wifi_aware_gdbus_signal_adapter_set_cb(
- wifi_aware_gdbus_signal_e type,
- wifi_aware_gdbus_signal_callback cb,
- gpointer user_data);
-void wifi_aware_gdbus_signal_adapter_invoke_cb(const gchar *key,
- GVariant *value,
- wifi_aware_gdbus_signal_e type);
-
-int wifi_aware_gdbus_signal_adapter_destroy();
-
-void wifi_aware_gdbus_unsubscribe_signal(guint subscribe_id);
-
-GVariant *wifi_aware_dbus_method_call_sync(const char *interface_name,
- const char *method,
- GVariant *params,
- GError **error);
-
int wifi_aware_gdbus_init();
int wifi_aware_gdbus_deinit();
+void wifi_aware_gdbus_register_signal();
+
int wifi_aware_gdbus_enable(wifi_aware_h wifi_aware,
wifi_aware_enable_request_s *req, GAsyncReadyCallback cb);
int wifi_aware_gdbus_publish(wifi_aware_h wifi_aware, int client_id,
extern "C" {
#endif
+int wifi_aware_peer_create(wifi_aware_peer_h *peer, unsigned int peer_id);
+
#ifdef __cplusplus
}
#endif
#define __TIZEN_NET_WIFI_AWARE_PRIAVTE_H__
#include <tizen.h>
+#include <gio/gio.h>
#include "wifi-aware.h"
#include "wifi-aware-log.h"
extern "C" {
#endif
+// TODO
+#define WIFI_AWARE_HANDLE_LOCK
+#define WIFI_AWARE_HANDLE_UNLOCK
const char *_wifi_aware_convert_error_type_to_string(wifi_aware_error_e err);
bool _wifi_aware_handle_is_valid(wifi_aware_h wifi_aware);
int _wifi_aware_subscribe_request(wifi_aware_h wifi_aware,
wifi_aware_subscribe_config_h config);
+void _set_discovery_result_cb(wifi_aware_h wifi_aware,
+ wifi_aware_discovery_result_cb callback, void *user_data);
+
+void _mac_address_changed(GDBusConnection *connection,
+ const gchar *object_path, GVariant *parameters);
+void _service_discovered(GDBusConnection *connection,
+ const gchar *object_path, GVariant *parameters);
+
#ifdef __cplusplus
}
+++ /dev/null
-/* Intelligent Network Monitoring(WIFI_AWARE)
- *
- * Copyright (c) 2019 Samsung Electronics Co., Ltd. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-
-/*****************************************************************************
- * Standard headers
- *****************************************************************************/
-#include <glib.h>
-#include <gio/gio.h>
-/*****************************************************************************
- * System headers
- *****************************************************************************/
-
-/*****************************************************************************
- * Wi-Fi Aware headers
- *****************************************************************************/
-#include "wifi-aware-log.h"
-#include "wifi-aware.h"
-#include "wifi-aware-utils.h"
-#include "wifi-aware-gdbus.h"
-/*****************************************************************************
- * Macros and Typedefs
- *****************************************************************************/
-
-typedef struct {
- guint signal_sub_id;
- wifi_aware_gdbus_signal_callback cbs[WIFI_AWARE_GDBUS_SIGNAL_MAX];
- void *cbs_user_data[WIFI_AWARE_GDBUS_SIGNAL_MAX];
-} wifi_aware_gdbus_signal_adapter_s;
-
-/*****************************************************************************
- * Global Variables
- *****************************************************************************/
-
-static wifi_aware_gdbus_signal_adapter_s *g_gdbus_signal_adapter = NULL;
-
-/*****************************************************************************
- * Local Functions Definition
- *****************************************************************************/
-
-int wifi_aware_gdbus_signal_adapter_create()
-{
-
- if (g_gdbus_signal_adapter) {
- WIFI_AWARE_LOGI("DBus signal adapter is already created");
- return WIFI_AWARE_ERROR_OPERATION_FAILED;
- }
-
- g_gdbus_signal_adapter = g_try_malloc0(sizeof(wifi_aware_gdbus_signal_adapter_s));
- if (!g_gdbus_signal_adapter) {
- WIFI_AWARE_LOGI("Failed to create DBus signal adapter");
- return WIFI_AWARE_ERROR_OUT_OF_MEMORY;
- }
-
- return WIFI_AWARE_ERROR_NONE;
-}
-
-void wifi_aware_gdbus_signal_adapter_set_cb(
- wifi_aware_gdbus_signal_e type,
- wifi_aware_gdbus_signal_callback cb,
- gpointer user_data)
-{
- if (!g_gdbus_signal_adapter || !cb)
- return;
-
- g_gdbus_signal_adapter->cbs[type] = cb;
- g_gdbus_signal_adapter->cbs_user_data[type] = user_data;
-
- return;
-}
-
-void wifi_aware_gdbus_signal_adapter_invoke_cb(const gchar *key,
- GVariant *value,
- wifi_aware_gdbus_signal_e type)
-{
- if (!g_gdbus_signal_adapter || !(g_gdbus_signal_adapter->cbs[type])) {
- WIFI_AWARE_LOGI("DBus signal adapter is not created/assigned yet");
- return;
- }
-
- g_gdbus_signal_adapter->cbs[type](key,
- value,
- g_gdbus_signal_adapter->cbs_user_data[type]);
-
- return;
-}
-
-int wifi_aware_gdbus_signal_adapter_destroy()
-{
- if (!g_gdbus_signal_adapter) {
- WIFI_AWARE_LOGI("DBus signal adapter is not created yet");
- return WIFI_AWARE_ERROR_OPERATION_FAILED;
- }
-
- g_free(g_gdbus_signal_adapter);
- g_gdbus_signal_adapter = NULL;
-
- return 0;
-}
#include "wifi-aware-log.h"
#include "wifi-aware.h"
+#include "wifi-aware-private.h"
#include "wifi-aware-utils.h"
#include "wifi-aware-gdbus.h"
typedef struct {
GDBusConnection *connection;
GCancellable *cancellable;
+ guint signal_subscribe_id;
} wifi_aware_gdbus_data;
-static wifi_aware_gdbus_data gdbus_data = {NULL, NULL};
-
+static wifi_aware_gdbus_data gdbus_data = {NULL, NULL, -1};
+
+static struct {
+ const char *interface;
+ const char *member;
+ void (*function) (GDBusConnection *connection,
+ const gchar *object_path,
+ GVariant *parameters);
+} wifi_aware_gdbus_signal_map[] = {
+ {
+ WIFI_AWARE_DISCOVERY_INTERFACE,
+ "MacAddressChanged",
+ _mac_address_changed
+ },
+ {
+ WIFI_AWARE_DISCOVERY_INTERFACE,
+ "ServiceDiscovered",
+ _service_discovered
+ },
+ {
+ NULL,
+ NULL,
+ NULL
+ }
+};
static int __wifi_aware_error_string_to_enum(const char *error)
{
return WIFI_AWARE_ERROR_OPERATION_FAILED;
}
-int wifi_aware_gdbus_init()
+static void __gdbus_signal_cb(GDBusConnection *connection,
+ const gchar *sender, const gchar *object_path,
+ const gchar *interface, const gchar *signal,
+ GVariant *parameters, gpointer user_data)
+{
+ int i = 0;
+
+ WIFI_AWARE_LOGD("Signal Name [%s]", signal);
+ DBUS_DEBUG_VARIANT(parameters);
+
+ for (i = 0; wifi_aware_gdbus_signal_map[i].member != NULL; ++i) {
+ if (!g_strcmp0(signal, wifi_aware_gdbus_signal_map[i].member) &&
+ !g_strcmp0(interface, wifi_aware_gdbus_signal_map[i].interface) &&
+ wifi_aware_gdbus_signal_map[i].function != NULL) {
+ wifi_aware_gdbus_signal_map[i].function(connection, object_path, parameters);
+ break;
+ }
+ }
+}
+
+void wifi_aware_gdbus_register_signal()
+{
+ __WIFI_AWARE_FUNC_ENTER__;
+
+ gdbus_data.signal_subscribe_id = g_dbus_connection_signal_subscribe(
+ gdbus_data.connection,
+ WIFI_AWARE_INTERFACE,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ G_DBUS_SIGNAL_FLAGS_NONE,
+ __gdbus_signal_cb,
+ NULL,
+ NULL);
+
+ WIFI_AWARE_LOGI("Signal subscribe ID %u", gdbus_data.signal_subscribe_id);
+ __WIFI_AWARE_FUNC_ENTER__;
+}
+
+int wifi_aware_gdbus_init(wifi_aware_h wifi_aware)
{
GError *error = NULL;
- int ret;
__WIFI_AWARE_FUNC_ENTER__;
if (gdbus_data.connection != NULL) {
}
gdbus_data.cancellable = g_cancellable_new();
- ret = wifi_aware_gdbus_signal_adapter_create();
- if (ret != WIFI_AWARE_ERROR_NONE) {
- WIFI_AWARE_LOGI("Failed to create adapter"); //LCOV_EXCL_LINE
- g_object_unref(gdbus_data.connection);
- gdbus_data.connection = NULL;
- return -1;
- }
-
- /* TODO: subscribe signal */
-
__WIFI_AWARE_FUNC_EXIT__;
- return 0;
+ return WIFI_AWARE_ERROR_NONE;
}
int wifi_aware_gdbus_deinit()
{
- int ret;
-
__WIFI_AWARE_FUNC_ENTER__;
+
if (!gdbus_data.connection) {
- WIFI_AWARE_LOGI("There's no gdbus connection"); //LCOV_EXCL_LINE
- __WIFI_AWARE_FUNC_EXIT__; //LCOV_EXCL_LINE
- return 0; //LCOV_EXCL_LINE
+ WIFI_AWARE_LOGI("There's no gdbus connection");
+ __WIFI_AWARE_FUNC_EXIT__;
+ return WIFI_AWARE_ERROR_OPERATION_FAILED;
}
- ret = wifi_aware_gdbus_signal_adapter_destroy();
- if (!ret)
- WIFI_AWARE_LOGI("Failed to destroy adapter"); //LCOV_EXCL_LINE
-
/* TODO: unsubscribe signal */
g_object_unref(gdbus_data.connection);
gdbus_data.connection = NULL;
__WIFI_AWARE_FUNC_EXIT__;
- return 0;
+ return WIFI_AWARE_ERROR_NONE;
}
static int __wifi_aware_dbus_method_call_async(const char *interface_name,
*
*/
-/**
- * This file implements Wi-Fi Aware peer global.
- *
- * @file wifi-aware-peer.c
- * @author Jiung Yu (jiung.yu@samsung.com)
- */
-
-
-/*****************************************************************************
- * Standard headers
- *****************************************************************************/
#include <glib.h>
-/*****************************************************************************
- * System headers
- *****************************************************************************/
-/*****************************************************************************
- * Wi-Fi Aware headers
- *****************************************************************************/
#include "wifi-aware.h"
#include "wifi-aware-log.h"
#include "wifi-aware-peer.h"
-/*****************************************************************************
- * Macros and Typedefs
- *****************************************************************************/
-
-/*****************************************************************************
- * Global Variables
- *****************************************************************************/
-/*****************************************************************************
- * Local Functions Definition
- *****************************************************************************/
+int wifi_aware_peer_create(wifi_aware_peer_h *peer, unsigned int peer_id)
+{
+ // Check peer_id validation
+ return WIFI_AWARE_ERROR_NONE;
+}
#include "wifi-aware-gdbus.h"
#include "wifi-aware-log.h"
+#include "wifi-aware-peer.h"
#include "wifi-aware-private.h"
#include "wifi-aware-utils.h"
void *published_cb_data;
wifi_aware_subscribed_cb subscribed_cb;
void *subscribed_cb_data;
+
+ wifi_aware_discovery_result_cb discovered_cb;
+ void *discovered_cb_data;
} wifi_aware_s;
/**
} nan_manager_error_e;
static bool __is_init = false;
+static GList *__wifi_aware_handle_list = NULL;
const char *_wifi_aware_convert_error_type_to_string(wifi_aware_error_e err)
{
return WIFI_AWARE_ERROR_OUT_OF_MEMORY;
}
+ WIFI_AWARE_HANDLE_LOCK;
+ __wifi_aware_handle_list = g_list_append(__wifi_aware_handle_list, wifi_aware);
+ WIFI_AWARE_HANDLE_UNLOCK;
+
WIFI_AWARE_LOGI("Crate new handle [%p]", *wifi_aware);
return WIFI_AWARE_ERROR_NONE;
}
ret = wifi_aware_gdbus_init();
RET_VAL_IF(ret != WIFI_AWARE_ERROR_NONE, ret, "wifi_aware_gdbus_init() failed");
- /*
- ret = wifi_aware_gdbus_register_signal();
- RET_VAL_IF_ERR(ret, ret, "wifi_aware_gdbus_register_signal() failed");
- */
+ wifi_aware_gdbus_register_signal();
__is_init = true;
return WIFI_AWARE_ERROR_NONE;
aware->enabled_cb_data = user_data;
}
-
void _add_published_callback(wifi_aware_h wifi_aware,
wifi_aware_published_cb callback, void *user_data)
{
{
wifi_aware_s *aware = (wifi_aware_s *)wifi_aware;
wifi_aware_publish_request_s *req = (wifi_aware_publish_request_s *)config;
- return wifi_aware_gdbus_publish(wifi_aware, aware->client_id, req, __publish_request_reply);
+ return wifi_aware_gdbus_publish(wifi_aware, aware->client_id,
+ req, __publish_request_reply);
}
int _wifi_aware_subscribe_request(wifi_aware_h wifi_aware,
{
wifi_aware_s *aware = (wifi_aware_s *)wifi_aware;
wifi_aware_subscribe_request_s *req = (wifi_aware_subscribe_request_s *)config;
- return wifi_aware_gdbus_subscribe(wifi_aware, aware->client_id, req, __subscribe_request_reply);
+ return wifi_aware_gdbus_subscribe(wifi_aware, aware->client_id,
+ req, __subscribe_request_reply);
+}
+
+void _set_discovery_result_cb(wifi_aware_h wifi_aware,
+ wifi_aware_discovery_result_cb callback, void *user_data)
+{
+ __WIFI_AWARE_FUNC_ENTER__;
+ wifi_aware_s *aware = (wifi_aware_s *)wifi_aware;
+
+ aware->discovered_cb = callback;
+ aware->discovered_cb_data = user_data;
+}
+
+void _mac_address_changed(GDBusConnection *connection,
+ const gchar *object_path, GVariant *parameters)
+{
+ __WIFI_AWARE_FUNC_ENTER__;
+ WIFI_AWARE_LOGD("MAC Address is changed");
+}
+
+static void __parsing_service_discovered_event(GVariant *parameters,
+ unsigned int *sub_id, unsigned int *peer_id,
+ unsigned char *specific_info, size_t *specific_info_len,
+ unsigned char *match_filters, size_t *match_filters_len)
+{
+ gchar *info_value = NULL;
+ gchar *filter_value = NULL;
+
+ g_variant_get(parameters, "(uusqsq)", sub_id, peer_id,
+ info_value, specific_info_len,
+ filter_value, match_filters_len);
+
+ memcpy(specific_info, info_value, *specific_info_len);
+ memcpy(match_filters, filter_value, *match_filters_len);
+}
+
+void _service_discovered(GDBusConnection *connection,
+ const gchar *object_path, GVariant *parameters)
+{
+ __WIFI_AWARE_FUNC_ENTER__;
+
+ WIFI_AWARE_LOGD("NAN Service is discovered");
+
+ unsigned int sub_id = 0;
+ unsigned int peer_id = 0;
+ unsigned char *specific_info = NULL;
+ size_t specific_info_len = 0;
+ unsigned char *match_filters = NULL;
+ size_t match_filters_len = 0;
+
+ wifi_aware_h peer = NULL;
+ GList *list;
+
+ __parsing_service_discovered_event(parameters,
+ &sub_id, &peer_id,
+ specific_info, &specific_info_len,
+ match_filters, &match_filters_len);
+
+ if (sub_id == 0) {
+ WIFI_AWARE_LOGE("Invalid subscribe ID");
+ return;
+ }
+
+ WIFI_AWARE_LOGD("Peer ID: %u", peer_id);
+ if (wifi_aware_peer_create(&peer, peer_id) != WIFI_AWARE_ERROR_NONE) {
+ WIFI_AWARE_LOGE("Fail to create peer");
+ return;
+ }
+
+ // TODO: Add peer list to wifi_aware_s
+
+ // TODO: Need to consider thread safety
+ for (list = __wifi_aware_handle_list; list; list = list->next) {
+ wifi_aware_s *aware = (wifi_aware_s *)list;
+ if (aware->discovered_cb)
+ aware->discovered_cb(sub_id, peer,
+ specific_info, specific_info_len,
+ match_filters, match_filters_len,
+ aware->discovered_cb_data);
+ }
}
}
API int wifi_aware_set_discovery_result_cb(wifi_aware_h wifi_aware,
- wifi_aware_discovery_result_cb callback)
+ wifi_aware_discovery_result_cb callback, void *user_data)
{
__WIFI_AWARE_FUNC_ENTER__;
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
RET_ERR_IF_HANDLE_IS_NOT_VALID_OR_NOT_INITIALIZED(wifi_aware);
+ _set_discovery_result_cb(wifi_aware, callback, user_data);
__WIFI_AWARE_FUNC_EXIT__;
return WIFI_AWARE_ERROR_NONE;
}
RET_VAL_IF(wifi_aware == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER,
"parameter(wifi_aware) is NULL");
- ret = _wifi_aware_init();
- RET_VAL_IF(ret != WIFI_AWARE_ERROR_NONE, ret, "_wifi_aware_init failed [%s]",
- _wifi_aware_convert_error_type_to_string(ret));
-
ret = _wifi_aware_handle_create(wifi_aware);
RET_VAL_IF(ret != WIFI_AWARE_ERROR_NONE, ret, "_wifi_aware_handle_create failed [%s]",
_wifi_aware_convert_error_type_to_string(ret));
+ ret = _wifi_aware_init(wifi_aware);
+ RET_VAL_IF(ret != WIFI_AWARE_ERROR_NONE, ret, "_wifi_aware_init failed [%s]",
+ _wifi_aware_convert_error_type_to_string(ret));
+
__WIFI_AWARE_FUNC_EXIT__;
return WIFI_AWARE_ERROR_NONE;
}
{
__WIFI_AWARE_FUNC_ENTER__;
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
+ RET_ERR_IF_HANDLE_IS_NOT_VALID_OR_NOT_INITIALIZED(wifi_aware);
__WIFI_AWARE_FUNC_EXIT__;
return WIFI_AWARE_ERROR_NONE;
static void __discovery_result_cb(unsigned int subscribe_id, wifi_aware_peer_h peer,
unsigned char *service_specific_info, size_t service_specific_info_len,
- unsigned char *match_filter, size_t match_filter_len)
+ unsigned char *match_filter, size_t match_filter_len, void *user_data)
{
printf("Find A Wi-Fi Aware Peer\n");
printf("Subscribe ID: %u\n", subscribe_id);
RET_IF_LOOP_IS_NULL();
RET_IF_HANDLE_IS_NULL();
- ret = wifi_aware_set_discovery_result_cb(g_wifi_aware_handle, __discovery_result_cb);
+ ret = wifi_aware_set_discovery_result_cb(g_wifi_aware_handle, __discovery_result_cb, NULL);
__print_result(ret, "wifi_aware_set_discovery_result_cb");
ret = wifi_aware_subscribe_config_create(&config);