Add Dbus Method Call to open data path
authorCheoleun Moon <chleun.moon@samsung.com>
Mon, 9 Mar 2020 07:14:23 +0000 (16:14 +0900)
committerCheoleun Moon <chleun.moon@samsung.com>
Mon, 9 Mar 2020 07:14:23 +0000 (16:14 +0900)
src/include/wifi-aware-gdbus.h
src/include/wifi-aware-private.h
src/wifi-aware-data-path.c
src/wifi-aware-gdbus.c
src/wifi-aware-private.c

index b08a946..54bdd80 100644 (file)
@@ -77,15 +77,15 @@ int wifi_aware_gdbus_followup(wifi_aware_session_h session,
                GAsyncReadyCallback cb, void *user_data);
 
 int wifi_aware_gdbus_open_ndp(wifi_aware_data_path_h data_path,
-               uint16_t pub_sub_id, unsigned int peer_id,
+               int client_id, uint16_t pub_sub_id, unsigned int peer_id,
                wifi_aware_data_path_role_e role, int port,
                GAsyncReadyCallback cb);
 int wifi_aware_gdbus_open_ndp_psk(wifi_aware_data_path_h data_path,
-               uint16_t pub_sub_id, unsigned int peer_id,
+               int client_id, uint16_t pub_sub_id, unsigned int peer_id,
                wifi_aware_data_path_role_e role, int port,
                const char *psk, GAsyncReadyCallback cb);
 int wifi_aware_gdbus_open_ndp_pmk(wifi_aware_data_path_h data_path,
-               uint16_t pub_sub_id, unsigned int peer_id,
+               int client_id, uint16_t pub_sub_id, unsigned int peer_id,
                wifi_aware_data_path_role_e role, int port,
                const unsigned char *pmk,
                GAsyncReadyCallback cb);
index a183774..38f8173 100644 (file)
@@ -44,6 +44,7 @@ void _wifi_aware_session_handle_destroy(wifi_aware_session_h session_handle);
 uint16_t _wifi_aware_session_get_pub_sub_id(wifi_aware_session_h session);
 bool _wifi_aware_session_is_publish_type(wifi_aware_session_h session_handle);
 bool _wifi_aware_session_is_subscribe_type(wifi_aware_session_h session_handle);
+int _wifi_aware_get_client_id();
 
 int _wifi_aware_publish_handle_create(wifi_aware_publish_h *publish);
 void _wifi_aware_publish_set_default_values(wifi_aware_publish_h publish);
index 795f9a7..ef494f8 100644 (file)
@@ -281,6 +281,7 @@ int _wifi_aware_data_path_open(wifi_aware_data_path_h data_path,
        switch (ndp->security_type) {
        case WIFI_AWARE_SECURITY_TYPE_OPEN:
                return wifi_aware_gdbus_open_ndp(data_path,
+                               _wifi_aware_get_client_id(),
                                _wifi_aware_session_get_pub_sub_id(ndp->session),
                                _wifi_aware_peer_get_id(ndp->peer),
                                ndp->role,
@@ -288,6 +289,7 @@ int _wifi_aware_data_path_open(wifi_aware_data_path_h data_path,
                                __data_path_open_reply);
        case WIFI_AWARE_SECURITY_TYPE_PSK:
                return wifi_aware_gdbus_open_ndp_psk(data_path,
+                               _wifi_aware_get_client_id(),
                                _wifi_aware_session_get_pub_sub_id(ndp->session),
                                _wifi_aware_peer_get_id(ndp->peer),
                                ndp->role,
@@ -296,6 +298,7 @@ int _wifi_aware_data_path_open(wifi_aware_data_path_h data_path,
                                __data_path_open_reply);
        case WIFI_AWARE_SECURITY_TYPE_PMK:
                return wifi_aware_gdbus_open_ndp_pmk(data_path,
+                               _wifi_aware_get_client_id(),
                                _wifi_aware_session_get_pub_sub_id(ndp->session),
                                _wifi_aware_peer_get_id(ndp->peer),
                                ndp->role,
index 0a02b15..b250f32 100644 (file)
@@ -366,6 +366,22 @@ static GVariant *__create_followup_request_param(int client_id, uint16_t pub_sub
        return params;
 }
 
+static GVariant *__create_data_path_request_param(int client_id, uint16_t pub_sub_id,
+               unsigned int peer_id, wifi_aware_data_path_role_e role, int port)
+{
+       return g_variant_new("iquii", client_id, pub_sub_id, peer_id, role, port);
+}
+
+static GVariant *__append_psk(GVariant *params, const char *psk)
+{
+       return g_variant_new("vs", params, psk);
+}
+
+static GVariant *__append_pmk(GVariant *params, const unsigned char *pmk)
+{
+       return g_variant_new("vv", params, __pack_byte_array(pmk, WIFI_AWARE_PMK_LEN));
+}
+
 int wifi_aware_gdbus_enable(wifi_aware_enable_request_s *req, GAsyncReadyCallback cb)
 {
        __WIFI_AWARE_FUNC_ENTER__;
@@ -628,27 +644,75 @@ int wifi_aware_gdbus_followup(wifi_aware_session_h session,
 }
 
 int wifi_aware_gdbus_open_ndp(wifi_aware_data_path_h data_path,
-               uint16_t pub_sub_id, unsigned int peer_id,
+               int client_id, uint16_t pub_sub_id, unsigned int peer_id,
                wifi_aware_data_path_role_e role, int port,
                GAsyncReadyCallback cb)
 {
-       return WIFI_AWARE_ERROR_NONE;
+       __WIFI_AWARE_FUNC_ENTER__;
+       GVariant *params = NULL;
+       int ret = WIFI_AWARE_ERROR_NONE;
+
+       params = __create_data_path_request_param(client_id, pub_sub_id, peer_id, role, port);
+       WIFI_AWARE_LOGD("created parameters");
+       DBUS_DEBUG_VARIANT(params);
+
+       ret = __wifi_aware_dbus_method_call_async(
+               WIFI_AWARE_DISCOVERY_INTERFACE,
+               WIFI_AWARE_DISCOVERY_PATH,
+               "OpenDataPath", params, cb, NULL);
+
+       __WIFI_AWARE_FUNC_EXIT__;
+       return ret;
 }
 
 int wifi_aware_gdbus_open_ndp_psk(wifi_aware_data_path_h data_path,
-               uint16_t pub_sub_id, unsigned int peer_id,
+               int client_id, uint16_t pub_sub_id, unsigned int peer_id,
                wifi_aware_data_path_role_e role, int port, const char *psk,
                GAsyncReadyCallback cb)
 {
-       return WIFI_AWARE_ERROR_NONE;
+       __WIFI_AWARE_FUNC_ENTER__;
+       GVariant *params = NULL;
+       GVariant *params_psk = NULL;
+       int ret = WIFI_AWARE_ERROR_NONE;
+
+       params = __create_data_path_request_param(client_id, pub_sub_id, peer_id, role, port);
+       params_psk = __append_psk(params, psk);
+       g_variant_unref(params);
+       WIFI_AWARE_LOGD("created parameters");
+       DBUS_DEBUG_VARIANT(params_psk);
+
+       ret = __wifi_aware_dbus_method_call_async(
+               WIFI_AWARE_DISCOVERY_INTERFACE,
+               WIFI_AWARE_DISCOVERY_PATH,
+               "OpenDataPathPSK", params_psk, cb, NULL);
+
+       __WIFI_AWARE_FUNC_EXIT__;
+       return ret;
 }
 
 int wifi_aware_gdbus_open_ndp_pmk(wifi_aware_data_path_h data_path,
-               uint16_t pub_sub_id, unsigned int peer_id,
+               int client_id, uint16_t pub_sub_id, unsigned int peer_id,
                wifi_aware_data_path_role_e role, int port, const unsigned char *pmk,
                GAsyncReadyCallback cb)
 {
-       return WIFI_AWARE_ERROR_NONE;
+       __WIFI_AWARE_FUNC_ENTER__;
+       GVariant *params = NULL;
+       GVariant *params_pmk = NULL;
+       int ret = WIFI_AWARE_ERROR_NONE;
+
+       params = __create_data_path_request_param(client_id, pub_sub_id, peer_id, role, port);
+       params_pmk = __append_pmk(params, pmk);
+       g_variant_unref(params);
+       WIFI_AWARE_LOGD("created parameters");
+       DBUS_DEBUG_VARIANT(params_pmk);
+
+       ret = __wifi_aware_dbus_method_call_async(
+               WIFI_AWARE_DISCOVERY_INTERFACE,
+               WIFI_AWARE_DISCOVERY_PATH,
+               "OpenDataPathPMK", params_pmk, cb, NULL);
+
+       __WIFI_AWARE_FUNC_EXIT__;
+       return ret;
 }
 
 int wifi_aware_gdbus_ndp_close(wifi_aware_data_path_h data_path,
index 2be8729..49ae1f0 100644 (file)
@@ -188,7 +188,7 @@ static bool __session_is_requested(wifi_aware_session_h session_handle)
        return session->is_requested;
 }
 
-static int __get_client_id()
+int _wifi_aware_get_client_id()
 {
        return g_wifi_aware->client_id;
 }
@@ -608,7 +608,7 @@ int _wifi_aware_publish_request(wifi_aware_session_h session,
        __session_set_requested(session, true);
 
        ret = wifi_aware_gdbus_publish(session, publish,
-                       __get_client_id(),
+                       _wifi_aware_get_client_id(),
                        __publish_request_reply);
 
        if (ret != WIFI_AWARE_ERROR_NONE) {
@@ -639,7 +639,7 @@ int _wifi_aware_update_publish_request(wifi_aware_session_h session,
        __session_set_requested(session, true);
 
        ret = wifi_aware_gdbus_update_publish(session,  publish,
-                       __get_client_id(),
+                       _wifi_aware_get_client_id(),
                        __publish_request_reply);
 
        if (ret != WIFI_AWARE_ERROR_NONE) {
@@ -744,7 +744,7 @@ int _wifi_aware_subscribe_request(wifi_aware_session_h session,
        __session_set_requested(session, true);
 
        ret = wifi_aware_gdbus_subscribe(session, subscribe,
-                       __get_client_id(),
+                       _wifi_aware_get_client_id(),
                        __subscribe_request_reply);
 
        if (ret != WIFI_AWARE_ERROR_NONE) {
@@ -776,7 +776,7 @@ int _wifi_aware_update_subscribe_request(wifi_aware_session_h session,
        int ret = WIFI_AWARE_ERROR_NONE;
 
        ret = wifi_aware_gdbus_update_subscribe(session, subscribe,
-                       __get_client_id(),
+                       _wifi_aware_get_client_id(),
                        __subscribe_request_reply);
 
        if (ret != WIFI_AWARE_ERROR_NONE) {
@@ -797,7 +797,7 @@ static int __wifi_aware_cancel_publish_request(wifi_aware_session_h session)
                        "The publish is not done yet");
 
        __session_deregister_signals(session);
-       return wifi_aware_gdbus_cancel_publish(session, __get_client_id());
+       return wifi_aware_gdbus_cancel_publish(session, _wifi_aware_get_client_id());
 }
 
 static int __wifi_aware_cancel_subscribe_request(wifi_aware_session_h session)
@@ -811,7 +811,7 @@ static int __wifi_aware_cancel_subscribe_request(wifi_aware_session_h session)
 
        __session_deregister_signals(session);
        return wifi_aware_gdbus_cancel_subscribe(session,
-                       __get_client_id());
+                       _wifi_aware_get_client_id());
 }
 
 int _wifi_aware_session_cancel(wifi_aware_session_h session)
@@ -1099,7 +1099,7 @@ int _wifi_aware_send_message(wifi_aware_session_h session,
 
        return wifi_aware_gdbus_followup(
                        session,
-                       __get_client_id(),
+                       _wifi_aware_get_client_id(),
                        pub_sub_id,
                        _wifi_aware_peer_get_id(peer),
                        message, len,