Implemented wifi_direct_get_display() and wifi_direct_get_display_availability() 92/185392/1
authorNishant Chaprana <n.chaprana@samsung.com>
Mon, 30 Jul 2018 06:36:46 +0000 (12:06 +0530)
committerNishant Chaprana <n.chaprana@samsung.com>
Mon, 30 Jul 2018 06:36:46 +0000 (12:06 +0530)
Change-Id: I4571e8ec0ff98ed6524aefbc7861663a9dfb37d3
Signed-off-by: Nishant Chaprana <n.chaprana@samsung.com>
packaging/capi-network-wifi-direct.spec
src/wifi-direct-client-proxy.c
test/wifi_direct_test.c

index c562d53422ecbdf56f61e6dfe5ae4230f2fd0c93..7cf4722450d1794d6d28859cc3dc9513fc89fa14 100644 (file)
@@ -3,7 +3,7 @@
 
 Name:       capi-network-wifi-direct
 Summary:    Network WiFi-Direct Library
-Version:    1.2.96
+Version:    1.2.97
 Release:    1
 Group:      Network & Connectivity/API
 License:    Apache-2.0
index 5e3123cf6af4cfc84bc752a6f054d49ccb7c47af..5f1e50ff0dbe387c67304e3db1770bbc6c436e4e 100644 (file)
@@ -4321,6 +4321,90 @@ int wifi_direct_set_display_availability(bool availability)
        return ret;
 }
 
+int wifi_direct_get_display(wifi_direct_display_type_e *type, int *port, int *hdcp)
+{
+       __WDC_LOG_FUNC_START__;
+
+       CHECK_FEATURE_SUPPORTED(WIFIDIRECT_DISPLAY_FEATURE);
+
+       GError* error = NULL;
+       GVariant *reply = NULL;
+       int ret = WIFI_DIRECT_ERROR_NONE;
+       int val = 0;
+
+       if (g_client_info.is_registered == false) {
+               WDC_LOGE("Client is NOT registered");
+               __WDC_LOG_FUNC_END__;
+               return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
+       }
+
+       if (!type || !port || !hdcp) {
+               WDC_LOGE("Invalid paramaeters passed!");
+               __WDC_LOG_FUNC_END__;
+               return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
+       }
+
+       reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_DISPLAY_INTERFACE,
+                                         "GetConfig",
+                                         NULL,
+                                         &error);
+
+       ret = __net_wifidirect_gerror_to_enum(error);
+       if (ret != WIFI_DIRECT_ERROR_NONE)
+               return ret;
+
+       g_variant_get(reply, "(iiii)", &ret, &val, port, hdcp);
+       *type = val;
+       g_variant_unref(reply);
+
+       WDC_LOGD("%s() return : [%d]", __func__, ret);
+       __WDC_LOG_FUNC_END__;
+
+       return ret;
+}
+
+int wifi_direct_get_display_availability(bool *availability)
+{
+       __WDC_LOG_FUNC_START__;
+
+       CHECK_FEATURE_SUPPORTED(WIFIDIRECT_DISPLAY_FEATURE);
+
+       GError* error = NULL;
+       GVariant *reply = NULL;
+       int ret = WIFI_DIRECT_ERROR_NONE;
+       int val = 0;
+
+       if (g_client_info.is_registered == false) {
+               WDC_LOGE("Client is NOT registered.");
+               __WDC_LOG_FUNC_END__;
+               return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
+       }
+
+       if (!availability) {
+               WDC_LOGE("Invalid paramaeters passed!");
+               __WDC_LOG_FUNC_END__;
+               return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
+       }
+
+       reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_DISPLAY_INTERFACE,
+                                         "GetAvailiability",
+                                         NULL,
+                                         &error);
+
+       ret = __net_wifidirect_gerror_to_enum(error);
+       if (ret != WIFI_DIRECT_ERROR_NONE)
+               return ret;
+
+       g_variant_get(reply, "(ii)", &ret, &val);
+       *availability = val;
+       g_variant_unref(reply);
+
+       WDC_LOGD("%s() return : [%d]", __func__, ret);
+       __WDC_LOG_FUNC_END__;
+
+       return ret;
+}
+
 //LCOV_EXCL_START
 int wifi_direct_get_peer_display_type(char *mac_address, wifi_direct_display_type_e *type)
 {
index a1ef539c1a2a4fa46151b0227649dd85fcd37c3f..d4ea0a7d27842ff1a964a2387346995e36ebb12e 100644 (file)
@@ -166,6 +166,8 @@ enum {
        CMD_DEINIT_DISPLAY,
        CMD_SET_DISPLAY,
        CMD_SET_DISPLAY_AVAILABILITY,
+       CMD_GET_DISPLAY,
+       CMD_GET_DISPLAY_AVAILABILITY,
        CMD_GET_PEER_DISPLAY_TYPE,
        CMD_GET_PEER_DISPLAY_AVAILABILITY,
        CMD_GET_PEER_DISPLAY_HDCP,
@@ -295,6 +297,8 @@ menu_str_t g_menu_str[] = {
                { CMD_DEINIT_DISPLAY, "CMD_DEINIT_DISPLAY" },
                { CMD_SET_DISPLAY, "CMD_SET_DISPLAY" },
                { CMD_SET_DISPLAY_AVAILABILITY, "CMD_SET_DISPLAY_AVAILABILITY" },
+               { CMD_GET_DISPLAY, "CMD_GET_DISPLAY" },
+               { CMD_GET_DISPLAY_AVAILABILITY, "CMD_GET_DISPLAY_AVAILABILITY" },
                { CMD_GET_PEER_DISPLAY_TYPE, "CMD_GET_PEER_DISPLAY_TYPE" },
                { CMD_GET_PEER_DISPLAY_AVAILABILITY, "CMD_GET_PEER_DISPLAY_AVAILABILITY" },
                { CMD_GET_PEER_DISPLAY_HDCP, "CMD_GET_PEER_DISPLAY_HDCP" },
@@ -2470,6 +2474,32 @@ void process_input(const char *input, gpointer user_data)
                }
        }
        break;
+       case CMD_GET_DISPLAY:
+       {
+               if (ad != NULL) {
+                       wifi_direct_display_type_e type;
+                       int port;
+                       int hdcp;
+
+                       result = wifi_direct_get_display(&type, &port, &hdcp);
+
+                       printf("wifi_direct_get_display() result=[%d] type=[%d] port=[%d] hdcp=[%d]\n", result, type, port, hdcp);
+                       break;
+               }
+       }
+       break;
+       case CMD_GET_DISPLAY_AVAILABILITY:
+       {
+               if (ad != NULL) {
+                       bool availability;
+
+                       result = wifi_direct_get_display_availability(&availability);
+
+                       printf("wifi_direct_get_display_availability() result=[%d] availability=[%d]\n", result, availability);
+                       break;
+               }
+       }
+       break;
        case CMD_GET_PEER_DISPLAY_TYPE:
                if (ad != NULL) {
                        if (select_peer(ad)) {