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