Do not use wifi_aware_h in publish/subscribe functions
authorCheoleun Moon <chleun.moon@samsung.com>
Wed, 12 Feb 2020 23:59:22 +0000 (08:59 +0900)
committerCheoleun Moon <chleun.moon@samsung.com>
Wed, 12 Feb 2020 23:59:22 +0000 (08:59 +0900)
17 files changed:
include/wifi-aware.h
src/CMakeLists.txt
src/include/wifi-aware-gdbus.h
src/include/wifi-aware-peer.h
src/include/wifi-aware-private.h
src/include/wifi-aware-publish-private.h [deleted file]
src/include/wifi-aware-subscribe-private.h [deleted file]
src/include/wifi-aware-utils.h
src/wifi-aware-config.c [deleted file]
src/wifi-aware-enable.c [deleted file]
src/wifi-aware-gdbus.c
src/wifi-aware-peer.c
src/wifi-aware-private.c
src/wifi-aware-publish.c [deleted file]
src/wifi-aware-subscribe.c [deleted file]
src/wifi-aware.c
test/wifi-aware-test.c

index 1fefe05..ccdcbef 100644 (file)
@@ -160,12 +160,13 @@ int wifi_aware_deinitialize(wifi_aware_h wifi_aware);
 /**
  * @brief Create a Publish request.
  * @since_tizen 6.0
+ * @param[in] wifi_aware
  * @param[out] publish
  * @return     0 on success, otherwise a negative error value
  * @retval     #WIFI_AWARE_ERROR_NONE
  * @see        wifi_aware_publish_destroy
  */
-int wifi_aware_publish_create(wifi_aware_publish_h *publish);
+int wifi_aware_publish_create(wifi_aware_h wifi_aware, wifi_aware_publish_h *publish);
 
 /**
  * @brief Destroy a Publish request.
@@ -185,7 +186,7 @@ int wifi_aware_publish_destroy(wifi_aware_publish_h publish);
  * @retval     #WIFI_AWARE_ERROR_NONE
  * @see        wifi_aware_subscribe_destroy
  */
-int wifi_aware_subscribe_create(wifi_aware_subscribe_h *subscribe);
+int wifi_aware_subscribe_create(wifi_aware_h wifi_aware, wifi_aware_subscribe_h *subscribe);
 
 /**
  * @brief Destroy a Subscribe request.
@@ -400,46 +401,41 @@ typedef void(*wifi_aware_published_cb)(wifi_aware_error_e error,
 /**
  * @brief Publish a Wi-Fi Aware service so that neighboring devices can find it.
  * @since_tizen 6.0
- * @param[in] wifi_aware
  * @param[in] publish
  * @param[in] callback
  * @param[in] user_data
  * @return     0 on success, otherwise a negative error value
  * @retval     #WIFI_AWARE_ERROR_NONE
  */
-int wifi_aware_start_publish(wifi_aware_h wifi_aware,
-               wifi_aware_publish_h publish,
+int wifi_aware_start_publish(wifi_aware_publish_h publish,
                wifi_aware_published_cb callback, void *user_data);
 
 /**
  * @brief Cancel a published Wi-Fi Aware service so that it cannot be found.
  * @since_tizen 6.0
- * @param[in] wifi_aware
  * @param[in] publish
  * @return     0 on success, otherwise a negative error value
  * @retval     #WIFI_AWARE_ERROR_NONE
  */
-int wifi_aware_cancel_publish(wifi_aware_h wifi_aware, wifi_aware_publish_h publish);
+int wifi_aware_cancel_publish(wifi_aware_publish_h publish);
 
 /**
  * @brief Update the configuration for a Wi-Fi Aware service that has already been published.
  * @since_tizen 6.0
- * @param[in] wifi_aware
  * @param[in] publish
  * @param[in] callback
  * @param[in] user_data
  * @return     0 on success, otherwise a negative error value
  * @retval     #WIFI_AWARE_ERROR_NONE
  */
-int wifi_aware_update_publish(wifi_aware_h wifi_aware,
-               wifi_aware_publish_h publish,
+int wifi_aware_update_publish(wifi_aware_publish_h publish,
                wifi_aware_published_cb callback, void *user_data);
 
 /**
  * @brief
  * @since_tizen 6.0
  * @param[in] error
- * @param[in] subscribe_id
+ * @param[in] subscribe
  * @param[in] user_data
  * @return     0 on success, otherwise a negative error value
  * @retval     #WIFI_AWARE_ERROR_NONE
@@ -450,79 +446,72 @@ typedef void(*wifi_aware_subscribed_cb)(wifi_aware_error_e error,
 /**
  * @brief Start to find Wi-Fi Aware services.
  * @since_tizen 6.0
- * @param[in] wifi_aware
  * @param[in] subscribe
  * @param[in] callback
  * @param[in] user_data
  * @return     0 on success, otherwise a negative error value
  * @retval     #WIFI_AWARE_ERROR_NONE
  */
-int wifi_aware_start_subscribe(wifi_aware_h wifi_aware, wifi_aware_subscribe_h subscribe,
+int wifi_aware_start_subscribe(wifi_aware_subscribe_h subscribe,
                wifi_aware_subscribed_cb callback, void *user_data);
 
 /**
  * @brief Stop finding Wi-Fi Aware services.
  * @since_tizen 6.0
- * @param[in] wifi_aware
  * @param[in] subscribe
  * @return     0 on success, otherwise a negative error value
  * @retval     #WIFI_AWARE_ERROR_NONE
  */
-int wifi_aware_cancel_subscribe(wifi_aware_h wifi_aware, wifi_aware_subscribe_h subscribe);
+int wifi_aware_cancel_subscribe(wifi_aware_subscribe_h subscribe);
 
 /**
  * @brief Update the configuration for a Wi-Fi Aware service that has already been subscribed.
  * @since_tizen 6.0
- * @param[in] wifi_aware
  * @param[in] subscribe
  * @param[in] callback
  * @param[in] user_data
  * @return     0 on success, otherwise a negative error value
  * @retval     #WIFI_AWARE_ERROR_NONE
  */
-int wifi_aware_update_subscribe(wifi_aware_h wifi_aware,
-               wifi_aware_subscribe_h subscribe,
+int wifi_aware_update_subscribe(wifi_aware_subscribe_h subscribe,
                wifi_aware_subscribed_cb callback, void *user_data);
 
 /**
  * @brief
  * @since_tizen 6.0
- * @param[in] subscribe_id
  * @param[in] peer
  * @param[in] service_specific_info
  * @param[in] service_specific_info_len
  * @return     0 on success, otherwise a negative error value
  * @retval     #WIFI_AWARE_ERROR_NONE
  */
-typedef void(*wifi_aware_discovery_result_cb)(
-               unsigned int subscribe_id, wifi_aware_peer_h peer,
+typedef void(*wifi_aware_discovery_result_cb)(wifi_aware_subscribe_h subscribe,
+               wifi_aware_peer_h peer,
                unsigned char *service_specific_info, size_t service_specific_info_len,
                void *user_data);
 
 /**
  * @brief
  * @since_tizen 6.0
- * @param[in] wifi_aware
+ * @param[in] subscribe
  * @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,
+int wifi_aware_set_discovery_result_cb(wifi_aware_subscribe_h subscribe,
                wifi_aware_discovery_result_cb callback, void *user_data);
 
 /**
  * @brief
  * @since_tizen 6.0
- * @param[in] wifi_aware
  * @param[in] peer
  * @param[in] message
  * @param[in] len
  * @return     0 on success, otherwise a negative error value
  * @retval     #WIFI_AWARE_ERROR_NONE
  */
-int wifi_aware_send_message(wifi_aware_h wifi_aware,
-               wifi_aware_peer_h peer, unsigned char *message, size_t len);
+int wifi_aware_send_message(wifi_aware_peer_h peer, unsigned char *message, size_t len);
 
 
 /**
@@ -535,7 +524,7 @@ int wifi_aware_send_message(wifi_aware_h wifi_aware,
  * @retval     #WIFI_AWARE_ERROR_NONE
  */
 typedef void(*wifi_aware_received_message_cb)(wifi_aware_peer_h peer,
-               unsigned char *message, size_t len);
+               unsigned char *message, size_t len, void *user_data);
 
 /**
  * @brief TODO: This callback is registered to wifi_aware handle, not publish/subscribe sessions
@@ -546,7 +535,7 @@ typedef void(*wifi_aware_received_message_cb)(wifi_aware_peer_h peer,
  * @retval     #WIFI_AWARE_ERROR_NONE
  */
 int wifi_aware_set_received_message_cb(wifi_aware_h wifi_aware,
-               wifi_aware_received_message_cb callback);
+               wifi_aware_received_message_cb callback, void *user_data);
 
 
 // Can APIs to get peer information using wifi_aware_peer_h?
@@ -560,10 +549,12 @@ int wifi_aware_set_received_message_cb(wifi_aware_h wifi_aware,
 //
 
 // What should be used for the first parameter???
+/*
 typedef void(*wifi_aware_changed_mac_address_cb)(unsigned char *mac, size_t len);
 
 int wifi_aware_set_changed_mac_address_cb(wifi_aware_h wifi_aware,
                wifi_aware_changed_mac_address_cb callback);
+*/
 
 /**
  * @}
index e91fafc..777c65f 100644 (file)
@@ -23,13 +23,9 @@ INCLUDE_DIRECTORIES(
 
 SET(WIFI_AWARE_SOURCES
     ${WIFI_AWARE_PATH}/wifi-aware.c
-    ${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-peer.c
-    ${WIFI_AWARE_PATH}/wifi-aware-publish.c
     ${WIFI_AWARE_PATH}/wifi-aware-private.c
-    ${WIFI_AWARE_PATH}/wifi-aware-subscribe.c
     )
 
 ADD_DEFINITIONS("-fvisibility=default")
index dbe23a2..5524c10 100644 (file)
@@ -44,10 +44,15 @@ extern "C" {
        } while (0)
 
 
+typedef enum {
+       SERVICE_DISCOVERED_SIGNAL = 0,
+} wifi_aware_signal_e;
+
 int wifi_aware_gdbus_init();
 int wifi_aware_gdbus_deinit();
 
-void wifi_aware_gdbus_register_signal();
+guint wifi_aware_gdbus_register_signal(wifi_aware_signal_e signal,
+               GDBusSignalCallback callback, void *user_data);
 
 int wifi_aware_gdbus_enable(wifi_aware_h wifi_aware,
                wifi_aware_enable_request_s *req, GAsyncReadyCallback cb);
index c661038..c3ca648 100644 (file)
@@ -23,7 +23,7 @@
 extern "C" {
 #endif
 
-int wifi_aware_peer_create(wifi_aware_peer_h *peer, unsigned int peer_id);
+int _wifi_aware_peer_create(wifi_aware_peer_h *peer, unsigned int peer_id);
 
 #ifdef __cplusplus
 }
index e4b774f..21aa696 100644 (file)
@@ -21,6 +21,7 @@
 #include <gio/gio.h>
 
 #include "wifi-aware.h"
+#include "wifi-aware-config.h"
 #include "wifi-aware-log.h"
 
 #ifdef __cplusplus
@@ -32,30 +33,56 @@ extern "C" {
 #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_handle_create(wifi_aware_h *wifi_aware);
 int _wifi_aware_init();
-void _add_enabled_callback(wifi_aware_h wifi_aware,
-               wifi_aware_enabled_cb callback, void *user_data);
-void _add_subscribed_callback(wifi_aware_h wifi_aware,
-               wifi_aware_subscribed_cb, void *user_data);
+void _add_enabled_callback(wifi_aware_h wifi_aware, wifi_aware_enabled_cb callback, void *user_data);
 int _wifi_aware_enable_request(wifi_aware_h wifi_aware);
-int _wifi_aware_publish_request(wifi_aware_h wifi_aware,
-               wifi_aware_publish_h publish);
-int _wifi_aware_cancel_publish_request(wifi_aware_h wifi_aware, wifi_aware_publish_h publish);
-int _wifi_aware_update_publish_request(wifi_aware_h wifi_aware, wifi_aware_publish_h publish);
-int _wifi_aware_subscribe_request(wifi_aware_h wifi_aware, wifi_aware_subscribe_h subscribe);
-int _wifi_aware_update_subscribe_request(wifi_aware_h wifi_aware, wifi_aware_subscribe_h subscribe);
-int _wifi_aware_cancel_subscribe_request(wifi_aware_h wifi_aware, wifi_aware_subscribe_h subscribe);
 
-void _set_discovery_result_cb(wifi_aware_h wifi_aware,
-               wifi_aware_discovery_result_cb callback, void *user_data);
+int _wifi_aware_publish_handle_create(wifi_aware_h wifi_aware, wifi_aware_publish_h *publish);
+void _wifi_aware_publish_request_set_default_values(wifi_aware_publish_h publish);
+void _wifi_aware_publish_set_ttl(wifi_aware_publish_h publish, unsigned short ttl);
+void _wifi_aware_publish_set_type(wifi_aware_publish_h publish,
+               wifi_aware_publish_type_e publish_type);
+void _wifi_aware_publish_set_service_name(wifi_aware_publish_h publish, const char *service_name);
+void _wifi_aware_publish_set_service_specific_info(wifi_aware_publish_h publish,
+               unsigned char *service_specific_info, size_t len);
+void _wifi_aware_publish_set_match_filter(wifi_aware_publish_h publish,
+               unsigned char *match_filter, size_t len);
+void _wifi_aware_publish_set_enable_termination_event(wifi_aware_publish_h publish, bool enable);
+void _wifi_aware_publish_set_enable_ranging(wifi_aware_publish_h publish,      bool enable);
+int _wifi_aware_publish_request(wifi_aware_publish_h publish,
+               wifi_aware_published_cb callback, void *user_data);
+int _wifi_aware_cancel_publish_request(wifi_aware_publish_h publish);
+int _wifi_aware_update_publish_request(wifi_aware_publish_h publish,
+               wifi_aware_published_cb callback, void *user_data);
+wifi_aware_publish_request_s *_wifi_aware_publish_get_request(wifi_aware_publish_h publish_handle);
+unsigned int _wifi_aware_publish_get_id(wifi_aware_publish_h publish);
 
-void _mac_address_changed(GDBusConnection *connection,
-               const gchar *object_path, GVariant *parameters);
-void _service_discovered(GDBusConnection *connection,
-               const gchar *object_path, GVariant *parameters);
+int _wifi_aware_subscribe_handle_create(wifi_aware_h wifi_aware, wifi_aware_subscribe_h *subscribe);
+void _wifi_aware_subscribe_set_default_values(wifi_aware_subscribe_h subscribe);
+void _wifi_aware_subscribe_set_ttl(wifi_aware_subscribe_h subscribe, unsigned short ttl);
+void _wifi_aware_subscribe_set_type(wifi_aware_subscribe_h subscribe,
+               wifi_aware_subscribe_type_e subscribe_type);
+void _wifi_aware_subscribe_set_service_name(wifi_aware_subscribe_h subscribe, const char *service_name);
+void _wifi_aware_subscribe_set_service_specific_info(wifi_aware_subscribe_h subscribe,
+               unsigned char *service_specific_info, size_t len);
+void _wifi_aware_subscribe_set_match_filter(wifi_aware_subscribe_h subscribe,
+               unsigned char *match_filter, size_t len);
+void _wifi_aware_subscribe_set_enable_termination_event(wifi_aware_subscribe_h subscribe, bool enable);
+int _wifi_aware_subscribe_request(wifi_aware_subscribe_h subscribe,
+               wifi_aware_subscribed_cb callback, void *user_data);
+int _wifi_aware_cancel_subscribe_request(wifi_aware_subscribe_h subscribe);
+int _wifi_aware_update_subscribe_request(wifi_aware_subscribe_h subscribe,
+               wifi_aware_subscribed_cb callback, void *user_data);
+wifi_aware_subscribe_request_s *_wifi_aware_subscribe_get_request(wifi_aware_subscribe_h subscribe_handle);
+unsigned int _wifi_aware_subscribe_get_id(wifi_aware_subscribe_h subscribe);
+
+void _wifi_aware_set_discovery_result_cb(wifi_aware_subscribe_h subscribe,
+               wifi_aware_discovery_result_cb callback, void *user_data);
 
+//void _mac_address_changed(GDBusConnection *connection,
+//             const gchar *object_path, GVariant *parameters);
 
 #ifdef __cplusplus
 }
diff --git a/src/include/wifi-aware-publish-private.h b/src/include/wifi-aware-publish-private.h
deleted file mode 100644 (file)
index abf30bc..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.
- *
-*/
-#ifndef __TIZEN_NET_WIFI_AWARE_PUBLISH_PRIVATE_H__
-#define __TIZEN_NET_WIFI_AWARE_PUBLISH_PRIVATE_H__
-
-#include <tizen.h>
-#include <gio/gio.h>
-
-#include "wifi-aware.h"
-#include "wifi-aware-config.h"
-#include "wifi-aware-log.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-wifi_aware_publish_request_s *_wifi_aware_publish_get_request(wifi_aware_publish_h publish_handle);
-unsigned int _wifi_aware_publish_get_id(wifi_aware_publish_h publish);
-void _wifi_aware_publish_set_id(wifi_aware_publish_h publish_handle, unsigned int publish_id);
-void _wifi_aware_publish_invoke_callback(wifi_aware_error_e error, wifi_aware_publish_h publish_handle);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __TIZEN_NET_WIFI_AWARE_PUBLISH_PRIVATE_H__ */
diff --git a/src/include/wifi-aware-subscribe-private.h b/src/include/wifi-aware-subscribe-private.h
deleted file mode 100644 (file)
index eb7ef1b..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.
- *
-*/
-#ifndef __TIZEN_NET_WIFI_AWARE_SUBSCRIBE_PRIVATE_H__
-#define __TIZEN_NET_WIFI_AWARE_SUBSCRIBE_PRIVATE_H__
-
-#include <tizen.h>
-#include <gio/gio.h>
-
-#include "wifi-aware.h"
-#include "wifi-aware-config.h"
-#include "wifi-aware-log.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-wifi_aware_subscribe_request_s *_wifi_aware_subscribe_get_request(wifi_aware_subscribe_h subscribe_handle);
-unsigned int _wifi_aware_subscribe_get_id(wifi_aware_subscribe_h subscribe);
-void _wifi_aware_subscribe_set_id(wifi_aware_subscribe_h subscribe_handle, unsigned int subscribe_id);
-void _wifi_aware_subscribe_invoke_callback(wifi_aware_error_e error, wifi_aware_subscribe_h subscribe_handle);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __TIZEN_NET_WIFI_AWARE_SUBSCRIBE_PRIVATE_H__ */
index 395f282..4c25271 100644 (file)
@@ -70,17 +70,6 @@ extern "C" {
                } \
        } while (0)
 
-
-#define RET_ERR_IF_HANDLE_IS_NOT_VALID_OR_NOT_INITIALIZED(arg)\
-    do {\
-        if (!arg) \
-            return WIFI_AWARE_ERROR_INVALID_PARAMETER;\
-        if (!_wifi_aware_handle_is_valid((arg))) {\
-            __WIFI_AWARE_FUNC_EXIT__;\
-            return WIFI_AWARE_ERROR_NOT_INITIALIZED;\
-        } \
-    } while (0)
-
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/wifi-aware-config.c b/src/wifi-aware-config.c
deleted file mode 100644 (file)
index 9c92f0b..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Wi-Fi Aware connection module
- *
- * 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.
- *
- */
-
-#include <glib.h>
-
-#include "wifi-aware.h"
-#include "wifi-aware-log.h"
-#include "wifi-aware-utils.h"
-
-
diff --git a/src/wifi-aware-enable.c b/src/wifi-aware-enable.c
deleted file mode 100644 (file)
index 2862207..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Wi-Fi 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.
- *
- */
-
-#include <glib.h>
-
-#include "wifi-aware.h"
-
-#include "wifi-aware-config.h"
-#include "wifi-aware-gdbus.h"
-#include "wifi-aware-log.h"
-#include "wifi-aware-private.h"
-#include "wifi-aware-utils.h"
-
-API int wifi_aware_enable(wifi_aware_h wifi_aware,
-               wifi_aware_enabled_cb callback, void *user_data)
-{
-       int ret = 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);
-
-       _add_enabled_callback(wifi_aware, callback, user_data);
-
-       ret = _wifi_aware_enable_request(wifi_aware);
-       RET_VAL_IF(ret != WIFI_AWARE_ERROR_NONE, ret, "_wifi_aware_enable_request");
-
-       __WIFI_AWARE_FUNC_EXIT__;
-       return WIFI_AWARE_ERROR_NONE;
-}
index a19cd11..48dfe6d 100644 (file)
 #include "wifi-aware-log.h"
 #include "wifi-aware.h"
 #include "wifi-aware-private.h"
-#include "wifi-aware-publish-private.h"
-#include "wifi-aware-subscribe-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, -1};
+static wifi_aware_gdbus_data gdbus_data = {NULL, NULL};
 
 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
         },
-        {
+               */
+        [SERVICE_DISCOVERED_SIGNAL] = {
                 WIFI_AWARE_DISCOVERY_INTERFACE,
                 "ServiceDiscovered",
-                _service_discovered
         },
-               {
-                       NULL,
-                       NULL,
-                       NULL
-               }
 };
 
-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()
+guint  wifi_aware_gdbus_register_signal(wifi_aware_signal_e signal,
+               GDBusSignalCallback callback, void *user_data)
 {
        __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__;
+       return g_dbus_connection_signal_subscribe(
+                       gdbus_data.connection,
+                       WIFI_AWARE_INTERFACE,
+                       wifi_aware_gdbus_signal_map[signal].interface,
+                       wifi_aware_gdbus_signal_map[signal].member,
+                       NULL,
+                       NULL,
+                       G_DBUS_SIGNAL_FLAGS_NONE,
+                       callback,
+                       user_data,
+                       NULL);
 }
 
 int wifi_aware_gdbus_init(wifi_aware_h wifi_aware)
index bf7ee3e..c144bf5 100644 (file)
@@ -22,7 +22,7 @@
 #include "wifi-aware-log.h"
 #include "wifi-aware-peer.h"
 
-int wifi_aware_peer_create(wifi_aware_peer_h *peer, unsigned int peer_id)
+int _wifi_aware_peer_create(wifi_aware_peer_h *peer, unsigned int peer_id)
 {
        // Check peer_id validation
        return WIFI_AWARE_ERROR_NONE;
index 1860747..9b4f6a0 100644 (file)
 #include "wifi-aware-log.h"
 #include "wifi-aware-peer.h"
 #include "wifi-aware-private.h"
-#include "wifi-aware-publish-private.h"
-#include "wifi-aware-subscribe-private.h"
 #include "wifi-aware-utils.h"
 
-typedef struct {
-       int client_id;
-       wifi_aware_enabled_cb enabled_cb;
-       void *enabled_cb_data;
-       wifi_aware_published_cb published_cb;
-       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;
-
 /**
  * These enum values has dependency with nan-manager daemon.
  * If the daemon changes error enum, It also must be changed. 
@@ -69,6 +54,34 @@ enum {
        NAN_ERROR_UNKNOWN,
 } nan_manager_error_e;
 
+typedef struct {
+       int client_id;
+       wifi_aware_enabled_cb enabled_cb;
+       void *enabled_cb_data;
+} wifi_aware_s;
+
+typedef struct {
+       wifi_aware_s *aware_handle;
+    uint32_t publish_id;
+    wifi_aware_publish_request_s req;
+
+    wifi_aware_published_cb published_cb;
+    void *published_cb_data;
+} wifi_aware_publish_s;
+
+typedef struct {
+       wifi_aware_s *aware_handle;
+    uint32_t subscribe_id;
+    wifi_aware_subscribe_request_s req;
+
+    wifi_aware_subscribed_cb subscribed_cb;
+    void *subscribed_cb_data;
+
+       wifi_aware_discovery_result_cb discovered_cb;
+       void *discovered_cb_data;
+       guint discovered_signal_id;
+} wifi_aware_subscribe_s;
+
 static bool __is_init = false;
 static GList *__wifi_aware_handle_list = NULL;
 
@@ -155,10 +168,16 @@ bool _wifi_aware_handle_is_valid(wifi_aware_h wifi_aware)
        return true;
 }
 
-static int __get_client_id(wifi_aware_h wifi_aware)
+static int __get_client_id_with_publish(wifi_aware_publish_h publish)
 {
-       wifi_aware_s *aware = (wifi_aware_s *)wifi_aware;
-       return aware->client_id;
+       wifi_aware_publish_s *handle = (wifi_aware_publish_s *)publish;
+       return handle->aware_handle->client_id;
+}
+
+static int __get_client_id_with_subscribe(wifi_aware_subscribe_h subscribe)
+{
+       wifi_aware_subscribe_s *handle = (wifi_aware_subscribe_s *)subscribe;
+       return handle->aware_handle->client_id;
 }
 
 static wifi_aware_error_e __parse_enable_reply(GVariant *reply, wifi_aware_s *aware)
@@ -193,6 +212,30 @@ static void __enable_request_reply(GObject *src, GAsyncResult *res, gpointer use
                aware->enabled_cb(error, aware->enabled_cb_data);
 }
 
+static void __add_published_callback(wifi_aware_publish_h publish,
+        wifi_aware_published_cb callback, void *user_data)
+{
+    wifi_aware_publish_s *handle = (wifi_aware_publish_s *)publish;
+    handle->published_cb = callback;
+    handle->published_cb_data = user_data;
+}
+
+static void __wifi_aware_publish_set_id(wifi_aware_publish_h publish, unsigned int publish_id)
+{
+       RET_IF(publish == NULL, "wifi_aware_publish_h is NULL");
+       wifi_aware_publish_s *handle = (wifi_aware_publish_s *)publish;
+       handle->publish_id = publish_id;
+}
+
+static void __wifi_aware_publish_invoke_callback(wifi_aware_error_e error, wifi_aware_publish_h publish)
+{
+       RET_IF(publish == NULL, "wifi_aware_publish_h is NULL");
+
+       wifi_aware_publish_s *handle = (wifi_aware_publish_s *)publish;
+       if (handle->published_cb)
+               handle->published_cb(error, publish, handle->published_cb_data);
+}
+
 static void __publish_request_reply(GObject *src, GAsyncResult *res, gpointer user_data)
 {
        GDBusConnection *conn = NULL;
@@ -218,12 +261,43 @@ static void __publish_request_reply(GObject *src, GAsyncResult *res, gpointer us
                WIFI_AWARE_LOGI("Publish ID: %u, error: %d", publish_id, error);
        }
 
-       _wifi_aware_publish_set_id(publish, publish_id);
-       _wifi_aware_publish_invoke_callback(
+       __wifi_aware_publish_set_id(publish, publish_id);
+       __wifi_aware_publish_invoke_callback(
                        _wifi_aware_convert_nan_manager_error(error),
                        publish);
 }
 
+static void __add_subscribed_callback(wifi_aware_subscribe_h subscribe,
+        wifi_aware_subscribed_cb callback, void *user_data)
+{
+    wifi_aware_subscribe_s *handle = (wifi_aware_subscribe_s *)subscribe;
+    handle->subscribed_cb = callback;
+    handle->subscribed_cb_data = user_data;
+}
+
+static void __wifi_aware_subscribe_invoke_callback(wifi_aware_error_e error, wifi_aware_subscribe_h subscribe)
+{
+       RET_IF(subscribe == NULL, "wifi_aware_subscribe_h is NULL");
+
+       wifi_aware_subscribe_s *handle = (wifi_aware_subscribe_s *)subscribe;
+       if (handle->subscribed_cb)
+               handle->subscribed_cb(error, subscribe, handle->subscribed_cb_data);
+}
+
+static void __wifi_aware_subscribe_set_id(wifi_aware_subscribe_h subscribe, unsigned int subscribe_id)
+{
+       wifi_aware_subscribe_s *handle = (wifi_aware_subscribe_s *)subscribe;
+       handle->subscribe_id = subscribe_id;
+}
+
+wifi_aware_subscribe_request_s *_wifi_aware_subscribe_get_request(wifi_aware_subscribe_h subscribe)
+{
+       RET_VAL_IF(subscribe == NULL, NULL, "wifi_aware_subscribe_h is NULL");
+
+       wifi_aware_subscribe_s *handle = (wifi_aware_subscribe_s *)subscribe;
+       return &(handle->req);
+}
+
 static void __subscribe_request_reply(GObject *src, GAsyncResult *res, gpointer user_data)
 {
        GDBusConnection *conn = NULL;
@@ -249,8 +323,8 @@ static void __subscribe_request_reply(GObject *src, GAsyncResult *res, gpointer
                WIFI_AWARE_LOGI("Subscribe ID: %u, error: %d", subscribe_id, error);
        }
 
-       _wifi_aware_subscribe_set_id(subscribe, subscribe_id);
-       _wifi_aware_subscribe_invoke_callback(
+       __wifi_aware_subscribe_set_id(subscribe, subscribe_id);
+       __wifi_aware_subscribe_invoke_callback(
                        _wifi_aware_convert_nan_manager_error(error),
                        subscribe);
 }
@@ -282,7 +356,6 @@ int _wifi_aware_init()
        ret = wifi_aware_gdbus_init();
        RET_VAL_IF(ret != WIFI_AWARE_ERROR_NONE, ret, "wifi_aware_gdbus_init() failed");
 
-       wifi_aware_gdbus_register_signal();
        __is_init = true;
 
        return WIFI_AWARE_ERROR_NONE;
@@ -296,14 +369,6 @@ void _add_enabled_callback(wifi_aware_h wifi_aware,
        aware->enabled_cb_data = user_data;
 }
 
-void _add_subscribed_callback(wifi_aware_h wifi_aware,
-               wifi_aware_subscribed_cb callback, void *user_data)
-{
-       wifi_aware_s *aware = (wifi_aware_s *)wifi_aware;
-       aware->subscribed_cb = callback;
-       aware->subscribed_cb_data = user_data;
-}
-
 static void __wifi_aware_enable_request_set_default_values(wifi_aware_enable_request_s *req)
 {
        req->master_pref = 0x2;
@@ -325,69 +390,234 @@ int _wifi_aware_enable_request(wifi_aware_h wifi_aware)
        return wifi_aware_gdbus_enable(wifi_aware, req, __enable_request_reply);
 }
 
-int _wifi_aware_publish_request(wifi_aware_h wifi_aware,
-               wifi_aware_publish_h publish)
+int _wifi_aware_publish_handle_create(wifi_aware_h wifi_aware, wifi_aware_publish_h *publish)
+{
+       wifi_aware_s *handle = (wifi_aware_s *)wifi_aware;
+       wifi_aware_publish_s *pub_handle =
+               (wifi_aware_publish_s *)g_try_malloc0(sizeof(wifi_aware_publish_s));
+       RET_VAL_IF(pub_handle == NULL, WIFI_AWARE_ERROR_OUT_OF_MEMORY, "Out of memory");
+
+       pub_handle->aware_handle = handle;
+       *publish = (wifi_aware_publish_h)pub_handle;
+
+       return WIFI_AWARE_ERROR_NONE;
+}
+
+void _wifi_aware_publish_request_set_default_values(wifi_aware_publish_h publish)
 {
+    wifi_aware_publish_s *handle = (wifi_aware_publish_s *)publish;
+       handle->req.ttl = 0;
+       handle->req.publish_type = WIFI_AWARE_PUBLISH_TYPE_UNSOLICITED;
+       //memset(req->specific_info[WIFI_AWARE_MAX_SERVICE_SPECIFIC_INFO_LEN], 0, WIFI_AWARE_MAX_SERVICE_SPECIFIC_INFO_LEN);
+       handle->req.specific_info_len = 0;
+       //memset(req->match_filter[WIFI_AWARE_MAX_MATCH_FILTER_LEN], 0, WIFI_AWARE_MAX_MATCH_FILTER_LEN);
+       handle->req.match_filter_len = 0;
+       handle->req.enable_termination_event = false;
+       handle->req.enable_ranging = false;
+}
+
+void _wifi_aware_publish_set_ttl(wifi_aware_publish_h publish, unsigned short ttl)
+{
+       wifi_aware_publish_s *handle = (wifi_aware_publish_s *)publish;
+       handle->req.ttl = ttl;
+}
+
+void _wifi_aware_publish_set_type(wifi_aware_publish_h publish,
+               wifi_aware_publish_type_e publish_type)
+{
+       wifi_aware_publish_s *handle = (wifi_aware_publish_s *)publish;
+       handle->req.publish_type = publish_type;
+
+}
+
+void _wifi_aware_publish_set_service_name(wifi_aware_publish_h publish, const char *service_name)
+{
+       wifi_aware_publish_s *handle = (wifi_aware_publish_s *)publish;
+       strncpy(handle->req.service_name, service_name, WIFI_AWARE_MAX_SERVICE_NAME_LEN);
+}
+
+void _wifi_aware_publish_set_service_specific_info(wifi_aware_publish_h publish,
+               unsigned char *service_specific_info, size_t len)
+{
+       wifi_aware_publish_s *handle = (wifi_aware_publish_s *)publish;
+       memcpy(handle->req.specific_info, service_specific_info, len);
+       handle->req.specific_info_len = len;
+}
+
+void _wifi_aware_publish_set_match_filter(wifi_aware_publish_h publish,
+               unsigned char *match_filter, size_t len)
+{
+       wifi_aware_publish_s *handle = (wifi_aware_publish_s *)publish;
+       memcpy(handle->req.match_filter, match_filter, len);
+       handle->req.match_filter_len = len;
+}
+
+void _wifi_aware_publish_set_enable_termination_event(wifi_aware_publish_h publish, bool enable)
+{
+       wifi_aware_publish_s *handle = (wifi_aware_publish_s *)publish;
+       handle->req.enable_termination_event = enable;
+}
+
+void _wifi_aware_publish_set_enable_ranging(wifi_aware_publish_h publish, bool enable)
+{
+       wifi_aware_publish_s *handle = (wifi_aware_publish_s *)publish;
+       handle->req.enable_ranging = enable;
+}
+
+wifi_aware_publish_request_s *_wifi_aware_publish_get_request(wifi_aware_publish_h publish)
+{
+       RET_VAL_IF(publish == NULL, NULL, "wifi_aware_publish_h is NULL");
+
+       wifi_aware_publish_s *handle = (wifi_aware_publish_s *)publish;
+       return &(handle->req);
+}
+
+unsigned int _wifi_aware_publish_get_id(wifi_aware_publish_h publish)
+{
+       RET_VAL_IF(publish == NULL, 0, "wifi_aware_publish_h is NULL");
+
+       wifi_aware_publish_s *handle = (wifi_aware_publish_s *)publish;
+       return handle->publish_id;
+}
+
+int _wifi_aware_publish_request(wifi_aware_publish_h publish,
+               wifi_aware_published_cb callback, void *user_data)
+{
+       __add_published_callback(publish, callback, user_data);
+
        return wifi_aware_gdbus_publish(publish,
-                       __get_client_id(wifi_aware),
+                       __get_client_id_with_publish(publish),
                        __publish_request_reply);
 }
 
-int _wifi_aware_cancel_publish_request(wifi_aware_h wifi_aware,
-               wifi_aware_publish_h publish)
+int _wifi_aware_cancel_publish_request(wifi_aware_publish_h publish)
 {
        return wifi_aware_gdbus_cancel_publish(publish,
-                       __get_client_id(wifi_aware));
+                       __get_client_id_with_publish(publish));
 }
 
-int _wifi_aware_update_publish_request(wifi_aware_h wifi_aware,
-               wifi_aware_publish_h publish)
+int _wifi_aware_update_publish_request(wifi_aware_publish_h publish,
+               wifi_aware_published_cb callback, void *user_data)
 {
+       __add_published_callback(publish, callback, user_data);
+
        return wifi_aware_gdbus_update_publish(publish,
-                       __get_client_id(wifi_aware),
+                       __get_client_id_with_publish(publish),
                        __publish_request_reply);
 }
 
-int _wifi_aware_subscribe_request(wifi_aware_h wifi_aware,
-               wifi_aware_subscribe_h subscribe)
+
+int _wifi_aware_subscribe_handle_create(wifi_aware_h wifi_aware, wifi_aware_subscribe_h *subscribe)
 {
-       return wifi_aware_gdbus_subscribe(subscribe,
-                       __get_client_id(wifi_aware),
-                       __subscribe_request_reply);
+       wifi_aware_s *handle = (wifi_aware_s *)wifi_aware;
+       wifi_aware_subscribe_s *sub_handle =
+               (wifi_aware_subscribe_s *)g_try_malloc0(sizeof(wifi_aware_subscribe_s));
+       RET_VAL_IF(sub_handle == NULL, WIFI_AWARE_ERROR_OUT_OF_MEMORY, "Out of memory");
+
+       sub_handle->aware_handle = handle;
+       *subscribe = (wifi_aware_subscribe_h)sub_handle;
+
+       return WIFI_AWARE_ERROR_NONE;
 }
 
-int _wifi_aware_cancel_subscribe_request(wifi_aware_h wifi_aware,
+void _wifi_aware_subscribe_set_default_values(
                wifi_aware_subscribe_h subscribe)
 {
-       return wifi_aware_gdbus_cancel_subscribe(subscribe,
-                       __get_client_id(wifi_aware));
+    wifi_aware_subscribe_s *handle = (wifi_aware_subscribe_s *)subscribe;
+       handle->req.ttl = 0;
+       handle->req.subscribe_type = WIFI_AWARE_SUBSCRIBE_TYPE_PASSIVE;
+       //memset(req->specific_info[WIFI_AWARE_MAX_SERVICE_SPECIFIC_INFO_LEN], 0, WIFI_AWARE_MAX_SERVICE_SPECIFIC_INFO_LEN);
+       handle->req.specific_info_len = 0;
+       //memset(req->match_filter[WIFI_AWARE_MAX_MATCH_FILTER_LEN], 0, WIFI_AWARE_MAX_MATCH_FILTER_LEN);
+       handle->req.match_filter_len = 0;
+       handle->req.enable_termination_event = false;
 }
 
-int _wifi_aware_update_subscribe_request(wifi_aware_h wifi_aware,
-               wifi_aware_subscribe_h subscribe)
+void _wifi_aware_subscribe_set_ttl(wifi_aware_subscribe_h subscribe, unsigned short ttl)
 {
-       return wifi_aware_gdbus_update_subscribe(subscribe,
-                       __get_client_id(wifi_aware),
+       wifi_aware_subscribe_s *handle = (wifi_aware_subscribe_s *)subscribe;
+       handle->req.ttl = ttl;
+}
+
+void _wifi_aware_subscribe_set_type(wifi_aware_subscribe_h subscribe,
+               wifi_aware_subscribe_type_e subscribe_type)
+{
+       wifi_aware_subscribe_s *handle = (wifi_aware_subscribe_s *)subscribe;
+       handle->req.subscribe_type = subscribe_type;
+
+}
+
+void _wifi_aware_subscribe_set_service_name(wifi_aware_subscribe_h subscribe, const char *service_name)
+{
+       wifi_aware_subscribe_s *handle = (wifi_aware_subscribe_s *)subscribe;
+       strncpy(handle->req.service_name, service_name, WIFI_AWARE_MAX_SERVICE_NAME_LEN);
+}
+
+void _wifi_aware_subscribe_set_service_specific_info(wifi_aware_subscribe_h subscribe,
+               unsigned char *service_specific_info, size_t len)
+{
+       wifi_aware_subscribe_s *handle = (wifi_aware_subscribe_s *)subscribe;
+       memcpy(handle->req.specific_info, service_specific_info, len);
+       handle->req.specific_info_len = len;
+
+}
+
+void _wifi_aware_subscribe_set_match_filter(wifi_aware_subscribe_h subscribe,
+               unsigned char *match_filter, size_t len)
+{
+       wifi_aware_subscribe_s *handle = (wifi_aware_subscribe_s *)subscribe;
+       memcpy(handle->req.match_filter, match_filter, len);
+       handle->req.match_filter_len = len;
+}
+
+void _wifi_aware_subscribe_set_enable_termination_event(wifi_aware_subscribe_h subscribe, bool enable)
+{
+       wifi_aware_subscribe_s *handle = (wifi_aware_subscribe_s *)subscribe;
+       handle->req.enable_termination_event = enable;
+}
+
+unsigned int _wifi_aware_subscribe_get_id(wifi_aware_subscribe_h subscribe)
+{
+       RET_VAL_IF(subscribe == NULL, 0, "wifi_aware_subscribe_h is NULL");
+
+       wifi_aware_subscribe_s *handle = (wifi_aware_subscribe_s *)subscribe;
+       return handle->subscribe_id;
+}
+
+int _wifi_aware_subscribe_request(wifi_aware_subscribe_h subscribe,
+               wifi_aware_subscribed_cb callback, void *user_data)
+{
+       __add_subscribed_callback(subscribe, callback, user_data);
+
+       return wifi_aware_gdbus_subscribe(subscribe,
+                       __get_client_id_with_subscribe(subscribe),
                        __subscribe_request_reply);
 }
 
-void _set_discovery_result_cb(wifi_aware_h wifi_aware,
-               wifi_aware_discovery_result_cb callback, void *user_data)
+int _wifi_aware_cancel_subscribe_request(wifi_aware_subscribe_h subscribe)
 {
-       __WIFI_AWARE_FUNC_ENTER__;
+       return wifi_aware_gdbus_cancel_subscribe(subscribe,
+                       __get_client_id_with_subscribe(subscribe));
+}
 
-       wifi_aware_s *aware = (wifi_aware_s *)wifi_aware;
+int _wifi_aware_update_subscribe_request(wifi_aware_subscribe_h subscribe,
+               wifi_aware_subscribed_cb callback, void *user_data)
+{
+       __add_subscribed_callback(subscribe, callback, user_data);
 
-       aware->discovered_cb = callback;
-       aware->discovered_cb_data = user_data;
+       return wifi_aware_gdbus_update_subscribe(subscribe,
+                       __get_client_id_with_subscribe(subscribe),
+                       __subscribe_request_reply);
 }
 
+/*
 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,
@@ -401,8 +631,10 @@ static void __parsing_service_discovered_event(GVariant *parameters,
        memcpy(specific_info, info_value, *specific_info_len);
 }
 
-void _service_discovered(GDBusConnection *connection,
-               const gchar *object_path, GVariant *parameters)
+static void __service_discovered_cb(GDBusConnection *connection,
+                    const gchar *sender, const gchar *object_path,
+                    const gchar *interface, const gchar *signal,
+                    GVariant *parameters, gpointer user_data)
 {
        __WIFI_AWARE_FUNC_ENTER__;
 
@@ -413,32 +645,43 @@ void _service_discovered(GDBusConnection *connection,
        unsigned char *specific_info = NULL;
        size_t specific_info_len = 0;
 
-       wifi_aware_h peer = NULL;
-       GList *list;
+       wifi_aware_subscribe_s *handle = (wifi_aware_subscribe_s *)user_data;
+       wifi_aware_peer_h peer = NULL;
+
+       RET_IF(handle == NULL, "wifi_aware_subscribe_h is NULL");
 
        __parsing_service_discovered_event(parameters,
                        &sub_id, &peer_id,
                        specific_info, &specific_info_len);
 
-       if (sub_id == 0) {
-               WIFI_AWARE_LOGE("Invalid subscribe ID");
+       if (sub_id == 0 || handle->subscribe_id != sub_id) {
+               WIFI_AWARE_LOGE("Invalid subscribe ID (%u:%u)", handle->subscribe_id, sub_id);
                return;
        }
 
        WIFI_AWARE_LOGD("Peer ID: %u", peer_id);
-       if (wifi_aware_peer_create(&peer, peer_id) != WIFI_AWARE_ERROR_NONE) {
+       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,
-                                       aware->discovered_cb_data);
-       }
+       if (handle->discovered_cb)
+               handle->discovered_cb(handle, peer,
+                               specific_info, specific_info_len,
+                               handle->discovered_cb_data);
+}
+
+void _wifi_aware_set_discovery_result_cb(wifi_aware_subscribe_h subscribe,
+               wifi_aware_discovery_result_cb callback, void *user_data)
+{
+       __WIFI_AWARE_FUNC_ENTER__;
+
+       wifi_aware_subscribe_s *handle = (wifi_aware_subscribe_s *)subscribe;
+       handle->discovered_cb = callback;
+       handle->discovered_cb_data = user_data;
+       handle->discovered_signal_id =
+               wifi_aware_gdbus_register_signal(SERVICE_DISCOVERED_SIGNAL,
+                               __service_discovered_cb, handle);
 }
diff --git a/src/wifi-aware-publish.c b/src/wifi-aware-publish.c
deleted file mode 100644 (file)
index 03b6615..0000000
+++ /dev/null
@@ -1,292 +0,0 @@
-/* Wi-Fi 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.
- *
- */
-
-/**
- * This file implements Wi-Fi Aware user library.
- *
- * @file        wifi-aware-client.c
- * @author      Jiung Yu (jiung.yu@samsung.com)
- */
-
-
-#include <glib.h>
-
-#include "wifi-aware.h"
-
-#include "wifi-aware-config.h"
-#include "wifi-aware-gdbus.h"
-#include "wifi-aware-log.h"
-#include "wifi-aware-private.h"
-#include "wifi-aware-publish-private.h"
-#include "wifi-aware-utils.h"
-
-typedef struct {
-    uint32_t publish_id;
-    wifi_aware_publish_request_s req;
-
-    wifi_aware_published_cb published_cb;
-    void *published_cb_data;
-} wifi_aware_publish_s;
-
-static void __add_published_callback(wifi_aware_publish_h publish,
-        wifi_aware_published_cb callback, void *user_data)
-{
-    wifi_aware_publish_s *handle = (wifi_aware_publish_s *)publish;
-    handle->published_cb = callback;
-    handle->published_cb_data = user_data;
-}
-
-static void _wifi_aware_publish_request_set_default_values(wifi_aware_publish_request_s *req)
-{
-       req->ttl = 0;
-       req->publish_type = WIFI_AWARE_PUBLISH_TYPE_UNSOLICITED;
-       //memset(req->specific_info[WIFI_AWARE_MAX_SERVICE_SPECIFIC_INFO_LEN], 0, WIFI_AWARE_MAX_SERVICE_SPECIFIC_INFO_LEN);
-       req->specific_info_len = 0;
-       //memset(req->match_filter[WIFI_AWARE_MAX_MATCH_FILTER_LEN], 0, WIFI_AWARE_MAX_MATCH_FILTER_LEN);
-       req->match_filter_len = 0;
-       req->enable_termination_event = false;
-       req->enable_ranging = false;
-}
-
-wifi_aware_publish_request_s *_wifi_aware_publish_get_request(wifi_aware_publish_h publish)
-{
-       RET_VAL_IF(publish == NULL, NULL, "wifi_aware_publish_h is NULL");
-
-       wifi_aware_publish_s *handle = (wifi_aware_publish_s *)publish;
-       return &(handle->req);
-}
-
-unsigned int _wifi_aware_publish_get_id(wifi_aware_publish_h publish)
-{
-       RET_VAL_IF(publish == NULL, 0, "wifi_aware_publish_h is NULL");
-
-       wifi_aware_publish_s *handle = (wifi_aware_publish_s *)publish;
-       return handle->publish_id;
-}
-
-void _wifi_aware_publish_invoke_callback(wifi_aware_error_e error, wifi_aware_publish_h publish)
-{
-       RET_IF(publish == NULL, "wifi_aware_publish_h is NULL");
-
-       wifi_aware_publish_s *handle = (wifi_aware_publish_s *)publish;
-       if (handle->published_cb)
-               handle->published_cb(error, publish, handle->published_cb_data);
-}
-
-void _wifi_aware_publish_set_id(wifi_aware_publish_h publish, unsigned int publish_id)
-{
-       RET_IF(publish == NULL, "wifi_aware_publish_h is NULL");
-       wifi_aware_publish_s *handle = (wifi_aware_publish_s *)publish;
-       handle->publish_id = publish_id;
-}
-
-API int wifi_aware_publish_create(wifi_aware_publish_h *publish)
-{
-       __WIFI_AWARE_FUNC_ENTER__;
-       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
-
-       wifi_aware_publish_s *handle =
-               (wifi_aware_publish_s *)g_try_malloc0(sizeof(wifi_aware_publish_s));
-       RET_VAL_IF(handle == NULL, WIFI_AWARE_ERROR_OUT_OF_MEMORY, "Out of memory");
-
-       _wifi_aware_publish_request_set_default_values(&handle->req);
-
-       *publish = (wifi_aware_publish_h)handle;
-
-       __WIFI_AWARE_FUNC_EXIT__;
-       return WIFI_AWARE_ERROR_NONE;
-}
-
-API int wifi_aware_publish_destroy(wifi_aware_publish_h publish)
-{
-       __WIFI_AWARE_FUNC_ENTER__;
-       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
-       RET_VAL_IF(publish == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_publish_h is NULL");
-
-       g_free(publish);
-
-       __WIFI_AWARE_FUNC_EXIT__;
-       return WIFI_AWARE_ERROR_NONE;
-}
-
-API int wifi_aware_publish_set_ttl(wifi_aware_publish_h publish, unsigned short ttl)
-{
-       __WIFI_AWARE_FUNC_ENTER__;
-       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
-       RET_VAL_IF(publish == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_publish_h is NULL");
-
-       wifi_aware_publish_s *handle = (wifi_aware_publish_s *)publish;
-       handle->req.ttl = ttl;
-
-       __WIFI_AWARE_FUNC_EXIT__;
-       return WIFI_AWARE_ERROR_NONE;
-}
-
-API int wifi_aware_publish_set_type(wifi_aware_publish_h publish,
-               wifi_aware_publish_type_e publish_type)
-{
-       __WIFI_AWARE_FUNC_ENTER__;
-       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
-       RET_VAL_IF(publish == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_publish_h is NULL");
-
-       wifi_aware_publish_s *handle = (wifi_aware_publish_s *)publish;
-       handle->req.publish_type = publish_type;
-
-       __WIFI_AWARE_FUNC_EXIT__;
-       return WIFI_AWARE_ERROR_NONE;
-}
-
-API int wifi_aware_publish_set_service_name(wifi_aware_publish_h publish,
-               const char *service_name)
-{
-       __WIFI_AWARE_FUNC_ENTER__;
-       int len = 0;
-       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
-       RET_VAL_IF(publish == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_publish_h is NULL");
-
-       wifi_aware_publish_s *handle = (wifi_aware_publish_s *)publish;
-       len = strlen(service_name);
-       if (len > WIFI_AWARE_MAX_SERVICE_NAME_LEN) {
-               WIFI_AWARE_LOGE("The length of service_name should be equal to or less than %d",
-                               WIFI_AWARE_MAX_SERVICE_NAME_LEN);
-               return WIFI_AWARE_ERROR_INVALID_PARAMETER;
-       }
-
-       strncpy(handle->req.service_name, service_name, WIFI_AWARE_MAX_SERVICE_NAME_LEN);
-
-       __WIFI_AWARE_FUNC_EXIT__;
-       return WIFI_AWARE_ERROR_NONE;
-}
-
-API int wifi_aware_publish_set_service_specific_info(wifi_aware_publish_h publish,
-               unsigned char *service_specific_info, size_t len)
-{
-       __WIFI_AWARE_FUNC_ENTER__;
-       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
-       RET_VAL_IF(publish == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_publish_h is NULL");
-
-       wifi_aware_publish_s *handle = (wifi_aware_publish_s *)publish;
-       memcpy(handle->req.specific_info, service_specific_info, len);
-       handle->req.specific_info_len = len;
-
-       __WIFI_AWARE_FUNC_EXIT__;
-       return WIFI_AWARE_ERROR_NONE;
-}
-
-API int wifi_aware_publish_set_match_filter(wifi_aware_publish_h publish,
-               unsigned char *match_filter, size_t len)
-{
-       __WIFI_AWARE_FUNC_ENTER__;
-       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
-       RET_VAL_IF(publish == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_publish_h is NULL");
-
-       // TODO: Check if len is valid
-
-       wifi_aware_publish_s *handle = (wifi_aware_publish_s *)publish;
-       memcpy(handle->req.match_filter, match_filter, len);
-       handle->req.match_filter_len = len;
-
-       __WIFI_AWARE_FUNC_EXIT__;
-       return WIFI_AWARE_ERROR_NONE;
-}
-
-API int wifi_aware_publish_set_enable_termination_event(
-               wifi_aware_publish_h publish,
-               bool enable)
-{
-       __WIFI_AWARE_FUNC_ENTER__;
-       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
-       RET_VAL_IF(publish == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_publish_h is NULL");
-
-       wifi_aware_publish_s *handle = (wifi_aware_publish_s *)publish;
-       handle->req.enable_termination_event = enable;
-
-       __WIFI_AWARE_FUNC_EXIT__;
-       return WIFI_AWARE_ERROR_NONE;
-}
-
-API int wifi_aware_publish_set_enable_ranging(
-               wifi_aware_publish_h publish,
-               bool enable)
-{
-       __WIFI_AWARE_FUNC_ENTER__;
-       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
-       RET_VAL_IF(publish == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_publish_h is NULL");
-
-       wifi_aware_publish_s *handle = (wifi_aware_publish_s *)publish;
-       handle->req.enable_ranging = enable;
-
-       __WIFI_AWARE_FUNC_EXIT__;
-       return WIFI_AWARE_ERROR_NONE;
-}
-
-API int wifi_aware_start_publish(wifi_aware_h wifi_aware,
-               wifi_aware_publish_h publish,
-               wifi_aware_published_cb callback, void *user_data)
-{
-       __WIFI_AWARE_FUNC_ENTER__;
-       int ret = WIFI_AWARE_ERROR_NONE;
-
-       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
-       RET_ERR_IF_HANDLE_IS_NOT_VALID_OR_NOT_INITIALIZED(wifi_aware);
-       RET_VAL_IF(publish == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_publish_h is NULL");
-
-       __add_published_callback(publish, callback, user_data);
-
-       ret = _wifi_aware_publish_request(wifi_aware, publish);
-       RET_VAL_IF(ret != WIFI_AWARE_ERROR_NONE, ret, "_wifi_aware_publish_request");
-
-       __WIFI_AWARE_FUNC_EXIT__;
-       return WIFI_AWARE_ERROR_NONE;
-}
-
-API int wifi_aware_cancel_publish(wifi_aware_h wifi_aware, wifi_aware_publish_h publish)
-{
-       __WIFI_AWARE_FUNC_ENTER__;
-       int ret = WIFI_AWARE_ERROR_NONE;
-
-       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
-       RET_ERR_IF_HANDLE_IS_NOT_VALID_OR_NOT_INITIALIZED(wifi_aware);
-       RET_VAL_IF(publish == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_publish_h is NULL");
-
-       ret = _wifi_aware_cancel_publish_request(wifi_aware, publish);
-       RET_VAL_IF(ret != WIFI_AWARE_ERROR_NONE, ret, "_wifi_aware_cancel_publish_request");
-
-       __WIFI_AWARE_FUNC_EXIT__;
-       return WIFI_AWARE_ERROR_NONE;
-}
-
-API int wifi_aware_update_publish(wifi_aware_h wifi_aware,
-               wifi_aware_publish_h publish,
-               wifi_aware_published_cb callback, void *user_data)
-{
-       __WIFI_AWARE_FUNC_ENTER__;
-       int ret = WIFI_AWARE_ERROR_NONE;
-
-       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
-       RET_ERR_IF_HANDLE_IS_NOT_VALID_OR_NOT_INITIALIZED(wifi_aware);
-       RET_VAL_IF(publish == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_publish_h is NULL");
-
-       __add_published_callback(publish, callback, user_data);
-
-       ret = _wifi_aware_update_publish_request(wifi_aware, publish);
-       RET_VAL_IF(ret != WIFI_AWARE_ERROR_NONE, ret, "_wifi_aware_update_publish_request");
-
-       __WIFI_AWARE_FUNC_EXIT__;
-       return WIFI_AWARE_ERROR_NONE;
-}
diff --git a/src/wifi-aware-subscribe.c b/src/wifi-aware-subscribe.c
deleted file mode 100644 (file)
index 5e670f2..0000000
+++ /dev/null
@@ -1,293 +0,0 @@
-/* Wi-Fi 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.
- *
- */
-
-/**
- * This file implements Wi-Fi Aware user library.
- *
- * @file        wifi-aware-client.c
- * @author      Jiung Yu (jiung.yu@samsung.com)
- */
-
-
-#include <glib.h>
-
-#include "wifi-aware.h"
-
-#include "wifi-aware-handle.h"
-#include "wifi-aware-gdbus.h"
-#include "wifi-aware-log.h"
-#include "wifi-aware-private.h"
-#include "wifi-aware-subscribe-private.h"
-#include "wifi-aware-utils.h"
-
-typedef struct {
-    uint32_t subscribe_id;
-    wifi_aware_subscribe_request_s req;
-
-    wifi_aware_subscribed_cb subscribed_cb;
-    void *subscribed_cb_data;
-} wifi_aware_subscribe_s;
-
-static void __add_subscribed_callback(wifi_aware_subscribe_h subscribe,
-        wifi_aware_subscribed_cb callback, void *user_data)
-{
-    wifi_aware_subscribe_s *handle = (wifi_aware_subscribe_s *)subscribe;
-    handle->subscribed_cb = callback;
-    handle->subscribed_cb_data = user_data;
-}
-
-static void __wifi_aware_subscribe_set_default_values(
-               wifi_aware_subscribe_request_s *req)
-{
-       req->ttl = 0;
-       req->subscribe_type = WIFI_AWARE_SUBSCRIBE_TYPE_PASSIVE;
-       //memset(req->specific_info[WIFI_AWARE_MAX_SERVICE_SPECIFIC_INFO_LEN], 0, WIFI_AWARE_MAX_SERVICE_SPECIFIC_INFO_LEN);
-       req->specific_info_len = 0;
-       //memset(req->match_filter[WIFI_AWARE_MAX_MATCH_FILTER_LEN], 0, WIFI_AWARE_MAX_MATCH_FILTER_LEN);
-       req->match_filter_len = 0;
-       req->enable_termination_event = false;
-}
-
-wifi_aware_subscribe_request_s *_wifi_aware_subscribe_get_request(wifi_aware_subscribe_h subscribe)
-{
-       RET_VAL_IF(subscribe == NULL, NULL, "wifi_aware_subscribe_h is NULL");
-
-       wifi_aware_subscribe_s *handle = (wifi_aware_subscribe_s *)subscribe;
-       return &(handle->req);
-}
-
-unsigned int _wifi_aware_subscribe_get_id(wifi_aware_subscribe_h subscribe)
-{
-       RET_VAL_IF(subscribe == NULL, 0, "wifi_aware_subscribe_h is NULL");
-
-       wifi_aware_subscribe_s *handle = (wifi_aware_subscribe_s *)subscribe;
-       return handle->subscribe_id;
-}
-
-void _wifi_aware_subscribe_invoke_callback(wifi_aware_error_e error, wifi_aware_subscribe_h subscribe)
-{
-       RET_IF(subscribe == NULL, "wifi_aware_subscribe_h is NULL");
-
-       wifi_aware_subscribe_s *handle = (wifi_aware_subscribe_s *)subscribe;
-       if (handle->subscribed_cb)
-               handle->subscribed_cb(error, subscribe, handle->subscribed_cb_data);
-}
-
-void _wifi_aware_subscribe_set_id(wifi_aware_subscribe_h subscribe, unsigned int subscribe_id)
-{
-       RET_IF(subscribe == NULL, "wifi_aware_subscribe_h is NULL");
-       wifi_aware_subscribe_s *handle = (wifi_aware_subscribe_s *)subscribe;
-       handle->subscribe_id = subscribe_id;
-}
-
-API int wifi_aware_subscribe_create(
-               wifi_aware_subscribe_h *subscribe)
-{
-       __WIFI_AWARE_FUNC_ENTER__;
-       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
-
-       wifi_aware_subscribe_s *handle =
-               (wifi_aware_subscribe_s *) g_try_malloc0(sizeof(wifi_aware_subscribe_s));
-       RET_VAL_IF(handle == NULL, WIFI_AWARE_ERROR_OUT_OF_MEMORY, "Out of memory");
-
-       __wifi_aware_subscribe_set_default_values(&handle->req);
-
-       *subscribe = (wifi_aware_subscribe_h)handle;
-       __WIFI_AWARE_FUNC_EXIT__;
-       return WIFI_AWARE_ERROR_NONE;
-}
-
-API int wifi_aware_subscribe_destroy(
-               wifi_aware_subscribe_h subscribe)
-{
-       __WIFI_AWARE_FUNC_ENTER__;
-       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
-       RET_VAL_IF(subscribe == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_subscribe_h is NULL");
-
-       g_free(subscribe);
-
-       __WIFI_AWARE_FUNC_EXIT__;
-       return WIFI_AWARE_ERROR_NONE;
-}
-
-API int wifi_aware_subscribe_set_ttl(
-               wifi_aware_subscribe_h subscribe,
-               unsigned short ttl)
-{
-       __WIFI_AWARE_FUNC_ENTER__;
-       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
-       RET_VAL_IF(subscribe == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_subscribe_h is NULL");
-
-       wifi_aware_subscribe_s *handle = (wifi_aware_subscribe_s *)subscribe;
-       handle->req.ttl = ttl;
-
-       __WIFI_AWARE_FUNC_EXIT__;
-       return WIFI_AWARE_ERROR_NONE;
-}
-
-API int wifi_aware_subscribe_set_type(
-               wifi_aware_subscribe_h subscribe,
-               wifi_aware_subscribe_type_e subscribe_type)
-{
-       __WIFI_AWARE_FUNC_ENTER__;
-       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
-       RET_VAL_IF(subscribe == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_subscribe_h is NULL");
-
-       wifi_aware_subscribe_s *handle = (wifi_aware_subscribe_s *)subscribe;
-       handle->req.subscribe_type = subscribe_type;
-
-       __WIFI_AWARE_FUNC_EXIT__;
-       return WIFI_AWARE_ERROR_NONE;
-}
-
-API int wifi_aware_subscribe_set_service_name(
-               wifi_aware_subscribe_h subscribe,
-               const char *service_name)
-{
-       __WIFI_AWARE_FUNC_ENTER__;
-       int len = 0;
-       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
-       RET_VAL_IF(subscribe == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_subscribe_h is NULL");
-
-       wifi_aware_subscribe_s *handle = (wifi_aware_subscribe_s *)subscribe;
-       len = strlen(service_name);
-       if (len > WIFI_AWARE_MAX_SERVICE_NAME_LEN) {
-               WIFI_AWARE_LOGE("The length of service_name should be equal to or less than %d",
-                               WIFI_AWARE_MAX_SERVICE_NAME_LEN);
-               return WIFI_AWARE_ERROR_INVALID_PARAMETER;
-       }
-
-       strncpy(handle->req.service_name, service_name, WIFI_AWARE_MAX_SERVICE_NAME_LEN);
-
-       __WIFI_AWARE_FUNC_EXIT__;
-       return WIFI_AWARE_ERROR_NONE;
-}
-
-API int wifi_aware_subscribe_set_service_specific_info(
-               wifi_aware_subscribe_h subscribe,
-               unsigned char *service_specific_info, size_t len)
-{
-       __WIFI_AWARE_FUNC_ENTER__;
-       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
-       RET_VAL_IF(subscribe == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_subscribe_h is NULL");
-
-       wifi_aware_subscribe_s *handle = (wifi_aware_subscribe_s *)subscribe;
-       memcpy(handle->req.specific_info, service_specific_info, len);
-       handle->req.specific_info_len = len;
-
-       __WIFI_AWARE_FUNC_EXIT__;
-       return WIFI_AWARE_ERROR_NONE;
-}
-
-API int wifi_aware_subscribe_set_match_filter(
-               wifi_aware_subscribe_h subscribe,
-               unsigned char *match_filter, size_t len)
-{
-       __WIFI_AWARE_FUNC_ENTER__;
-       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
-       RET_VAL_IF(subscribe == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_subscribe_h is NULL");
-
-       wifi_aware_subscribe_s *handle = (wifi_aware_subscribe_s *)subscribe;
-       memcpy(handle->req.match_filter, match_filter, len);
-       handle->req.match_filter_len = len;
-
-       __WIFI_AWARE_FUNC_EXIT__;
-       return WIFI_AWARE_ERROR_NONE;
-}
-
-API int wifi_aware_subscribe_set_enable_termination_event(
-               wifi_aware_subscribe_h subscribe,
-               bool enable)
-{
-       __WIFI_AWARE_FUNC_ENTER__;
-       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
-       RET_VAL_IF(subscribe == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_subscribe_h is NULL");
-
-       wifi_aware_subscribe_s *handle = (wifi_aware_subscribe_s *)subscribe;
-       handle->req.enable_termination_event = enable;
-
-       __WIFI_AWARE_FUNC_EXIT__;
-       return WIFI_AWARE_ERROR_NONE;
-}
-
-API int wifi_aware_start_subscribe(wifi_aware_h wifi_aware,
-               wifi_aware_subscribe_h subscribe,
-               wifi_aware_subscribed_cb callback, void *user_data)
-{
-       __WIFI_AWARE_FUNC_ENTER__;
-       int ret = WIFI_AWARE_ERROR_NONE;
-
-       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
-       RET_ERR_IF_HANDLE_IS_NOT_VALID_OR_NOT_INITIALIZED(wifi_aware);
-       RET_VAL_IF(subscribe == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_subscribe_h is NULL");
-
-       __add_subscribed_callback(wifi_aware, callback, user_data);
-
-       ret = _wifi_aware_subscribe_request(wifi_aware, subscribe);
-       RET_VAL_IF(ret != WIFI_AWARE_ERROR_NONE, ret, "_wifi_aware_subscribe_request");
-
-       __WIFI_AWARE_FUNC_EXIT__;
-       return WIFI_AWARE_ERROR_NONE;
-}
-
-API int wifi_aware_cancel_subscribe(wifi_aware_h wifi_aware, wifi_aware_subscribe_h subscribe)
-{
-       __WIFI_AWARE_FUNC_ENTER__;
-       int ret = WIFI_AWARE_ERROR_NONE;
-
-       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
-       RET_ERR_IF_HANDLE_IS_NOT_VALID_OR_NOT_INITIALIZED(wifi_aware);
-
-       ret = _wifi_aware_cancel_subscribe_request(wifi_aware, subscribe);
-       RET_VAL_IF(ret != WIFI_AWARE_ERROR_NONE, ret, "_wifi_aware_cancel_subscribe_request");
-
-       __WIFI_AWARE_FUNC_EXIT__;
-       return WIFI_AWARE_ERROR_NONE;
-}
-
-API int wifi_aware_update_subscribe(wifi_aware_h wifi_aware,
-               wifi_aware_subscribe_h subscribe,
-               wifi_aware_subscribed_cb callback, void *user_data)
-{
-       __WIFI_AWARE_FUNC_ENTER__;
-       int ret = WIFI_AWARE_ERROR_NONE;
-
-       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
-       RET_ERR_IF_HANDLE_IS_NOT_VALID_OR_NOT_INITIALIZED(wifi_aware);
-       RET_VAL_IF(subscribe == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_subscribe_h is NULL");
-
-       __add_subscribed_callback(subscribe, callback, user_data);
-
-       ret = _wifi_aware_update_subscribe_request(wifi_aware, subscribe);
-       RET_VAL_IF(ret != WIFI_AWARE_ERROR_NONE, ret, "_wifi_aware_update_subscribe_request");
-
-       __WIFI_AWARE_FUNC_EXIT__;
-       return WIFI_AWARE_ERROR_NONE;
-}
-
-API int wifi_aware_set_discovery_result_cb(wifi_aware_h wifi_aware,
-               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;
-}
index 1f70346..63f1a38 100644 (file)
@@ -67,8 +67,400 @@ API int wifi_aware_deinitialize(wifi_aware_h wifi_aware)
        return WIFI_AWARE_ERROR_NONE;
 }
 
-API int wifi_aware_send_message(wifi_aware_h wifi_aware,
-               wifi_aware_peer_h peer, unsigned char *message, size_t len)
+API int wifi_aware_enable(wifi_aware_h wifi_aware,
+               wifi_aware_enabled_cb callback, void *user_data)
+{
+       int ret = WIFI_AWARE_ERROR_NONE;
+
+       __WIFI_AWARE_FUNC_ENTER__;
+       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
+
+       _add_enabled_callback(wifi_aware, callback, user_data);
+
+       ret = _wifi_aware_enable_request(wifi_aware);
+       RET_VAL_IF(ret != WIFI_AWARE_ERROR_NONE, ret, "_wifi_aware_enable_request");
+
+       __WIFI_AWARE_FUNC_EXIT__;
+       return WIFI_AWARE_ERROR_NONE;
+}
+
+API int wifi_aware_publish_create(wifi_aware_h wifi_aware, wifi_aware_publish_h *publish)
+{
+       int ret = WIFI_AWARE_ERROR_NONE;
+
+       __WIFI_AWARE_FUNC_ENTER__;
+       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
+
+       ret = _wifi_aware_publish_handle_create(wifi_aware, publish);
+       RET_VAL_IF(ret != WIFI_AWARE_ERROR_NONE, ret, "Fail to create publish handle");
+
+       _wifi_aware_publish_request_set_default_values(publish);
+
+       __WIFI_AWARE_FUNC_EXIT__;
+       return WIFI_AWARE_ERROR_NONE;
+}
+
+API int wifi_aware_publish_destroy(wifi_aware_publish_h publish)
+{
+       __WIFI_AWARE_FUNC_ENTER__;
+       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
+       RET_VAL_IF(publish == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_publish_h is NULL");
+
+       g_free(publish);
+
+       __WIFI_AWARE_FUNC_EXIT__;
+       return WIFI_AWARE_ERROR_NONE;
+}
+
+API int wifi_aware_publish_set_ttl(wifi_aware_publish_h publish, unsigned short ttl)
+{
+       __WIFI_AWARE_FUNC_ENTER__;
+       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
+       RET_VAL_IF(publish == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_publish_h is NULL");
+
+       _wifi_aware_publish_set_ttl(publish, ttl);
+
+       __WIFI_AWARE_FUNC_EXIT__;
+       return WIFI_AWARE_ERROR_NONE;
+}
+
+API int wifi_aware_publish_set_type(wifi_aware_publish_h publish,
+               wifi_aware_publish_type_e publish_type)
+{
+       __WIFI_AWARE_FUNC_ENTER__;
+       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
+       RET_VAL_IF(publish == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_publish_h is NULL");
+
+       _wifi_aware_publish_set_type(publish, publish_type);
+
+       __WIFI_AWARE_FUNC_EXIT__;
+       return WIFI_AWARE_ERROR_NONE;
+}
+
+API int wifi_aware_publish_set_service_name(wifi_aware_publish_h publish,
+               const char *service_name)
+{
+       __WIFI_AWARE_FUNC_ENTER__;
+       int len = 0;
+       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
+       RET_VAL_IF(publish == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_publish_h is NULL");
+
+       len = strlen(service_name);
+       if (len > WIFI_AWARE_MAX_SERVICE_NAME_LEN) {
+               WIFI_AWARE_LOGE("The length of service_name should be equal to or less than %d",
+                               WIFI_AWARE_MAX_SERVICE_NAME_LEN);
+               return WIFI_AWARE_ERROR_INVALID_PARAMETER;
+       }
+
+       _wifi_aware_publish_set_service_name(publish, service_name);
+       __WIFI_AWARE_FUNC_EXIT__;
+       return WIFI_AWARE_ERROR_NONE;
+}
+
+API int wifi_aware_publish_set_service_specific_info(wifi_aware_publish_h publish,
+               unsigned char *service_specific_info, size_t len)
+{
+       __WIFI_AWARE_FUNC_ENTER__;
+       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
+       RET_VAL_IF(publish == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_publish_h is NULL");
+
+       if (len > WIFI_AWARE_MAX_SERVICE_SPECIFIC_INFO_LEN) {
+               WIFI_AWARE_LOGE("The length of service_specific_info should be equal to or less than %d",
+                               WIFI_AWARE_MAX_SERVICE_SPECIFIC_INFO_LEN);
+               return WIFI_AWARE_ERROR_INVALID_PARAMETER;
+       }
+
+       _wifi_aware_publish_set_service_specific_info(publish, service_specific_info, len);
+
+       __WIFI_AWARE_FUNC_EXIT__;
+       return WIFI_AWARE_ERROR_NONE;
+}
+
+API int wifi_aware_publish_set_match_filter(wifi_aware_publish_h publish,
+               unsigned char *match_filter, size_t len)
+{
+       __WIFI_AWARE_FUNC_ENTER__;
+       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
+       RET_VAL_IF(publish == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_publish_h is NULL");
+
+       if (len > WIFI_AWARE_MAX_MATCH_FILTER_LEN) {
+               WIFI_AWARE_LOGE("The length of match_filter should be equal to or less than %d",
+                               WIFI_AWARE_MAX_MATCH_FILTER_LEN);
+               return WIFI_AWARE_ERROR_INVALID_PARAMETER;
+       }
+
+       _wifi_aware_publish_set_match_filter(publish, match_filter, len);
+       __WIFI_AWARE_FUNC_EXIT__;
+       return WIFI_AWARE_ERROR_NONE;
+}
+
+API int wifi_aware_publish_set_enable_termination_event(
+               wifi_aware_publish_h publish,
+               bool enable)
+{
+       __WIFI_AWARE_FUNC_ENTER__;
+       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
+       RET_VAL_IF(publish == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_publish_h is NULL");
+
+       _wifi_aware_publish_set_enable_termination_event(publish, enable);
+
+       __WIFI_AWARE_FUNC_EXIT__;
+       return WIFI_AWARE_ERROR_NONE;
+}
+
+API int wifi_aware_publish_set_enable_ranging(
+               wifi_aware_publish_h publish,
+               bool enable)
+{
+       __WIFI_AWARE_FUNC_ENTER__;
+       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
+       RET_VAL_IF(publish == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_publish_h is NULL");
+
+       _wifi_aware_publish_set_enable_ranging(publish, enable);
+
+       __WIFI_AWARE_FUNC_EXIT__;
+       return WIFI_AWARE_ERROR_NONE;
+}
+
+API int wifi_aware_start_publish(wifi_aware_publish_h publish,
+               wifi_aware_published_cb callback, void *user_data)
+{
+       __WIFI_AWARE_FUNC_ENTER__;
+       int ret = WIFI_AWARE_ERROR_NONE;
+
+       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
+       RET_VAL_IF(publish == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_publish_h is NULL");
+
+       ret = _wifi_aware_publish_request(publish, callback, user_data);
+       RET_VAL_IF(ret != WIFI_AWARE_ERROR_NONE, ret, "_wifi_aware_publish_request");
+
+       __WIFI_AWARE_FUNC_EXIT__;
+       return WIFI_AWARE_ERROR_NONE;
+}
+
+API int wifi_aware_cancel_publish(wifi_aware_publish_h publish)
+{
+       __WIFI_AWARE_FUNC_ENTER__;
+       int ret = WIFI_AWARE_ERROR_NONE;
+
+       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
+       RET_VAL_IF(publish == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_publish_h is NULL");
+
+       ret = _wifi_aware_cancel_publish_request(publish);
+       RET_VAL_IF(ret != WIFI_AWARE_ERROR_NONE, ret, "_wifi_aware_cancel_publish_request");
+
+       __WIFI_AWARE_FUNC_EXIT__;
+       return WIFI_AWARE_ERROR_NONE;
+}
+
+API int wifi_aware_update_publish(wifi_aware_publish_h publish,
+               wifi_aware_published_cb callback, void *user_data)
+{
+       __WIFI_AWARE_FUNC_ENTER__;
+       int ret = WIFI_AWARE_ERROR_NONE;
+
+       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
+       RET_VAL_IF(publish == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_publish_h is NULL");
+
+       ret = _wifi_aware_update_publish_request(publish, callback, user_data);
+       RET_VAL_IF(ret != WIFI_AWARE_ERROR_NONE, ret, "_wifi_aware_update_publish_request");
+
+       __WIFI_AWARE_FUNC_EXIT__;
+       return WIFI_AWARE_ERROR_NONE;
+}
+
+API int wifi_aware_subscribe_create(wifi_aware_h wifi_aware,
+               wifi_aware_subscribe_h *subscribe)
+{
+       int ret = WIFI_AWARE_ERROR_NONE;
+
+       __WIFI_AWARE_FUNC_ENTER__;
+       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
+
+       ret = _wifi_aware_subscribe_handle_create(wifi_aware, subscribe);
+       RET_VAL_IF(ret != WIFI_AWARE_ERROR_NONE, ret, "Fail to create subscribe handle");
+
+       _wifi_aware_subscribe_set_default_values(subscribe);
+
+       __WIFI_AWARE_FUNC_EXIT__;
+       return WIFI_AWARE_ERROR_NONE;
+}
+
+API int wifi_aware_subscribe_destroy(
+               wifi_aware_subscribe_h subscribe)
+{
+       __WIFI_AWARE_FUNC_ENTER__;
+       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
+       RET_VAL_IF(subscribe == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_subscribe_h is NULL");
+
+       g_free(subscribe);
+
+       __WIFI_AWARE_FUNC_EXIT__;
+       return WIFI_AWARE_ERROR_NONE;
+}
+
+API int wifi_aware_subscribe_set_ttl(
+               wifi_aware_subscribe_h subscribe,
+               unsigned short ttl)
+{
+       __WIFI_AWARE_FUNC_ENTER__;
+       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
+       RET_VAL_IF(subscribe == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_subscribe_h is NULL");
+
+       _wifi_aware_subscribe_set_ttl(subscribe, ttl);
+
+       __WIFI_AWARE_FUNC_EXIT__;
+       return WIFI_AWARE_ERROR_NONE;
+}
+
+API int wifi_aware_subscribe_set_type(
+               wifi_aware_subscribe_h subscribe,
+               wifi_aware_subscribe_type_e subscribe_type)
+{
+       __WIFI_AWARE_FUNC_ENTER__;
+       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
+       RET_VAL_IF(subscribe == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_subscribe_h is NULL");
+
+       _wifi_aware_subscribe_set_type(subscribe, subscribe_type);
+
+       __WIFI_AWARE_FUNC_EXIT__;
+       return WIFI_AWARE_ERROR_NONE;
+}
+
+API int wifi_aware_subscribe_set_service_name(
+               wifi_aware_subscribe_h subscribe,
+               const char *service_name)
+{
+       __WIFI_AWARE_FUNC_ENTER__;
+       int len = 0;
+       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
+       RET_VAL_IF(subscribe == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_subscribe_h is NULL");
+
+       len = strlen(service_name);
+       if (len > WIFI_AWARE_MAX_SERVICE_NAME_LEN) {
+               WIFI_AWARE_LOGE("The length of service_name should be equal to or less than %d",
+                               WIFI_AWARE_MAX_SERVICE_NAME_LEN);
+               return WIFI_AWARE_ERROR_INVALID_PARAMETER;
+       }
+
+       _wifi_aware_subscribe_set_service_name(subscribe, service_name);
+       __WIFI_AWARE_FUNC_EXIT__;
+       return WIFI_AWARE_ERROR_NONE;
+}
+
+API int wifi_aware_subscribe_set_service_specific_info(
+               wifi_aware_subscribe_h subscribe,
+               unsigned char *service_specific_info, size_t len)
+{
+       __WIFI_AWARE_FUNC_ENTER__;
+       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
+       RET_VAL_IF(subscribe == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_subscribe_h is NULL");
+
+       if (len > WIFI_AWARE_MAX_SERVICE_SPECIFIC_INFO_LEN) {
+               WIFI_AWARE_LOGE("The length of service_specific_info should be equal to or less than %d",
+                               WIFI_AWARE_MAX_SERVICE_SPECIFIC_INFO_LEN);
+               return WIFI_AWARE_ERROR_INVALID_PARAMETER;
+       }
+
+       _wifi_aware_subscribe_set_service_specific_info(subscribe, service_specific_info, len);
+
+       __WIFI_AWARE_FUNC_EXIT__;
+       return WIFI_AWARE_ERROR_NONE;
+}
+
+API int wifi_aware_subscribe_set_match_filter(
+               wifi_aware_subscribe_h subscribe,
+               unsigned char *match_filter, size_t len)
+{
+       __WIFI_AWARE_FUNC_ENTER__;
+       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
+       RET_VAL_IF(subscribe == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_subscribe_h is NULL");
+
+       if (len > WIFI_AWARE_MAX_MATCH_FILTER_LEN) {
+               WIFI_AWARE_LOGE("The length of match_filter should be equal to or less than %d",
+                               WIFI_AWARE_MAX_MATCH_FILTER_LEN);
+               return WIFI_AWARE_ERROR_INVALID_PARAMETER;
+       }
+
+       _wifi_aware_subscribe_set_match_filter(subscribe, match_filter, len);
+       __WIFI_AWARE_FUNC_EXIT__;
+       return WIFI_AWARE_ERROR_NONE;
+}
+
+API int wifi_aware_subscribe_set_enable_termination_event(
+               wifi_aware_subscribe_h subscribe,
+               bool enable)
+{
+       __WIFI_AWARE_FUNC_ENTER__;
+       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
+       RET_VAL_IF(subscribe == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_subscribe_h is NULL");
+
+       _wifi_aware_subscribe_set_enable_termination_event(subscribe, enable);
+
+       __WIFI_AWARE_FUNC_EXIT__;
+       return WIFI_AWARE_ERROR_NONE;
+}
+
+API int wifi_aware_start_subscribe(wifi_aware_subscribe_h subscribe,
+               wifi_aware_subscribed_cb callback, void *user_data)
+{
+       __WIFI_AWARE_FUNC_ENTER__;
+       int ret = WIFI_AWARE_ERROR_NONE;
+
+       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
+       RET_VAL_IF(subscribe == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_subscribe_h is NULL");
+
+       ret = _wifi_aware_subscribe_request(subscribe, callback, user_data);
+       RET_VAL_IF(ret != WIFI_AWARE_ERROR_NONE, ret, "_wifi_aware_subscribe_request");
+
+       __WIFI_AWARE_FUNC_EXIT__;
+       return WIFI_AWARE_ERROR_NONE;
+}
+
+API int wifi_aware_cancel_subscribe(wifi_aware_subscribe_h subscribe)
+{
+       __WIFI_AWARE_FUNC_ENTER__;
+       int ret = WIFI_AWARE_ERROR_NONE;
+
+       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
+
+       ret = _wifi_aware_cancel_subscribe_request(subscribe);
+       RET_VAL_IF(ret != WIFI_AWARE_ERROR_NONE, ret, "_wifi_aware_cancel_subscribe_request");
+
+       __WIFI_AWARE_FUNC_EXIT__;
+       return WIFI_AWARE_ERROR_NONE;
+}
+
+API int wifi_aware_update_subscribe(wifi_aware_subscribe_h subscribe,
+               wifi_aware_subscribed_cb callback, void *user_data)
+{
+       __WIFI_AWARE_FUNC_ENTER__;
+       int ret = WIFI_AWARE_ERROR_NONE;
+
+       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
+       RET_VAL_IF(subscribe == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_subscribe_h is NULL");
+
+       ret = _wifi_aware_update_subscribe_request(subscribe, callback, user_data);
+       RET_VAL_IF(ret != WIFI_AWARE_ERROR_NONE, ret, "_wifi_aware_update_subscribe_request");
+
+       __WIFI_AWARE_FUNC_EXIT__;
+       return WIFI_AWARE_ERROR_NONE;
+}
+
+API int wifi_aware_set_discovery_result_cb(wifi_aware_subscribe_h subscribe,
+               wifi_aware_discovery_result_cb callback, void *user_data)
+{
+       __WIFI_AWARE_FUNC_ENTER__;
+       CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
+
+       _wifi_aware_set_discovery_result_cb(subscribe, callback, user_data);
+
+       __WIFI_AWARE_FUNC_EXIT__;
+       return WIFI_AWARE_ERROR_NONE;
+}
+
+API int wifi_aware_send_message(wifi_aware_peer_h peer,
+               unsigned char *message, size_t len)
 {
        __WIFI_AWARE_FUNC_ENTER__;
        CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
@@ -80,11 +472,10 @@ API int wifi_aware_send_message(wifi_aware_h wifi_aware,
 }
 
 API int wifi_aware_set_received_message_cb(wifi_aware_h wifi_aware,
-               wifi_aware_received_message_cb callback)
+               wifi_aware_received_message_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);
 
        __WIFI_AWARE_FUNC_EXIT__;
        return WIFI_AWARE_ERROR_NONE;
index ddac669..f51c2e3 100644 (file)
@@ -442,13 +442,13 @@ void test_publish()
        RET_IF_LOOP_IS_NULL();
        RET_IF_HANDLE_IS_NULL();
 
-       ret = wifi_aware_publish_create(&publish);
+       ret = wifi_aware_publish_create(g_wifi_aware_handle, &publish);
        __print_result(ret, "wifi_aware_publish_create");
 
        __set_publish_config(publish);
 
        g_publish_handle = publish;
-       ret = wifi_aware_start_publish(g_wifi_aware_handle, publish, __published_cb, NULL);
+       ret = wifi_aware_start_publish(publish, __published_cb, NULL);
        __print_result(ret, "wifi_aware_publish");
 
        //ret = wifi_aware_publish_destroy(publish);
@@ -467,7 +467,7 @@ void test_cancel_publish()
                return;
        }
 
-       ret = wifi_aware_cancel_publish(g_wifi_aware_handle, g_publish_handle);
+       ret = wifi_aware_cancel_publish(g_publish_handle);
        __print_result(ret, "wifi_aware_cancel_publish");
 }
 
@@ -498,7 +498,7 @@ void test_update_publish()
        if (ret != WIFI_AWARE_ERROR_NONE)
                return;
 
-       ret = wifi_aware_update_publish(g_wifi_aware_handle, g_publish_handle, __updated_publish_cb, NULL);
+       ret = wifi_aware_update_publish(g_publish_handle, __updated_publish_cb, NULL);
        __print_result(ret, "wifi_aware_update_publish");
 }
 
@@ -510,12 +510,13 @@ static void __subscribed_cb(wifi_aware_error_e error, wifi_aware_subscribe_h sub
                printf("Subscirbe Request fails. Error: %s\n", __print_error(error));
 }
 
-static void __discovery_result_cb(unsigned int subscribe_id, wifi_aware_peer_h peer,
+static void __discovery_result_cb(wifi_aware_subscribe_h subscribe,
+               wifi_aware_peer_h peer,
                unsigned char *service_specific_info, size_t service_specific_info_len,
                void *user_data)
 {
        printf("Find A Wi-Fi Aware Peer\n");
-       printf("Subscribe ID: %u\n", subscribe_id);
+//     printf("Subscribe ID: %u\n", subscribe_id);
        printf("Service Specific Info\n");
        __print_byte_array(service_specific_info, service_specific_info_len);
 }
@@ -576,15 +577,15 @@ void test_subscribe()
        RET_IF_LOOP_IS_NULL();
        RET_IF_HANDLE_IS_NULL();
 
-       ret = wifi_aware_set_discovery_result_cb(g_wifi_aware_handle, __discovery_result_cb, NULL);
+       ret = wifi_aware_set_discovery_result_cb(g_subscribe_handle, __discovery_result_cb, NULL);
        __print_result(ret, "wifi_aware_set_discovery_result_cb");
 
-       ret = wifi_aware_subscribe_create(&subscribe);
+       ret = wifi_aware_subscribe_create(g_wifi_aware_handle, &subscribe);
        __print_result(ret, "wifi_aware_subscribe_create");
 
        __set_subscribe_config(subscribe);
 
-       ret = wifi_aware_start_subscribe(g_wifi_aware_handle, subscribe, __subscribed_cb, NULL);
+       ret = wifi_aware_start_subscribe(subscribe, __subscribed_cb, NULL);
        __print_result(ret, "wifi_aware_subscribe");
 
        ret = wifi_aware_subscribe_destroy(subscribe);
@@ -603,7 +604,7 @@ void test_cancel_subscribe()
                return;
        }
 
-       ret = wifi_aware_cancel_subscribe(g_wifi_aware_handle, g_subscribe_handle);
+       ret = wifi_aware_cancel_subscribe(g_subscribe_handle);
        __print_result(ret, "wifi_aware_cancel_subscribe");
 }