Fix tethering failure
authorJoohyun Kim <joohyune.kim@samsung.com>
Sat, 13 Jul 2013 05:23:42 +0000 (14:23 +0900)
committerJoohyun Kim <joohyune.kim@samsung.com>
Sat, 13 Jul 2013 05:23:42 +0000 (14:23 +0900)
Change-Id: Icc4178c2e7ab8ff17ef108eb4600e64554ad3f10
Signed-off-by: Joohyun Kim <joohyune.kim@samsung.com>
src/system-server/setting/providers/FSys_SettingNetworkProvider.cpp

index 7dd1bed..423a48b 100755 (executable)
@@ -85,6 +85,7 @@ _SettingNetworkProvider::_SettingNetworkProvider()
        : __tapiHandle(null)
        , __pWifiDllHandle(null)
        , __pBluetoothDllHandle(null)
+       , __tetheringHandle(null)
        , __stateOfFlightMode(0)
        , __stateOfWifi(0)
        , __stateOfWifiDirect(0)
@@ -141,26 +142,31 @@ _SettingNetworkProvider::_SettingNetworkProvider()
                {
                        SysLogException(NID_SYS, E_SYSTEM, "It is failed to register TETHERING_TYPE_USB listener");
                }
+
                errorCode = tethering_set_enabled_cb(__tetheringHandle, TETHERING_TYPE_WIFI, SettingEventTetheringEnabled, null);
                if(errorCode != 0)
                {
                        SysLogException(NID_SYS, E_SYSTEM, "It is failed to register TETHERING_TYPE_WIFI listener");
                }
+
                errorCode = tethering_set_enabled_cb(__tetheringHandle, TETHERING_TYPE_BT, SettingEventTetheringEnabled, null);
                if(errorCode != 0)
                {
                        SysLogException(NID_SYS, E_SYSTEM, "It is failed to register TETHERING_TYPE_BT listener");
                }
+
                errorCode = tethering_set_disabled_cb(__tetheringHandle, TETHERING_TYPE_USB, SettingEventTetheringDisabled, null);
                if(errorCode != 0)
                {
                        SysLogException(NID_SYS, E_SYSTEM, "It is failed to register TETHERING_TYPE_USB listener");
                }
+
                errorCode = tethering_set_disabled_cb(__tetheringHandle, TETHERING_TYPE_WIFI, SettingEventTetheringDisabled, null);
                if(errorCode != 0)
                {
                        SysLogException(NID_SYS, E_SYSTEM, "It is failed to register TETHERING_TYPE_WIFI listener");
                }
+
                errorCode = tethering_set_disabled_cb(__tetheringHandle, TETHERING_TYPE_BT, SettingEventTetheringDisabled, null);
                if(errorCode != 0)
                {
@@ -240,44 +246,47 @@ _SettingNetworkProvider::~_SettingNetworkProvider()
                SysLogException(NID_SYS, E_SYSTEM, "It is failed to unregister VCONFKEY_WIFI_STATE listener");
        }
 
-       errorCode = tethering_unset_enabled_cb(__tetheringHandle, TETHERING_TYPE_USB);
-       if(errorCode != 0)
+       if(__tetheringHandle != null)
        {
-               SysLogException(NID_SYS, E_SYSTEM, "It is failed to unregister TETHERING_TYPE_USB listener");
-       }
+               errorCode = tethering_unset_enabled_cb(__tetheringHandle, TETHERING_TYPE_USB);
+               if(errorCode != 0)
+               {
+                       SysLogException(NID_SYS, E_SYSTEM, "It is failed to unregister TETHERING_TYPE_USB listener");
+               }
 
-       errorCode = tethering_unset_enabled_cb(__tetheringHandle, TETHERING_TYPE_WIFI);
-       if(errorCode != 0)
-       {
-               SysLogException(NID_SYS, E_SYSTEM, "It is failed to unregister TETHERING_TYPE_WIFI listener");
-       }
+               errorCode = tethering_unset_enabled_cb(__tetheringHandle, TETHERING_TYPE_WIFI);
+               if(errorCode != 0)
+               {
+                       SysLogException(NID_SYS, E_SYSTEM, "It is failed to unregister TETHERING_TYPE_WIFI listener");
+               }
 
-       errorCode = tethering_unset_enabled_cb(__tetheringHandle, TETHERING_TYPE_BT);
-       if(errorCode != 0)
-       {
-               SysLogException(NID_SYS, E_SYSTEM, "It is failed to unregister TETHERING_TYPE_BT listener");
-       }
+               errorCode = tethering_unset_enabled_cb(__tetheringHandle, TETHERING_TYPE_BT);
+               if(errorCode != 0)
+               {
+                       SysLogException(NID_SYS, E_SYSTEM, "It is failed to unregister TETHERING_TYPE_BT listener");
+               }
 
-       errorCode = tethering_unset_disabled_cb(__tetheringHandle, TETHERING_TYPE_USB);
-       if(errorCode != 0)
-       {
-               SysLogException(NID_SYS, E_SYSTEM, "It is failed to unregister TETHERING_TYPE_USB listener");
-       }
+               errorCode = tethering_unset_disabled_cb(__tetheringHandle, TETHERING_TYPE_USB);
+               if(errorCode != 0)
+               {
+                       SysLogException(NID_SYS, E_SYSTEM, "It is failed to unregister TETHERING_TYPE_USB listener");
+               }
 
-       errorCode = tethering_unset_disabled_cb(__tetheringHandle, TETHERING_TYPE_WIFI);
-       if(errorCode != 0)
-       {
-               SysLogException(NID_SYS, E_SYSTEM, "It is failed to unregister TETHERING_TYPE_WIFI listener");
-       }
+               errorCode = tethering_unset_disabled_cb(__tetheringHandle, TETHERING_TYPE_WIFI);
+               if(errorCode != 0)
+               {
+                       SysLogException(NID_SYS, E_SYSTEM, "It is failed to unregister TETHERING_TYPE_WIFI listener");
+               }
 
-       errorCode = tethering_unset_disabled_cb(__tetheringHandle, TETHERING_TYPE_BT);
-       if(errorCode != 0)
-       {
-               SysLogException(NID_SYS, E_SYSTEM, "It is failed to unregister TETHERING_TYPE_BT listener");
-       }
+               errorCode = tethering_unset_disabled_cb(__tetheringHandle, TETHERING_TYPE_BT);
+               if(errorCode != 0)
+               {
+                       SysLogException(NID_SYS, E_SYSTEM, "It is failed to unregister TETHERING_TYPE_BT listener");
+               }
 
-       tethering_destroy(__tetheringHandle);
-       __tetheringHandle = null;
+               tethering_destroy(__tetheringHandle);
+               __tetheringHandle = null;
+       }
 
        errorCode = vconf_ignore_key_changed(VCONFKEY_WIFI_DIRECT_STATE, SettingEventVConf);
        if(errorCode != 0)
@@ -415,18 +424,24 @@ _SettingNetworkProvider::GetValue(const String& key, bool& value)
        {
                r = E_SUCCESS;
                SysTryReturnResult(NID_SYS, HasKey(key) == true, E_UNSUPPORTED_OPERATION, "Current device does not support Wi-Fi tethering feature.");
+               SysTryReturnResult(NID_SYS, __tetheringHandle != null, E_SYSTEM, "It is failed to get tethering handle.");
+
                value = tethering_is_enabled(__tetheringHandle, TETHERING_TYPE_WIFI);
        }
        else if (key == _NETWORK_WIFI_TETHERING_HIDE)
        {
                r = E_SUCCESS;
                SysTryReturnResult(NID_SYS, HasKey(key) == true, E_UNSUPPORTED_OPERATION, "Current device does not support Wi-Fi tethering feature.");
+               SysTryReturnResult(NID_SYS, __tetheringHandle != null, E_SYSTEM, "It is failed to get tethering handle.");
+
                errorCode = tethering_wifi_get_ssid_visibility(__tetheringHandle, &value);
                SysTryReturnResult(NID_SYS, errorCode == TETHERING_ERROR_NONE, E_SYSTEM, "It is failed to get wifi tethering visibility state");
        }
        else if (key == _NETWORK_WIFI_TETHERING_SECURITY)
        {
                SysTryReturnResult(NID_SYS, HasKey(key) == true, E_UNSUPPORTED_OPERATION, "Current device does not support Wi-Fi tethering feature.");
+               SysTryReturnResult(NID_SYS, __tetheringHandle != null, E_SYSTEM, "It is failed to get tethering handle.");
+
                r = E_SUCCESS;
                tethering_wifi_security_type_e securityType;
                errorCode = tethering_wifi_get_security_type(__tetheringHandle, &securityType);
@@ -444,6 +459,8 @@ _SettingNetworkProvider::GetValue(const String& key, bool& value)
        {
                r = E_SUCCESS;
                SysTryReturnResult(NID_SYS, HasKey(key) == true, E_UNSUPPORTED_OPERATION, "Current device does not support USB tethering feature.");
+               SysTryReturnResult(NID_SYS, __tetheringHandle != null, E_SYSTEM, "It is failed to get tethering handle.");
+
                value = tethering_is_enabled(__tetheringHandle, TETHERING_TYPE_USB);
        }
        else if (key == _NETWORK_WIFI_DIRECT)
@@ -484,6 +501,8 @@ _SettingNetworkProvider::GetValue(const String& key, bool& value)
        else if (key == _NETWORK_BLUETOOTH_TETHERING)
        {
                SysTryReturnResult(NID_SYS, HasKey(key) == true, E_UNSUPPORTED_OPERATION, "Current device does not support Bluetooth tethering feature.");
+               SysTryReturnResult(NID_SYS, __tetheringHandle != null, E_SYSTEM, "It is failed to get tethering handle.");
+
                r = E_SUCCESS;
                value  = tethering_is_enabled(__tetheringHandle, TETHERING_TYPE_BT);
        }
@@ -519,7 +538,8 @@ _SettingNetworkProvider::SetValue(const String& key, const bool value)
                bool state = false;
                r = E_SUCCESS;
                SysTryReturnResult(NID_SYS, HasKey(key) == true, E_UNSUPPORTED_OPERATION, "Current device does not support Wi-Fi feature.");
-               SysTryReturnResult(NID_SYS, __tetheringHandle != null, E_UNSUPPORTED_OPERATION, "Current device does not support tethering feature.");
+               SysTryReturnResult(NID_SYS, __tetheringHandle != null, E_SYSTEM, "It is failed to get tethering handle.");
+
                r = GetValue(_NETWORK_WIFI, state);
                SysTryReturnResult(NID_SYS, r == E_SUCCESS, E_SYSTEM, "It is failed to get the WIFI state");
                SysTryReturnResult(NID_SYS, state == true, E_INVALID_STATE, "WIFI is not activated");
@@ -538,9 +558,9 @@ _SettingNetworkProvider::SetValue(const String& key, const bool value)
        {
                r = E_SUCCESS;
                SysTryReturnResult(NID_SYS, HasKey(key) == true, E_UNSUPPORTED_OPERATION, "Current device does not support Wi-Fi feature.");
+               SysTryReturnResult(NID_SYS, __tetheringHandle != null, E_SYSTEM, "It is failed to get tethering handle.");
 
                bool currentState = false;
-               SysTryReturnResult(NID_SYS, __tetheringHandle != null, E_UNSUPPORTED_OPERATION, "Current device does not support tethering feature.");
                errorCode = tethering_wifi_get_ssid_visibility(__tetheringHandle, &currentState);
                SysTryReturnResult(NID_SYS, errorCode == TETHERING_ERROR_NONE, E_SYSTEM, "It is failed to current wifi tethering visibility setting");
 
@@ -558,9 +578,9 @@ _SettingNetworkProvider::SetValue(const String& key, const bool value)
        {
                r = E_SUCCESS;
                SysTryReturnResult(NID_SYS, HasKey(key) == true, E_UNSUPPORTED_OPERATION, "Current device does not support Wi-Fi feature.");
+               SysTryReturnResult(NID_SYS, __tetheringHandle != null, E_SYSTEM, "It is failed to get tethering handle.");
 
                tethering_wifi_security_type_e securityType;
-               SysTryReturnResult(NID_SYS, __tetheringHandle != null, E_UNSUPPORTED_OPERATION, "Current device does not support tethering feature.");
 
                errorCode = tethering_wifi_get_security_type(__tetheringHandle, &securityType);
                SysTryReturnResult(NID_SYS, errorCode == TETHERING_ERROR_NONE, E_SYSTEM, "It is failed to get wifi tethering securiy state");
@@ -579,6 +599,7 @@ _SettingNetworkProvider::SetValue(const String& key, const bool value)
        {
                r = E_SUCCESS;
                SysTryReturnResult(NID_SYS, HasKey(key) == true, E_UNSUPPORTED_OPERATION, "Current device does not support tethering feature.");
+               SysTryReturnResult(NID_SYS, __tetheringHandle != null, E_SYSTEM, "It is failed to get tethering handle.");
 
                if(value == true)
                {
@@ -594,6 +615,7 @@ _SettingNetworkProvider::SetValue(const String& key, const bool value)
        {
                r = E_SUCCESS;
                SysTryReturnResult(NID_SYS, HasKey(key) == true, E_UNSUPPORTED_OPERATION, "Current device does not support tethering feature.");
+               SysTryReturnResult(NID_SYS, __tetheringHandle != null, E_SYSTEM, "It is failed to get tethering handle.");
 
                bool state = false;
                r = GetValue(_NETWORK_BLUETOOTH, state);
@@ -985,8 +1007,8 @@ _SettingNetworkProvider::GetValue(const String& key, String& value)
                unique_ptr<char> password(null);
                char* pTemp = null;
                SysTryReturnResult(NID_SYS, HasKey(key) == true, E_UNSUPPORTED_OPERATION, "Current device does not support Wi-Fi tethering feature.");
+               SysTryReturnResult(NID_SYS, __tetheringHandle != null, E_SYSTEM, "It is failed to get tethering handle.");
 
-               SysTryReturnResult(NID_SYS, __tetheringHandle != null, E_UNSUPPORTED_OPERATION, "Current device does not support tethering feature.");
                errorCode = tethering_wifi_get_passphrase(__tetheringHandle, &pTemp);
                SysTryReturnResult(NID_SYS, errorCode == TETHERING_ERROR_NONE && pTemp != null, E_SYSTEM, "It is failed to get password");
 
@@ -1008,8 +1030,8 @@ _SettingNetworkProvider::SetValue(const String& key, const String value)
        {
                r = E_SUCCESS;
                SysTryReturnResult(NID_SYS, HasKey(key) == true, E_UNSUPPORTED_OPERATION, "Current device does not support Wi-Fi tethering feature.");
+               SysTryReturnResult(NID_SYS, __tetheringHandle != null, E_SYSTEM, "It is failed to get tethering handle.");
 
-               SysTryReturnResult(NID_SYS, __tetheringHandle != null, E_UNSUPPORTED_OPERATION, "Current device does not support tethering feature.");
                unique_ptr<char []> password(_StringConverter::CopyToCharArrayN(value));
                SysTryReturnResult(NID_SYS, password != null, E_SYSTEM, "It is failed to convert String to string");
                errorCode = tethering_wifi_set_passphrase(__tetheringHandle, password.get());