epoc32/include/etelpckt.h
branchSymbian2
changeset 2 2fe1408b6811
     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