Merge from 2.2
[platform/framework/native/telephony.git] / src / FTel_TelephonyIpcProxy.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 /**
19  * @file        FTel_TelephonyIpcProxy.h
20  * @brief       This is the header file for the %_TelephonyIpcProxy class.
21   *
22  * This header file contains the declarations of the %_TelephonyIpcProxy class.
23   */
24
25 #ifndef _FTEL_INTERNAL_TELEPHONY_IPC_PROXY_H_
26 #define _FTEL_INTERNAL_TELEPHONY_IPC_PROXY_H_
27
28 #include <unique_ptr.h>
29 #include <tapi_type.h>
30 #include <FBaseObject.h>
31 #include <FIo_IpcCommonDataTypes.h>
32 #include <FIo_IIpcClientEventListener.h>
33
34 namespace Tizen { namespace Base
35 {
36 class String;
37
38 namespace Runtime
39 {
40 class Mutex;
41 }
42
43 namespace Collection
44 {
45 class ArrayList;
46 }}}
47
48 namespace Tizen { namespace Io {
49 class _IpcClient;
50 } }
51
52 namespace Tizen { namespace Telephony
53 {
54
55 class _NetworkManagerImpl;
56 class _CallManagerImpl;
57 class _NetworkManagerEvent;
58
59 /**
60  * @class   _TelephonyIpcProxy
61  * @brief   This class represents an IPC proxy for %Telephony service.
62  *
63  * This class represents an IPC proxy for %Telephony service to communicate with OSP Connectivity daemon.
64  */
65 class _TelephonyIpcProxy
66         : public Tizen::Base::Object
67         , public Tizen::Io::_IIpcClientEventListener
68 {
69 public:
70
71     // from _IIpcClientEventListener
72     virtual void OnIpcResponseReceived(Tizen::Io::_IpcClient& client, const IPC::Message& message);
73
74         result Construct(void);
75         result GetImsi(Tizen::Base::String& imsi) const;
76         result HasSystemPrivilege(void);
77         result GetNetworkSelectionMode(_NetworkManagerImpl* pNetworkManagerImpl);
78         result SelectNetwork(_NetworkManagerImpl* pNetworkManagerImpl, const Tizen::Base::String& plmn, const int netwokrType);
79     result SelectNetwork(_NetworkManagerImpl* pNetworkManagerImpl);
80     result SearchNetwork(_NetworkManagerImpl* pNetworkManagerImpl);
81
82         result HasCallForwardPrivilege(void);
83     result RequestCallForward(_CallManagerImpl* pCallManagerImpl, const Tizen::Base::String& phoneNumber);
84     result StopCallForward(_CallManagerImpl* pCallManagerImpl);
85     result GetCallForwardNumber(_CallManagerImpl* pCallManagerImpl);
86
87     result AddNetworkEvent(_NetworkManagerEvent* pEvent);
88     void RemoveNetworkEvent(_NetworkManagerEvent* pEvent);
89
90     static _TelephonyIpcProxy* GetInstance(void);
91
92 private:
93         _TelephonyIpcProxy(void);
94         virtual ~_TelephonyIpcProxy(void);
95
96
97         _TelephonyIpcProxy(const _TelephonyIpcProxy& value);
98         _TelephonyIpcProxy& operator =(const _TelephonyIpcProxy& rhs);
99
100         void OnNetworkSelectionModeReceived(bool isManual, unsigned long res);
101         void OnNetworkSelectionCompleted(unsigned long res);
102         void OnNetworkSearchCompleted(Tizen::Base::String message, unsigned long res);
103
104         void OnTelephonyCallForwardNumberReceived(Tizen::Base::String phoneNumber, unsigned long res);
105         void OnTelephonyCallForwardResponseReceived(Tizen::Base::String phoneNumber, unsigned long res);
106         void OnTelephonyCallForwardStopped(Tizen::Base::String phoneNumber, unsigned long res);
107
108         void OnNetworkStatusChanged(bool isCallServiceAvailable, bool isDataServiceAvailable, bool isRoaming);
109
110         static void InitSingleton(void);
111         
112 private:
113         std::unique_ptr<Tizen::Io::_IpcClient> __pIpcClient;
114         std::unique_ptr<Tizen::Base::Runtime::Mutex> __pLock;
115         std::unique_ptr<Tizen::Base::Collection::ArrayList> __pNetworkEventList;
116         int __networkEventCount;
117         _NetworkManagerImpl* __pNetworkManagerImplForGet;
118         _NetworkManagerImpl* __pNetworkManagerImplForSelect;
119         _NetworkManagerImpl* __pNetworkManagerImplForSearch;
120         _CallManagerImpl* __pCallManagerImplForGet;
121         _CallManagerImpl* __pCallManagerImplForStart;
122         _CallManagerImpl* __pCallManagerImplForStop;
123         static _TelephonyIpcProxy* __pInstance;
124
125         friend class std::default_delete<_TelephonyIpcProxy>;
126
127 }; // _TelephonyIpcProxy
128
129 }}
130 #endif // _FTEL_INTERNAL_TELEPHONY_IPC_PROXY_H_