From 70facf288017f1b885198c60f1a0d3d839a17c49 Mon Sep 17 00:00:00 2001 From: Seonah Moon Date: Fri, 11 Dec 2015 14:17:54 +0900 Subject: [PATCH] Modified checking supported feature function Change-Id: I69c55a8175128d3a46ff2ed0b767e7f85d38af2f Signed-off-by: Seonah Moon --- include/tethering_private.h | 17 +++++++++---- packaging/capi-network-tethering.spec | 2 +- src/tethering_private.c | 46 ++++++++++++++++++++++++++++------- 3 files changed, 50 insertions(+), 15 deletions(-) diff --git a/include/tethering_private.h b/include/tethering_private.h index 29c9e4d..8e55522 100644 --- a/include/tethering_private.h +++ b/include/tethering_private.h @@ -83,17 +83,24 @@ extern "C" { #define TETHERING_USB_FEATURE "http://tizen.org/feature/network.tethering.usb" #define TETHERING_WIFI_FEATURE "http://tizen.org/feature/network.tethering.wifi" +typedef enum +{ + TETHERING_SUPPORTED_FEATURE, + TETHERING_SUPPORTED_FEATURE_WIFI, + TETHERING_SUPPORTED_FEATURE_BT, + TETHERING_SUPPORTED_FEATURE_USB, + TETHERING_SUPPORTED_FEATURE_MAX, +} tethering_supported_feature_e; + #define CHECK_FEATURE_SUPPORTED(...) \ do { \ - int rv = tethering_check_feature_supported(__VA_ARGS__, NULL); \ + int rv = _tethering_check_feature_supported(__VA_ARGS__, NULL); \ if(rv != TETHERING_ERROR_NONE) { \ - ERR("Not supported\n"); \ - set_last_result(TETHERING_ERROR_NOT_SUPPORT_API); \ - return TETHERING_ERROR_NOT_SUPPORT_API; \ + return rv; \ } \ } while (0) -int tethering_check_feature_supported(const char* feature, ...); +int _tethering_check_feature_supported(const char* feature, ...); /** * Start of mobileap-agent common values diff --git a/packaging/capi-network-tethering.spec b/packaging/capi-network-tethering.spec index 60acc0b..615375a 100644 --- a/packaging/capi-network-tethering.spec +++ b/packaging/capi-network-tethering.spec @@ -1,6 +1,6 @@ Name: capi-network-tethering Summary: Tethering Framework -Version: 1.0.25 +Version: 1.0.26 Release: 1 Group: System/Network License: Apache-2.0 diff --git a/src/tethering_private.c b/src/tethering_private.c index 1bdc1a0..05e7697 100755 --- a/src/tethering_private.c +++ b/src/tethering_private.c @@ -19,28 +19,56 @@ #include #include "tethering_private.h" -int tethering_check_feature_supported(const char* feature, ...) +static __thread bool is_feature_checked[TETHERING_SUPPORTED_FEATURE_MAX] = {0, }; +static __thread bool feature_supported[TETHERING_SUPPORTED_FEATURE_MAX] = {0, }; + +bool __check_feature_supported(const char *key, tethering_supported_feature_e feature) +{ + if (!is_feature_checked[feature]) { + if (system_info_get_platform_bool(key, &feature_supported[feature]) < 0) { + ERR("Get feature is failed"); + return false; + } + + feature_supported[feature] = true; + } + return feature_supported[feature]; +} + +int _tethering_check_feature_supported(const char* feature, ...) { va_list list; const char *key; - int ret; - bool value, supported = false; + bool value = false; + bool supported = false; va_start(list, feature); key = feature; - while (1) { - ret = system_info_get_platform_bool(key, &value); - if (ret < 0) { - ERR("Get feature is failed\n"); - return TETHERING_ERROR_OPERATION_FAILED; + while(1) { + if((strcmp(key, TETHERING_FEATURE) == 0)){ + value = __check_feature_supported(key, TETHERING_SUPPORTED_FEATURE); + } + if((strcmp(key, TETHERING_WIFI_FEATURE) == 0)){ + value = __check_feature_supported(key, TETHERING_SUPPORTED_FEATURE); + } + if((strcmp(key, TETHERING_BT_FEATURE) == 0)){ + value = __check_feature_supported(key, TETHERING_SUPPORTED_FEATURE); + } + if((strcmp(key, TETHERING_USB_FEATURE) == 0)){ + value = __check_feature_supported(key, TETHERING_SUPPORTED_FEATURE); } supported |= value; key = va_arg(list, const char *); if (!key) break; } - if (!supported) + if (!supported) { + ERR("Not supported feature"); + set_last_result(TETHERING_ERROR_NOT_SUPPORT_API); return TETHERING_ERROR_NOT_SUPPORT_API; + } + va_end(list); + set_last_result(TETHERING_ERROR_NONE); return TETHERING_ERROR_NONE; } -- 2.7.4