merge with master
[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      */
125         result Construct(ITelephonyNetworkEventListener* pListener);
126
127         /**
128      * Gets the network status.
129      *
130      * @since           2.0
131      * @privlevel       public
132      * @privilege   http://tizen.org/privilege/telephony
133      *
134      * @return          An error code
135      * @param[out]      networkStatus   The network status
136      * @exception       E_SUCCESS       The method is successful.
137      * @exception       E_NETWORK_UNAVAILABLE   The operation has failed because the device is in the offline mode.
138      * @exception       E_SERVICE_UNAVAILABLE   The operation has failed because the device is out of the coverage area or in the emergency mode.
139      * @exception       E_SYSTEM        A system error has occurred.
140      * @exception       E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
141      */
142         result GetNetworkStatus(NetworkStatus& networkStatus) const;
143
144         /**
145      * Gets the network information.
146      *
147      * @since   2.0
148      * @privlevel       public
149      * @privilege   http://tizen.org/privilege/telephony
150      *
151      * @return  An error code
152      * @param[out]      networkInfo     The network information
153      * @exception       E_SUCCESS       The method is successful.
154      * @exception       E_NETWORK_UNAVAILABLE   The operation has failed because the device is in the offline mode.
155      * @exception       E_SERVICE_UNAVAILABLE   The operation has failed because the device is out of the coverage area or in the emergency mode.
156      * @exception       E_SYSTEM        A system error has occurred.
157      * @exception   E_PRIVILEGE_DENIED  The application does not have the privilege to call this method.
158      */
159         result GetNetworkInfo(NetworkInfo& networkInfo) const;
160
161     /**
162      * Sets the listener for receiving the responses of the search network and the network selection mode.
163      *
164      * @since 2.0
165      *
166      * @privlevel       platform
167      * @privilege   http://tizen.org/privilege/telephonymanager
168      *
169      * @return  An error code
170      * @param[in]   pListener           An instance of ITelephonyNetworkSettingListener @n
171      *                                  The parameter can be set to @c null to remove the listener.
172      * @exception   E_SUCCESS           The method is successful.
173      * @exception   E_SYSTEM            A system error has occurred.
174      * @exception   E_PRIVILEGE_DENIED  The application does not have the privilege to call this method.
175      */
176     result SetNetworkSettingListener(ITelephonyNetworkSettingListener* pListener);
177
178     /**
179      * Gets the network selection mode.
180      *
181      * @since 2.0
182      *
183      * @privlevel       platform
184      * @privilege   http://tizen.org/privilege/telephonymanager
185      *
186      * @return  An error code
187      * @exception   E_SUCCESS   The method is successful.
188      * @exception   E_OPERATION_FAILED      This request operation has failed due to an internal error.
189      * @exception   E_SYSTEM                A system error has occurred.
190      * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
191      * @see ITelephonyNetworkSettingListener::OnTelephonyNetworkSelectionModeReceived()
192      */
193     result GetNetworkSelectionMode(void);
194
195     /**
196      * Selects the manually searched network.
197      *
198      * @since 2.0
199      *
200      * @privlevel       platform
201      * @privilege   http://tizen.org/privilege/telephonymanager
202      *
203      * @return  An error code
204      * @param[out]      networkInfo     The network information
205      * @exception   E_SUCCESS   The method is successful.
206      * @exception   E_OPERATION_FAILED      This request operation has failed due to an internal error.
207      * @exception   E_SYSTEM                A system error has occurred.
208      * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
209      * @see ITelephonyNetworkSettingListener::OnTelephonyNetworkSelectionCompleted()
210      */
211     result SelectNetwork(const NetworkInfo& networkInfo);
212
213     /**
214      * Selects the network automatically.
215      *
216      * @since 2.0
217      *
218      * @privleve        platform
219      * @privilege   http://tizen.org/privilege/telephonymanager
220      *
221      * @return  An error code
222      * @exception   E_SUCCESS   The method is successful.
223      * @exception   E_OPERATION_FAILED      This request operation has failed due to an internal error.
224      * @exception   E_SYSTEM                A system error has occurred.
225      * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
226      * @see ITelephonyNetworkSettingListener::OnTelephonyNetworkSelectionCompleted()
227      */
228     result SelectNetwork(void);
229
230     /**
231      * Searches for an available network.
232      *
233      * @since 2.0
234      *
235      * @privlevel       platform
236      * @privilege   http://tizen.org/privilege/telephonymanager
237      *
238      * @return  An error code
239      * @exception   E_SUCCESS   The method is successful.
240      * @exception   E_OPERATION_FAILED      This request operation has failed due to an internal error.
241      * @exception   E_SYSTEM                A system error has occurred.
242      * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
243      * @see ITelephonyNetworkSettingListener::OnTelephonyNetworkSearchCompletedN()
244      */
245     result SearchNetwork(void);
246
247
248 private:
249         /**
250      * The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects.
251      *
252      * @param[in]       rhs     An instance of %NetworkManager
253      */
254         NetworkManager(const NetworkManager& rhs);
255
256         /**
257      * The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects.
258      *
259      * @param[in]       rhs     An instance of %NetworkManager
260      */
261         NetworkManager& operator =(const NetworkManager& rhs);
262
263 private:
264         _NetworkManagerImpl * __pNetworkManagerImpl;
265
266         friend class _NetworkManagerImpl;
267 }; // NetworkManager
268
269 }} // Tizen::Telephony
270 #endif // _FTEL_NETWORK_MANAGER_H_