, __pNetworkSettingEvent(null)
, __pTelephonyServiceProxy(null)
, __pSettingListener(null)
+ , __isCallServiceAvailable(false)
+ , __isDataServiceAvailable(false)
+ , __isRoaming(false)
{
}
__pConnectionHandle = move(pConnectionHandle);
+ __isCallServiceAvailable = IsServiceAvailable();
+ __isDataServiceAvailable = IsDataAvailable();
+ __isRoaming = IsRoaming();
+
return E_SUCCESS;
}
SysLog(NID_TEL, "The callback has called and the roaming state is %s", isRoaming ? "True" : "False");
_NetworkManagerImpl* pNetworkManagerImpl = static_cast <_NetworkManagerImpl*>(pUserData);
- pNetworkManagerImpl->OnTelephonyNetworkStatusChanged(_NETWORK_EVENT_ROAMING, isRoaming);
+ pNetworkManagerImpl->OnTelephonyNetworkStatusChanged();
return;
}
_NetworkManagerImpl* pNetworkManagerImpl = static_cast <_NetworkManagerImpl*>(pUserData);
- bool isAvailable = false;
- if (serviceState == NETWORK_INFO_SERVICE_STATE_IN_SERVICE)
- {
- isAvailable = true;
- }
-
- pNetworkManagerImpl->OnTelephonyNetworkStatusChanged(_NETWORK_EVENT_CALL, isAvailable);
+ pNetworkManagerImpl->OnTelephonyNetworkStatusChanged();
return;
}
void
_NetworkManagerImpl::OnDataServiceStateChangedCallback(connection_type_e type, void* pUserData)
{
- if (type != CONNECTION_TYPE_CELLULAR)
- {
- SysLog(NID_TEL, "The connection type %d can be ignored", type);
- return;
- }
+ SysLog(NID_TEL, "The callback has called and the connection state is %d", type);
_NetworkManagerImpl* pNetworkManagerImpl = static_cast <_NetworkManagerImpl*>(pUserData);
- bool isAvailable = false;
-
- // Get the isDataServiceAvailable
- connection_cellular_state_e dataServiceState = CONNECTION_CELLULAR_STATE_OUT_OF_SERVICE;
- int err = connection_get_cellular_state(pNetworkManagerImpl->__pConnectionHandle.get(), &dataServiceState);
- SysLog(NID_TEL, "The return value of connection_get_cellular_state() is 0x%x", err);
- SysTryReturnVoidResult(NID_TEL, err == CONNECTION_ERROR_NONE, E_SYSTEM, "[%s] A system error has occurred. Failed to get the data service status.", GetErrorMessage(E_SYSTEM));
-
- if (dataServiceState == CONNECTION_CELLULAR_STATE_AVAILABLE || dataServiceState == CONNECTION_CELLULAR_STATE_CONNECTED)
- {
- isAvailable = true;
- }
- pNetworkManagerImpl->OnTelephonyNetworkStatusChanged(_NETWORK_EVENT_DATA, isAvailable);
+ pNetworkManagerImpl->OnTelephonyNetworkStatusChanged();
return;
}
void
-_NetworkManagerImpl::OnTelephonyNetworkStatusChanged(_NetworkEventType type, bool data)
+_NetworkManagerImpl::OnTelephonyNetworkStatusChanged(void)
{
- SysLog(NID_TEL, "The listener has called with %s state", GetStringOfNetworkEventType(type));
+ bool isCallServiceAvailable = false;
+ bool isDataServiceAvailable = false;
+ bool isRoaming = false;
- result r = E_SUCCESS;
NetworkStatus networkStatus;
- r = GetNetworkStatus(networkStatus);
- SysTryReturnVoidResult(NID_TEL, r == E_SUCCESS, r, "[%s] Failed to get network status", GetErrorMessage(r));
- switch (type)
- {
- case _NETWORK_EVENT_CALL:
- _NetworkStatusImpl::GetInstance(networkStatus)->SetIsCallServiceAvailable(data);
- break;
+ isCallServiceAvailable = IsServiceAvailable();
+ isDataServiceAvailable = IsDataAvailable();
+ isRoaming = IsRoaming();
- case _NETWORK_EVENT_DATA:
- _NetworkStatusImpl::GetInstance(networkStatus)->SetIsDataServiceAvailable(data);
- break;
+ SysLog(NID_TEL, "The network status Call[%d]->[%d] Data[%d]->[%d] Roaming[%d]->[%d]",
+ __isCallServiceAvailable, isCallServiceAvailable, __isDataServiceAvailable,
+ isDataServiceAvailable, __isRoaming, isRoaming);
- case _NETWORK_EVENT_ROAMING:
- _NetworkStatusImpl::GetInstance(networkStatus)->SetIsRoaming(data);
- break;
+ if ((__isCallServiceAvailable == isCallServiceAvailable) &&
+ (__isDataServiceAvailable == isDataServiceAvailable) &&
+ (__isRoaming == isRoaming))
+ {
+ return;
+ }
- default:
- break;
+ __isCallServiceAvailable = isCallServiceAvailable;
+ __isDataServiceAvailable = isDataServiceAvailable;
+ __isRoaming = isRoaming;
- }
+ _NetworkStatusImpl::GetInstance(networkStatus)->SetIsCallServiceAvailable(isCallServiceAvailable);
+ _NetworkStatusImpl::GetInstance(networkStatus)->SetIsDataServiceAvailable(isDataServiceAvailable);
+ _NetworkStatusImpl::GetInstance(networkStatus)->SetIsRoaming(isRoaming);
_NetworkManagerEventArg* pEventArg = new (std::nothrow)_NetworkManagerEventArg(networkStatus);
SysTryReturnVoidResult(NID_TEL, pEventArg != null, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
}
bool
+_NetworkManagerImpl::IsDataAvailable(void)
+{
+ int err = NETWORK_INFO_ERROR_NONE;
+ connection_cellular_state_e dataServiceState = CONNECTION_CELLULAR_STATE_OUT_OF_SERVICE;
+ bool isDataAvailable = false;
+
+ err = connection_get_cellular_state(__pConnectionHandle.get(), &dataServiceState);
+
+ SysLog(NID_TEL, "The return value of connection_get_cellular_state() is 0x%x and the dataServiceState is %d", err, dataServiceState);
+
+ if (dataServiceState == CONNECTION_CELLULAR_STATE_AVAILABLE || dataServiceState == CONNECTION_CELLULAR_STATE_CONNECTED)
+ {
+ isDataAvailable = true;
+ }
+ else
+ {
+ isDataAvailable = false;
+ }
+
+ return isDataAvailable;
+}
+
+bool
+_NetworkManagerImpl::IsRoaming(void)
+{
+ int err = NETWORK_INFO_ERROR_NONE;
+ bool isRoaming = false;
+
+ err = network_info_is_roaming(&isRoaming);
+ SysLog(NID_TEL, "The return value of network_info_is_roaming() is 0x%x and the roming state is %s", err, isRoaming ? "True" : "False");
+
+ return isRoaming;
+}
+
+bool
_NetworkManagerImpl::IsServiceAvailable(bool checkEmergency /* = false */)
{
bool isAvailable = false;
return !isFlightModeEnabled;
}
-const char*
-_NetworkManagerImpl::GetStringOfNetworkEventType(_NetworkEventType type) const
-{
- static const char* pStateStr[] =
- {
- "CallServiceAvailable",
- "DataServiceAvailable ",
- "Roaming"
- };
- return pStateStr[type];
-}
+//const char*
+//_NetworkManagerImpl::GetStringOfNetworkEventType(_NetworkEventType type) const
+//{
+// static const char* pStateStr[] =
+// {
+// "CallServiceAvailable",
+// "DataServiceAvailable ",
+// "Roaming"
+// };
+// return pStateStr[type];
+//}
_NetworkManagerImpl*
_NetworkManagerImpl::GetInstance(NetworkManager& networkManager)
class _NetworkManagerImpl
: public Tizen::Base::Object
{
- /**
- * @enum _NetworkEventType
- * Defines the network event type.
- */
- enum _NetworkEventType
- {
- _NETWORK_EVENT_CALL,
- _NETWORK_EVENT_DATA,
- _NETWORK_EVENT_ROAMING
- };
-
public:
/**
* This is the default constructor for this class.
void OnTelephonyNetworkSearchCompleted(Tizen::Base::String message, result r);
+ /**
+ * Checks the network state of the data network service.
+ */
+ bool IsDataAvailable(void);
+
+ /**
+ * Checks the data roaming is on or off.
+ */
+ bool IsRoaming(void);
/**
* Checks the network state of the telephony service.
*/
_NetworkManagerImpl(const _NetworkManagerImpl& rhs);
- /**
- * Gets the string of network event type.
- *
- * @param[in] type The value of _NetworkEventType
- */
- const char* GetStringOfNetworkEventType(_NetworkEventType type) const;
-
- /**
- * Notifies when the status of the telephony network is changed.
- */
- void OnTelephonyNetworkStatusChanged(_NetworkEventType type, bool data);
-
+ void OnTelephonyNetworkStatusChanged(void);
Tizen::Base::Collection::IList* ParsingMessageN(const Tizen::Base::String& message);
_TelephonyIpcProxy* __pTelephonyServiceProxy;
ITelephonyNetworkSettingListener* __pSettingListener;
+ bool __isCallServiceAvailable;
+ bool __isDataServiceAvailable;
+ bool __isRoaming;
+
}; // _NetworkManagerImpl
}} // Tizen::Telephony