__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
CMD_GET_SESSION_TIMER,
CMD_SET_SESSION_TIMER,
CMD_SET_AUTO_GROUP_REMOVAL,
+ CMD_GET_PEER_RSSI,
CMD_INVALID = 255,
};
{ 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 }, };
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;