[wifi-direct]: Added support of "wifi_direct_get_peer_rssi" CAPI 27/90327/7 accepted/tizen/3.0/ivi/20161011.070328 accepted/tizen/3.0/mobile/20161015.034354 accepted/tizen/3.0/tv/20161016.005957 accepted/tizen/3.0/wearable/20161015.084435 accepted/tizen/common/20161006.153621 accepted/tizen/ivi/20161006.080220 accepted/tizen/mobile/20161006.080118 accepted/tizen/tv/20161006.080145 accepted/tizen/wearable/20161006.080201 submit/tizen/20161006.010203 submit/tizen_3.0_ivi/20161010.000008 submit/tizen_3.0_mobile/20161015.000007 submit/tizen_3.0_tv/20161015.000006 submit/tizen_3.0_wearable/20161015.000006
authorManeesh Jain <maneesh.jain@samsung.com>
Thu, 8 Sep 2016 11:59:24 +0000 (17:29 +0530)
committerManeesh Jain <maneesh.jain@samsung.com>
Thu, 29 Sep 2016 11:23:21 +0000 (04:23 -0700)
Description: This CAPI is used to extract the signal strength(i.e. RSSI)
of Peer Device.

Change-Id: Ief91065b8128b29390ff45dc97b4db5969439c92
Signed-off-by: Maneesh Jain <maneesh.jain@samsung.com>
src/wifi-direct-client-proxy.c
test/test-wifi-direct.c

index 02d4236..f7afeb1 100644 (file)
@@ -4379,4 +4379,51 @@ int wifi_direct_set_auto_group_removal(bool enable)
        __WDC_LOG_FUNC_END__;
        return ret;
 }
+
+int wifi_direct_get_peer_rssi(char *mac_address, int *rssi)
+{
+       __WDC_LOG_FUNC_START__;
+
+       CHECK_FEATURE_SUPPORTED(WIFIDIRECT_FEATURE);
+
+       GError* error = NULL;
+       GVariant *reply = NULL;
+       GVariant *params = NULL;
+       int val = 0;
+       int ret = WIFI_DIRECT_ERROR_NONE;
+
+       if (g_client_info.is_registered == false) {
+               WDC_LOGE("Client is NOT registered");
+               __WDC_LOG_FUNC_END__;
+               return WIFI_DIRECT_ERROR_NOT_INITIALIZED;
+       }
+
+       if (!mac_address || !rssi) {
+               WDC_LOGE("NULL Param!");
+               __WDC_LOG_FUNC_END__;
+               return WIFI_DIRECT_ERROR_INVALID_PARAMETER;
+       }
+
+       params = g_variant_new("(s)", mac_address);
+
+       reply = wifi_direct_dbus_method_call_sync(WFD_MANAGER_CONFIG_INTERFACE,
+                                         "GetPeerRssi",
+                                         params,
+                                         &error);
+
+       ret = __net_wifidirect_gerror_to_enum(error);
+
+       if (ret != WIFI_DIRECT_ERROR_NONE)
+               return ret;
+
+       g_variant_get(reply, "(ii)", &ret, &val);
+       *rssi = val;
+       g_variant_unref(reply);
+
+       WDC_LOGD("%s() return : [%d]", __func__, ret);
+       __WDC_LOG_FUNC_END__;
+       return ret;
+}
+
+
 //LCOV_EXCL_STOP
index e839080..eef3c38 100644 (file)
@@ -170,6 +170,7 @@ enum {
        CMD_GET_SESSION_TIMER,
        CMD_SET_SESSION_TIMER,
        CMD_SET_AUTO_GROUP_REMOVAL,
+       CMD_GET_PEER_RSSI,
 
        CMD_INVALID = 255,
 };
@@ -282,6 +283,8 @@ menu_str_t g_menu_str[] = {
                { CMD_GET_SESSION_TIMER, "CMD_GET_SESSION_TIMER" },
                { CMD_SET_SESSION_TIMER, "CMD_SET_SESSION_TIMER" },
                { CMD_SET_AUTO_GROUP_REMOVAL, "CMD_SET_AUTO_GROUP_REMOVAL" },
+               { CMD_GET_PEER_RSSI, "CMD_GET_PEER_RSSI" },
+
 
                { -1, NULL }, };
 
@@ -2462,6 +2465,19 @@ void process_input(const char *input, gpointer user_data)
                                printf("Disable auto Group Removal mode!! \n");
                }
                break;
+       case CMD_GET_PEER_RSSI:
+       if (ad != NULL) {
+               if (select_peer(ad)) {
+                       int i = ad->selected_peer_index;
+                       int  rssi = 0;
+                       wifi_direct_discovered_peer_info_s* list = ad->peer_list;
+
+                       result = wifi_direct_get_peer_rssi(list[i].mac_address, &rssi);
+
+                       printf("wifi_direct_get_peer_rssi() result=[%d] rssi=[%d]\n", result, rssi);
+               }
+       }
+               break;
        case CMD_FULL_MENU:
                usage_full();
                break;