From c5dc2654d815f88b50d4a6aaee3483403302ccac Mon Sep 17 00:00:00 2001 From: Nishant Chaprana Date: Mon, 30 Jul 2018 12:06:46 +0530 Subject: [PATCH] Implemented wifi_direct_get_display() and wifi_direct_get_display_availability() Change-Id: I4571e8ec0ff98ed6524aefbc7861663a9dfb37d3 Signed-off-by: Nishant Chaprana --- packaging/capi-network-wifi-direct.spec | 2 +- src/wifi-direct-client-proxy.c | 84 +++++++++++++++++++++++++++++++++ test/wifi_direct_test.c | 30 ++++++++++++ 3 files changed, 115 insertions(+), 1 deletion(-) diff --git a/packaging/capi-network-wifi-direct.spec b/packaging/capi-network-wifi-direct.spec index c562d53..7cf4722 100644 --- a/packaging/capi-network-wifi-direct.spec +++ b/packaging/capi-network-wifi-direct.spec @@ -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 diff --git a/src/wifi-direct-client-proxy.c b/src/wifi-direct-client-proxy.c index 5e3123c..5f1e50f 100644 --- a/src/wifi-direct-client-proxy.c +++ b/src/wifi-direct-client-proxy.c @@ -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) { diff --git a/test/wifi_direct_test.c b/test/wifi_direct_test.c index a1ef539..d4ea0a7 100644 --- a/test/wifi_direct_test.c +++ b/test/wifi_direct_test.c @@ -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)) { -- 2.7.4