[wfd-manager]: Added support to extract the RSSI of Peer Device 39/90339/5 accepted/tizen/3.0/ivi/20161011.070319 accepted/tizen/3.0/mobile/20161015.034339 accepted/tizen/3.0/tv/20161016.005936 accepted/tizen/3.0/wearable/20161015.084347 accepted/tizen/common/20161006.153640 accepted/tizen/ivi/20161006.080257 accepted/tizen/mobile/20161006.080226 accepted/tizen/tv/20161006.080230 accepted/tizen/wearable/20161006.080242 submit/tizen/20161006.021034 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
authorYu Jiung <jiung.yu@samsung.com>
Thu, 6 Oct 2016 02:07:15 +0000 (11:07 +0900)
committerYu Jiung <jiung.yu@samsung.com>
Thu, 6 Oct 2016 02:07:25 +0000 (11:07 +0900)
Change-Id: Ib0cba32fb589c57f14f3066d2e231fd90742de57
Signed-off-by: Maneesh Jain <maneesh.jain@samsung.com>
include/wifi-direct-manager.h
oem/wifi-direct-oem.h
packaging/wifi-direct-manager.spec
plugin/wpasupplicant/ctrl_iface_dbus/wfd-plugin-wpasupplicant.c
src/wifi-direct-event.c
src/wifi-direct-iface.c

index c528182..0643b7d 100644 (file)
@@ -177,6 +177,7 @@ typedef struct {
        int ip_type;
        unsigned char client_ip_addr[IPADDR_LEN];
        unsigned char go_ip_addr[IPADDR_LEN];
+       int rssi;
 } wfd_device_s;
 
 typedef struct {
index f503cd6..a42456f 100644 (file)
@@ -203,6 +203,7 @@ 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 {
@@ -224,6 +225,7 @@ typedef struct {
        int has_asp_services;
        int has_asp2_services;
 #endif /* TIZEN_FEATURE_ASP */
+       int rssi;
 } wfd_oem_dev_data_s;
 
 typedef struct {
index 5db25b7..6703454 100644 (file)
@@ -2,7 +2,7 @@
 
 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
index 4aea4ed..e004d6a 100755 (executable)
@@ -607,6 +607,11 @@ static void __ws_get_peer_property(const char *key, GVariant *value, void *user_
                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;
@@ -700,6 +705,11 @@ static void __ws_peer_property(const char *key, GVariant *value, void *user_data
                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;
index 6131497..3de0381 100644 (file)
@@ -88,6 +88,9 @@ static int _wfd_event_update_peer(wfd_manager_s *manager, wfd_oem_dev_data_s *da
        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 */
index d5faeed..a0248f9 100644 (file)
@@ -326,6 +326,11 @@ const gchar wfd_manager_introspection_xml[] = {
                                "<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'>"
@@ -1712,7 +1717,31 @@ static void __wfd_manager_config_iface_handler(const gchar *method_name,
                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;