, __stateMutex()
, __currentState(WIFI_MANAGER_DEACTIVATED)
, __currentScanState(WIFI_SCAN_IDLE)
- , __wasConnected(false)
{
}
if (__pWifiSystemAdapter->IsConnected())
{
__currentState = WIFI_MANAGER_CONNECTED;
- __wasConnected = true;
}
else
{
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)
{
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;
case WIFI_MANAGER_CONNECTING:
case WIFI_MANAGER_CONNECTED:
case WIFI_MANAGER_ACTIVATING:
+ case WIFI_MANAGER_DISCONNECTING:
if (r == E_SUCCESS)
{
__currentState = WIFI_MANAGER_DEACTIVATED;
__stateMutex.Release();
- if (r == E_SUCCESS)
- {
- __wasConnected = false;
- }
-
if (isFired)
{
_WifiManagerEventArg* pArg = new (std::nothrow) _WifiManagerEventArg(_WIFI_EVENT_DEACTIVATED, r);
if (r == E_SUCCESS)
{
__currentState = WIFI_MANAGER_CONNECTED;
- __wasConnected = true;
isFired = true;
}
else
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
{
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);
{
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;
}
_WifiSystemAdapter::_WifiSystemAdapter(void)
: __mgrEvtListenerList()
- , __pBssInfo(null)
+ , __prevconnState(WIFI_CONNECTION_STATE_DISCONNECTED)
{
}
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;
}
_WifiSystemAdapter* pAdapter = _WifiSystemAdapter::GetInstance();
pEnum = pAdapter->__mgrEvtListenerList.GetEnumeratorN();
+ char* pEssid = null;
+ int err = wifi_ap_get_essid(pApHandle, &pEssid);
+ unique_ptr<char, _CharDeleter> 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)
{
delete pEnum;
}
+const char*
+_WifiSystemAdapter::GetStringOfConnectionState(wifi_connection_state_e state)
+{
+ const char* pStateStr[] =
+ {
+ "DISCONNECTED",
+ "ASSOCIATION",
+ "CONFIGURATION",
+ "CONNECTED",
+ };
+
+ return pStateStr[state];
+}
+
} } } // Tizen::Net::Wifi