31 * @since S60 3.2 |
31 * @since S60 3.2 |
32 */ |
32 */ |
33 class MCCPCallObserver |
33 class MCCPCallObserver |
34 { |
34 { |
35 public: |
35 public: |
36 /** Call states */ |
36 /** Call states */ |
37 enum TCCPCallState |
37 enum TCCPCallState |
38 { |
38 { |
39 /** Indicates initial call state after call creation. Basic state. */ |
39 /** Indicates initial call state after call creation. Basic state. */ |
40 ECCPStateIdle, |
40 ECCPStateIdle, |
41 /** Indicates that the MT call is ringing but not answered yet by the local user. Basic state.*/ |
41 /** Indicates that the MT call is ringing but not answered yet by the local user. Basic state.*/ |
42 ECCPStateRinging, |
42 ECCPStateRinging, |
43 /** MO Call: the network notifies to the MS that the remote party is now ringing. Basic state.*/ |
43 /** MO Call: the network notifies to the MS that the remote party is now ringing. Basic state.*/ |
44 ECCPStateConnecting, |
44 ECCPStateConnecting, |
45 /** Indicates that call is connected and active. Basic state.*/ |
45 /** Indicates that call is connected and active. Basic state.*/ |
46 ECCPStateConnected, |
46 ECCPStateConnected, |
47 /** Indicates that call is disconnecting. Basic state.*/ |
47 /** Indicates that call is disconnecting. Basic state.*/ |
48 ECCPStateDisconnecting, |
48 ECCPStateDisconnecting, |
49 /** Indicates that the call is connected but on hold. Basic state.*/ |
49 /** Indicates that the call is connected but on hold. Basic state.*/ |
50 ECCPStateHold, |
50 ECCPStateHold, |
51 |
51 |
52 /** Call is transfering. Optional state.*/ |
52 /** Call is transfering. Optional state.*/ |
53 ECCPStateTransferring, |
53 ECCPStateTransferring, |
54 /** MO call is being forwarded at receiver end. Optional state. */ |
54 /** MO call is being forwarded at receiver end. Optional state. */ |
55 ECCPStateForwarding, |
55 ECCPStateForwarding, |
56 /** Call is queued locally. Optional state. */ |
56 /** Call is queued locally. Optional state. */ |
57 ECCPStateQueued, |
57 ECCPStateQueued, |
58 |
58 |
59 /** Indicates that the local user has answered the MT call but the network has not |
59 /** Indicates that the local user has answered the MT call but the network has not |
60 acknowledged the call connection yet. Must be sent after MCCPCall::Answer method has been completed. */ |
60 acknowledged the call connection yet. Must be sent after MCCPCall::Answer method has been completed. */ |
61 ECCPStateAnswering, |
61 ECCPStateAnswering, |
62 |
62 |
63 /** Indicates that the call is dialing. Must be sent after MCCPCall::Dial method has been completed. */ |
63 /** Indicates that the call is dialing. Must be sent after MCCPCall::Dial method has been completed. */ |
64 ECCPStateDialling, |
64 ECCPStateDialling, |
65 |
65 |
66 }; |
66 }; |
67 |
67 |
68 /** Describes the possible call events. */ |
68 /** Describes the possible call events. */ |
69 enum TCCPCallEvent |
69 enum TCCPCallEvent |
70 { |
70 { |
71 /** Call has been placed on hold as a result of a local action. */ |
71 /** Call has been placed on hold as a result of a local action. */ |
72 ECCPLocalHold, |
72 ECCPLocalHold, |
73 /** Call has been placed on hold by the remote connected party. */ |
73 /** Call has been placed on hold by the remote connected party. */ |
74 ECCPRemoteHold, |
74 ECCPRemoteHold, |
75 /** Call has been resumed as a result of a local action. */ |
75 /** Call has been resumed as a result of a local action. */ |
76 ECCPLocalResume, |
76 ECCPLocalResume, |
77 /** Call has been resumed by the remote connected party. */ |
77 /** Call has been resumed by the remote connected party. */ |
78 ECCPRemoteResume, |
78 ECCPRemoteResume, |
79 /** Outgoing call has been barred by the local party. */ |
79 /** Outgoing call has been barred by the local party. */ |
80 ECCPLocalBarred, |
80 ECCPLocalBarred, |
81 /** Outgoing call has been barred by the remote party. */ |
81 /** Outgoing call has been barred by the remote party. */ |
82 ECCPRemoteBarred, |
82 ECCPRemoteBarred, |
83 /** Call is waiting at the remote end. Obsolote, use supplementary service ESsCallWaiting */ |
83 /** Call is waiting at the remote end. Obsolote, use supplementary service ESsCallWaiting */ |
84 ECCPRemoteWaiting, |
84 ECCPRemoteWaiting, |
85 /** Call has been terminated by the remote party. */ |
85 /** Call has been terminated by the remote party. */ |
86 ECCPRemoteTerminated, |
86 ECCPRemoteTerminated, |
87 /** Call is in queue */ |
87 /** Call is in queue */ |
88 ECCPQueued, |
88 ECCPQueued, |
89 |
89 |
90 /** VoIP specific */ |
90 /** VoIP specific */ |
91 ECCCSPEarlyMediaStarted, |
91 ECCCSPEarlyMediaStarted, |
92 |
92 |
93 /** Call is secure */ |
93 /** Call is secure */ |
94 ECCPSecureCall, |
94 ECCPSecureCall, |
95 /** Call is not secure */ |
95 /** Call is not secure */ |
96 ECCPNotSecureCall, |
96 ECCPNotSecureCall, |
97 |
97 |
98 /** VoIP specific |
98 /** VoIP specific |
99 User has called with address containing "SIPS:" prefix. This event notifies that |
99 User has called with address containing "SIPS:" prefix. This event notifies that |
100 secure call signaling is not possible. **/ |
100 secure call signaling is not possible. **/ |
101 ECCPNotSecureSessionWithSips, |
101 ECCPNotSecureSessionWithSips, |
102 |
102 |
103 /** Call has been added to remote conference call at remote end */ |
103 /** Call has been added to remote conference call at remote end */ |
104 ECCPRemoteConferenceCreate, |
104 ECCPRemoteConferenceCreate, |
105 |
105 |
106 //////////////////////////// |
106 //////////////////////////// |
107 // CS call specific events |
107 // CS call specific events |
108 /////////////////////////// |
108 /////////////////////////// |
109 |
109 |
110 /** CS call specific event */ |
110 /** CS call specific event */ |
111 ECCPCSDataPortLoaned, |
111 ECCPCSDataPortLoaned, |
112 /** CS call specific event */ |
112 /** CS call specific event */ |
113 ECCPCSDataPortRecovered, |
113 ECCPCSDataPortRecovered, |
114 |
114 |
115 /** One or more of following information has been changed |
115 /** One or more of following information has been changed |
116 * - Remote party name |
116 * - Remote party name |
117 * - Remote party number/address |
117 * - Remote party number/address |
118 * - Call parameters ( ie. service id ) |
118 * - Call parameters ( ie. service id ) |
119 */ |
119 */ |
120 ECCPNotifyRemotePartyInfoChange, |
120 ECCPNotifyRemotePartyInfoChange, |
121 |
121 |
122 /** Call secure status cannot be determined */ |
122 /** Call secure status cannot be determined */ |
123 ECCPSecureNotSpecified |
123 ECCPSecureNotSpecified |
124 }; |
124 }; |
125 |
125 |
126 |
126 |
127 /** Flags indicating all the possible call control capabilities. */ |
127 /** Flags indicating all the possible call control capabilities. */ |
128 enum TCCPCallControlCaps |
128 enum TCCPCallControlCaps |
129 { |
129 { |
130 /** Call supports data calls. */ |
130 /** Call supports data calls. */ |
131 ECCPCapsData = 0x00000001, |
131 ECCPCapsData = 0x00000001, |
132 /** Call supports fax calls. */ |
132 /** Call supports fax calls. */ |
133 ECCPCapsFax = 0x00000002, |
133 ECCPCapsFax = 0x00000002, |
134 /** Call supports voice calls. */ |
134 /** Call supports voice calls. */ |
135 ECCPCapsVoice = 0x00000004, |
135 ECCPCapsVoice = 0x00000004, |
136 /** The Dial request is currently a valid action. */ |
136 /** The Dial request is currently a valid action. */ |
137 ECCPCapsDial = 0x00000008, |
137 ECCPCapsDial = 0x00000008, |
138 /** The Connect request is currently a valid action. */ |
138 /** The Connect request is currently a valid action. */ |
139 ECCPCapsConnect = 0x00000010, |
139 ECCPCapsConnect = 0x00000010, |
140 /** The Hang Up request is currently a valid action. */ |
140 /** The Hang Up request is currently a valid action. */ |
141 ECCPCapsHangUp = 0x00000020, |
141 ECCPCapsHangUp = 0x00000020, |
142 /** The Answer request is currently a valid action. */ |
142 /** The Answer request is currently a valid action. */ |
143 ECCPCapsAnswer = 0x00000040, |
143 ECCPCapsAnswer = 0x00000040, |
144 /** The Loan Data Port request is currently a valid action. */ |
144 /** The Loan Data Port request is currently a valid action. */ |
145 ECCPCapsLoanDataPort = 0x00000080, |
145 ECCPCapsLoanDataPort = 0x00000080, |
146 /** The Recover Data Port request is currently a valid action. */ |
146 /** The Recover Data Port request is currently a valid action. */ |
147 ECCPCapsRecoverDataPort= 0x00000100, |
147 ECCPCapsRecoverDataPort= 0x00000100, |
148 /** Indicates that this call can be put on hold. This implies that the call is currently |
148 /** Indicates that this call can be put on hold. This implies that the call is currently |
149 active and that there is no other held call. */ |
149 active and that there is no other held call. */ |
150 ECCPCapsHold = 0x00000200, |
150 ECCPCapsHold = 0x00000200, |
151 /** Indicates that this call can be resumed. This implies that the call is currently |
151 /** Indicates that this call can be resumed. This implies that the call is currently |
152 on hold and that there is no other active call. */ |
152 on hold and that there is no other active call. */ |
153 ECCPCapsResume = 0x00000400, |
153 ECCPCapsResume = 0x00000400, |
154 /** Indicates that this call's state can be swapped to the opposite state. This |
154 /** Indicates that this call's state can be swapped to the opposite state. This |
155 implies that this call is either active or held. There may be another call |
155 implies that this call is either active or held. There may be another call |
156 in the opposite state and if this is the case then both calls will be simultaneously |
156 in the opposite state and if this is the case then both calls will be simultaneously |
157 swapped to their opposite state. */ |
157 swapped to their opposite state. */ |
158 ECCPCapsSwap = 0x00000800, |
158 ECCPCapsSwap = 0x00000800, |
159 /** Indicates that this incoming call can be deflected to another destination.*/ |
159 /** Indicates that this incoming call can be deflected to another destination.*/ |
160 ECCPCapsDeflect = 0x00001000, |
160 ECCPCapsDeflect = 0x00001000, |
161 /** Indicates that this call can be transferred to the remote party of another call. |
161 /** Indicates that this call can be transferred to the remote party of another call. |
162 For this capability to be set there must be one active call and one held or |
162 For this capability to be set there must be one active call and one held or |
163 dialing call.*/ |
163 dialing call.*/ |
164 ECCPCapsTransfer = 0x00002000, |
164 ECCPCapsTransfer = 0x00002000, |
165 /** Indicates that this call can be joined either to another single call to form |
165 /** Indicates that this call can be joined either to another single call to form |
166 a conference call or to an existing conference call.*/ |
166 a conference call or to an existing conference call.*/ |
167 ECCPCapsJoin = 0x00004000, |
167 ECCPCapsJoin = 0x00004000, |
168 /** Indicates that this call (within a conference call) can go into One to One mode. |
168 /** Indicates that this call (within a conference call) can go into One to One mode. |
169 This action would put the rest of the conference call on hold. */ |
169 This action would put the rest of the conference call on hold. */ |
170 ECCPCapsOneToOne = 0x00008000, |
170 ECCPCapsOneToOne = 0x00008000, |
171 /** Indicates that the user can activate a CCBS request on this failed call set-up.*/ |
171 /** Indicates that the user can activate a CCBS request on this failed call set-up.*/ |
172 ECCPCapsActivateCCBS = 0x00010000, |
172 ECCPCapsActivateCCBS = 0x00010000, |
173 /** Indicates that this call is part of an alternating call and the client can call |
173 /** Indicates that this call is part of an alternating call and the client can call |
174 SwitchAlternatingCall() on this call in order to switch it to its other mode.*/ |
174 SwitchAlternatingCall() on this call in order to switch it to its other mode.*/ |
175 ECCPCapsSwitchAlternatingCall = 0x00020000, |
175 ECCPCapsSwitchAlternatingCall = 0x00020000, |
176 /** Indicates that this call can use/create a new bearer. This means that multiple |
176 /** Indicates that this call can use/create a new bearer. This means that multiple |
177 calls (multicall) can be active at the same time using no more that 7 bearers |
177 calls (multicall) can be active at the same time using no more that 7 bearers |
178 simultaneously. The other option is to swap with an active call, therefore |
178 simultaneously. The other option is to swap with an active call, therefore |
179 it becomes held and shares the same bearer.*/ |
179 it becomes held and shares the same bearer.*/ |
180 ECCPCapsMulticall = 0x00040000, |
180 ECCPCapsMulticall = 0x00040000, |
181 /** Indicates that this call is an packet switched call */ |
181 /** Indicates that this call is an packet switched call */ |
182 ECCPCapsPSCall = 0x00080000, |
182 ECCPCapsPSCall = 0x00080000, |
183 /** Indicates that this call supports unattended transfer method and that this call |
183 /** Indicates that this call supports unattended transfer method and that this call |
184 is currently active */ |
184 is currently active */ |
185 ECCPCapsUnattendedTransfer = 0x00100000, |
185 ECCPCapsUnattendedTransfer = 0x00100000, |
186 /** Indicates that a conference call can be created. */ |
186 /** Indicates that a conference call can be created. */ |
187 KCCPCapsCreate = 0x00200000 |
187 KCCPCapsCreate = 0x00200000 |
188 }; |
188 }; |
189 |
189 |
190 |
190 |
191 protected: |
191 protected: |
192 /** |
192 /** |
193 * Protects the observer being deleted through the observer interface |
193 * Protects the observer being deleted through the observer interface |
194 * @since S60 3.2 |
194 * @since S60 3.2 |
195 */ |
195 */ |
196 virtual inline ~MCCPCallObserver() {}; |
196 virtual inline ~MCCPCallObserver() {}; |
197 |
197 |
198 public: |
198 public: |
199 /** |
199 /** |
200 * An error has occurred concerning a specific call. |
200 * An error has occurred concerning a specific call. |
201 * @since S60 3.2 |
201 * @since S60 3.2 |
202 * @param aError Error code. |
202 * @param aError Error code. |
203 * @param aCall Pointer to used ccp call, can be NULL in emergency call |
203 * @param aCall Pointer to used ccp call, can be NULL in emergency call |
204 * @return none |
204 * @return none |
205 */ |
205 */ |
206 virtual void ErrorOccurred( const TCCPError aError, MCCPCall* aCall ) = 0; |
206 virtual void ErrorOccurred( const TCCPError aError, MCCPCall* aCall ) = 0; |
207 |
207 |
208 /** |
208 /** |
209 * The state of the call has changed. |
209 * The state of the call has changed. |
210 * @since S60 3.2 |
210 * @since S60 3.2 |
211 * @param aState Call state. |
211 * @param aState Call state. |
212 * @param aCall Pointer to used ccp call, can be NULL in emergency call |
212 * @param aCall Pointer to used ccp call, can be NULL in emergency call |
213 * @return none |
213 * @return none |
214 */ |
214 */ |
215 virtual void CallStateChanged( const MCCPCallObserver::TCCPCallState aState, |
215 virtual void CallStateChanged( const MCCPCallObserver::TCCPCallState aState, |
216 MCCPCall* aCall) = 0; |
216 MCCPCall* aCall) = 0; |
217 |
217 |
218 /** |
218 /** |
219 * The state of the call has changed with inband tone, meaning network is playing |
219 * The state of the call has changed with inband tone, meaning network is playing |
220 * the tone relating to the state. |
220 * the tone relating to the state. |
221 * @since S60 3.2 |
221 * @since S60 3.2 |
222 * @param aState Call state. |
222 * @param aState Call state. |
223 * @param aCall Pointer to used ccp call, can be NULL in emergency call |
223 * @param aCall Pointer to used ccp call, can be NULL in emergency call |
224 * @return none |
224 * @return none |
225 */ |
225 */ |
226 virtual void CallStateChangedWithInband( const MCCPCallObserver::TCCPCallState aState, |
226 virtual void CallStateChangedWithInband( const MCCPCallObserver::TCCPCallState aState, |
227 MCCPCall* aCall ) = 0; |
227 MCCPCall* aCall ) = 0; |
228 |
228 |
229 /** |
229 /** |
230 * An event has occurred concerning a specific call. |
230 * An event has occurred concerning a specific call. |
231 * @since S60 3.2 |
231 * @since S60 3.2 |
232 * @param aEvent Occurred event. |
232 * @param aEvent Occurred event. |
233 * @param aCall Pointer to used ccp call, can be NULL in emergency call |
233 * @param aCall Pointer to used ccp call, can be NULL in emergency call |
234 * @return none |
234 * @return none |
235 */ |
235 */ |
236 virtual void CallEventOccurred( const MCCPCallObserver::TCCPCallEvent aEvent, |
236 virtual void CallEventOccurred( const MCCPCallObserver::TCCPCallEvent aEvent, |
237 MCCPCall* aCall ) = 0; |
237 MCCPCall* aCall ) = 0; |
238 |
238 |
239 /** |
239 /** |
240 * Notifies changed call capabilities. |
240 * Notifies changed call capabilities. |
241 * @since S60 3.2 |
241 * @since S60 3.2 |
242 * @param aCapsFlags New capabilities for the call |
242 * @param aCapsFlags New capabilities for the call |
243 * @param aCall Pointer to used ccp call, can be NULL in emergency call |
243 * @param aCall Pointer to used ccp call, can be NULL in emergency call |
244 * @return none |
244 * @return none |
245 */ |
245 */ |
246 virtual void CallCapsChanged( const TUint32 aCapsFlags, |
246 virtual void CallCapsChanged( const TUint32 aCapsFlags, |
247 MCCPCall* aCall ) = 0; |
247 MCCPCall* aCall ) = 0; |
248 }; |
248 }; |
249 |
249 |
250 #endif // MCCPCALLOBSERVER_H |
250 #endif // MCCPCALLOBSERVER_H |
251 |
251 |
252 // End of File |
252 // End of File |