c08a98ced389b431e843e11287444fccdeead3e3
[platform/framework/native/telephony.git] / inc / FTelNetworkManager.h
1 //
2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
4 //
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 //     http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17 /**
18  * @file        FTelNetworkManager.h
19  * @brief       This is the header file for the %NetworkManager class.
20  *
21  * This header file contains the declarations of the %NetworkManager class.
22  */
23 #ifndef _FTEL_NETWORK_MANAGER_H_
24 #define _FTEL_NETWORK_MANAGER_H_
25
26
27 #include <FBase.h>
28 #include <FTelNetworkInfo.h>
29 #include <FTelNetworkStatus.h>
30
31
32 namespace Tizen { namespace Telephony
33 {
34 class _NetworkManagerImpl;
35 class ITelephonyNetworkEventListener;
36 class ITelephonyNetworkSettingListener;
37
38 /**
39  * @class       NetworkManager
40  * @brief       This class provides information about the current active network.
41  *
42  * @since       2.0
43  *
44  * The %NetworkManager class is used to register listeners who monitor network status changes,
45  * as well as get information about current active network.
46  *
47  * The following example demonstrates how to use the %NetworkManager class to get the network information.
48  *
49  * @code
50  *
51  *      result
52  *      MyClass::GetNetworkManagerInfo(void)
53  *      {
54  *              NetworkStatus networkStatus;
55  *              NetworkInfo networkInfo;
56  *
57  *              NetworkManager* pNetworkManager = new NetworkManager();
58  *
59  *              result r = pNetworkManager->Construct(this);
60  *              if (IsFailed(r))
61  *              {
62  *                      delete pNetworkManager;
63  *                      return r;
64  *              }
65  *
66  *              r = pNetworkManager->GetNetworkStatus(networkStatus);
67  *              if (IsFailed(r))
68  *              {
69  *                      delete pNetworkManager;
70  *                      return r;
71  *              }
72  *
73  *              r = pNetworkManager->GetNetworkInfo(networkInfo);
74  *              if (IsFailed(r))
75  *              {
76  *                      delete pNetworkManager;
77  *                      return r;
78  *              }
79  *
80  *              delete pNetworkManager;
81  *              return E_SUCCESS;
82  *      }
83  *
84  *      void
85  *      MyClass::OnTelephonyNetworkStatusChanged(const NetworkStatus& networkStatus)
86  *      {
87  *              bool isCallAvail = networkStatus.IsCallServiceAvailable();
88  *              bool isDataAvail = networkStatus.IsDataServiceAvailable();
89  *              bool isRoaming = networkStatus.IsRoaming();
90  *      }
91  *
92  * @endcode
93  */
94 class _OSP_EXPORT_ NetworkManager
95         : public Tizen::Base::Object
96 {
97 public:
98         /**
99      * 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.
100      *
101      * @since   2.0
102      */
103         NetworkManager(void);
104
105         /**
106      *  This destructor overrides Tizen::Base::Object::~Object().
107      *
108      * @since   2.0
109      */
110         virtual ~NetworkManager(void);
111
112         /**
113      *  Initializes a new instance of this class. @n
114      *  This is the two phase construction.
115          * If a @c null pointer is passed during the construction, then there
116      *  is no listener for telephony network status change callbacks.
117      *
118      * @since           2.0
119          *
120      * @return          An error code
121          * @param[in]   pListener       The listener for change in status of a telephony network
122      * @exception       E_SUCCESS               The method is successful.
123      * @exception       E_SYSTEM                A system error has occurred.
124            * @exception   E_UNSUPPORTED_OPERATION       The device does not support the telephony feature. @b Since: @b 2.1
125      */
126         result Construct(ITelephonyNetworkEventListener* pListener);
127
128         /**
129      * Gets the network status.
130      *
131      * @since           2.0
132      * @privlevel       public
133      * @privilege   %http://tizen.org/privilege/telephony
134      *
135      * @return          An error code
136      * @param[out]      networkStatus   The network status
137      * @exception       E_SUCCESS       The method is successful.
138      * @exception       E_NETWORK_UNAVAILABLE   The operation has failed because the device is in the offline mode.
139      * @exception       E_SERVICE_UNAVAILABLE   The operation has failed because the device is out of the coverage area or in the emergency mode.
140      * @exception       E_SYSTEM        A system error has occurred.
141      * @exception       E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
142      */
143         result GetNetworkStatus(NetworkStatus& networkStatus) const;
144
145         /**
146      * Gets the network information.
147      *
148      * @since   2.0
149      * @privlevel       public
150      * @privilege   %http://tizen.org/privilege/telephony
151      *
152      * @return  An error code
153      * @param[out]      networkInfo     The network information
154      * @exception       E_SUCCESS       The method is successful.
155      * @exception       E_NETWORK_UNAVAILABLE   The operation has failed because the device is in the offline mode.
156      * @exception       E_SERVICE_UNAVAILABLE   The operation has failed because the device is out of the coverage area or in the emergency mode.
157      * @exception       E_SYSTEM        A system error has occurred.
158      * @exception   E_PRIVILEGE_DENIED  The application does not have the privilege to call this method.
159      */
160         result GetNetworkInfo(NetworkInfo& networkInfo) const;
161
162     /**
163      * Sets the listener for receiving the responses of the search network and the network selection mode.
164      *
165      * @since 2.0
166      *
167      * @privlevel       platform
168      * @privilege   %http://tizen.org/privilege/telephonymanager
169      *
170      * @return  An error code
171      * @param[in]   pListener           An instance of ITelephonyNetworkSettingListener @n
172      *                                  The parameter can be set to @c null to remove the listener.
173      * @exception   E_SUCCESS           The method is successful.
174      * @exception   E_SYSTEM            A system error has occurred.
175      * @exception   E_PRIVILEGE_DENIED  The application does not have the privilege to call this method.
176      */
177     result SetNetworkSettingListener(ITelephonyNetworkSettingListener* pListener);
178
179     /**
180      * Gets the network selection mode.
181      *
182      * @since 2.0
183      *
184      * @privlevel       platform
185      * @privilege   %http://tizen.org/privilege/telephonymanager
186      *
187      * @return  An error code
188      * @exception   E_SUCCESS   The method is successful.
189      * @exception   E_OPERATION_FAILED      This request operation has failed due to an internal error.
190      * @exception   E_SYSTEM                A system error has occurred.
191      * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
192      * @see ITelephonyNetworkSettingListener::OnTelephonyNetworkSelectionModeReceived()
193      */
194     result GetNetworkSelectionMode(void);
195
196     /**
197      * Selects the manually searched network.
198      *
199      * @since 2.0
200      *
201      * @privlevel       platform
202      * @privilege   %http://tizen.org/privilege/telephonymanager
203      *
204      * @return  An error code
205      * @param[out]      networkInfo     The network information
206      * @exception   E_SUCCESS   The method is successful.
207      * @exception   E_OPERATION_FAILED      This request operation has failed due to an internal error.
208      * @exception   E_SYSTEM                A system error has occurred.
209      * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
210      * @see ITelephonyNetworkSettingListener::OnTelephonyNetworkSelectionCompleted()
211      */
212     result SelectNetwork(const NetworkInfo& networkInfo);
213
214     /**
215      * Selects the network automatically.
216      *
217      * @since 2.0
218      *
219      * @privleve        platform
220      * @privilege   %http://tizen.org/privilege/telephonymanager
221      *
222      * @return  An error code
223      * @exception   E_SUCCESS   The method is successful.
224      * @exception   E_OPERATION_FAILED      This request operation has failed due to an internal error.
225      * @exception   E_SYSTEM                A system error has occurred.
226      * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
227      * @see ITelephonyNetworkSettingListener::OnTelephonyNetworkSelectionCompleted()
228      */
229     result SelectNetwork(void);
230
231     /**
232      * Searches for an available network.
233      *
234      * @since 2.0
235      *
236      * @privlevel       platform
237      * @privilege   %http://tizen.org/privilege/telephonymanager
238      *
239      * @return  An error code
240      * @exception   E_SUCCESS   The method is successful.
241      * @exception   E_OPERATION_FAILED      This request operation has failed due to an internal error.
242      * @exception   E_SYSTEM                A system error has occurred.
243      * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
244      * @see ITelephonyNetworkSettingListener::OnTelephonyNetworkSearchCompletedN()
245      */
246     result SearchNetwork(void);
247
248
249 private:
250         /**
251      * The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects.
252      *
253      * @param[in]       rhs     An instance of %NetworkManager
254      */
255         NetworkManager(const NetworkManager& rhs);
256
257         /**
258      * The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects.
259      *
260      * @param[in]       rhs     An instance of %NetworkManager
261      */
262         NetworkManager& operator =(const NetworkManager& rhs);
263
264 private:
265         _NetworkManagerImpl * __pNetworkManagerImpl;
266
267         friend class _NetworkManagerImpl;
268 }; // NetworkManager
269
270 }} // Tizen::Telephony
271 #endif // _FTEL_NETWORK_MANAGER_H_