From: eh1112.kim Date: Mon, 9 Dec 2013 09:59:37 +0000 (+0900) Subject: Merge from 2.2 X-Git-Tag: accepted/tizen/mobile/20131216.220422^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;ds=sidebyside;h=refs%2Fheads%2Faccepted%2Ftizen%2Fmobile;p=platform%2Fframework%2Fnative%2Ftelephony.git Merge from 2.2 Change-Id: Ia46e034cc03498005ec85db1f34939ae43ceb340 Signed-off-by: eh1112.kim --- diff --git a/CMakeLists.txt b/CMakeLists.txt old mode 100644 new mode 100755 index d2b9588..06e9f50 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,7 +18,6 @@ INCLUDE_DIRECTORIES( /usr/include/osp/app /usr/include/osp/base /usr/include/osp/io - /usr/include/osp/net /usr/include/osp/security /usr/include/osp/system ) @@ -74,7 +73,7 @@ ADD_DEPENDENCIES(${this_target} chromium osp-appfw) SET(CMAKE_SHARED_LINKER_FLAGS -Wl,--no-undefined) TARGET_LINK_LIBRARIES(${this_target} "-lchromium" ) -TARGET_LINK_LIBRARIES(${this_target} "-L/usr/lib/osp -losp-appfw -losp-net" ) +TARGET_LINK_LIBRARIES(${this_target} "-L/usr/lib/osp -losp-appfw" ) TARGET_LINK_LIBRARIES(${this_target} "-lcapi-telephony-network-info" ) TARGET_LINK_LIBRARIES(${this_target} "-lcapi-telephony-sim" ) TARGET_LINK_LIBRARIES(${this_target} "-ltapi" ) diff --git a/inc/FTelCallInfo.h b/inc/FTelCallInfo.h index 4a17ca4..5a24ee5 100755 --- a/inc/FTelCallInfo.h +++ b/inc/FTelCallInfo.h @@ -36,7 +36,7 @@ class _CallInfoImpl; * * @since 2.0 * - * The %CallInfo class provides methods to obtain detailed call information, such as the call type and number. + * The %CallInfo class provides methods to obtain detailed call information, such as the call type and the number. */ class _OSP_EXPORT_ CallInfo : public Tizen::Base::Object @@ -54,7 +54,7 @@ public: * * @since 2.0 * - * @param[in] rhs The call information + * @param[in] rhs The call information to copy */ CallInfo(const CallInfo& rhs); @@ -75,7 +75,7 @@ public: CallType GetCallType(void) const; /** - * Gets the correspondent's phone number. + * Gets the phone number. * * @since 2.0 * @@ -89,9 +89,9 @@ public: * * @since 2.0 * - * @return @c true if the specified instance equals the current instance, @n - * else @c false - * @param[in] obj An instance of %CallInfo + * @return @c true if the specified instance equals the current instance, @n + * else @c false + * @param[in] obj An instance of %CallInfo * @remarks This method returns @c false if the specified object is not %CallInfo. */ virtual bool Equals(const Tizen::Base::Object& obj) const; @@ -110,7 +110,7 @@ public: * * @since 2.0 * - * @return The reference of this instance + * @return A reference to this instance * @param[in] rhs An instance of %CallInfo to copy */ CallInfo& operator=(const CallInfo& rhs); diff --git a/inc/FTelCallManager.h b/inc/FTelCallManager.h index e65eb4b..084c948 100755 --- a/inc/FTelCallManager.h +++ b/inc/FTelCallManager.h @@ -115,7 +115,8 @@ class _OSP_EXPORT_ CallManager { public: /** - * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * The object is not fully constructed after this constructor is called. + * For full construction, the Construct() method must be called right after calling this constructor. * * @since 2.0 */ @@ -129,35 +130,33 @@ public: virtual ~CallManager(void); /** - * Initializes a new instance of this class. @n - * This is the two phase construction. + * Initializes a new instance of %CallManager. @n + * This is a two phase construction. * - * @since 2.0 - * @feature %http://tizen.org/feature/network.telephony - * @return An error code - * @exception E_SUCCESS The method is successful. - * @exception E_SYSTEM A system error has occurred. - * @exception E_UNSUPPORTED_OPERATION The Emulator or target device does not support the required feature. @b Since: @b 2.1 + * @since 2.0 + * @feature %http://tizen.org/feature/network.telephony + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. + * @exception E_UNSUPPORTED_OPERATION The Emulator or target device does not support the required feature. @b Since: @b 2.1 * For more information, see Application Filtering. - * @remarks Before calling this method, check whether the feature is supported by - * Tizen::System::SystemInfo::GetValue(const Tizen::Base::String&, bool&). + * @remarks Before calling this method, check whether the feature is supported by Tizen::System::SystemInfo::GetValue(const Tizen::Base::String&, bool&). */ result Construct(void); /** - * Initializes a new instance of this class. @n - * This is the two phase construction. + * Initializes a new instance of %CallManager. @n + * This is a two phase construction. * - * @since 2.0 - * @feature %http://tizen.org/feature/network.telephony - * @return An error code - * @param[in] listener The listener for change in status of a call - * @exception E_SUCCESS The method is successful. - * @exception E_SYSTEM A system error has occurred. + * @since 2.0 + * @feature %http://tizen.org/feature/network.telephony + * @return An error code + * @param[in] listener The listener for the change in the call status + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. * @exception E_UNSUPPORTED_OPERATION The Emulator or target device does not support the required feature. @b Since: @b 2.1 * For more information, see Application Filtering. - * @remarks Before calling this method, check whether the feature is supported by - * Tizen::System::SystemInfo::GetValue(const Tizen::Base::String&, bool&). + * @remarks Before calling this method, check whether the feature is supported by Tizen::System::SystemInfo::GetValue(const Tizen::Base::String&, bool&). */ result Construct(ITelephonyCallEventListener& listener); @@ -169,9 +168,9 @@ public: * @privlevel platform * @privilege %http://tizen.org/privilege/callforward * - * @return An error code + * @return An error code * @param[in] pListener An ITelephonyCallForwardListener instance @n - * The parameter can be set to @c null to remove listener. + * The parameter can be set to @c null to remove the listener. * @exception E_SUCCESS The method is successful. * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. * @exception E_SYSTEM A system error has occurred. @@ -179,26 +178,27 @@ public: result SetCallForwardListener(ITelephonyCallForwardListener* pListener); /** - * Requests call forwarding with the specified number. @n - * The %RequestCallForward() method sends the request to the network, and receives the response asynchronously. + * Requests call forwarding to the specified number. @n + * The %RequestCallForward() method sends a request to the network, and receives the response asynchronously. * * @since 2.0 * * @privlevel platform * @privilege %http://tizen.org/privilege/callforward * - * @return An error code - * @param[in] phoneNumber The phone number for call forwarding + * @return An error code + * @param[in] phoneNumber The phone number for call forwarding * @exception E_SUCCESS The method is successful. * @exception E_INVALID_STATE This instance is in an invalid state. - * @exception E_INVALID_FORMAT The specified phone number is in an invalid format. + * @exception E_INVALID_FORMAT The specified @c phoneNumber is in an invalid format. * @exception E_IN_PROGRESS The previous request is in progress. * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. * @exception E_NETWORK_UNAVAILABLE The operation has failed because the device is in the offline mode. - * @exception E_SERVICE_UNAVAILABLE The operation has failed because the device is out of the coverage area or in the emergency mode. + * @exception E_SERVICE_UNAVAILABLE The operation has failed because the device is either out of the coverage area or in the emergency mode. * @exception E_SYSTEM A system error has occurred. - * @remarks The call will be forwarded unconditionally. Voice call only. @n - * The phone number can start with plus(+) and the remaining part must be number. + * @remarks + * - This method forwards the call unconditionally and supports only voice call. @n + * - The phone number must start with a plus(+) sign and the remaining part must be the number. * @see ITelephonyCallForwardListener::OnTelephonyCallForwardResponseReceived() */ result RequestCallForward(const Tizen::Base::String& phoneNumber); @@ -211,39 +211,39 @@ public: * @privlevel platform * @privilege %http://tizen.org/privilege/callforward * - * @return An error code + * @return An error code * @exception E_SUCCESS The method is successful. * @exception E_INVALID_STATE This instance is in an invalid state. * @exception E_IN_PROGRESS The previous request is in progress. * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. * @exception E_NETWORK_UNAVAILABLE The operation has failed because the device is in the offline mode. - * @exception E_SERVICE_UNAVAILABLE The operation has failed because the device is out of the coverage area or in the emergency mode. + * @exception E_SERVICE_UNAVAILABLE The operation has failed because the device is either out of the coverage area or in the emergency mode. * @exception E_SYSTEM A system error has occurred. * @see ITelephonyCallForwardListener::OnTelephonyCallForwardStopped() */ result StopCallForward(void); /** - * Gets the phone number to which the call must be forwarded. + * Gets the phone number to which the call is forwarded. * - * @since 2.0 + * @since 2.0 * * @privlevel platform * @privilege %http://tizen.org/privilege/callforward * - * @return An error code + * @return An error code * @exception E_SUCCESS The method is successful. * @exception E_IN_PROGRESS The previous request is in progress. * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. * @exception E_NETWORK_UNAVAILABLE The operation has failed because the device is in the offline mode. - * @exception E_SERVICE_UNAVAILABLE The operation has failed because the device is out of the coverage area or in the emergency mode. + * @exception E_SERVICE_UNAVAILABLE The operation has failed because the device is either out of the coverage area or in the emergency mode. * @exception E_SYSTEM A system error has occurred. - * @see ITelephonyCallForwardListener::OnTelephonyCallForwardNumberReceived + * @see ITelephonyCallForwardListener::OnTelephonyCallForwardNumberReceived() */ result GetCallForwardNumber(void) const; /** - * Gets the call type of the current call. + * Gets the current call type. * * @since 2.0 * @@ -253,7 +253,7 @@ public: CallType GetCurrentCallType(void) const; /** - * Gets the call status of the current call. + * Gets the current call status. * * @since 2.0 * diff --git a/inc/FTelISimStateManagerGetPinLockSettingResultListener.h b/inc/FTelISimStateManagerGetPinLockSettingResultListener.h index 1a8b7e4..4bf2560 100755 --- a/inc/FTelISimStateManagerGetPinLockSettingResultListener.h +++ b/inc/FTelISimStateManagerGetPinLockSettingResultListener.h @@ -32,7 +32,7 @@ namespace Tizen { namespace Telephony { /** * @interface ISimStateManagerGetPinLockSettingResultListener - * @brief This interface provides methods to receive the result of the SimStateManager::GetPinLockSetting() asynchronous method. + * @brief This interface provides methods to receive the result of the %SimStateManager::GetPinLockSetting() asynchronous method. * * @since 2.1 * @@ -44,7 +44,8 @@ class _OSP_EXPORT_ ISimStateManagerGetPinLockSettingResultListener { public: /** - * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * This polymorphic destructor should be overridden if required. @n + * This way, the destructors of the derived classes are called when the destructor of this interface is called. * * @since 2.1 */ @@ -52,14 +53,15 @@ public: public: /** - * Called when a response to the PIN lock setting query is received. + * Called when the response to the PIN lock setting query is received. * * @since 2.1 * - * @param[in] isEnabled The PIN lock setting value - * @param[in] r The result of the request @n The following exceptions may be given through this parameter. + * @param[in] isEnabled The PIN lock setting value + * @param[in] r The result of the request @n + * The following exceptions may be given through this parameter. * - * @exception E_SUCCESS The method is successful. + * @exception E_SUCCESS The method is successful. * @exception E_INVALID_STATE The SIM is in an invalid state. */ virtual void OnSimStateManagerGetPinLockSettingResultReceived(bool isEnabled, result r) = 0; diff --git a/inc/FTelITelephonyCallEventListener.h b/inc/FTelITelephonyCallEventListener.h old mode 100644 new mode 100755 index 5bf8083..2bbfbb6 --- a/inc/FTelITelephonyCallEventListener.h +++ b/inc/FTelITelephonyCallEventListener.h @@ -34,11 +34,11 @@ namespace Tizen { namespace Telephony { /** * @interface ITelephonyCallEventListener - * @brief This interface provides methods to listen to the change in status of a call. + * @brief This interface provides methods to listen to a change in the call status. * * @since 2.0 * - * The %ITelephonyCallEventListener interface checks for the change in status of a call. + * The %ITelephonyCallEventListener interface checks for a change in the call status. * */ class _OSP_EXPORT_ ITelephonyCallEventListener @@ -46,19 +46,20 @@ class _OSP_EXPORT_ ITelephonyCallEventListener { public: /** - * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * This polymorphic destructor should be overridden if required. @n + * This way, the destructors of the derived classes are called when the destructor of this interface is called. * * @since 2.0 */ virtual ~ITelephonyCallEventListener(void) {} /** - * Called when the status of a call is changed. + * Called when the call status is changed. * * @since 2.0 * - * @param[in] callStatus The new status of a call - * @param[in] pCallInfo The detailed information of a call + * @param[in] callStatus The changed call status + * @param[in] pCallInfo The detailed information of the call */ virtual void OnTelephonyCallStatusChangedN(CallStatus callStatus, CallInfo* pCallInfo) = 0; diff --git a/inc/FTelITelephonyCallForwardListener.h b/inc/FTelITelephonyCallForwardListener.h index 82f08a4..95f86a1 100755 --- a/inc/FTelITelephonyCallForwardListener.h +++ b/inc/FTelITelephonyCallForwardListener.h @@ -31,58 +31,59 @@ namespace Tizen { namespace Telephony { /** * @interface ITelephonyCallForwardListener - * @brief This interface provides methods to listen to the results of the call forwarding request. + * @brief This interface provides methods to listen to the results of a call forwarding request. * * @since 2.0 * - * The %ITelephonyCallForwardListener interface provides methods to listen to the results of the call forwarding request. + * The %ITelephonyCallForwardListener interface provides methods to listen to the results of a call forwarding request. */ class _OSP_EXPORT_ ITelephonyCallForwardListener : virtual public Tizen::Base::Runtime::IEventListener { public: /** - * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * This polymorphic destructor should be overridden if required. @n + * This way, the destructors of the derived classes are called when the destructor of this interface is called. * * @since 2.0 */ virtual ~ITelephonyCallForwardListener(void) {} /** - * Called when a response of the call forwarding request is received. + * Called when the response to the call forwarding request is received. * * @since 2.0 * * @param[in] phoneNumber The phone number * @param[in] r The result of the call forwarding request * @exception E_SUCCESS The method is successful. - * @exception E_NOT_RESPONDING The server on the telephony network is not responding. + * @exception E_NOT_RESPONDING The server of the telephony network is not responding. * @exception E_SYSTEM A system error has occurred. */ virtual void OnTelephonyCallForwardResponseReceived(const Tizen::Base::String& phoneNumber, result r) = 0; /** - * Called when a response of the call forwarding stop request is received. + * Called when the response to the call forwarding stop request is received. * * @since 2.0 * * @param[in] phoneNumber The phone number * @param[in] r The result of the call forwarding request * @exception E_SUCCESS The method is successful. - * @exception E_NOT_RESPONDING The server on the telephony network is not responding. + * @exception E_NOT_RESPONDING The server of the telephony network is not responding. * @exception E_SYSTEM A system error has occurred. */ virtual void OnTelephonyCallForwardStopped(const Tizen::Base::String& phoneNumber, result r) = 0; /** - * Called when a query for the call forwarding number is completed. + * Called when the query for the call forwarding number is completed. * * @since 2.0 * * @param[in] phoneNumber The phone number * @param[in] r The result of the query request * @exception E_SUCCESS The method is successful. - * @exception E_NOT_RESPONDING The server on the telephony network is not responding. + * @exception E_NOT_RESPONDING The server of the telephony network is not responding. * @exception E_SERVICE_DEACTIVATED The call forwarding service is not enabled. * @exception E_SYSTEM A system error has occurred. */ diff --git a/inc/FTelITelephonyNetworkEventListener.h b/inc/FTelITelephonyNetworkEventListener.h old mode 100644 new mode 100755 index 223e465..08c07b0 --- a/inc/FTelITelephonyNetworkEventListener.h +++ b/inc/FTelITelephonyNetworkEventListener.h @@ -32,7 +32,7 @@ namespace Tizen { namespace Telephony { /** * @interface ITelephonyNetworkEventListener - * @brief This interface provides methods to listen to the change in status of the telephony network. + * @brief This interface provides methods to listen to the change in the telephony network status. * * @since 2.0 * @@ -44,18 +44,19 @@ class _OSP_EXPORT_ ITelephonyNetworkEventListener { public: /** - * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * This polymorphic destructor should be overridden if required. @n + * This way, the destructors of the derived classes are called when the destructor of this interface is called. * * @since 2.0 */ virtual ~ITelephonyNetworkEventListener(void) {} /** - * Called when the status of the telephony network is changed. + * Called when the telephony network status is changed. * * @since 2.0 * - * @param[in] networkStatus The new network status + * @param[in] networkStatus The changed telephony network status */ virtual void OnTelephonyNetworkStatusChanged(const NetworkStatus& networkStatus) = 0; diff --git a/inc/FTelITelephonyNetworkSettingListener.h b/inc/FTelITelephonyNetworkSettingListener.h index 2df36f2..8deb288 100755 --- a/inc/FTelITelephonyNetworkSettingListener.h +++ b/inc/FTelITelephonyNetworkSettingListener.h @@ -34,34 +34,35 @@ namespace Tizen { namespace Telephony { /** * @interface ITelephonyNetworkSettingListener -* @brief This interface provides result of the network settings. +* @brief This interface provides the result of the network settings. * * @since 2.0 * -* The %ITelephonyNetworkSettingListener interface provides result of the network search and response by selection mode. +* The %ITelephonyNetworkSettingListener interface provides the result of a network search and response performed in the selection mode. */ class _OSP_EXPORT_ ITelephonyNetworkSettingListener : virtual public Tizen::Base::Runtime::IEventListener { public: /** - * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * This polymorphic destructor should be overridden if required. @n + * This way, the destructors of the derived classes are called when the destructor of this interface is called. * * @since 2.0 */ virtual ~ITelephonyNetworkSettingListener(void) {} /** - * Called when a response of the network selection mode request is received. + * Called when the response of the network selection mode request is received. * * @since 2.0 * - * @param[in] isManual @c true if the network selection is in manual mode, @n - * else @c false - * @param[in] r An error code - * @exception E_SUCCESS The method is successful. - * @exception E_NOT_RESPONDING The server on the telephony network is not responding. - * @exception E_SYSTEM The method cannot proceed due to a severe telephony modem error. + * @param[in] isManual @c true if the network selection is done in the manual mode, @n + * else @c false + * @param[in] r An error code + * @exception E_SUCCESS The method is successful. + * @exception E_NOT_RESPONDING The server of the telephony network is not responding. + * @exception E_SYSTEM The method cannot proceed due to a severe telephony modem error. * @see NetworkManager::GetNetworkSelectionMode() */ virtual void OnTelephonyNetworkSelectionModeReceived(bool isManual, result r) = 0; @@ -71,23 +72,23 @@ public: * * @since 2.0 * - * @param[in] pNetworkInfoList The list of NetworkInfo information representing the network discovered by the search + * @param[in] pNetworkInfoList The list of NetworkInfo information that represents the network discovered by the search * @param[in] r An error code * @exception E_SUCCESS The method is successful. - * @exception E_NOT_RESPONDING The server on the telephony network is not responding. + * @exception E_NOT_RESPONDING The server of the telephony network is not responding. * @exception E_SYSTEM The method cannot proceed due to a severe telephony modem error. * @see NetworkManager::SearchNetwork() */ virtual void OnTelephonyNetworkSearchCompletedN(Tizen::Base::Collection::IList* pNetworkInfoList, result r) = 0; /** - * Called when a response of the network selection request is completed. + * Called when the response of the network selection request is completed. * * @since 2.0 * - * @param[in] r An error code + * @param[in] r An error code * @exception E_SUCCESS The method is successful. - * @exception E_NOT_RESPONDING The server on the telephony network is not responding. + * @exception E_NOT_RESPONDING The server of the telephony network is not responding. * @exception E_SYSTEM The method cannot proceed due to a severe telephony modem error. * @see NetworkManager::SelectNetwork() */ diff --git a/inc/FTelITelephonySimEventListener.h b/inc/FTelITelephonySimEventListener.h index d720f36..85d67c4 100755 --- a/inc/FTelITelephonySimEventListener.h +++ b/inc/FTelITelephonySimEventListener.h @@ -32,11 +32,11 @@ namespace Tizen { namespace Telephony /** * @interface ITelephonySimEventListener - * @brief This interface provides methods to listen to the change in state of the SIM card. + * @brief This interface provides methods to listen to the change in the SIM card state. * * @since 2.1 * - * The %ITelephonySimEventListener interface checks for the change in state of the SIM card. + * The %ITelephonySimEventListener interface checks for the change in the SIM card state. * */ class _OSP_EXPORT_ ITelephonySimEventListener @@ -44,18 +44,19 @@ class _OSP_EXPORT_ ITelephonySimEventListener { public: /** - * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when the destructor of this interface is called. + * This polymorphic destructor should be overridden if required. @n + * This way, the destructors of the derived classes are called when the destructor of this interface is called. * * @since 2.1 */ virtual ~ITelephonySimEventListener(void) {} /** - * Called when the state of SIM is changed. + * Called when the SIM state is changed. * * @since 2.1 * - * @param[in] state The new SIM state + * @param[in] state The changed SIM state */ virtual void OnTelephonySimStateChanged(SimState state) = 0; diff --git a/inc/FTelNetworkInfo.h b/inc/FTelNetworkInfo.h index d9f7eea..96d57fc 100755 --- a/inc/FTelNetworkInfo.h +++ b/inc/FTelNetworkInfo.h @@ -33,13 +33,13 @@ class _NetworkInfoImpl; /** * @class NetworkInfo - * @brief This class provides information of the current network. + * @brief This class provides methods to obtain the current network information. * * @since 2.0 * - * The %NetworkInfo class provides methods to get information of the current network such as MNC, MCC, PLMN, cell ID, and operator name. + * The %NetworkInfo class provides methods to obtain information, such as the MNC, the MCC, the PLMN, the cell ID, and the operator name, of the current network. * - * The following example demonstrates how to use the %NetworkInfo class to get the network information. + * The following example demonstrates how to use the %NetworkInfo class to obtain the network information. * * @code * @@ -115,7 +115,7 @@ public: * * @since 2.0 * - * @param[in] rhs An instance of %NetworkInfo + * @param[in] rhs An instance of %NetworkInfo to copy */ NetworkInfo(const NetworkInfo& rhs); @@ -129,13 +129,13 @@ public: /** * Gets the Mobile Network Code (MNC) of the network. * - * @since 2.0 + * @since 2.0 * @privlevel public * @privilege %http://tizen.org/privilege/telephony @n * (%http://tizen.org/privilege/systeminfo is deprecated.) * * @return The MNC of the network - * @exception E_SUCCESS The method is successful. + * @exception E_SUCCESS The method is successful. * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. * @remarks The specific error code can be accessed using the GetLastResult() method. */ @@ -144,13 +144,13 @@ public: /** * Gets the Mobile Country Code (MCC) of the network. * - * @since 2.0 + * @since 2.0 * @privlevel public * @privilege %http://tizen.org/privilege/telephony @n * (%http://tizen.org/privilege/systeminfo is deprecated.) * * @return The MCC of the network - * @exception E_SUCCESS The method is successful. + * @exception E_SUCCESS The method is successful. * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. * @remarks The specific error code can be accessed using the GetLastResult() method. */ @@ -183,55 +183,58 @@ public: * @page CompNetworkInfoGetPlmnPage Compatibility for GetPlmn() * @section CompNetworkInfoGetPlmnPageIssueSection Issues * Implementation of this method in Tizen API versions prior to 2.1 has the following issue: @n - * -# The method returns an alphabetic name of PLMN. + * -# The method returns an alphabetic name for PLMN. * * @section CompNetworkInfoGetPlmnPageSolutionSection Resolutions - * -# The method returns a numeric name of PLMN-ID(MCC+MNC). - * To get the alphabetic name of PLMN, it is recommended to use Tizen::Telephony::GetOperatorName(). + * The issue mentioned above is resolved in Tizen API version 2.1, and it is recommended to use Tizen API version 2.1. or above. @n + * -# The method returns a numeric name for PLMN-ID(MCC+MNC). + * To get the alphabetic name of PLMN, it is recommended to use Tizen::Telephony::GetOperatorName(). */ /** * Gets the current cell ID. * - * @since 2.0 + * @since 2.0 * @privlevel public * @privilege %http://tizen.org/privilege/telephony @n * (%http://tizen.org/privilege/systeminfo is deprecated.) * * @return The current cell ID - * @exception E_SUCCESS The method is successful. + * @exception E_SUCCESS The method is successful. * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. - * @remarks This cell ID is provided using only NetworkManager::GetNetworkInfo() when connected to a network. - * @remarks The specific error code can be accessed using the GetLastResult() method. + * @remarks + * - The cell ID is provided using only the NetworkManager::GetNetworkInfo() method when connected to a network. + * - The specific error code can be accessed using the GetLastResult() method. */ int GetCellId(void) const; /** * Gets the current Location Area Code (LAC). * - * @since 2.0 + * @since 2.0 * @privlevel public * @privilege %http://tizen.org/privilege/telephony @n * (%http://tizen.org/privilege/systeminfo is deprecated.) * * @return The current LAC - * @exception E_SUCCESS The method is successful. + * @exception E_SUCCESS The method is successful. * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. - * @remarks This LAC is provided using only NetworkManager::GetNetworkInfo() when connected to a network. - * @remarks The specific error code can be accessed using the GetLastResult() method. + * @remarks + * - The LAC is provided using only the NetworkManager::GetNetworkInfo() method when connected to a network. + * - The specific error code can be accessed using the GetLastResult() method. */ int GetLac(void) const; /** * Gets the operator name. * - * @since 2.0 + * @since 2.0 * @privlevel public * @privilege %http://tizen.org/privilege/telephony @n * (%http://tizen.org/privilege/systeminfo is deprecated.) * * @return The operator name - * @exception E_SUCCESS The method is successful. + * @exception E_SUCCESS The method is successful. * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. * @remarks The specific error code can be accessed using the GetLastResult() method. */ @@ -242,10 +245,10 @@ public: * * @since 2.0 * - * @return @c true if the specified instance equals the current instance, @n - * else @c false - * @param[in] rhs An instance of %NetworkInfo - * @remarks The method returns @c false if the specified object is not %NetworkInfo. + * @return @c true if the specified instance equals the current instance, @n + * else @c false + * @param[in] rhs An instance of %NetworkInfo to check + * @remarks This method returns @c false if the specified object is not %NetworkInfo. */ virtual bool Equals(const Tizen::Base::Object& rhs) const; @@ -259,24 +262,23 @@ public: virtual int GetHashCode(void) const; /** - * Gets the received signal strength indication of a modem device. + * Gets the received signal strength indication of the modem device. * - * @since 2.0 + * @since 2.0 * @privlevel public * @privilege %http://tizen.org/privilege/telephony @n * (%http://tizen.org/privilege/systeminfo is deprecated.) * @feature %http://tizen.org/feature/network.telephony - * @return The current RSSI @n - * The possible RSSI value ranges from @c 0 to @c 100. - * @exception E_SUCCESS The method is successful. - * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. - * @exception E_SYSTEM A system error has occurred. + * @return The current RSSI @n + * The possible RSSI values range from @c 0 to @c 100. + * @exception E_SUCCESS The method is successful. + * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. + * @exception E_SYSTEM A system error has occurred. * @exception E_UNSUPPORTED_OPERATION The Emulator or target device does not support the required feature. @b Since: @b 2.1 * For more information, see Application Filtering. * @remarks * - The specific error code can be accessed using the GetLastResult() method. - * - Before calling this method, check whether the feature is supported by - * Tizen::System::SystemInfo::GetValue(const Tizen::Base::String&, bool&). + * - Before calling this method, check whether the feature is supported by Tizen::System::SystemInfo::GetValue(const Tizen::Base::String&, bool&). */ static int GetRssi(void); @@ -285,8 +287,8 @@ public: * * @since 2.0 * - * @return The reference of this instance - * @param[in] rhs An instance of %NetworkInfo + * @return A reference to this instance + * @param[in] rhs An instance of %NetworkInfo to copy */ NetworkInfo& operator=(const NetworkInfo& rhs); diff --git a/inc/FTelNetworkManager.h b/inc/FTelNetworkManager.h index c327575..eb9c1fe 100755 --- a/inc/FTelNetworkManager.h +++ b/inc/FTelNetworkManager.h @@ -37,14 +37,14 @@ class ITelephonyNetworkSettingListener; /** * @class NetworkManager - * @brief This class provides information about the current active network. + * @brief This class provides information about currently active networks. * * @since 2.0 * * The %NetworkManager class is used to register listeners who monitor network status changes, - * as well as get information about current active network. + * as well as obtain information about currently active networks. * - * The following example demonstrates how to use the %NetworkManager class to get the network information. + * The following example demonstrates how to use the %NetworkManager class to obtain the network information. * * @code * @@ -114,7 +114,8 @@ class _OSP_EXPORT_ NetworkManager { public: /** - * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * The object is not fully constructed after this constructor is called. + * For full construction, the Construct() method must be called right after calling this constructor. * * @since 2.0 */ @@ -128,21 +129,20 @@ public: virtual ~NetworkManager(void); /** - * Initializes a new instance of this class. @n - * This is the two phase construction. - * If a @c null pointer is passed during the construction, then there - * is no listener for telephony network status change callbacks. + * Initializes a new instance of %NetworkManager. @n + * This is a two phase construction. + * If a @c null pointer is passed during the construction, then there + * is no listener for the telephony network status change callbacks. * * @since 2.0 * @feature %http://tizen.org/feature/network.telephony * @return An error code - * @param[in] pListener The listener for change in status of a telephony network - * @exception E_SUCCESS The method is successful. - * @exception E_SYSTEM A system error has occurred. + * @param[in] pListener The listener for the change in the telephony network status + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM A system error has occurred. * @exception E_UNSUPPORTED_OPERATION The Emulator or target device does not support the required feature. @b Since: @b 2.1 * For more information, see Application Filtering. - * @remarks Before calling this method, check whether the feature is supported by - * Tizen::System::SystemInfo::GetValue(const Tizen::Base::String&, bool&). + * @remarks Before calling this method, check whether the feature is supported by Tizen::System::SystemInfo::GetValue(const Tizen::Base::String&, bool&). */ result Construct(ITelephonyNetworkEventListener* pListener); @@ -155,42 +155,42 @@ public: * (%http://tizen.org/privilege/systeminfo is deprecated.) * * @return An error code - * @param[out] networkStatus The network status - * @exception E_SUCCESS The method is successful. + * @param[out] networkStatus The network status + * @exception E_SUCCESS The method is successful. * @exception E_NETWORK_UNAVAILABLE The operation has failed because the device is in the offline mode. - * @exception E_SERVICE_UNAVAILABLE The operation has failed because the device is out of the coverage area or in the emergency mode. - * @exception E_SYSTEM A system error has occurred. - * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. + * @exception E_SERVICE_UNAVAILABLE The operation has failed because the device is either out of the coverage area or in the emergency mode. + * @exception E_SYSTEM A system error has occurred. + * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. */ result GetNetworkStatus(NetworkStatus& networkStatus) const; /** * Gets the network information. * - * @since 2.0 + * @since 2.0 * @privlevel public * @privilege %http://tizen.org/privilege/telephony @n * (%http://tizen.org/privilege/systeminfo is deprecated.) * - * @return An error code - * @param[out] networkInfo The network information - * @exception E_SUCCESS The method is successful. + * @return An error code + * @param[out] networkInfo The network information + * @exception E_SUCCESS The method is successful. * @exception E_NETWORK_UNAVAILABLE The operation has failed because the device is in the offline mode. - * @exception E_SERVICE_UNAVAILABLE The operation has failed because the device is out of the coverage area or in the emergency mode. - * @exception E_SYSTEM A system error has occurred. - * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. + * @exception E_SERVICE_UNAVAILABLE The operation has failed because the device is either out of the coverage area or in the emergency mode. + * @exception E_SYSTEM A system error has occurred. + * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. */ result GetNetworkInfo(NetworkInfo& networkInfo) const; /** - * Sets the listener for receiving the responses of the search network and the network selection mode. + * Sets the listener for receiving the responses of the network search and the network selection mode. * * @since 2.0 * * @privlevel platform * @privilege %http://tizen.org/privilege/telephonymanager * - * @return An error code + * @return An error code * @param[in] pListener An instance of ITelephonyNetworkSettingListener @n * The parameter can be set to @c null to remove the listener. * @exception E_SUCCESS The method is successful. @@ -202,14 +202,14 @@ public: /** * Gets the network selection mode. * - * @since 2.0 + * @since 2.0 * * @privlevel platform * @privilege %http://tizen.org/privilege/telephonymanager * - * @return An error code - * @exception E_SUCCESS The method is successful. - * @exception E_OPERATION_FAILED This request operation has failed due to an internal error. + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_OPERATION_FAILED The requested operation has failed due to an internal error. * @exception E_SYSTEM A system error has occurred. * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. * @see ITelephonyNetworkSettingListener::OnTelephonyNetworkSelectionModeReceived() @@ -219,15 +219,15 @@ public: /** * Selects the manually searched network. * - * @since 2.0 + * @since 2.0 * * @privlevel platform * @privilege %http://tizen.org/privilege/telephonymanager * - * @return An error code - * @param[out] networkInfo The network information - * @exception E_SUCCESS The method is successful. - * @exception E_OPERATION_FAILED This request operation has failed due to an internal error. + * @return An error code + * @param[out] networkInfo The network information + * @exception E_SUCCESS The method is successful. + * @exception E_OPERATION_FAILED The requested operation has failed due to an internal error. * @exception E_SYSTEM A system error has occurred. * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. * @see ITelephonyNetworkSettingListener::OnTelephonyNetworkSelectionCompleted() @@ -237,14 +237,14 @@ public: /** * Selects the network automatically. * - * @since 2.0 + * @since 2.0 * * @privlevel platform * @privilege %http://tizen.org/privilege/telephonymanager * - * @return An error code - * @exception E_SUCCESS The method is successful. - * @exception E_OPERATION_FAILED This request operation has failed due to an internal error. + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_OPERATION_FAILED The requested operation has failed due to an internal error. * @exception E_SYSTEM A system error has occurred. * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. * @see ITelephonyNetworkSettingListener::OnTelephonyNetworkSelectionCompleted() @@ -259,9 +259,9 @@ public: * @privlevel platform * @privilege %http://tizen.org/privilege/telephonymanager * - * @return An error code - * @exception E_SUCCESS The method is successful. - * @exception E_OPERATION_FAILED This request operation has failed due to an internal error. + * @return An error code + * @exception E_SUCCESS The method is successful. + * @exception E_OPERATION_FAILED The requested operation has failed due to an internal error. * @exception E_SYSTEM A system error has occurred. * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. * @see ITelephonyNetworkSettingListener::OnTelephonyNetworkSearchCompletedN() diff --git a/inc/FTelNetworkStatus.h b/inc/FTelNetworkStatus.h index d6fa837..0b7b450 100755 --- a/inc/FTelNetworkStatus.h +++ b/inc/FTelNetworkStatus.h @@ -31,13 +31,14 @@ class _NetworkStatusImpl; /** * @class NetworkStatus` - * @brief This class provides status information of the current network. + * @brief This class provides the status information of the current network. * * @since 2.0 * - * The %NetworkStatus class provides methods to get status information of the current network, such as the roaming status, whether call service is available or not, and whether data service is available or not. + * The %NetworkStatus class provides methods to obtain the status information of the current network, such as the roaming status, whether the call service is available or not, + * and whether the data service is available or not. * - * The following example demonstrates how to use the %NetworkStatus class to get the network status information. + * The following example demonstrates how to use the %NetworkStatus class to obtain the network status information. * * @code * @@ -115,7 +116,7 @@ public: virtual ~NetworkStatus(void); /** - * Checks whether the current network is in roaming status or not. + * Checks whether the current network is in the roaming status or not. * * @since 2.0 * @@ -123,16 +124,16 @@ public: * @privilege %http://tizen.org/privilege/telephony @n * (%http://tizen.org/privilege/systeminfo is deprecated.) * - * @return @c true if the current network is in roaming status, @n - * else @c false - * @exception E_SUCCESS The method is successful. + * @return @c true if the current network is in the roaming status, @n + * else @c false + * @exception E_SUCCESS The method is successful. * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. * @remarks The specific error code can be accessed using the GetLastResult() method. */ bool IsRoaming(void) const; /** - * Checks whether call service is available or not. + * Checks whether the call service is available or not. * * @since 2.0 * @@ -140,16 +141,16 @@ public: * @privilege %http://tizen.org/privilege/telephony @n * (%http://tizen.org/privilege/systeminfo is deprecated.) * - * @return @c true if call service is available, @n - * else @c false - * @exception E_SUCCESS The method is successful. + * @return @c true if the call service is available, @n + * else @c false + * @exception E_SUCCESS The method is successful. * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. * @remarks The specific error code can be accessed using the GetLastResult() method. */ bool IsCallServiceAvailable(void) const; /** - * Checks whether data service is available or not. + * Checks whether the data service is available or not. * * @since 2.0 * @@ -157,8 +158,8 @@ public: * @privilege %http://tizen.org/privilege/telephony @n * (%http://tizen.org/privilege/systeminfo is deprecated.) * - * @return @c true if data service is available, @n - * else @c false + * @return @c true if the data service is available, @n + * else @c false * @exception E_SUCCESS The method is successful. * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. * @remarks The specific error code can be accessed using the GetLastResult() method. diff --git a/inc/FTelSimInfo.h b/inc/FTelSimInfo.h index 0d9e3a8..e5ba443 100755 --- a/inc/FTelSimInfo.h +++ b/inc/FTelSimInfo.h @@ -35,13 +35,13 @@ class _SimInfoImpl; /** * @class SimInfo - * @brief This class provides information of the currently inserted SIM card. + * @brief This class provides the information of a currently inserted SIM card. * @since 2.0 * - * The %SimInfo class provides methods to get information from the SIM card such as MCC, MNC, SPN, ICC ID, the name of operator, + * The %SimInfo class provides methods to obtain SIM card information, such as the MCC, the MNC, the SPN, the ICC ID, the name of the operator, * and whether the SIM card is available or not. * - * The following example demonstrates how to use the %SimInfo class to get the SIM information. + * The following example demonstrates how to use the %SimInfo class to obtain the SIM information. * * @code * @@ -116,7 +116,7 @@ public: * * @since 2.1 * - * @param[in] rhs An instance of %SimInfo + * @param[in] rhs An instance of %SimInfo to copy */ SimInfo(const SimInfo& rhs); @@ -130,26 +130,25 @@ public: /** * Initializes this instance of %SimInfo. * - * @brief [Deprecated] + * @brief [Deprecated] * @deprecated This method is deprecated. Instead of using this method, it is recommended to use the SimStateManager::GetSimInfo() method to get the initialized %SimInfo instance. * * @since 2.0 - * @feature %http://tizen.org/feature/network.telephony + * @feature %http://tizen.org/feature/network.telephony * @return An error code - * @exception E_SUCCESS The method is successful. - * @exception E_SYSTEM The method cannot proceed due to a severe system error. - * @exception E_DEVICE_UNAVAILABLE The operation has failed due to a missing SIM card. + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM The method cannot proceed due to a severe system error. + * @exception E_DEVICE_UNAVAILABLE The operation has failed because the SIM card is not ready. * @exception E_UNSUPPORTED_OPERATION The Emulator or target device does not support the required feature. @b Since: @b 2.1 * For more information, see Application Filtering. - * @remarks Before calling this method, check whether the feature is supported by - * Tizen::System::SystemInfo::GetValue(const Tizen::Base::String&, bool&). + * @remarks Before calling this method, check whether the feature is supported by Tizen::System::SystemInfo::GetValue(const Tizen::Base::String&, bool&). */ result Construct(void); /** * Gets the Mobile Network Code (MNC) of the SIM International Mobile Subscriber Identity (IMSI) information. * - * @since 2.0 + * @since 2.0 * * @privlevel public * @privilege %http://tizen.org/privilege/telephony @n @@ -157,9 +156,9 @@ public: * * @return The MNC of the SIM card, @n * else @c -1 if the method fails - * @exception E_SUCCESS The method is successful. - * @exception E_DEVICE_UNAVAILABLE The operation has failed due to a missing SIM card. - * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. + * @exception E_SUCCESS The method is successful. + * @exception E_DEVICE_UNAVAILABLE The operation has failed because the SIM card is missing. + * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. * @remarks The specific error code can be accessed using the GetLastResult() method. */ int GetMnc(void) const; @@ -175,9 +174,9 @@ public: * * @return The MCC of the SIM card, @n * else @c -1 if the method fails - * @exception E_SUCCESS The method is successful. - * @exception E_DEVICE_UNAVAILABLE The operation has failed due to a missing SIM card. - * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. + * @exception E_SUCCESS The method is successful. + * @exception E_DEVICE_UNAVAILABLE The operation has failed because the SIM card is missing. + * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. * @remarks The specific error code can be accessed using the GetLastResult() method. */ int GetMcc(void) const; @@ -185,24 +184,24 @@ public: /** * Gets the Service Provider Name (SPN) string of the SIM card. * - * @since 2.0 + * @since 2.0 * * @privlevel public * @privilege %http://tizen.org/privilege/telephony @n * (%http://tizen.org/privilege/systeminfo is deprecated.) * * @return The SPN of the SIM card, @n - * else an empty string if there is no SIM card in the device, or if an SPN is not assigned to the SIM card - * @exception E_SUCCESS The method is successful. - * @exception E_DEVICE_UNAVAILABLE The operation has failed due to a missing SIM card. - * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. + * else an empty string if there is no SIM card in the device, or the SPN is not assigned to the SIM card + * @exception E_SUCCESS The method is successful. + * @exception E_DEVICE_UNAVAILABLE The operation has failed because the SIM card is missing. + * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. * @remarks The specific error code can be accessed using the GetLastResult() method. */ Tizen::Base::String GetSpn(void) const; /** * Gets the Integrated Circuit Card Identifier (ICCID) of the SIM card. @n - * One useful case to detect the change of SIM cards is to store this value and compare it with the most recent value. + * One useful way to detect the change of SIM cards is to store this value and compare it with the most recent value. * The %GetIccId() method provides a unique identification number for the SIM card. * * @since 2.0 @@ -211,50 +210,51 @@ public: * @privilege %http://tizen.org/privilege/telephony @n * (%http://tizen.org/privilege/systeminfo is deprecated.) * - * @return The ICCID of the SIM card, @n - * else an empty string if the method fails - * @exception E_SUCCESS The method is successful. - * @exception E_DEVICE_UNAVAILABLE The operation has failed due to a missing SIM card. - * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. + * @return The ICCID of the SIM card, @n + * else an empty string if the method fails + * @exception E_SUCCESS The method is successful. + * @exception E_DEVICE_UNAVAILABLE The operation has failed because the SIM card is missing. + * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. * @remarks The specific error code can be accessed using the GetLastResult() method. */ Tizen::Base::String GetIccId(void) const; /** - * Gets the operator name of Common PCN Handset Specification (CPHS) of the SIM card. + * Gets the operator name of the Common PCN Handset Specification (CPHS) of the SIM card. * - * @since 2.0 + * @since 2.0 * * @privlevel public * @privilege %http://tizen.org/privilege/telephony @n * (%http://tizen.org/privilege/systeminfo is deprecated.) * * @return The operator name of the SIM card, @n - * else an empty string if there is no SIM card in the device, or if an operator name is not assigned to the SIM card - * @exception E_SUCCESS The method is successful. - * @exception E_DEVICE_UNAVAILABLE The operation has failed due to a missing SIM card. - * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. - * @remarks If this method has failed, then this method returns an empty string. - * @remarks The specific error code can be accessed using the GetLastResult() method. + * else an empty string if there is no SIM card in the device, or the operator name is not assigned to the SIM card + * @exception E_SUCCESS The method is successful. + * @exception E_DEVICE_UNAVAILABLE The operation has failed because the SIM card is missing. + * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. + * @remarks + * - If this method fails, then an empty string is returned. + * - The specific error code can be accessed using the GetLastResult() method. */ Tizen::Base::String GetOperatorName(void) const; /** * Gets the phone number of the SIM card. * - * @since 2.0 + * @since 2.0 * * @privlevel public * @privilege %http://tizen.org/privilege/telephony @n * (%http://tizen.org/privilege/systeminfo is deprecated.) * * @return The phone number of the SIM card, @n - * else an empty string if there is no SIM card in the device, or if a Mobile Station International Subscriber Directory Number + * else an empty string if there is no SIM card in the device, or the Mobile Station International Subscriber Directory Number * (MSISDN) is not assigned to the SIM card - * @exception E_SUCCESS The method is successful. - * @exception E_DEVICE_UNAVAILABLE The operation has failed due to a missing SIM card. - * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. - * @exception E_SYSTEM The method cannot proceed due to a severe system error. + * @exception E_SUCCESS The method is successful. + * @exception E_DEVICE_UNAVAILABLE The operation has failed because the SIM card is missing + * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. + * @exception E_SYSTEM The method cannot proceed due to a severe system error. * @remarks The specific error code can be accessed using the GetLastResult() method. */ Tizen::Base::String GetPhoneNumber(void) const; @@ -262,7 +262,7 @@ public: /** * Gets the International Mobile Subscriber Identity (IMSI) of the SIM card. * - * @since 2.0 + * @since 2.0 * * @privlevel partner * @privilege %http://tizen.org/privilege/systemmanager @n @@ -270,34 +270,34 @@ public: * * @return The IMSI of the SIM card, @n * else an empty string if the method fails - * @exception E_SUCCESS The method is successful. - * @exception E_DEVICE_UNAVAILABLE The operation has failed due to a missing SIM card. - * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. - * @exception E_SYSTEM The method cannot proceed due to a severe system error. + * @exception E_SUCCESS The method is successful. + * @exception E_DEVICE_UNAVAILABLE The operation has failed because the SIM card is missing + * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. + * @exception E_SYSTEM The method cannot proceed due to a severe system error. * @remarks The specific error code can be accessed using the GetLastResult() method. */ Tizen::Base::String GetImsi(void) const; /** - * Gets the type of SIM card. + * Gets the SIM card type. * * @since 2.1 * * @privlevel public * @privilege %http://tizen.org/privilege/telephony * - * @return The type of SIM card + * @return The SIM card type * - * @exception E_SUCCESS The method is successful. - * @exception E_DEVICE_UNAVAILABLE The operation has failed due to a missing SIM card. - * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. - * @exception E_SYSTEM The method cannot proceed due to a severe system error. + * @exception E_SUCCESS The method is successful. + * @exception E_DEVICE_UNAVAILABLE The operation has failed because the SIM card is missing + * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. + * @exception E_SYSTEM The method cannot proceed due to a severe system error. * @remarks The specified error code can be accessed using the GetLastResult() method. */ SimType GetSimType(void) const; /** - * Checks whether a SIM card is present in the device or not. + * Checks whether the SIM card is present in the device or not. * * @since 2.0 * @@ -305,9 +305,9 @@ public: * @privilege %http://tizen.org/privilege/telephony @n * (%http://tizen.org/privilege/systeminfo is deprecated.) * - * @return @c true if the SIM card is present in the device, @n - * else @c false - * @exception E_SUCCESS The method is successful. + * @return @c true if the SIM card is present in the device, @n + * else @c false + * @exception E_SUCCESS The method is successful. * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. * @remarks The specific error code can be accessed using the GetLastResult() method. */ @@ -318,18 +318,18 @@ public: * * @since 2.1 * - * @param[in] rhs An instance of %SimInfo + * @param[in] rhs An instance of %SimInfo to copy */ SimInfo& operator =(const SimInfo& rhs); /** - * Compares the specified instance of %SimInfo with the calling instance. + * Compares the specified instance of %SimInfo with the current instance. * * @since 2.0 * * @return @c true if the values match, @n * else @c false - * @param[in] rhs The other Tizen::Base::Object to compare + * @param[in] rhs The Tizen::Base::Object to compare * @see Tizen::Base::Object::Equals() */ virtual bool Equals(const Tizen::Base::Object& rhs) const; diff --git a/inc/FTelSimStateManager.h b/inc/FTelSimStateManager.h index 1b41b91..e653a95 100755 --- a/inc/FTelSimStateManager.h +++ b/inc/FTelSimStateManager.h @@ -37,10 +37,10 @@ class _SimStateManagerImpl; /** * @class SimStateManager - * @brief This class provides methods to obtain information and events about the SIM card. + * @brief This class provides methods to obtain the information and events of the SIM card. * @since 2.1 * - * The %SimStateManager class provides methods to obtain information and events about the SIM card. + * The %SimStateManager class provides methods to obtain the information and events of the SIM card. * * @code * @@ -110,7 +110,8 @@ class _OSP_EXPORT_ SimStateManager { public: /** - * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor. + * The object is not fully constructed after this constructor is called. + * For full construction, the Construct() method must be called right after calling this constructor. * * @since 2.1 */ @@ -126,21 +127,20 @@ public: /** * Initializes this instance of %SimStateManager. * - * @since 2.1 - * @feature %http://tizen.org/feature/network.telephony - * @return An error code + * @since 2.1 + * @feature %http://tizen.org/feature/network.telephony + * @return An error code * - * @exception E_SUCCESS The method is successful. - * @exception E_SYSTEM The method cannot proceed due to a severe system error. + * @exception E_SUCCESS The method is successful. + * @exception E_SYSTEM The method cannot proceed due to a severe system error. * @exception E_UNSUPPORTED_OPERATION The Emulator or target device does not support the required feature. * For more information, see Application Filtering. - * @remarks Before calling this method, check whether the feature is supported by - * Tizen::System::SystemInfo::GetValue(const Tizen::Base::String&, bool&). + * @remarks Before calling this method, check whether the feature is supported by Tizen::System::SystemInfo::GetValue(const Tizen::Base::String&, bool&). */ result Construct(void); /** - * Sets the listener for receiving SIM-related events. + * Sets the listener used to receive SIM-related events. * * @since 2.1 * @@ -150,7 +150,7 @@ public: * @return An error code * * @param[in] pListener An ITelephonySimEventListener instance @n - * The parameter can be set to @c null to remove listener. + * The parameter can be set to @c null to remove the listener. * * @exception E_SUCCESS The method is successful. * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. @@ -172,24 +172,24 @@ public: * * @param[in] pListener An ISimStateManagerGetPinLockSettingResultListener instance * @exception E_SUCCESS The method is successful. - * @exception E_INVALID_ARG The specified @c pListener must not be @c null. + * @exception E_INVALID_ARG The specified @c pListener is @c null. * @exception E_IN_PROGRESS The previous request is in progress. * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. - * @exception E_DEVICE_UNAVAILABLE The operation has failed due to a missing SIM card. + * @exception E_DEVICE_UNAVAILABLE The operation has failed because the SIM card is missing * @exception E_SYSTEM The method cannot proceed due to a severe system error. * @see ISimStateManagerGetPinLockSettingResultListener::OnSimStateManagerGetPinLockSettingResultReceived() */ result GetPinLockSetting(ISimStateManagerGetPinLockSettingResultListener* pListener); /** - * Gets the current state of SIM card. + * Gets the current state of the SIM card. * - * @since 2.1 + * @since 2.1 * * @privlevel public * @privilege %http://tizen.org/privilege/telephony * - * @return The state of SIM card, @n + * @return The state of the SIM card, @n * else @c SIM_STATE_UNKNOWN if the method fails * * @exception E_SUCCESS The method is successful. @@ -205,12 +205,12 @@ public: * @privlevel public * @privilege %http://tizen.org/privilege/telephony * - * @return An error code + * @return An error code * * @param[out] simInfo The SIM card information * @exception E_SUCCESS The method is successful. * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. - * @exception E_DEVICE_UNAVAILABLE The operation has failed due to a missing SIM card. + * @exception E_DEVICE_UNAVAILABLE The operation has failed because the SIM card is not ready. */ result GetSimInfo(SimInfo& simInfo) const; diff --git a/inc/FTelTypes.h b/inc/FTelTypes.h index d99ad7f..98071e1 100755 --- a/inc/FTelTypes.h +++ b/inc/FTelTypes.h @@ -16,9 +16,9 @@ // /** * @file FTelTypes.h - * @brief This is the header file for the enumerations of the Telephony namespace. + * @brief This is the header file for the enumerations of the %Telephony namespace. * - * This header file contains the definitions of the enumerations of the Telephony namespace. + * This header file contains the declarations of the enumerations of the Telephony namespace. */ #ifndef _FTEL_ENUM_H_ #define _FTEL_ENUM_H_ @@ -28,7 +28,7 @@ namespace Tizen { namespace Telephony /** * @enum CallType * - * Defines the type of the current call. + * Defines the current call type. * * @since 2.0 */ @@ -42,7 +42,7 @@ enum CallType /** * @enum CallStatus * - * Defines the current status of calls. + * Defines the current call status. * * @since 2.0 */ @@ -50,17 +50,17 @@ enum CallStatus { CALL_STATUS_UNDEFINED = -1, /**< No defined type */ CALL_STATUS_IDLE = 0, /**< No call is in progress */ - CALL_STATUS_ACTIVE, /**< @if OSPDEPREC @deprecated This enum value is deprecated because an active status is divided into three, that is, communicating, ringing, dialing, and holding @endif */ - CALL_STATUS_COMMUNICATING, /**< Voice or video calls are in progress */ + CALL_STATUS_ACTIVE, /**< @if OSPDEPREC @deprecated This enum value is deprecated because an active status is divided into four types, that is, communicating, ringing, dialing, and holding @endif */ + CALL_STATUS_COMMUNICATING, /**< A voice or video call is in progress */ CALL_STATUS_RINGING, /**< An incoming voice or video call */ CALL_STATUS_DIALING, /**< An outgoing voice or video call */ - CALL_STATUS_HOLDING /**< A call on holding status */ + CALL_STATUS_HOLDING /**< A call in the holding status */ }; /** * @enum SimType * - * Defines the type of the SIM card. + * Defines the SIM card type. * * @since 2.1 */ @@ -76,7 +76,7 @@ enum SimType /** * @enum SimState * - * Defines the current state of the SIM card. + * Defines the current SIM card state. * * @since 2.1 */ @@ -84,10 +84,10 @@ enum SimState { SIM_STATE_UNKNOWN, /**< Unknown state */ SIM_STATE_ABSENT, /**< SIM is not present */ - SIM_STATE_INITIALIZING, /**< SIM is in initializing state */ - SIM_STATE_READY, /**< SIM is in ready state */ - SIM_STATE_PIN_REQUIRED, /**< PIN required */ - SIM_STATE_PUK_REQUIRED, /**< PUK required */ + SIM_STATE_INITIALIZING, /**< SIM is in the initializing state */ + SIM_STATE_READY, /**< SIM is in the ready state */ + SIM_STATE_PIN_REQUIRED, /**< PIN is required */ + SIM_STATE_PUK_REQUIRED, /**< PUK is required */ SIM_STATE_NETWORK_LOCKED, /**< Network locked state */ SIM_STATE_SIM_LOCKED /**< PH-SIM (phone-SIM) locked state */ }; diff --git a/inc/FTelephony.h b/inc/FTelephony.h old mode 100644 new mode 100755 index fb9b358..28ac674 --- a/inc/FTelephony.h +++ b/inc/FTelephony.h @@ -42,16 +42,15 @@ /** * @namespace Tizen::Telephony - * @brief This namespace contains classes and interfaces of the %Telephony service. + * @brief This namespace contains classes and interfaces for the %Telephony service. * @since 2.0 * * @remarks @b Header @b %file: @b \#include @b @n - * @b Library : @b osp-telephony + * @b Library: @b osp-telephony @n * - * The %Telephony namespace is one of the main namespaces of the Tizen framework. - * It provides classes and methods that enable an application to - * access the telephony capabilities of the device, such as call facility (call information and status), - * network query services, and SIM module. + * The %Telephony namespace contains classes and methods that enable an application to + * access the telephony capabilities of the device, such as the call facility (call information and status), + * the network query services, and the SIM module. * * For more information on the %Telephony namespace features, see Telephony Guide. * diff --git a/src/FTelCallInfo.cpp b/src/FTelCallInfo.cpp old mode 100644 new mode 100755 index cf3f6b2..7400b1f --- a/src/FTelCallInfo.cpp +++ b/src/FTelCallInfo.cpp @@ -19,6 +19,7 @@ * @brief This is the implementation file for CallInfo class. */ + #include #include #include "FTel_CallInfoImpl.h" diff --git a/src/FTel_CallManagerImpl.cpp b/src/FTel_CallManagerImpl.cpp old mode 100644 new mode 100755 index 606775e..0f4e27c --- a/src/FTel_CallManagerImpl.cpp +++ b/src/FTel_CallManagerImpl.cpp @@ -314,14 +314,18 @@ _CallManagerImpl::OnCallStatusChangedCallback(TapiHandle* pHandle, const char* p CallType callType = TYPE_UNDEFINED_CALL; String phoneNumber; int callId = 0; + int err = 0; _CallManagerImpl* pCallManagerImpl = static_cast <_CallManagerImpl*>(pUserData); + pCallManagerImpl->__curCallState = CALL_STATUS_IDLE; if (strcmp(pNotiId, TAPI_NOTI_VOICE_CALL_STATUS_IDLE) == 0 || strcmp(pNotiId,TAPI_NOTI_VIDEO_CALL_STATUS_IDLE) == 0) { TelCallStatusIdleNoti_t* pNotiData = (TelCallStatusIdleNoti_t*)pData; callId = pNotiData->id; - pCallManagerImpl->__curCallState = CALL_STATUS_IDLE; + + err = tel_get_call_status_all(pHandle, OnCallStatusCallback, pCallManagerImpl); + SysLog(NID_TEL, "The tel_get_call_status_all() returned %d value", err); } else { @@ -359,7 +363,7 @@ _CallManagerImpl::OnCallStatusChangedCallback(TapiHandle* pHandle, const char* p callId = pNotiData->id; } - int err = tel_get_call_status_all(pHandle, OnCallStatusCallback, pCallManagerImpl); + err = tel_get_call_status_all(pHandle, OnCallStatusCallback, pCallManagerImpl); SysLog(NID_TEL, "The tel_get_call_status_all() returned %d value", err); phoneNumber = pCallManagerImpl->GetPhoneNumber(pHandle, callId); @@ -409,7 +413,7 @@ _CallManagerImpl::OnTelephonyCallForwardNumberReceived(Tizen::Base::String phone void _CallManagerImpl::OnTelephonyCallForwardResponseReceived(Tizen::Base::String phoneNumber, result r) -{ +{ SysLog(NID_TEL, "The listener has called with result %s and phonenumber is %ls", GetErrorMessage(r), phoneNumber.GetPointer()); _CallForwardEventArg* pEventArg = new (std::nothrow)_CallForwardEventArg(_CALL_FORWARD_EVENT_RESPONSE_RECEIVED, phoneNumber, r); @@ -449,36 +453,53 @@ _CallManagerImpl::OnTelephonyCallForwardStopped(Tizen::Base::String phoneNumber, } } + void _CallManagerImpl::OnCallStatusCallback(TelCallStatus_t* status, void* pUserData) { _CallManagerImpl* pImpl = static_cast<_CallManagerImpl*>(pUserData); - // Priority : Ringing/Dialing > Communicating > Hold - // ToDO : multi party call scenario + CallStatus tempCallStatus = CALL_STATUS_IDLE; switch (status->CallState) { case TAPI_CALL_STATE_IDLE: - pImpl->__curCallState = CALL_STATUS_IDLE; + tempCallStatus = CALL_STATUS_IDLE; break; case TAPI_CALL_STATE_ACTIVE: - pImpl->__curCallState = CALL_STATUS_COMMUNICATING; + tempCallStatus = CALL_STATUS_COMMUNICATING; break; case TAPI_CALL_STATE_HELD: - pImpl->__curCallState = CALL_STATUS_HOLDING; + tempCallStatus = CALL_STATUS_HOLDING; break; case TAPI_CALL_STATE_INCOMING: - pImpl->__curCallState = CALL_STATUS_RINGING; + tempCallStatus = CALL_STATUS_RINGING; break; case TAPI_CALL_STATE_DIALING: case TAPI_CALL_STATE_ALERT: - pImpl->__curCallState = CALL_STATUS_DIALING; + tempCallStatus = CALL_STATUS_DIALING; break; default: break; } + if (tempCallStatus == CALL_STATUS_RINGING) + { + pImpl->__curCallState = CALL_STATUS_RINGING; + } + else if ((tempCallStatus == CALL_STATUS_DIALING) && (pImpl->__curCallState != CALL_STATUS_RINGING)) + { + pImpl->__curCallState = CALL_STATUS_DIALING; + } + else if ((tempCallStatus == CALL_STATUS_COMMUNICATING) && (pImpl->__curCallState != CALL_STATUS_RINGING) && (pImpl->__curCallState != CALL_STATUS_DIALING)) + { + pImpl->__curCallState = CALL_STATUS_COMMUNICATING; + } + else if ((tempCallStatus == CALL_STATUS_HOLDING) && (pImpl->__curCallState != CALL_STATUS_RINGING) && (pImpl->__curCallState != CALL_STATUS_DIALING) && (pImpl->__curCallState != CALL_STATUS_COMMUNICATING)) + { + pImpl->__curCallState = CALL_STATUS_HOLDING; + } + return; } @@ -533,6 +554,7 @@ _CallManagerImpl::InitializeInternalCallStatus(void) int err = TAPI_API_SUCCESS; result r = E_SUCCESS; + __curCallState = CALL_STATUS_IDLE; err = tel_get_call_status_all(__pHandle, OnCallStatusCallback, this); SysLog(NID_TEL, "The tel_get_call_status_all() returned %d value", err); diff --git a/src/FTel_NetworkManagerEventArg.cpp b/src/FTel_NetworkManagerEventArg.cpp old mode 100644 new mode 100755 index e342936..e0d4c2c --- a/src/FTel_NetworkManagerEventArg.cpp +++ b/src/FTel_NetworkManagerEventArg.cpp @@ -34,9 +34,15 @@ _NetworkManagerEventArg::_NetworkManagerEventArg(void) _NetworkManagerEventArg::_NetworkManagerEventArg(const NetworkStatus& networkstatus) { - _NetworkStatusImpl::GetInstance(__networkStatus)->SetIsCallServiceAvailable(networkstatus.IsCallServiceAvailable()); - _NetworkStatusImpl::GetInstance(__networkStatus)->SetIsDataServiceAvailable(networkstatus.IsDataServiceAvailable()); - _NetworkStatusImpl::GetInstance(__networkStatus)->SetIsRoaming(networkstatus.IsRoaming()); + _NetworkStatusImpl* pThis = _NetworkStatusImpl::GetInstance(__networkStatus); + const _NetworkStatusImpl* pOther = _NetworkStatusImpl::GetInstance(networkstatus); + + if ((pThis != null) && (pOther != null)) + { + pThis->SetIsCallServiceAvailable(pOther->IsCallServiceAvailable()); + pThis->SetIsDataServiceAvailable(pOther->IsDataServiceAvailable()); + pThis->SetIsRoaming(pOther->IsRoaming()); + } } const NetworkStatus& diff --git a/src/FTel_NetworkManagerImpl.cpp b/src/FTel_NetworkManagerImpl.cpp index f906bfc..7a4ffdd 100755 --- a/src/FTel_NetworkManagerImpl.cpp +++ b/src/FTel_NetworkManagerImpl.cpp @@ -20,7 +20,9 @@ */ #include +#include #include +#include #include #include #include @@ -52,36 +54,31 @@ namespace Tizen { namespace Telephony { _NetworkManagerImpl::_NetworkManagerImpl(void) - : __pConnectionHandle(null) - , __pNetworkManagerEvent(null) + : __pNetworkManagerEvent(null) , __pNetworkSettingEvent(null) , __pTelephonyServiceProxy(null) , __pSettingListener(null) - , __isCallServiceAvailable(false) - , __isDataServiceAvailable(false) - , __isRoaming(false) + , __isEventAdded(false) { } _NetworkManagerImpl::~_NetworkManagerImpl(void) { - if (__pNetworkManagerEvent != null) + if ((__pNetworkManagerEvent != null) && __isEventAdded && (__pTelephonyServiceProxy != null)) { - network_info_unset_service_state_changed_cb(); - network_info_unset_roaming_state_changed_cb(); - connection_unset_type_changed_cb(__pConnectionHandle.get()); + __pTelephonyServiceProxy->RemoveNetworkEvent(__pNetworkManagerEvent.get()); } } result _NetworkManagerImpl::Construct(ITelephonyNetworkEventListener* pListener) { - connection_h pConnHandle = null; - int err = connection_create(&pConnHandle); - SysLog(NID_TEL, "The return value of connection_create() is %d", err); - SysTryReturnResult(NID_TEL, err == CONNECTION_ERROR_NONE, E_SYSTEM, "A system error has occurred. Failed to get the connection handle."); + __pTelephonyServiceProxy = _TelephonyIpcProxy::GetInstance(); - std::unique_ptr pConnectionHandle(pConnHandle); + if (__pTelephonyServiceProxy == null) + { + SysLog(NID_TEL, "Creating an IPC instance to connect with the Connectivity service daemon has failed."); + } if (pListener != null) { @@ -92,95 +89,43 @@ _NetworkManagerImpl::Construct(ITelephonyNetworkEventListener* pListener) SysTryReturnResult(NID_TEL, r != E_OUT_OF_MEMORY, r, "Propagating."); SysTryReturnResult(NID_TEL, r == E_SUCCESS, E_SYSTEM, "A system error has occurred. Failed to construct of the _NetworkManagerEvent."); - // Register data service state changed event - err = connection_set_type_changed_cb(pConnectionHandle.get(),(connection_type_changed_cb)_NetworkManagerImpl::OnDataServiceStateChangedCallback, this); - SysLog(NID_TEL, "The return value of connection_set_type_changed_cb() is 0x%x", err); - SysTryReturnResult(NID_TEL, err == CONNECTION_ERROR_NONE, E_SYSTEM, "A system error has occurred. Failed to register the callback function to received the data service state changed event."); - - // Register call service state changed event - err = network_info_set_service_state_changed_cb((network_info_service_state_changed_cb) _NetworkManagerImpl::OnCallServiceStateChangedCallback, this); - SysLog(NID_TEL, "The return value of network_info_set_service_state_changed_cb() is 0x%x", err); - if (err != NETWORK_INFO_ERROR_NONE) - { - SysLogException(NID_TEL, E_SYSTEM, "[E_SYSTEM] A system error has occurred. Failed to register the callback function to received the call service state changed event."); - connection_unset_type_changed_cb(pConnectionHandle.get()); - - return E_SYSTEM; - } - - // Register roaming state changed event - err = network_info_set_roaming_state_changed_cb((network_info_roaming_state_changed_cb)_NetworkManagerImpl::OnRoamingStateChangedCallback, this); - SysLog(NID_TEL, "The return value of network_info_set_roaming_state_changed_cb() is 0x%x", err); - if (err != NETWORK_INFO_ERROR_NONE) - { - SysLogException(NID_TEL, E_SYSTEM, "[E_SYSTEM] A system error has occurred. Failed to register the callback function to received the roaming state changed event."); - connection_unset_type_changed_cb(pConnectionHandle.get()); - network_info_unset_service_state_changed_cb(); - - return E_SYSTEM; - } + SysTryReturnResult(NID_TEL, __pTelephonyServiceProxy != null, E_SYSTEM, "Failed to initialize the telephony ipc client."); + r = __pTelephonyServiceProxy->AddNetworkEvent(pNetworkManagerEvent.get()); + SysTryReturnResult(NID_TEL, r == E_SUCCESS, r, "Propagating."); + + __isEventAdded = true; pNetworkManagerEvent->AddListener(*pListener, true); __pNetworkManagerEvent = move(pNetworkManagerEvent); - } - __pTelephonyServiceProxy = _TelephonyIpcProxy::GetInstance(); - - if (__pTelephonyServiceProxy == null) - { - SysLog(NID_TEL, "Creating an IPC instance to connect with the Connectivity service daemon has failed."); - } - - __pConnectionHandle = move(pConnectionHandle); - - __isCallServiceAvailable = IsServiceAvailable(); - __isDataServiceAvailable = IsDataAvailable(); - __isRoaming = IsRoaming(); - return E_SUCCESS; } result _NetworkManagerImpl::GetNetworkStatus(NetworkStatus& networkStatus) const { - int err = NETWORK_INFO_ERROR_NONE; bool isRoaming = false; bool isDataServiceAvailable = false; bool isCallServiceAvailable = false; - connection_cellular_state_e dataServiceState = CONNECTION_CELLULAR_STATE_OUT_OF_SERVICE; SysTryReturnResult(NID_TEL, IsNetworkAvailable(), E_NETWORK_UNAVAILABLE, "The operation has failed because the device is in the offline mode."); // Get the isRoming - 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"); + isRoaming = IsRoaming(); - SysTryReturnResult(NID_TEL, err != NETWORK_INFO_ERROR_OUT_OF_SERVICE, E_SERVICE_UNAVAILABLE, "The operation failed because the device is out of the coverage area or in the emergency mode."); - SysTryReturnResult(NID_TEL, err == NETWORK_INFO_ERROR_NONE, E_SYSTEM, "A system error has occurred. Failed to get the roaming status.") - // Get the isCallServiceAvailable SysTryReturnResult(NID_TEL, IsServiceAvailable(), E_SERVICE_UNAVAILABLE, "The operation failed because the device is out of the coverage area or in the emergency mode.") isCallServiceAvailable = true; - // Get the isDataServiceAvailable - 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); - SysTryReturnResult(NID_TEL, err == CONNECTION_ERROR_NONE, E_SYSTEM, "A system error has occurred. Failed to get the data service status."); - - if (dataServiceState == CONNECTION_CELLULAR_STATE_AVAILABLE || dataServiceState == CONNECTION_CELLULAR_STATE_CONNECTED) - { - isDataServiceAvailable = true; - } + isDataServiceAvailable = IsDataAvailable(); _NetworkStatusImpl::GetInstance(networkStatus)->SetIsRoaming(isRoaming); _NetworkStatusImpl::GetInstance(networkStatus)->SetIsCallServiceAvailable(isCallServiceAvailable); _NetworkStatusImpl::GetInstance(networkStatus)->SetIsDataServiceAvailable(isDataServiceAvailable); return E_SUCCESS; - } result @@ -355,93 +300,18 @@ _NetworkManagerImpl::SearchNetwork(void) return r; } -void -_NetworkManagerImpl::OnRoamingStateChangedCallback(bool isRoaming, void* pUserData) -{ - SysLog(NID_TEL, "The callback has called and the roaming state is %s", isRoaming ? "True" : "False"); - _NetworkManagerImpl* pNetworkManagerImpl = static_cast <_NetworkManagerImpl*>(pUserData); - - pNetworkManagerImpl->OnTelephonyNetworkStatusChanged(); - - return; -} - -void -_NetworkManagerImpl::OnCallServiceStateChangedCallback(network_info_service_state_e serviceState, void* pUserData) -{ - SysLog(NID_TEL, "The callback has called and the service state is %d", serviceState); - - _NetworkManagerImpl* pNetworkManagerImpl = static_cast <_NetworkManagerImpl*>(pUserData); - - pNetworkManagerImpl->OnTelephonyNetworkStatusChanged(); - - return; -} - -void -_NetworkManagerImpl::OnDataServiceStateChangedCallback(connection_type_e type, void* pUserData) -{ - SysLog(NID_TEL, "The callback has called and the connection state is %d", type); - - _NetworkManagerImpl* pNetworkManagerImpl = static_cast <_NetworkManagerImpl*>(pUserData); - - pNetworkManagerImpl->OnTelephonyNetworkStatusChanged(); - - return; -} - -void -_NetworkManagerImpl::OnTelephonyNetworkStatusChanged(void) -{ - bool isCallServiceAvailable = false; - bool isDataServiceAvailable = false; - bool isRoaming = false; - - NetworkStatus networkStatus; - - isCallServiceAvailable = IsServiceAvailable(); - if (isCallServiceAvailable) - { - isDataServiceAvailable = IsDataAvailable(); - } - else - { - isDataServiceAvailable = false; - } - isRoaming = IsRoaming(); - - SysLog(NID_TEL, "The network status Call[%d]->[%d] Data[%d]->[%d] Roaming[%d]->[%d]", - __isCallServiceAvailable, isCallServiceAvailable, __isDataServiceAvailable, - isDataServiceAvailable, __isRoaming, isRoaming); - - if ((__isCallServiceAvailable == isCallServiceAvailable) && - (__isDataServiceAvailable == isDataServiceAvailable) && - (__isRoaming == isRoaming)) - { - return; - } - - __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)); - (void)__pNetworkManagerEvent->Fire(*pEventArg); -} - bool -_NetworkManagerImpl::IsDataAvailable(void) +_NetworkManagerImpl::IsDataAvailable(void) const { - int err = NETWORK_INFO_ERROR_NONE; + connection_h pConnHandle = null; connection_cellular_state_e dataServiceState = CONNECTION_CELLULAR_STATE_OUT_OF_SERVICE; bool isDataAvailable = false; + int err = connection_create(&pConnHandle); + SysLog(NID_TEL, "The return value of connection_create() is %d", err); + SysTryReturn(NID_TEL, err == CONNECTION_ERROR_NONE, false, E_SYSTEM, "[E_SYSTEM] A system error has occurred. Failed to get the connection handle."); + std::unique_ptr pConnectionHandle(pConnHandle); - err = connection_get_cellular_state(__pConnectionHandle.get(), &dataServiceState); + err = connection_get_cellular_state(pConnHandle, &dataServiceState); SysLog(NID_TEL, "The return value of connection_get_cellular_state() is 0x%x and the dataServiceState is %d", err, dataServiceState); @@ -458,7 +328,7 @@ _NetworkManagerImpl::IsDataAvailable(void) } bool -_NetworkManagerImpl::IsRoaming(void) +_NetworkManagerImpl::IsRoaming(void) const { int err = NETWORK_INFO_ERROR_NONE; bool isRoaming = false; @@ -509,18 +379,6 @@ _NetworkManagerImpl::IsNetworkAvailable(void) return !isFlightModeEnabled; } -//const char* -//_NetworkManagerImpl::GetStringOfNetworkEventType(_NetworkEventType type) const -//{ -// static const char* pStateStr[] = -// { -// "CallServiceAvailable", -// "DataServiceAvailable ", -// "Roaming" -// }; -// return pStateStr[type]; -//} - _NetworkManagerImpl* _NetworkManagerImpl::GetInstance(NetworkManager& networkManager) { diff --git a/src/FTel_NetworkManagerImpl.h b/src/FTel_NetworkManagerImpl.h old mode 100644 new mode 100755 index 2cd490c..ff0144b --- a/src/FTel_NetworkManagerImpl.h +++ b/src/FTel_NetworkManagerImpl.h @@ -24,8 +24,6 @@ #define _FTEL_INTERNAL_NETWORK_MANAGER_IMPL_H_ #include -#include -#include #include #include "FTel_TelephonyUtility.h" @@ -118,12 +116,12 @@ public: /** * Checks the network state of the data network service. */ - bool IsDataAvailable(void); + bool IsDataAvailable(void) const; /** * Checks the data roaming is on or off. */ - bool IsRoaming(void); + bool IsRoaming(void) const; /** * Checks the network state of the telephony service. @@ -136,30 +134,6 @@ public: static bool IsNetworkAvailable(void); /** - * Called when the state of data service is changed. - * - * @param[in] type The type of current network connection - * @param[in] pUserData The user data passed from the callback registration function - */ - static void OnDataServiceStateChangedCallback(connection_type_e type, void* pUserData); - - /** - * Called when the state of call service is changed. - * - * @param[in] serviceState The state of telephony service - * @param[in] pUserData The user data passed from the callback registration function - */ - static void OnCallServiceStateChangedCallback(network_info_service_state_e serviceState, void* pUserData); - - /** - * Called when the state of roaming is changed. - * - * @param[in] isRoaming The roaming state - * @param[in] pUserData The user data passed from the callback registration function - */ - static void OnRoamingStateChangedCallback(bool isRoaming, void* pUserData); - - /** * Gets the Impl instance. * * @since 2.1 @@ -186,8 +160,6 @@ private: */ _NetworkManagerImpl(const _NetworkManagerImpl& rhs); - void OnTelephonyNetworkStatusChanged(void); - Tizen::Base::Collection::IList* ParsingMessageN(const Tizen::Base::String& message); NetworkInfo* GenerateNetworkInfoN(const Tizen::Base::String& message, int& currentIndex); @@ -205,15 +177,12 @@ private: _NetworkManagerImpl& operator =(const _NetworkManagerImpl& rhs); private: - std::unique_ptr __pConnectionHandle; std::unique_ptr<_NetworkManagerEvent> __pNetworkManagerEvent; std::unique_ptr<_NetworkSettingEvent> __pNetworkSettingEvent; _TelephonyIpcProxy* __pTelephonyServiceProxy; ITelephonyNetworkSettingListener* __pSettingListener; - bool __isCallServiceAvailable; - bool __isDataServiceAvailable; - bool __isRoaming; + bool __isEventAdded; }; // _NetworkManagerImpl diff --git a/src/FTel_SimStateManagerImpl.cpp b/src/FTel_SimStateManagerImpl.cpp old mode 100644 new mode 100755 index 78b9beb..d68f75b --- a/src/FTel_SimStateManagerImpl.cpp +++ b/src/FTel_SimStateManagerImpl.cpp @@ -404,7 +404,7 @@ _SimStateManagerImpl::GetSimInfo(SimInfo& simInfo) const r = pSimInfoImpl->Construct(); } - SysTryReturnResult(NID_TEL, r == E_SUCCESS, E_SYSTEM, "A system error has occurred. Failed to construct SimInfo."); + SysTryReturnResult(NID_TEL, r == E_SUCCESS, E_DEVICE_UNAVAILABLE, "The operation failed due to a missing SIM card."); return r; } diff --git a/src/FTel_TelephonyIpcProxy.cpp b/src/FTel_TelephonyIpcProxy.cpp index ebddb2e..9e68c73 100755 --- a/src/FTel_TelephonyIpcProxy.cpp +++ b/src/FTel_TelephonyIpcProxy.cpp @@ -25,13 +25,22 @@ #include #include #include +#include +#include +#include #include #include #include "FTel_TelephonyIpcProxy.h" #include "FTel_CallManagerImpl.h" +#include "FTel_NetworkManagerEvent.h" +#include "FTel_NetworkManagerEventArg.h" #include "FTel_NetworkManagerImpl.h" +#include "FTel_NetworkStatusImpl.h" +using namespace std; using namespace Tizen::Base; +using namespace Tizen::Base::Runtime; +using namespace Tizen::Base::Collection; using namespace Tizen::Io; namespace Tizen { namespace Telephony @@ -40,7 +49,10 @@ namespace Tizen { namespace Telephony _TelephonyIpcProxy* _TelephonyIpcProxy::__pInstance = null; _TelephonyIpcProxy::_TelephonyIpcProxy(void) - : __pIpcClient(null) + : __pIpcClient(null) + , __pLock(null) + , __pNetworkEventList(null) + , __networkEventCount(0) , __pNetworkManagerImplForGet(null) , __pNetworkManagerImplForSelect(null) , __pNetworkManagerImplForSearch(null) @@ -52,7 +64,17 @@ _TelephonyIpcProxy::_TelephonyIpcProxy(void) _TelephonyIpcProxy::~_TelephonyIpcProxy(void) { - delete __pIpcClient; + if ((__networkEventCount > 0) &&(__pIpcClient != null)) + { + result r = E_SUCCESS; + unsigned long ret = 0; + + std::unique_ptr pMessage( new (std::nothrow) ConnectivityTelephonyServiceMsg_removeNetworkStatusEventListener(&ret)); + SysTryReturnVoidResult(NID_TEL, pMessage != null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed."); + + r = __pIpcClient->SendRequest(*pMessage); + SysLog(NID_TEL, "RemoveNetworkStatusEventListener[%s][%s]", GetErrorMessage(r), GetErrorMessage(ret)); + } } result @@ -60,18 +82,28 @@ _TelephonyIpcProxy::Construct(void) { result r = E_SUCCESS; - __pIpcClient = new (std::nothrow) _IpcClient(); - SysTryReturnResult(NID_TEL, __pIpcClient != null, E_OUT_OF_MEMORY, "Memory allocation failed."); + unique_ptr pNetworkEventList(new (std::nothrow) ArrayList()); + SysTryReturnResult(NID_TEL, pNetworkEventList != null, E_OUT_OF_MEMORY, "Memory allocation failed."); - r = __pIpcClient->Construct(TELEPHONY_CONNECTIVITY_IPC_SERVER_NAME, this); - SysTryReturnResult(NID_TEL, r != E_OUT_OF_MEMORY, r, "Propagating."); + r = pNetworkEventList->Construct(); + SysTryReturnResult(NID_TEL, r == E_SUCCESS, r, "Propagating."); - if (r != E_SUCCESS) - { - SysLogException(NID_TEL, r, "[%s] Propagating", GetErrorMessage(r)); - delete __pIpcClient; - __pIpcClient = null; - } + unique_ptr pLock(new (std::nothrow) Mutex()); + SysTryReturnResult(NID_TEL, pLock != null, E_OUT_OF_MEMORY, "Memory allocation failed."); + + r = pLock->Create(); + SysTryReturnResult(NID_TEL, r == E_SUCCESS, r, "Propagating."); + + unique_ptr<_IpcClient> pIpcClient(new (std::nothrow) _IpcClient()); + SysTryReturnResult(NID_TEL, pIpcClient != null, E_OUT_OF_MEMORY, "Memory allocation failed."); + + r = pIpcClient->Construct(TELEPHONY_CONNECTIVITY_IPC_SERVER_NAME, this); + SysTryReturnResult(NID_TEL, r == E_SUCCESS, r, "Propagating."); + + __pIpcClient = move(pIpcClient); + __pLock = move(pLock); + __pNetworkEventList = move(pNetworkEventList); + __networkEventCount = 0; return r; } @@ -98,13 +130,17 @@ _TelephonyIpcProxy::GetInstance(void) void _TelephonyIpcProxy::InitSingleton(void) { - result r = E_SUCCESS; - static _TelephonyIpcProxy instance; + result r = E_SUCCESS; - r = instance.Construct(); - SysTryReturnVoidResult(NID_TEL, r == E_SUCCESS, r, "[%s] Propagating", GetErrorMessage(r)); + unique_ptr<_TelephonyIpcProxy> pInstance(new (std::nothrow) _TelephonyIpcProxy()); + SysTryReturnVoidResult(NID_TEL, pInstance != null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed."); - __pInstance = &instance; + r = pInstance->Construct(); + SysTryReturnVoidResult(NID_TEL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r)); + + ClearLastResult(); + + __pInstance = pInstance.release(); } result @@ -286,6 +322,61 @@ _TelephonyIpcProxy::GetCallForwardNumber(_CallManagerImpl* pCallManagerImpl) return E_SUCCESS; } +result +_TelephonyIpcProxy::AddNetworkEvent(_NetworkManagerEvent* pEvent) +{ + result r = E_SUCCESS; + + SysTryReturnResult(NID_TEL, pEvent != null, E_INVALID_ARG, "Event is null."); + + MutexGuard locked(*__pLock); + + r = __pNetworkEventList->Add(*pEvent); + SysTryReturnResult(NID_TEL, r == E_SUCCESS, r, "Propagating."); + + if (__networkEventCount == 0) + { + SysLog(NID_TEL, "Set network event callback."); + + unsigned long ret = 0; + + std::unique_ptr pMessage( new (std::nothrow) ConnectivityTelephonyServiceMsg_addNetworkStatusEventListener(&ret)); + r = __pIpcClient->SendRequest(*pMessage); + SysTryReturnResult(NID_TEL, r == E_SUCCESS, E_SYSTEM, "A system error has been occurred. Failed to send a request."); + SysTryReturnResult(NID_TEL, ret == E_SUCCESS, ret, "Propagating."); + } + + __networkEventCount++; + + return r; +} + +void +_TelephonyIpcProxy::RemoveNetworkEvent(_NetworkManagerEvent* pEvent) +{ + SysTryReturnVoidResult(NID_TEL, pEvent != null, E_INVALID_ARG, "[E_INVALID_ARG] Event is null."); + + MutexGuard locked(*__pLock); + + __pNetworkEventList->Remove(*pEvent); + + __networkEventCount--; + + if (__networkEventCount == 0) + { + SysLog(NID_TEL, "Unset network event callback."); + + result r = E_SUCCESS; + unsigned long ret = 0; + + std::unique_ptr pMessage( new (std::nothrow) ConnectivityTelephonyServiceMsg_removeNetworkStatusEventListener(&ret)); + SysTryReturnVoidResult(NID_TEL, pMessage != null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed."); + + r = __pIpcClient->SendRequest(*pMessage); + SysLog(NID_TEL, "RemoveNetworkStatusEventListener[%s][%s]", GetErrorMessage(r), GetErrorMessage(ret)); + } +} + void _TelephonyIpcProxy::OnIpcResponseReceived(Tizen::Io::_IpcClient& client, const IPC::Message& message) { @@ -298,6 +389,7 @@ _TelephonyIpcProxy::OnIpcResponseReceived(Tizen::Io::_IpcClient& client, const I IPC_MESSAGE_HANDLER(ConnectivityTelephonyServiceMsg_onCallForwardNumberReceived, OnTelephonyCallForwardNumberReceived, &client); IPC_MESSAGE_HANDLER(ConnectivityTelephonyServiceMsg_onCallForwardResponseReceived, OnTelephonyCallForwardResponseReceived, &client); IPC_MESSAGE_HANDLER(ConnectivityTelephonyServiceMsg_onCallForwardStopped, OnTelephonyCallForwardStopped, &client); + IPC_MESSAGE_HANDLER(ConnectivityTelephonyServiceMsg_onNetworkStatusChanged, OnNetworkStatusChanged, &client); IPC_END_MESSAGE_MAP() } @@ -361,4 +453,35 @@ _TelephonyIpcProxy::OnTelephonyCallForwardStopped(Tizen::Base::String phoneNumbe __pCallManagerImplForStop->OnTelephonyCallForwardStopped(phoneNumber, res); } +void +_TelephonyIpcProxy::OnNetworkStatusChanged(bool isCallServiceAvailable, bool isDataServiceAvailable, bool isRoaming) +{ + SysLog(NID_TEL, "Network status is changed. [%d][%d][%d]", isCallServiceAvailable, isDataServiceAvailable, isRoaming); + + NetworkStatus networkStatus; + _NetworkManagerEvent* pEvent = null; + _NetworkManagerEventArg* pEventArg = null; + + _NetworkStatusImpl::GetInstance(networkStatus)->SetIsCallServiceAvailable(isCallServiceAvailable); + _NetworkStatusImpl::GetInstance(networkStatus)->SetIsDataServiceAvailable(isDataServiceAvailable); + _NetworkStatusImpl::GetInstance(networkStatus)->SetIsRoaming(isRoaming); + + unique_ptr pEnum(__pNetworkEventList->GetEnumeratorN()); + if (pEnum != null) + { + while (pEnum->MoveNext() == E_SUCCESS) + { + pEvent = dynamic_cast<_NetworkManagerEvent*>(pEnum->GetCurrent()); + if (pEvent != null) + { + pEventArg = new (std::nothrow)_NetworkManagerEventArg(networkStatus); + if (pEventArg != null) + { + pEvent->FireAsync(*pEventArg); + } + } + } + } +} + }} // Tizen::Telephony diff --git a/src/FTel_TelephonyIpcProxy.h b/src/FTel_TelephonyIpcProxy.h old mode 100644 new mode 100755 index bafb1b7..cd1fb77 --- a/src/FTel_TelephonyIpcProxy.h +++ b/src/FTel_TelephonyIpcProxy.h @@ -18,21 +18,32 @@ /** * @file FTel_TelephonyIpcProxy.h * @brief This is the header file for the %_TelephonyIpcProxy class. - * + * * This header file contains the declarations of the %_TelephonyIpcProxy class. - */ + */ -#ifndef _FNET_WIFI_INTERNAL_TELEPHONY_IPC_PROXY_H_ -#define _FNET_WIFI_INTERNAL_TELEPHONY_IPC_PROXY_H_ +#ifndef _FTEL_INTERNAL_TELEPHONY_IPC_PROXY_H_ +#define _FTEL_INTERNAL_TELEPHONY_IPC_PROXY_H_ +#include #include #include #include #include -namespace Tizen { namespace Base { +namespace Tizen { namespace Base +{ class String; -} } + +namespace Runtime +{ +class Mutex; +} + +namespace Collection +{ +class ArrayList; +}}} namespace Tizen { namespace Io { class _IpcClient; @@ -43,6 +54,7 @@ namespace Tizen { namespace Telephony class _NetworkManagerImpl; class _CallManagerImpl; +class _NetworkManagerEvent; /** * @class _TelephonyIpcProxy @@ -72,6 +84,9 @@ public: result StopCallForward(_CallManagerImpl* pCallManagerImpl); result GetCallForwardNumber(_CallManagerImpl* pCallManagerImpl); + result AddNetworkEvent(_NetworkManagerEvent* pEvent); + void RemoveNetworkEvent(_NetworkManagerEvent* pEvent); + static _TelephonyIpcProxy* GetInstance(void); private: @@ -90,10 +105,15 @@ private: void OnTelephonyCallForwardResponseReceived(Tizen::Base::String phoneNumber, unsigned long res); void OnTelephonyCallForwardStopped(Tizen::Base::String phoneNumber, unsigned long res); + void OnNetworkStatusChanged(bool isCallServiceAvailable, bool isDataServiceAvailable, bool isRoaming); + static void InitSingleton(void); private: - Tizen::Io::_IpcClient* __pIpcClient; + std::unique_ptr __pIpcClient; + std::unique_ptr __pLock; + std::unique_ptr __pNetworkEventList; + int __networkEventCount; _NetworkManagerImpl* __pNetworkManagerImplForGet; _NetworkManagerImpl* __pNetworkManagerImplForSelect; _NetworkManagerImpl* __pNetworkManagerImplForSearch; @@ -102,7 +122,9 @@ private: _CallManagerImpl* __pCallManagerImplForStop; static _TelephonyIpcProxy* __pInstance; + friend class std::default_delete<_TelephonyIpcProxy>; + }; // _TelephonyIpcProxy }} -#endif // _FNET_WIFI_INTERNAL_TELEPHONY_IPC_PROXY_H_ +#endif // _FTEL_INTERNAL_TELEPHONY_IPC_PROXY_H_ diff --git a/src/inc/FTel_ConnectivityIpcMessages.h b/src/inc/FTel_ConnectivityIpcMessages.h index 21d5ebe..6821d67 100644 --- a/src/inc/FTel_ConnectivityIpcMessages.h +++ b/src/inc/FTel_ConnectivityIpcMessages.h @@ -44,7 +44,8 @@ IPC_SYNC_MESSAGE_CONTROL1_1(ConnectivityTelephonyServiceMsg_requestCallForward, IPC_SYNC_MESSAGE_CONTROL0_1(ConnectivityTelephonyServiceMsg_stopCallForward, unsigned long /* result */) IPC_SYNC_MESSAGE_CONTROL0_1(ConnectivityTelephonyServiceMsg_getCallForwardNumber, unsigned long /* result */) - +IPC_SYNC_MESSAGE_CONTROL0_1(ConnectivityTelephonyServiceMsg_addNetworkStatusEventListener, unsigned long /* result */) +IPC_SYNC_MESSAGE_CONTROL0_1(ConnectivityTelephonyServiceMsg_removeNetworkStatusEventListener, unsigned long /* result */) // Server -> Client (async) IPC_MESSAGE_CONTROL2(ConnectivityTelephonyServiceMsg_onNetworkSelectionModeReceived, bool /* isManual */, unsigned long /* result */); @@ -54,3 +55,5 @@ IPC_MESSAGE_CONTROL2(ConnectivityTelephonyServiceMsg_onCallForwardNumberReceived IPC_MESSAGE_CONTROL2(ConnectivityTelephonyServiceMsg_onCallForwardResponseReceived, Tizen::Base::String /* phone number */, unsigned long /* result */); IPC_MESSAGE_CONTROL2(ConnectivityTelephonyServiceMsg_onCallForwardStopped, Tizen::Base::String /* phone number */, unsigned long /* result */); +IPC_MESSAGE_CONTROL3(ConnectivityTelephonyServiceMsg_onNetworkStatusChanged, bool /* isCallServiceAvailable */, bool /* isDataServiceAvailable */, bool /* isRoaming */); +