Add distance to service_discovered_cb
authorCheoleun Moon <chleun.moon@samsung.com>
Mon, 6 Apr 2020 08:06:21 +0000 (17:06 +0900)
committerCheoleun Moon <chleun.moon@samsung.com>
Mon, 6 Apr 2020 08:06:21 +0000 (17:06 +0900)
src/include/wifi-aware-private.h
src/wifi-aware-private.c
src/wifi-aware.c
test/wifi-aware-publish-test.c
test/wifi-aware-subscribe-test.c
test/wifi-aware-test.c

index d6d7da7..75e330e 100644 (file)
@@ -61,7 +61,7 @@ void _wifi_aware_publish_set_service_specific_info(wifi_aware_publish_h publish,
                const unsigned char *service_specific_info, size_t len);
 void _wifi_aware_publish_set_match_filter(wifi_aware_publish_h publish,
                const unsigned char *match_filter, size_t len);
-void _wifi_aware_publish_set_enable_ranging(wifi_aware_publish_h publish, bool enable);
+void _wifi_aware_publish_enable_ranging(wifi_aware_publish_h publish, bool enable);
 wifi_aware_publish_request_s *_wifi_aware_publish_get_request(wifi_aware_publish_h publish_handle);
 uint16_t _wifi_aware_session_get_publish_id(wifi_aware_session_h session);
 
index a18bfc8..0b22a92 100644 (file)
@@ -279,14 +279,14 @@ static void __wifi_aware_publish_invoke_callback(wifi_aware_session_h session,
 }
 
 static void __wifi_aware_discovered_cb(wifi_aware_session_h session, wifi_aware_peer_h peer,
-               const unsigned char *specific_info, size_t specific_info_len)
+               const unsigned char *specific_info, size_t specific_info_len, int distance)
 {
        RET_IF(session == NULL, "Session is NULL");
        wifi_aware_session_s *handle = (wifi_aware_session_s *)session;
 
        if (handle->discovered_cb)
                handle->discovered_cb(session, peer,
-                               specific_info, specific_info_len,
+                               specific_info, specific_info_len, distance,
                                handle->discovered_cb_data);
 }
 
@@ -712,7 +712,7 @@ void _wifi_aware_publish_set_match_filter(wifi_aware_publish_h publish,
        req->match_filter_len = len;
 }
 
-void _wifi_aware_publish_set_enable_ranging(wifi_aware_publish_h publish, bool enable)
+void _wifi_aware_publish_enable_ranging(wifi_aware_publish_h publish, bool enable)
 {
        wifi_aware_publish_request_s *req = (wifi_aware_publish_request_s *)publish;
        req->enable_ranging = enable;
@@ -1009,13 +1009,13 @@ static bool __unpack_byte_array(unsigned char *array, GVariant *var, uint16_t le
 
 static bool __parsing_service_discovered_event(GVariant *parameters,
                uint16_t *sub_id, unsigned int *peer_id, unsigned char *peer_mac,
-               unsigned char *specific_info, size_t *specific_info_len)
+               unsigned char *specific_info, size_t *specific_info_len, int *distance)
 {
        GVariant *mac_var = NULL;
        GVariant *info_var = NULL;
 
-       g_variant_get(parameters, "(quvqv)", sub_id, peer_id, &mac_var,
-                       specific_info_len, &info_var);
+       g_variant_get(parameters, "(quvqvi)", sub_id, peer_id, &mac_var,
+                       specific_info_len, &info_var, distance);
        if (*specific_info_len > WIFI_AWARE_MAX_SERVICE_SPECIFIC_INFO_LEN) {
                WIFI_AWARE_LOGE("Too long service specific info, %zd", *specific_info_len);
                return false;
@@ -1095,6 +1095,7 @@ static void __service_discovered_cb(GDBusConnection *connection,
        unsigned char peer_mac[WIFI_AWARE_MAC_ADDRESS_LEN];
        unsigned char specific_info[WIFI_AWARE_MAX_SERVICE_SPECIFIC_INFO_LEN];
        size_t specific_info_len = 0;
+       int distance = 0;
 
        wifi_aware_session_h session = (wifi_aware_session_h)user_data;
        wifi_aware_peer_h peer = NULL;
@@ -1103,7 +1104,7 @@ static void __service_discovered_cb(GDBusConnection *connection,
 
        if (__parsing_service_discovered_event(parameters,
                        &sub_id, &peer_id, peer_mac,
-                       specific_info, &specific_info_len) == false) {
+                       specific_info, &specific_info_len, &distance) == false) {
                WIFI_AWARE_LOGE("Fail to get parameters");
                return;
        }
@@ -1121,7 +1122,7 @@ static void __service_discovered_cb(GDBusConnection *connection,
        }
 
        _wifi_aware_peer_set_mac(peer, peer_mac);
-       __wifi_aware_discovered_cb(session, peer, specific_info, specific_info_len);
+       __wifi_aware_discovered_cb(session, peer, specific_info, specific_info_len, distance);
 }
 
 static void __message_received_cb(GDBusConnection *connection,
index 9714c3d..e7b5765 100644 (file)
@@ -275,7 +275,7 @@ API int wifi_aware_publish_enable_ranging(
        CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
        RET_VAL_IF(publish == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_publish_h is NULL");
 
-       _wifi_aware_publish_set_enable_ranging(publish, enable);
+       _wifi_aware_publish_enable_ranging(publish, enable);
 
        __WIFI_AWARE_FUNC_EXIT__;
        return WIFI_AWARE_ERROR_NONE;
index 8514b6c..8391097 100644 (file)
@@ -93,6 +93,8 @@ enum {
        CMD_OPEN_SOLICITED,
        CMD_PSK_UNSOLICITED,
        CMD_PSK_SOLICITED,
+       CMD_OPEN_UNSOLICITED_RANGING,
+       CMD_OPEN_SOLICITED_RANGING,
 
        CMD_INVALID,
 };
@@ -110,12 +112,17 @@ static char *g_menu_str[] = {
                = "PSK + Unsolicited",
        [CMD_PSK_SOLICITED]
                = "PSK + Solicited",
+       [CMD_OPEN_UNSOLICITED_RANGING]
+               = "Open + Unsolicited + Ranging",
+       [CMD_OPEN_SOLICITED_RANGING]
+               = "Open + Solicited + Ranging",
        [CMD_INVALID]
                = NULL,
 };
 
 static GMainLoop *g_main_loop_p;
 static bool g_initialized = false;
+static bool g_ranging = false;
 
 static wifi_aware_session_h g_wifi_aware_session = NULL;
 static wifi_aware_publish_h g_publish_handle = NULL;
@@ -434,6 +441,14 @@ static bool __set_publish_config(wifi_aware_publish_h publish)
                return false;
        }
 
+       ret = wifi_aware_publish_enable_ranging(publish, g_ranging);
+       if (ret == WIFI_AWARE_ERROR_NONE) {
+               printf("Ranging: %d\n", g_ranging);
+       }
+       else {
+               printf("Fail to enable ranging\n");
+               return false;
+       }
        return true;
 }
 
@@ -506,6 +521,7 @@ void test_open_unsolicited()
        clear_resources();
        g_pub_type = WIFI_AWARE_PUBLISH_TYPE_UNSOLICITED;
        g_security_type = WIFI_AWARE_SECURITY_TYPE_OPEN;
+       g_ranging = false;
        run_common();
 }
 
@@ -514,6 +530,7 @@ void test_open_solicited()
        clear_resources();
        g_pub_type = WIFI_AWARE_PUBLISH_TYPE_SOLICITED;
        g_security_type = WIFI_AWARE_SECURITY_TYPE_OPEN;
+       g_ranging = false;
        run_common();
 }
 
@@ -522,6 +539,7 @@ void test_psk_unsolicited()
        clear_resources();
        g_pub_type = WIFI_AWARE_PUBLISH_TYPE_UNSOLICITED;
        g_security_type = WIFI_AWARE_SECURITY_TYPE_PSK;
+       g_ranging = false;
        run_common();
 }
 
@@ -530,6 +548,25 @@ void test_psk_solicited()
        clear_resources();
        g_pub_type = WIFI_AWARE_PUBLISH_TYPE_SOLICITED;
        g_security_type = WIFI_AWARE_SECURITY_TYPE_PSK;
+       g_ranging = false;
+       run_common();
+}
+
+void test_open_unsolicited_ranging()
+{
+       clear_resources();
+       g_pub_type = WIFI_AWARE_PUBLISH_TYPE_UNSOLICITED;
+       g_security_type = WIFI_AWARE_SECURITY_TYPE_OPEN;
+       g_ranging = true;
+       run_common();
+}
+
+void test_open_solicited_ranging()
+{
+       clear_resources();
+       g_pub_type = WIFI_AWARE_PUBLISH_TYPE_SOLICITED;
+       g_security_type = WIFI_AWARE_SECURITY_TYPE_OPEN;
+       g_ranging = true;
        run_common();
 }
 
@@ -551,6 +588,8 @@ test_func g_menu_func[] = {
        [CMD_OPEN_SOLICITED]    = test_open_solicited,
        [CMD_PSK_UNSOLICITED]   = test_psk_unsolicited,
        [CMD_PSK_SOLICITED]             = test_psk_solicited,
+       [CMD_OPEN_UNSOLICITED_RANGING]  = test_open_unsolicited_ranging,
+       [CMD_OPEN_SOLICITED_RANGING]            = test_open_solicited_ranging,
 
        [CMD_INVALID]                   = NULL,
 };
index 62c5ca8..84d86ad 100644 (file)
@@ -380,12 +380,13 @@ static void __message_received_cb(wifi_aware_session_h session, wifi_aware_peer_
 static void __service_discovered_cb(wifi_aware_session_h session,
                wifi_aware_peer_h peer,
                const unsigned char *service_specific_info, size_t service_specific_info_len,
-               void *user_data)
+               int distance, void *user_data)
 {
        printf("\n>>Find A Wi-Fi Aware Peer %p\n", peer);
        printf("Service Specific Info: ");
        __print_byte_array(service_specific_info, service_specific_info_len);
        printf("\n");
+       printf("Distance: %d\n", distance);
 
        if (g_service_discovered == false) {
                g_service_discovered = true;
index 1c8070d..7e1f460 100644 (file)
@@ -678,13 +678,14 @@ static wifi_aware_peer_h __get_peer_by_id(int peer_id)
 static void __service_discovered_cb(wifi_aware_session_h session,
                wifi_aware_peer_h peer,
                const unsigned char *service_specific_info, size_t service_specific_info_len,
-               void *user_data)
+               int distance, void *user_data)
 {
        printf("Find A Wi-Fi Aware Peer %p\n", peer);
 //     printf("Subscribe ID: %u\n", subscribe_id);
        printf("Service Specific Info: ");
        __print_byte_array(service_specific_info, service_specific_info_len);
        printf("\n");
+       printf("Distance: %d\n", distance);
        __add_new_peer(peer);
 }