int ip_type;
unsigned char client_ip_addr[IPADDR_LEN];
unsigned char go_ip_addr[IPADDR_LEN];
+ int rssi;
} wfd_device_s;
typedef struct {
#ifdef TIZEN_FEATURE_WIFI_DISPLAY
wfd_oem_display_s display;
#endif /* TIZEN_FEATURE_WIFI_DISPLAY */
+ int rssi;
} wfd_oem_device_s;
typedef struct {
int has_asp_services;
int has_asp2_services;
#endif /* TIZEN_FEATURE_ASP */
+ int rssi;
} wfd_oem_dev_data_s;
typedef struct {
Name: wifi-direct-manager
Summary: Wi-Fi Direct manger
-Version: 1.2.206
+Version: 1.2.207
Release: 1
Group: Network & Connectivity/Wireless
License: Apache-2.0
WDP_LOGD("Config method [0x%x]", peer->config_methods);
} else if (g_strcmp0(key, "level") == 0) {
+ int rssi = 0;
+
+ g_variant_get(value, "i", &rssi);
+ peer->rssi = rssi;
+ WDP_LOGD("Peer RSSI [%d]", peer->rssi);
} else if (g_strcmp0(key, "devicecapability") == 0) {
unsigned char devicecapability = 0;
WDP_LOGD("Config method [0x%x]", peer->config_methods);
} else if (g_strcmp0(key, "level") == 0) {
+ int rssi = 0;
+
+ g_variant_get(value, "i", &rssi);
+ peer->rssi = rssi;
+ WDP_LOGD("Peer RSSI [%d]", peer->rssi);
} else if (g_strcmp0(key, "devicecapability") == 0) {
unsigned char devicecapability = 0;
peer->dev_flags = data->dev_flags;
peer->group_flags = data->group_flags;
peer->dev_role = data->dev_role;
+ peer->rssi = data->rssi;
+ WDS_LOGD("Peer RSSI value is %d", peer->rssi);
+
#ifdef TIZEN_FEATURE_WIFI_DISPLAY
memcpy(&(peer->display), &(data->display), sizeof(wfd_display_s));
#endif /* TIZEN_FEATURE_WIFI_DISPLAY */
"<arg type='i' name='sec_dev_type' direction='out'/>"
"<arg type='i' name='error_code' direction='out'/>"
"</method>"
+ "<method name='GetPeerRssi'>"
+ "<arg type='s' name='peer_mac_addr' direction='in'/>"
+ "<arg type='i' name='error_code' direction='out'/>"
+ "<arg type='i' name='rssi' direction='out'/>"
+ "</method>"
"</interface>"
#ifdef TIZEN_FEATURE_SERVICE_DISCOVERY
"<interface name='net.wifidirect.service'>"
return_parameters = g_variant_new("(ii)", ret, sec_dev_type);
goto done;
- } else {
+ } 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 {
WDS_LOGE("method not handled");
ret = WIFI_DIRECT_ERROR_OPERATION_FAILED;
goto failed;