1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/epoc32/include/etelpckt.h Tue Mar 16 16:12:26 2010 +0000
1.3 @@ -0,0 +1,1923 @@
1.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
1.5 +// All rights reserved.
1.6 +// This component and the accompanying materials are made available
1.7 +// 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
1.8 +// which accompanies this distribution, and is available
1.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
1.10 +//
1.11 +// Initial Contributors:
1.12 +// Nokia Corporation - initial contribution.
1.13 +//
1.14 +// Contributors:
1.15 +//
1.16 +// Description:
1.17 +// ETel Multimode Packet Data API
1.18 +// MBMS Broadcast,GPRS Release 97/98, CDMAOne, CDMA2000, Release 99 and Release 4.
1.19 +//
1.20 +//
1.21 +
1.22 +#if !defined(__ETELPCKT_H__)
1.23 +#define __ETELPCKT_H__
1.24 +
1.25 +#include <e32base.h>
1.26 +#include <s32mem.h>
1.27 +#include <etel.h>
1.28 +#include <cdblen.h>
1.29 +#include <exterror.h>
1.30 +#include <etelutils.h>
1.31 +#include <mbmstypes.h>
1.32 +
1.33 +//
1.34 +// Global constants and types
1.35 +//
1.36 +
1.37 +// General
1.38 +// Passed into RTelServer::IsSupportedByModule()
1.39 +/**
1.40 +Unique Packet Data API Identifier for Packet API version 1.0.
1.41 +
1.42 +@publishedPartner
1.43 +@released
1.44 +*/
1.45 +const TInt KETelExtPcktV1 = 4000;
1.46 +/**
1.47 +Unique Packet Data API Identifier for Packet API version 2.0.
1.48 +
1.49 +@publishedPartner
1.50 +@released
1.51 +*/
1.52 +
1.53 +const TInt KETelExtPcktV2 = 8000;
1.54 +
1.55 +
1.56 +/**
1.57 +Unique Packet Data API Identifier for Packet API version 3.0.
1.58 +aka 3GPP Release 5 support
1.59 +
1.60 +@publishedPartner
1.61 +@released
1.62 +*/
1.63 +const TInt KETelExtPcktV3 = 12000;
1.64 +
1.65 +
1.66 +// GPRS-specific causes for Session Management (Annex I, 3GPP TS 24.008)
1.67 +/** This cause is sent to the MS if it requests an IMSI attachment for GPRS services,
1.68 +but is not allowed to operate GPRS services.
1.69 +
1.70 +@publishedPartner
1.71 +@released
1.72 +*/
1.73 +const TInt KErrGprsServicesNotAllowed=KErrGsmMobilityManagementBase-7;
1.74 +/** This cause is sent to the MS if it requests a combined IMSI attach for GPRS
1.75 +and non-GPRS services, but is not allowed to operate either of them.
1.76 +
1.77 +@publishedPartner
1.78 +@released
1.79 +*/
1.80 +const TInt KErrGprsAndNonGprsServicesNotAllowed=KErrGsmMobilityManagementBase-8;
1.81 +/** This cause is sent to the MS when the network cannot derive the MS's identity
1.82 +from the P-TMSI in case of an inter-SGSN routing area update.
1.83 +
1.84 +@publishedPartner
1.85 +@released
1.86 +*/
1.87 +const TInt KErrGprsMSIdentityCannotBeDerivedByTheNetwork=KErrGsmMobilityManagementBase-9;
1.88 +/** This cause is sent to the MS either if the network has implicitly detached
1.89 +the MS, e.g. some while after the Mobile reachable timer has expired, or if
1.90 +the GMM context data relating to the subscription does not exist in the SGSN,
1.91 +e.g. because of a SGSN restart.
1.92 +
1.93 +@publishedPartner
1.94 +@released
1.95 +*/
1.96 +const TInt KErrGprsMSImplicitlyDetached=KErrGsmMobilityManagementBase-10;
1.97 +/** This cause is sent to the MS if it requests a combined GPRS attachment or routing
1.98 +is updating in a PLMN where the MSC is temporarily not reachable via the GPRS
1.99 +part of the GSM network.
1.100 +
1.101 +@publishedPartner
1.102 +@released
1.103 +*/
1.104 +const TInt KErrGprsMSCTemporarilyNotReachable=KErrGsmMobilityManagementBase-16;
1.105 +/** The PDP context is deactivated because of a LLC or SNDCP failure.
1.106 +
1.107 +@publishedPartner
1.108 +@released
1.109 +*/
1.110 +const TInt KErrGprsLlcOrSndcpFailure=KErrGsmMobilityManagementBase-25;
1.111 +/** Insufficient GPRS resources are available for the request to complete successfully.
1.112 +
1.113 +@publishedPartner
1.114 +@released
1.115 +*/
1.116 +const TInt KErrGprsInsufficientResources=KErrGsmMobilityManagementBase-26;
1.117 +/** Access Point Name is either missing from the Activation request or is unknown.
1.118 +
1.119 +@publishedPartner
1.120 +@released
1.121 +*/
1.122 +const TInt KErrGprsMissingorUnknownAPN=KErrGsmMobilityManagementBase-27;
1.123 +/** The PDP address supplied with the Activation request is unknown.
1.124 +
1.125 +@publishedPartner
1.126 +@released
1.127 +*/
1.128 +const TInt KErrGprsUnknownPDPAddress=KErrGsmMobilityManagementBase-28;
1.129 +/** User authentication has failed.
1.130 +
1.131 +@publishedPartner
1.132 +@released
1.133 +*/
1.134 +const TInt KErrGprsUserAuthenticationFailure=KErrGsmMobilityManagementBase-29;
1.135 +/** The GGSN has rejected the activation request for some reason.
1.136 +
1.137 +@publishedPartner
1.138 +@released
1.139 +*/
1.140 +const TInt KErrGprsActivationRejectedByGGSN=KErrGsmMobilityManagementBase-30;
1.141 +/** The activation request has been rejected for an unspecified reason.
1.142 +
1.143 +@publishedPartner
1.144 +@released
1.145 +*/
1.146 +const TInt KErrGprsActivationRejected=KErrGsmMobilityManagementBase-31;
1.147 +/** The requested service is not supported by the PLMN.
1.148 +
1.149 +@publishedPartner
1.150 +@released
1.151 +*/
1.152 +const TInt KErrGprsServiceOptionNotSupported=KErrGsmMobilityManagementBase-32;
1.153 +/** There is no active subscription to the requested service.
1.154 +
1.155 +@publishedPartner
1.156 +@released
1.157 +*/
1.158 +const TInt KErrGprsRequestedServiceOptionNotSubscribed=KErrGsmMobilityManagementBase-33;
1.159 +/** The service is temporarily out of order.
1.160 +
1.161 +@publishedPartner
1.162 +@released
1.163 +*/
1.164 +const TInt KErrGprsServiceOptionTemporarilyOutOfOrder=KErrGsmMobilityManagementBase-34;
1.165 +/** The NSAPI supplied with the activation request is not unique.
1.166 +
1.167 +@publishedPartner
1.168 +@released
1.169 +*/
1.170 +const TInt KErrGprsNSAPIAlreadyUsed=KErrGsmMobilityManagementBase-35;
1.171 +/** The context has been deactivated successfully.
1.172 +
1.173 +@publishedPartner
1.174 +@released
1.175 +*/
1.176 +const TInt KErrGprsRegularContextDeactivation=KErrGsmMobilityManagementBase-36;
1.177 +/** The Quality of Service requested has not been accepted.
1.178 +
1.179 +@publishedPartner
1.180 +@released
1.181 +*/
1.182 +const TInt KErrGprsQoSNotAccepted=KErrGsmMobilityManagementBase-37;
1.183 +/** The GPRS network is requesting reactivation of a context.
1.184 +
1.185 +@publishedPartner
1.186 +@released
1.187 +*/
1.188 +const TInt KErrGprsReactivationRequested=KErrGsmMobilityManagementBase-39;
1.189 +/** The feature is not supported.
1.190 +
1.191 +@publishedPartner
1.192 +@released
1.193 +*/
1.194 +const TInt KErrGprsFeatureNotSupported=KErrGsmMobilityManagementBase-40;
1.195 +/** There is a semantic error in the TFT operation.
1.196 +
1.197 +@publishedPartner
1.198 +@released
1.199 +*/
1.200 +const TInt KErrGprsSemanticErrorInTFTOperation=KErrGsmMobilityManagementBase-41;
1.201 +/** There is a syntactical error in the TFT operation.
1.202 +
1.203 +@publishedPartner
1.204 +@released
1.205 +*/
1.206 +const TInt KErrGprsSyntacticalErrorInTFTOperation=KErrGsmMobilityManagementBase-42;
1.207 +/** The PDP context activation request is not active.
1.208 +
1.209 +@publishedPartner
1.210 +@released
1.211 +*/
1.212 +const TInt KErrGprsUnknownPDPContext=KErrGsmMobilityManagementBase-43;
1.213 +/** There is one or more semantic errors in packet filter(s) of the TFT.
1.214 +
1.215 +@publishedPartner
1.216 +@released
1.217 +*/
1.218 +const TInt KErrGprsSemanticErrorsInPacketFilters=KErrGsmMobilityManagementBase-44;
1.219 +/** There is one or more syntactical errors in packet filter(s) of the TFT.
1.220 +
1.221 +@publishedPartner
1.222 +@released
1.223 +*/
1.224 +const TInt KErrGprsSyntacticalErrorInPacketFilters=KErrGsmMobilityManagementBase-45;
1.225 +/** The GPRS network has already activated a PDP context without TFT.
1.226 +
1.227 +@publishedPartner
1.228 +@released
1.229 +*/
1.230 +const TInt KErrGprsPDPContextWithoutTFTAlreadyActivated=KErrGsmMobilityManagementBase-46;
1.231 +
1.232 +// UMTS-specific cause values for Call control (Annex H, 3GPP TS 24.008)
1.233 +/** QoS not available.
1.234 +
1.235 +@publishedPartner
1.236 +@released
1.237 +*/
1.238 +const TInt KErrUmtsQoSNotAvailable=KErrGsmMobilityManagementBase-49;
1.239 +
1.240 +/** Maximum number of PDP contexts supported by phone exceeded.
1.241 +
1.242 +@publishedPartner
1.243 +@released
1.244 +*/
1.245 +const TInt KErrUmtsMaxNumOfContextExceededByPhone=KErrGsmMobilityManagementBase-50;
1.246 +/** Maximum number of PDP contexts supported by the network exceeded.
1.247 +
1.248 +@publishedPartner
1.249 +@released
1.250 +*/
1.251 +const TInt KErrUmtsMaxNumOfContextExceededByNetwork=KErrGsmMobilityManagementBase-51;
1.252 +/** Phone is in offline mode.
1.253 +
1.254 +@publishedPartner
1.255 +@released
1.256 +*/
1.257 +const TInt KErrGprsOfflineMode=KErrGsmMobilityManagementBase-52;
1.258 +/**
1.259 + * MBMS network support does not exist.
1.260 + * @publishedPartner
1.261 + * @released
1.262 + */
1.263 +const TInt KErrMbmsNotSupported=KErrGsmMobilityManagementBase-53;
1.264 +/**
1.265 + * Specific MBMS service is not available.
1.266 + * @publishedPartner
1.267 + * @released
1.268 + */
1.269 +const TInt KErrMbmsServiceUnavailable=KErrGsmMobilityManagementBase-54;
1.270 +/**
1.271 + * Preempts low priority MBMS/Non-MBMS service.
1.272 + * @publishedPartner
1.273 + * @released
1.274 + */
1.275 +const TInt KErrMbmsServicePreempted=KErrGsmMobilityManagementBase-55;
1.276 +/**
1.277 + * One or more invalid MBMS service entry supplied.
1.278 + * @publishedPartner
1.279 + * @released
1.280 + */
1.281 +const TInt KErrMbmsImpreciseServiceEntries=KErrGsmMobilityManagementBase-56;
1.282 +
1.283 +class TPacketDataConfigBase
1.284 +/** Base class for the packet configuration classes.
1.285 +
1.286 +The Context configuration, QoS profile (Requested and Negotiated) and QoS
1.287 +Capabilities classes inherit from this class. It is outside the scope of all
1.288 +the Packet data classes.
1.289 +
1.290 +To allow future configuration structures (e.g. TContextConfigWCDMA,
1.291 +TContextConfigPDC, etc.) to be added in such a way that a completely different
1.292 +structure may be defined and passed into the same functions as this one, all
1.293 +existing configuration structures are derived from this thin base class
1.294 +which provides just one function, ExtensionId(). This function returns the
1.295 +one protected member variable, iExtensionId. A new structure would define an
1.296 +associated new constant to be set in iExtensionId on construction, which would
1.297 +then be queried by the TSY prior to unpackaging the structure.
1.298 +
1.299 +@see RPacketContext::TContextConfigCDMA
1.300 +@see RPacketContext::TContextConfigR99_R4
1.301 +@see RPacketContext::TContextConfig_R5
1.302 +@see RPacketContext::TContextConfigMbmsV1
1.303 +
1.304 +@publishedPartner
1.305 +@released
1.306 +
1.307 +*/
1.308 + {
1.309 +public:
1.310 + /**
1.311 + Flags identifying the different packet networks.
1.312 + */
1.313 + enum
1.314 + {
1.315 + /**
1.316 + GPRS Release 97/98 packet network.
1.317 + */
1.318 + KConfigGPRS= 0x01,
1.319 + /**
1.320 + CDMA and CDMA2000 packet networks.
1.321 + */
1.322 + KConfigCDMA = 0x02,
1.323 + /**
1.324 + GPRS/UMTS Release 99 and UMTS Release 4 networks.
1.325 + */
1.326 + KConfigRel99Rel4 = 0x04,
1.327 + /**
1.328 + UMTS/IMS 3GPP Release 5 networks.
1.329 + */
1.330 + KConfigRel5 = 0x05,
1.331 + /**
1.332 + MBMS networks
1.333 + */
1.334 + KConfigMBMS = 0x06
1.335 + };
1.336 +
1.337 + /** This member returns the type of class.
1.338 +
1.339 + @return The type of class. */
1.340 + inline TInt ExtensionId(){return iExtensionId;};
1.341 +protected:
1.342 + /**
1.343 + Defines the type of class: either KConfigGPRS, KConfigCDMA or KConfigRel99Rel4,
1.344 + which identifies the type of packet network (GPRS R97/98, CDMA, Release 99 or 4 or 5)
1.345 + */
1.346 + TInt iExtensionId;
1.347 + };
1.348 +
1.349 +class TConnectionInfoBase
1.350 +/** Base class for the configuration info classes. It is outside the scope of
1.351 +all the Packet data classes.
1.352 +
1.353 +To allow future connection information structures (e.g. TConnectionInfoV2,
1.354 +TConnectionInfoV3, etc.) to be added and as a result information carried by the
1.355 +structure can be increased. All information structures are derived from this
1.356 +thin base class which provides just one function, ExtensionId(). This function
1.357 +returns the protected member variable, iExtensionId. A new structure would
1.358 +define an associated new constant to be set in iExtensionId on construction,
1.359 +which would then be queried by the TSY prior to unpackaging the structure.
1.360 +
1.361 +@see RPacketContext::TConnectionInfoV1
1.362 +
1.363 +@publishedPartner
1.364 +@released
1.365 +*/
1.366 + {
1.367 +public:
1.368 + /**
1.369 + Flags identifying the different connection information structures
1.370 + */
1.371 + enum
1.372 + {
1.373 + /**
1.374 + Connection information version 1.
1.375 + */
1.376 + KConnectionInfoV1 = 0x01
1.377 + };
1.378 +
1.379 + /** Return the type of class.
1.380 + *
1.381 + @return The version of class.
1.382 + */
1.383 + inline TInt ExtensionId(){return iExtensionId;};
1.384 +
1.385 +public:
1.386 + /** A bit-wise sum of TConnectionInfoFlags indicating which of the optional
1.387 + fields contain valid data. */
1.388 + TUint32 iValid;
1.389 +
1.390 +protected:
1.391 + /** Defines the type of class. */
1.392 + TInt iExtensionId;
1.393 + };
1.394 +
1.395 +class TPacketBase
1.396 +/**
1.397 +Base class for the Packet data ETel API parameters which are version dependent
1.398 +(version 2 onwards). Note that even though the 7.0 version of the API does not define
1.399 +version dependent classes, this implementation HAS been employed in the v7.0S version
1.400 +(V2.0) of the API.
1.401 +
1.402 +The TPacketBase::ExtensionId() method is used to determine which version of a packaged
1.403 +parameter has been created.
1.404 +Note that the TPacketDataConfigBase::ExtensionId() method returns a packet network
1.405 +type.
1.406 +
1.407 +@publishedPartner
1.408 +@released
1.409 +*/
1.410 + {
1.411 +public:
1.412 + IMPORT_C TInt ExtensionId() const;
1.413 +protected:
1.414 + TPacketBase();
1.415 + TInt iExtensionId; ///< Extension identifier
1.416 + };
1.417 +
1.418 +class TPacketType
1.419 +/**
1.420 +Base class for all the V1 parameter types.
1.421 +
1.422 +@publishedPartner
1.423 +@released
1.424 +*/
1.425 +{
1.426 +public:
1.427 + IMPORT_C TInt ExtensionId() const;
1.428 +protected:
1.429 + TPacketType();
1.430 + void InternalizeL(RReadStream& aStream);
1.431 + void ExternalizeL(RWriteStream& aStream) const;
1.432 +protected:
1.433 + TInt iExtensionId;
1.434 +};
1.435 +
1.436 +struct TClientId
1.437 +/**Holds the session and subsession handles which would be used
1.438 +within the 2-phase list retrieval mechanism. During both the phases,
1.439 +the client-side API code will pass down the TClientId so that TSY can use
1.440 +this information to match the first phase of the request to the second phase. */
1.441 + {
1.442 + /** The handle to the underlying RTelServer session. */
1.443 + TInt iSessionHandle;
1.444 + /** The handle to the sub-session to which this API request relates. */
1.445 + TInt iSubSessionHandle;
1.446 + };
1.447 +
1.448 +class RPacketService;
1.449 +class CPacketContextPtrHolder;
1.450 +class RPacketContext : public RTelSubSessionBase
1.451 +/** Defines the context and the configuration of a connection to the network's
1.452 +packet-switched service.
1.453 +
1.454 +The functionality associated with the context of a packet-switched connection
1.455 +(configuring, modifying, activating, etc) are encapsulated within this class.
1.456 +
1.457 +Each instance of this class has an RPacketService parent, to which it belongs.
1.458 +
1.459 +@publishedPartner
1.460 +@released
1.461 +*/
1.462 + {
1.463 +public:
1.464 + IMPORT_C RPacketContext();
1.465 + IMPORT_C TInt OpenNewContext(RPacketService& aPacketNetwork, TDes& aContextName);
1.466 + IMPORT_C TInt OpenExistingContext(RPacketService& aPacketNetwork,const TDesC& aContextName);
1.467 + IMPORT_C void Close();
1.468 +//
1.469 +// Nested classes dealing with context configurations for each network type
1.470 +//
1.471 + 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.
1.472 + enum {KMaxPDPAddressLength = KCommsDbSvrMaxFieldLength};
1.473 + enum
1.474 + {
1.475 + KPdpDataCompression = 0x01,
1.476 + KPdpHeaderCompression = 0x02
1.477 + };
1.478 +
1.479 +/** Buffer to hold the GSN address.
1.480 +
1.481 +@see KGSNNameLength */
1.482 + typedef TBuf8<KGSNNameLength> TGSNAddress; ///< GPRS Support Node (GSN) name
1.483 +/** Buffer to hold the protocol address.
1.484 +
1.485 +@see KMaxPDPAddressLength */
1.486 + typedef TBuf8<KMaxPDPAddressLength> TProtocolAddress; ///< GPRS Rel97/98, CDMA, Rel99 and Rel4.
1.487 +
1.488 + //
1.489 + // TProtocolType - defines the protocol used to connect to the packet data gateway
1.490 + //
1.491 +/** Defines the protocol used to connect to the packet data gateway.
1.492 +
1.493 +Modes: GRPS */
1.494 + enum TProtocolType
1.495 + {
1.496 + /** IPv4 type gateway.
1.497 +
1.498 + Modes: GRPS */
1.499 + EPdpTypeIPv4,
1.500 + /** IPv6 type gateway.
1.501 +
1.502 + Modes: GPRS */
1.503 + EPdpTypeIPv6,
1.504 + /** X.25 type gateway.
1.505 +
1.506 + Modes: GPRS */
1.507 + EPdpTypeX25,
1.508 + /** PPP type gateway.
1.509 +
1.510 + Modes: GRPS, CDMA */
1.511 + EPdpTypePPP,
1.512 + /** CDPD type gateway.
1.513 +
1.514 + Modes: CDMA */
1.515 + EPdpTypeCDPD
1.516 + };
1.517 +
1.518 + //
1.519 + // TServiceOption - service option numbers are CDMA specific and used in the API to
1.520 + // identify the various packet data services available on the CDMA packet network.
1.521 + //
1.522 +/** Service option numbers identify the various packet data services available
1.523 +on the CDMA packet network.
1.524 +
1.525 +Modes: CDMA */
1.526 + enum TServiceOption
1.527 + {
1.528 + /** Service Options 7 and 15, 8-16. */
1.529 + KLowSpeedData = 0x01,
1.530 + /** Service Options 22-25 IP and 26-29 CDPD. */
1.531 + KHighSpeedData = 0x02,
1.532 + /** Service Option 33 on CDMA2000 network only. */
1.533 + KHighSpeedCDMA2000Data = 0x04
1.534 + };
1.535 +
1.536 + /** Anonymous access required.
1.537 +
1.538 + Modes: GRPS, CDMA */
1.539 + enum TAnonymousAccess
1.540 + {
1.541 + /** Anonymous access not applicable.
1.542 +
1.543 + Modes: GRPS, CDMA */
1.544 + ENotApplicable,
1.545 + /** Anonymous access required.
1.546 +
1.547 + Modes: GRPS */
1.548 + ERequired,
1.549 + /** Anonymous access not required.
1.550 +
1.551 + Modes: GPRS */
1.552 + ENotRequired
1.553 + };
1.554 +
1.555 + enum { KMaxAuthDataLength = 50 };
1.556 + /** Buffer for various sorts of authorisation data since version 2 of the API.
1.557 +
1.558 + Supported from v7.0S.
1.559 + */
1.560 + typedef TBuf8<KMaxAuthDataLength> TAuthData;
1.561 +
1.562 + //
1.563 + // TAuthProtocol - this enables the client to set the protocol type used on the context
1.564 + //
1.565 + enum TAuthProtocol
1.566 + {
1.567 + EProtocolNone,
1.568 + EProtocolPAP,
1.569 + EProtocolCHAP
1.570 + };
1.571 +
1.572 + //
1.573 + // TAuthInfo - this enables the client to set the authentication data used on the context
1.574 + //
1.575 + struct TAuthInfo
1.576 + {
1.577 + TAuthProtocol iProtocol;
1.578 + TAuthData iUsername;
1.579 + TAuthData iPassword;
1.580 + };
1.581 +
1.582 + //
1.583 + // TDnsInfoV2 - this class enables the client to set the primary and secondary DNS server
1.584 + // names used on the context
1.585 + //
1.586 + class TDnsInfoV2 : public TPacketBase
1.587 + /**
1.588 + Enables the client to set the primary and secondary DNS server
1.589 + names used on the context since version 2 of the API.
1.590 +
1.591 + Supported from v7.0S.
1.592 +
1.593 + @publishedPartner
1.594 + @released
1.595 + */
1.596 + {
1.597 + public:
1.598 + IMPORT_C TDnsInfoV2();
1.599 + public:
1.600 + /** Primary DNS server name.*/
1.601 + TProtocolAddress iPrimaryDns;
1.602 + /** Secondary DNS server name.*/
1.603 + TProtocolAddress iSecondaryDns;
1.604 + };
1.605 + /**
1.606 + DNS information package since version 2 of the API.
1.607 +
1.608 + Supported from v7.0S.
1.609 + */
1.610 + typedef TPckg<TDnsInfoV2> TTDnsInfoV2Pckg;
1.611 +
1.612 + //
1.613 + // - this buffer can be used to store protocol related data
1.614 + // (such as "PPP config options") which do not fit into the other fields of the
1.615 + // TProtocolConfigOptionV2 class (see below). The length of the buffer is based on
1.616 + // the previous buffer used (before TProtocolConfigOptionV2 was implemented), which
1.617 + // was based on 3GPP TS 24.008 (253 octets).
1.618 + //
1.619 + enum {KMiscProtocolBufferLength = 253};
1.620 + typedef TBuf8<KMiscProtocolBufferLength> TMiscProtocolBuffer;
1.621 +
1.622 + class TProtocolConfigOptionV2 : public TPacketBase
1.623 + /**
1.624 + Holds authentication data encapsulated in TAuthInfo, as
1.625 + well as further data that may be required for CHAP protocol
1.626 + authentication, such a challenge and response, since version
1.627 + 2 of the API.
1.628 +
1.629 + Can contain the DNS server names, the username, password,
1.630 + and CHAP associated data.
1.631 +
1.632 + Normal authentication uses only TAuthInfo::iUsername and
1.633 + TAuthInfo::iPassword. The other parameters are for secure
1.634 + authentication.
1.635 +
1.636 + The maximum combined length of the TAuthInfo::iUsername
1.637 + and the secure information (iPassword or iResponse) is 50 bytes.
1.638 +
1.639 + Rather than keep the Protocol Config Option as a buffer it
1.640 + is encapsulated as a class. This enables data extraction to
1.641 + occur easily.
1.642 +
1.643 + Supported from v7.0S.
1.644 +
1.645 + @publishedPartner
1.646 + @released
1.647 + */
1.648 + {
1.649 + public:
1.650 + IMPORT_C TProtocolConfigOptionV2();
1.651 + public:
1.652 + /** Authentication data.*/
1.653 + TAuthInfo iAuthInfo;
1.654 + /** The pseudorandom data that is chosen by the client.*/
1.655 + TAuthData iChallenge;
1.656 + /** Calculated by the client with the MD5 algorithm using
1.657 + iChallenge, iId and iPassword.*/
1.658 + TAuthData iResponse;
1.659 + /** A one byte identifier that is chosen by the client.*/
1.660 + TUint8 iId;
1.661 + /** Primary and secondary DNS server names since version 2
1.662 + of the API.*/
1.663 + TDnsInfoV2 iDnsAddresses;
1.664 + TMiscProtocolBuffer iMiscBuffer;
1.665 + };
1.666 +
1.667 +
1.668 + class TContextConfigGPRS : public TPacketDataConfigBase
1.669 + /**
1.670 + Context configurations for GPRS packet data support.
1.671 +
1.672 + Contains all the data necessary to configure a context on a GPRS network or
1.673 + UMTS packet network.
1.674 +
1.675 + @publishedPartner
1.676 + @released
1.677 + */
1.678 + {
1.679 + public:
1.680 + IMPORT_C TContextConfigGPRS();
1.681 + public:
1.682 + /** The GPRS protocol type. The default value is EpdpTypeIPv4.
1.683 +
1.684 + @see TProtocolType */
1.685 + TProtocolType iPdpType;
1.686 + /** The GPRS Access point name. The default value is an empty string.
1.687 +
1.688 + @see TGSNAddress */
1.689 + TGSNAddress iAccessPointName;
1.690 + /** The GPRS protocol address. The default value is an empty string.
1.691 +
1.692 + @see TProtocolAddress */
1.693 + TProtocolAddress iPdpAddress;
1.694 + /** The GRPS compression. This is a bit-wise sum of the wanted compression. The
1.695 + default value is 0.
1.696 +
1.697 + @see KPdpDataCompression
1.698 + @see KPdpHeaderCompression */
1.699 + TUint iPdpCompression;
1.700 + /** Anonymous access requested. The default value is ENotRequired.
1.701 +
1.702 + @see TAnonymousAccess */
1.703 + TAnonymousAccess iAnonymousAccessReqd;
1.704 + /** Use Edge. The default value is EFalse. True for EGPRS.*/
1.705 + TBool iUseEdge; //
1.706 + /** Protocol configuration options for version 2 of the API.
1.707 +
1.708 + Supported from v7.0S.*/
1.709 + TProtocolConfigOptionV2 iProtocolConfigOption;
1.710 + /** Network initiated context indication. */
1.711 + TBool iNWIContext;
1.712 + };
1.713 +
1.714 +
1.715 + /**
1.716 + Identifiers for Packet Flow Context. See Table 10.5.161/3GPP TS 24.008.
1.717 + */
1.718 + enum TPacketFlowIdentifier
1.719 + {
1.720 + /**
1.721 + Best Effort
1.722 + */
1.723 + EBestEffort,
1.724 + /**
1.725 + Signalling
1.726 + */
1.727 + ESignalling,
1.728 + /**
1.729 + Sms
1.730 + */
1.731 + ESms
1.732 + };
1.733 +
1.734 + class TContextConfigR99_R4 : public TPacketDataConfigBase
1.735 + /**
1.736 + Enables Release 99 and Release 4 context configuration for version 2 of
1.737 + the API.
1.738 +
1.739 + Contains all the data necessary to configure a context on a R99/R4 packet
1.740 + network.
1.741 +
1.742 + Supported from v7.0S.
1.743 +
1.744 + @publishedPartner
1.745 + @released
1.746 + */
1.747 + {
1.748 + public:
1.749 + IMPORT_C TContextConfigR99_R4();
1.750 + public:
1.751 + /** The Rel99/Rel4 protocol type. The default value is EpdpTypeIPv4.*/
1.752 + TProtocolType iPdpType;
1.753 + /** The Rel99/Rel4 access point name. The default is an empty string.*/
1.754 + TGSNAddress iAccessPointName;
1.755 + /** The Rel99/Rel4 protocol address. The default value is an empty string.*/
1.756 + TProtocolAddress iPdpAddress;
1.757 + /** Use Edge. The default is EFalse. True for EGPRS.*/
1.758 + TBool iUseEdge;
1.759 + /** Protocol configuration options.*/
1.760 + TProtocolConfigOptionV2 iProtocolConfigOption;
1.761 + TBool iNWIContext; // Network initiated context indication.
1.762 + TPacketFlowIdentifier iPFI; // Packet Flow indicator.
1.763 + };
1.764 +
1.765 + class TContextConfigCDMA : public TPacketDataConfigBase
1.766 + /**
1.767 + Enables context configurations for CDMA and CDMA2000 packet data
1.768 + and high speed packet data support.
1.769 +
1.770 + Contains all the data necessary to configure a context on a CDMA packet
1.771 + network.
1.772 +
1.773 + @publishedPartner
1.774 + @released
1.775 + */
1.776 + {
1.777 + public:
1.778 + IMPORT_C TContextConfigCDMA();
1.779 + public:
1.780 + /** Identifies the CDMA packet service option range (Low, High, High CDMA2000).
1.781 + The default value is KLowSpeedData.
1.782 +
1.783 + @see TServiceOption */
1.784 + TUint iServiceOption;
1.785 + /** The CDMA protocol type, either PPP or CDPD. The default value is EPdpTypePPP.
1.786 +
1.787 + @see TProtocolType */
1.788 + TProtocolType iProtocolType;
1.789 + };
1.790 +
1.791 + // Configuration-related calls
1.792 + IMPORT_C void SetConfig(TRequestStatus& aStatus, const TDesC8& aConfig) const;
1.793 + IMPORT_C void GetConfig(TRequestStatus& aStatus, TDes8& aConfig) const;
1.794 + IMPORT_C void NotifyConfigChanged(TRequestStatus& aStatus, TDes8& aConfig) const;
1.795 + IMPORT_C void Activate(TRequestStatus& aStatus) const;
1.796 + IMPORT_C void Deactivate(TRequestStatus& aStatus) const;
1.797 + IMPORT_C void Delete(TRequestStatus& aStatus) const;
1.798 + IMPORT_C void LoanCommPort(TRequestStatus& aStatus, RCall::TCommPort& aDataPort) const; // Deprecated method.
1.799 + IMPORT_C void RecoverCommPort(TRequestStatus& aStatus) const; // Deprecated method.
1.800 + IMPORT_C void GetDnsInfo(TRequestStatus& aStatus, TDes8& aDnsInfo) const;
1.801 +
1.802 +
1.803 +
1.804 + enum TContextStatus
1.805 + {
1.806 + /** Current status is unknown. */
1.807 + EStatusUnknown,
1.808 + /** Context is not activated. */
1.809 + EStatusInactive,
1.810 + /** Context is currently being activated. */
1.811 + EStatusActivating,
1.812 + /** Context is active. */
1.813 + EStatusActive,
1.814 + /** Context is currently being deactivated. */
1.815 + EStatusDeactivating,
1.816 + /** Context is suspended. */
1.817 + EStatusSuspended,
1.818 + /** Context has been deleted. */
1.819 + EStatusDeleted,
1.820 + /** Context is currently in data receiving mode.The service transitions
1.821 + to this state when the data transmission starts.This is expected
1.822 + to happen after some time of arrival of SESSION START message from the network.
1.823 + Note : Applicable only to MBMS context */
1.824 + EStatusReceiving
1.825 + };
1.826 +
1.827 + IMPORT_C TInt GetStatus(TContextStatus& aContextStatus) const;
1.828 + IMPORT_C void NotifyStatusChange(TRequestStatus& aStatus,TContextStatus& aContextStatus);
1.829 + IMPORT_C TInt GetProfileName(TName& aQoSProfile) const;
1.830 +
1.831 + struct TDataVolume
1.832 +/** Holds the amount of sent and received data.
1.833 +
1.834 +The total number of bytes sent is: iOverflowCounterSent*(2^32)+iOverflowCounterSent */
1.835 + {
1.836 + TUint32 iBytesSent;
1.837 + /** Overflow counter for the bytes sent.
1.838 +
1.839 + The total number of bytes sent is: iOverflowCounterSent*(2^32)+iOverflowCounterSent */
1.840 + TUint32 iOverflowCounterSent;
1.841 + /** The number of bytes received.
1.842 +
1.843 + The total number of bytes received is: iOverflowCounterReceived*(2^32)+iOverflowCounterReceived */
1.844 + TUint32 iBytesReceived;
1.845 + /** Overflow counter for the bytes received.
1.846 +
1.847 + The total number of bytes received is: iOverflowCounterReceived*(2^32)+iOverflowCounterReceived */
1.848 + TUint32 iOverflowCounterReceived;
1.849 + };
1.850 +
1.851 + struct TNotifyDataTransferredRequest
1.852 + {
1.853 + TUint iRcvdGranularity;
1.854 + TUint iSentGranularity;
1.855 + };
1.856 +
1.857 + /**
1.858 + Determines which fields in the TConnectionInfoXXX parameter class are valid.
1.859 +
1.860 + @see TConnectionInfoV1
1.861 + */
1.862 + enum TConnectionInfoFlags
1.863 + {
1.864 + /** The HSDPA category field is valid in the connection info class.
1.865 +
1.866 + Modes: WCDMA */
1.867 + KHSDPACategory = 0x00000001,
1.868 +
1.869 + /** The HSUPA category field is valid in the connection info class.
1.870 +
1.871 + Modes: WCDMA */
1.872 + KHSUPACategory = 0x00000002
1.873 + };
1.874 +
1.875 + class TConnectionInfoV1 : public TConnectionInfoBase
1.876 + /**
1.877 + Connection info class is used to carry miscellaneous information about data connection.
1.878 +
1.879 + Contains all kind of packet data connection related information that is useful for
1.880 + ETel API clients.
1.881 +
1.882 + Supported from v9.5.
1.883 +
1.884 + @publishedPartner
1.885 + @released
1.886 + */
1.887 + {
1.888 + public:
1.889 + IMPORT_C TConnectionInfoV1();
1.890 + public:
1.891 + /**HSDPA UE category as defined in 3GPP TS 25.306 Table 5.1a: "FDD
1.892 + HS-DSCH physical layer categories". Value "0" means HSDPA is not used,
1.893 + value "1" means category 1, value "2" means category 2 etc.*/
1.894 + TUint iHSDPACategory;
1.895 +
1.896 + /*HSUPA (E-DCH) UE category as defined in 3GPP TS 25.306 Table 5.1g:
1.897 + "FDD E-DCH physical layer categories". Value "0" means HSUPA is not used,
1.898 + value "1" means category 1, value "2" means category 2 etc.*/
1.899 + TUint iHSUPACategory;
1.900 + };
1.901 +
1.902 +
1.903 + IMPORT_C TInt GetDataVolumeTransferred(TDataVolume& aVolume) const; // Deprecated method.
1.904 + IMPORT_C void NotifyDataTransferred(TRequestStatus& aStatus, TDataVolume& aVolume, TUint aRcvdGranularity=0x1000,TUint aSentGranularity=0x1000) const;
1.905 + IMPORT_C void GetConnectionSpeed(TRequestStatus& aStatus, TUint& aRate) const; // get the current speed (bits per second) of the connection
1.906 + IMPORT_C void NotifyConnectionSpeedChange(TRequestStatus& aStatus, TUint& aRate) const; // notify client if there's a change in the connection speed
1.907 +
1.908 + // N.B. the following 2 methoda are only supported if telephony was built with SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW macro
1.909 + IMPORT_C void GetConnectionInfo(TRequestStatus& aStatus, TDes8& aInfo) const; // get connection information
1.910 + IMPORT_C void NotifyConnectionInfoChange(TRequestStatus &aStatus, TDes8& aInfo) const; // notify client if connection information changes
1.911 +
1.912 + IMPORT_C TInt GetLastErrorCause(TInt& aError) const;
1.913 +
1.914 + IMPORT_C void GetDataVolumeTransferred(TRequestStatus& aStatus, TDataVolume& aVolume) const; // Recommended method variant.
1.915 +
1.916 + class TDataChannelV2 : public TPacketBase
1.917 + /**
1.918 + Contains data channel parameters.
1.919 +
1.920 + Contains the information previously returned by LoanCommPort()
1.921 + (iCsy and iPort), as well as the new information which is generated
1.922 + by context creation, e.g. the context (data channel) identity,
1.923 + for version 2 of the API.
1.924 +
1.925 + It is passed as a packaged parameter to RPacketContext::InitialiseContext().
1.926 +
1.927 + @publishedPartner
1.928 + @released
1.929 + */
1.930 + {
1.931 + public:
1.932 + IMPORT_C TDataChannelV2();
1.933 + public:
1.934 + /**CSY name.
1.935 + @deprecated Data previously used by LoanDataPort() in version 1 of the API.*/
1.936 + TFileName iCsy;
1.937 + /**Port name
1.938 + @deprecated Data previously used by LoanDataPort(). */
1.939 + TName iPort;
1.940 + /**Context Identity.
1.941 + The Channel name information returned by the lower layers (Nif). */
1.942 + TName iChannelId;
1.943 + };
1.944 + /**
1.945 + Data channel package since version 2 of the API.
1.946 +
1.947 + Supported from v7.0S.
1.948 + */
1.949 + typedef TPckg<TDataChannelV2> TDataChannelV2Pckg;
1.950 +
1.951 + IMPORT_C void InitialiseContext(TRequestStatus& aStatus, TDes8& aDataChannelV2Pckg) const; // This method supersedes the LoanCommPort() and RecoverCommPort() methods.
1.952 +
1.953 + enum {KIPAddressSize = 16}; ///< TIPAddress size
1.954 + /**
1.955 + Array to hold either IPv4 or IPv6 address or Subnet mask since version 2 of the API.
1.956 +
1.957 + Supported from v7.0S.
1.958 + */
1.959 + typedef TUint8 TIPAddress[KIPAddressSize];
1.960 +
1.961 +
1.962 + class TPacketFilterV2 : public TPacketBase
1.963 + /**
1.964 + Packet filter package since version 2 of the API.
1.965 +
1.966 + Contains member data compatible with parameters required for configuring
1.967 + a packet filter on a Rel99/R4 packet network.
1.968 +
1.969 + Inherits from the TPacketBase class to make it future
1.970 + proof (extensible).
1.971 +
1.972 + Supported from v7.0S.
1.973 +
1.974 + @publishedPartner
1.975 + @released
1.976 + */
1.977 +
1.978 + {
1.979 + public:
1.980 + IMPORT_C TPacketFilterV2();
1.981 + public:
1.982 + /** Packet filter identifier. Value range: 1 - 8.*/
1.983 + TInt iId;
1.984 + /** Evaluation Precedence Index. Value range: 255 (lowest) - 0 (highest).*/
1.985 + TInt iEvaluationPrecedenceIndex;
1.986 + /** Domain Source address.*/
1.987 + TIPAddress iSrcAddr;
1.988 + /** Domain Subnet mask.*/
1.989 + TIPAddress iSrcAddrSubnetMask;
1.990 + /** Protocol number (IPv4) or Next Header (IPv6) field of incoming packets.
1.991 + Value range 0 - 255.*/
1.992 + TInt iProtocolNumberOrNextHeader;
1.993 + /** Minimum source port number of incoming packets. Value range 0 - 65535.*/
1.994 + TInt iSrcPortMin;
1.995 + /** Maximum source port number of incoming packets. Value range 0 - 65535.*/
1.996 + TInt iSrcPortMax;
1.997 + /** Lowest destination port number of incoming packets. Value range 0 - 65535.*/
1.998 + TInt iDestPortMin;
1.999 + /** Maximum destination port number of incoming packets. Value range 0 - 65535.*/
1.1000 + TInt iDestPortMax;
1.1001 + /** Security Parameter Index, 32-bit field.*/
1.1002 + TUint32 iIPSecSPI;
1.1003 + /** Type of Service (IPv4) or Traffic Class (IPv6).
1.1004 + 1 octet TOS/Traffic class + 1 octet TOS/Traffic class Mask.*/
1.1005 + TUint16 iTOSorTrafficClass;
1.1006 + /** Flow label (IPv6 only) of incoming packets. 3 octets with 20-bit field
1.1007 + containing the flow label.*/
1.1008 + TUint32 iFlowLabel;
1.1009 + };
1.1010 + /** Packaged TPacketFilterV2.*/
1.1011 + typedef TPckg<TPacketFilterV2> TPacketFilterV2Pckg;
1.1012 +
1.1013 +
1.1014 + /**
1.1015 + Maximum length of DNS Fully Qualified Domain Name (RFC 1123)
1.1016 +
1.1017 + @internalComponent
1.1018 + */
1.1019 + enum TFQDNLength
1.1020 + {
1.1021 + KMaxFQDNLength=255,
1.1022 + };
1.1023 +
1.1024 + typedef TBuf8<KMaxFQDNLength> TAuthorizationToken;
1.1025 +
1.1026 + /**
1.1027 + Packet Filter type identifier.
1.1028 +
1.1029 + @publishedPartner
1.1030 + @released
1.1031 + */
1.1032 + enum TPacketFilterType
1.1033 + {
1.1034 + /** Unknown filter type.*/
1.1035 + EPacketFilterTypeUnknown,
1.1036 + /** Filter Type One.*/
1.1037 + EPacketFilterTypeOne,
1.1038 + /** Filter Type Two.*/
1.1039 + EPacketFilterTypeTwo,
1.1040 + /** Filter Type Three.*/
1.1041 + EPacketFilterTypeThree,
1.1042 + };
1.1043 +
1.1044 + class TPacketFilterV3 : public TPacketFilterV2
1.1045 + /**
1.1046 + Packet filter that supports packet filter types.
1.1047 + Contains member data compatible with parameters required
1.1048 + for configuring a packet filter on a Rel99/R4/R5 packet network. .
1.1049 +
1.1050 + Inherits from the TPacketFilterV2 class.
1.1051 +
1.1052 + Supported from 9.1
1.1053 +
1.1054 + @publishedPartner
1.1055 + @released
1.1056 + */
1.1057 + {
1.1058 + public:
1.1059 + IMPORT_C TPacketFilterV3(TPacketFilterType aType);
1.1060 + IMPORT_C TPacketFilterV3();
1.1061 + enum TPacketFilterDataBitmapPos
1.1062 + {
1.1063 + /** Bitmap for Domain Source address.*/
1.1064 + EPacketFilterSrcAddr = 0x001,
1.1065 + /** Bitmap for Domain Subnet mask.*/
1.1066 + EPacketFilterSrcAddrSubnetMask = 0x002,
1.1067 + /** Bitmap for Protocol number (IPv4) or Next Header (IPv6) field of incoming packets.*/
1.1068 + EPacketFilterProtocolNumberOrNextHeader = 0x004,
1.1069 + /** Bitmap for Minimum source port number of incoming packets.*/
1.1070 + EPacketFilterSrcPortMin = 0x008,
1.1071 + /** Bitmap for Maximum source port number of incoming packets.*/
1.1072 + EPacketFilterSrcPortMax = 0x010,
1.1073 + /** Bitmap for Lowest destination port number of incoming packets.*/
1.1074 + EPacketFilterDestPortMin = 0x020,
1.1075 + /** Bitmap for Maximum destination port number of incoming packets.*/
1.1076 + EPacketFilterDestPortMax = 0x040,
1.1077 + /** Bitmap for Security Parameter Index.*/
1.1078 + EPacketFilterIPSecSPI = 0x080,
1.1079 + /** Bitmap for Type of Service (IPv4) or Traffic Class (IPv6).*/
1.1080 + EPacketFilterTOSorTrafficClass = 0x100,
1.1081 + /** Bitmap for Flow label (IPv6 only) of incoming packets.*/
1.1082 + EPacketFilterFlowLabel = 0x200,
1.1083 + };
1.1084 +
1.1085 + inline TBool IsPresent(TPacketFilterDataBitmapPos aDataMemberBitmapPos);
1.1086 + inline void Reset(TPacketFilterDataBitmapPos aDataMemberBitmapPos);
1.1087 + inline void Reset();
1.1088 + public:
1.1089 + /** Packet filter identifier. Value range: 1 - 8.*/
1.1090 + using TPacketFilterV2::iId;
1.1091 + /** Evaluation Precedence Index. Value range: 255 (lowest) - 0 (highest).*/
1.1092 + using TPacketFilterV2::iEvaluationPrecedenceIndex;
1.1093 +
1.1094 + public:
1.1095 +
1.1096 + IMPORT_C TBool SetSrcAddr(TIPAddress &aSrcAddr);
1.1097 + IMPORT_C TBool SetSrcAddrSubnetMask(TIPAddress &aSrcAddrSubnetMask);
1.1098 +
1.1099 + IMPORT_C TBool SetProtocolNumberOrNextHeader(TInt aProtocolNumberOrNextHeader);
1.1100 +
1.1101 + IMPORT_C TBool SetSrcPortMin(TInt aSrcPortMin);
1.1102 + IMPORT_C TBool SetSrcPortMax(TInt aSrcPortMax);
1.1103 +
1.1104 + IMPORT_C TBool SetDestPortMin(TInt aDestPortMin);
1.1105 + IMPORT_C TBool SetDestPortMax(TInt aDestPortMax);
1.1106 +
1.1107 + IMPORT_C TBool SetSPI(TUint32 aIPSecSPI);
1.1108 +
1.1109 + IMPORT_C TBool SetTOSorTrafficClass(TUint16 aTOSorTrafficClass);
1.1110 + IMPORT_C TBool SetFlowLabel(TUint32 aFlowLabel);
1.1111 +
1.1112 +
1.1113 + public:
1.1114 +
1.1115 + /** Return the Domain Source address.
1.1116 +
1.1117 + @return Domain Source address.
1.1118 + */
1.1119 + inline const TIPAddress& SrcAddr()
1.1120 + {
1.1121 + return iSrcAddr;
1.1122 + };
1.1123 +
1.1124 + /** Return the Domain Subnet mask.
1.1125 +
1.1126 + @return Domain Subnet mask.
1.1127 + */
1.1128 + inline const TIPAddress& SrcAddrSubnetMask()
1.1129 + {
1.1130 + return iSrcAddrSubnetMask;
1.1131 + };
1.1132 +
1.1133 + inline TInt ProtocolNumberOrNextHeader();
1.1134 +
1.1135 + inline TInt SrcPortMin();
1.1136 + inline TInt SrcPortMax();
1.1137 +
1.1138 + inline TInt DestPortMin();
1.1139 + inline TInt DestPortMax();
1.1140 +
1.1141 + inline TUint32 SPI();
1.1142 +
1.1143 + inline TUint16 TOSorTrafficClass();
1.1144 + inline TUint32 FlowLabel();
1.1145 + protected:
1.1146 + /** Initialised in the constructor - type can be I, II or III
1.1147 + */
1.1148 + TPacketFilterType iType;
1.1149 + /** Bitmap of allowed attributes set in the constructor in accordance to type
1.1150 + of the filter as defined in TS 23.060.
1.1151 + */
1.1152 + TUint16 iAllowedDataBitmap;
1.1153 + /** Bitmap of data members that are set(initialised) - data member can be set
1.1154 + in allowed for the specified type of the filter only.
1.1155 + */
1.1156 + TUint16 iPresentDataBitmap;
1.1157 + };
1.1158 + /** Packaged TPacketFilterV3.*/
1.1159 + typedef TPckg<TPacketFilterV3> TPacketFilterV3Pckg;
1.1160 +
1.1161 + /**
1.1162 + Contains Authorization Token and associated Flow Identifiers.
1.1163 + Defines member data needed to set media authorization TFT parameters - single Authorization Token parameter
1.1164 + followed by the list of Flow Identifier parameter(s), as defined in 3GPP TS 24.008.
1.1165 +
1.1166 + Contains data member that's instance of TPacketBase class to make it future proof (extensible); In order to support serialization,
1.1167 + present implementation of TPacketBase has to be extended so that it supports methods needed (ExternalizeL()/InternalizeL()).
1.1168 + Supported from 9.1.
1.1169 +
1.1170 + @publishedPartner
1.1171 + @released
1.1172 + */
1.1173 + class CTFTMediaAuthorizationV3 : public CBase
1.1174 + {
1.1175 + public:
1.1176 + IMPORT_C ~CTFTMediaAuthorizationV3();
1.1177 + IMPORT_C static CTFTMediaAuthorizationV3* NewL();
1.1178 + public:
1.1179 + IMPORT_C virtual void ExternalizeL(HBufC8*& aBuffer) const;
1.1180 + IMPORT_C virtual void InternalizeL(TDes8& aBuffer);
1.1181 + IMPORT_C TUint ExtensionId()const;
1.1182 +
1.1183 +
1.1184 + /** Flow identifier */
1.1185 + struct TFlowIdentifier
1.1186 + {
1.1187 + /** Media component number. */
1.1188 + TUint16 iMediaComponentNumber;
1.1189 + /** IP flow number. */
1.1190 + TUint16 iIPFlowNumber;
1.1191 + };
1.1192 + /** Authorization token */
1.1193 + TAuthorizationToken iAuthorizationToken;
1.1194 + /** List of flow identifiers authorization token is granted for*/
1.1195 + RArray<TFlowIdentifier> iFlowIds;
1.1196 + protected:
1.1197 + CTFTMediaAuthorizationV3();
1.1198 + TUint iExtensionId;
1.1199 + };
1.1200 +
1.1201 + IMPORT_C void AddMediaAuthorizationL(TRequestStatus& aStatus, CTFTMediaAuthorizationV3& aMediaAuthorization) const;
1.1202 + IMPORT_C void RemoveMediaAuthorization(TRequestStatus& aStatus, TAuthorizationToken& aAuthorizationToken) const;
1.1203 +
1.1204 +
1.1205 + IMPORT_C TInt OpenNewSecondaryContext(RPacketService& aPacketService, const TDesC& aExistingContextName, TDes& aNewContextName);
1.1206 + IMPORT_C void EnumeratePacketFilters(TRequestStatus& aStatus, TInt& aCount) const;
1.1207 + IMPORT_C void GetPacketFilterInfo(TRequestStatus& aStatus, TInt aIndex, TDes8& aPacketFilterInfo) const;
1.1208 + IMPORT_C void AddPacketFilter(TRequestStatus& aStatus, const TDesC8& aPacketFilterInfo) const;
1.1209 + IMPORT_C void RemovePacketFilter(TRequestStatus& aStatus, TInt aId) const;
1.1210 + IMPORT_C void ModifyActiveContext(TRequestStatus& aStatus) const;
1.1211 + IMPORT_C void CreateNewTFT(TRequestStatus& aStatus, const TInt aSize) const;
1.1212 + IMPORT_C void DeleteTFT(TRequestStatus& aStatus) const;
1.1213 +
1.1214 +
1.1215 +
1.1216 + /**
1.1217 + Protocol identifiers, as defined in 24.008, section 10.5.6.3
1.1218 + */
1.1219 + enum TPcoProtocolId
1.1220 + {
1.1221 + /** PCO identifier for LCP.*/
1.1222 + EETelPcktProtocolLcpId = 0xc021,
1.1223 + /** PCO identifier for PAP.*/
1.1224 + EETelPcktProtocolPapId = 0xc023,
1.1225 + /** PCO identifier for CHAP.*/
1.1226 + EETelPcktProtocolChapId = 0xc223,
1.1227 + /** PCO identifier for IPCP.*/
1.1228 + EETelPcktProtocolIpcpId = 0x8021
1.1229 + };
1.1230 +
1.1231 + /**
1.1232 + PCO additional parameter identifiers in MS to network direction, as defined in 3GPP TS 24.008, section 10.5.6.3
1.1233 + */
1.1234 + enum TPcoIDMSToNetwork
1.1235 + {
1.1236 + /** PCO MS additional parameter identifier for a PCSCF address request.*/
1.1237 + EEtelPcktPCSCFAddressRequest = 0x01,
1.1238 + /** PCO MS additional parameter identifier for an IM CN subsystem signalling flag.*/
1.1239 + EEtelPcktIMCNMSSubsystemSignallingFlag = 0x02,
1.1240 + /** PCO MS additional parameter identifier for a DNS server address request.*/
1.1241 + EEtelPcktDNSServerAddressRequest = 0x03,
1.1242 + /** Not currently supported.*/
1.1243 + EEtelPcktNotSupported = 0x04,
1.1244 + };
1.1245 +
1.1246 + /**
1.1247 + PCO additional parameter identifiers in network to MS direction, as defined in 3GPP TS 24.008, section 10.5.6.3
1.1248 + */
1.1249 + enum TPcoIDNetworkToMS
1.1250 + {
1.1251 + /** PCO network additional parameter identifier for a PCSCF address.*/
1.1252 + EEtelPcktPCSCFAddress = 0x01,
1.1253 + /** PCO network additional parameter identifier for an IM CN subsystem signalling flag.*/
1.1254 + EEtelPcktIMCNNetworkSubsystemSignallingFlag = 0x02,
1.1255 + /** PCO network additional parameter identifier for a DNS server address.*/
1.1256 + EEtePcktDNSServerAddress= 0x03,
1.1257 + /** PCO network additional parameter identifier for a policy control rejection code.*/
1.1258 + EEtelPcktPolicyControlRejectionCode = 0x04,
1.1259 + };
1.1260 +
1.1261 +
1.1262 + /**
1.1263 + Helper class that implements PCO IE identifier.
1.1264 +
1.1265 + @publishedPartner
1.1266 + @released
1.1267 + */
1.1268 + class TPcoId : public MTlvItemIdType
1.1269 + {
1.1270 + public:
1.1271 + inline TPcoId();
1.1272 + inline TPcoId(TUint16 aId);
1.1273 + inline void ExternalizeL(TDes8&)const;
1.1274 + inline void InternalizeL(TDesC8&);
1.1275 + inline TUint SerializedLength() const;
1.1276 + inline TUint16 Id()const;
1.1277 + inline void SetId(TUint16);
1.1278 + inline TBool IsEqual(const MTlvItemIdType& aOtherIdType)const;
1.1279 + protected:
1.1280 + /** PCO Id*/
1.1281 + TUint16 iId;
1.1282 + };
1.1283 +
1.1284 + /**
1.1285 + Helper class that implements PCO IE identifier length.
1.1286 +
1.1287 + @publishedPartner
1.1288 + @released
1.1289 + */
1.1290 + class TPcoItemDataLength: public MTlvItemDataLengthType
1.1291 + {
1.1292 + public:
1.1293 + inline TPcoItemDataLength();
1.1294 + inline TPcoItemDataLength(TUint8 aLen);
1.1295 + inline void SetDataLength(TUint aLength);
1.1296 + inline TUint DataLength() const;
1.1297 + inline void ExternalizeL(TDes8&) const;
1.1298 + inline void InternalizeL(TDesC8&);
1.1299 + inline TUint SerializedLength()const;
1.1300 + protected:
1.1301 + /** length of associated item data*/
1.1302 + TUint8 iDataLength;
1.1303 + };
1.1304 +
1.1305 + /**
1.1306 + Identifiers for the type of data data compression applicable for SNDCP only,
1.1307 + as defined in 3GPP TS 44.065, section 6.6.1.1.4.
1.1308 + Values listed in the enumeration do not hold same numerical values as those defined in the specifications,
1.1309 + as ENoDataComression and EManufacturerDefaultDataComression are introduced in order to be utilised when no
1.1310 + compression and device default compression algorithm are needed, respectively.
1.1311 + */
1.1312 + enum TDataCompression
1.1313 + {
1.1314 + /**
1.1315 + No compression
1.1316 + */
1.1317 + ENoDataCompression,
1.1318 + /**
1.1319 + Compression algorithm preferred by the device manufacturer
1.1320 + */
1.1321 + EManufacturerDefaultDataCompression,
1.1322 + /**
1.1323 + V.42 bis
1.1324 + */
1.1325 + EV42,
1.1326 + /**
1.1327 + V.44
1.1328 + */
1.1329 + EV44,
1.1330 + };
1.1331 +
1.1332 + /**
1.1333 + Identifiers for type of SNDCP & PDCP header compression as defined
1.1334 + in 3GPP TS 44.065, section 6.5.1.1.4,
1.1335 + Values listed in the enumeration do not hold same numerical values as those defined in the specifications,
1.1336 + as ENoHeaderCompression and EManufacturerDefaultHeaderCompression are introduced in order to be utilised when no
1.1337 + compression and device default compression algorithm are needed, respectively.
1.1338 + */
1.1339 + enum THeaderCompression
1.1340 + {
1.1341 + /**
1.1342 + No compression
1.1343 + */
1.1344 + ENoHeaderCompression,
1.1345 + /**
1.1346 + Compression algorithm preferred by the device manufacturer
1.1347 + */
1.1348 + EManufacturerDefaultHeaderCompression,
1.1349 + /**
1.1350 + Compression algorithm defined in RFC 1144
1.1351 + */
1.1352 + ERfc1144,
1.1353 + /**
1.1354 + Compression algorithm defined in RFC 2507
1.1355 + */
1.1356 + ERfc2507,
1.1357 + /**
1.1358 + Robust header compression algorithm defined in RFC 3095
1.1359 + */
1.1360 + ERohc,
1.1361 + };
1.1362 +
1.1363 + class TContextConfig_R5 : public TContextConfigR99_R4
1.1364 + /**
1.1365 + Reintroduces support for setting of header/data compression in SNDCP & PDCP
1.1366 + Supported from v9.1.
1.1367 + @publishedPartner
1.1368 + @released
1.1369 + */
1.1370 + {
1.1371 + public:
1.1372 + IMPORT_C TContextConfig_R5();
1.1373 +
1.1374 + public:
1.1375 + /** defines whether SNDCP & PDCP header compression shall be utilised or not.
1.1376 + If former is the case, it holds value of that defines compression algorithm to be exercised.
1.1377 + The default value is ENone - no compression is needed.
1.1378 + */
1.1379 + THeaderCompression iPdpHeaderCompression;
1.1380 + /** defines whether SNDCP data compression shall be utilised or not.
1.1381 + If former is the case, it holds value of that defines compression algorithm to be exercised.
1.1382 + The default value is ENone - no compression is needed.
1.1383 + */
1.1384 + TDataCompression iPdpDataCompression;
1.1385 + };
1.1386 +
1.1387 +protected:
1.1388 + IMPORT_C virtual void ConstructL();
1.1389 + IMPORT_C virtual void Destruct();
1.1390 +protected:
1.1391 + CPacketContextPtrHolder* iEtelPacketContextPtrHolder;
1.1392 + };
1.1393 +
1.1394 +///////////////////////////////////////////////////////////////////
1.1395 +// MBMS Context
1.1396 +///////////////////////////////////////////////////////////////////
1.1397 +class RPacketMbmsContext : public RPacketContext
1.1398 +/**
1.1399 +Defines the MBMS context and the configuration of a connection to the network's
1.1400 +packet-switched service.
1.1401 +The functionality associated with the context of a MBMS connection is inherited
1.1402 +from RPacketContext class.
1.1403 +The behaviour of OpenNewContext API is redefined.
1.1404 +Every instance of this class has RPacketService as a base class.
1.1405 +
1.1406 +@publishedPartner
1.1407 +@released
1.1408 +*/
1.1409 + {
1.1410 +public:
1.1411 + IMPORT_C RPacketMbmsContext();
1.1412 + IMPORT_C TInt OpenNewContext(RPacketService& aPacketNetwork, TDes& aContextName);
1.1413 + IMPORT_C void Close();
1.1414 + friend class CRetrievePcktMbmsSessionList;
1.1415 +
1.1416 + class TContextConfigMbmsV1: public TPacketDataConfigBase
1.1417 + /**
1.1418 + Context configurations for MBMS support.
1.1419 +
1.1420 + Contains all the data necessary to configure a context on a MBMS network.
1.1421 +
1.1422 + @see RPacketContext::SetConfig()
1.1423 +
1.1424 + @publishedPartner
1.1425 + @released
1.1426 + */
1.1427 + {
1.1428 + public:
1.1429 + IMPORT_C TContextConfigMbmsV1();
1.1430 + public:
1.1431 + /** Input parameter : Temporary mobile group identity
1.1432 + * A unique name to an MBMS service
1.1433 + */
1.1434 + TTmgi iTmgi;
1.1435 +
1.1436 + /** Input Parameter : MBMS access bearer information
1.1437 + * @see TMbmsScope
1.1438 + */
1.1439 + TMbmsScope iMbmsAccessBearer;
1.1440 +
1.1441 + /** Input parameter : MBMS service priority options
1.1442 + * Specifies the priority of the MBMS service to be received.
1.1443 + * @see TMbmsServicePriority
1.1444 + */
1.1445 + TMbmsServicePriority iMbmsServicePriority;
1.1446 +
1.1447 + /** Input parameter : MBMS service mode
1.1448 + * @see TMbmsServiceMode
1.1449 + */
1.1450 + TMbmsServiceMode iMbmsServiceMode;
1.1451 +
1.1452 + /** Input parameter : MBMS session flag
1.1453 + * ETrue indicates that an MBMS service has one or more sessions.
1.1454 + */
1.1455 + TBool iMbmsSessionFlag;
1.1456 + };
1.1457 +
1.1458 +
1.1459 + //Packaged version of TContextConfigMbmsV1, used when this structure has to be passed via IPC.
1.1460 + typedef TPckg<TContextConfigMbmsV1> TContextConfigMbmsV1Pckg;
1.1461 +
1.1462 + IMPORT_C void UpdateMbmsSessionList(TRequestStatus& aStatus,const TMbmsAction aAction, const TMbmsSessionId aSessionId = 0) const;
1.1463 +
1.1464 + class CMbmsSession : public CBase
1.1465 + /**
1.1466 + * Captures the list of session(s) of an MBMS service.
1.1467 + * @publishedPartner
1.1468 + * @released
1.1469 + */
1.1470 + {
1.1471 + public:
1.1472 + IMPORT_C static CMbmsSession* NewL();
1.1473 + IMPORT_C void InternalizeL(const TDesC8& aBuffer);
1.1474 + IMPORT_C void ExternalizeL(HBufC8*& aBuffer);
1.1475 + IMPORT_C TUint ExtensionId() const;
1.1476 + IMPORT_C ~CMbmsSession();
1.1477 + public:
1.1478 + /**
1.1479 + * Output Parameter.
1.1480 + * Contains the list of sessions pertaining to the MBMS service.
1.1481 + */
1.1482 + TMbmsSessionIdList iSessionIdList;
1.1483 + /**
1.1484 + * Defines the type of the class
1.1485 + */
1.1486 + TUint iExtensionId;
1.1487 + protected:
1.1488 + CMbmsSession();
1.1489 + };
1.1490 +
1.1491 + };
1.1492 +
1.1493 +class CPacketPtrHolder;
1.1494 +class CPcktMbmsMonitoredServiceList;
1.1495 +class RPacketService : public RTelSubSessionBase
1.1496 +/**
1.1497 +Defines a packet-switched connection to a packet network.
1.1498 +
1.1499 +This is the main packet network class.
1.1500 +It encapsulates functionality associated with controlling a packet-switched connection:
1.1501 +attaching, detaching, querying packet network capabilities, etc.
1.1502 +@publishedPartner
1.1503 +@released
1.1504 +*/
1.1505 + {
1.1506 +public:
1.1507 + IMPORT_C RPacketService();
1.1508 + IMPORT_C TInt Open(RPhone& aPhone);
1.1509 + IMPORT_C void Close();
1.1510 +
1.1511 + IMPORT_C void NotifyContextAdded(TRequestStatus& aStatus, TDes& aContextId) const;
1.1512 + IMPORT_C void Attach(TRequestStatus& aStatus) const;
1.1513 + IMPORT_C void Detach(TRequestStatus& aStatus) const;
1.1514 +
1.1515 + friend TInt RPacketContext::OpenNewSecondaryContext(RPacketService& aPacketService, const TDesC& aExistingContextName, TDes& aNewContextName); ///< This method calls the internal method RPacketService::PrepareOpenSecondary(const TDesC& aOriginalContextName)
1.1516 + friend TInt RPacketContext::OpenNewContext(RPacketService& aPacketNetwork, TDes& aContextName);
1.1517 + friend TInt RPacketMbmsContext::OpenNewContext(RPacketService& aPacketNetwork, TDes& aContextName);
1.1518 +
1.1519 + friend class CRetrievePcktMbmsMonitoredServices;
1.1520 +
1.1521 +/** Defines the packet data connection status. */
1.1522 + enum TStatus
1.1523 + {
1.1524 + /** Unattached to network and inactive packet data connection. */
1.1525 + EStatusUnattached,
1.1526 + /** Attached to network and inactive packet data connection. */
1.1527 + EStatusAttached,
1.1528 + /** Attached to network and active packet data connection. */
1.1529 + EStatusActive,
1.1530 + /** Attached to network and suspended packet data connection. */
1.1531 + EStatusSuspended
1.1532 + };
1.1533 +
1.1534 + IMPORT_C TInt GetStatus(TStatus& aPacketStatus) const;
1.1535 + IMPORT_C void NotifyStatusChange(TRequestStatus& aStatus,TStatus& aPacketStatus) const;
1.1536 + IMPORT_C void NotifyContextActivationRequested(TRequestStatus& aStatus, TDes8& aContextParameters) const;
1.1537 + IMPORT_C void RejectActivationRequest(TRequestStatus& aStatus) const;
1.1538 +
1.1539 + struct TContextInfo
1.1540 + /** Struct to contain the context information.
1.1541 +
1.1542 + @see GetContextInfo() */
1.1543 + {
1.1544 + /** The name of the context.
1.1545 +
1.1546 + @see TName */
1.1547 + TName iName;
1.1548 + /** The current status of the context.
1.1549 +
1.1550 + @see RPacketContext::TContextStatus */
1.1551 + RPacketContext::TContextStatus iStatus;
1.1552 + };
1.1553 +
1.1554 + IMPORT_C void EnumerateContexts(TRequestStatus& aStatus,TInt& aCount, TInt& aMaxAllowed) const; ///< Enumerate all Primary and Secondary contexts (whether active or inactive)
1.1555 + IMPORT_C void GetContextInfo(TRequestStatus& aStatus, TInt aIndex, TContextInfo& aInfo) const;
1.1556 +
1.1557 + //
1.1558 + // Packet Network Registration and Availability
1.1559 + //
1.1560 + /** Packet Network Registration/Availability. */
1.1561 + enum TRegistrationStatus
1.1562 + {
1.1563 + /** Not registered and not searching for a network. A network may or may not be
1.1564 + available. */
1.1565 + ENotRegisteredNotSearching,
1.1566 + /** Registered on a home network. */
1.1567 + ERegisteredOnHomeNetwork,
1.1568 + /** Not registered but searching for a network. */
1.1569 + ENotRegisteredSearching,
1.1570 + /** Registration denied. */
1.1571 + ERegistrationDenied,
1.1572 + /** Registration status unknown. */
1.1573 + EUnknown,
1.1574 + /** Registered on foreign network. */
1.1575 + ERegisteredRoaming,
1.1576 + /** Not registered or searching, but network available. */
1.1577 + ENotRegisteredButAvailable,
1.1578 + /** Not registered or searching, and network not available. */
1.1579 + ENotRegisteredAndNotAvailable
1.1580 + };
1.1581 +
1.1582 + IMPORT_C void GetNtwkRegStatus(TRequestStatus& aStatus, TRegistrationStatus& aRegistrationStatus) const;
1.1583 + IMPORT_C void NotifyChangeOfNtwkRegStatus(TRequestStatus& aStatus,TRegistrationStatus& aRegistrationStatus) const;
1.1584 +
1.1585 + /** MS class configuration. */
1.1586 + enum TMSClass
1.1587 + {
1.1588 + /** Active simultaneous PS and CS calls supported (Class A). */
1.1589 + EMSClassDualMode,
1.1590 + /** Active CS and Suspended PS simultaneous calls supported (Class B). */
1.1591 + EMSClassSuspensionRequired,
1.1592 + /** Active CS or Active PS only call supported (Class C). */
1.1593 + EMSClassAlternateMode,
1.1594 + /** Active CS only call supported (Class C). */
1.1595 + EMSClassCircuitSwitchedOnly,
1.1596 + /** Active PS only call supported (Class C) */
1.1597 + EMSClassPacketSwitchedOnly,
1.1598 + /** Unknown what configuration is supported */
1.1599 + EMSClassUnknown
1.1600 + };
1.1601 +
1.1602 + IMPORT_C void GetMSClass(TRequestStatus& aStatus, TMSClass& aCurrentClass, TMSClass& aMaxClass) const;
1.1603 + IMPORT_C void SetMSClass(TRequestStatus& aStatus, TMSClass aClass) const;
1.1604 + IMPORT_C void NotifyMSClassChange(TRequestStatus& aStatus, TMSClass& aNewClass) const;
1.1605 +
1.1606 + /** Static capabilities.
1.1607 +
1.1608 + Modes: GPRS */
1.1609 + enum TStaticMiscCaps
1.1610 + {
1.1611 + //
1.1612 + // GPRS-specific
1.1613 + //
1.1614 + /** Suspend supported.
1.1615 +
1.1616 + Modes: GPRS */
1.1617 + KCapsSuspendSupported=0x0001,
1.1618 + /** Anonymous Access supported.
1.1619 +
1.1620 + Modes: GPRS */
1.1621 + KCapsAASupported=0x0002,
1.1622 + /** Network availability supported.
1.1623 +
1.1624 + Modes: GPRS */
1.1625 + KCapsNetworkAvailabilitySupported=0x0004,
1.1626 + /** Set default context supported.
1.1627 +
1.1628 + Modes: GPRS */
1.1629 + KCapsSetDefaultContextSupported=0x0008,
1.1630 + /** Change attach mode supported.
1.1631 +
1.1632 + Modes: GPRS */
1.1633 + KCapsChangeAttachModeSupported=0x0010,
1.1634 + /** Get data transferred supported.
1.1635 +
1.1636 + Modes: GPRS */
1.1637 + KCapsGetDataTransferredSupported=0x0020,
1.1638 + /** Notify data transferred supported
1.1639 +
1.1640 + Modes: GPRS */
1.1641 + KCapsNotifyDataTransferredSupported=0x0040,
1.1642 + /** Preferred bearer supported.
1.1643 +
1.1644 + Modes: GPRS */
1.1645 + KCapsPreferredBearerSupported=0x0080,
1.1646 + /** PDP data compression supported.
1.1647 +
1.1648 + Modes: GPRS */
1.1649 + KCapsPdpDataCompSupported=0x0100,
1.1650 + /** PDP header compression supported
1.1651 +
1.1652 + Modes: GPRS */
1.1653 + KCapsPdpHeaderCompSupported=0x0200,
1.1654 + /** MS class supported.
1.1655 +
1.1656 + Modes: GPRS */
1.1657 + KCapsMSClassSupported=0x0400,
1.1658 + /** Notify MS class changes supported.
1.1659 +
1.1660 + Modes: GPRS */
1.1661 + KCapsNotifyMSClassSupported=0x0800,
1.1662 + //
1.1663 + // CDMA Specific
1.1664 + //
1.1665 + /** Service Option (7,15) or (8,16).
1.1666 +
1.1667 + Modes: CDMA2000 */
1.1668 + KCapsCDMAOneLowSpeedDataSupported=0x00001000,
1.1669 + /** Service Option (22-25) or (26-29).
1.1670 +
1.1671 + Modes: CDMA2000 */
1.1672 + KCapsCDMAOneHighSpeedDataSupported=0x00002000,
1.1673 + /** Service Option 33 or 34.
1.1674 +
1.1675 + Modes: CDMA2000 */
1.1676 + KCapsCDMA2000HighSpeedDataSupported=0x00004000,
1.1677 + /** PPP protocol supported.
1.1678 +
1.1679 + Modes: CDMA2000 */
1.1680 + KCapsProtocolPPPSupported=0x00008000,
1.1681 + /** CDPD protocol supported
1.1682 +
1.1683 + Modes: CDMA2000 */
1.1684 + KCapsProtocolCDPDSupported=0x00010000,
1.1685 + KCapsPacketReleaseModeSupported=0x00020000,
1.1686 + KCapsNotifyReleaseModeChangeSupported=0x00040000,
1.1687 +
1.1688 + /** The phone supports HSDPA
1.1689 +
1.1690 + Modes: WCDMA */
1.1691 + KCapsHSDPASupported=0x00080000,
1.1692 +
1.1693 + /** The phone supports EGPRS
1.1694 +
1.1695 + Modes: GPRS/WCDMA */
1.1696 + KCapsEGPRSSupported=0x00100000,
1.1697 +
1.1698 + /** The phone supports HSUPA
1.1699 +
1.1700 + Modes: WCDMA */
1.1701 + KCapsHSUPASupported=0x00200000,
1.1702 + /** The phone supports MBMS
1.1703 +
1.1704 + Modes: GPRS/WCDMA */
1.1705 + KCapsMBMSSupported=0x00400000
1.1706 + };
1.1707 +
1.1708 + IMPORT_C TInt GetStaticCaps(TUint& aCaps, RPacketContext::TProtocolType aPdpType) const;
1.1709 +
1.1710 + /** Dynamic capabilities.
1.1711 +
1.1712 + Modes: GPRS/CDMA */
1.1713 + enum TDynamicCaps
1.1714 + {
1.1715 + // Common GPRS and CDMA caps
1.1716 + /** Activate supported.
1.1717 +
1.1718 + Modes: GPRS/CDMA */
1.1719 + KCapsActivate=0x00000001,
1.1720 + /** Rx Circuit Switched call supported.
1.1721 +
1.1722 + Modes: GPRS/CDMA */
1.1723 + KCapsRxCSCall=0x00000002,
1.1724 + /** RX context activation request supported.
1.1725 +
1.1726 + Modes: GPRS/CDMA */
1.1727 + KCapsRxContextActivationReq=0x00000004,
1.1728 + // GPRS-specific caps
1.1729 + /** Manual attach supported.
1.1730 +
1.1731 + Modes: GPRS */
1.1732 + KCapsManualAttach=0x00000008,
1.1733 + /** Manual detach supported.
1.1734 +
1.1735 + Modes: GPRS */
1.1736 + KCapsManualDetach=0x00000010,
1.1737 + /** SMS transfer supported.
1.1738 +
1.1739 + Modes: GPRS */
1.1740 + KCapsSMSTransfer=0x00000020,
1.1741 + // CDMA-specific caps
1.1742 + /** Service Option (7,15) or (8,16).
1.1743 +
1.1744 + Modes: CDMA */
1.1745 + KCapsCDMAOneLowSpeedDataAllowed=0x00000040,
1.1746 + /** Service Option (22-25) or (26-29).
1.1747 +
1.1748 + Modes: CDMA */
1.1749 + KCapsCDMAOneHighSpeedDataAllowed=0x00000080,
1.1750 + /** Service Option 33 or 34.
1.1751 +
1.1752 + Modes: CDMA */
1.1753 + KCapsCDMA2000HighSpeedDataAllowed=0x00000100,
1.1754 +
1.1755 + /** HSDPA is currently being used
1.1756 +
1.1757 + Modes: WCDMA */
1.1758 + KCapsHSDPA=0x00000200,
1.1759 +
1.1760 + /** EGPRS is currently being used
1.1761 +
1.1762 + Modes: GPRS/WCDMA */
1.1763 + KCapsEGPRS=0x00000400,
1.1764 +
1.1765 + /** HSUPA is currently being used
1.1766 +
1.1767 + Modes: WCDMA */
1.1768 + KCapsHSUPA=0x00000800,
1.1769 +
1.1770 + /** MBMS is currently being used
1.1771 +
1.1772 + Modes: GPRS/WCDMA */
1.1773 + KCapsMBMS=0x00001000
1.1774 +
1.1775 + };
1.1776 +
1.1777 + /** Typedef to hold the RPacketService::TDynamicCaps. */
1.1778 + typedef TUint TDynamicCapsFlags;
1.1779 +
1.1780 + IMPORT_C TInt GetDynamicCaps(TDynamicCapsFlags& aCaps) const;
1.1781 + IMPORT_C void NotifyDynamicCapsChange(TRequestStatus& aStatus, TDynamicCapsFlags& aCaps) const;
1.1782 +
1.1783 + /** The preferred bearer. */
1.1784 + enum TPreferredBearer
1.1785 + {
1.1786 + /** Packet Switched (PS) bearer preferred. */
1.1787 + EBearerPacketSwitched,
1.1788 + /** Circuit Switched (CS) bearer preferred. */
1.1789 + EBearerCircuitSwitched
1.1790 + };
1.1791 +
1.1792 + IMPORT_C void SetPreferredBearer(TRequestStatus& aStatus, TPreferredBearer aBearer) const;
1.1793 + IMPORT_C TInt GetPreferredBearer(TPreferredBearer& aBearer) const;// Deprecated method.
1.1794 +
1.1795 + IMPORT_C void GetPreferredBearer(TRequestStatus& aStatus, TPreferredBearer& aBearer) const; // Recommended method variant
1.1796 +
1.1797 + /** Defines when the attachment to the GPRS network should occur.
1.1798 +
1.1799 + Modes: GPRS */
1.1800 + enum TAttachMode
1.1801 + {
1.1802 + /** The phone will attach to the packet network whenever it can. */
1.1803 + EAttachWhenPossible,// instruct phone stack to attach to packet network whenever it can
1.1804 + /** The phone will attach to the packet network only when required (e.g. when activating
1.1805 + a connection). */
1.1806 + EAttachWhenNeeded // instruct phone stack to attach to network only when required
1.1807 + };
1.1808 +
1.1809 + IMPORT_C TInt SetAttachMode(TAttachMode aMode) const; // Deprecated method.
1.1810 + IMPORT_C TInt GetAttachMode(TAttachMode& aMode) const; // Deprecated method.
1.1811 + IMPORT_C TInt SetDefaultContextParams(const TDesC8& aPckg) const; // Deprecated method.
1.1812 + IMPORT_C TInt GetDefaultContextParams(TDes8& aPckg) const; // Deprecated method.
1.1813 +
1.1814 + IMPORT_C void SetAttachMode(TRequestStatus& aStatus, TAttachMode aMode) const; // Recommended method variant
1.1815 + IMPORT_C void GetAttachMode(TRequestStatus& aStatus, TAttachMode& aMode) const; // Recommended method variant
1.1816 + IMPORT_C void NotifyAttachModeChange(TRequestStatus& aStatus, TAttachMode& aMode) const;
1.1817 + IMPORT_C void SetDefaultContextParams(TRequestStatus& aStatus, const TDesC8& aPckg) const; // Recommended method variant
1.1818 + IMPORT_C void GetDefaultContextParams(TRequestStatus& aStatus, TDes8& aPckg) const; // Recommended method variant
1.1819 +
1.1820 + enum TPacketReleaseMode
1.1821 + {
1.1822 + EReleaseModeUnknown,
1.1823 + EReleaseModeUnregistered,
1.1824 + EReleaseMode97_98,
1.1825 + EReleaseMode99,
1.1826 + EReleaseMode4,
1.1827 + EReleaseModeCDMA2000
1.1828 + };
1.1829 +
1.1830 + IMPORT_C void GetCurrentReleaseMode(TRequestStatus& aStatus, TPacketReleaseMode& aReleaseMode) const;
1.1831 + IMPORT_C void NotifyReleaseModeChange(TRequestStatus& aStatus, TPacketReleaseMode& aReleaseMode) const;
1.1832 +
1.1833 + enum TContextType
1.1834 + {
1.1835 + EUnspecified, ///< Unspecified context type
1.1836 + EInternalContext, ///< Internally created context
1.1837 + EExternalContext ///< Externally created context
1.1838 + };
1.1839 +
1.1840 +
1.1841 + class TNifInfoV2 : public TPacketBase
1.1842 + /**
1.1843 + Rel99/R4 Network information class. This V2 class inherits from the
1.1844 + TPacketBase class to make it future proof (extensible).
1.1845 + @publishedPartner
1.1846 + @released
1.1847 + */
1.1848 + {
1.1849 + public:
1.1850 + IMPORT_C TNifInfoV2(); ///< Constructor
1.1851 + public:
1.1852 + TName iContextName; ///< The name of any defined context for this Network Interface
1.1853 + TInt iNumberOfContexts; ///< Number of contexts belonging to the Network Interface
1.1854 + RPacketContext::TContextStatus iNifStatus; ///< Status of the Network Interface
1.1855 + RPacketContext::TProtocolAddress iPdpAddress; ///< PDP address of the interface
1.1856 + TContextType iContextType; ///< Context type (internally or externally created)
1.1857 + };
1.1858 + typedef TPckg<TNifInfoV2> TNifInfoV2Pckg; ///< TNifInfoV2 package
1.1859 +
1.1860 + // Internal API/TSY struct, used by GetContextNameInNif() method
1.1861 + struct TContextNameInNif
1.1862 + {
1.1863 + TInt iIndex; ///< Integer specifying a context within a Nif.
1.1864 + TName iExistingContextName; ///< Existing Context name.
1.1865 + };
1.1866 +
1.1867 + IMPORT_C void EnumerateNifs(TRequestStatus& aStatus, TInt& aCount) const;
1.1868 + IMPORT_C void GetNifInfo(TRequestStatus& aStatus, TInt aIndex, TDes8& aNifInfoV2) const;
1.1869 + IMPORT_C void EnumerateContextsInNif(TRequestStatus& aStatus, const TDesC& aExistingContextName, TInt& aCount) const;
1.1870 + IMPORT_C void GetContextNameInNif(TRequestStatus& aStatus, const TDesC& aExistingContextName, TInt aIndex, TDes& aContextName) const;
1.1871 + IMPORT_C void DeactivateNIF(TRequestStatus& aStatus, const TDesC& aContextName) const;
1.1872 +
1.1873 +////////////////////////////////////////////////////////
1.1874 +//
1.1875 +// MBMS Service Availability
1.1876 +//
1.1877 +////////////////////////////////////////////////////////
1.1878 +
1.1879 + class TMbmsServiceAvailabilityV1 : public TPacketType
1.1880 + /**
1.1881 + Holds the service availability parameters needed to register with TSY
1.1882 + for the services to be monitored.
1.1883 +
1.1884 + @publishedPartner
1.1885 + @released
1.1886 + */
1.1887 + {
1.1888 + public:
1.1889 + IMPORT_C TMbmsServiceAvailabilityV1();
1.1890 + public:
1.1891 + void InternalizeL(RReadStream& aStream);
1.1892 + void ExternalizeL(RWriteStream& aStream) const;
1.1893 + public:
1.1894 + /** Input Parameter : Temporary Mobile Group Identity */
1.1895 + TTmgi iTmgi;
1.1896 +
1.1897 + /** Input Parameter : MBMS service mode */
1.1898 + TMbmsServiceMode iMbmsServiceMode;
1.1899 +
1.1900 + /** Output Parameter : MBMS availability status */
1.1901 + TMbmsAvailabilityStatus iMbmsAvailabilityStatus;
1.1902 +
1.1903 + /** Input Parameter : MBMS access bearer information */
1.1904 + TMbmsScope iMbmsAccessBearer;
1.1905 + };
1.1906 +
1.1907 + //Packaged version of TMbmsServiceAvailabilityV1, used when this structure has to be passed via IPC.
1.1908 + typedef TPckg<TMbmsServiceAvailabilityV1> TMbmsServiceAvailabilityV1Pckg;
1.1909 +
1.1910 + IMPORT_C void NotifyMbmsServiceAvailabilityChange(TRequestStatus& aReqStatus) const;
1.1911 + IMPORT_C void UpdateMbmsMonitorServiceListL (TRequestStatus& aReqStatus, const TMbmsAction aAction, CPcktMbmsMonitoredServiceList* aList = NULL) const;
1.1912 + IMPORT_C void GetMbmsNetworkServiceStatus(TRequestStatus& aStatus, TBool aAttemptAttach, TMbmsNetworkServiceStatus& aServiceStatus) const;
1.1913 + IMPORT_C void NotifyMbmsNetworkServiceStatusChange(TRequestStatus& aStatus, TMbmsNetworkServiceStatus& aServiceStatus) const;
1.1914 + IMPORT_C void EnumerateMbmsMonitorServiceList(TRequestStatus& aStatus, TInt& aCount, TInt& aMaxAllowed) const;
1.1915 + IMPORT_C void EnumerateMbmsActiveServiceList(TRequestStatus& aStatus, TInt& aCount, TInt& aMaxAllowed) const;
1.1916 +protected:
1.1917 + IMPORT_C virtual void ConstructL();
1.1918 + IMPORT_C virtual void Destruct();
1.1919 +private:
1.1920 + TInt PrepareOpenSecondary(const TDesC& aOriginalContextName); ///< Internal method, not for Client use
1.1921 + CPacketPtrHolder* iEtelPacketPtrHolder;
1.1922 + RMutex iMutex; ///< Internal mutex, used to prevent concurent use of PrepareOpenSecondary() and OpenNewContext()
1.1923 + };
1.1924 +
1.1925 +#include <etelpckt.inl>
1.1926 +#endif