From: Jaehwan Lee Date: Mon, 20 May 2013 05:48:36 +0000 (+0900) Subject: Modify the internal state management logic. X-Git-Tag: submit/tizen_2.2/20130714.153018~13^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a80682452711e88dc6ff93e52b901261437dac48;p=framework%2Fosp%2Fnet.git Modify the internal state management logic. Change-Id: Id1e98b26adcb646b29e14efa548efffdde476b10 Signed-off-by: Jaehwan Lee --- diff --git a/src/inc/FNetWifi_WifiManagerImpl.h b/src/inc/FNetWifi_WifiManagerImpl.h index b84a9b6..39b9fc2 100644 --- a/src/inc/FNetWifi_WifiManagerImpl.h +++ b/src/inc/FNetWifi_WifiManagerImpl.h @@ -225,7 +225,8 @@ private: WIFI_MANAGER_DEACTIVATING, WIFI_MANAGER_ACTIVATED, WIFI_MANAGER_CONNECTING, - WIFI_MANAGER_CONNECTED + WIFI_MANAGER_CONNECTED, + WIFI_MANAGER_DISCONNECTING }; enum _WifiScanState { diff --git a/src/inc/FNetWifi_WifiSystemAdapter.h b/src/inc/FNetWifi_WifiSystemAdapter.h index 730e4f0..4f5c34a 100644 --- a/src/inc/FNetWifi_WifiSystemAdapter.h +++ b/src/inc/FNetWifi_WifiSystemAdapter.h @@ -304,9 +304,11 @@ private: */ _WifiSystemAdapter& operator=(const _WifiSystemAdapter& rhs); + static const char* GetStringOfConnectionState(wifi_connection_state_e state); + private: Tizen::Base::Collection::LinkedListT<_IWifiManagerEventListener*> __mgrEvtListenerList; - WifiBssInfo* __pBssInfo; + wifi_connection_state_e __prevconnState; friend class std::default_delete<_WifiSystemAdapter>; diff --git a/src/wifi/FNetWifi_WifiManagerImpl.cpp b/src/wifi/FNetWifi_WifiManagerImpl.cpp index 8881da3..599a23f 100644 --- a/src/wifi/FNetWifi_WifiManagerImpl.cpp +++ b/src/wifi/FNetWifi_WifiManagerImpl.cpp @@ -51,7 +51,6 @@ _WifiManagerImpl::_WifiManagerImpl(void) , __stateMutex() , __currentState(WIFI_MANAGER_DEACTIVATED) , __currentScanState(WIFI_SCAN_IDLE) - , __wasConnected(false) { } @@ -108,7 +107,6 @@ _WifiManagerImpl::Construct(IWifiManagerEventListener& listener) if (__pWifiSystemAdapter->IsConnected()) { __currentState = WIFI_MANAGER_CONNECTED; - __wasConnected = true; } else { @@ -360,6 +358,20 @@ _WifiManagerImpl::Connect(const WifiBssInfo& targetApInfo) r = E_INVALID_STATE; break; case WIFI_MANAGER_ACTIVATED: + if (targetApInfo.GetBssType() != WIFI_BSS_TYPE_INFRASTRUCTURE) + { + r = E_INVALID_ARG; + } + else + { + r = __pWifiSystemAdapter->Connect(targetApInfo); + if (r == E_SUCCESS) + { + __currentState = WIFI_MANAGER_CONNECTING; + } + } + break; + case WIFI_MANAGER_CONNECTED: if (targetApInfo.GetBssType() != WIFI_BSS_TYPE_INFRASTRUCTURE) { @@ -370,10 +382,11 @@ _WifiManagerImpl::Connect(const WifiBssInfo& targetApInfo) r = __pWifiSystemAdapter->Connect(targetApInfo); if (r == E_SUCCESS) { - __currentState = WIFI_MANAGER_CONNECTING; + __currentState = WIFI_MANAGER_DISCONNECTING; } } break; + case WIFI_MANAGER_DISCONNECTING: case WIFI_MANAGER_CONNECTING: r = E_IN_PROGRESS; break; @@ -572,6 +585,7 @@ _WifiManagerImpl::OnWifiDeactivated(result r) case WIFI_MANAGER_CONNECTING: case WIFI_MANAGER_CONNECTED: case WIFI_MANAGER_ACTIVATING: + case WIFI_MANAGER_DISCONNECTING: if (r == E_SUCCESS) { __currentState = WIFI_MANAGER_DEACTIVATED; @@ -585,11 +599,6 @@ _WifiManagerImpl::OnWifiDeactivated(result r) __stateMutex.Release(); - if (r == E_SUCCESS) - { - __wasConnected = false; - } - if (isFired) { _WifiManagerEventArg* pArg = new (std::nothrow) _WifiManagerEventArg(_WIFI_EVENT_DEACTIVATED, r); @@ -622,7 +631,6 @@ _WifiManagerImpl::OnWifiConnected(const Tizen::Base::String &ssid, result r) if (r == E_SUCCESS) { __currentState = WIFI_MANAGER_CONNECTED; - __wasConnected = true; isFired = true; } else @@ -634,15 +642,14 @@ _WifiManagerImpl::OnWifiConnected(const Tizen::Base::String &ssid, result r) if (r == E_SUCCESS) { __currentState = WIFI_MANAGER_CONNECTED; - __wasConnected = true; isFired = true; } break; case WIFI_MANAGER_CONNECTING: + case WIFI_MANAGER_DISCONNECTING: if (r == E_SUCCESS) { __currentState = WIFI_MANAGER_CONNECTED; - __wasConnected = true; } else { @@ -685,34 +692,23 @@ _WifiManagerImpl::OnWifiDisconnected(void) switch (__currentState) { case WIFI_MANAGER_DEACTIVATING: - if (__wasConnected == true) - { - isFired = true; - } - break; - + isFired = true; + break; case WIFI_MANAGER_CONNECTING: - if (__wasConnected == true) - { - isFired = true; - } - else - { - __currentState = WIFI_MANAGER_ACTIVATED; - } break; - case WIFI_MANAGER_CONNECTED: __currentState = WIFI_MANAGER_ACTIVATED; isFired = true; break; + case WIFI_MANAGER_DISCONNECTING: + __currentState = WIFI_MANAGER_CONNECTING; + isFired = true; + break; default: break; } __stateMutex.Release(); - __wasConnected = false; - if (isFired) { _WifiManagerEventArg* pArg = new (std::nothrow) _WifiManagerEventArg(_WIFI_EVENT_DISCONNECTED); @@ -815,30 +811,33 @@ _WifiManagerImpl::GetStringOfCurrentState(void) const { const char* pStateString = null; - switch (__currentState) - { - case WIFI_MANAGER_DEACTIVATED: - pStateString = "__WIFI_MANAGER_DEACTIVATED"; - break; - case WIFI_MANAGER_ACTIVATING: - pStateString = "__WIFI_MANAGER_ACTIVATING"; - break; - case WIFI_MANAGER_DEACTIVATING: - pStateString = "__WIFI_MANAGER_DEACTIVATING"; - break; - case WIFI_MANAGER_ACTIVATED: - pStateString = "__WIFI_MANAGER_ACTIVATED"; - break; - case WIFI_MANAGER_CONNECTING: - pStateString = "__WIFI_MANAGER_CONNECTING"; - break; - case WIFI_MANAGER_CONNECTED: - pStateString = "__WIFI_MANAGER_CONNECTED"; - break; - default: - pStateString = "Unknown"; - break; - } + switch (__currentState) + { + case WIFI_MANAGER_DEACTIVATED: + pStateString = "__WIFI_MANAGER_DEACTIVATED"; + break; + case WIFI_MANAGER_ACTIVATING: + pStateString = "__WIFI_MANAGER_ACTIVATING"; + break; + case WIFI_MANAGER_DEACTIVATING: + pStateString = "__WIFI_MANAGER_DEACTIVATING"; + break; + case WIFI_MANAGER_ACTIVATED: + pStateString = "__WIFI_MANAGER_ACTIVATED"; + break; + case WIFI_MANAGER_CONNECTING: + pStateString = "__WIFI_MANAGER_CONNECTING"; + break; + case WIFI_MANAGER_CONNECTED: + pStateString = "__WIFI_MANAGER_CONNECTED"; + break; + case WIFI_MANAGER_DISCONNECTING: + pStateString = "__WIFI_MANAGER_DISCONNECTING"; + break; + default: + pStateString = "Unknown"; + break; + } return pStateString; } diff --git a/src/wifi/FNetWifi_WifiSystemAdapter.cpp b/src/wifi/FNetWifi_WifiSystemAdapter.cpp index 4ea4974..b1e796f 100644 --- a/src/wifi/FNetWifi_WifiSystemAdapter.cpp +++ b/src/wifi/FNetWifi_WifiSystemAdapter.cpp @@ -53,7 +53,7 @@ static _WifiSystemAdapter* pInstance = null; _WifiSystemAdapter::_WifiSystemAdapter(void) : __mgrEvtListenerList() - , __pBssInfo(null) + , __prevconnState(WIFI_CONNECTION_STATE_DISCONNECTED) { } @@ -81,6 +81,8 @@ _WifiSystemAdapter::Construct(void) err = wifi_set_background_scan_cb(OnWifiBackgroundScanResultUpdated, null); SysTryReturnResult(NID_NET_WIFI, err == WIFI_ERROR_NONE, E_SYSTEM, "Failed to wifi_set_background_scan_cb()"); + wifi_get_connection_state(&__prevconnState); + return E_SUCCESS; } @@ -428,15 +430,25 @@ _WifiSystemAdapter::OnWifiConnectionStateChanged(wifi_connection_state_e state, _WifiSystemAdapter* pAdapter = _WifiSystemAdapter::GetInstance(); pEnum = pAdapter->__mgrEvtListenerList.GetEnumeratorN(); + char* pEssid = null; + int err = wifi_ap_get_essid(pApHandle, &pEssid); + unique_ptr pSsid(pEssid); + SysTryLog(NID_NET_WIFI, err == WIFI_ERROR_NONE, "Failed result from wifi_ap_get_essid() is 0x%x.", err); + SysLog(NID_NET_WIFI, "The connection state is %s, ssid : %s", GetStringOfConnectionState(state), pSsid.get()); + + if (pAdapter->__prevconnState == state) + { + SysLog(NID_NET_WIFI, "The connection state is same as the previous state.[%d]", state); + return; + } + + pAdapter->__prevconnState = state; + switch(state) { case WIFI_CONNECTION_STATE_CONNECTED: { - char* pEssid = null; - int err = wifi_ap_get_essid(pApHandle, &pEssid); - SysTryLog(NID_NET_WIFI, err == WIFI_ERROR_NONE, "Failed result from wifi_ap_get_essid() is 0x%x.", err); - String ssid(pEssid); - free(pEssid); + String ssid(pSsid.release()); while (pEnum->MoveNext() == E_SUCCESS) { @@ -762,4 +774,18 @@ _WifiSystemAdapter::OnWifiRssiLevelChanged(wifi_rssi_level_e rssiLevel, void *pU delete pEnum; } +const char* +_WifiSystemAdapter::GetStringOfConnectionState(wifi_connection_state_e state) +{ + const char* pStateStr[] = + { + "DISCONNECTED", + "ASSOCIATION", + "CONFIGURATION", + "CONNECTED", + }; + + return pStateStr[state]; +} + } } } // Tizen::Net::Wifi diff --git a/src/wifi/FNetWifi_WifiUtility.cpp b/src/wifi/FNetWifi_WifiUtility.cpp index ce9d73f..b936f02 100644 --- a/src/wifi/FNetWifi_WifiUtility.cpp +++ b/src/wifi/FNetWifi_WifiUtility.cpp @@ -198,22 +198,10 @@ _WifiUtility::ConvertRadioChannel(int frequency) long _WifiUtility::ConvertPercentagetoRssiValue(char val) { - if (val >= 75) - { - return -55; - } - else if (val > 50) - { - return -70; - } - else if (val > 25) - { - return -85; - } - else - { - return -100; - } + static const int REF_VALUE = -119; + long rssi = (long)val + REF_VALUE; + + return rssi; } long