+ } else if (!g_strcmp0(method_name, "GetPeerRssi")) {
+ wfd_device_s *peer = NULL;
+ const char *mac_address = NULL;
+ unsigned char mac_addr[MACADDR_LEN] = {0, };
+
+ g_variant_get(parameters, "(&s)", &mac_address);
+ macaddr_atoe(mac_address, mac_addr);
+
+ if (manager->state < WIFI_DIRECT_STATE_ACTIVATED) {
+ ret = WIFI_DIRECT_ERROR_NOT_PERMITTED;
+ goto failed;
+ }
+
+ peer = wfd_manager_get_peer_by_addr(manager, mac_addr);
+ if (!peer) {
+ WDS_LOGE("Failed to get peer");
+ ret = WIFI_DIRECT_ERROR_INVALID_PARAMETER;
+ goto failed;
+ }
+
+ ret = WIFI_DIRECT_ERROR_NONE;
+ return_parameters = g_variant_new("(ii)", ret, peer->rssi);
+ goto done;
+
+ } else {