Support ACS feature 14/186514/7 accepted/tizen/unified/20180817.140826 submit/tizen/20180817.052759
authorSeonah Moon <seonah1.moon@samsung.com>
Fri, 10 Aug 2018 04:50:17 +0000 (13:50 +0900)
committerSeonah Moon <seonah1.moon@samsung.com>
Mon, 13 Aug 2018 04:57:36 +0000 (13:57 +0900)
- Update API description for ACS
- Add feature check code for ACS

Change-Id: I22e6ce91483394dcf3cc47c69ec4c91c6d42fff5

include/softap.h
include/softap_private.h
packaging/capi-network-softap.spec
src/softap.c
src/softap_private.c

index fa549badea1f665a004c64121f1b69f276abdb47..6971032bcd83460ad72ebe5663f3fbe693853e28 100644 (file)
@@ -931,8 +931,10 @@ int softap_get_vendor_element(softap_h softap, char **vendor_element);
  * @since_tizen 5.0
  * @privlevel public
  * @privilege %http://tizen.org/privilege/softap
- * @remarks This change is applied next time SoftAP is enabled. \n
- *          You can use softap_enable() or softap_reload_settings() to enable SoftAP.
+ * @remarks This change is applied next time SoftAP is enabled.\n
+ *          You can use softap_enable() or softap_reload_settings() to enable SoftAP.\n
+ *          If @a channel is 0, the channel can be selected automaticaaly at run time.\n
+ *          (ACS: Automatic Channel Selection)
  * @param[in]  softap   The SoftAP handle
  * @param[in]  channel  The channel number
  * @return 0 on success, otherwise negative error value
index 933fef84c9dafd3f469b2adf512777008e8091b8..48b7f19d44fb8ca18a313edc86250439b70636c5 100644 (file)
@@ -74,7 +74,11 @@ extern "C" {
                } \
        } while (0)
 
-#define SOFTAP_FEATURE "http://tizen.org/feature/network.wifi.softap"
+typedef enum {
+       SUPPORTED_FEATURE_SOFTAP = 0,
+       SUPPORTED_FEATURE_SOFTAP_ACS,
+       SUPPORTED_FEATURE_MAX,
+} softap_supported_feature_e;
 
 #define CHECK_FEATURE_SUPPORTED(key) \
        do { \
@@ -84,7 +88,7 @@ extern "C" {
                } \
        } while (0)
 
-int _softap_check_feature_supported(const char *key);
+int _softap_check_feature_supported(int key);
 
 /**
 * Start of mobileap-agent common values
index e31c8cbeb25d4254f906c101920ddfaafc81093a..742afe27837ee40c6bc3a2bbe05d2745ed57309f 100644 (file)
@@ -1,6 +1,6 @@
 Name:          capi-network-softap
 Summary:       Softap Framework
-Version:       0.0.23
+Version:       0.0.24
 Release:       1
 Group:         System/Network
 License:       Apache-2.0
index 0ba581ce8fc75416e7caad06f02774266ac51d5e..70df9f79a5c4177238f870c82b8095c60718b63d 100755 (executable)
@@ -790,7 +790,7 @@ static bool __get_ssid_from_vconf(const char *path, char *ssid, unsigned int siz
 API int softap_create(softap_h *softap)
 {
        DBG("+");
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(_softap_check_permission() != SOFTAP_ERROR_NONE,
                        SOFTAP_ERROR_PERMISSION_DENIED,
                        "permission denied!");
@@ -895,7 +895,7 @@ API int softap_create(softap_h *softap)
 API int softap_destroy(softap_h softap)
 {
        DBG("+");
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(_softap_check_permission() != SOFTAP_ERROR_NONE,
                        SOFTAP_ERROR_PERMISSION_DENIED,
                        "permission denied!");
@@ -927,7 +927,7 @@ API int softap_destroy(softap_h softap)
 API int softap_enable(softap_h softap)
 {
        DBG("+");
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
         _retvm_if(softap == NULL, SOFTAP_ERROR_INVALID_PARAMETER,
                         "parameter(softap) is NULL");
 
@@ -956,7 +956,7 @@ API int softap_enable(softap_h softap)
 API int softap_disable(softap_h softap)
 {
        DBG("+");
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(softap == NULL, SOFTAP_ERROR_INVALID_PARAMETER,
                        "parameter(softap) is NULL");
 
@@ -976,7 +976,7 @@ API int softap_disable(softap_h softap)
 
 API int softap_reload_settings(softap_h softap, softap_settings_reloaded_cb callback, void *user_data)
 {
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(softap == NULL, SOFTAP_ERROR_INVALID_PARAMETER,
                        "parameter(softap) is NULL\n");
        _retvm_if(callback == NULL, SOFTAP_ERROR_INVALID_PARAMETER,
@@ -1012,7 +1012,7 @@ API int softap_reload_settings(softap_h softap, softap_settings_reloaded_cb call
 API int softap_is_enabled(softap_h softap, bool *enable)
 {
        DBG("+");
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(_softap_check_permission() != SOFTAP_ERROR_NONE,
                        SOFTAP_ERROR_PERMISSION_DENIED,
                        "permission denied!");
@@ -1038,7 +1038,7 @@ API int softap_is_enabled(softap_h softap, bool *enable)
 API int softap_get_mac_address(softap_h softap, char **mac_address)
 {
        DBG("+");
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(_softap_check_permission() != SOFTAP_ERROR_NONE,
                        SOFTAP_ERROR_PERMISSION_DENIED,
                        "permission denied!");
@@ -1090,7 +1090,7 @@ API int softap_get_mac_address(softap_h softap, char **mac_address)
 API int softap_get_network_interface_name(softap_h softap, char **interface_name)
 {
        DBG("+");
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(_softap_check_permission() != SOFTAP_ERROR_NONE,
                        SOFTAP_ERROR_PERMISSION_DENIED,
                        "permission denied!");
@@ -1117,7 +1117,7 @@ API int softap_get_network_interface_name(softap_h softap, char **interface_name
 API int softap_set_ip_address(softap_h softap, softap_address_family_e address_family, const char *ip_address)
 {
        DBG("+");
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(_softap_check_permission() != SOFTAP_ERROR_NONE,
                        SOFTAP_ERROR_PERMISSION_DENIED,
                        "permission denied!");
@@ -1149,7 +1149,7 @@ API int softap_set_ip_address(softap_h softap, softap_address_family_e address_f
 API int softap_get_ip_address(softap_h softap, softap_address_family_e address_family,  char **ip_address)
 {
        DBG("+");
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(_softap_check_permission() != SOFTAP_ERROR_NONE,
                        SOFTAP_ERROR_PERMISSION_DENIED,
                        "permission denied!");
@@ -1192,7 +1192,7 @@ API int softap_get_ip_address(softap_h softap, softap_address_family_e address_f
 API int softap_get_gateway_address(softap_h softap, softap_address_family_e address_family, char **gateway_address)
 {
        DBG("+");
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(_softap_check_permission() != SOFTAP_ERROR_NONE,
                        SOFTAP_ERROR_PERMISSION_DENIED,
                        "permission denied!");
@@ -1217,7 +1217,7 @@ API int softap_get_gateway_address(softap_h softap, softap_address_family_e addr
 API int softap_get_subnet_mask(softap_h softap, softap_address_family_e address_family, char **subnet_mask)
 {
        DBG("+");
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(_softap_check_permission() != SOFTAP_ERROR_NONE,
                        SOFTAP_ERROR_PERMISSION_DENIED,
                        "permission denied!");
@@ -1242,7 +1242,7 @@ API int softap_get_subnet_mask(softap_h softap, softap_address_family_e address_
 API int softap_foreach_connected_clients(softap_h softap, softap_connected_client_cb callback, void *user_data)
 {
        DBG("+\n");
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(softap == NULL, SOFTAP_ERROR_INVALID_PARAMETER,
                        "parameter(softap) is NULL\n");
        _retvm_if(callback == NULL, SOFTAP_ERROR_INVALID_PARAMETER,
@@ -1345,7 +1345,7 @@ API int softap_foreach_connected_clients(softap_h softap, softap_connected_clien
 
 API int softap_set_enabled_cb(softap_h softap, softap_enabled_cb callback, void *user_data)
 {
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(_softap_check_permission() != SOFTAP_ERROR_NONE,
                        SOFTAP_ERROR_PERMISSION_DENIED,
                        "permission denied!");
@@ -1364,7 +1364,7 @@ API int softap_set_enabled_cb(softap_h softap, softap_enabled_cb callback, void
 
 API int softap_unset_enabled_cb(softap_h softap)
 {
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(_softap_check_permission() != SOFTAP_ERROR_NONE,
                        SOFTAP_ERROR_PERMISSION_DENIED,
                        "permission denied!");
@@ -1381,7 +1381,7 @@ API int softap_unset_enabled_cb(softap_h softap)
 
 API int softap_set_disabled_cb(softap_h softap, softap_disabled_cb callback, void *user_data)
 {
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(_softap_check_permission() != SOFTAP_ERROR_NONE,
                        SOFTAP_ERROR_PERMISSION_DENIED,
                        "permission denied!");
@@ -1400,7 +1400,7 @@ API int softap_set_disabled_cb(softap_h softap, softap_disabled_cb callback, voi
 
 API int softap_unset_disabled_cb(softap_h softap)
 {
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(_softap_check_permission() != SOFTAP_ERROR_NONE,
                        SOFTAP_ERROR_PERMISSION_DENIED,
                        "permission denied!");
@@ -1417,7 +1417,7 @@ API int softap_unset_disabled_cb(softap_h softap)
 
 API int softap_set_client_connection_state_changed_cb(softap_h softap, softap_client_connection_state_changed_cb callback, void *user_data)
 {
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(_softap_check_permission() != SOFTAP_ERROR_NONE,
                        SOFTAP_ERROR_PERMISSION_DENIED,
                        "permission denied!");
@@ -1436,7 +1436,7 @@ API int softap_set_client_connection_state_changed_cb(softap_h softap, softap_cl
 
 API int softap_unset_client_connection_state_changed_cb(softap_h softap)
 {
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(_softap_check_permission() != SOFTAP_ERROR_NONE,
                        SOFTAP_ERROR_PERMISSION_DENIED,
                        "permission denied!");
@@ -1454,7 +1454,7 @@ API int softap_unset_client_connection_state_changed_cb(softap_h softap)
 
 API int softap_set_security_type_changed_cb(softap_h softap, softap_security_type_changed_cb callback, void *user_data)
 {
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(_softap_check_permission() != SOFTAP_ERROR_NONE,
                        SOFTAP_ERROR_PERMISSION_DENIED,
                        "permission denied!");
@@ -1473,7 +1473,7 @@ API int softap_set_security_type_changed_cb(softap_h softap, softap_security_typ
 
 API int softap_unset_security_type_changed_cb(softap_h softap)
 {
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(_softap_check_permission() != SOFTAP_ERROR_NONE,
                        SOFTAP_ERROR_PERMISSION_DENIED,
                        "permission denied!");
@@ -1490,7 +1490,7 @@ API int softap_unset_security_type_changed_cb(softap_h softap)
 
 API int softap_set_ssid_visibility_changed_cb(softap_h softap, softap_ssid_visibility_changed_cb callback, void *user_data)
 {
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(_softap_check_permission() != SOFTAP_ERROR_NONE,
                        SOFTAP_ERROR_PERMISSION_DENIED,
                        "permission denied!");
@@ -1509,7 +1509,7 @@ API int softap_set_ssid_visibility_changed_cb(softap_h softap, softap_ssid_visib
 
 API int softap_unset_ssid_visibility_changed_cb(softap_h softap)
 {
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(_softap_check_permission() != SOFTAP_ERROR_NONE,
                        SOFTAP_ERROR_PERMISSION_DENIED,
                        "permission denied!");
@@ -1526,7 +1526,7 @@ API int softap_unset_ssid_visibility_changed_cb(softap_h softap)
 
 API int softap_set_passphrase_changed_cb(softap_h softap, softap_passphrase_changed_cb callback, void *user_data)
 {
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(_softap_check_permission() != SOFTAP_ERROR_NONE,
                        SOFTAP_ERROR_PERMISSION_DENIED,
                        "permission denied!");
@@ -1545,7 +1545,7 @@ API int softap_set_passphrase_changed_cb(softap_h softap, softap_passphrase_chan
 
 API int softap_unset_passphrase_changed_cb(softap_h softap)
 {
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(_softap_check_permission() != SOFTAP_ERROR_NONE,
                        SOFTAP_ERROR_PERMISSION_DENIED,
                        "permission denied!");
@@ -1562,7 +1562,7 @@ API int softap_unset_passphrase_changed_cb(softap_h softap)
 
 API int softap_set_security_type(softap_h softap, softap_security_type_e type)
 {
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(_softap_check_permission() != SOFTAP_ERROR_NONE,
                        SOFTAP_ERROR_PERMISSION_DENIED,
                        "permission denied!");
@@ -1598,7 +1598,7 @@ API int softap_set_security_type(softap_h softap, softap_security_type_e type)
 
 API int softap_get_security_type(softap_h softap, softap_security_type_e *type)
 {
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(_softap_check_permission() != SOFTAP_ERROR_NONE,
                        SOFTAP_ERROR_PERMISSION_DENIED,
                        "permission denied!");
@@ -1612,7 +1612,7 @@ API int softap_get_security_type(softap_h softap, softap_security_type_e *type)
 
 API int softap_set_ssid(softap_h softap, const char *ssid)
 {
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(_softap_check_permission() != SOFTAP_ERROR_NONE,
                        SOFTAP_ERROR_PERMISSION_DENIED,
                        "permission denied!");
@@ -1646,7 +1646,7 @@ API int softap_set_ssid(softap_h softap, const char *ssid)
 
 API int softap_get_ssid(softap_h softap, char **ssid)
 {
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(_softap_check_permission() != SOFTAP_ERROR_NONE,
                        SOFTAP_ERROR_PERMISSION_DENIED,
                        "permission denied!");
@@ -1692,7 +1692,7 @@ API int softap_get_ssid(softap_h softap, char **ssid)
 
 API int softap_set_ssid_visibility(softap_h softap, bool visible)
 {
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(_softap_check_permission() != SOFTAP_ERROR_NONE,
                        SOFTAP_ERROR_PERMISSION_DENIED,
                        "permission denied!");
@@ -1716,7 +1716,7 @@ API int softap_set_ssid_visibility(softap_h softap, bool visible)
 
 API int softap_get_ssid_visibility(softap_h softap, bool *visible)
 {
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(_softap_check_permission() != SOFTAP_ERROR_NONE,
                        SOFTAP_ERROR_PERMISSION_DENIED,
                        "permission denied!");
@@ -1730,7 +1730,7 @@ API int softap_get_ssid_visibility(softap_h softap, bool *visible)
 
 API int softap_set_passphrase(softap_h softap, const char *passphrase)
 {
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(_softap_check_permission() != SOFTAP_ERROR_NONE,
                        SOFTAP_ERROR_PERMISSION_DENIED,
                        "permission denied!");
@@ -1758,7 +1758,7 @@ API int softap_set_passphrase(softap_h softap, const char *passphrase)
 
 API int softap_get_passphrase(softap_h softap, char **passphrase)
 {
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(_softap_check_permission() != SOFTAP_ERROR_NONE,
                        SOFTAP_ERROR_PERMISSION_DENIED,
                        "permission denied!");
@@ -1782,7 +1782,7 @@ API int softap_get_passphrase(softap_h softap, char **passphrase)
 
 API int softap_push_wps_button(softap_h softap)
 {
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        DBG("+");
 
        _retvm_if(softap == NULL, SOFTAP_ERROR_INVALID_PARAMETER,
@@ -1824,7 +1824,7 @@ API int softap_push_wps_button(softap_h softap)
 
 API int softap_set_wps_pin(softap_h softap, const char *wps_pin)
 {
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        DBG("+");
 
        _retvm_if(softap == NULL, SOFTAP_ERROR_INVALID_PARAMETER,
@@ -1869,7 +1869,7 @@ API int softap_set_wps_pin(softap_h softap, const char *wps_pin)
 
 API int softap_get_vendor_element(softap_h softap, char **vendor_element)
 {
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(_softap_check_permission() != SOFTAP_ERROR_NONE,
                        SOFTAP_ERROR_PERMISSION_DENIED,
                        "permission denied!");
@@ -1897,7 +1897,7 @@ API int softap_get_vendor_element(softap_h softap, char **vendor_element)
 
 API int softap_set_vendor_element(softap_h softap, const char *vendor_element)
 {
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(_softap_check_permission() != SOFTAP_ERROR_NONE,
                        SOFTAP_ERROR_PERMISSION_DENIED,
                        "permission denied!");
@@ -1922,7 +1922,11 @@ API int softap_set_vendor_element(softap_h softap, const char *vendor_element)
 
 API int softap_set_channel(softap_h softap, int channel)
 {
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
+
+       if (channel == 0)
+               CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP_ACS);
+
        _retvm_if(_softap_check_permission() != SOFTAP_ERROR_NONE,
                        SOFTAP_ERROR_PERMISSION_DENIED,
                        "permission denied!");
@@ -1938,7 +1942,7 @@ API int softap_set_channel(softap_h softap, int channel)
 
 API int softap_get_channel(softap_h softap, int *channel)
 {
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(_softap_check_permission() != SOFTAP_ERROR_NONE,
                        SOFTAP_ERROR_PERMISSION_DENIED,
                        "permission denied!");
@@ -1952,7 +1956,7 @@ API int softap_get_channel(softap_h softap, int *channel)
 
 API int softap_set_mode(softap_h softap, softap_wireless_mode_e mode)
 {
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(_softap_check_permission() != SOFTAP_ERROR_NONE,
                        SOFTAP_ERROR_PERMISSION_DENIED,
                        "permission denied!");
@@ -1967,7 +1971,7 @@ API int softap_set_mode(softap_h softap, softap_wireless_mode_e mode)
 
 API int softap_get_mode(softap_h softap, softap_wireless_mode_e *mode)
 {
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(_softap_check_permission() != SOFTAP_ERROR_NONE,
                        SOFTAP_ERROR_PERMISSION_DENIED,
                        "permission denied!");
@@ -1985,7 +1989,7 @@ API int softap_get_mode(softap_h softap, softap_wireless_mode_e *mode)
 
 API int softap_enable_dhcp(softap_h softap)
 {
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(softap == NULL, SOFTAP_ERROR_INVALID_PARAMETER,
                        "parameter(softap) is NULL\n");
 
@@ -2023,7 +2027,7 @@ API int softap_enable_dhcp(softap_h softap)
 
 API int softap_disable_dhcp(softap_h softap)
 {
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(softap == NULL, SOFTAP_ERROR_INVALID_PARAMETER,
                        "parameter(softap) is NULL\n");
 
@@ -2059,7 +2063,7 @@ API int softap_disable_dhcp(softap_h softap)
 
 API int softap_is_dhcp_enabled(softap_h softap, bool *dhcp_enabled)
 {
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
        _retvm_if(softap == NULL, SOFTAP_ERROR_INVALID_PARAMETER,
                        "parameter(softap) is NULL\n");
        _retvm_if(dhcp_enabled == NULL, SOFTAP_ERROR_INVALID_PARAMETER,
@@ -2099,7 +2103,7 @@ API int softap_is_dhcp_enabled(softap_h softap, bool *dhcp_enabled)
 
 API int softap_enable_dhcp_with_range(softap_h softap, char *rangestart, char *rangestop)
 {
-       CHECK_FEATURE_SUPPORTED(SOFTAP_FEATURE);
+       CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
 
        _retvm_if(softap == NULL, SOFTAP_ERROR_INVALID_PARAMETER,
                        "parameter(softap) is NULL\n");
index ee06d09534d9fccd6f9adc40b1d1d7d33b1ed806..dee5c94eb3832a340ae1e2e153d36a8656989916 100755 (executable)
 #define SOFTAP_PRIVILEGE "http://tizen.org/privilege/softap"
 #define SMACK_LABEL_LEN 255
 
-static __thread bool is_feature_checked = 0;
-static __thread bool feature_supported = 0;
+#define SOFTAP_FEATURE "http://tizen.org/feature/network.wifi.softap"
+#define MODEL_NAME_FEATURE "http://tizen.org/system/model_name"
+
+static __thread bool is_feature_checked[SUPPORTED_FEATURE_MAX] = { 0, };
+static __thread bool feature_supported[SUPPORTED_FEATURE_MAX] = { 0, };
 static __thread GSList *softap_handle_list = NULL;
 
 static __thread bool is_privilege_checked = 0;
 static __thread bool access_allowed = 0;
 
-int _softap_check_feature_supported(const char *key)
+static void __get_feature_info(int feature)
 {
-       if (!is_feature_checked) {
-               if (system_info_get_platform_bool(key, &feature_supported) < 0) {
+       char *model_name = NULL;
+
+       switch (feature) {
+       case SUPPORTED_FEATURE_SOFTAP:
+               if (system_info_get_platform_bool(SOFTAP_FEATURE, &feature_supported[feature]) < 0) {
 //LCOV_EXCL_START
                        ERR("Get feature is failed");
-                       return SOFTAP_ERROR_NOT_SUPPORTED;
+                       return;
 //LCOV_EXCL_STOP
                }
-               is_feature_checked = true;
+               break;
+       case SUPPORTED_FEATURE_SOFTAP_ACS:
+               if (system_info_get_platform_string(MODEL_NAME_FEATURE, &model_name) < 0) {
+//LCOV_EXCL_START
+                       ERR("Get feature is failed");
+                       return;
+//LCOV_EXCL_STOP
+               }
+
+               if (model_name && strncmp(model_name, "artik", strlen("artik")) == 0)
+                       feature_supported[feature] = 1;
+               break;
+       default:
+               ERR("Invalid feature");
+               return;
        }
 
-       if (!feature_supported) {
-//LCOV_EXCL_START
-               ERR("Not supported feature");
+       is_feature_checked[feature] = true;
+       free(model_name);
+}
+
+int _softap_check_feature_supported(int feature)
+{
+       if (!is_feature_checked[feature])
+               __get_feature_info(feature);
+
+       if (!feature_supported[feature]) {
+               ERR("Not supported feature!");
                return SOFTAP_ERROR_NOT_SUPPORTED;
-//LCOV_EXCL_STOP
        }
 
        return SOFTAP_ERROR_NONE;