*/
typedef void *wifi_aware_peer_h;
+/**
+ * @brief Handle for Wi-Fi Aware Data Path.
+ * @since_tizen 6.0
+ */
+typedef void *wifi_aware_data_path_h;
+
/**
* @brief
*/
int wifi_aware_unset_message_received_cb(wifi_aware_session_h session);
+
+typedef enum {
+ WIFI_AWARE_SECURITY_TYPE_OPEN,
+ WIFI_AWARE_SECURITY_TYPE_PSK,
+ WIFI_AWARE_SECURITY_TYPE_PMK,
+} wifi_aware_security_type_e;
+
+typedef enum {
+ WIFI_AWARE_DATA_PATH_INITIATOR,
+ WIFI_AWARE_DATA_PATH_RESPONDER,
+} wifi_aware_data_path_role_e;
+
+typedef enum {
+ WIFI_AWARE_TERMINATION_REASON_UNKNOWN = 0,
+} wifi_aware_termination_reason_e;
+
+/**
+ * @brief Create a handle to be used for Wi-Fi Aware Data Path
+ * @since_tizen 6.0
+ * @param[in] session
+ * @param[in] peer
+ * @param[in] role
+ * @param[out] data_path
+ */
+int wifi_aware_data_path_create(wifi_aware_session_h session, wifi_aware_peer_h peer,
+ wifi_aware_data_path_role_e role, wifi_aware_data_path_h *data_path);
+
+/**
+ * @brief Set a security type
+ * @since_tizen 6.0
+ * @param[in] data_path
+ * @param[in] security_type
+ */
+int wifi_aware_data_path_set_security(wifi_aware_data_path_h data_path, wifi_aware_security_type_e security_type);
+
+/**
+ * @brief Set a passphrase for Wi-Fi Aware Data Path. It can be used only when secury_type is WIFI_AWARE_SECURITY_TYPE_PSK.
+ * @since_tizen 6.0
+ * @param[in] data_path
+ * @param[in] key
+ */
+int wifi_aware_data_path_set_psk(wifi_aware_data_path_h data_path, char *key);
+
+/**
+ * @brief Set a PMK for Wi-Fi Aware Data Path. It can be used only when secury_type is WIFI_AWARE_SECURITY_TYPE_PMK.
+ * @since_tizen 6.0
+ * @param[in] data_path
+ * @param[in] key
+ * @param[in] key_len
+ */
+int wifi_aware_data_path_set_pmk(wifi_aware_data_path_h data_path, unsigned char *key, size_t key_len);
+
+// only for responder
+/**
+ * @brief Set a service specific information which is contained in Data Path Response Frame.
+ * @remarks The service specific information can be set only when the role is WIFI_AWARE_DATA_PATH_RESPONDER.
+ * @since_tizen 6.0
+ * @param[in] data_path
+ * @param[in] key
+ * @param[in] key_len
+ */
+int wifi_aware_data_path_set_service_specific_info(wifi_aware_data_path_h data_path, unsigned char *service_specific_info, size_t service_specific_info_len);
+
+/**
+ * @brief Destroy a handle for Wi-Fi Aware Data Path
+ * @since_tizen 6.0
+ * @param[in] data_path
+ */
+int wifi_aware_data_path_destroy(wifi_aware_data_path_h data_path);
+
+
+/**
+ * @brief This callback is invoked when wifi_aware_data_path_open is done with a result (success/failure)
+ * @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] user_data
+ */
+typedef void(*wifi_aware_data_path_open_cb)(wifi_aware_data_path_h data_path, wifi_aware_error_e error,
+ unsigned char *mac, unsigned char *service_specific_info, size_t service_specific_info_len, 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);
+
+/**
+ * @brief Close a Wi-Fi Aware Data Path.
+ * @since_tizen 6.0
+ * @param[in] data_path
+ */
+int wifi_aware_data_path_close(wifi_aware_data_path_h data_path);
+
+
+/**
+ * @brief Callback to notify that the Wi-Fi Aware Data Path has been lost.
+ * @since_tizen 6.0
+ * @param[in] data_path
+ * @param[in] reason
+ * @param[in] user_data
+ */
+typedef void(*wifi_aware_data_path_terminated_cb)(wifi_aware_data_path_h data_path, wifi_aware_termination_reason_e reason, void *user_data);
+
+/**
+ * @brief Close a Wi-Fi Aware Data Path.
+ * @since_tizen 6.0
+ * @param[in] data_path
+ */
+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);
+
+// TODO
+// DataUpdate
+
+
// Can APIs to get peer information using wifi_aware_peer_h?
// wifi_aware_peer_get_mac_address(): Which mac address should this API show, NMI or NDI?
typedef struct {
- uint32_t subscribe_id; // Get it from return value of Subscribe dbus method call
uint16_t ttl;
uint8_t subscribe_type;
char service_name[WIFI_AWARE_MAX_SERVICE_NAME_LEN + 1];
wifi_aware_subscribe_h subscribe, int client_id, GAsyncReadyCallback cb);
int wifi_aware_gdbus_followup(wifi_aware_session_h session,
- int client_id, unsigned int pub_sub_id, unsigned int peer_id,
+ int client_id, uint16_t pub_sub_id, unsigned int peer_id,
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,
- unsigned int pub_sub_id, unsigned int peer_id, wifi_aware_data_path_role_e role,
+ 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,
GAsyncReadyCallback cb);
int wifi_aware_gdbus_ndp_close(wifi_aware_data_path_h data_path,
- unsigned int ndp_id, unsigned int pub_sub_id, unsigned int peer_id);
+ 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,
- unsigned int pub_sub_id, unsigned int peer_id, wifi_aware_data_path_role_e role,
+ uint16_t pub_sub_id, unsigned int peer_id, wifi_aware_data_path_role_e role,
unsigned char *specific_info, size_t specific_info_len,
const char *psk,
GAsyncReadyCallback cb);
int wifi_aware_gdbus_ndp_pmk(wifi_aware_data_path_h data_path,
- unsigned int pub_sub_id, unsigned int peer_id, wifi_aware_data_path_role_e role,
+ uint16_t pub_sub_id, unsigned int peer_id, wifi_aware_data_path_role_e role,
unsigned char *specific_info, size_t specific_info_len,
const unsigned char *pmk, size_t pmk_len,
GAsyncReadyCallback cb);
int _wifi_aware_session_handle_create(wifi_aware_session_type_e session_type, wifi_aware_session_h *session_handle);
void _wifi_aware_session_handle_destroy(wifi_aware_session_h session_handle);
wifi_aware_session_type_e _wifi_aware_session_get_type(wifi_aware_session_h session_handle);
-unsigned int _wifi_aware_session_get_pubsub_id(wifi_aware_session_h session);
+uint16_t _wifi_aware_session_get_pubsub_id(wifi_aware_session_h session);
int _wifi_aware_publish_handle_create(wifi_aware_publish_h *publish);
void _wifi_aware_publish_request_set_default_values(wifi_aware_publish_h publish);
void _wifi_aware_publish_set_enable_termination_event(wifi_aware_publish_h publish, bool enable);
void _wifi_aware_publish_set_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);
-unsigned int _wifi_aware_session_get_publish_id(wifi_aware_session_h session);
+uint16_t _wifi_aware_session_get_publish_id(wifi_aware_session_h session);
int _wifi_aware_subscribe_handle_create(wifi_aware_publish_h *publish);
void _wifi_aware_subscribe_set_default_values(wifi_aware_subscribe_h subscribe);
unsigned char *match_filter, size_t len);
void _wifi_aware_subscribe_set_enable_termination_event(wifi_aware_subscribe_h subscribe, bool enable);
wifi_aware_subscribe_request_s *_wifi_aware_subscribe_get_request(wifi_aware_subscribe_h subscribe_handle);
-unsigned int _wifi_aware_session_get_subscribe_id(wifi_aware_session_h session);
+uint16_t _wifi_aware_session_get_subscribe_id(wifi_aware_session_h session);
int _wifi_aware_publish_request(wifi_aware_session_h session, wifi_aware_publish_h publish,
wifi_aware_published_cb callback, void *user_data);
return params;
}
-static GVariant *__create_cancel_publish_request_param(int client_id, unsigned int pub_id)
+static GVariant *__create_cancel_publish_request_param(int client_id, uint16_t pub_id)
{
- return g_variant_new("(iu)", client_id, pub_id);
+ return g_variant_new("(iq)", client_id, pub_id);
}
static GVariant *__create_update_publish_request_param(int client_id,
- unsigned int pub_id, wifi_aware_publish_request_s *req)
+ uint16_t pub_id, wifi_aware_publish_request_s *req)
{
GVariantBuilder *builder = NULL;
GVariant *params = NULL;
g_variant_builder_add(builder, "{sv}", "enable_termination_event", g_variant_new("b", req->enable_termination_event));
g_variant_builder_add(builder, "{sv}", "enable_ranging", g_variant_new("b", req->enable_ranging));
- params = g_variant_new("(iua{sv})", client_id, pub_id, builder);
+ params = g_variant_new("(iqa{sv})", client_id, pub_id, builder);
g_variant_builder_unref(builder);
return params;
}
return params;
}
-static GVariant *__create_cancel_subscribe_request_param(int client_id, unsigned int sub_id)
+static GVariant *__create_cancel_subscribe_request_param(int client_id, uint16_t sub_id)
{
return g_variant_new("(iu)", client_id, sub_id);
}
static GVariant *__create_update_subscribe_request_param(int client_id,
- unsigned int sub_id, wifi_aware_subscribe_request_s *req)
+ uint16_t sub_id, wifi_aware_subscribe_request_s *req)
{
GVariantBuilder *builder = NULL;
GVariant *params = NULL;
return params;
}
-static GVariant *__create_followup_request_param(int client_id, unsigned int pub_sub_id,
+static GVariant *__create_followup_request_param(int client_id, uint16_t pub_sub_id,
unsigned int peer_id, const unsigned char *message, size_t len)
{
GVariantBuilder *builder = NULL;
GVariant *params = NULL;
GVariant *reply = NULL;
int ret = WIFI_AWARE_ERROR_NONE;
- unsigned int pub_id = _wifi_aware_session_get_publish_id(session);
+ uint16_t pub_id = _wifi_aware_session_get_publish_id(session);
if (pub_id == 0) {
WIFI_AWARE_LOGE("Invalid Publish Id");
GVariant *params = NULL;
int ret = WIFI_AWARE_ERROR_NONE;
wifi_aware_publish_request_s *req = _wifi_aware_publish_get_request(publish);
- unsigned int pub_id = _wifi_aware_session_get_publish_id(session);
+ uint16_t pub_id = _wifi_aware_session_get_publish_id(session);
if (pub_id == 0) {
WIFI_AWARE_LOGE("Invalid Publish Id.");
GVariant *params = NULL;
GVariant *reply = NULL;
int ret = WIFI_AWARE_ERROR_NONE;
- unsigned int sub_id = _wifi_aware_session_get_subscribe_id(session);
+ uint16_t sub_id = _wifi_aware_session_get_subscribe_id(session);
if (sub_id == 0) {
WIFI_AWARE_LOGE("Invalid Subscribe Id");
GVariant *params = NULL;
int ret = WIFI_AWARE_ERROR_NONE;
wifi_aware_subscribe_request_s *req = _wifi_aware_subscribe_get_request(subscribe);
- unsigned int sub_id = _wifi_aware_session_get_subscribe_id(session);
+ uint16_t sub_id = _wifi_aware_session_get_subscribe_id(session);
if (sub_id == 0) {
WIFI_AWARE_LOGE("Invalid Publish Id.");
}
int wifi_aware_gdbus_followup(wifi_aware_session_h session,
- int client_id, unsigned int pub_sub_id, unsigned int peer_id,
+ int client_id, uint16_t pub_sub_id, unsigned int peer_id,
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,
- unsigned int pub_sub_id, unsigned int peer_id, wifi_aware_data_path_role_e role,
+ 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,
GAsyncReadyCallback cb)
{
}
int wifi_aware_gdbus_ndp_close(wifi_aware_data_path_h data_path,
- unsigned int ndp_id, unsigned int pub_sub_id, unsigned int peer_id)
+ unsigned int ndp_id, uint16_t pub_sub_id, unsigned int peer_id)
{
return WIFI_AWARE_ERROR_NONE;
}
int wifi_aware_gdbus_ndp_psk(wifi_aware_data_path_h data_path,
- unsigned int pub_sub_id, unsigned int peer_id, wifi_aware_data_path_role_e role,
+ uint16_t pub_sub_id, unsigned int peer_id, wifi_aware_data_path_role_e role,
unsigned char *specific_info, size_t specific_info_len,
const char *psk,
GAsyncReadyCallback cb)
}
int wifi_aware_gdbus_ndp_pmk(wifi_aware_data_path_h data_path,
- unsigned int pub_sub_id, unsigned int peer_id, wifi_aware_data_path_role_e role,
+ uint16_t pub_sub_id, unsigned int peer_id, wifi_aware_data_path_role_e role,
unsigned char *specific_info, size_t specific_info_len,
const unsigned char *pmk, size_t pmk_len,
GAsyncReadyCallback cb)
} wifi_aware_s;
typedef struct {
- uint32_t publish_id;
+ uint16_t publish_id;
wifi_aware_publish_request_s req;
} wifi_aware_publish_s;
typedef struct {
- uint32_t subscribe_id;
+ uint16_t subscribe_id;
wifi_aware_subscribe_request_s req;
} wifi_aware_subscribe_s;
return handle->publish_id > 0;
}
-static void __wifi_aware_publish_set_id(wifi_aware_publish_h publish, unsigned int publish_id)
+static void __wifi_aware_publish_set_id(wifi_aware_publish_h publish, uint16_t publish_id)
{
RET_IF(publish == NULL, "wifi_aware_publish_h is NULL");
wifi_aware_publish_s *handle = (wifi_aware_publish_s *)publish;
handle->received_cb_data);
}
-static wifi_aware_error_e __get_dbus_result(GObject *src, GAsyncResult *res, unsigned int *id)
+static wifi_aware_error_e __get_dbus_result(GObject *src, GAsyncResult *res, uint16_t *id)
{
GDBusConnection *conn = G_DBUS_CONNECTION(src);
GError *dbus_error = NULL;
g_error_free(dbus_error);
}
else {
- g_variant_get(reply, "(ui)", id, &nan_error);
+ g_variant_get(reply, "(qi)", id, &nan_error);
WIFI_AWARE_LOGI("Pub/Sub ID: %u, error: %d", *id, nan_error);
error = _wifi_aware_convert_nan_manager_error(nan_error);
}
{
wifi_aware_session_h session = (wifi_aware_session_h)user_data;
wifi_aware_error_e error = WIFI_AWARE_ERROR_NONE;
- unsigned int publish_id = 0;
+ uint16_t publish_id = 0;
WIFI_AWARE_LOGI("Reply for Publish Request");
RET_IF(session == NULL, "Session is NULL");
handle->subscribed_cb(session, error, handle->subscribed_cb_data);
}
-static void __wifi_aware_subscribe_set_id(wifi_aware_subscribe_h subscribe, unsigned int subscribe_id)
+static void __wifi_aware_subscribe_set_id(wifi_aware_subscribe_h subscribe, uint16_t subscribe_id)
{
wifi_aware_subscribe_s *handle = (wifi_aware_subscribe_s *)subscribe;
handle->subscribe_id = subscribe_id;
{
wifi_aware_session_h session = (wifi_aware_session_h)user_data;
wifi_aware_error_e error = WIFI_AWARE_ERROR_NONE;
- unsigned int subscribe_id = 0;
+ uint16_t subscribe_id = 0;
WIFI_AWARE_LOGI("Reply for Subscribe Request");
RET_IF(session == NULL, "Session is NULL");
__wifi_aware_subscribe_invoke_callback(session, error);
}
-unsigned int _wifi_aware_session_get_publish_id(wifi_aware_session_h session)
+uint16_t _wifi_aware_session_get_publish_id(wifi_aware_session_h session)
{
RET_VAL_IF(session == NULL, 0, "wifi_aware_session_h is NULL");
RET_VAL_IF(!__is_publish_session(session), 0,
return __session_get_publish_config(session)->publish_id;
}
-unsigned int _wifi_aware_session_get_subscribe_id(wifi_aware_session_h session)
+uint16_t _wifi_aware_session_get_subscribe_id(wifi_aware_session_h session)
{
RET_VAL_IF(session == NULL, 0, "wifi_aware_session_h is NULL");
RET_VAL_IF(!__is_subscribe_session(session), 0,
return __session_get_subscribe_config(session)->subscribe_id;
}
-unsigned int _wifi_aware_session_get_pubsub_id(wifi_aware_session_h session)
+uint16_t _wifi_aware_session_get_pubsub_id(wifi_aware_session_h session)
{
return 0;
}
}
static void __parsing_service_discovered_event(GVariant *parameters,
- unsigned int *sub_id, unsigned int *peer_id,
+ uint16_t *sub_id, unsigned int *peer_id,
unsigned char *specific_info, size_t *specific_info_len)
{
gchar *info_value = NULL;
- g_variant_get(parameters, "(uusq)", sub_id, peer_id,
+ g_variant_get(parameters, "(qusq)", sub_id, peer_id,
&info_value, specific_info_len);
memcpy(specific_info, info_value, *specific_info_len);
__WIFI_AWARE_FUNC_ENTER__;
WIFI_AWARE_LOGD("NAN Service is discovered");
- unsigned int sub_id = 0;
+ uint16_t sub_id = 0;
unsigned int peer_id = 0;
unsigned char specific_info[WIFI_AWARE_MAX_SERVICE_SPECIFIC_INFO_LEN];
size_t specific_info_len = 0;
__WIFI_AWARE_FUNC_ENTER__;
RET_VAL_IF(session == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_session_h is NULL");
- unsigned int pub_sub_id = 0;
+ uint16_t pub_sub_id = 0;
wifi_aware_message_s *message_data = __create_message_data(session, callback, user_data);
RET_VAL_IF(message == NULL, WIFI_AWARE_ERROR_OUT_OF_MEMORY, "__create_cb_data fails");