typedef enum {
- WIFI_AWARE_PUBLISH_TYPE_SOLICITED, /**< Solicited type */
WIFI_AWARE_PUBLISH_TYPE_UNSOLICITED,/**< Unsolicited type */
+ WIFI_AWARE_PUBLISH_TYPE_SOLICITED, /**< Solicited type */
+ // TODO:
+ // WIFI_AWARE_PUBLISH_TYPE_UNSOLICITED_SOLICITED
} wifi_aware_publish_type_e;
typedef enum {
- WIFI_AWARE_SUBSCRIBE_TYPE_ACTIVE, /**< Active type */
WIFI_AWARE_SUBSCRIBE_TYPE_PASSIVE, /**< Passive type */
+ WIFI_AWARE_SUBSCRIBE_TYPE_ACTIVE, /**< Active type */
} wifi_aware_subscribe_type_e;
int wifi_aware_publish_set_type(wifi_aware_publish_h publish, wifi_aware_publish_type_e publish_type);
/**
- * @brief Set the name of the service.
+ * @brief Set the name of the service. The length should be less than or equal to 255
* @since_tizen 6.0
* @param[in] publish
- * @param[in] service_name. It should be a null-terminated string.
+ * @param[in] service_name UTF-8 name which identifies the service
* @return 0 on success, otherwise a negative error value
* @retval #WIFI_AWARE_ERROR_NONE
*/
-int wifi_aware_publish_set_service_name(wifi_aware_publish_h publish, unsigned char *service_name, size_t len);
+int wifi_aware_publish_set_service_name(wifi_aware_publish_h publish, const char *service_name);
/**
* @brief Set the specific information for the service.
int wifi_aware_subscribe_config_set_type(wifi_aware_subscribe_config_h config, wifi_aware_subscribe_type_e subscribe_type);
/**
- * @brief
+ * @brief Set the name of the service. The length should be less than or equal to 255
* @since_tizen 6.0
* @param[in] config
- * @param[in] service_name. It should be a null-terminated string.
+ * @param[in] service_name UTF-8 name which identifies the service
* @return 0 on success, otherwise a negative error value
* @retval #WIFI_AWARE_ERROR_NONE
*/
-int wifi_aware_subscribe_config_set_service_name(wifi_aware_subscribe_config_h config, unsigned char *service_name, size_t len);
+int wifi_aware_subscribe_config_set_service_name(wifi_aware_subscribe_config_h config, const char *service_name);
/**
* @brief
typedef struct {
uint16_t ttl;
uint8_t publish_type;
- uint8_t service_name[WIFI_AWARE_MAX_SERVICE_NAME_LEN];
- uint16_t service_name_len;
+ char service_name[WIFI_AWARE_MAX_SERVICE_NAME_LEN + 1];
uint8_t specific_info[WIFI_AWARE_MAX_SERVICE_SPECIFIC_INFO_LEN];
uint16_t specific_info_len;
uint8_t match_filter[WIFI_AWARE_MAX_MATCH_FILTER_LEN];
uint32_t subscribe_id; // Get it from return value of Subscribe dbus method call
uint16_t ttl;
uint8_t subscribe_type;
- uint8_t service_name[WIFI_AWARE_MAX_SERVICE_NAME_LEN];
- uint16_t service_name_len;
+ char service_name[WIFI_AWARE_MAX_SERVICE_NAME_LEN + 1];
uint8_t specific_info[WIFI_AWARE_MAX_SERVICE_SPECIFIC_INFO_LEN];
uint16_t specific_info_len;
uint8_t match_filter[WIFI_AWARE_MAX_MATCH_FILTER_LEN];
#include <gio/gio.h>
#include "wifi-aware.h"
+#include "wifi-aware-config.h"
#include "wifi-aware-log.h"
#ifdef __cplusplus
} while (0)
*/
-#define RET_IF(expr, val, fmt, arg...) do { \
+#define RET_IF(expr, fmt, arg...) do { \
if (expr) { \
WIFI_AWARE_LOGE(fmt, ##arg); \
return; \
#include "wifi-aware-log.h"
#include "wifi-aware.h"
#include "wifi-aware-private.h"
+#include "wifi-aware-publish-private.h"
#include "wifi-aware-utils.h"
#include "wifi-aware-gdbus.h"
g_variant_builder_add(builder, "{sv}", "ttl", g_variant_new("q", req->ttl));
g_variant_builder_add(builder, "{sv}", "publish_type", g_variant_new("y", req->publish_type));
g_variant_builder_add(builder, "{sv}", "service_name", g_variant_new("s", req->service_name));
- g_variant_builder_add(builder, "{sv}", "service_name_len", g_variant_new("q", req->service_name_len));
g_variant_builder_add(builder, "{sv}", "specific_info", g_variant_new("s", req->specific_info));
g_variant_builder_add(builder, "{sv}", "specific_info_len", g_variant_new("q", req->specific_info_len));
g_variant_builder_add(builder, "{sv}", "match_filter", g_variant_new("s", req->match_filter));
g_variant_builder_add(builder, "{sv}", "ttl", g_variant_new("q", req->ttl));
g_variant_builder_add(builder, "{sv}", "publish_type", g_variant_new("y", req->publish_type));
g_variant_builder_add(builder, "{sv}", "service_name", g_variant_new("s", req->service_name));
- g_variant_builder_add(builder, "{sv}", "service_name_len", g_variant_new("q", req->service_name_len));
g_variant_builder_add(builder, "{sv}", "specific_info", g_variant_new("s", req->specific_info));
g_variant_builder_add(builder, "{sv}", "specific_info_len", g_variant_new("q", req->specific_info_len));
g_variant_builder_add(builder, "{sv}", "match_filter", g_variant_new("s", req->match_filter));
g_variant_builder_add(builder, "{sv}", "ttl", g_variant_new("q", req->ttl));
g_variant_builder_add(builder, "{sv}", "subscribe_type", g_variant_new("y", req->subscribe_type));
g_variant_builder_add(builder, "{sv}", "service_name", g_variant_new("s", req->service_name));
- g_variant_builder_add(builder, "{sv}", "service_name_len", g_variant_new("q", req->service_name_len));
g_variant_builder_add(builder, "{sv}", "specific_info", g_variant_new("s", req->specific_info));
g_variant_builder_add(builder, "{sv}", "specific_info_len", g_variant_new("q", req->specific_info_len));
g_variant_builder_add(builder, "{sv}", "match_filter", g_variant_new("s", req->match_filter));
GVariant *params = NULL;
GVariant *reply = 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_publish_get_id(publish);
if (pub_id == 0) {
return true;
}
-static void __print_match_filter(unsigned char *filter, size_t filter_len)
-{
-}
-
static wifi_aware_error_e __parse_enable_reply(GVariant *reply, wifi_aware_s *aware)
{
int error;
unsigned char *specific_info, size_t *specific_info_len)
{
gchar *info_value = NULL;
- gchar *filter_value = NULL;
g_variant_get(parameters, "(uusq)", sub_id, peer_id,
info_value, specific_info_len);
{
req->ttl = 0;
req->publish_type = WIFI_AWARE_PUBLISH_TYPE_UNSOLICITED;
- //memset(req->service_name[WIFI_AWARE_MAX_SERVICE_NAME_LEN], 0, WIFI_AWARE_MAX_SERVICE_NAME_LEN);
- req->service_name_len = 0;
//memset(req->specific_info[WIFI_AWARE_MAX_SERVICE_SPECIFIC_INFO_LEN], 0, WIFI_AWARE_MAX_SERVICE_SPECIFIC_INFO_LEN);
req->specific_info_len = 0;
//memset(req->match_filter[WIFI_AWARE_MAX_MATCH_FILTER_LEN], 0, WIFI_AWARE_MAX_MATCH_FILTER_LEN);
void _wifi_aware_publish_invoke_callback(wifi_aware_error_e error, wifi_aware_publish_h publish)
{
- RET_VAL_IF(publish == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_publish_h is NULL");
+ RET_IF(publish == NULL, "wifi_aware_publish_h is NULL");
wifi_aware_publish_s *handle = (wifi_aware_publish_s *)publish;
if (handle->published_cb)
void _wifi_aware_publish_set_id(wifi_aware_publish_h publish, unsigned int publish_id)
{
- RET_IF(publish == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_publish_h is NULL");
+ RET_IF(publish == NULL, "wifi_aware_publish_h is NULL");
wifi_aware_publish_s *handle = (wifi_aware_publish_s *)publish;
handle->publish_id = publish_id;
}
}
API int wifi_aware_publish_set_service_name(wifi_aware_publish_h publish,
- unsigned char *service_name, size_t len)
+ const char *service_name)
{
__WIFI_AWARE_FUNC_ENTER__;
+ int len = 0;
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_s *handle = (wifi_aware_publish_s *)publish;
- memcpy(handle->req.service_name, service_name, len);
- handle->req.service_name_len = len;
+ len = strlen(service_name);
+ if (len > WIFI_AWARE_MAX_SERVICE_NAME_LEN) {
+ WIFI_AWARE_LOGE("The length of service_name should be equal to or less than %d",
+ WIFI_AWARE_MAX_SERVICE_NAME_LEN);
+ return WIFI_AWARE_ERROR_INVALID_PARAMETER;
+ }
+
+ strncpy(handle->req.service_name, service_name, WIFI_AWARE_MAX_SERVICE_NAME_LEN);
__WIFI_AWARE_FUNC_EXIT__;
return WIFI_AWARE_ERROR_NONE;
(wifi_aware_subscribe_request_s *)config;
req->ttl = 0;
req->subscribe_type = WIFI_AWARE_SUBSCRIBE_TYPE_PASSIVE;
- //memset(req->service_name[WIFI_AWARE_MAX_SERVICE_NAME_LEN], 0, WIFI_AWARE_MAX_SERVICE_NAME_LEN);
- req->service_name_len = 0;
//memset(req->specific_info[WIFI_AWARE_MAX_SERVICE_SPECIFIC_INFO_LEN], 0, WIFI_AWARE_MAX_SERVICE_SPECIFIC_INFO_LEN);
req->specific_info_len = 0;
//memset(req->match_filter[WIFI_AWARE_MAX_MATCH_FILTER_LEN], 0, WIFI_AWARE_MAX_MATCH_FILTER_LEN);
API int wifi_aware_subscribe_config_set_service_name(
wifi_aware_subscribe_config_h config,
- unsigned char *service_name, size_t len)
+ const char *service_name)
{
__WIFI_AWARE_FUNC_ENTER__;
+ int len = 0;
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_WIFI_AWARE);
RET_VAL_IF(config == NULL, WIFI_AWARE_ERROR_INVALID_PARAMETER, "wifi_aware_subscribe_config_h is NULL");
wifi_aware_subscribe_request_s *req = (wifi_aware_subscribe_request_s *)config;
- memcpy(req->service_name, service_name, len);
- req->service_name_len = len;
+ len = strlen(service_name);
+ if (len > WIFI_AWARE_MAX_SERVICE_NAME_LEN) {
+ WIFI_AWARE_LOGE("The length of service_name should be equal to or less than %d",
+ WIFI_AWARE_MAX_SERVICE_NAME_LEN);
+ return WIFI_AWARE_ERROR_INVALID_PARAMETER;
+ }
+
+ strncpy(req->service_name, service_name, WIFI_AWARE_MAX_SERVICE_NAME_LEN);
__WIFI_AWARE_FUNC_EXIT__;
return WIFI_AWARE_ERROR_NONE;
{
int ret = 0;
int publish_type = 0;
- unsigned char service_name[MAX_SERVICE_NAME_LEN + 1] = {0, };
+ char service_name[MAX_SERVICE_NAME_LEN + 1] = {0, };
unsigned char specific_info[MAX_SPECIFIC_INFO_LEN + 1] = {0, };
unsigned char match_filter[MAX_MATCH_FILTER_LEN + 1] = {0, };
size_t len = 0;
if (ret != WIFI_AWARE_ERROR_NONE)
return;
- len = strlen(SERVICE_NAME);
- memcpy(service_name, SERVICE_NAME, len);
+ strncpy(service_name, SERVICE_NAME, MAX_SERVICE_NAME_LEN);
ret = wifi_aware_publish_set_service_name(config,
- service_name, len);
+ service_name);
if (ret != WIFI_AWARE_ERROR_NONE)
return;
void test_update_publish()
{
int ret = 0;
- unsigned char service_name[MAX_SERVICE_NAME_LEN + 1] = {0, };
+ char service_name[MAX_SERVICE_NAME_LEN + 1] = {0, };
size_t len = 0;
RET_IF_LOOP_IS_NULL();
return;
}
- len = strlen(UPDATE_SERVICE_NAME);
- memcpy(service_name, UPDATE_SERVICE_NAME, len);
+ strncpy(service_name, UPDATE_SERVICE_NAME, MAX_SERVICE_NAME_LEN);
ret = wifi_aware_publish_set_service_name(g_publish_handle,
- service_name, len);
+ service_name);
if (ret != WIFI_AWARE_ERROR_NONE)
return;
{
int ret = 0;
int subscribe_type = 0;
- unsigned char service_name[MAX_SERVICE_NAME_LEN + 1] = {0, };
+ char service_name[MAX_SERVICE_NAME_LEN + 1] = {0, };
unsigned char specific_info[MAX_SPECIFIC_INFO_LEN + 1] = {0, };
unsigned char match_filter[MAX_MATCH_FILTER_LEN + 1] = {0, };
size_t len = 0;
if (ret != WIFI_AWARE_ERROR_NONE)
return;
- len = strlen(SERVICE_NAME);
- memcpy(service_name, SERVICE_NAME, len);
+ strncpy(service_name, SERVICE_NAME, MAX_SERVICE_NAME_LEN);
ret = wifi_aware_subscribe_config_set_service_name(config,
- service_name, len);
+ service_name);
if (ret != WIFI_AWARE_ERROR_NONE)
return;