From 1118cbd110382b064bb063659baad9f41b2b77ad Mon Sep 17 00:00:00 2001 From: Cheoleun Moon Date: Thu, 6 Feb 2020 14:17:41 +0900 Subject: [PATCH] Change the type of service_name to char* --- include/wifi-aware.h | 18 ++++++++++-------- src/include/wifi-aware-config.h | 6 ++---- src/include/wifi-aware-publish-private.h | 1 + src/include/wifi-aware-utils.h | 2 +- src/wifi-aware-gdbus.c | 5 +---- src/wifi-aware-private.c | 5 ----- src/wifi-aware-publish.c | 19 ++++++++++++------- src/wifi-aware-subscribe.c | 15 ++++++++++----- test/wifi-aware-test.c | 21 +++++++++------------ 9 files changed, 46 insertions(+), 46 deletions(-) diff --git a/include/wifi-aware.h b/include/wifi-aware.h index a5d8bf8..47832eb 100644 --- a/include/wifi-aware.h +++ b/include/wifi-aware.h @@ -98,13 +98,15 @@ typedef enum { 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; @@ -216,14 +218,14 @@ int wifi_aware_publish_set_ttl(wifi_aware_publish_h publish, unsigned short ttl) 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. @@ -292,14 +294,14 @@ int wifi_aware_subscribe_config_set_ttl(wifi_aware_subscribe_config_h config, un 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 diff --git a/src/include/wifi-aware-config.h b/src/include/wifi-aware-config.h index f19da86..fa3a016 100644 --- a/src/include/wifi-aware-config.h +++ b/src/include/wifi-aware-config.h @@ -40,8 +40,7 @@ typedef struct { 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]; @@ -55,8 +54,7 @@ typedef struct { 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]; diff --git a/src/include/wifi-aware-publish-private.h b/src/include/wifi-aware-publish-private.h index 30e328f..abf30bc 100644 --- a/src/include/wifi-aware-publish-private.h +++ b/src/include/wifi-aware-publish-private.h @@ -21,6 +21,7 @@ #include #include "wifi-aware.h" +#include "wifi-aware-config.h" #include "wifi-aware-log.h" #ifdef __cplusplus diff --git a/src/include/wifi-aware-utils.h b/src/include/wifi-aware-utils.h index 2ac5ef2..395f282 100644 --- a/src/include/wifi-aware-utils.h +++ b/src/include/wifi-aware-utils.h @@ -56,7 +56,7 @@ extern "C" { } 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; \ diff --git a/src/wifi-aware-gdbus.c b/src/wifi-aware-gdbus.c index a3a0ba3..ed46004 100644 --- a/src/wifi-aware-gdbus.c +++ b/src/wifi-aware-gdbus.c @@ -28,6 +28,7 @@ #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" @@ -249,7 +250,6 @@ static GVariant *__create_publish_request_param(int client_id, wifi_aware_publis 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)); @@ -277,7 +277,6 @@ static GVariant *__create_update_publish_request_param(int client_id, 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)); @@ -299,7 +298,6 @@ static GVariant *__create_subscribe_request_param(int client_id, wifi_aware_subs 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)); @@ -380,7 +378,6 @@ int wifi_aware_gdbus_cancel_publish(wifi_aware_publish_h publish, int client_id) 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) { diff --git a/src/wifi-aware-private.c b/src/wifi-aware-private.c index f36c796..26175cd 100644 --- a/src/wifi-aware-private.c +++ b/src/wifi-aware-private.c @@ -154,10 +154,6 @@ bool _wifi_aware_handle_is_valid(wifi_aware_h wifi_aware) 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; @@ -380,7 +376,6 @@ static void __parsing_service_discovered_event(GVariant *parameters, 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); diff --git a/src/wifi-aware-publish.c b/src/wifi-aware-publish.c index 27de0a8..d1b44d8 100644 --- a/src/wifi-aware-publish.c +++ b/src/wifi-aware-publish.c @@ -54,8 +54,6 @@ static void _wifi_aware_publish_request_set_default_values(wifi_aware_publish_re { 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); @@ -82,7 +80,7 @@ unsigned int _wifi_aware_publish_get_id(wifi_aware_publish_h publish) 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) @@ -91,7 +89,7 @@ void _wifi_aware_publish_invoke_callback(wifi_aware_error_e error, wifi_aware_pu 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; } @@ -153,15 +151,22 @@ API int wifi_aware_publish_set_type(wifi_aware_publish_h publish, } 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; diff --git a/src/wifi-aware-subscribe.c b/src/wifi-aware-subscribe.c index 0c6c312..b5867fb 100644 --- a/src/wifi-aware-subscribe.c +++ b/src/wifi-aware-subscribe.c @@ -42,8 +42,6 @@ static void __wifi_aware_subscribe_config_set_default_values( (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); @@ -109,15 +107,22 @@ API int wifi_aware_subscribe_config_set_type( 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; diff --git a/test/wifi-aware-test.c b/test/wifi-aware-test.c index 108778f..0032337 100644 --- a/test/wifi-aware-test.c +++ b/test/wifi-aware-test.c @@ -389,7 +389,7 @@ static void __set_publish_config(wifi_aware_publish_h config) { 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; @@ -406,10 +406,9 @@ static void __set_publish_config(wifi_aware_publish_h config) 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; @@ -483,7 +482,7 @@ static void __updated_publish_cb(wifi_aware_error_e error, wifi_aware_publish_h 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(); @@ -494,10 +493,9 @@ void test_update_publish() 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; @@ -529,7 +527,7 @@ static void __set_subscribe_config(wifi_aware_subscribe_config_h config) { 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; @@ -546,10 +544,9 @@ static void __set_subscribe_config(wifi_aware_subscribe_config_h config) 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; -- 2.7.4