Added 'GetConfig' and 'GetAvailiability' on display interface. 88/185388/1 accepted/tizen/unified/20180801.144810 submit/tizen/20180731.072936
authorNishant Chaprana <n.chaprana@samsung.com>
Mon, 30 Jul 2018 06:26:35 +0000 (11:56 +0530)
committerNishant Chaprana <n.chaprana@samsung.com>
Mon, 30 Jul 2018 06:26:35 +0000 (11:56 +0530)
This patch adds implementation for GetConfig and GetAvailability methods
on display interface to get own device's wifi display details.

Change-Id: Ia6ee4054fafc92ab83eeb2cf419b5c8bb059d2d6
Signed-off-by: Nishant Chaprana <n.chaprana@samsung.com>
include/wifi-direct-manager.h
include/wifi-direct-method.h
packaging/wifi-direct-manager.spec
src/wifi-direct-dbus.c
src/wifi-direct-iface.c
src/wifi-direct-manager.c
src/wifi-direct-method.c

index 7f3d192..7433baa 100644 (file)
@@ -230,6 +230,8 @@ int wfd_manager_get_goup_ifname(char **ifname);
 wfd_device_s *wfd_manager_get_peer_by_addr(wfd_manager_s *manager, unsigned char *peer_addr);
 int wfd_manager_set_display_device(int type, int port, int hdcp);
 int wfd_manager_set_session_availability(int availability);
+int wfd_manager_get_display_device(int *type, int *port, int *hdcp);
+int wfd_manager_get_session_availability(int *availability);
 int wfd_manager_start_discovery(wfd_manager_s *manager, int mode, int timeout,
                                const char* type, int channel, int frequency);
 int wfd_manager_cancel_discovery(wfd_manager_s *manager);
index ddf99ca..dd9c656 100644 (file)
@@ -103,6 +103,8 @@ void display_init_handler(GVariant *parameters, void *dest);
 void display_deinit_handler(GVariant *parameters, void *dest);
 void display_set_config_handler(GVariant *parameters, void *dest);
 void display_set_avail_handler(GVariant *parameters, void *dest);
+void display_get_config_handler(GVariant *parameters, void *dest);
+void display_get_avail_handler(GVariant *parameters, void *dest);
 void display_get_peer_type_handler(GVariant *parameters, void *dest);
 void display_get_peer_avail_handler(GVariant *parameters, void *dest);
 void display_get_peer_hdcp_handler(GVariant *parameters, void *dest);
index a48d894..c873900 100644 (file)
@@ -6,7 +6,7 @@
 
 Name:          wifi-direct-manager
 Summary:       Wi-Fi Direct manger
-Version:       1.2.269
+Version:       1.2.270
 Release:       1
 Group:      Network & Connectivity/Wireless
 License:    Apache-2.0
index a7bf294..c62979a 100644 (file)
@@ -394,6 +394,16 @@ const gchar wfd_manager_introspection_xml[] = {
                                "<arg type='i' name='availability' direction='in'/>"
                                "<arg type='i' name='error_code' direction='out'/>"
                        "</method>"
+                       "<method name='GetConfig'>"
+                               "<arg type='i' name='error_code' direction='out'/>"
+                               "<arg type='i' name='type' direction='out'/>"
+                               "<arg type='i' name='port' direction='out'/>"
+                               "<arg type='i' name='hdcp' direction='out'/>"
+                       "</method>"
+                       "<method name='GetAvailiability'>"
+                               "<arg type='i' name='error_code' direction='out'/>"
+                               "<arg type='i' name='availability' direction='out'/>"
+                       "</method>"
                        "<method name='GetPeerType'>"
                                "<arg type='s' name='peer_mac_addr' direction='in'/>"
                                "<arg type='i' name='error_code' direction='out'/>"
index 073e485..6bb7360 100644 (file)
@@ -156,6 +156,8 @@ static wfd_manager_iface_method_handler wfd_manager_iface_display[] = {
                {"Deinit", display_deinit_handler},
                {"SetConfig", display_set_config_handler},
                {"SetAvailiability", display_set_avail_handler},
+               {"GetConfig", display_get_config_handler},
+               {"GetAvailiability", display_get_avail_handler},
                {"GetPeerType", display_get_peer_type_handler},
                {"GetPeerAvailability", display_get_peer_avail_handler},
                {"GetPeerHdcp",  display_get_peer_hdcp_handler},
index a67df0d..40b30b1 100644 (file)
@@ -1610,6 +1610,44 @@ int wfd_manager_set_session_availability(int availability)
        return res;
 }
 
+int wfd_manager_get_display_device(int *type, int *port, int *hdcp)
+{
+       __WDS_LOG_FUNC_ENTER__;//LCOV_EXCL_LINE
+       wfd_device_s *device = g_manager->local;
+       int res = 0;
+
+       if (!device || !type || !port || !hdcp) {
+               WDS_LOGE("Invalid parameter");//LCOV_EXCL_LINE
+               __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
+               return -1;
+       }
+
+       *type = device->display.type;
+       *port = device->display.port;
+       *hdcp = device->display.hdcp_support;
+
+       __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
+       return res;
+}
+
+int wfd_manager_get_session_availability(int *availability)
+{
+       __WDS_LOG_FUNC_ENTER__;//LCOV_EXCL_LINE
+       wfd_device_s *device = g_manager->local;
+       int res = 0;
+
+       if (!device || !availability) {
+               WDS_LOGE("Invalid parameter");//LCOV_EXCL_LINE
+               __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
+               return -1;
+       }
+
+       *availability = device->display.availability;
+
+       __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
+       return res;
+}
+
 int wfd_manager_start_discovery(wfd_manager_s *manager, int mode, int timeout,
                                const char* type, int channel, int frequency)
 {
index 2fbc2c9..1246633 100644 (file)
@@ -2310,6 +2310,66 @@ void display_set_avail_handler(GVariant *parameters, void *dest)
        return;
 }
 
+void display_get_config_handler(GVariant *parameters, void *dest)
+{
+       __WDS_LOG_FUNC_ENTER__;//LCOV_EXCL_LINE
+       wfd_manager_s *manager = wfd_get_manager();
+       GVariant *return_parameters = NULL;
+       int type, port, hdcp;
+       int ret;
+
+       WIFI_DIRECT_METHOD_RET_IF_NULL(manager);
+
+       if (!manager->is_wifi_display_supported)
+               WIFI_DIRECT_METHOD_RET_ERR(WIFI_DIRECT_ERROR_NOT_SUPPORTED, dest);
+
+       if (manager->state < WIFI_DIRECT_STATE_ACTIVATED)
+               WIFI_DIRECT_METHOD_RET_ERR(WIFI_DIRECT_ERROR_NOT_PERMITTED, dest);
+
+       ret = wfd_manager_get_display_device(&type, &port, &hdcp);
+       if (ret < 0)
+               WIFI_DIRECT_METHOD_RET_ERR(WIFI_DIRECT_ERROR_OPERATION_FAILED, dest);
+
+       WDS_LOGD("type %d port %d hdcp %d", type, port, hdcp);
+
+       ret = WIFI_DIRECT_ERROR_NONE;
+       return_parameters = g_variant_new("(iiii)", ret, type, port, hdcp);
+       wfd_manager_dbus_reply_params((GDBusMethodInvocation *)dest, return_parameters);
+
+       __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
+       return;
+}
+
+void display_get_avail_handler(GVariant *parameters, void *dest)
+{
+       __WDS_LOG_FUNC_ENTER__;//LCOV_EXCL_LINE
+       wfd_manager_s *manager = wfd_get_manager();
+       GVariant *return_parameters = NULL;
+       int availability;
+       int ret;
+
+       WIFI_DIRECT_METHOD_RET_IF_NULL(manager);
+
+       if (!manager->is_wifi_display_supported)
+               WIFI_DIRECT_METHOD_RET_ERR(WIFI_DIRECT_ERROR_NOT_SUPPORTED, dest);
+
+       if (manager->state < WIFI_DIRECT_STATE_ACTIVATED)
+               WIFI_DIRECT_METHOD_RET_ERR(WIFI_DIRECT_ERROR_NOT_PERMITTED, dest);
+
+       ret = wfd_manager_get_session_availability(&availability);
+       if (ret < 0)
+               WIFI_DIRECT_METHOD_RET_ERR(WIFI_DIRECT_ERROR_OPERATION_FAILED, dest);
+
+       WDS_LOGD("availability %d", availability);
+
+       ret = WIFI_DIRECT_ERROR_NONE;
+       return_parameters = g_variant_new("(ii)", ret, availability);
+       wfd_manager_dbus_reply_params((GDBusMethodInvocation *)dest, return_parameters);
+
+       __WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
+       return;
+}
+
 void display_get_peer_type_handler(GVariant *parameters, void *dest)
 {
        __WDS_LOG_FUNC_ENTER__;//LCOV_EXCL_LINE