wifi_aware_enabled_cb callback, void *user_data);
/**
+ * @brief
+ * @since_tizen 6.0
+ * @param[in] error
+ * @param[in] user_data
+ * @return 0 on success, otherwise a negative error value
+ * @retval #WIFI_AWARE_ERROR_NONE
+ */
+typedef void(*wifi_aware_disabled_cb)(wifi_aware_error_e error, void *user_data);
+
+/**
+ * @brief Disable Wi-Fi Aware functions.
+ * @remark If Wi-Fi Aware has not been enabled, an error is immediately returend without invoking the callback.
+ * @since_tizen 6.0
+ * @param[in] wifi_aware The handle for the Wi-Fi aware
+ * @param[in] callback The result of disable request is asynchrously delivered
+ * @param[in] user_data User data
+ * @return 0 on success, otherwise a negative error value
+ * @retval #WIFI_AWARE_ERROR_NONE
+ */
+int wifi_aware_disable(wifi_aware_h wifi_aware,
+ wifi_aware_disabled_cb callback, void *user_data);
+
+/**
* @brief This callback delivers the result of a Publish request.
* If the request is successfully done, @a publish_id is set to the Wi-Fi Aware service.
* @a publish_id can be used to update or cancel the service.
int wifi_aware_gdbus_enable(wifi_aware_h wifi_aware,
wifi_aware_enable_request_s *req, GAsyncReadyCallback cb);
+int wifi_aware_gdbus_disable(wifi_aware_h wifi_aware, GAsyncReadyCallback cb);
int wifi_aware_gdbus_publish(wifi_aware_publish_h publish, int client_id, GAsyncReadyCallback cb);
int wifi_aware_gdbus_cancel_publish(wifi_aware_publish_h publish, int client_id);
int wifi_aware_gdbus_update_publish(wifi_aware_publish_h publish, int client_id, GAsyncReadyCallback cb);
int _wifi_aware_init();
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_is_enabled(wifi_aware_h wifi_aware);
+
+void _add_disabled_callback(wifi_aware_h wifi_aware, wifi_aware_disabled_cb callback, void *user_data);
+int _wifi_aware_disable_request(wifi_aware_h wifi_aware);
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);
return ret;
}
+int wifi_aware_gdbus_disable(wifi_aware_h wifi_aware, GAsyncReadyCallback cb)
+{
+ __WIFI_AWARE_FUNC_ENTER__;
+ int ret = WIFI_AWARE_ERROR_NONE;
+
+ ret = __wifi_aware_dbus_method_call_async(
+ WIFI_AWARE_DISCOVERY_INTERFACE,
+ WIFI_AWARE_DISCOVERY_PATH,
+ "Disable", NULL, cb, wifi_aware);
+
+ if (ret != WIFI_AWARE_ERROR_NONE) {
+ WIFI_AWARE_LOGE("wifi_aware_dbus_method_call_async() failed");
+ __WIFI_AWARE_FUNC_EXIT__;
+ return ret;
+ }
+
+ __WIFI_AWARE_FUNC_EXIT__;
+ return ret;
+}
+
int wifi_aware_gdbus_publish(wifi_aware_publish_h publish, int client_id, GAsyncReadyCallback cb)
{
__WIFI_AWARE_FUNC_ENTER__;
typedef struct {
int client_id;
+
wifi_aware_enabled_cb enabled_cb;
void *enabled_cb_data;
+
+ wifi_aware_disabled_cb disabled_cb;
+ void *disabled_cb_data;
} wifi_aware_s;
typedef struct {
aware->enabled_cb(error, aware->enabled_cb_data);
}
+static wifi_aware_error_e __parse_disable_reply(GVariant *reply, wifi_aware_s *aware)
+{
+ int ret;
+ wifi_aware_error_e error;
+
+ g_variant_get(reply, "(i)", &ret);
+ error = _wifi_aware_convert_nan_manager_error(ret);
+ if (error == WIFI_AWARE_ERROR_NONE)
+ aware->client_id = -1; // reset client_id
+
+ return error;
+}
+
+static void __disable_request_reply(GObject *src, GAsyncResult *res, gpointer user_data)
+{
+ GDBusConnection *conn = NULL;
+ GError *dbus_error = NULL;
+ GVariant *reply = NULL;
+ wifi_aware_s *aware = (wifi_aware_s *)user_data;
+ wifi_aware_error_e error = WIFI_AWARE_ERROR_NONE;
+
+ WIFI_AWARE_LOGI("Reply for Disable Request");
+
+ conn = G_DBUS_CONNECTION(src);
+ reply = g_dbus_connection_call_finish(conn, res, &dbus_error);
+
+ if (dbus_error != NULL) {
+ WIFI_AWARE_LOGE("Disable Request failure: %s", dbus_error->message);
+ error = _wifi_aware_convert_error_string_to_enum(dbus_error->message);
+ g_error_free(dbus_error);
+ }
+
+ error = __parse_disable_reply(reply, aware);
+
+ if (aware->disabled_cb)
+ aware->disabled_cb(error, aware->enabled_cb_data);
+}
+
static void __add_published_callback(wifi_aware_publish_h publish,
wifi_aware_published_cb callback, void *user_data)
{
return wifi_aware_gdbus_enable(wifi_aware, req, __enable_request_reply);
}
+int _wifi_aware_is_enabled(wifi_aware_h wifi_aware)
+{
+ wifi_aware_s *aware = (wifi_aware_s *)wifi_aware;
+ return (aware->client_id > 0 ? 1 : 0);
+}
+
+void _add_disabled_callback(wifi_aware_h wifi_aware,
+ wifi_aware_disabled_cb callback, void *user_data)
+{
+ wifi_aware_s *aware = (wifi_aware_s *)wifi_aware;
+ aware->disabled_cb = callback;
+ aware->disabled_cb_data = user_data;
+}
+
+int _wifi_aware_disable_request(wifi_aware_h wifi_aware)
+{
+ return wifi_aware_gdbus_disable(wifi_aware, __disable_request_reply);
+}
+
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;
return WIFI_AWARE_ERROR_NONE;
}
+API int wifi_aware_diable(wifi_aware_h wifi_aware,
+ wifi_aware_disabled_cb callback, void *user_data)
+{
+ int ret = WIFI_AWARE_ERROR_NONE;
+
+ __WIFI_AWARE_FUNC_ENTER__;
+ CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
+
+ RET_VAL_IF(_wifi_aware_is_enabled(wifi_aware) == 0,
+ WIFI_AWARE_ERROR_INVALID_OPERATION,
+ "_wifi_aware_is_enabled");
+
+ _add_disabled_callback(wifi_aware, callback, user_data);
+
+ ret = _wifi_aware_disable_request(wifi_aware);
+ RET_VAL_IF(ret != WIFI_AWARE_ERROR_NONE, ret, "_wifi_aware_disable_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;