// only for responder
/**
- * @brief Set a service specific information which is contained in Data Path Response Frame.
+ * @brief
+ * @remarks This is only for Data Path Responder
* @since_tizen 6.0
* @param[in] data_path
- * @param[in] service_specific_info
- * @param[in] service_specific_info_len
+ * @param[in] port
+ * @return 0 on success, otherwise a negative error value
+ * @retval #WIFI_AWARE_ERROR_NONE
*/
-int wifi_aware_data_path_set_service_specific_info(wifi_aware_data_path_h data_path, const unsigned char *service_specific_info, size_t service_specific_info_len);
-// TODO:
-// We are considering
-// removing wifi_aware_data_path_set_service_specific_info() and
-// adding wifi_aware_data_path_set_port() and wifi_aware_data_path_set_ip_address().
+int wifi_aware_data_path_set_port(wifi_aware_data_path_h data_path, int port);
+
+// We are considering to add wifi_aware_data_path_set_ip_address().
/**
* @brief Destroy a handle for Wi-Fi Aware Data Path
* @since_tizen 6.0
* @param[in] data_path
* @param[in] error
- * @param[in] mac
- * @param[in] service_specific_info
- * @param[in] service_specific_info_len
+ * @param[in] mac peer's NDI (NAN Data Interface)
* @param[in] user_data
*/
typedef void(*wifi_aware_data_path_open_cb)(wifi_aware_data_path_h data_path, wifi_aware_error_e error,
- const unsigned char *mac, const unsigned char *service_specific_info, size_t service_specific_info_len, void *user_data);
+ void *user_data);
/**
* @brief Start to open a Wi-Fi Aware Data Path.
- * @remarks If role is WIFI_AWARE_DATA_PATH_INITIATOR, the device will send a DataRequest Frame.
- * If role is WIFI_AWARE_DATA_PATH_RESPONDER, the device will wait for a DataRequest and send DataResponse on receiving DataRequest from its peer
* @remarks The @a callback will be always invoked whether the open request succeeds or fails.
* @since_tizen 6.0
* @param[in] data_path
* @param[in] callback
* @param[in] user_data
*/
-int wifi_aware_data_path_open(wifi_aware_data_path_h data_path, wifi_aware_data_path_open_cb callback, void *user_data);
+int wifi_aware_data_path_open(wifi_aware_data_path_h data_path,
+ wifi_aware_data_path_open_cb callback, void *user_data);
/**
* @brief Close a Wi-Fi Aware Data Path.
*/
int wifi_aware_data_path_close(wifi_aware_data_path_h data_path);
+/**
+ * @brief
+ * @remarks This is only for Data Path Initiator
+ * @since_tizen 6.0
+ * @param[in]
+ * @param[out]
+ * @return
+ * @retval #WIFI_AWARE_ERROR_NONE
+ */
+int wifi_aware_data_path_get_peer_port(wifi_aware_data_path_h data_path, int* port);
+
+/**
+ * @brief
+ * @remarks This is only for Data Path Initiator
+ * @remarks @a ipv6_address should be freed by using free().
+ * @since_tizen 6.0
+ * @param[in]
+ * @param[out]
+ * @return
+ * @retval #WIFI_AWARE_ERROR_NONE
+ */
+int wifi_aware_data_path_get_ipv6_address(wifi_aware_data_path_h data_path, char **ipv6_address);
+
+/**
+ * @brief
+ * @remarks @a interface should be freed by using free().
+ * @since_tizen 6.0
+ * @param[in]
+ * @param[out]
+ * @return
+ * @retval #WIFI_AWARE_ERROR_NONE
+ */
+int wifi_aware_data_path_get_interface(wifi_aware_data_path_h data_path, char **interface);
+
+// get peer NDI?
/**
* @brief Callback to notify that the Wi-Fi Aware Data Path has been lost.
#define WIFI_AWARE_MIN_PSK_LEN 8
#define WIFI_AWARE_MAX_PSK_LEN 63
#define WIFI_AWARE_PMK_LEN 32
+#define WIFI_AWARE_STR_IPV6_ADDRESS_LEN 39
typedef enum {
WIFI_AWARE_DATA_PATH_INITIATOR,
int _wifi_aware_data_path_handle_create(wifi_aware_session_h session, wifi_aware_peer_h peer,
wifi_aware_data_path_h *data_path);
+int _wifi_aware_data_path_handle_destroy(wifi_aware_data_path_h data_path);
int _wifi_aware_data_path_set_security(wifi_aware_data_path_h data_path,
wifi_aware_security_type_e security_type);
int _wifi_aware_data_path_set_psk(wifi_aware_data_path_h data_path, const char *key);
const unsigned char *key);
int _wifi_aware_data_path_set_service_specific_info(wifi_aware_data_path_h data_path,
const unsigned char *service_specific_info, size_t service_specific_info_len);
-int _wifi_aware_data_path_destroy(wifi_aware_data_path_h data_path);
+int _wifi_aware_data_path_set_port(wifi_aware_data_path_h data_path, int port);
int _wifi_aware_data_path_open(wifi_aware_data_path_h data_path,
wifi_aware_data_path_open_cb callback, void *user_data);
int _wifi_aware_data_path_close(wifi_aware_data_path_h data_path);
+int _wifi_aware_data_path_get_peer_port(wifi_aware_data_path_h data_path, int* port);
+int _wifi_aware_data_path_get_peer_ipv6_address(wifi_aware_data_path_h data_path, char **ipv6_address);
+int _wifi_aware_data_path_get_interface(wifi_aware_data_path_h data_path, char **interface);
int _wifi_aware_data_path_set_terminated_cb(wifi_aware_data_path_h data_path,
wifi_aware_data_path_terminated_cb callback, void *user_data);
const unsigned char *message, size_t len,
GAsyncReadyCallback cb, void *user_data);
-int wifi_aware_gdbus_ndp_open(wifi_aware_data_path_h data_path,
- uint16_t pub_sub_id, unsigned int peer_id, wifi_aware_data_path_role_e role,
- const unsigned char *specific_info, size_t specific_info_len,
+int wifi_aware_gdbus_open_ndp(wifi_aware_data_path_h data_path,
+ uint16_t pub_sub_id, unsigned int peer_id,
+ wifi_aware_data_path_role_e role, int port,
GAsyncReadyCallback cb);
-int wifi_aware_gdbus_ndp_close(wifi_aware_data_path_h data_path,
- unsigned int ndp_id, uint16_t pub_sub_id, unsigned int peer_id);
-int wifi_aware_gdbus_ndp_psk(wifi_aware_data_path_h data_path,
- uint16_t pub_sub_id, unsigned int peer_id, wifi_aware_data_path_role_e role,
- const unsigned char *specific_info, size_t specific_info_len,
+int wifi_aware_gdbus_open_ndp_psk(wifi_aware_data_path_h data_path,
+ uint16_t pub_sub_id, unsigned int peer_id,
+ wifi_aware_data_path_role_e role, int port,
const char *psk, GAsyncReadyCallback cb);
-int wifi_aware_gdbus_ndp_pmk(wifi_aware_data_path_h data_path,
- uint16_t pub_sub_id, unsigned int peer_id, wifi_aware_data_path_role_e role,
- const unsigned char *specific_info, size_t specific_info_len,
- const unsigned char *pmk, size_t pmk_len,
+int wifi_aware_gdbus_open_ndp_pmk(wifi_aware_data_path_h data_path,
+ uint16_t pub_sub_id, unsigned int peer_id,
+ wifi_aware_data_path_role_e role, int port,
+ const unsigned char *pmk,
GAsyncReadyCallback cb);
+int wifi_aware_gdbus_ndp_close(wifi_aware_data_path_h data_path,
+ unsigned int ndp_id, uint16_t pub_sub_id, unsigned int peer_id);
#ifdef __cplusplus
}
#endif
const char *_wifi_aware_convert_error_type_to_string(wifi_aware_error_e err);
wifi_aware_error_e _wifi_aware_convert_error_string_to_enum(const char *error);
+wifi_aware_error_e _wifi_aware_convert_nan_manager_error(int error);
bool _wifi_aware_is_initialized();
int _wifi_aware_init();
char psk[WIFI_AWARE_MAX_PSK_LEN + 1];
unsigned char pmk[WIFI_AWARE_PMK_LEN];
size_t pmk_len;
-
- unsigned char specific_info[WIFI_AWARE_MAX_SERVICE_SPECIFIC_INFO_LEN];
- size_t specific_info_len;
+ int port;
char iface_name[IFNAMSIZ + 1];
+ int peer_port;
+ char peer_ip[WIFI_AWARE_STR_IPV6_ADDRESS_LEN + 1];
+
wifi_aware_data_path_open_cb open_cb;
void *open_cb_user_data;
wifi_aware_data_path_terminated_cb terminated_cb;
{
wifi_aware_data_path_s *ndp = (wifi_aware_data_path_s *)data_path;
ndp->is_open = true;
+ WIFI_AWARE_LOGD("Opened Data path %p. Session: %p, Peer: %p", data_path, ndp->session, ndp->peer);
}
static void __data_path_close(wifi_aware_data_path_h data_path)
{
wifi_aware_data_path_s *ndp = (wifi_aware_data_path_s *)data_path;
ndp->is_open = false;
+ WIFI_AWARE_LOGD("Closed Data path %p. Session: %p, Peer: %p", data_path, ndp->session, ndp->peer);
+}
+
+static bool __data_path_is_initiator(wifi_aware_data_path_h data_path)
+{
+ wifi_aware_data_path_s *ndp = (wifi_aware_data_path_s *)data_path;
+ return ndp->role == WIFI_AWARE_DATA_PATH_INITIATOR;
+}
+
+static bool __data_path_is_responder(wifi_aware_data_path_h data_path)
+{
+ wifi_aware_data_path_s *ndp = (wifi_aware_data_path_s *)data_path;
+ return ndp->role == WIFI_AWARE_DATA_PATH_RESPONDER;
}
int _wifi_aware_data_path_handle_create(wifi_aware_session_h session, wifi_aware_peer_h peer,
return WIFI_AWARE_ERROR_NONE;
}
+int _wifi_aware_data_path_handle_destroy(wifi_aware_data_path_h data_path)
+{
+ __WIFI_AWARE_FUNC_ENTER__;
+ return WIFI_AWARE_ERROR_NONE;
+}
+
int _wifi_aware_data_path_set_security(wifi_aware_data_path_h data_path,
wifi_aware_security_type_e security_type)
{
{
__WIFI_AWARE_FUNC_ENTER__;
- RET_VAL_IF(data_path== NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "data_path is NULL");
+ RET_VAL_IF(data_path == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "data_path is NULL");
wifi_aware_data_path_s *ndp = (wifi_aware_data_path_s *)data_path;
RET_VAL_IF(ndp->security_type != WIFI_AWARE_SECURITY_TYPE_PMK,
WIFI_AWARE_ERROR_INVALID_OPERATION, "security type is not WIFI_AWARE_SECURITY_TYPE_PMK");
return WIFI_AWARE_ERROR_NONE;
}
-int _wifi_aware_data_path_set_service_specific_info(wifi_aware_data_path_h data_path,
- const unsigned char *service_specific_info, size_t service_specific_info_len)
+static bool __is_valid_port(int port)
{
- __WIFI_AWARE_FUNC_ENTER__;
-
- RET_VAL_IF(data_path== NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "data_path is NULL");
- wifi_aware_data_path_s *ndp = (wifi_aware_data_path_s *)data_path;
-
- if (service_specific_info_len > WIFI_AWARE_MAX_SERVICE_SPECIFIC_INFO_LEN) {
- WIFI_AWARE_LOGE("service_specific_info is too long");
- return WIFI_AWARE_ERROR_INVALID_PARAMETER;
- }
-
- if (service_specific_info_len == 0)
- return WIFI_AWARE_ERROR_NONE;
-
- memcpy(ndp->specific_info, service_specific_info, service_specific_info_len);
- ndp->specific_info_len = service_specific_info_len;
- return WIFI_AWARE_ERROR_NONE;
+ return port >= 0 && port <= 65535; // 0 to 1023 are reserved for privileged services (well-know ports)
}
-int _wifi_aware_data_path_destroy(wifi_aware_data_path_h data_path)
+int _wifi_aware_data_path_set_port(wifi_aware_data_path_h data_path, int port)
{
__WIFI_AWARE_FUNC_ENTER__;
+
+ RET_VAL_IF(data_path == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "data_path is NULL");
+ RET_VAL_IF(!__data_path_is_responder(data_path),
+ WIFI_AWARE_ERROR_INVALID_OPERATION, "Only for Data Path Responder");
+ RET_VAL_IF(__is_valid_port(port), WIFI_AWARE_ERROR_INVALID_PARAMETER, "Port numbers range from 0 to 65535");
+ wifi_aware_data_path_s *ndp = (wifi_aware_data_path_s *)data_path;
+ ndp->port = port;
return WIFI_AWARE_ERROR_NONE;
}
wifi_aware_data_path_s *ndp = (wifi_aware_data_path_s *)data_path;
if (ndp->open_cb)
- ndp->open_cb(data_path, error, mac, specific_info, specific_info_len, ndp->open_cb_user_data);
+ ndp->open_cb(data_path, error, ndp->open_cb_user_data);
}
-static void __data_path_open_reply(GObject *src, GAsyncResult *res, gpointer user_data)
+static wifi_aware_error_e __get_data_path_open_result(GObject *src,
+ GAsyncResult *res, wifi_aware_data_path_h data_path)
{
- //GDBusConnection *conn = NULL;
+ GDBusConnection *conn = G_DBUS_CONNECTION(src);
GError *dbus_error = NULL;
- //GVariant *reply = NULL;
+ GVariant *reply = g_dbus_connection_call_finish(conn, res, &dbus_error);
+ int nan_error = 0;
wifi_aware_error_e error = WIFI_AWARE_ERROR_NONE;
- //int nan_error = 0;
- wifi_aware_data_path_h data_path = (wifi_aware_data_path_h)user_data;
- // unsigned int ndp_id;
+ gchar *iface = NULL;
+ gchar *ip = NULL;
- WIFI_AWARE_LOGI("Reply for Data Path Open request");
-
- //conn = G_DBUS_CONNECTION(src);
- //reply = g_dbus_connection_call_finish(conn, res, &dbus_error);
+ RET_VAL_IF(reply == NULL, WIFI_AWARE_ERROR_INVALID_OPERATION, "reply is NULL");
+ wifi_aware_data_path_s *ndp = (wifi_aware_data_path_s *)data_path;
if (dbus_error != NULL) {
- WIFI_AWARE_LOGE("Open Request failure: %s", dbus_error->message);
+ WIFI_AWARE_LOGE("Fail to open Data Path: %s", dbus_error->message);
error = _wifi_aware_convert_error_string_to_enum(dbus_error->message);
g_error_free(dbus_error);
- } else {
- // TODO: Parameter parsing
}
-
+ else {
+ g_variant_get(reply, "ussii", &ndp->ndp_id, &iface, &ip, &ndp->peer_port, nan_error);
+ error = _wifi_aware_convert_nan_manager_error(nan_error);
+ if (error == WIFI_AWARE_ERROR_NONE) {
+ strncpy(ndp->iface_name, iface, IFNAMSIZ);
+ strncpy(ndp->peer_ip, ip, WIFI_AWARE_STR_IPV6_ADDRESS_LEN);
+ WIFI_AWARE_LOGD("New Data Path. ndp_id: %u", ndp->ndp_id);
+ }
+ }
+ return error;
+}
+
+static void __data_path_open_reply(GObject *src, GAsyncResult *res, gpointer user_data)
+{
+ wifi_aware_error_e error = WIFI_AWARE_ERROR_NONE;
+ wifi_aware_data_path_h data_path = (wifi_aware_data_path_h)user_data;
+
+ WIFI_AWARE_LOGI("Reply for Data Path Open request");
+ RET_IF(data_path == NULL, "Data path is NULL");
+
+ error = __get_data_path_open_result(src, res, data_path);
+
if (error == WIFI_AWARE_ERROR_NONE)
__data_path_open(data_path);
__data_path_invoke_callback(data_path, error, NULL, NULL, 0);
{
__WIFI_AWARE_FUNC_ENTER__;
- RET_VAL_IF(data_path== NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "data_path is NULL");
+ RET_VAL_IF(data_path == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "data_path is NULL");
wifi_aware_data_path_s *ndp = (wifi_aware_data_path_s *)data_path;
__data_path_set_open_cb(data_path, callback, user_data);
switch (ndp->security_type) {
case WIFI_AWARE_SECURITY_TYPE_OPEN:
- return wifi_aware_gdbus_ndp_open(data_path,
+ return wifi_aware_gdbus_open_ndp(data_path,
_wifi_aware_session_get_pub_sub_id(ndp->session),
_wifi_aware_peer_get_id(ndp->peer),
ndp->role,
- ndp->specific_info,
- ndp->specific_info_len,
+ ndp->port,
__data_path_open_reply);
case WIFI_AWARE_SECURITY_TYPE_PSK:
- return wifi_aware_gdbus_ndp_psk(data_path,
+ return wifi_aware_gdbus_open_ndp_psk(data_path,
_wifi_aware_session_get_pub_sub_id(ndp->session),
_wifi_aware_peer_get_id(ndp->peer),
ndp->role,
- ndp->specific_info,
- ndp->specific_info_len,
+ ndp->port,
ndp->psk,
__data_path_open_reply);
case WIFI_AWARE_SECURITY_TYPE_PMK:
- return wifi_aware_gdbus_ndp_pmk(data_path,
+ return wifi_aware_gdbus_open_ndp_pmk(data_path,
_wifi_aware_session_get_pub_sub_id(ndp->session),
_wifi_aware_peer_get_id(ndp->peer),
ndp->role,
- ndp->specific_info,
- ndp->specific_info_len,
+ ndp->port,
ndp->pmk,
- WIFI_AWARE_PMK_LEN,
__data_path_open_reply);
}
int ret = WIFI_AWARE_ERROR_NONE;
__WIFI_AWARE_FUNC_ENTER__;
- RET_VAL_IF(data_path== NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "data_path is NULL");
+ RET_VAL_IF(data_path == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "data_path is NULL");
RET_VAL_IF(!__data_path_is_open(data_path), WIFI_AWARE_ERROR_INVALID_OPERATION, "No Data Path");
wifi_aware_data_path_s *ndp = (wifi_aware_data_path_s *)data_path;
return ret;
}
-int _wifi_aware_data_path_set_terminated_cb(wifi_aware_data_path_h data_path, wifi_aware_data_path_terminated_cb callback, void *user_data)
+int _wifi_aware_data_path_get_peer_port(wifi_aware_data_path_h data_path, int* port)
+{
+ __WIFI_AWARE_FUNC_ENTER__;
+
+ RET_VAL_IF(data_path == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "data_path is NULL");
+ RET_VAL_IF(!__data_path_is_open(data_path), WIFI_AWARE_ERROR_INVALID_OPERATION, "No Data Path");
+ RET_VAL_IF(!__data_path_is_initiator(data_path),
+ WIFI_AWARE_ERROR_INVALID_OPERATION, "Only for Data Path Initiator");
+
+ wifi_aware_data_path_s *ndp = (wifi_aware_data_path_s *)data_path;
+ *port = ndp->port;
+
+ return WIFI_AWARE_ERROR_NONE;
+}
+
+int _wifi_aware_data_path_get_peer_ipv6_address(wifi_aware_data_path_h data_path, char **ipv6_address)
+{
+ __WIFI_AWARE_FUNC_ENTER__;
+
+ RET_VAL_IF(data_path == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "data_path is NULL");
+ RET_VAL_IF(!__data_path_is_open(data_path), WIFI_AWARE_ERROR_INVALID_OPERATION, "No Data Path");
+ RET_VAL_IF(!__data_path_is_initiator(data_path),
+ WIFI_AWARE_ERROR_INVALID_OPERATION, "Only for Data Path Initiator");
+
+ wifi_aware_data_path_s *ndp = (wifi_aware_data_path_s *)data_path;
+ *ipv6_address = g_strdup(ndp->peer_ip);
+ RET_VAL_IF(ipv6_address == NULL, WIFI_AWARE_ERROR_OUT_OF_MEMORY, "Out of memory");
+
+ return WIFI_AWARE_ERROR_NONE;
+}
+
+int _wifi_aware_data_path_get_interface(wifi_aware_data_path_h data_path, char **interface)
+{
+ __WIFI_AWARE_FUNC_ENTER__;
+
+ RET_VAL_IF(data_path == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "data_path is NULL");
+ RET_VAL_IF(!__data_path_is_open(data_path), WIFI_AWARE_ERROR_INVALID_OPERATION, "No Data Path");
+
+ wifi_aware_data_path_s *ndp = (wifi_aware_data_path_s *)data_path;
+ *interface = g_strdup(ndp->iface_name);
+ RET_VAL_IF(interface == NULL, WIFI_AWARE_ERROR_OUT_OF_MEMORY, "Out of memory");
+
+ return WIFI_AWARE_ERROR_NONE;
+}
+
+int _wifi_aware_data_path_set_terminated_cb(wifi_aware_data_path_h data_path,
+ wifi_aware_data_path_terminated_cb callback, void *user_data)
{
int ret = WIFI_AWARE_ERROR_NONE;
__WIFI_AWARE_FUNC_ENTER__;
return ret;
}
-int wifi_aware_gdbus_ndp_open(wifi_aware_data_path_h data_path,
- uint16_t pub_sub_id, unsigned int peer_id, wifi_aware_data_path_role_e role,
- const unsigned char *specific_info, size_t specific_info_len,
+int wifi_aware_gdbus_open_ndp(wifi_aware_data_path_h data_path,
+ uint16_t pub_sub_id, unsigned int peer_id,
+ wifi_aware_data_path_role_e role, int port,
GAsyncReadyCallback cb)
{
return WIFI_AWARE_ERROR_NONE;
}
-int wifi_aware_gdbus_ndp_close(wifi_aware_data_path_h data_path,
- unsigned int ndp_id, uint16_t pub_sub_id, unsigned int peer_id)
+int wifi_aware_gdbus_open_ndp_psk(wifi_aware_data_path_h data_path,
+ uint16_t pub_sub_id, unsigned int peer_id,
+ wifi_aware_data_path_role_e role, int port, const char *psk,
+ GAsyncReadyCallback cb)
{
return WIFI_AWARE_ERROR_NONE;
}
-int wifi_aware_gdbus_ndp_psk(wifi_aware_data_path_h data_path,
- uint16_t pub_sub_id, unsigned int peer_id, wifi_aware_data_path_role_e role,
- const unsigned char *specific_info, size_t specific_info_len,
- const char *psk,
+int wifi_aware_gdbus_open_ndp_pmk(wifi_aware_data_path_h data_path,
+ uint16_t pub_sub_id, unsigned int peer_id,
+ wifi_aware_data_path_role_e role, int port, const unsigned char *pmk,
GAsyncReadyCallback cb)
{
return WIFI_AWARE_ERROR_NONE;
}
-int wifi_aware_gdbus_ndp_pmk(wifi_aware_data_path_h data_path,
- uint16_t pub_sub_id, unsigned int peer_id, wifi_aware_data_path_role_e role,
- const unsigned char *specific_info, size_t specific_info_len,
- const unsigned char *pmk, size_t pmk_len,
- GAsyncReadyCallback cb)
+int wifi_aware_gdbus_ndp_close(wifi_aware_data_path_h data_path,
+ unsigned int ndp_id, uint16_t pub_sub_id, unsigned int peer_id)
{
return WIFI_AWARE_ERROR_NONE;
}
+
RET_VAL_IF(reply == NULL, WIFI_AWARE_ERROR_INVALID_OPERATION, "reply is NULL");
if (dbus_error != NULL) {
- WIFI_AWARE_LOGE("Publish Request failure: %s", dbus_error->message);
+ WIFI_AWARE_LOGE("Publish/Subsribe Request failure: %s", dbus_error->message);
error = _wifi_aware_convert_error_string_to_enum(dbus_error->message);
g_error_free(dbus_error);
}
return ret;
}
-API int wifi_aware_data_path_set_service_specific_info(wifi_aware_data_path_h data_path, const unsigned char *service_specific_info, size_t service_specific_info_len)
+API int wifi_aware_data_path_set_port(wifi_aware_data_path_h data_path, int port)
{
int ret = WIFI_AWARE_ERROR_NONE;
RET_VAL_IF(!_wifi_aware_is_initialized(), WIFI_AWARE_ERROR_NOT_INITIALIZED, "Not initialized");
RET_VAL_IF(data_path == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "Data path is NULL");
- ret = _wifi_aware_data_path_set_service_specific_info(data_path,
- service_specific_info, service_specific_info_len);
+ ret = _wifi_aware_data_path_set_port(data_path, port);
__WIFI_AWARE_FUNC_EXIT__;
return ret;
RET_VAL_IF(!_wifi_aware_is_initialized(), WIFI_AWARE_ERROR_NOT_INITIALIZED, "Not initialized");
RET_VAL_IF(data_path == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "Data path is NULL");
- ret = _wifi_aware_data_path_destroy(data_path);
+ ret = _wifi_aware_data_path_handle_destroy(data_path);
__WIFI_AWARE_FUNC_EXIT__;
return ret;
return ret;
}
+int wifi_aware_data_path_get_peer_port(wifi_aware_data_path_h data_path, int* port)
+{
+ __WIFI_AWARE_FUNC_ENTER__;
+ CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
+ RET_VAL_IF(!_wifi_aware_is_initialized(), WIFI_AWARE_ERROR_NOT_INITIALIZED, "Not initialized");
+ RET_VAL_IF(data_path == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "Data path is NULL");
+
+ return _wifi_aware_data_path_get_peer_port(data_path, port);
+}
+
+int wifi_aware_data_path_get_peer_ipv6_address(wifi_aware_data_path_h data_path, char **ipv6_address)
+{
+ __WIFI_AWARE_FUNC_ENTER__;
+ CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
+ RET_VAL_IF(!_wifi_aware_is_initialized(), WIFI_AWARE_ERROR_NOT_INITIALIZED, "Not initialized");
+ RET_VAL_IF(data_path == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "Data path is NULL");
+ RET_VAL_IF(ipv6_address == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "ipv6_address is NULL");
+
+ return _wifi_aware_data_path_get_peer_ipv6_address(data_path, ipv6_address);
+}
+
+int wifi_aware_data_path_get_interface(wifi_aware_data_path_h data_path, char **interface)
+{
+ __WIFI_AWARE_FUNC_ENTER__;
+ CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
+ RET_VAL_IF(!_wifi_aware_is_initialized(), WIFI_AWARE_ERROR_NOT_INITIALIZED, "Not initialized");
+ RET_VAL_IF(data_path == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "Data path is NULL");
+ RET_VAL_IF(interface == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "interface is NULL");
+
+ return _wifi_aware_data_path_get_interface(data_path, interface);
+}
API int wifi_aware_data_path_set_terminated_cb(wifi_aware_data_path_h data_path, wifi_aware_data_path_terminated_cb callback, void *user_data)
{