|
1 // Copyright (c) 2001-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 the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members |
|
5 // which accompanies this distribution, and is available |
|
6 // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". |
|
7 // |
|
8 // Initial Contributors: |
|
9 // Nokia Corporation - initial contribution. |
|
10 // |
|
11 // Contributors: |
|
12 // |
|
13 // Description: |
|
14 // ETel Multimode Packet Data API |
|
15 // MBMS Broadcast,GPRS Release 97/98, CDMAOne, CDMA2000, Release 99 and Release 4. |
|
16 // |
|
17 // |
|
18 |
|
19 #if !defined(__ETELPCKT_H__) |
|
20 #define __ETELPCKT_H__ |
|
21 |
|
22 #include <e32base.h> |
|
23 #include <s32mem.h> |
|
24 #include <etel.h> |
|
25 #include <cdblen.h> |
|
26 #include <exterror.h> |
|
27 #include <etelutils.h> |
|
28 #include <mbmstypes.h> |
|
29 |
|
30 // |
|
31 // Global constants and types |
|
32 // |
|
33 |
|
34 // General |
|
35 // Passed into RTelServer::IsSupportedByModule() |
|
36 /** |
|
37 Unique Packet Data API Identifier for Packet API version 1.0. |
|
38 |
|
39 @publishedPartner |
|
40 @released |
|
41 */ |
|
42 const TInt KETelExtPcktV1 = 4000; |
|
43 /** |
|
44 Unique Packet Data API Identifier for Packet API version 2.0. |
|
45 |
|
46 @publishedPartner |
|
47 @released |
|
48 */ |
|
49 |
|
50 const TInt KETelExtPcktV2 = 8000; |
|
51 |
|
52 |
|
53 /** |
|
54 Unique Packet Data API Identifier for Packet API version 3.0. |
|
55 aka 3GPP Release 5 support |
|
56 |
|
57 @publishedPartner |
|
58 @released |
|
59 */ |
|
60 const TInt KETelExtPcktV3 = 12000; |
|
61 |
|
62 |
|
63 // GPRS-specific causes for Session Management (Annex I, 3GPP TS 24.008) |
|
64 /** This cause is sent to the MS if it requests an IMSI attachment for GPRS services, |
|
65 but is not allowed to operate GPRS services. |
|
66 |
|
67 @publishedPartner |
|
68 @released |
|
69 */ |
|
70 const TInt KErrGprsServicesNotAllowed=KErrGsmMobilityManagementBase-7; |
|
71 /** This cause is sent to the MS if it requests a combined IMSI attach for GPRS |
|
72 and non-GPRS services, but is not allowed to operate either of them. |
|
73 |
|
74 @publishedPartner |
|
75 @released |
|
76 */ |
|
77 const TInt KErrGprsAndNonGprsServicesNotAllowed=KErrGsmMobilityManagementBase-8; |
|
78 /** This cause is sent to the MS when the network cannot derive the MS's identity |
|
79 from the P-TMSI in case of an inter-SGSN routing area update. |
|
80 |
|
81 @publishedPartner |
|
82 @released |
|
83 */ |
|
84 const TInt KErrGprsMSIdentityCannotBeDerivedByTheNetwork=KErrGsmMobilityManagementBase-9; |
|
85 /** This cause is sent to the MS either if the network has implicitly detached |
|
86 the MS, e.g. some while after the Mobile reachable timer has expired, or if |
|
87 the GMM context data relating to the subscription does not exist in the SGSN, |
|
88 e.g. because of a SGSN restart. |
|
89 |
|
90 @publishedPartner |
|
91 @released |
|
92 */ |
|
93 const TInt KErrGprsMSImplicitlyDetached=KErrGsmMobilityManagementBase-10; |
|
94 /** This cause is sent to the MS if it requests a combined GPRS attachment or routing |
|
95 is updating in a PLMN where the MSC is temporarily not reachable via the GPRS |
|
96 part of the GSM network. |
|
97 |
|
98 @publishedPartner |
|
99 @released |
|
100 */ |
|
101 const TInt KErrGprsMSCTemporarilyNotReachable=KErrGsmMobilityManagementBase-16; |
|
102 /** The PDP context is deactivated because of a LLC or SNDCP failure. |
|
103 |
|
104 @publishedPartner |
|
105 @released |
|
106 */ |
|
107 const TInt KErrGprsLlcOrSndcpFailure=KErrGsmMobilityManagementBase-25; |
|
108 /** Insufficient GPRS resources are available for the request to complete successfully. |
|
109 |
|
110 @publishedPartner |
|
111 @released |
|
112 */ |
|
113 const TInt KErrGprsInsufficientResources=KErrGsmMobilityManagementBase-26; |
|
114 /** Access Point Name is either missing from the Activation request or is unknown. |
|
115 |
|
116 @publishedPartner |
|
117 @released |
|
118 */ |
|
119 const TInt KErrGprsMissingorUnknownAPN=KErrGsmMobilityManagementBase-27; |
|
120 /** The PDP address supplied with the Activation request is unknown. |
|
121 |
|
122 @publishedPartner |
|
123 @released |
|
124 */ |
|
125 const TInt KErrGprsUnknownPDPAddress=KErrGsmMobilityManagementBase-28; |
|
126 /** User authentication has failed. |
|
127 |
|
128 @publishedPartner |
|
129 @released |
|
130 */ |
|
131 const TInt KErrGprsUserAuthenticationFailure=KErrGsmMobilityManagementBase-29; |
|
132 /** The GGSN has rejected the activation request for some reason. |
|
133 |
|
134 @publishedPartner |
|
135 @released |
|
136 */ |
|
137 const TInt KErrGprsActivationRejectedByGGSN=KErrGsmMobilityManagementBase-30; |
|
138 /** The activation request has been rejected for an unspecified reason. |
|
139 |
|
140 @publishedPartner |
|
141 @released |
|
142 */ |
|
143 const TInt KErrGprsActivationRejected=KErrGsmMobilityManagementBase-31; |
|
144 /** The requested service is not supported by the PLMN. |
|
145 |
|
146 @publishedPartner |
|
147 @released |
|
148 */ |
|
149 const TInt KErrGprsServiceOptionNotSupported=KErrGsmMobilityManagementBase-32; |
|
150 /** There is no active subscription to the requested service. |
|
151 |
|
152 @publishedPartner |
|
153 @released |
|
154 */ |
|
155 const TInt KErrGprsRequestedServiceOptionNotSubscribed=KErrGsmMobilityManagementBase-33; |
|
156 /** The service is temporarily out of order. |
|
157 |
|
158 @publishedPartner |
|
159 @released |
|
160 */ |
|
161 const TInt KErrGprsServiceOptionTemporarilyOutOfOrder=KErrGsmMobilityManagementBase-34; |
|
162 /** The NSAPI supplied with the activation request is not unique. |
|
163 |
|
164 @publishedPartner |
|
165 @released |
|
166 */ |
|
167 const TInt KErrGprsNSAPIAlreadyUsed=KErrGsmMobilityManagementBase-35; |
|
168 /** The context has been deactivated successfully. |
|
169 |
|
170 @publishedPartner |
|
171 @released |
|
172 */ |
|
173 const TInt KErrGprsRegularContextDeactivation=KErrGsmMobilityManagementBase-36; |
|
174 /** The Quality of Service requested has not been accepted. |
|
175 |
|
176 @publishedPartner |
|
177 @released |
|
178 */ |
|
179 const TInt KErrGprsQoSNotAccepted=KErrGsmMobilityManagementBase-37; |
|
180 /** The GPRS network is requesting reactivation of a context. |
|
181 |
|
182 @publishedPartner |
|
183 @released |
|
184 */ |
|
185 const TInt KErrGprsReactivationRequested=KErrGsmMobilityManagementBase-39; |
|
186 /** The feature is not supported. |
|
187 |
|
188 @publishedPartner |
|
189 @released |
|
190 */ |
|
191 const TInt KErrGprsFeatureNotSupported=KErrGsmMobilityManagementBase-40; |
|
192 /** There is a semantic error in the TFT operation. |
|
193 |
|
194 @publishedPartner |
|
195 @released |
|
196 */ |
|
197 const TInt KErrGprsSemanticErrorInTFTOperation=KErrGsmMobilityManagementBase-41; |
|
198 /** There is a syntactical error in the TFT operation. |
|
199 |
|
200 @publishedPartner |
|
201 @released |
|
202 */ |
|
203 const TInt KErrGprsSyntacticalErrorInTFTOperation=KErrGsmMobilityManagementBase-42; |
|
204 /** The PDP context activation request is not active. |
|
205 |
|
206 @publishedPartner |
|
207 @released |
|
208 */ |
|
209 const TInt KErrGprsUnknownPDPContext=KErrGsmMobilityManagementBase-43; |
|
210 /** There is one or more semantic errors in packet filter(s) of the TFT. |
|
211 |
|
212 @publishedPartner |
|
213 @released |
|
214 */ |
|
215 const TInt KErrGprsSemanticErrorsInPacketFilters=KErrGsmMobilityManagementBase-44; |
|
216 /** There is one or more syntactical errors in packet filter(s) of the TFT. |
|
217 |
|
218 @publishedPartner |
|
219 @released |
|
220 */ |
|
221 const TInt KErrGprsSyntacticalErrorInPacketFilters=KErrGsmMobilityManagementBase-45; |
|
222 /** The GPRS network has already activated a PDP context without TFT. |
|
223 |
|
224 @publishedPartner |
|
225 @released |
|
226 */ |
|
227 const TInt KErrGprsPDPContextWithoutTFTAlreadyActivated=KErrGsmMobilityManagementBase-46; |
|
228 |
|
229 // UMTS-specific cause values for Call control (Annex H, 3GPP TS 24.008) |
|
230 /** QoS not available. |
|
231 |
|
232 @publishedPartner |
|
233 @released |
|
234 */ |
|
235 const TInt KErrUmtsQoSNotAvailable=KErrGsmMobilityManagementBase-49; |
|
236 |
|
237 /** Maximum number of PDP contexts supported by phone exceeded. |
|
238 |
|
239 @publishedPartner |
|
240 @released |
|
241 */ |
|
242 const TInt KErrUmtsMaxNumOfContextExceededByPhone=KErrGsmMobilityManagementBase-50; |
|
243 /** Maximum number of PDP contexts supported by the network exceeded. |
|
244 |
|
245 @publishedPartner |
|
246 @released |
|
247 */ |
|
248 const TInt KErrUmtsMaxNumOfContextExceededByNetwork=KErrGsmMobilityManagementBase-51; |
|
249 /** Phone is in offline mode. |
|
250 |
|
251 @publishedPartner |
|
252 @released |
|
253 */ |
|
254 const TInt KErrGprsOfflineMode=KErrGsmMobilityManagementBase-52; |
|
255 /** |
|
256 * MBMS network support does not exist. |
|
257 * @publishedPartner |
|
258 * @released |
|
259 */ |
|
260 const TInt KErrMbmsNotSupported=KErrGsmMobilityManagementBase-53; |
|
261 /** |
|
262 * Specific MBMS service is not available. |
|
263 * @publishedPartner |
|
264 * @released |
|
265 */ |
|
266 const TInt KErrMbmsServiceUnavailable=KErrGsmMobilityManagementBase-54; |
|
267 /** |
|
268 * Preempts low priority MBMS/Non-MBMS service. |
|
269 * @publishedPartner |
|
270 * @released |
|
271 */ |
|
272 const TInt KErrMbmsServicePreempted=KErrGsmMobilityManagementBase-55; |
|
273 /** |
|
274 * One or more invalid MBMS service entry supplied. |
|
275 * @publishedPartner |
|
276 * @released |
|
277 */ |
|
278 const TInt KErrMbmsImpreciseServiceEntries=KErrGsmMobilityManagementBase-56; |
|
279 |
|
280 class TPacketDataConfigBase |
|
281 /** Base class for the packet configuration classes. |
|
282 |
|
283 The Context configuration, QoS profile (Requested and Negotiated) and QoS |
|
284 Capabilities classes inherit from this class. It is outside the scope of all |
|
285 the Packet data classes. |
|
286 |
|
287 To allow future configuration structures (e.g. TContextConfigWCDMA, |
|
288 TContextConfigPDC, etc.) to be added in such a way that a completely different |
|
289 structure may be defined and passed into the same functions as this one, all |
|
290 existing configuration structures are derived from this thin base class |
|
291 which provides just one function, ExtensionId(). This function returns the |
|
292 one protected member variable, iExtensionId. A new structure would define an |
|
293 associated new constant to be set in iExtensionId on construction, which would |
|
294 then be queried by the TSY prior to unpackaging the structure. |
|
295 |
|
296 @see RPacketContext::TContextConfigCDMA |
|
297 @see RPacketContext::TContextConfigR99_R4 |
|
298 @see RPacketContext::TContextConfig_R5 |
|
299 @see RPacketContext::TContextConfigMbmsV1 |
|
300 |
|
301 @publishedPartner |
|
302 @released |
|
303 |
|
304 */ |
|
305 { |
|
306 public: |
|
307 /** |
|
308 Flags identifying the different packet networks. |
|
309 */ |
|
310 enum |
|
311 { |
|
312 /** |
|
313 GPRS Release 97/98 packet network. |
|
314 */ |
|
315 KConfigGPRS= 0x01, |
|
316 /** |
|
317 CDMA and CDMA2000 packet networks. |
|
318 */ |
|
319 KConfigCDMA = 0x02, |
|
320 /** |
|
321 GPRS/UMTS Release 99 and UMTS Release 4 networks. |
|
322 */ |
|
323 KConfigRel99Rel4 = 0x04, |
|
324 /** |
|
325 UMTS/IMS 3GPP Release 5 networks. |
|
326 */ |
|
327 KConfigRel5 = 0x05, |
|
328 /** |
|
329 MBMS networks |
|
330 */ |
|
331 KConfigMBMS = 0x06 |
|
332 }; |
|
333 |
|
334 /** This member returns the type of class. |
|
335 |
|
336 @return The type of class. */ |
|
337 inline TInt ExtensionId(){return iExtensionId;}; |
|
338 protected: |
|
339 /** |
|
340 Defines the type of class: either KConfigGPRS, KConfigCDMA or KConfigRel99Rel4, |
|
341 which identifies the type of packet network (GPRS R97/98, CDMA, Release 99 or 4 or 5) |
|
342 */ |
|
343 TInt iExtensionId; |
|
344 }; |
|
345 |
|
346 class TConnectionInfoBase |
|
347 /** Base class for the configuration info classes. It is outside the scope of |
|
348 all the Packet data classes. |
|
349 |
|
350 To allow future connection information structures (e.g. TConnectionInfoV2, |
|
351 TConnectionInfoV3, etc.) to be added and as a result information carried by the |
|
352 structure can be increased. All information structures are derived from this |
|
353 thin base class which provides just one function, ExtensionId(). This function |
|
354 returns the protected member variable, iExtensionId. A new structure would |
|
355 define an associated new constant to be set in iExtensionId on construction, |
|
356 which would then be queried by the TSY prior to unpackaging the structure. |
|
357 |
|
358 @see RPacketContext::TConnectionInfoV1 |
|
359 |
|
360 @publishedPartner |
|
361 @released |
|
362 */ |
|
363 { |
|
364 public: |
|
365 /** |
|
366 Flags identifying the different connection information structures |
|
367 */ |
|
368 enum |
|
369 { |
|
370 /** |
|
371 Connection information version 1. |
|
372 */ |
|
373 KConnectionInfoV1 = 0x01 |
|
374 }; |
|
375 |
|
376 /** Return the type of class. |
|
377 * |
|
378 @return The version of class. |
|
379 */ |
|
380 inline TInt ExtensionId(){return iExtensionId;}; |
|
381 |
|
382 public: |
|
383 /** A bit-wise sum of TConnectionInfoFlags indicating which of the optional |
|
384 fields contain valid data. */ |
|
385 TUint32 iValid; |
|
386 |
|
387 protected: |
|
388 /** Defines the type of class. */ |
|
389 TInt iExtensionId; |
|
390 }; |
|
391 |
|
392 class TPacketBase |
|
393 /** |
|
394 Base class for the Packet data ETel API parameters which are version dependent |
|
395 (version 2 onwards). Note that even though the 7.0 version of the API does not define |
|
396 version dependent classes, this implementation HAS been employed in the v7.0S version |
|
397 (V2.0) of the API. |
|
398 |
|
399 The TPacketBase::ExtensionId() method is used to determine which version of a packaged |
|
400 parameter has been created. |
|
401 Note that the TPacketDataConfigBase::ExtensionId() method returns a packet network |
|
402 type. |
|
403 |
|
404 @publishedPartner |
|
405 @released |
|
406 */ |
|
407 { |
|
408 public: |
|
409 IMPORT_C TInt ExtensionId() const; |
|
410 protected: |
|
411 TPacketBase(); |
|
412 TInt iExtensionId; ///< Extension identifier |
|
413 }; |
|
414 |
|
415 class TPacketType |
|
416 /** |
|
417 Base class for all the V1 parameter types. |
|
418 |
|
419 @publishedPartner |
|
420 @released |
|
421 */ |
|
422 { |
|
423 public: |
|
424 IMPORT_C TInt ExtensionId() const; |
|
425 protected: |
|
426 TPacketType(); |
|
427 void InternalizeL(RReadStream& aStream); |
|
428 void ExternalizeL(RWriteStream& aStream) const; |
|
429 protected: |
|
430 TInt iExtensionId; |
|
431 }; |
|
432 |
|
433 struct TClientId |
|
434 /**Holds the session and subsession handles which would be used |
|
435 within the 2-phase list retrieval mechanism. During both the phases, |
|
436 the client-side API code will pass down the TClientId so that TSY can use |
|
437 this information to match the first phase of the request to the second phase. */ |
|
438 { |
|
439 /** The handle to the underlying RTelServer session. */ |
|
440 TInt iSessionHandle; |
|
441 /** The handle to the sub-session to which this API request relates. */ |
|
442 TInt iSubSessionHandle; |
|
443 }; |
|
444 |
|
445 class RPacketService; |
|
446 class CPacketContextPtrHolder; |
|
447 class RPacketContext : public RTelSubSessionBase |
|
448 /** Defines the context and the configuration of a connection to the network's |
|
449 packet-switched service. |
|
450 |
|
451 The functionality associated with the context of a packet-switched connection |
|
452 (configuring, modifying, activating, etc) are encapsulated within this class. |
|
453 |
|
454 Each instance of this class has an RPacketService parent, to which it belongs. |
|
455 |
|
456 @publishedPartner |
|
457 @released |
|
458 */ |
|
459 { |
|
460 public: |
|
461 IMPORT_C RPacketContext(); |
|
462 IMPORT_C TInt OpenNewContext(RPacketService& aPacketNetwork, TDes& aContextName); |
|
463 IMPORT_C TInt OpenExistingContext(RPacketService& aPacketNetwork,const TDesC& aContextName); |
|
464 IMPORT_C void Close(); |
|
465 // |
|
466 // Nested classes dealing with context configurations for each network type |
|
467 // |
|
468 enum {KGSNNameLength = 252}; // 3GPP TS 24.008, section 10.5.6.1 gives a range of 3 - 102 octets for the APN. 252 has been chosen as an adequate value for practical purposes. |
|
469 enum {KMaxPDPAddressLength = KCommsDbSvrMaxFieldLength}; |
|
470 enum |
|
471 { |
|
472 KPdpDataCompression = 0x01, |
|
473 KPdpHeaderCompression = 0x02 |
|
474 }; |
|
475 |
|
476 /** Buffer to hold the GSN address. |
|
477 |
|
478 @see KGSNNameLength */ |
|
479 typedef TBuf8<KGSNNameLength> TGSNAddress; ///< GPRS Support Node (GSN) name |
|
480 /** Buffer to hold the protocol address. |
|
481 |
|
482 @see KMaxPDPAddressLength */ |
|
483 typedef TBuf8<KMaxPDPAddressLength> TProtocolAddress; ///< GPRS Rel97/98, CDMA, Rel99 and Rel4. |
|
484 |
|
485 // |
|
486 // TProtocolType - defines the protocol used to connect to the packet data gateway |
|
487 // |
|
488 /** Defines the protocol used to connect to the packet data gateway. |
|
489 |
|
490 Modes: GRPS */ |
|
491 enum TProtocolType |
|
492 { |
|
493 /** IPv4 type gateway. |
|
494 |
|
495 Modes: GRPS */ |
|
496 EPdpTypeIPv4, |
|
497 /** IPv6 type gateway. |
|
498 |
|
499 Modes: GPRS */ |
|
500 EPdpTypeIPv6, |
|
501 /** X.25 type gateway. |
|
502 |
|
503 Modes: GPRS */ |
|
504 EPdpTypeX25, |
|
505 /** PPP type gateway. |
|
506 |
|
507 Modes: GRPS, CDMA */ |
|
508 EPdpTypePPP, |
|
509 /** CDPD type gateway. |
|
510 |
|
511 Modes: CDMA */ |
|
512 EPdpTypeCDPD |
|
513 }; |
|
514 |
|
515 // |
|
516 // TServiceOption - service option numbers are CDMA specific and used in the API to |
|
517 // identify the various packet data services available on the CDMA packet network. |
|
518 // |
|
519 /** Service option numbers identify the various packet data services available |
|
520 on the CDMA packet network. |
|
521 |
|
522 Modes: CDMA */ |
|
523 enum TServiceOption |
|
524 { |
|
525 /** Service Options 7 and 15, 8-16. */ |
|
526 KLowSpeedData = 0x01, |
|
527 /** Service Options 22-25 IP and 26-29 CDPD. */ |
|
528 KHighSpeedData = 0x02, |
|
529 /** Service Option 33 on CDMA2000 network only. */ |
|
530 KHighSpeedCDMA2000Data = 0x04 |
|
531 }; |
|
532 |
|
533 /** Anonymous access required. |
|
534 |
|
535 Modes: GRPS, CDMA */ |
|
536 enum TAnonymousAccess |
|
537 { |
|
538 /** Anonymous access not applicable. |
|
539 |
|
540 Modes: GRPS, CDMA */ |
|
541 ENotApplicable, |
|
542 /** Anonymous access required. |
|
543 |
|
544 Modes: GRPS */ |
|
545 ERequired, |
|
546 /** Anonymous access not required. |
|
547 |
|
548 Modes: GPRS */ |
|
549 ENotRequired |
|
550 }; |
|
551 |
|
552 enum { KMaxAuthDataLength = 50 }; |
|
553 /** Buffer for various sorts of authorisation data since version 2 of the API. |
|
554 |
|
555 Supported from v7.0S. |
|
556 */ |
|
557 typedef TBuf8<KMaxAuthDataLength> TAuthData; |
|
558 |
|
559 // |
|
560 // TAuthProtocol - this enables the client to set the protocol type used on the context |
|
561 // |
|
562 enum TAuthProtocol |
|
563 { |
|
564 EProtocolNone, |
|
565 EProtocolPAP, |
|
566 EProtocolCHAP |
|
567 }; |
|
568 |
|
569 // |
|
570 // TAuthInfo - this enables the client to set the authentication data used on the context |
|
571 // |
|
572 struct TAuthInfo |
|
573 { |
|
574 TAuthProtocol iProtocol; |
|
575 TAuthData iUsername; |
|
576 TAuthData iPassword; |
|
577 }; |
|
578 |
|
579 // |
|
580 // TDnsInfoV2 - this class enables the client to set the primary and secondary DNS server |
|
581 // names used on the context |
|
582 // |
|
583 class TDnsInfoV2 : public TPacketBase |
|
584 /** |
|
585 Enables the client to set the primary and secondary DNS server |
|
586 names used on the context since version 2 of the API. |
|
587 |
|
588 Supported from v7.0S. |
|
589 |
|
590 @publishedPartner |
|
591 @released |
|
592 */ |
|
593 { |
|
594 public: |
|
595 IMPORT_C TDnsInfoV2(); |
|
596 public: |
|
597 /** Primary DNS server name.*/ |
|
598 TProtocolAddress iPrimaryDns; |
|
599 /** Secondary DNS server name.*/ |
|
600 TProtocolAddress iSecondaryDns; |
|
601 }; |
|
602 /** |
|
603 DNS information package since version 2 of the API. |
|
604 |
|
605 Supported from v7.0S. |
|
606 */ |
|
607 typedef TPckg<TDnsInfoV2> TTDnsInfoV2Pckg; |
|
608 |
|
609 // |
|
610 // - this buffer can be used to store protocol related data |
|
611 // (such as "PPP config options") which do not fit into the other fields of the |
|
612 // TProtocolConfigOptionV2 class (see below). The length of the buffer is based on |
|
613 // the previous buffer used (before TProtocolConfigOptionV2 was implemented), which |
|
614 // was based on 3GPP TS 24.008 (253 octets). |
|
615 // |
|
616 enum {KMiscProtocolBufferLength = 253}; |
|
617 typedef TBuf8<KMiscProtocolBufferLength> TMiscProtocolBuffer; |
|
618 |
|
619 class TProtocolConfigOptionV2 : public TPacketBase |
|
620 /** |
|
621 Holds authentication data encapsulated in TAuthInfo, as |
|
622 well as further data that may be required for CHAP protocol |
|
623 authentication, such a challenge and response, since version |
|
624 2 of the API. |
|
625 |
|
626 Can contain the DNS server names, the username, password, |
|
627 and CHAP associated data. |
|
628 |
|
629 Normal authentication uses only TAuthInfo::iUsername and |
|
630 TAuthInfo::iPassword. The other parameters are for secure |
|
631 authentication. |
|
632 |
|
633 The maximum combined length of the TAuthInfo::iUsername |
|
634 and the secure information (iPassword or iResponse) is 50 bytes. |
|
635 |
|
636 Rather than keep the Protocol Config Option as a buffer it |
|
637 is encapsulated as a class. This enables data extraction to |
|
638 occur easily. |
|
639 |
|
640 Supported from v7.0S. |
|
641 |
|
642 @publishedPartner |
|
643 @released |
|
644 */ |
|
645 { |
|
646 public: |
|
647 IMPORT_C TProtocolConfigOptionV2(); |
|
648 public: |
|
649 /** Authentication data.*/ |
|
650 TAuthInfo iAuthInfo; |
|
651 /** The pseudorandom data that is chosen by the client.*/ |
|
652 TAuthData iChallenge; |
|
653 /** Calculated by the client with the MD5 algorithm using |
|
654 iChallenge, iId and iPassword.*/ |
|
655 TAuthData iResponse; |
|
656 /** A one byte identifier that is chosen by the client.*/ |
|
657 TUint8 iId; |
|
658 /** Primary and secondary DNS server names since version 2 |
|
659 of the API.*/ |
|
660 TDnsInfoV2 iDnsAddresses; |
|
661 TMiscProtocolBuffer iMiscBuffer; |
|
662 }; |
|
663 |
|
664 |
|
665 class TContextConfigGPRS : public TPacketDataConfigBase |
|
666 /** |
|
667 Context configurations for GPRS packet data support. |
|
668 |
|
669 Contains all the data necessary to configure a context on a GPRS network or |
|
670 UMTS packet network. |
|
671 |
|
672 @publishedPartner |
|
673 @released |
|
674 */ |
|
675 { |
|
676 public: |
|
677 IMPORT_C TContextConfigGPRS(); |
|
678 public: |
|
679 /** The GPRS protocol type. The default value is EpdpTypeIPv4. |
|
680 |
|
681 @see TProtocolType */ |
|
682 TProtocolType iPdpType; |
|
683 /** The GPRS Access point name. The default value is an empty string. |
|
684 |
|
685 @see TGSNAddress */ |
|
686 TGSNAddress iAccessPointName; |
|
687 /** The GPRS protocol address. The default value is an empty string. |
|
688 |
|
689 @see TProtocolAddress */ |
|
690 TProtocolAddress iPdpAddress; |
|
691 /** The GRPS compression. This is a bit-wise sum of the wanted compression. The |
|
692 default value is 0. |
|
693 |
|
694 @see KPdpDataCompression |
|
695 @see KPdpHeaderCompression */ |
|
696 TUint iPdpCompression; |
|
697 /** Anonymous access requested. The default value is ENotRequired. |
|
698 |
|
699 @see TAnonymousAccess */ |
|
700 TAnonymousAccess iAnonymousAccessReqd; |
|
701 /** Use Edge. The default value is EFalse. True for EGPRS.*/ |
|
702 TBool iUseEdge; // |
|
703 /** Protocol configuration options for version 2 of the API. |
|
704 |
|
705 Supported from v7.0S.*/ |
|
706 TProtocolConfigOptionV2 iProtocolConfigOption; |
|
707 /** Network initiated context indication. */ |
|
708 TBool iNWIContext; |
|
709 }; |
|
710 |
|
711 |
|
712 /** |
|
713 Identifiers for Packet Flow Context. See Table 10.5.161/3GPP TS 24.008. |
|
714 */ |
|
715 enum TPacketFlowIdentifier |
|
716 { |
|
717 /** |
|
718 Best Effort |
|
719 */ |
|
720 EBestEffort, |
|
721 /** |
|
722 Signalling |
|
723 */ |
|
724 ESignalling, |
|
725 /** |
|
726 Sms |
|
727 */ |
|
728 ESms |
|
729 }; |
|
730 |
|
731 class TContextConfigR99_R4 : public TPacketDataConfigBase |
|
732 /** |
|
733 Enables Release 99 and Release 4 context configuration for version 2 of |
|
734 the API. |
|
735 |
|
736 Contains all the data necessary to configure a context on a R99/R4 packet |
|
737 network. |
|
738 |
|
739 Supported from v7.0S. |
|
740 |
|
741 @publishedPartner |
|
742 @released |
|
743 */ |
|
744 { |
|
745 public: |
|
746 IMPORT_C TContextConfigR99_R4(); |
|
747 public: |
|
748 /** The Rel99/Rel4 protocol type. The default value is EpdpTypeIPv4.*/ |
|
749 TProtocolType iPdpType; |
|
750 /** The Rel99/Rel4 access point name. The default is an empty string.*/ |
|
751 TGSNAddress iAccessPointName; |
|
752 /** The Rel99/Rel4 protocol address. The default value is an empty string.*/ |
|
753 TProtocolAddress iPdpAddress; |
|
754 /** Use Edge. The default is EFalse. True for EGPRS.*/ |
|
755 TBool iUseEdge; |
|
756 /** Protocol configuration options.*/ |
|
757 TProtocolConfigOptionV2 iProtocolConfigOption; |
|
758 TBool iNWIContext; // Network initiated context indication. |
|
759 TPacketFlowIdentifier iPFI; // Packet Flow indicator. |
|
760 }; |
|
761 |
|
762 class TContextConfigCDMA : public TPacketDataConfigBase |
|
763 /** |
|
764 Enables context configurations for CDMA and CDMA2000 packet data |
|
765 and high speed packet data support. |
|
766 |
|
767 Contains all the data necessary to configure a context on a CDMA packet |
|
768 network. |
|
769 |
|
770 @publishedPartner |
|
771 @released |
|
772 */ |
|
773 { |
|
774 public: |
|
775 IMPORT_C TContextConfigCDMA(); |
|
776 public: |
|
777 /** Identifies the CDMA packet service option range (Low, High, High CDMA2000). |
|
778 The default value is KLowSpeedData. |
|
779 |
|
780 @see TServiceOption */ |
|
781 TUint iServiceOption; |
|
782 /** The CDMA protocol type, either PPP or CDPD. The default value is EPdpTypePPP. |
|
783 |
|
784 @see TProtocolType */ |
|
785 TProtocolType iProtocolType; |
|
786 }; |
|
787 |
|
788 // Configuration-related calls |
|
789 IMPORT_C void SetConfig(TRequestStatus& aStatus, const TDesC8& aConfig) const; |
|
790 IMPORT_C void GetConfig(TRequestStatus& aStatus, TDes8& aConfig) const; |
|
791 IMPORT_C void NotifyConfigChanged(TRequestStatus& aStatus, TDes8& aConfig) const; |
|
792 IMPORT_C void Activate(TRequestStatus& aStatus) const; |
|
793 IMPORT_C void Deactivate(TRequestStatus& aStatus) const; |
|
794 IMPORT_C void Delete(TRequestStatus& aStatus) const; |
|
795 IMPORT_C void LoanCommPort(TRequestStatus& aStatus, RCall::TCommPort& aDataPort) const; // Deprecated method. |
|
796 IMPORT_C void RecoverCommPort(TRequestStatus& aStatus) const; // Deprecated method. |
|
797 IMPORT_C void GetDnsInfo(TRequestStatus& aStatus, TDes8& aDnsInfo) const; |
|
798 |
|
799 |
|
800 |
|
801 enum TContextStatus |
|
802 { |
|
803 /** Current status is unknown. */ |
|
804 EStatusUnknown, |
|
805 /** Context is not activated. */ |
|
806 EStatusInactive, |
|
807 /** Context is currently being activated. */ |
|
808 EStatusActivating, |
|
809 /** Context is active. */ |
|
810 EStatusActive, |
|
811 /** Context is currently being deactivated. */ |
|
812 EStatusDeactivating, |
|
813 /** Context is suspended. */ |
|
814 EStatusSuspended, |
|
815 /** Context has been deleted. */ |
|
816 EStatusDeleted, |
|
817 /** Context is currently in data receiving mode.The service transitions |
|
818 to this state when the data transmission starts.This is expected |
|
819 to happen after some time of arrival of SESSION START message from the network. |
|
820 Note : Applicable only to MBMS context */ |
|
821 EStatusReceiving |
|
822 }; |
|
823 |
|
824 IMPORT_C TInt GetStatus(TContextStatus& aContextStatus) const; |
|
825 IMPORT_C void NotifyStatusChange(TRequestStatus& aStatus,TContextStatus& aContextStatus); |
|
826 IMPORT_C TInt GetProfileName(TName& aQoSProfile) const; |
|
827 |
|
828 struct TDataVolume |
|
829 /** Holds the amount of sent and received data. |
|
830 |
|
831 The total number of bytes sent is: iOverflowCounterSent*(2^32)+iOverflowCounterSent */ |
|
832 { |
|
833 TUint32 iBytesSent; |
|
834 /** Overflow counter for the bytes sent. |
|
835 |
|
836 The total number of bytes sent is: iOverflowCounterSent*(2^32)+iOverflowCounterSent */ |
|
837 TUint32 iOverflowCounterSent; |
|
838 /** The number of bytes received. |
|
839 |
|
840 The total number of bytes received is: iOverflowCounterReceived*(2^32)+iOverflowCounterReceived */ |
|
841 TUint32 iBytesReceived; |
|
842 /** Overflow counter for the bytes received. |
|
843 |
|
844 The total number of bytes received is: iOverflowCounterReceived*(2^32)+iOverflowCounterReceived */ |
|
845 TUint32 iOverflowCounterReceived; |
|
846 }; |
|
847 |
|
848 struct TNotifyDataTransferredRequest |
|
849 { |
|
850 TUint iRcvdGranularity; |
|
851 TUint iSentGranularity; |
|
852 }; |
|
853 |
|
854 /** |
|
855 Determines which fields in the TConnectionInfoXXX parameter class are valid. |
|
856 |
|
857 @see TConnectionInfoV1 |
|
858 */ |
|
859 enum TConnectionInfoFlags |
|
860 { |
|
861 /** The HSDPA category field is valid in the connection info class. |
|
862 |
|
863 Modes: WCDMA */ |
|
864 KHSDPACategory = 0x00000001, |
|
865 |
|
866 /** The HSUPA category field is valid in the connection info class. |
|
867 |
|
868 Modes: WCDMA */ |
|
869 KHSUPACategory = 0x00000002 |
|
870 }; |
|
871 |
|
872 class TConnectionInfoV1 : public TConnectionInfoBase |
|
873 /** |
|
874 Connection info class is used to carry miscellaneous information about data connection. |
|
875 |
|
876 Contains all kind of packet data connection related information that is useful for |
|
877 ETel API clients. |
|
878 |
|
879 Supported from v9.5. |
|
880 |
|
881 @publishedPartner |
|
882 @released |
|
883 */ |
|
884 { |
|
885 public: |
|
886 IMPORT_C TConnectionInfoV1(); |
|
887 public: |
|
888 /**HSDPA UE category as defined in 3GPP TS 25.306 Table 5.1a: "FDD |
|
889 HS-DSCH physical layer categories". Value "0" means HSDPA is not used, |
|
890 value "1" means category 1, value "2" means category 2 etc.*/ |
|
891 TUint iHSDPACategory; |
|
892 |
|
893 /*HSUPA (E-DCH) UE category as defined in 3GPP TS 25.306 Table 5.1g: |
|
894 "FDD E-DCH physical layer categories". Value "0" means HSUPA is not used, |
|
895 value "1" means category 1, value "2" means category 2 etc.*/ |
|
896 TUint iHSUPACategory; |
|
897 }; |
|
898 |
|
899 |
|
900 IMPORT_C TInt GetDataVolumeTransferred(TDataVolume& aVolume) const; // Deprecated method. |
|
901 IMPORT_C void NotifyDataTransferred(TRequestStatus& aStatus, TDataVolume& aVolume, TUint aRcvdGranularity=0x1000,TUint aSentGranularity=0x1000) const; |
|
902 IMPORT_C void GetConnectionSpeed(TRequestStatus& aStatus, TUint& aRate) const; // get the current speed (bits per second) of the connection |
|
903 IMPORT_C void NotifyConnectionSpeedChange(TRequestStatus& aStatus, TUint& aRate) const; // notify client if there's a change in the connection speed |
|
904 |
|
905 // N.B. the following 2 methoda are only supported if telephony was built with SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW macro |
|
906 IMPORT_C void GetConnectionInfo(TRequestStatus& aStatus, TDes8& aInfo) const; // get connection information |
|
907 IMPORT_C void NotifyConnectionInfoChange(TRequestStatus &aStatus, TDes8& aInfo) const; // notify client if connection information changes |
|
908 |
|
909 IMPORT_C TInt GetLastErrorCause(TInt& aError) const; |
|
910 |
|
911 IMPORT_C void GetDataVolumeTransferred(TRequestStatus& aStatus, TDataVolume& aVolume) const; // Recommended method variant. |
|
912 |
|
913 class TDataChannelV2 : public TPacketBase |
|
914 /** |
|
915 Contains data channel parameters. |
|
916 |
|
917 Contains the information previously returned by LoanCommPort() |
|
918 (iCsy and iPort), as well as the new information which is generated |
|
919 by context creation, e.g. the context (data channel) identity, |
|
920 for version 2 of the API. |
|
921 |
|
922 It is passed as a packaged parameter to RPacketContext::InitialiseContext(). |
|
923 |
|
924 @publishedPartner |
|
925 @released |
|
926 */ |
|
927 { |
|
928 public: |
|
929 IMPORT_C TDataChannelV2(); |
|
930 public: |
|
931 /**CSY name. |
|
932 @deprecated Data previously used by LoanDataPort() in version 1 of the API.*/ |
|
933 TFileName iCsy; |
|
934 /**Port name |
|
935 @deprecated Data previously used by LoanDataPort(). */ |
|
936 TName iPort; |
|
937 /**Context Identity. |
|
938 The Channel name information returned by the lower layers (Nif). */ |
|
939 TName iChannelId; |
|
940 }; |
|
941 /** |
|
942 Data channel package since version 2 of the API. |
|
943 |
|
944 Supported from v7.0S. |
|
945 */ |
|
946 typedef TPckg<TDataChannelV2> TDataChannelV2Pckg; |
|
947 |
|
948 IMPORT_C void InitialiseContext(TRequestStatus& aStatus, TDes8& aDataChannelV2Pckg) const; // This method supersedes the LoanCommPort() and RecoverCommPort() methods. |
|
949 |
|
950 enum {KIPAddressSize = 16}; ///< TIPAddress size |
|
951 /** |
|
952 Array to hold either IPv4 or IPv6 address or Subnet mask since version 2 of the API. |
|
953 |
|
954 Supported from v7.0S. |
|
955 */ |
|
956 typedef TUint8 TIPAddress[KIPAddressSize]; |
|
957 |
|
958 |
|
959 class TPacketFilterV2 : public TPacketBase |
|
960 /** |
|
961 Packet filter package since version 2 of the API. |
|
962 |
|
963 Contains member data compatible with parameters required for configuring |
|
964 a packet filter on a Rel99/R4 packet network. |
|
965 |
|
966 Inherits from the TPacketBase class to make it future |
|
967 proof (extensible). |
|
968 |
|
969 Supported from v7.0S. |
|
970 |
|
971 @publishedPartner |
|
972 @released |
|
973 */ |
|
974 |
|
975 { |
|
976 public: |
|
977 IMPORT_C TPacketFilterV2(); |
|
978 public: |
|
979 /** Packet filter identifier. Value range: 1 - 8.*/ |
|
980 TInt iId; |
|
981 /** Evaluation Precedence Index. Value range: 255 (lowest) - 0 (highest).*/ |
|
982 TInt iEvaluationPrecedenceIndex; |
|
983 /** Domain Source address.*/ |
|
984 TIPAddress iSrcAddr; |
|
985 /** Domain Subnet mask.*/ |
|
986 TIPAddress iSrcAddrSubnetMask; |
|
987 /** Protocol number (IPv4) or Next Header (IPv6) field of incoming packets. |
|
988 Value range 0 - 255.*/ |
|
989 TInt iProtocolNumberOrNextHeader; |
|
990 /** Minimum source port number of incoming packets. Value range 0 - 65535.*/ |
|
991 TInt iSrcPortMin; |
|
992 /** Maximum source port number of incoming packets. Value range 0 - 65535.*/ |
|
993 TInt iSrcPortMax; |
|
994 /** Lowest destination port number of incoming packets. Value range 0 - 65535.*/ |
|
995 TInt iDestPortMin; |
|
996 /** Maximum destination port number of incoming packets. Value range 0 - 65535.*/ |
|
997 TInt iDestPortMax; |
|
998 /** Security Parameter Index, 32-bit field.*/ |
|
999 TUint32 iIPSecSPI; |
|
1000 /** Type of Service (IPv4) or Traffic Class (IPv6). |
|
1001 1 octet TOS/Traffic class + 1 octet TOS/Traffic class Mask.*/ |
|
1002 TUint16 iTOSorTrafficClass; |
|
1003 /** Flow label (IPv6 only) of incoming packets. 3 octets with 20-bit field |
|
1004 containing the flow label.*/ |
|
1005 TUint32 iFlowLabel; |
|
1006 }; |
|
1007 /** Packaged TPacketFilterV2.*/ |
|
1008 typedef TPckg<TPacketFilterV2> TPacketFilterV2Pckg; |
|
1009 |
|
1010 |
|
1011 /** |
|
1012 Maximum length of DNS Fully Qualified Domain Name (RFC 1123) |
|
1013 |
|
1014 @internalComponent |
|
1015 */ |
|
1016 enum TFQDNLength |
|
1017 { |
|
1018 KMaxFQDNLength=255, |
|
1019 }; |
|
1020 |
|
1021 typedef TBuf8<KMaxFQDNLength> TAuthorizationToken; |
|
1022 |
|
1023 /** |
|
1024 Packet Filter type identifier. |
|
1025 |
|
1026 @publishedPartner |
|
1027 @released |
|
1028 */ |
|
1029 enum TPacketFilterType |
|
1030 { |
|
1031 /** Unknown filter type.*/ |
|
1032 EPacketFilterTypeUnknown, |
|
1033 /** Filter Type One.*/ |
|
1034 EPacketFilterTypeOne, |
|
1035 /** Filter Type Two.*/ |
|
1036 EPacketFilterTypeTwo, |
|
1037 /** Filter Type Three.*/ |
|
1038 EPacketFilterTypeThree, |
|
1039 }; |
|
1040 |
|
1041 class TPacketFilterV3 : public TPacketFilterV2 |
|
1042 /** |
|
1043 Packet filter that supports packet filter types. |
|
1044 Contains member data compatible with parameters required |
|
1045 for configuring a packet filter on a Rel99/R4/R5 packet network. . |
|
1046 |
|
1047 Inherits from the TPacketFilterV2 class. |
|
1048 |
|
1049 Supported from 9.1 |
|
1050 |
|
1051 @publishedPartner |
|
1052 @released |
|
1053 */ |
|
1054 { |
|
1055 public: |
|
1056 IMPORT_C TPacketFilterV3(TPacketFilterType aType); |
|
1057 IMPORT_C TPacketFilterV3(); |
|
1058 enum TPacketFilterDataBitmapPos |
|
1059 { |
|
1060 /** Bitmap for Domain Source address.*/ |
|
1061 EPacketFilterSrcAddr = 0x001, |
|
1062 /** Bitmap for Domain Subnet mask.*/ |
|
1063 EPacketFilterSrcAddrSubnetMask = 0x002, |
|
1064 /** Bitmap for Protocol number (IPv4) or Next Header (IPv6) field of incoming packets.*/ |
|
1065 EPacketFilterProtocolNumberOrNextHeader = 0x004, |
|
1066 /** Bitmap for Minimum source port number of incoming packets.*/ |
|
1067 EPacketFilterSrcPortMin = 0x008, |
|
1068 /** Bitmap for Maximum source port number of incoming packets.*/ |
|
1069 EPacketFilterSrcPortMax = 0x010, |
|
1070 /** Bitmap for Lowest destination port number of incoming packets.*/ |
|
1071 EPacketFilterDestPortMin = 0x020, |
|
1072 /** Bitmap for Maximum destination port number of incoming packets.*/ |
|
1073 EPacketFilterDestPortMax = 0x040, |
|
1074 /** Bitmap for Security Parameter Index.*/ |
|
1075 EPacketFilterIPSecSPI = 0x080, |
|
1076 /** Bitmap for Type of Service (IPv4) or Traffic Class (IPv6).*/ |
|
1077 EPacketFilterTOSorTrafficClass = 0x100, |
|
1078 /** Bitmap for Flow label (IPv6 only) of incoming packets.*/ |
|
1079 EPacketFilterFlowLabel = 0x200, |
|
1080 }; |
|
1081 |
|
1082 inline TBool IsPresent(TPacketFilterDataBitmapPos aDataMemberBitmapPos); |
|
1083 inline void Reset(TPacketFilterDataBitmapPos aDataMemberBitmapPos); |
|
1084 inline void Reset(); |
|
1085 public: |
|
1086 /** Packet filter identifier. Value range: 1 - 8.*/ |
|
1087 using TPacketFilterV2::iId; |
|
1088 /** Evaluation Precedence Index. Value range: 255 (lowest) - 0 (highest).*/ |
|
1089 using TPacketFilterV2::iEvaluationPrecedenceIndex; |
|
1090 |
|
1091 public: |
|
1092 |
|
1093 IMPORT_C TBool SetSrcAddr(TIPAddress &aSrcAddr); |
|
1094 IMPORT_C TBool SetSrcAddrSubnetMask(TIPAddress &aSrcAddrSubnetMask); |
|
1095 |
|
1096 IMPORT_C TBool SetProtocolNumberOrNextHeader(TInt aProtocolNumberOrNextHeader); |
|
1097 |
|
1098 IMPORT_C TBool SetSrcPortMin(TInt aSrcPortMin); |
|
1099 IMPORT_C TBool SetSrcPortMax(TInt aSrcPortMax); |
|
1100 |
|
1101 IMPORT_C TBool SetDestPortMin(TInt aDestPortMin); |
|
1102 IMPORT_C TBool SetDestPortMax(TInt aDestPortMax); |
|
1103 |
|
1104 IMPORT_C TBool SetSPI(TUint32 aIPSecSPI); |
|
1105 |
|
1106 IMPORT_C TBool SetTOSorTrafficClass(TUint16 aTOSorTrafficClass); |
|
1107 IMPORT_C TBool SetFlowLabel(TUint32 aFlowLabel); |
|
1108 |
|
1109 |
|
1110 public: |
|
1111 |
|
1112 /** Return the Domain Source address. |
|
1113 |
|
1114 @return Domain Source address. |
|
1115 */ |
|
1116 inline const TIPAddress& SrcAddr() |
|
1117 { |
|
1118 return iSrcAddr; |
|
1119 }; |
|
1120 |
|
1121 /** Return the Domain Subnet mask. |
|
1122 |
|
1123 @return Domain Subnet mask. |
|
1124 */ |
|
1125 inline const TIPAddress& SrcAddrSubnetMask() |
|
1126 { |
|
1127 return iSrcAddrSubnetMask; |
|
1128 }; |
|
1129 |
|
1130 inline TInt ProtocolNumberOrNextHeader(); |
|
1131 |
|
1132 inline TInt SrcPortMin(); |
|
1133 inline TInt SrcPortMax(); |
|
1134 |
|
1135 inline TInt DestPortMin(); |
|
1136 inline TInt DestPortMax(); |
|
1137 |
|
1138 inline TUint32 SPI(); |
|
1139 |
|
1140 inline TUint16 TOSorTrafficClass(); |
|
1141 inline TUint32 FlowLabel(); |
|
1142 protected: |
|
1143 /** Initialised in the constructor - type can be I, II or III |
|
1144 */ |
|
1145 TPacketFilterType iType; |
|
1146 /** Bitmap of allowed attributes set in the constructor in accordance to type |
|
1147 of the filter as defined in TS 23.060. |
|
1148 */ |
|
1149 TUint16 iAllowedDataBitmap; |
|
1150 /** Bitmap of data members that are set(initialised) - data member can be set |
|
1151 in allowed for the specified type of the filter only. |
|
1152 */ |
|
1153 TUint16 iPresentDataBitmap; |
|
1154 }; |
|
1155 /** Packaged TPacketFilterV3.*/ |
|
1156 typedef TPckg<TPacketFilterV3> TPacketFilterV3Pckg; |
|
1157 |
|
1158 /** |
|
1159 Contains Authorization Token and associated Flow Identifiers. |
|
1160 Defines member data needed to set media authorization TFT parameters - single Authorization Token parameter |
|
1161 followed by the list of Flow Identifier parameter(s), as defined in 3GPP TS 24.008. |
|
1162 |
|
1163 Contains data member that's instance of TPacketBase class to make it future proof (extensible); In order to support serialization, |
|
1164 present implementation of TPacketBase has to be extended so that it supports methods needed (ExternalizeL()/InternalizeL()). |
|
1165 Supported from 9.1. |
|
1166 |
|
1167 @publishedPartner |
|
1168 @released |
|
1169 */ |
|
1170 class CTFTMediaAuthorizationV3 : public CBase |
|
1171 { |
|
1172 public: |
|
1173 IMPORT_C ~CTFTMediaAuthorizationV3(); |
|
1174 IMPORT_C static CTFTMediaAuthorizationV3* NewL(); |
|
1175 public: |
|
1176 IMPORT_C virtual void ExternalizeL(HBufC8*& aBuffer) const; |
|
1177 IMPORT_C virtual void InternalizeL(TDes8& aBuffer); |
|
1178 IMPORT_C TUint ExtensionId()const; |
|
1179 |
|
1180 |
|
1181 /** Flow identifier */ |
|
1182 struct TFlowIdentifier |
|
1183 { |
|
1184 /** Media component number. */ |
|
1185 TUint16 iMediaComponentNumber; |
|
1186 /** IP flow number. */ |
|
1187 TUint16 iIPFlowNumber; |
|
1188 }; |
|
1189 /** Authorization token */ |
|
1190 TAuthorizationToken iAuthorizationToken; |
|
1191 /** List of flow identifiers authorization token is granted for*/ |
|
1192 RArray<TFlowIdentifier> iFlowIds; |
|
1193 protected: |
|
1194 CTFTMediaAuthorizationV3(); |
|
1195 TUint iExtensionId; |
|
1196 }; |
|
1197 |
|
1198 IMPORT_C void AddMediaAuthorizationL(TRequestStatus& aStatus, CTFTMediaAuthorizationV3& aMediaAuthorization) const; |
|
1199 IMPORT_C void RemoveMediaAuthorization(TRequestStatus& aStatus, TAuthorizationToken& aAuthorizationToken) const; |
|
1200 |
|
1201 |
|
1202 IMPORT_C TInt OpenNewSecondaryContext(RPacketService& aPacketService, const TDesC& aExistingContextName, TDes& aNewContextName); |
|
1203 IMPORT_C void EnumeratePacketFilters(TRequestStatus& aStatus, TInt& aCount) const; |
|
1204 IMPORT_C void GetPacketFilterInfo(TRequestStatus& aStatus, TInt aIndex, TDes8& aPacketFilterInfo) const; |
|
1205 IMPORT_C void AddPacketFilter(TRequestStatus& aStatus, const TDesC8& aPacketFilterInfo) const; |
|
1206 IMPORT_C void RemovePacketFilter(TRequestStatus& aStatus, TInt aId) const; |
|
1207 IMPORT_C void ModifyActiveContext(TRequestStatus& aStatus) const; |
|
1208 IMPORT_C void CreateNewTFT(TRequestStatus& aStatus, const TInt aSize) const; |
|
1209 IMPORT_C void DeleteTFT(TRequestStatus& aStatus) const; |
|
1210 |
|
1211 |
|
1212 |
|
1213 /** |
|
1214 Protocol identifiers, as defined in 24.008, section 10.5.6.3 |
|
1215 */ |
|
1216 enum TPcoProtocolId |
|
1217 { |
|
1218 /** PCO identifier for LCP.*/ |
|
1219 EETelPcktProtocolLcpId = 0xc021, |
|
1220 /** PCO identifier for PAP.*/ |
|
1221 EETelPcktProtocolPapId = 0xc023, |
|
1222 /** PCO identifier for CHAP.*/ |
|
1223 EETelPcktProtocolChapId = 0xc223, |
|
1224 /** PCO identifier for IPCP.*/ |
|
1225 EETelPcktProtocolIpcpId = 0x8021 |
|
1226 }; |
|
1227 |
|
1228 /** |
|
1229 PCO additional parameter identifiers in MS to network direction, as defined in 3GPP TS 24.008, section 10.5.6.3 |
|
1230 */ |
|
1231 enum TPcoIDMSToNetwork |
|
1232 { |
|
1233 /** PCO MS additional parameter identifier for a PCSCF address request.*/ |
|
1234 EEtelPcktPCSCFAddressRequest = 0x01, |
|
1235 /** PCO MS additional parameter identifier for an IM CN subsystem signalling flag.*/ |
|
1236 EEtelPcktIMCNMSSubsystemSignallingFlag = 0x02, |
|
1237 /** PCO MS additional parameter identifier for a DNS server address request.*/ |
|
1238 EEtelPcktDNSServerAddressRequest = 0x03, |
|
1239 /** Not currently supported.*/ |
|
1240 EEtelPcktNotSupported = 0x04, |
|
1241 }; |
|
1242 |
|
1243 /** |
|
1244 PCO additional parameter identifiers in network to MS direction, as defined in 3GPP TS 24.008, section 10.5.6.3 |
|
1245 */ |
|
1246 enum TPcoIDNetworkToMS |
|
1247 { |
|
1248 /** PCO network additional parameter identifier for a PCSCF address.*/ |
|
1249 EEtelPcktPCSCFAddress = 0x01, |
|
1250 /** PCO network additional parameter identifier for an IM CN subsystem signalling flag.*/ |
|
1251 EEtelPcktIMCNNetworkSubsystemSignallingFlag = 0x02, |
|
1252 /** PCO network additional parameter identifier for a DNS server address.*/ |
|
1253 EEtePcktDNSServerAddress= 0x03, |
|
1254 /** PCO network additional parameter identifier for a policy control rejection code.*/ |
|
1255 EEtelPcktPolicyControlRejectionCode = 0x04, |
|
1256 }; |
|
1257 |
|
1258 |
|
1259 /** |
|
1260 Helper class that implements PCO IE identifier. |
|
1261 |
|
1262 @publishedPartner |
|
1263 @released |
|
1264 */ |
|
1265 class TPcoId : public MTlvItemIdType |
|
1266 { |
|
1267 public: |
|
1268 inline TPcoId(); |
|
1269 inline TPcoId(TUint16 aId); |
|
1270 inline void ExternalizeL(TDes8&)const; |
|
1271 inline void InternalizeL(TDesC8&); |
|
1272 inline TUint SerializedLength() const; |
|
1273 inline TUint16 Id()const; |
|
1274 inline void SetId(TUint16); |
|
1275 inline TBool IsEqual(const MTlvItemIdType& aOtherIdType)const; |
|
1276 protected: |
|
1277 /** PCO Id*/ |
|
1278 TUint16 iId; |
|
1279 }; |
|
1280 |
|
1281 /** |
|
1282 Helper class that implements PCO IE identifier length. |
|
1283 |
|
1284 @publishedPartner |
|
1285 @released |
|
1286 */ |
|
1287 class TPcoItemDataLength: public MTlvItemDataLengthType |
|
1288 { |
|
1289 public: |
|
1290 inline TPcoItemDataLength(); |
|
1291 inline TPcoItemDataLength(TUint8 aLen); |
|
1292 inline void SetDataLength(TUint aLength); |
|
1293 inline TUint DataLength() const; |
|
1294 inline void ExternalizeL(TDes8&) const; |
|
1295 inline void InternalizeL(TDesC8&); |
|
1296 inline TUint SerializedLength()const; |
|
1297 protected: |
|
1298 /** length of associated item data*/ |
|
1299 TUint8 iDataLength; |
|
1300 }; |
|
1301 |
|
1302 /** |
|
1303 Identifiers for the type of data data compression applicable for SNDCP only, |
|
1304 as defined in 3GPP TS 44.065, section 6.6.1.1.4. |
|
1305 Values listed in the enumeration do not hold same numerical values as those defined in the specifications, |
|
1306 as ENoDataComression and EManufacturerDefaultDataComression are introduced in order to be utilised when no |
|
1307 compression and device default compression algorithm are needed, respectively. |
|
1308 */ |
|
1309 enum TDataCompression |
|
1310 { |
|
1311 /** |
|
1312 No compression |
|
1313 */ |
|
1314 ENoDataCompression, |
|
1315 /** |
|
1316 Compression algorithm preferred by the device manufacturer |
|
1317 */ |
|
1318 EManufacturerDefaultDataCompression, |
|
1319 /** |
|
1320 V.42 bis |
|
1321 */ |
|
1322 EV42, |
|
1323 /** |
|
1324 V.44 |
|
1325 */ |
|
1326 EV44, |
|
1327 }; |
|
1328 |
|
1329 /** |
|
1330 Identifiers for type of SNDCP & PDCP header compression as defined |
|
1331 in 3GPP TS 44.065, section 6.5.1.1.4, |
|
1332 Values listed in the enumeration do not hold same numerical values as those defined in the specifications, |
|
1333 as ENoHeaderCompression and EManufacturerDefaultHeaderCompression are introduced in order to be utilised when no |
|
1334 compression and device default compression algorithm are needed, respectively. |
|
1335 */ |
|
1336 enum THeaderCompression |
|
1337 { |
|
1338 /** |
|
1339 No compression |
|
1340 */ |
|
1341 ENoHeaderCompression, |
|
1342 /** |
|
1343 Compression algorithm preferred by the device manufacturer |
|
1344 */ |
|
1345 EManufacturerDefaultHeaderCompression, |
|
1346 /** |
|
1347 Compression algorithm defined in RFC 1144 |
|
1348 */ |
|
1349 ERfc1144, |
|
1350 /** |
|
1351 Compression algorithm defined in RFC 2507 |
|
1352 */ |
|
1353 ERfc2507, |
|
1354 /** |
|
1355 Robust header compression algorithm defined in RFC 3095 |
|
1356 */ |
|
1357 ERohc, |
|
1358 }; |
|
1359 |
|
1360 class TContextConfig_R5 : public TContextConfigR99_R4 |
|
1361 /** |
|
1362 Reintroduces support for setting of header/data compression in SNDCP & PDCP |
|
1363 Supported from v9.1. |
|
1364 @publishedPartner |
|
1365 @released |
|
1366 */ |
|
1367 { |
|
1368 public: |
|
1369 IMPORT_C TContextConfig_R5(); |
|
1370 |
|
1371 public: |
|
1372 /** defines whether SNDCP & PDCP header compression shall be utilised or not. |
|
1373 If former is the case, it holds value of that defines compression algorithm to be exercised. |
|
1374 The default value is ENone - no compression is needed. |
|
1375 */ |
|
1376 THeaderCompression iPdpHeaderCompression; |
|
1377 /** defines whether SNDCP data compression shall be utilised or not. |
|
1378 If former is the case, it holds value of that defines compression algorithm to be exercised. |
|
1379 The default value is ENone - no compression is needed. |
|
1380 */ |
|
1381 TDataCompression iPdpDataCompression; |
|
1382 }; |
|
1383 |
|
1384 protected: |
|
1385 IMPORT_C virtual void ConstructL(); |
|
1386 IMPORT_C virtual void Destruct(); |
|
1387 protected: |
|
1388 CPacketContextPtrHolder* iEtelPacketContextPtrHolder; |
|
1389 }; |
|
1390 |
|
1391 /////////////////////////////////////////////////////////////////// |
|
1392 // MBMS Context |
|
1393 /////////////////////////////////////////////////////////////////// |
|
1394 class RPacketMbmsContext : public RPacketContext |
|
1395 /** |
|
1396 Defines the MBMS context and the configuration of a connection to the network's |
|
1397 packet-switched service. |
|
1398 The functionality associated with the context of a MBMS connection is inherited |
|
1399 from RPacketContext class. |
|
1400 The behaviour of OpenNewContext API is redefined. |
|
1401 Every instance of this class has RPacketService as a base class. |
|
1402 |
|
1403 @publishedPartner |
|
1404 @released |
|
1405 */ |
|
1406 { |
|
1407 public: |
|
1408 IMPORT_C RPacketMbmsContext(); |
|
1409 IMPORT_C TInt OpenNewContext(RPacketService& aPacketNetwork, TDes& aContextName); |
|
1410 IMPORT_C void Close(); |
|
1411 friend class CRetrievePcktMbmsSessionList; |
|
1412 |
|
1413 class TContextConfigMbmsV1: public TPacketDataConfigBase |
|
1414 /** |
|
1415 Context configurations for MBMS support. |
|
1416 |
|
1417 Contains all the data necessary to configure a context on a MBMS network. |
|
1418 |
|
1419 @see RPacketContext::SetConfig() |
|
1420 |
|
1421 @publishedPartner |
|
1422 @released |
|
1423 */ |
|
1424 { |
|
1425 public: |
|
1426 IMPORT_C TContextConfigMbmsV1(); |
|
1427 public: |
|
1428 /** Input parameter : Temporary mobile group identity |
|
1429 * A unique name to an MBMS service |
|
1430 */ |
|
1431 TTmgi iTmgi; |
|
1432 |
|
1433 /** Input Parameter : MBMS access bearer information |
|
1434 * @see TMbmsScope |
|
1435 */ |
|
1436 TMbmsScope iMbmsAccessBearer; |
|
1437 |
|
1438 /** Input parameter : MBMS service priority options |
|
1439 * Specifies the priority of the MBMS service to be received. |
|
1440 * @see TMbmsServicePriority |
|
1441 */ |
|
1442 TMbmsServicePriority iMbmsServicePriority; |
|
1443 |
|
1444 /** Input parameter : MBMS service mode |
|
1445 * @see TMbmsServiceMode |
|
1446 */ |
|
1447 TMbmsServiceMode iMbmsServiceMode; |
|
1448 |
|
1449 /** Input parameter : MBMS session flag |
|
1450 * ETrue indicates that an MBMS service has one or more sessions. |
|
1451 */ |
|
1452 TBool iMbmsSessionFlag; |
|
1453 }; |
|
1454 |
|
1455 |
|
1456 //Packaged version of TContextConfigMbmsV1, used when this structure has to be passed via IPC. |
|
1457 typedef TPckg<TContextConfigMbmsV1> TContextConfigMbmsV1Pckg; |
|
1458 |
|
1459 IMPORT_C void UpdateMbmsSessionList(TRequestStatus& aStatus,const TMbmsAction aAction, const TMbmsSessionId aSessionId = 0) const; |
|
1460 |
|
1461 class CMbmsSession : public CBase |
|
1462 /** |
|
1463 * Captures the list of session(s) of an MBMS service. |
|
1464 * @publishedPartner |
|
1465 * @released |
|
1466 */ |
|
1467 { |
|
1468 public: |
|
1469 IMPORT_C static CMbmsSession* NewL(); |
|
1470 IMPORT_C void InternalizeL(const TDesC8& aBuffer); |
|
1471 IMPORT_C void ExternalizeL(HBufC8*& aBuffer); |
|
1472 IMPORT_C TUint ExtensionId() const; |
|
1473 IMPORT_C ~CMbmsSession(); |
|
1474 public: |
|
1475 /** |
|
1476 * Output Parameter. |
|
1477 * Contains the list of sessions pertaining to the MBMS service. |
|
1478 */ |
|
1479 TMbmsSessionIdList iSessionIdList; |
|
1480 /** |
|
1481 * Defines the type of the class |
|
1482 */ |
|
1483 TUint iExtensionId; |
|
1484 protected: |
|
1485 CMbmsSession(); |
|
1486 }; |
|
1487 |
|
1488 }; |
|
1489 |
|
1490 class CPacketPtrHolder; |
|
1491 class CPcktMbmsMonitoredServiceList; |
|
1492 class RPacketService : public RTelSubSessionBase |
|
1493 /** |
|
1494 Defines a packet-switched connection to a packet network. |
|
1495 |
|
1496 This is the main packet network class. |
|
1497 It encapsulates functionality associated with controlling a packet-switched connection: |
|
1498 attaching, detaching, querying packet network capabilities, etc. |
|
1499 @publishedPartner |
|
1500 @released |
|
1501 */ |
|
1502 { |
|
1503 public: |
|
1504 IMPORT_C RPacketService(); |
|
1505 IMPORT_C TInt Open(RPhone& aPhone); |
|
1506 IMPORT_C void Close(); |
|
1507 |
|
1508 IMPORT_C void NotifyContextAdded(TRequestStatus& aStatus, TDes& aContextId) const; |
|
1509 IMPORT_C void Attach(TRequestStatus& aStatus) const; |
|
1510 IMPORT_C void Detach(TRequestStatus& aStatus) const; |
|
1511 |
|
1512 friend TInt RPacketContext::OpenNewSecondaryContext(RPacketService& aPacketService, const TDesC& aExistingContextName, TDes& aNewContextName); ///< This method calls the internal method RPacketService::PrepareOpenSecondary(const TDesC& aOriginalContextName) |
|
1513 friend TInt RPacketContext::OpenNewContext(RPacketService& aPacketNetwork, TDes& aContextName); |
|
1514 friend TInt RPacketMbmsContext::OpenNewContext(RPacketService& aPacketNetwork, TDes& aContextName); |
|
1515 |
|
1516 friend class CRetrievePcktMbmsMonitoredServices; |
|
1517 |
|
1518 /** Defines the packet data connection status. */ |
|
1519 enum TStatus |
|
1520 { |
|
1521 /** Unattached to network and inactive packet data connection. */ |
|
1522 EStatusUnattached, |
|
1523 /** Attached to network and inactive packet data connection. */ |
|
1524 EStatusAttached, |
|
1525 /** Attached to network and active packet data connection. */ |
|
1526 EStatusActive, |
|
1527 /** Attached to network and suspended packet data connection. */ |
|
1528 EStatusSuspended |
|
1529 }; |
|
1530 |
|
1531 IMPORT_C TInt GetStatus(TStatus& aPacketStatus) const; |
|
1532 IMPORT_C void NotifyStatusChange(TRequestStatus& aStatus,TStatus& aPacketStatus) const; |
|
1533 IMPORT_C void NotifyContextActivationRequested(TRequestStatus& aStatus, TDes8& aContextParameters) const; |
|
1534 IMPORT_C void RejectActivationRequest(TRequestStatus& aStatus) const; |
|
1535 |
|
1536 struct TContextInfo |
|
1537 /** Struct to contain the context information. |
|
1538 |
|
1539 @see GetContextInfo() */ |
|
1540 { |
|
1541 /** The name of the context. |
|
1542 |
|
1543 @see TName */ |
|
1544 TName iName; |
|
1545 /** The current status of the context. |
|
1546 |
|
1547 @see RPacketContext::TContextStatus */ |
|
1548 RPacketContext::TContextStatus iStatus; |
|
1549 }; |
|
1550 |
|
1551 IMPORT_C void EnumerateContexts(TRequestStatus& aStatus,TInt& aCount, TInt& aMaxAllowed) const; ///< Enumerate all Primary and Secondary contexts (whether active or inactive) |
|
1552 IMPORT_C void GetContextInfo(TRequestStatus& aStatus, TInt aIndex, TContextInfo& aInfo) const; |
|
1553 |
|
1554 // |
|
1555 // Packet Network Registration and Availability |
|
1556 // |
|
1557 /** Packet Network Registration/Availability. */ |
|
1558 enum TRegistrationStatus |
|
1559 { |
|
1560 /** Not registered and not searching for a network. A network may or may not be |
|
1561 available. */ |
|
1562 ENotRegisteredNotSearching, |
|
1563 /** Registered on a home network. */ |
|
1564 ERegisteredOnHomeNetwork, |
|
1565 /** Not registered but searching for a network. */ |
|
1566 ENotRegisteredSearching, |
|
1567 /** Registration denied. */ |
|
1568 ERegistrationDenied, |
|
1569 /** Registration status unknown. */ |
|
1570 EUnknown, |
|
1571 /** Registered on foreign network. */ |
|
1572 ERegisteredRoaming, |
|
1573 /** Not registered or searching, but network available. */ |
|
1574 ENotRegisteredButAvailable, |
|
1575 /** Not registered or searching, and network not available. */ |
|
1576 ENotRegisteredAndNotAvailable |
|
1577 }; |
|
1578 |
|
1579 IMPORT_C void GetNtwkRegStatus(TRequestStatus& aStatus, TRegistrationStatus& aRegistrationStatus) const; |
|
1580 IMPORT_C void NotifyChangeOfNtwkRegStatus(TRequestStatus& aStatus,TRegistrationStatus& aRegistrationStatus) const; |
|
1581 |
|
1582 /** MS class configuration. */ |
|
1583 enum TMSClass |
|
1584 { |
|
1585 /** Active simultaneous PS and CS calls supported (Class A). */ |
|
1586 EMSClassDualMode, |
|
1587 /** Active CS and Suspended PS simultaneous calls supported (Class B). */ |
|
1588 EMSClassSuspensionRequired, |
|
1589 /** Active CS or Active PS only call supported (Class C). */ |
|
1590 EMSClassAlternateMode, |
|
1591 /** Active CS only call supported (Class C). */ |
|
1592 EMSClassCircuitSwitchedOnly, |
|
1593 /** Active PS only call supported (Class C) */ |
|
1594 EMSClassPacketSwitchedOnly, |
|
1595 /** Unknown what configuration is supported */ |
|
1596 EMSClassUnknown |
|
1597 }; |
|
1598 |
|
1599 IMPORT_C void GetMSClass(TRequestStatus& aStatus, TMSClass& aCurrentClass, TMSClass& aMaxClass) const; |
|
1600 IMPORT_C void SetMSClass(TRequestStatus& aStatus, TMSClass aClass) const; |
|
1601 IMPORT_C void NotifyMSClassChange(TRequestStatus& aStatus, TMSClass& aNewClass) const; |
|
1602 |
|
1603 /** Static capabilities. |
|
1604 |
|
1605 Modes: GPRS */ |
|
1606 enum TStaticMiscCaps |
|
1607 { |
|
1608 // |
|
1609 // GPRS-specific |
|
1610 // |
|
1611 /** Suspend supported. |
|
1612 |
|
1613 Modes: GPRS */ |
|
1614 KCapsSuspendSupported=0x0001, |
|
1615 /** Anonymous Access supported. |
|
1616 |
|
1617 Modes: GPRS */ |
|
1618 KCapsAASupported=0x0002, |
|
1619 /** Network availability supported. |
|
1620 |
|
1621 Modes: GPRS */ |
|
1622 KCapsNetworkAvailabilitySupported=0x0004, |
|
1623 /** Set default context supported. |
|
1624 |
|
1625 Modes: GPRS */ |
|
1626 KCapsSetDefaultContextSupported=0x0008, |
|
1627 /** Change attach mode supported. |
|
1628 |
|
1629 Modes: GPRS */ |
|
1630 KCapsChangeAttachModeSupported=0x0010, |
|
1631 /** Get data transferred supported. |
|
1632 |
|
1633 Modes: GPRS */ |
|
1634 KCapsGetDataTransferredSupported=0x0020, |
|
1635 /** Notify data transferred supported |
|
1636 |
|
1637 Modes: GPRS */ |
|
1638 KCapsNotifyDataTransferredSupported=0x0040, |
|
1639 /** Preferred bearer supported. |
|
1640 |
|
1641 Modes: GPRS */ |
|
1642 KCapsPreferredBearerSupported=0x0080, |
|
1643 /** PDP data compression supported. |
|
1644 |
|
1645 Modes: GPRS */ |
|
1646 KCapsPdpDataCompSupported=0x0100, |
|
1647 /** PDP header compression supported |
|
1648 |
|
1649 Modes: GPRS */ |
|
1650 KCapsPdpHeaderCompSupported=0x0200, |
|
1651 /** MS class supported. |
|
1652 |
|
1653 Modes: GPRS */ |
|
1654 KCapsMSClassSupported=0x0400, |
|
1655 /** Notify MS class changes supported. |
|
1656 |
|
1657 Modes: GPRS */ |
|
1658 KCapsNotifyMSClassSupported=0x0800, |
|
1659 // |
|
1660 // CDMA Specific |
|
1661 // |
|
1662 /** Service Option (7,15) or (8,16). |
|
1663 |
|
1664 Modes: CDMA2000 */ |
|
1665 KCapsCDMAOneLowSpeedDataSupported=0x00001000, |
|
1666 /** Service Option (22-25) or (26-29). |
|
1667 |
|
1668 Modes: CDMA2000 */ |
|
1669 KCapsCDMAOneHighSpeedDataSupported=0x00002000, |
|
1670 /** Service Option 33 or 34. |
|
1671 |
|
1672 Modes: CDMA2000 */ |
|
1673 KCapsCDMA2000HighSpeedDataSupported=0x00004000, |
|
1674 /** PPP protocol supported. |
|
1675 |
|
1676 Modes: CDMA2000 */ |
|
1677 KCapsProtocolPPPSupported=0x00008000, |
|
1678 /** CDPD protocol supported |
|
1679 |
|
1680 Modes: CDMA2000 */ |
|
1681 KCapsProtocolCDPDSupported=0x00010000, |
|
1682 KCapsPacketReleaseModeSupported=0x00020000, |
|
1683 KCapsNotifyReleaseModeChangeSupported=0x00040000, |
|
1684 |
|
1685 /** The phone supports HSDPA |
|
1686 |
|
1687 Modes: WCDMA */ |
|
1688 KCapsHSDPASupported=0x00080000, |
|
1689 |
|
1690 /** The phone supports EGPRS |
|
1691 |
|
1692 Modes: GPRS/WCDMA */ |
|
1693 KCapsEGPRSSupported=0x00100000, |
|
1694 |
|
1695 /** The phone supports HSUPA |
|
1696 |
|
1697 Modes: WCDMA */ |
|
1698 KCapsHSUPASupported=0x00200000, |
|
1699 /** The phone supports MBMS |
|
1700 |
|
1701 Modes: GPRS/WCDMA */ |
|
1702 KCapsMBMSSupported=0x00400000 |
|
1703 }; |
|
1704 |
|
1705 IMPORT_C TInt GetStaticCaps(TUint& aCaps, RPacketContext::TProtocolType aPdpType) const; |
|
1706 |
|
1707 /** Dynamic capabilities. |
|
1708 |
|
1709 Modes: GPRS/CDMA */ |
|
1710 enum TDynamicCaps |
|
1711 { |
|
1712 // Common GPRS and CDMA caps |
|
1713 /** Activate supported. |
|
1714 |
|
1715 Modes: GPRS/CDMA */ |
|
1716 KCapsActivate=0x00000001, |
|
1717 /** Rx Circuit Switched call supported. |
|
1718 |
|
1719 Modes: GPRS/CDMA */ |
|
1720 KCapsRxCSCall=0x00000002, |
|
1721 /** RX context activation request supported. |
|
1722 |
|
1723 Modes: GPRS/CDMA */ |
|
1724 KCapsRxContextActivationReq=0x00000004, |
|
1725 // GPRS-specific caps |
|
1726 /** Manual attach supported. |
|
1727 |
|
1728 Modes: GPRS */ |
|
1729 KCapsManualAttach=0x00000008, |
|
1730 /** Manual detach supported. |
|
1731 |
|
1732 Modes: GPRS */ |
|
1733 KCapsManualDetach=0x00000010, |
|
1734 /** SMS transfer supported. |
|
1735 |
|
1736 Modes: GPRS */ |
|
1737 KCapsSMSTransfer=0x00000020, |
|
1738 // CDMA-specific caps |
|
1739 /** Service Option (7,15) or (8,16). |
|
1740 |
|
1741 Modes: CDMA */ |
|
1742 KCapsCDMAOneLowSpeedDataAllowed=0x00000040, |
|
1743 /** Service Option (22-25) or (26-29). |
|
1744 |
|
1745 Modes: CDMA */ |
|
1746 KCapsCDMAOneHighSpeedDataAllowed=0x00000080, |
|
1747 /** Service Option 33 or 34. |
|
1748 |
|
1749 Modes: CDMA */ |
|
1750 KCapsCDMA2000HighSpeedDataAllowed=0x00000100, |
|
1751 |
|
1752 /** HSDPA is currently being used |
|
1753 |
|
1754 Modes: WCDMA */ |
|
1755 KCapsHSDPA=0x00000200, |
|
1756 |
|
1757 /** EGPRS is currently being used |
|
1758 |
|
1759 Modes: GPRS/WCDMA */ |
|
1760 KCapsEGPRS=0x00000400, |
|
1761 |
|
1762 /** HSUPA is currently being used |
|
1763 |
|
1764 Modes: WCDMA */ |
|
1765 KCapsHSUPA=0x00000800, |
|
1766 |
|
1767 /** MBMS is currently being used |
|
1768 |
|
1769 Modes: GPRS/WCDMA */ |
|
1770 KCapsMBMS=0x00001000 |
|
1771 |
|
1772 }; |
|
1773 |
|
1774 /** Typedef to hold the RPacketService::TDynamicCaps. */ |
|
1775 typedef TUint TDynamicCapsFlags; |
|
1776 |
|
1777 IMPORT_C TInt GetDynamicCaps(TDynamicCapsFlags& aCaps) const; |
|
1778 IMPORT_C void NotifyDynamicCapsChange(TRequestStatus& aStatus, TDynamicCapsFlags& aCaps) const; |
|
1779 |
|
1780 /** The preferred bearer. */ |
|
1781 enum TPreferredBearer |
|
1782 { |
|
1783 /** Packet Switched (PS) bearer preferred. */ |
|
1784 EBearerPacketSwitched, |
|
1785 /** Circuit Switched (CS) bearer preferred. */ |
|
1786 EBearerCircuitSwitched |
|
1787 }; |
|
1788 |
|
1789 IMPORT_C void SetPreferredBearer(TRequestStatus& aStatus, TPreferredBearer aBearer) const; |
|
1790 IMPORT_C TInt GetPreferredBearer(TPreferredBearer& aBearer) const;// Deprecated method. |
|
1791 |
|
1792 IMPORT_C void GetPreferredBearer(TRequestStatus& aStatus, TPreferredBearer& aBearer) const; // Recommended method variant |
|
1793 |
|
1794 /** Defines when the attachment to the GPRS network should occur. |
|
1795 |
|
1796 Modes: GPRS */ |
|
1797 enum TAttachMode |
|
1798 { |
|
1799 /** The phone will attach to the packet network whenever it can. */ |
|
1800 EAttachWhenPossible,// instruct phone stack to attach to packet network whenever it can |
|
1801 /** The phone will attach to the packet network only when required (e.g. when activating |
|
1802 a connection). */ |
|
1803 EAttachWhenNeeded // instruct phone stack to attach to network only when required |
|
1804 }; |
|
1805 |
|
1806 IMPORT_C TInt SetAttachMode(TAttachMode aMode) const; // Deprecated method. |
|
1807 IMPORT_C TInt GetAttachMode(TAttachMode& aMode) const; // Deprecated method. |
|
1808 IMPORT_C TInt SetDefaultContextParams(const TDesC8& aPckg) const; // Deprecated method. |
|
1809 IMPORT_C TInt GetDefaultContextParams(TDes8& aPckg) const; // Deprecated method. |
|
1810 |
|
1811 IMPORT_C void SetAttachMode(TRequestStatus& aStatus, TAttachMode aMode) const; // Recommended method variant |
|
1812 IMPORT_C void GetAttachMode(TRequestStatus& aStatus, TAttachMode& aMode) const; // Recommended method variant |
|
1813 IMPORT_C void NotifyAttachModeChange(TRequestStatus& aStatus, TAttachMode& aMode) const; |
|
1814 IMPORT_C void SetDefaultContextParams(TRequestStatus& aStatus, const TDesC8& aPckg) const; // Recommended method variant |
|
1815 IMPORT_C void GetDefaultContextParams(TRequestStatus& aStatus, TDes8& aPckg) const; // Recommended method variant |
|
1816 |
|
1817 enum TPacketReleaseMode |
|
1818 { |
|
1819 EReleaseModeUnknown, |
|
1820 EReleaseModeUnregistered, |
|
1821 EReleaseMode97_98, |
|
1822 EReleaseMode99, |
|
1823 EReleaseMode4, |
|
1824 EReleaseModeCDMA2000 |
|
1825 }; |
|
1826 |
|
1827 IMPORT_C void GetCurrentReleaseMode(TRequestStatus& aStatus, TPacketReleaseMode& aReleaseMode) const; |
|
1828 IMPORT_C void NotifyReleaseModeChange(TRequestStatus& aStatus, TPacketReleaseMode& aReleaseMode) const; |
|
1829 |
|
1830 enum TContextType |
|
1831 { |
|
1832 EUnspecified, ///< Unspecified context type |
|
1833 EInternalContext, ///< Internally created context |
|
1834 EExternalContext ///< Externally created context |
|
1835 }; |
|
1836 |
|
1837 |
|
1838 class TNifInfoV2 : public TPacketBase |
|
1839 /** |
|
1840 Rel99/R4 Network information class. This V2 class inherits from the |
|
1841 TPacketBase class to make it future proof (extensible). |
|
1842 @publishedPartner |
|
1843 @released |
|
1844 */ |
|
1845 { |
|
1846 public: |
|
1847 IMPORT_C TNifInfoV2(); ///< Constructor |
|
1848 public: |
|
1849 TName iContextName; ///< The name of any defined context for this Network Interface |
|
1850 TInt iNumberOfContexts; ///< Number of contexts belonging to the Network Interface |
|
1851 RPacketContext::TContextStatus iNifStatus; ///< Status of the Network Interface |
|
1852 RPacketContext::TProtocolAddress iPdpAddress; ///< PDP address of the interface |
|
1853 TContextType iContextType; ///< Context type (internally or externally created) |
|
1854 }; |
|
1855 typedef TPckg<TNifInfoV2> TNifInfoV2Pckg; ///< TNifInfoV2 package |
|
1856 |
|
1857 // Internal API/TSY struct, used by GetContextNameInNif() method |
|
1858 struct TContextNameInNif |
|
1859 { |
|
1860 TInt iIndex; ///< Integer specifying a context within a Nif. |
|
1861 TName iExistingContextName; ///< Existing Context name. |
|
1862 }; |
|
1863 |
|
1864 IMPORT_C void EnumerateNifs(TRequestStatus& aStatus, TInt& aCount) const; |
|
1865 IMPORT_C void GetNifInfo(TRequestStatus& aStatus, TInt aIndex, TDes8& aNifInfoV2) const; |
|
1866 IMPORT_C void EnumerateContextsInNif(TRequestStatus& aStatus, const TDesC& aExistingContextName, TInt& aCount) const; |
|
1867 IMPORT_C void GetContextNameInNif(TRequestStatus& aStatus, const TDesC& aExistingContextName, TInt aIndex, TDes& aContextName) const; |
|
1868 IMPORT_C void DeactivateNIF(TRequestStatus& aStatus, const TDesC& aContextName) const; |
|
1869 |
|
1870 //////////////////////////////////////////////////////// |
|
1871 // |
|
1872 // MBMS Service Availability |
|
1873 // |
|
1874 //////////////////////////////////////////////////////// |
|
1875 |
|
1876 class TMbmsServiceAvailabilityV1 : public TPacketType |
|
1877 /** |
|
1878 Holds the service availability parameters needed to register with TSY |
|
1879 for the services to be monitored. |
|
1880 |
|
1881 @publishedPartner |
|
1882 @released |
|
1883 */ |
|
1884 { |
|
1885 public: |
|
1886 IMPORT_C TMbmsServiceAvailabilityV1(); |
|
1887 public: |
|
1888 void InternalizeL(RReadStream& aStream); |
|
1889 void ExternalizeL(RWriteStream& aStream) const; |
|
1890 public: |
|
1891 /** Input Parameter : Temporary Mobile Group Identity */ |
|
1892 TTmgi iTmgi; |
|
1893 |
|
1894 /** Input Parameter : MBMS service mode */ |
|
1895 TMbmsServiceMode iMbmsServiceMode; |
|
1896 |
|
1897 /** Output Parameter : MBMS availability status */ |
|
1898 TMbmsAvailabilityStatus iMbmsAvailabilityStatus; |
|
1899 |
|
1900 /** Input Parameter : MBMS access bearer information */ |
|
1901 TMbmsScope iMbmsAccessBearer; |
|
1902 }; |
|
1903 |
|
1904 //Packaged version of TMbmsServiceAvailabilityV1, used when this structure has to be passed via IPC. |
|
1905 typedef TPckg<TMbmsServiceAvailabilityV1> TMbmsServiceAvailabilityV1Pckg; |
|
1906 |
|
1907 IMPORT_C void NotifyMbmsServiceAvailabilityChange(TRequestStatus& aReqStatus) const; |
|
1908 IMPORT_C void UpdateMbmsMonitorServiceListL (TRequestStatus& aReqStatus, const TMbmsAction aAction, CPcktMbmsMonitoredServiceList* aList = NULL) const; |
|
1909 IMPORT_C void GetMbmsNetworkServiceStatus(TRequestStatus& aStatus, TBool aAttemptAttach, TMbmsNetworkServiceStatus& aServiceStatus) const; |
|
1910 IMPORT_C void NotifyMbmsNetworkServiceStatusChange(TRequestStatus& aStatus, TMbmsNetworkServiceStatus& aServiceStatus) const; |
|
1911 IMPORT_C void EnumerateMbmsMonitorServiceList(TRequestStatus& aStatus, TInt& aCount, TInt& aMaxAllowed) const; |
|
1912 IMPORT_C void EnumerateMbmsActiveServiceList(TRequestStatus& aStatus, TInt& aCount, TInt& aMaxAllowed) const; |
|
1913 protected: |
|
1914 IMPORT_C virtual void ConstructL(); |
|
1915 IMPORT_C virtual void Destruct(); |
|
1916 private: |
|
1917 TInt PrepareOpenSecondary(const TDesC& aOriginalContextName); ///< Internal method, not for Client use |
|
1918 CPacketPtrHolder* iEtelPacketPtrHolder; |
|
1919 RMutex iMutex; ///< Internal mutex, used to prevent concurent use of PrepareOpenSecondary() and OpenNewContext() |
|
1920 }; |
|
1921 |
|
1922 #include <etelpckt.inl> |
|
1923 #endif |