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);
}
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);
}
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;
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;
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;
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;
}
}
_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,
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;
CMD_OPEN_SOLICITED,
CMD_PSK_UNSOLICITED,
CMD_PSK_SOLICITED,
+ CMD_OPEN_UNSOLICITED_RANGING,
+ CMD_OPEN_SOLICITED_RANGING,
CMD_INVALID,
};
= "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;
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;
}
clear_resources();
g_pub_type = WIFI_AWARE_PUBLISH_TYPE_UNSOLICITED;
g_security_type = WIFI_AWARE_SECURITY_TYPE_OPEN;
+ g_ranging = false;
run_common();
}
clear_resources();
g_pub_type = WIFI_AWARE_PUBLISH_TYPE_SOLICITED;
g_security_type = WIFI_AWARE_SECURITY_TYPE_OPEN;
+ g_ranging = false;
run_common();
}
clear_resources();
g_pub_type = WIFI_AWARE_PUBLISH_TYPE_UNSOLICITED;
g_security_type = WIFI_AWARE_SECURITY_TYPE_PSK;
+ g_ranging = false;
run_common();
}
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();
}
[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,
};
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;
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);
}