|
1 // Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). |
|
2 // All rights reserved. |
|
3 // This component and the accompanying materials are made available |
|
4 // under the terms of "Eclipse Public License v1.0" |
|
5 // which accompanies this distribution, and is available |
|
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
7 // |
|
8 // Initial Contributors: |
|
9 // Nokia Corporation - initial contribution. |
|
10 // |
|
11 // Contributors: |
|
12 // |
|
13 // Description: |
|
14 // Contains method implementations for RMobileCall subsession |
|
15 // |
|
16 // |
|
17 |
|
18 /** |
|
19 @file |
|
20 */ |
|
21 |
|
22 #include <etelext.h> |
|
23 #include <etelmm.h> |
|
24 #include <et_clsvr.h> |
|
25 #include "mm_hold.h" |
|
26 |
|
27 /************************************************************************/ |
|
28 // |
|
29 // RMobileCall |
|
30 // |
|
31 /************************************************************************/ |
|
32 |
|
33 EXPORT_C RMobileCall::RMobileCall() |
|
34 : iMmPtrHolder(NULL) |
|
35 /** Default constructor, and is present only to support virtual |
|
36 function table export. |
|
37 This member is internal and not intended use. */ |
|
38 { |
|
39 } |
|
40 |
|
41 EXPORT_C void RMobileCall::ConstructL() |
|
42 { |
|
43 RCall::ConstructL(); |
|
44 __ASSERT_ALWAYS(iMmPtrHolder==NULL,PanicClient(EEtelPanicHandleNotClosed)); |
|
45 iMmPtrHolder = CMobileCallPtrHolder::NewL(CMobileCallPtrHolder::EMaxNumberCallPtrSlots,CMobileCallPtrHolder::EMaxNumberCallPtrCSlots); |
|
46 } |
|
47 |
|
48 EXPORT_C void RMobileCall::Destruct() |
|
49 { |
|
50 RCall::Destruct(); |
|
51 delete iMmPtrHolder; |
|
52 iMmPtrHolder = NULL; |
|
53 } |
|
54 |
|
55 EXPORT_C RMobileCall::TMobileCallParamsV1::TMobileCallParamsV1() |
|
56 : RCall::TCallParams(), |
|
57 iIdRestrict(EIdRestrictDefault), |
|
58 iAutoRedial(EFalse) |
|
59 { |
|
60 iCug.iExplicitInvoke = EFalse; |
|
61 iCug.iCugIndex = 0; |
|
62 iCug.iSuppressOA = EFalse; |
|
63 iCug.iSuppressPrefCug = EFalse; |
|
64 iExtensionId = KETelMobileCallParamsV1; //overwrite iExtensionId setup in RCall::TCallParams c'tor |
|
65 } |
|
66 |
|
67 EXPORT_C RMobileCall::TMobileCallParamsV2::TMobileCallParamsV2() |
|
68 : TMobileCallParamsV1(), |
|
69 iBearerMode(EMulticallNotSupported) |
|
70 /** Default constructor. The bearer mode is set to EMulticallNotSupported. */ |
|
71 { |
|
72 iExtensionId = KETelMobileCallParamsV2; //overwrite iExtensionId setup in RCall::TCallParams c'tor |
|
73 } |
|
74 |
|
75 EXPORT_C RMobileCall::TMobileCallParamsV7::TMobileCallParamsV7() |
|
76 : TMobileCallParamsV2(), |
|
77 iCallParamOrigin(EOriginatorUnknown), |
|
78 iBCRepeatIndicator(EBCAlternateMode) |
|
79 { |
|
80 iExtensionId = KETelMobileCallParamsV7; |
|
81 iIconId.iQualifier = EIconQualifierNotSet; |
|
82 iIconId.iIdentifier = 0; |
|
83 } |
|
84 |
|
85 |
|
86 /***********************************************************************************/ |
|
87 // |
|
88 // MobileDataCall Functional Unit |
|
89 // |
|
90 /***********************************************************************************/ |
|
91 |
|
92 EXPORT_C RMobileCall::TMobileCallCugV1::TMobileCallCugV1() : |
|
93 iExplicitInvoke(EFalse), |
|
94 iCugIndex(0), |
|
95 iSuppressOA(EFalse), |
|
96 iSuppressPrefCug(EFalse) |
|
97 /** Default constructor, and is present only to support virtual |
|
98 function table export. */ |
|
99 { |
|
100 iExtensionId = KETelExtMultimodeV1; |
|
101 } |
|
102 |
|
103 EXPORT_C RMobileCall::TMobileCallDataCapsV1::TMobileCallDataCapsV1() : |
|
104 iSpeedCaps(0), |
|
105 iProtocolCaps(0), |
|
106 iServiceCaps(0), |
|
107 iQoSCaps(0), |
|
108 iHscsdSupport(EFalse), |
|
109 iMClass(0), |
|
110 iMaxRxTimeSlots(0), |
|
111 iMaxTxTimeSlots(0), |
|
112 iTotalRxTxTimeSlots(0), |
|
113 iCodingCaps(0), |
|
114 iAsymmetryCaps(0), |
|
115 iUserInitUpgrade(EFalse), |
|
116 iRLPVersionCaps(0), |
|
117 iV42bisCaps(0) |
|
118 /** Default constructor, and is present only to support virtual |
|
119 function table export. */ |
|
120 { |
|
121 iExtensionId = KETelExtMultimodeV1; |
|
122 } |
|
123 |
|
124 EXPORT_C TInt RMobileCall::GetMobileDataCallCaps(TDes8& aCaps) const |
|
125 /** Gets the current data call capabilities. The data capabilities |
|
126 provide clients with knowledge of which data call parameter values they can |
|
127 then set-up or negotiate for this call. |
|
128 |
|
129 @param aCaps On completion, contains the current snapshot of the call's circuit |
|
130 switched data capabilities. The capabilities will be placed in an instance |
|
131 of the TMobileCallDataCapsV1Pckg. |
|
132 @return KErrNone if the function member was successful, KErrNotSupported if |
|
133 call does not support circuit switched data, KErrNotFound if this |
|
134 call is not a data call. |
|
135 @capability None |
|
136 */ |
|
137 { |
|
138 return Get(EMobileCallGetMobileDataCallCaps,aCaps); |
|
139 } |
|
140 |
|
141 EXPORT_C void RMobileCall::NotifyMobileDataCallCapsChange(TRequestStatus& aReqStatus, TDes8& aCaps) const |
|
142 /** Allows clients to be notified of a change in the call's data capabilities. |
|
143 |
|
144 The data capabilities of a call can change if the phone changes mode before |
|
145 the call moves out of the idle state. |
|
146 |
|
147 Use RTelSubSessionBase::CancelAsyncRequest(EMobileCallNotifyMobileDataCallCapsChange) |
|
148 to cancel a previously placed asynchronous NotifyMobileDataCallCapsChange() |
|
149 request. |
|
150 |
|
151 @param aReqStatus KErrNone if successful, otherwise another of the system-wide |
|
152 error codes. |
|
153 @param aCaps On completion, contains the current snapshot of the call's circuit |
|
154 switched data capabilities. The new capabilities will be placed in an instance |
|
155 of the TMobileCallDataCapsV1 type. This class will have been packaged into |
|
156 a TMobileCallDataCapsV1Pckg. |
|
157 @capability None |
|
158 */ |
|
159 { |
|
160 Get(EMobileCallNotifyMobileDataCallCapsChange,aReqStatus,aCaps); |
|
161 } |
|
162 |
|
163 EXPORT_C RMobileCall::TMobileDataRLPRangesV1::TMobileDataRLPRangesV1() : |
|
164 iIWSMax(0), |
|
165 iIWSMin(0), |
|
166 iMWSMax(0), |
|
167 iMWSMin(0), |
|
168 iT1Max(0), |
|
169 iT1Min(0), |
|
170 iN2Max(0), |
|
171 iN2Min(0), |
|
172 iT4Max(0), |
|
173 iT4Min(0) |
|
174 /** Default constructor, and is present only to support virtual |
|
175 function table export. */ |
|
176 { |
|
177 iExtensionId = KETelExtMultimodeV1; |
|
178 } |
|
179 |
|
180 EXPORT_C void RMobileCall::GetMobileDataCallRLPRange(TRequestStatus& aReqStatus, TInt aRLPVersion, TDes8& aRLPRange) const |
|
181 /** Gets the minimum and maximum RLP parameter ranges supported |
|
182 by the phone for the specified RLP version. |
|
183 |
|
184 Use RTelSubSessionBase::CancelAsyncRequest(EMobileCallGetMobileDataCallRLPRange)with |
|
185 to cancel a previously placed asynchronous GetMobileDataCallRLPRange() request. |
|
186 |
|
187 @param aReqStatus KErrNone if the function member was successful, KErrNotSupported |
|
188 if the phone does not support the RLP version interrogated. |
|
189 @param aRLPVersion The requested RLP version. |
|
190 @param aRLPRange On completion, a descriptor that will contain the RLP parameter |
|
191 ranges. The capabilities will be packaged into a TMobileDataRLPRangesV1Pckg. |
|
192 @capability NetworkControl |
|
193 @capability ReadDeviceData |
|
194 |
|
195 @see TMobileDataRLPRangesV1Pckg |
|
196 @see TMobileDataRLPRangesV1 |
|
197 */ |
|
198 { |
|
199 __ASSERT_ALWAYS(iMmPtrHolder!=NULL,PanicClient(EEtelPanicNullHandle)); |
|
200 |
|
201 iMmPtrHolder->iRLPVersion = aRLPVersion; |
|
202 TPtrC8& ptr1=iMmPtrHolder->SetC(CMobileCallPtrHolder::ESlot1GetMobileDataCallRLPRange, iMmPtrHolder->iRLPVersion); |
|
203 |
|
204 SetAndGet(EMobileCallGetMobileDataCallRLPRange, aReqStatus, ptr1, aRLPRange); |
|
205 } |
|
206 |
|
207 EXPORT_C RMobileCall::TMobileDataCallParamsV1::TMobileDataCallParamsV1() |
|
208 : TMobileCallParamsV1(), |
|
209 iService(EServiceUnspecified), |
|
210 iSpeed(ESpeedUnspecified), |
|
211 iProtocol(EProtocolUnspecified), |
|
212 iQoS(EQoSUnspecified), |
|
213 iRLPVersion(ERLPNotRequested), |
|
214 iModemToMSWindowSize(0), |
|
215 iMSToModemWindowSize(0), |
|
216 iAckTimer(0), |
|
217 iRetransmissionAttempts(0), |
|
218 iResequencingPeriod(0), |
|
219 iV42bisReq(EV42bisNeitherDirection), |
|
220 iV42bisCodewordsNum(0), |
|
221 iV42bisMaxStringLength(0), |
|
222 iUseEdge(0) |
|
223 /** |
|
224 Default constructor, and is present only to support virtual |
|
225 function table export. |
|
226 */ |
|
227 { |
|
228 iExtensionId = KETelMobileDataCallParamsV1; //overwrite iExtensionId setup in TMobileCallParamsV1 c'tor |
|
229 } |
|
230 |
|
231 EXPORT_C RMobileCall::TMobileDataCallParamsV2::TMobileDataCallParamsV2() |
|
232 : TMobileDataCallParamsV1(), |
|
233 iBearerMode(EMulticallNotSupported) |
|
234 /** Default constructor. The bearer mode is set to EMulticallNotSupported. */ |
|
235 { |
|
236 iExtensionId = KETelMobileDataCallParamsV2; //overwrite iExtensionId setup in TMobileCallParamsV2 c'tor |
|
237 } |
|
238 |
|
239 EXPORT_C RMobileCall::TMobileDataCallParamsV8::TMobileDataCallParamsV8() |
|
240 : TMobileDataCallParamsV2(), |
|
241 iCallParamOrigin(EOriginatorUnknown), |
|
242 iBCRepeatIndicator(EBCAlternateMode) |
|
243 /** Default constructor. The call origin is initialized to EOriginatorUnknown. */ |
|
244 { |
|
245 iExtensionId = KETelMobileDataCallParamsV8; |
|
246 iIconId.iQualifier = EIconQualifierNotSet; |
|
247 iIconId.iIdentifier = 0; |
|
248 } |
|
249 |
|
250 EXPORT_C RMobileCall::TMobileHscsdCallParamsV1::TMobileHscsdCallParamsV1() |
|
251 : TMobileDataCallParamsV1(), |
|
252 iWantedAiur(EAiurBpsUnspecified), |
|
253 iWantedRxTimeSlots(0), |
|
254 iMaxTimeSlots(0), |
|
255 iCodings(0), |
|
256 iAsymmetry(EAsymmetryNoPreference), |
|
257 iUserInitUpgrade(EFalse) |
|
258 /** Default constructor, and is present only to support virtual |
|
259 function table export. */ |
|
260 { |
|
261 iExtensionId = KETelMobileHscsdCallParamsV1; //overwrite iExtensionId setup in TMobileDataCallParamsV1 c'tor |
|
262 } |
|
263 |
|
264 |
|
265 EXPORT_C RMobileCall::TMobileHscsdCallParamsV2::TMobileHscsdCallParamsV2() |
|
266 : TMobileHscsdCallParamsV1(), |
|
267 iBearerMode(EMulticallNotSupported) |
|
268 /** Default constructor. The bearer mode defaults to EMulticallNotSupported. */ |
|
269 { |
|
270 iExtensionId = KETelMobileHscsdCallParamsV2; //overwrite iExtensionId setup in TMobileDataCallParamsV2 c'tor |
|
271 } |
|
272 |
|
273 EXPORT_C RMobileCall::TMobileHscsdCallParamsV7::TMobileHscsdCallParamsV7() |
|
274 : TMobileHscsdCallParamsV2(), |
|
275 iCallParamOrigin(EOriginatorUnknown) |
|
276 /** Default constructor. The call origin is set to EOriginatorUnknown by default. */ |
|
277 { |
|
278 iExtensionId = KETelMobileHscsdCallParamsV7; |
|
279 iIconId.iQualifier = EIconQualifierNotSet; |
|
280 iIconId.iIdentifier = 0; |
|
281 } |
|
282 EXPORT_C RMobileCall::TMobileHscsdCallParamsV8::TMobileHscsdCallParamsV8() |
|
283 : TMobileHscsdCallParamsV7(), |
|
284 iBCRepeatIndicator(EBCAlternateMode) |
|
285 /** Default constructor. The BC Repeat Indicator is initialized to EBCAlternateMode. */ |
|
286 { |
|
287 iExtensionId = KETelMobileHscsdCallParamsV8; |
|
288 } |
|
289 EXPORT_C void RMobileCall::SetDynamicHscsdParams(TRequestStatus& aReqStatus, TMobileCallAiur aAiur, TInt aRxTimeslots) const |
|
290 /** Sets the call's dynamic HSCSD parameters. |
|
291 |
|
292 This request can be used before call set-up starts or during call connection. |
|
293 If the call is not a HSCSD call then KErrNotSupported is returned. |
|
294 |
|
295 Use RTelSubSessionBase::CancelAsyncRequest(EMobileCallSetDynamicHscsdParams) |
|
296 to cancel a previously placed asynchronous SetDynamicHscsdParams() request. |
|
297 |
|
298 @param aReqStatus KErrNone if the function member was successful, KErrNotSupported |
|
299 if the phone does not support the RLP version interrogated. |
|
300 @param aAiur Wanted air interface user rate. |
|
301 @param aRxTimeslots Wanted number of receive (downlink) timeslots. |
|
302 @capability NetworkServices |
|
303 */ |
|
304 { |
|
305 __ASSERT_ALWAYS(iMmPtrHolder!=NULL,PanicClient(EEtelPanicNullHandle)); |
|
306 |
|
307 iMmPtrHolder->iAiur = aAiur; |
|
308 TPtrC8& ptr1=iMmPtrHolder->SetC(CMobileCallPtrHolder::ESlot1SetDynamicHscsdParams, iMmPtrHolder->iAiur); |
|
309 |
|
310 iMmPtrHolder->iRxTimeslots = aRxTimeslots; |
|
311 TPtrC8& ptr2=iMmPtrHolder->SetC(CMobileCallPtrHolder::ESlot2SetDynamicHscsdParams, iMmPtrHolder->iRxTimeslots); |
|
312 |
|
313 Set(EMobileCallSetDynamicHscsdParams,aReqStatus,ptr1,ptr2); |
|
314 } |
|
315 |
|
316 EXPORT_C RMobileCall::TMobileCallHscsdInfoV1::TMobileCallHscsdInfoV1() : |
|
317 iAiur(EAiurBpsUnspecified), |
|
318 iRxTimeSlots(0), |
|
319 iTxTimeSlots(0), |
|
320 iCodings(ETchCodingUnspecified) |
|
321 /** Default constructor, and is present only to support virtual |
|
322 function table export. */ |
|
323 { |
|
324 iExtensionId = KETelExtMultimodeV1; |
|
325 } |
|
326 |
|
327 EXPORT_C RMobileCall::TMobileCallHscsdInfoV7::TMobileCallHscsdInfoV7() : |
|
328 iCallParamOrigin(EOriginatorUnknown) |
|
329 /** Default constructor, and is present only to support virtual |
|
330 function table export. */ |
|
331 { |
|
332 iExtensionId = KEtelExtMultimodeV7; |
|
333 } |
|
334 EXPORT_C RMobileCall::TMobileCallHscsdInfoV8::TMobileCallHscsdInfoV8() |
|
335 : iBCRepeatIndicator(EBCAlternateMode) |
|
336 /** Default constructor. The BC Repeat Indicator is initialized to EBCAlternateMode. */ |
|
337 { |
|
338 iExtensionId = KEtelExtMultimodeV8; |
|
339 } |
|
340 |
|
341 EXPORT_C TInt RMobileCall::GetCurrentHscsdInfo(TDes8& aHSCSDInfo) const |
|
342 /** Gets the current values of the HSCSD parameters of an |
|
343 active mobile HSCSD call. |
|
344 |
|
345 @see TMobileCallHscsdInfoV1 |
|
346 @see TMobileCallHscsdInfoV7 |
|
347 |
|
348 @param aHSCSDInfo A descriptor that will contain the retrieved HSCSD information. |
|
349 |
|
350 @return KErrNone if HSCSD information successfully retrieved. |
|
351 @return KErrEtelCallNotActive if call is not an active HSCSD call |
|
352 @return KErrNotSupported if call does not support HSCSD |
|
353 |
|
354 @capability None |
|
355 */ |
|
356 { |
|
357 return Get(EMobileCallGetCurrentHscsdInfo,aHSCSDInfo); |
|
358 } |
|
359 |
|
360 EXPORT_C void RMobileCall::NotifyHscsdInfoChange(TRequestStatus& aReqStatus, TDes8& aHSCSDInfo) const |
|
361 /** This notification completes when the mobile call's HSCSD parameters change. |
|
362 |
|
363 Use RTelSubSessionBase::CancelAsyncRequest(EMobileCallNotifyHscsdInfoChange)to |
|
364 cancel a previously placed asynchronous NotifyHscsdInfoChange() request. |
|
365 |
|
366 @param aReqStatus On return, KErrNone if successful, otherwise another of |
|
367 the system-wide error codes. |
|
368 @param aHSCSDInfo A descriptor that will contain the new HSCSD information |
|
369 @capability None |
|
370 */ |
|
371 { |
|
372 Get(EMobileCallNotifyHscsdInfoChange,aReqStatus,aHSCSDInfo); |
|
373 } |
|
374 |
|
375 /***********************************************************************************/ |
|
376 // |
|
377 // MobileMultimediaCall functional unit |
|
378 // |
|
379 /***********************************************************************************/ |
|
380 |
|
381 EXPORT_C void RMobileCall::NotifyVoiceFallback(TRequestStatus& aReqStatus, TName& aCallName) const |
|
382 /** Notifies the client if a Multimedia call falls back to |
|
383 a voice call due to inability in network or terminating end to comply with |
|
384 the Multimedia request. |
|
385 |
|
386 Use RTelSubSessionBase::CancelAsyncRequest(EMobileCallNotifyVoiceFallback) |
|
387 to cancel a previously placed asynchronous NotifyVoiceFallback() request. |
|
388 |
|
389 @param aReqStatus On return, KErrNone if successful, otherwise another of |
|
390 the system-wide error codes. |
|
391 @param aCallName On Completion, contains the name of a new voice call object |
|
392 created by the TSY. |
|
393 @capability None |
|
394 */ |
|
395 { |
|
396 Get(EMobileCallNotifyVoiceFallback, aReqStatus, aCallName); |
|
397 } |
|
398 |
|
399 /***********************************************************************************/ |
|
400 // |
|
401 // MobileAlternatingCall functional unit |
|
402 // |
|
403 /***********************************************************************************/ |
|
404 |
|
405 |
|
406 EXPORT_C void RMobileCall::SwitchAlternatingCall(TRequestStatus& aReqStatus) const |
|
407 /** Switches an alternating call to its opposite call mode. |
|
408 |
|
409 Use RTelSubSessionBase::CancelAsyncRequest(TEMobileCallSwitchAlternatingCall) |
|
410 to cancel a previously placed asynchronous SwitchAlternatingCall() request. |
|
411 |
|
412 @param aReqStatus On return, KErrNone if the function member was successful, |
|
413 or KErrEtelNoClientInterestedInThisCall if there are no valid clients who |
|
414 have called the associated NotifyAlternatingCallSwitch(). |
|
415 @capability NetworkServices |
|
416 */ |
|
417 { |
|
418 Blank(EMobileCallSwitchAlternatingCall,aReqStatus); |
|
419 } |
|
420 |
|
421 EXPORT_C void RMobileCall::NotifyAlternatingCallSwitch(TRequestStatus& aReqStatus) const |
|
422 /** This notification completes when an alternating call successfully switches |
|
423 call mode. |
|
424 |
|
425 Use: RTelSubSessionBase::CancelAsyncRequest(EMobileCallNotifyAlternatingCallSwitch) |
|
426 to cancel a previously placed asynchronous NotifyAlternatingCallSwitch() request. |
|
427 |
|
428 @param aReqStatus On return, KErrNone is returned after an alternating call |
|
429 successfully switched call mode, KErrMMETelAlternatingCallTerminated is returned |
|
430 if the TSY detects that the alternating call has ended while a client is still |
|
431 waiting for an alternating call mode switch. |
|
432 @capability None |
|
433 */ |
|
434 { |
|
435 Blank(EMobileCallNotifyAlternatingCallSwitch,aReqStatus); |
|
436 } |
|
437 |
|
438 /***********************************************************************************/ |
|
439 // |
|
440 // Call control methods for all calls |
|
441 // |
|
442 /***********************************************************************************/ |
|
443 |
|
444 EXPORT_C RMobileCall::TMobileCallCapsV1::TMobileCallCapsV1() : |
|
445 iCallControlCaps(0), |
|
446 iCallEventCaps(0) |
|
447 /** Default constructor, and is present only to support virtual |
|
448 function table export. */ |
|
449 { |
|
450 iExtensionId = KETelExtMultimodeV1; |
|
451 } |
|
452 |
|
453 EXPORT_C TInt RMobileCall::GetMobileCallCaps(TDes8& aCaps) const |
|
454 /** Gets the mobile call's call control and event capabilities. |
|
455 |
|
456 @param aCaps On completion, a TMobileCallCapsV1Pckg that will contain the |
|
457 call control and event capabilities. |
|
458 @return KErrNone |
|
459 @capability None |
|
460 |
|
461 @see TMobileCallCapsV1Pckg |
|
462 @see TMobileCallCapsV1 |
|
463 */ |
|
464 { |
|
465 return Get(EMobileCallGetMobileCallCaps, aCaps); |
|
466 } |
|
467 |
|
468 EXPORT_C void RMobileCall::NotifyMobileCallCapsChange(TRequestStatus& aReqStatus, TDes8& aCaps) const |
|
469 /** This notification completes when the mobile call's call control and event capabilities |
|
470 change. |
|
471 |
|
472 Use RTelSubSessionBase::CancelAsyncRequest(EMobileCallNotifyMobileCallCapsChange) |
|
473 to cancel a previously placed asynchronous NotifyMobileCallCapsChange() request. |
|
474 |
|
475 @param aReqStatus On return, KErrNone if successful, otherwise another of |
|
476 the system-wide error codes. |
|
477 @param aCaps On completion, TMobileCallCapsV1Pckg that will contain the new |
|
478 call control and event capabilities. |
|
479 @capability None |
|
480 |
|
481 @see TMobileCallCapsV1Pckg |
|
482 @see TMobileCallCapsV1 |
|
483 */ |
|
484 { |
|
485 Get(EMobileCallNotifyMobileCallCapsChange, aReqStatus, aCaps); |
|
486 } |
|
487 |
|
488 EXPORT_C TInt RMobileCall::GetMobileCallStatus(TMobileCallStatus& aStatus) const |
|
489 /** Gets the current status of a mobile call. |
|
490 |
|
491 @param aStatus On completion, contains the status of the call. |
|
492 @return KErrNone |
|
493 @capability None |
|
494 */ |
|
495 { |
|
496 TPckg<TMobileCallStatus> ptr1(aStatus); |
|
497 return Get(EMobileCallGetMobileCallStatus, ptr1); |
|
498 } |
|
499 |
|
500 EXPORT_C void RMobileCall::NotifyMobileCallStatusChange(TRequestStatus& aReqStatus, TMobileCallStatus& aStatus) const |
|
501 /** Allows a client to be notified when the call changes state. |
|
502 |
|
503 The request completes when the call changes state, the new state being passed |
|
504 in the aStatus parameter. |
|
505 |
|
506 Use RTelSubSessionBase::CancelAsyncRequest(TEMobileCallNotifyMobileCallStatusChange) |
|
507 to cancel a previously placed asynchronous NotifyMobileCallStatusChange() |
|
508 request. |
|
509 |
|
510 @param aReqStatus On return, KErrNone if successful, otherwise another of |
|
511 the system-wide error codes. |
|
512 @param aStatus On completion, contains the new call state. |
|
513 @capability None |
|
514 */ |
|
515 { |
|
516 __ASSERT_ALWAYS(iMmPtrHolder!=NULL,PanicClient(EEtelPanicNullHandle)); |
|
517 |
|
518 TPtr8& ptr1=iMmPtrHolder->Set(CMobileCallPtrHolder::ESlot1NotifyMobileCallStatusChange, aStatus); |
|
519 |
|
520 Get(EMobileCallNotifyMobileCallStatusChange, aReqStatus, ptr1); |
|
521 } |
|
522 |
|
523 EXPORT_C void RMobileCall::Hold(TRequestStatus& aReqStatus) const |
|
524 /** Puts a call on hold. |
|
525 |
|
526 It will complete when the network confirms that the call is in the hold state. |
|
527 It can be called by any client that has a handle on this call (i.e. not necessarily |
|
528 the client that first opened and dialed or answered the call). The action |
|
529 is only valid if the call is a voice call and if there are no other calls |
|
530 already on hold. If call hold is possible then it will be reflected in that |
|
531 call's dynamic capabilities, i.e. the KCapsHold bit of TMobileCallControlCaps |
|
532 will be set. |
|
533 |
|
534 Use RTelSubSessionBase::CancelAsyncRequest(EMobileCallHold) to cancel a previously |
|
535 placed asynchronous Hold() request. |
|
536 |
|
537 @param aReqStatus On return, KErrNone if successful, otherwise another of |
|
538 the system-wide error codes. |
|
539 @capability NetworkServices |
|
540 */ |
|
541 { |
|
542 Blank(EMobileCallHold,aReqStatus); |
|
543 } |
|
544 |
|
545 EXPORT_C void RMobileCall::Resume(TRequestStatus& aReqStatus) const |
|
546 /** Resumes a call that is on hold. |
|
547 |
|
548 It will complete when the network confirms that the call is in the active |
|
549 state. It can be called by any client that has a handle on this call (i.e. |
|
550 not necessarily the client that first opened and dialed or answered the call). |
|
551 This action is only valid if there are no other calls already active. If call |
|
552 resume is possible then it will be reflected in that call's dynamic capabilities, |
|
553 i.e. the KCapsResume bit of TMobileCallControlCaps will be set. |
|
554 |
|
555 Use RTelSubSessionBase::CancelAsyncRequest(EMobileCallResume) to cancel a |
|
556 previously placed asynchronous Resume() request. |
|
557 |
|
558 @param aReqStatus On return, KErrNone if successful, otherwise another of |
|
559 the system-wide error codes. |
|
560 @capability NetworkServices |
|
561 */ |
|
562 { |
|
563 Blank(EMobileCallResume, aReqStatus); |
|
564 } |
|
565 |
|
566 EXPORT_C void RMobileCall::Swap(TRequestStatus& aReqStatus) const |
|
567 /** Swaps a connected call to its opposite state, either active |
|
568 or on hold. |
|
569 |
|
570 This function member will complete either when the call has successfully |
|
571 moved to the opposite state or if the action failed due to some reason. It |
|
572 can be called by any client that has a handle on this call (i.e. not necessarily |
|
573 the client that first opened and dialed or answered the call). |
|
574 |
|
575 This action is possible under two circumstances: |
|
576 |
|
577 There is just one active or held single call. This implies that there are |
|
578 no other calls already in the state to which the client wishes to move this |
|
579 call to. The client will call Swap on this call and if it is active it will |
|
580 move to the held state and if it is held it will move to the active state. |
|
581 |
|
582 There are two single calls, one currently active and one on hold. This function |
|
583 member therefore swaps the active call with the held call, simultaneously |
|
584 placing the active call on hold and resuming the held call. |
|
585 |
|
586 In the first circumstance, an active call's dynamic capabilities will contain |
|
587 the KCapsHold and KCapsSwap bits set. A held calls' dynamic capabilities will |
|
588 contain the KCapsResume and KCapsSwap bits set. In the second circumstance, |
|
589 both the active and held call's dynamic capabilities will contain just the |
|
590 KCapsSwap bit set. The above function member is applicable to both single |
|
591 and conference calls. If there is a single call and a conference call then |
|
592 the client can call Swap on either the single call or the conference call. |
|
593 The action will still move both the single call and the conference call to |
|
594 their opposite states. |
|
595 |
|
596 Use RTelSubSessionBase::CancelAsyncRequest(EMobileCallSwap) to cancel a previously |
|
597 placed asynchronous Swap() request. |
|
598 |
|
599 @param aReqStatus On return, KErrNone if successful, otherwise another of |
|
600 the system-wide error codes. |
|
601 @capability NetworkServices |
|
602 */ |
|
603 { |
|
604 Blank(EMobileCallSwap, aReqStatus); |
|
605 } |
|
606 |
|
607 EXPORT_C void RMobileCall::Deflect(TRequestStatus& aReqStatus, TMobileCallDeflect aDeflectType, const RMobilePhone::TMobileAddress& aDestination) const |
|
608 /** Allows a client to deflect an incoming call that is still |
|
609 in the EStatusRinging state. |
|
610 |
|
611 The destination of the deflected call is determined by the aDeflectType parameter. |
|
612 If this parameter equals EDeflectSuppliedNumber then the destination address |
|
613 is given in the aDestination parameter. If call deflection is possible then |
|
614 it will be reflected in that call's dynamic capabilities, i.e. the KCapsDeflect |
|
615 bit of TMobileCallControlCaps will be set. |
|
616 |
|
617 Use RTelSubSessionBase::CancelAsyncRequest(EMobileCallDeflect) to cancel a |
|
618 previously placed asynchronous Deflect() request. |
|
619 |
|
620 @param aReqStatus On return, KErrNone if successful, otherwise another of |
|
621 the system-wide error codes. |
|
622 @param aDeflectType Type of call deflection wanted. |
|
623 @param aDestination The telephone number (E164) to deflect the call to. |
|
624 @capability NetworkServices |
|
625 */ |
|
626 { |
|
627 __ASSERT_ALWAYS(iMmPtrHolder!=NULL,PanicClient(EEtelPanicNullHandle)); |
|
628 |
|
629 |
|
630 iMmPtrHolder->iDeflectType = aDeflectType; |
|
631 TPtrC8& ptr1=iMmPtrHolder->SetC(CMobileCallPtrHolder::ESlot1Deflect, iMmPtrHolder->iDeflectType); |
|
632 TPtrC8& ptr2=iMmPtrHolder->SetC(CMobileCallPtrHolder::ESlot2Deflect, aDestination); |
|
633 |
|
634 Set(EMobileCallDeflect, aReqStatus, ptr1, ptr2); |
|
635 } |
|
636 |
|
637 EXPORT_C void RMobileCall::Transfer(TRequestStatus& aReqStatus) const |
|
638 /** Allows a client to transfer a call so that the remote |
|
639 party of one call ends up connected to the remote party of another call while |
|
640 this user drops out of both calls. For call transfer to be possible, the phone |
|
641 must have one call on hold and another call either connected or still ringing |
|
642 at the remote end. If call transfer is possible then it will be reflected |
|
643 in the affected call's dynamic capabilities, i.e. the KCapsTransfer bit of |
|
644 TMobileCallControlCaps will be set. |
|
645 |
|
646 Use RTelSubSessionBase::CancelAsyncRequest(EMobileCallTransfer) to cancel |
|
647 a previously placed asynchronous Transfer() request. |
|
648 |
|
649 @param aReqStatus On return, KErrNone if successful, KErrMMETelWrongMode if |
|
650 the transfer is requested for a CDMA call. |
|
651 @capability NetworkServices |
|
652 */ |
|
653 { |
|
654 Blank(EMobileCallTransfer,aReqStatus); |
|
655 } |
|
656 |
|
657 EXPORT_C void RMobileCall::GoOneToOne(TRequestStatus& aReqStatus) const |
|
658 /** Requests a private communication to the remote party of |
|
659 one call within a conference call. The rest of the conference call will be |
|
660 put on hold while the user and the selected remote party go "one-to-one". |
|
661 It can be called by any client that has a handle on this call (i.e. not necessarily |
|
662 the client that first opened and dialed or answered the call). The action |
|
663 is only valid if the MS is in GSM mode, the selected call is a voice call |
|
664 and it is a member of an ongoing conference call. If "one-to-one" is possible |
|
665 then it will be reflected in that call's dynamic capabilities, i.e. the KCapsOneToOne |
|
666 bit of TMobileCallControlCaps will be set. |
|
667 |
|
668 Use RTelSubSessionBase::CancelAsyncRequest(EMobileCallGoOneToOne) to cancel |
|
669 a previously placed asynchronous GoOneToOne() request. |
|
670 |
|
671 @param aReqStatus On return, KErrNone if successful, otherwise another of |
|
672 the system-wide error codes. |
|
673 @capability NetworkServices |
|
674 */ |
|
675 { |
|
676 Blank(EMobileCallGoOneToOne,aReqStatus); |
|
677 } |
|
678 |
|
679 EXPORT_C void RMobileCall::NotifyCallEvent(TRequestStatus& aReqStatus, TMobileCallEvent& aEvent) const |
|
680 /** Allows the client to be notified when various call events occur. |
|
681 |
|
682 These events may be generated locally (i.e. from within the ME) or remotely |
|
683 (by the remote connected party). The request completes when an event occurs. |
|
684 Upon completion, the aEvent parameter will return the event type. |
|
685 |
|
686 The call (and line) status will be changed to reflect any events detected |
|
687 locally or remotely. |
|
688 |
|
689 Use RTelSubSessionBase::CancelAsyncRequest(EMobileCallNotifyCallEvent) to |
|
690 cancel a previously placed asynchronous NotifyCallEvent() request. |
|
691 |
|
692 @param aReqStatus On return, KErrNone if successful, otherwise another of |
|
693 the system-wide error codes. |
|
694 @param aEvent On completion, contains the new call event. |
|
695 @capability None |
|
696 */ |
|
697 { |
|
698 __ASSERT_ALWAYS(iMmPtrHolder!=NULL,PanicClient(EEtelPanicNullHandle)); |
|
699 |
|
700 TPtr8& ptr1=iMmPtrHolder->Set(CMobileCallPtrHolder::ESlot1NotifyCallEvent, aEvent); |
|
701 |
|
702 Get(EMobileCallNotifyCallEvent, aReqStatus, ptr1); |
|
703 } |
|
704 |
|
705 EXPORT_C void RMobileCall::DialNoFdnCheck(TRequestStatus& aReqStatus,const TDesC& aTelNumber) const |
|
706 /** |
|
707 Dials the number specified by aTelNumber. |
|
708 |
|
709 The number used for dialling is not checked against those in the Fixed |
|
710 Dialling Number list even if the FDN service is enabled. |
|
711 Null CallParams are applied. |
|
712 |
|
713 @param aTelNumber Supplies the number to dial. |
|
714 |
|
715 @capability NetworkServices |
|
716 @capability NetworkControl |
|
717 */ |
|
718 { |
|
719 __ASSERT_ALWAYS(iMmPtrHolder!=NULL,PanicClient(EEtelPanicNullHandle)); |
|
720 |
|
721 // Confirm that we DO have a number to dial |
|
722 if(aTelNumber.Length()==0) |
|
723 { |
|
724 TRequestStatus* status=&aReqStatus; |
|
725 User::RequestComplete(status, KErrArgument); |
|
726 return; |
|
727 } |
|
728 |
|
729 TPtr8 nullptr(NULL,0); |
|
730 TPtrC8& null=iMmPtrHolder->SetC(CMobileCallPtrHolder::ESlot1DialNoFdnCheck, nullptr); |
|
731 Set(EMobileCallDialNoFdnCheck, aReqStatus, null, aTelNumber); |
|
732 } |
|
733 |
|
734 EXPORT_C void RMobileCall::DialNoFdnCheck(TRequestStatus& aReqStatus,const TDesC8& aCallParams,const TDesC& aTelNumber) const |
|
735 /** |
|
736 Dials the number specified by aTelNumber. |
|
737 |
|
738 The number used for dialling is not checked against those in the |
|
739 Fixed Dialling Number list even if the FDN service is enabled. |
|
740 |
|
741 @param aCallParams Supplies the call parameters. This should be a packaged RCall::TCallParams derived class. |
|
742 @param aTelNumber Supplies the number to dial. |
|
743 |
|
744 @capability NetworkServices |
|
745 @capability NetworkControl |
|
746 |
|
747 @see TMobileCallParamsV1 |
|
748 @see TMobileCallParamsV2 |
|
749 @see TMobileCallParamsV7 |
|
750 @see TMobileDataCallParamsV1 |
|
751 @see TMobileDataCallParamsV2 |
|
752 @see TMobileDataCallParamsV8 |
|
753 @see TMobileHscsdCallParamsV1 |
|
754 @see TMobileHscsdCallParamsV2 |
|
755 @see TMobileHscsdCallParamsV7 |
|
756 @see TMobileHscsdCallParamsV8 |
|
757 */ |
|
758 { |
|
759 __ASSERT_ALWAYS(iMmPtrHolder!=NULL,PanicClient(EEtelPanicNullHandle)); |
|
760 |
|
761 // Confirm that we DO have a number to dial |
|
762 if(aTelNumber.Length()==0) |
|
763 { |
|
764 TRequestStatus* status=&aReqStatus; |
|
765 User::RequestComplete(status, KErrArgument); |
|
766 return; |
|
767 } |
|
768 |
|
769 Set(EMobileCallDialNoFdnCheck, aReqStatus, aCallParams, aTelNumber); |
|
770 } |
|
771 |
|
772 EXPORT_C void RMobileCall::DialCallControl(TRequestStatus& aStatus, const TDesC8& aCallParams, const TTelNumberC& aTelNumber) const |
|
773 /** |
|
774 Dial the number specified in aTelNumber using the call parameters |
|
775 specified in aCallParams. This API differs from the standard |
|
776 RCall::Dial method to allow the TSY to know that the dial request |
|
777 is resulting from Call Control. |
|
778 |
|
779 When a client wishes to dial a call (using one of the |
|
780 other dial APIs such as RCall::Dial) and Call Control is being |
|
781 used, the dial request is passed to the Call Control which can |
|
782 then modify the call parameters originally specified by the |
|
783 client. The SAT engine then issues a second dial request to |
|
784 make the actual call using the new modified parameters. |
|
785 When making this second request, this API should be used to |
|
786 indicate to the TSY that this call results from Call Control. |
|
787 Call parameter classes RMobileCall::TMobileCallParamsV7 and |
|
788 RMobileCall::TMobileHscsdCallParamsV2 (and in future one of their |
|
789 derived classes) allow the call originator to be specified. |
|
790 |
|
791 The API RMobileCall::GetMobileCallInfo with |
|
792 RMobileCall::TMobileCallInfoV7 also allows a client to get |
|
793 information regarding the originator of a call. |
|
794 |
|
795 Error codes returned by this API from the TSY/Etelmm via |
|
796 aStatus are: |
|
797 |
|
798 - KErrNone if the dial request was successful. |
|
799 - KErrArgument if no number was supplied or an invalid telephone number was passed in aTelNumber. |
|
800 - KErrPermissionDenied if the client does not have the required PlatSec capabilities or the SID of the SAT engine was not provided (see below for more details). |
|
801 - Another error code depending on the failure. |
|
802 |
|
803 This API is policed by both Platform Security capabilities and SID |
|
804 and can only be called by the SAT engine. |
|
805 |
|
806 On hardware, the API can be called by providing the SID of the SAT |
|
807 engine in ETel.iby file found in \epoc32\rom\include |
|
808 |
|
809 A patchable constant KSatEngineSid is used for defining the SID value |
|
810 of the SAT engine. |
|
811 |
|
812 For example, add the following line to ETel.iby: |
|
813 patchdata etel.dll@KSatEngineSid 0x12345678 |
|
814 |
|
815 On emulator, the API can be called by providing the SID of the SAT |
|
816 engine in epoc.ini file found at \epoc32\data |
|
817 |
|
818 To do this, add the following line to \epoc32\data\epoc.ini |
|
819 etel_KSatEngineSid <SID> |
|
820 |
|
821 For example: |
|
822 etel_KSatEngineSid 0x12345678 |
|
823 |
|
824 Use RTelSubSessionBase::CancelAsyncRequest(EMobileCallDialCallControl) to |
|
825 cancel a previously placed asynchronous DialCallControl() request. |
|
826 |
|
827 @param aCallParams The call parameters. This should be a |
|
828 packaged RCall::TCallParams derived class. |
|
829 |
|
830 @param aTelNumber The number to dial. |
|
831 |
|
832 @param aStatus On completion aReqStatus contains KErrNone if successful. |
|
833 Otherwise, another error code depending on failure. |
|
834 |
|
835 @see RMobileCall::TMobileCallParamsV7 |
|
836 @see RMobileCall::TMobileDataCallParamsV1 |
|
837 @see RMobileCall::TMobileHscsdCallParamsV7 |
|
838 |
|
839 @capability NetworkServices |
|
840 @capability NetworkControl |
|
841 */ |
|
842 { |
|
843 __ASSERT_ALWAYS(iMmPtrHolder!=NULL,PanicClient(EEtelPanicNullHandle)); |
|
844 |
|
845 // Check that a number to dial has been passed |
|
846 if(aTelNumber.Length()==0) |
|
847 { |
|
848 TRequestStatus* status=&aStatus; |
|
849 User::RequestComplete(status, KErrArgument); |
|
850 return; |
|
851 } |
|
852 |
|
853 Set(EMobileCallDialCallControl, aStatus, aCallParams, aTelNumber); |
|
854 } |
|
855 |
|
856 EXPORT_C RMobileCall::TAudioToneV3::TAudioToneV3() : |
|
857 iEvent(EAudioStop), |
|
858 iTone(ENoTone), |
|
859 iPlayedLocally(EFalse) |
|
860 /** |
|
861 Default constructor. |
|
862 */ |
|
863 { |
|
864 iExtensionId = KETelExtMultimodeV3; |
|
865 } |
|
866 |
|
867 EXPORT_C void RMobileCall::NotifyAudioToneEvent(TRequestStatus& aReqStatus, TDes8& aToneInfo) const |
|
868 /** |
|
869 Notification completes when there has been a change of call control audio tone event. |
|
870 |
|
871 @param aReqStatus returns the result code after the asynchronous call completes. |
|
872 @param aToneInfo Will contain the information on whether the tone is to start/stop playing, |
|
873 what tone is playing/to be played and whether the tone is to be played locally by the ME. |
|
874 This should be a packaged RMobileCall::TAudioToneV3 or derived class. |
|
875 |
|
876 @capability None |
|
877 |
|
878 @see TAudioToneV3Pckg |
|
879 */ |
|
880 { |
|
881 Get(EMobileCallNotifyAudioToneEvent, aReqStatus, aToneInfo); |
|
882 } |
|
883 |
|
884 /***********************************************************************************/ |
|
885 // |
|
886 // MobilePrivacy functional unit |
|
887 // |
|
888 /***********************************************************************************/ |
|
889 |
|
890 |
|
891 EXPORT_C TInt RMobileCall::SetPrivacy(RMobilePhone::TMobilePhonePrivacy aPrivacySetting) const |
|
892 /** Causes the phone to request a new privacy setting for this call. |
|
893 |
|
894 This setting will over-ride (for this call only), the phone's default privacy |
|
895 setting. |
|
896 |
|
897 The function member is synchronous for two reasons. Firstly because the phone |
|
898 may not be able to request the new setting immediately if the call has not |
|
899 started yet. Secondly, the CDMA network only sends confirmation of a successful |
|
900 privacy setting and will not respond if it is unable to service the request. |
|
901 This means a client needs to request a privacy setting but then not assume |
|
902 the setting is active until "notify privacy confirmation" completes. |
|
903 |
|
904 @leave KErrMMEtelWrongMode if request made during a mode that does not support it |
|
905 @param aPrivacySetting Wanted privacy setting (either on or off). |
|
906 @return KErrNone if request processed successfully. KErrMMEtelWrongMode if |
|
907 request made during a mode that does not support it. |
|
908 @capability NetworkServices |
|
909 */ |
|
910 { |
|
911 TPckg<RMobilePhone::TMobilePhonePrivacy> ptr1(aPrivacySetting); |
|
912 return Set(EMobileCallSetPrivacy, ptr1); |
|
913 } |
|
914 |
|
915 EXPORT_C void RMobileCall::NotifyPrivacyConfirmation(TRequestStatus& aReqStatus, RMobilePhone::TMobilePhonePrivacy& aPrivacySetting) const |
|
916 /** This notification completes when the network confirms whether privacy is on |
|
917 or off for this call. |
|
918 |
|
919 Use RTelSubSessionBase::CancelAsyncRequest(EMobileCallNotifyPrivacyConfirmation) |
|
920 to cancel a previously placed asynchronous NotifyPrivacyConfirmation() request. |
|
921 |
|
922 @param aReqStatus On return, KErrNone if request processed successfully. KErrMMEtelWrongMode |
|
923 if request made during a mode that does not support it. |
|
924 @param aPrivacySetting On completion, the confirmed privacy setting (either |
|
925 on or off). |
|
926 @capability NetworkServices |
|
927 */ |
|
928 { |
|
929 __ASSERT_ALWAYS(iMmPtrHolder!=NULL,PanicClient(EEtelPanicNullHandle)); |
|
930 |
|
931 TPtr8& ptr1 = iMmPtrHolder->Set(CMobileCallPtrHolder::ESlot1NotifyPrivacyConfirmation,aPrivacySetting); |
|
932 |
|
933 Get(EMobileCallNotifyPrivacyConfirmation,aReqStatus,ptr1); |
|
934 } |
|
935 |
|
936 /***********************************************************************************/ |
|
937 // |
|
938 // MobileTrafficChannel Functional Unit |
|
939 // |
|
940 /***********************************************************************************/ |
|
941 |
|
942 |
|
943 |
|
944 EXPORT_C TInt RMobileCall::SetTrafficChannel(TMobileCallTch aTchRequest) const |
|
945 /** Sets a new value for the traffic channel setting of a mobile call. |
|
946 |
|
947 The function member is synchronous for two reasons. Firstly because the phone |
|
948 may not be able to request the new setting immediately if the call has not |
|
949 started yet. Secondly, the CDMA network only sends confirmation of a successful |
|
950 traffic channel allocation and will not respond if it is unable to service |
|
951 the request. This means a client needs to request a traffic channel type but |
|
952 then not assume the channel is allocated until "notify traffic channel confirmation" |
|
953 completes. |
|
954 |
|
955 @leave KErrMMEtelWrongMode if request made during a mode that does not support it |
|
956 @param aTchRequest The wanted traffic channel (either analog or digital). |
|
957 @return KErrNone if request processed successfully, KErrMMEtelWrongMode if |
|
958 request made during a mode that does not support it. |
|
959 @capability NetworkServices |
|
960 */ |
|
961 { |
|
962 TPckg<TMobileCallTch> ptr1(aTchRequest); |
|
963 return Set(EMobileCallSetTrafficChannel,ptr1); |
|
964 } |
|
965 |
|
966 EXPORT_C void RMobileCall::NotifyTrafficChannelConfirmation(TRequestStatus& aReqStatus, TMobileCallTch& aTchType) const |
|
967 /** Allows the client to be notified when the CDMA network |
|
968 has confirmed the traffic channel type requested during call set-up or during |
|
969 call connection. |
|
970 |
|
971 Use RTelSubSessionBase::CancelAsyncRequest(EMobileCallNotifyTrafficChannelConfirmation) |
|
972 to cancel a previously placed asynchronous NotifyTrafficChannelConfirmation() |
|
973 request. |
|
974 |
|
975 @param aReqStatus On return, KErrNone if successful, otherwise another of |
|
976 the system-wide error codes. |
|
977 @param aTchType On completion, the traffic channel type (either analog or digital). |
|
978 @capability NetworkServices |
|
979 */ |
|
980 { |
|
981 __ASSERT_ALWAYS(iMmPtrHolder!=NULL,PanicClient(EEtelPanicNullHandle)); |
|
982 |
|
983 TPtr8& ptr1 = iMmPtrHolder->Set(CMobileCallPtrHolder::ESlot1NotifyTrafficChannelConfirmation,aTchType); |
|
984 |
|
985 Get(EMobileCallNotifyTrafficChannelConfirmation,aReqStatus,ptr1); |
|
986 } |
|
987 |
|
988 /***********************************************************************************/ |
|
989 // |
|
990 // Call Information methods for calls of any type |
|
991 // |
|
992 /***********************************************************************************/ |
|
993 |
|
994 EXPORT_C RMobileCall::TMobileCallInfoV1::TMobileCallInfoV1() |
|
995 : iValid(0), |
|
996 iService(RMobilePhone::EServiceUnspecified), |
|
997 iStatus(EStatusUnknown), |
|
998 iCallId(-1), |
|
999 iExitCode(0), |
|
1000 iEmergency(EFalse), |
|
1001 iForwarded(EFalse), |
|
1002 iPrivacy(RMobilePhone::EPrivacyUnspecified), |
|
1003 iAlternatingCall(RMobilePhone::EAlternatingModeUnspecified), |
|
1004 iDuration(0), |
|
1005 iTch(RMobileCall::ETchUnknown) |
|
1006 /** Default constructor, and is present only to support virtual |
|
1007 function table export. */ |
|
1008 { |
|
1009 iExtensionId = KETelExtMultimodeV1; |
|
1010 } |
|
1011 |
|
1012 EXPORT_C RMobileCall::TMobileCallInfoV3::TMobileCallInfoV3() |
|
1013 : TMobileCallInfoV1(), |
|
1014 iSecurity(RMobilePhone::ECipheringOff) |
|
1015 /** |
|
1016 Default constructor. |
|
1017 */ |
|
1018 { |
|
1019 iExtensionId = KETelExtMultimodeV3; |
|
1020 } |
|
1021 |
|
1022 EXPORT_C RMobileCall::TMobileCallInfoV7::TMobileCallInfoV7() |
|
1023 : TMobileCallInfoV3(), |
|
1024 iCallParamOrigin(EOriginatorUnknown), |
|
1025 iParamsCallControlModified(EFalse) |
|
1026 /** |
|
1027 Default constructor. |
|
1028 */ |
|
1029 { |
|
1030 iExtensionId = KEtelExtMultimodeV7; |
|
1031 iIconId.iQualifier = EIconQualifierNotSet; |
|
1032 iIconId.iIdentifier = 0; |
|
1033 } |
|
1034 |
|
1035 EXPORT_C RMobileCall::TMobileCallInfoV8::TMobileCallInfoV8() |
|
1036 : TMobileCallInfoV7(), |
|
1037 iBCRepeatIndicator(EBCAlternateMode) |
|
1038 /** Default constructor. The BC Repeat Indicator is initialized to EBCAlternateMode. */ |
|
1039 { |
|
1040 iExtensionId = KEtelExtMultimodeV8; |
|
1041 } |
|
1042 |
|
1043 EXPORT_C TInt RMobileCall::GetMobileCallInfo(TDes8& aCallInfo) const |
|
1044 /** Retrieves the current snapshot of all information related |
|
1045 to this call as described in the TMobileCallInfoV1 class. |
|
1046 @leave KErrNotFound if call information is not available |
|
1047 @param aCallInfo On completion, a TMobileCallInfoV1Pckg holding |
|
1048 the call information block. |
|
1049 @return KErrNone, KErrNotFound if call information is not available |
|
1050 @capability ReadUserData |
|
1051 */ |
|
1052 { |
|
1053 return Get(EMobileCallGetMobileCallInfo, aCallInfo); |
|
1054 } |
|
1055 |
|
1056 EXPORT_C RMobileCall::TMobileCallRemotePartyInfoV1::TMobileCallRemotePartyInfoV1() |
|
1057 : iRemoteIdStatus(ERemoteIdentityUnknown), iDirection(EDirectionUnknown) |
|
1058 /** Default constructor, and is present only to support virtual |
|
1059 function table export. */ |
|
1060 { |
|
1061 iExtensionId = KETelExtMultimodeV1; |
|
1062 } |
|
1063 |
|
1064 EXPORT_C void RMobileCall::NotifyRemotePartyInfoChange(TRequestStatus& aReqStatus, TDes8& aRemotePartyInfo) const |
|
1065 /** Allows the client to be notified of any change in the remote party information. |
|
1066 |
|
1067 Use RTelSubSessionBase::CancelAsyncRequest(EMobileCallNotifyRemotePartyInfoChange) |
|
1068 to cancel a previously placed asynchronous NotifyRemotePartyInfoChange() request. |
|
1069 |
|
1070 @param aReqStatus On return, KErrNone if successful, otherwise another of |
|
1071 the system-wide error codes. |
|
1072 @param aRemotePartyInfo On completion, the new remote party information in |
|
1073 a TMobileCallRemotePartyInfoV1Pckg. |
|
1074 @capability ReadUserData |
|
1075 */ |
|
1076 { |
|
1077 Get(EMobileCallNotifyRemotePartyInfoChange, aReqStatus, aRemotePartyInfo); |
|
1078 } |
|
1079 |
|
1080 /***********************************************************************************/ |
|
1081 // |
|
1082 // MobileCallEmergency functional unit |
|
1083 // |
|
1084 /***********************************************************************************/ |
|
1085 |
|
1086 EXPORT_C void RMobileCall::DialEmergencyCall(TRequestStatus& aReqStatus, const TDesC& aNumber) const |
|
1087 /** Places an emergency call request. |
|
1088 |
|
1089 It is advised that the client opens a call object during system initialization |
|
1090 and reserves it for an emergency call. This will guarantee that it will not |
|
1091 leave with a KErrOutOfMemory, which could happen if the client had to open |
|
1092 a new call to make the emergency call. |
|
1093 |
|
1094 The TSY should make sure that any needed resource for an emergency call is |
|
1095 created at initialization and set aside in the event of a DialEmergencyCall() |
|
1096 request. Upon receiving a DialEmergencyCall() request, the TSY should ask |
|
1097 the ETel server if the client is a priority client, using the following call |
|
1098 to the server: CCallBase::CheckPriorityClient(). |
|
1099 |
|
1100 DialEmergencyCall is designated a "priority client" request, which means that |
|
1101 if a client that is known to the server as a priority client calls this, the |
|
1102 server will guarantee that it will not leave with KErrOutOfMemory. However, |
|
1103 a non-priority client may call it without this guarantee. |
|
1104 |
|
1105 This function member is similar to the standard Dial() function member in |
|
1106 that it will initiate a call set-up. The emergency call object will follow |
|
1107 the standard call states. |
|
1108 |
|
1109 Use RTelSubSessionBase::CancelAsyncRequest(EMobileCallDialEmergencyCall) to |
|
1110 cancel a previously placed asynchronous DialEmergencyCall() request. |
|
1111 |
|
1112 @param aReqStatus On return, KErrNone if the emergency call successfully reaches |
|
1113 the connected state. If the call set-up fails, the function member will complete |
|
1114 with whatever error was returned by the network. |
|
1115 @param aNumber The actual emergency number, which is needed to set up an emergency |
|
1116 call to a particular emergency centre (e.g. Ambulance, Police, Fire Brigade, |
|
1117 etc.). The aNumber parameter should be a RMobileENStore::TEmergencyNumber |
|
1118 buffer. |
|
1119 @capability NetworkServices |
|
1120 @capability NetworkControl |
|
1121 */ |
|
1122 { |
|
1123 TReqPriorityType type=EIsaEmergencyRequest; |
|
1124 Set(EMobileCallDialEmergencyCall, aReqStatus, aNumber, type); |
|
1125 } |
|
1126 |
|
1127 /***********************************************************************************/ |
|
1128 // |
|
1129 // MobileCallCompletion functional unit |
|
1130 // |
|
1131 /***********************************************************************************/ |
|
1132 |
|
1133 |
|
1134 EXPORT_C void RMobileCall::ActivateCCBS(TRequestStatus& aReqStatus, TInt& aIndex) const |
|
1135 /** |
|
1136 Activates a CCBS request on a call that has failed due to remote user busy |
|
1137 It will complete once the activate request has been confirmed by the network |
|
1138 |
|
1139 @param aIndex the index of the CCBS call activated |
|
1140 @capability NetworkServices |
|
1141 */ |
|
1142 { |
|
1143 TPtr8& ptr1 = iMmPtrHolder->Set(CMobileCallPtrHolder::ESlot1ActivateCcbs, aIndex); |
|
1144 Get(EMobileCallActivateCCBS,aReqStatus, ptr1); |
|
1145 } |
|
1146 |
|
1147 EXPORT_C TInt RMobileCall::RejectCCBS() const |
|
1148 /** Allows a client to specify that it does not wish to set-up |
|
1149 a CCBS request on a failed call setup. |
|
1150 |
|
1151 When the user is presented with the option of activating a CCBS request to |
|
1152 a remote busy number, if the user chooses not to bother then this API function |
|
1153 member can be used by the client application to inform the TSY of this user |
|
1154 decision. |
|
1155 |
|
1156 This enables the TSY to inform the network immediately that the CCBS possibility |
|
1157 is not going to be used and therefore stop all relevant timers. If the client |
|
1158 application calls neither ActivateCCBS() or RejectCCBS() when the call control |
|
1159 capability KCapsCCbsActivate is set, the possibility of activating CCBS will |
|
1160 eventually time-out and the associated call control capability will disappear. |
|
1161 |
|
1162 @leave KErrNotReady if call is not expecting a CCBS rejection |
|
1163 @return KErrNone |
|
1164 @capability NetworkServices |
|
1165 */ |
|
1166 { |
|
1167 return Blank(EMobileCallRejectCCBS); |
|
1168 } |
|
1169 |
|
1170 |
|
1171 /************************************************************************************/ |
|
1172 // |
|
1173 // MobileUserSignalling functional unit |
|
1174 // |
|
1175 /************************************************************************************/ |
|
1176 |
|
1177 EXPORT_C RMobileCall::TMobileCallUUSRequestV1::TMobileCallUUSRequestV1() |
|
1178 /** Default constructor, and is present only to support virtual |
|
1179 function table export. */ |
|
1180 { |
|
1181 iExtensionId=KETelExtMultimodeV1; |
|
1182 } |
|
1183 |
|
1184 EXPORT_C TInt RMobileCall::GetUUSCaps(TUint32& aCaps) const |
|
1185 /** Gets the current instance of the UUS capabilities of the |
|
1186 call. This function member can be used before making the call to find out |
|
1187 which UUS the phone supports, or during the call to find out which UUS are |
|
1188 active for the current call. |
|
1189 |
|
1190 @leave KErrNotSupported if UUS functionality is not supported by the phone/TSY |
|
1191 @param aCaps On completion, the sum of TMobileCallUUSCaps constants of the |
|
1192 current UUS capabilities. |
|
1193 @return KErrNone if the TSY/ME supports any UUS functionality, KErrNotSupported |
|
1194 if the TSY/ME does not support any UUS functionality. |
|
1195 @capability None |
|
1196 */ |
|
1197 { |
|
1198 TPckg<TUint32> ptr1(aCaps); |
|
1199 return Get(EMobileCallGetUUSCaps, ptr1); |
|
1200 } |
|
1201 |
|
1202 EXPORT_C void RMobileCall::NotifyUUSCapsChange(TRequestStatus& aReqStatus, TUint32& aCaps) const |
|
1203 /** Notifies the clients of changes to the UUS capabilities |
|
1204 of the phone. |
|
1205 |
|
1206 The UUS capabilities are most likely to change when the call starts. |
|
1207 |
|
1208 Use RTelSubSessionBase::CancelAsyncRequest(EMobileCallNotifyUUSCapsChange) |
|
1209 to cancel a previously placed asynchronous NotifyUUSCapsChange() request. |
|
1210 |
|
1211 @param aReqStatus On return, KErrNone if successful, otherwise another of |
|
1212 the system-wide error codes. |
|
1213 @param aCaps On completion, the sum of TMobileCallUUSCaps relating to the new |
|
1214 UUS capabilities |
|
1215 @capability None |
|
1216 */ |
|
1217 { |
|
1218 __ASSERT_ALWAYS(iMmPtrHolder!=NULL,PanicClient(EEtelPanicNullHandle)); |
|
1219 |
|
1220 TPtr8& ptr1 = iMmPtrHolder->Set(CMobileCallPtrHolder::ESlot1NotifyUUSCapsChange, aCaps); |
|
1221 |
|
1222 Get(EMobileCallNotifyUUSCapsChange, aReqStatus, ptr1); |
|
1223 } |
|
1224 |
|
1225 EXPORT_C void RMobileCall::ActivateUUS(TRequestStatus& aReqStatus, const TDesC8& aUUSRequest) const |
|
1226 /** Specifies which User-To-User Signalling service(s) the |
|
1227 phone should request to activate. |
|
1228 |
|
1229 This function member can be used before a call has started or during a call |
|
1230 (for UUS3 only). |
|
1231 |
|
1232 In order to use UUS the calling subscriber must have the UUS supplementary |
|
1233 service provisioned by the network provider and the network must have the |
|
1234 capability of supporting the UUS service. |
|
1235 |
|
1236 Use of this function member is only applicable to a phone whose UUS caps (TMobileCallUUSCaps) |
|
1237 are set to support the required UUS service. The KCapsSetupUUS1Implicit flag |
|
1238 allows the calling user to activate the UUS service implicitly by sending |
|
1239 the UUI embedded within the call set-up message. The UUS Service 1 can also |
|
1240 be activated explicitly. The UUS Services 2 and 3 can only be activated by |
|
1241 means of an explicit request. Service 2 can only be activated when initiating |
|
1242 an outgoing call, whereas Service 3 can also be activated during the call. |
|
1243 |
|
1244 If UUS Service 1 is being requested, then the iUUI field of TMobileCallUUSRequestV1 |
|
1245 will contain any UUI data to send with the call set-up message. |
|
1246 |
|
1247 If the call has not started yet, the TSY is expected to save the request information |
|
1248 until it receives the next Dial request. In this case ActivateUUS should complete |
|
1249 with KErrNone if the TSY supports the requested UUS or KErrNotSupported if |
|
1250 the TSY can not fulfill the request for the next Dial. Once the Dial request |
|
1251 is received, the phone will send the SETUP request to the network and include |
|
1252 the UUS service activation request. A number of outcomes are possible once |
|
1253 the phone has sent the SETUP message. |
|
1254 |
|
1255 If the network does not support UUS or the caller is not subscribed to UUS |
|
1256 and the service is mandatory for the call, the network will send a DISCONNECT |
|
1257 or RELEASE message. The Dial request will complete with the error received |
|
1258 from the network. (KErrGsmCCResourceNotAvailable or KErrGsmCCRequestedFacilityNotSubscribed). |
|
1259 |
|
1260 If the network does not support UUS but the service is not mandatory, the |
|
1261 network will still proceed with the call but without UUI, and the Dial request |
|
1262 will complete with KErrNone when the call is connected. |
|
1263 |
|
1264 If the network does support UUS then the remote user will be alerted to the |
|
1265 UUS service activation. |
|
1266 |
|
1267 If the remote user accepts the UUS service activation, the network will proceed |
|
1268 with the call and the Dial request will complete with KErrNone when the call |
|
1269 is connected. |
|
1270 |
|
1271 If the remote user rejects the UUS service activation and the service is mandatory |
|
1272 for the call, the network will send a DISCONNECT or RELEASE message and the |
|
1273 Dial request will complete with the error received from the network (KErrGsmCCFacilityRejected). |
|
1274 |
|
1275 If the remote user rejects the UUS service activation and the service is not |
|
1276 mandatory, the network will still proceed with the call and the Dial request |
|
1277 will complete with KErrNone when the call is connected. |
|
1278 |
|
1279 Once the call is connected, clients can check the call's UUS capabilities |
|
1280 to see which UUS services are active. |
|
1281 |
|
1282 If this function member is used to activate the UUS Service 3 during a call |
|
1283 then the connection with the remote side has already been established. In |
|
1284 order to use this function member during the call the activating subscriber |
|
1285 must have the UUS supplementary service 3 provisioned by the network provider |
|
1286 and the network must have the capability of supporting the UUS service 3. |
|
1287 Once the ActivateUUS() request is posted, the phone will send the FACILITY |
|
1288 request to the network and include the UUS service activation request. A number |
|
1289 of outcomes are possible once the phone has sent the FACILITY message. |
|
1290 |
|
1291 If the network does not support UUS the call will remain connected but no |
|
1292 UUI transmission is possible and the ActivateUUS() request will complete with |
|
1293 the error returned by the network (KErrGsmCCResourceNotAvailable or |
|
1294 KErrGsmCCRequestedFacilityNotSubscribed). |
|
1295 |
|
1296 If the network does support UUS then the remote user will be alerted to the |
|
1297 UUS service activation |
|
1298 |
|
1299 If the remote user accepts the UUS service activation, the ActivateUUS() request |
|
1300 will complete with KErrNone and then UUI can be transferred. |
|
1301 |
|
1302 If the remote user rejects the UUS service activation, the ActivateUUS() request |
|
1303 will complete with the error returned by the network (KErrGsmCCFacilityRejected) |
|
1304 and no UUI can be transferred. |
|
1305 |
|
1306 Use: RTelSubSessionBase::CancelAsyncRequest(EMobileCallActivateUUS) to cancel |
|
1307 a previously placed asynchronous ActivateUUS() request. |
|
1308 |
|
1309 @param aReqStatus On return, KErrNone if the UUS request was successful, an |
|
1310 error message when not. |
|
1311 @param aUUSRequest A packaged instance of RMobileCall::TMobileCallUUSRequestV1 |
|
1312 and the iServiceReq field will contain the bit-wise sum of all service activation |
|
1313 requests. |
|
1314 @capability WriteDeviceData |
|
1315 @capability NetworkServices |
|
1316 */ |
|
1317 { |
|
1318 Set(EMobileCallActivateUUS, aReqStatus, aUUSRequest); |
|
1319 } |
|
1320 |
|
1321 EXPORT_C void RMobileCall::SendUUI(TRequestStatus& aReqStatus, TBool aMore, const TMobileCallUUI& aUUI) const |
|
1322 /** Sends a UUI message for UUS2 and UUS3 services to the |
|
1323 remote user either during the call set-up or during the actual call. The client |
|
1324 must supply the message data within the aUUI parameter. |
|
1325 |
|
1326 Use RTelSubSessionBase::CancelAsyncRequest(EMobileCallSendUUI) to cancel a |
|
1327 previously placed asynchronous SendUUI() request. |
|
1328 |
|
1329 @leave KErrGsmCCAccessInformationDiscarded if congestion forces the network to |
|
1330 drop the UUI |
|
1331 @param aReqStatus On return, KErrNone if the UUI is successfully transferred |
|
1332 or with a network generated error if the network for some reason fails to |
|
1333 deliver the message to the remote user. A possible error code is |
|
1334 KErrGsmCCAccessInformationDiscarded if congestion forces the network to drop the UUI. |
|
1335 @param aMore Indicator that there is another UUI message to follow containing |
|
1336 information belonging to the same block. |
|
1337 @param aUUI The UUI element to send. |
|
1338 @capability NetworkServices |
|
1339 @capability WriteUserData |
|
1340 */ |
|
1341 { |
|
1342 __ASSERT_ALWAYS(iMmPtrHolder!=NULL,PanicClient(EEtelPanicNullHandle)); |
|
1343 |
|
1344 iMmPtrHolder->iMoreUUI = aMore; |
|
1345 TPtrC8& ptr1 = iMmPtrHolder->SetC(CMobileCallPtrHolder::ESlot2SendUUI, iMmPtrHolder->iMoreUUI); |
|
1346 |
|
1347 Set(EMobileCallSendUUI, aReqStatus, ptr1, aUUI); |
|
1348 } |
|
1349 |
|
1350 EXPORT_C void RMobileCall::ReceiveUUI(TRequestStatus& aReqStatus, TMobileCallUUI& aUUI) const |
|
1351 /** Enables the client to receive the next incoming UUI message |
|
1352 from the remote user. |
|
1353 |
|
1354 Use RTelSubSessionBase::CancelAsyncRequest(EMobileCallReceiveUUI) to cancel |
|
1355 a previously placed asynchronous ReceiveUUI() request. |
|
1356 |
|
1357 @param aReqStatus KErrNone |
|
1358 @param aUUI On completion, the UUI message data. |
|
1359 @capability NetworkServices |
|
1360 @capability ReadUserData |
|
1361 */ |
|
1362 { |
|
1363 Get(EMobileCallReceiveUUI, aReqStatus, aUUI); |
|
1364 } |
|
1365 |
|
1366 EXPORT_C void RMobileCall::HangupWithUUI(TRequestStatus& aReqStatus, const TMobileCallUUI& aUUI) const |
|
1367 /** |
|
1368 This overloaded RCall::HangUp() function member enables the client to send |
|
1369 a UUS1 data at the call release. |
|
1370 |
|
1371 Use RTelSubSessionBase::CancelAsyncRequest(EMobileCallHangupWithUUI) to cancel |
|
1372 a previously placed asynchronous HangupWithUUI() request. |
|
1373 |
|
1374 @param aReqStatus KErrNone |
|
1375 @param aUUI The UUI message to be send with the release. |
|
1376 @capability NetworkServices |
|
1377 @capability WriteUserData |
|
1378 */ |
|
1379 { |
|
1380 Set(EMobileCallHangupWithUUI,aReqStatus,aUUI); |
|
1381 } |
|
1382 |
|
1383 EXPORT_C void RMobileCall::AnswerIncomingCallWithUUI(TRequestStatus& aReqStatus, const TDesC8& aCallParams, const TMobileCallUUI& aUUI) const |
|
1384 /** |
|
1385 Enables the client to answer an incoming call and send |
|
1386 UUI to the calling party at the same time. |
|
1387 |
|
1388 Use RTelSubSessionBase::CancelAsyncRequest(EMobileCallAnswerWithUUI) to cancel |
|
1389 a previously placed asynchronous AnswerIncomingCallWIthUUI() request. |
|
1390 |
|
1391 @param aReqStatus On return, KErrNone if the call successfully connects or |
|
1392 with an error if the call fails to connect for some reason. |
|
1393 @param aCallParams The data call parameters, can be a packaged instance of |
|
1394 any of the call parameters classes. |
|
1395 @param aUUI The UUI element to send to the calling party. |
|
1396 @capability NetworkServices |
|
1397 @capability WriteUserData |
|
1398 */ |
|
1399 { |
|
1400 Set(EMobileCallAnswerWithUUI,aReqStatus,aCallParams,aUUI); |
|
1401 } |
|
1402 |
|
1403 EXPORT_C void RMobileCall::DialISV(TRequestStatus& aStatus, const TDesC8& aCallParams, const TTelNumberC& aTelNumber) |
|
1404 /** |
|
1405 Attempts to establish a connection using the telephone number specified. |
|
1406 This is an asynchronous method and is intended for use by the EtelISV API |
|
1407 |
|
1408 The mode of the connection, i.e. whether it is a data or fax connection, is |
|
1409 determined by whether the RCall object has been opened from a data line or |
|
1410 a fax line. |
|
1411 |
|
1412 This method is similar to RCall::Dial(), with two exceptions. Functionally, |
|
1413 RMobileCall::DialISV() is given lower capabilities than RCall::Dial()'s |
|
1414 NetworkServices + NetworkControl. The second difference is up to the TSY developer; |
|
1415 a TSY may chose to distinguish between a CTelephony (i.e. ETel3rdParty) |
|
1416 RMobileCall::DialISV() and an RCall::Dial() originated dial request. Although |
|
1417 it would also be correct for a TSY to treat the two in the same way; the choice |
|
1418 is left to the TSY writer and the use cases they can envisage. |
|
1419 |
|
1420 Giving this method a lower PlatSec capability requirement means that it is more |
|
1421 easily accessible to the third party developers. Also, RCall::Dial() is intended |
|
1422 for use by the Phone Application alone, thus, the higher RCall capability |
|
1423 settings may also provide it with some form of protection. Thus, this can be |
|
1424 viewed as an attempt to restrict RCall::Dial() to the Phone Application. |
|
1425 |
|
1426 The two different forms of dialling should be seen as a way of filtering the more |
|
1427 important calls, requested by the high priority Phone Application/UI, from those |
|
1428 requested by other applications. The TSY can use this filtering of call requests, |
|
1429 perhaps to use different or dedicated channels for each IPC, prioritise one over |
|
1430 the other (e.g. in the case of limited channels), etc.. |
|
1431 |
|
1432 @param aStatus A variable that indicates the completion status of the request. |
|
1433 @param aCallParams The call parameters used by the TSY (a TCallParamsPckg object). |
|
1434 @param aTelNumber The telephone number |
|
1435 @capability NetworkServices |
|
1436 */ |
|
1437 { |
|
1438 if(aTelNumber.Length()==0) |
|
1439 { |
|
1440 TRequestStatus* status=&aStatus; |
|
1441 User::RequestComplete(status,KErrArgument); |
|
1442 return; |
|
1443 } |
|
1444 Set(EMobileCallDialISV, aStatus, aCallParams, aTelNumber); |
|
1445 } |
|
1446 |
|
1447 |
|
1448 EXPORT_C void RMobileCall::AnswerIncomingCallISV(TRequestStatus& aStatus,const TDesC8& aCallParams) |
|
1449 /** |
|
1450 Waits for an incoming call and answers it when it arrives - asynchronous. |
|
1451 The function also answers calls which are ringing when it is invoked. |
|
1452 |
|
1453 This method is intended to be used by the EtelISV API |
|
1454 |
|
1455 @param aStatus A variable that indicates the completion status of the request. |
|
1456 @param aCallParams The call parameters used by the TSY (a TCallParamsPckg object). |
|
1457 @capability NetworkServices |
|
1458 */ |
|
1459 { |
|
1460 Set(EMobileCallAnswerISV, aStatus, aCallParams); |
|
1461 } |
|
1462 |
|
1463 |
|
1464 /************************************************************************************/ |
|
1465 // |
|
1466 // Multimedia Calls functional unit |
|
1467 // |
|
1468 /************************************************************************************/ |
|
1469 |
|
1470 |
|
1471 EXPORT_C void RMobileCall::AnswerMultimediaCallAsVoice(TRequestStatus& aReqStatus, const TDesC8& aCallParams, TName& aCallName) const |
|
1472 /** Rejects an incoming multimedia call, but offers fallback |
|
1473 to voice. The aCallParams is now the alternative TMobileCallParamsV1, because |
|
1474 the call is no longer data. The aCallName is now the name of the new voice |
|
1475 call created to handle the fallback to voice. |
|
1476 |
|
1477 This name is used then by the client to open the voice call by name. The TSY |
|
1478 returns the name of the new voice call object in aName parameter for the Client |
|
1479 to open. |
|
1480 |
|
1481 @param aReqStatus Upon completion this is result code of the asynchronous call |
|
1482 @param aCallParams Supplies the voice bearer call parameters. |
|
1483 @param aCallName Supplies the voice call name. |
|
1484 @capability NetworkServices |
|
1485 */ |
|
1486 { |
|
1487 SetAndGet(EMobileCallAnswerMultimediaCallAsVoice,aReqStatus,aCallParams,aCallName); |
|
1488 } |
|
1489 |
|
1490 EXPORT_C RMobileCall::TEtel3rdPartyMobileCallParamsV1::TEtel3rdPartyMobileCallParamsV1() |
|
1491 /** Default constructor */ |
|
1492 : RCall::TCallParams(), |
|
1493 iIdRestrict(EIdRestrictDefault), |
|
1494 iAutoRedial(EFalse) |
|
1495 { |
|
1496 iExtensionId=KETel3rdPartyCallParamsV1; |
|
1497 } |
|
1498 |
|
1499 |