mmsharing/mmshavailability/tsrc/ut_availability/Stubs/inc/etelmm.h
changeset 22 496ad160a278
parent 0 f0cf47e981f9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/Stubs/inc/etelmm.h	Fri Jun 11 13:36:18 2010 +0300
@@ -0,0 +1,12666 @@
+/*
+* Copyright (c) 2000-2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+/**
+@file
+
+Multimode ETel API header file.
+
+Describes the MM ETel API - classes, methods and types.
+
+@publishedPartner
+@released
+*/
+
+#ifndef __ETELMM_H__
+#define __ETELMM_H__
+
+#include <e32base.h>
+#include <s32mem.h>
+#include <etel.h>
+#include <etelmmcs.h>
+
+
+/** 
+Internal API/TSY delimiter used to pass the phonebook type
+*/
+#define PHBOOK_DELIMITER		_L("//")
+/** The size of the phone book delimiter string.
+@internalComponent
+ */
+const TInt KSizeOfPhbookDelimiter=2;
+
+/**
+Names for Multimode ETel sub-sessions
+*/
+_LIT(KETelMeAdnPhoneBook,"S1");
+_LIT(KETelMeDialledPhoneBook,"S2");
+_LIT(KETelMeMissedPhoneBook,"S3");
+_LIT(KETelMeReceivedPhoneBook,"S4");
+_LIT(KETelCombinedAdnPhoneBook,"S5");
+_LIT(KETelTaAdnPhoneBook,"S6");
+_LIT(KETelIccAdnPhoneBook,"S7");
+_LIT(KETelIccFdnPhoneBook,"S8");
+_LIT(KETelIccSdnPhoneBook,"S9");
+_LIT(KETelIccBdnPhoneBook,"S10");
+_LIT(KETelIccLndPhoneBook,"S11");
+_LIT(KETelIccVoiceMailBox,"S12");
+
+_LIT(KETelMeSmsStore,"S13");
+_LIT(KETelIccSmsStore,"S14");
+_LIT(KETelCombinedSmsStore,"S15");
+
+_LIT(KETelNamStore,"S16");
+_LIT(KETelOwnNumberStore,"S17");
+_LIT(KETelEmergencyNumberStore,"S18");
+
+_LIT(KETelSmsMessaging,"S19");
+_LIT(KETelBroadcastMessaging,"S20");
+_LIT(KETelUssdMessaging,"S21");
+
+_LIT(KETelConferenceCall,"S22");
+
+_LIT(KETelIccMbdnPhoneBook, "S23");
+_LIT(KETelIccMsisdnPhoneBook, "S24");
+_LIT(KETelIccOciPhoneBook, "S25");
+_LIT(KETelIccIciPhoneBook, "S26");
+_LIT(KETelIccNamStore ,"S27");
+_LIT(KETelIccInfoPhoneBook, "S28");
+
+_LIT(KETelLocationServices,"S29");
+
+// Types for Multimode ETel sub-sessions
+
+_LIT(KEtelCdmaPhoneBookType,"T1");
+_LIT(KEtelGsmPhoneBookType,"T2");
+_LIT(KEtelUSimPhoneBookType,"T3");
+
+// Types for SmartCardEap sub-sessions
+
+/**
+The prefix to all RMobileSmartCardEap sub-session names.
+*/
+_LIT(KETelSmartCardEapSession, "ScEap");
+/**
+The length of KETelSmartCardEapSession.  Used to obtain a const value
+for this length at compile-time.
+*/
+#define SCEAP_SSN_LENGTH 5
+
+/**
+EAP-MD5 type identifier.  Value taken from section 5 of RFC 3748 Jun 2004.
+This should be used as the EAP type identifier value of
+RMobileSmartCardEap::Open() if standard EAP-MD5 challenges are to be used.
+
+This value corresponds to one of the possible values returned in the type
+list of TUiccApplicationEapInfoV6.
+
+(Decimal value = 4)
+
+@see RMobileSmartCardEap::Open()
+@see RMobilePhone::TUiccApplicationEapInfoV6
+*/
+_LIT8(KETelSmartCardEapTypeMD5, "04");
+
+/**
+EAP-TLS type identifier.  Value taken from section 4.1 of RFC 2716 Oct 1999.
+This should be used as the EAP type identifier value of
+RMobileSmartCardEap::Open() if standard EAP-TLS is to be used.
+
+This value corresponds to one of the possible values returned in the type
+list of TUiccApplicationEapInfoV6.
+
+(Decimal value = 13)
+
+@see RMobileSmartCardEap::Open()
+@see RMobilePhone::TUiccApplicationEapInfoV6
+*/
+_LIT8(KETelSmartCardEapTypeTLS, "0D");
+
+/**
+EAP-SIM type identifier.
+This should be used as the EAP type identifier value of
+RMobileSmartCardEap::Open() if standard EAP-SIM is to be used.
+
+This value corresponds to one of the possible values returned in the type
+list of TUiccApplicationEapInfoV6.
+
+(Decimal value = 18)
+
+@see RMobileSmartCardEap::Open()
+@see RMobilePhone::TUiccApplicationEapInfoV6
+*/
+_LIT8(KETelSmartCardEapTypeSIM, "12");
+
+/**
+EAP-AKA type identifier.
+This should be used as the EAP type identifier value of
+RMobileSmartCardEap::Open() if standard EAP-AKA is to be used.
+
+This value corresponds to one of the possible values returned in the type
+list of TUiccApplicationEapInfoV6.
+
+(Decimal value = 23)
+
+@see RMobileSmartCardEap::Open()
+@see RMobilePhone::TUiccApplicationEapInfoV6
+*/
+_LIT8(KETelSmartCardEapTypeAKA, "17");
+
+/**
+EAP-TTLS type identifier.
+This should be used as the EAP type identifier value of
+RMobileSmartCardEap::Open() if standard EAP-TTLS is to be used.
+
+This value corresponds to one of the possible values returned in the type
+list of TUiccApplicationEapInfoV6.
+
+(Decimal value = 21)
+
+@see RMobileSmartCardEap::Open()
+@see RMobilePhone::TUiccApplicationEapInfoV6
+*/
+_LIT8(KETelSmartCardEapTypeTTLS, "15");
+
+/***********************************************************************************/
+//
+//  Global Multimode constants and types
+// 
+/***********************************************************************************/
+
+/**
+Unique API identifier and Functional Unit constants
+Modes: Common 
+*/
+enum TMultimodeETelV1Api
+	{
+	/** TSY supports the Multimode ETel v1.0 API.
+	
+	Modes: Common */
+	KETelExtMultimodeV1=3000,  // 3000 is unique reference for Multimode Etel v1.0 API
+	/** TSY supports the MobileSimAccess functional unit.
+	
+	Modes: Common */
+	KETelFuncMobileIccAccess,
+	/** TSY supports the MobileNetwork functional unit.
+	
+	Modes: Common */
+	KETelFuncMobileNetwork,
+	/** TSY supports the MobileIdentity functional unit.
+	
+	Modes: Common */
+	KETelFuncMobileIdentity,
+	/** TSY supports the MobilePower functional unit.
+	
+	Modes: Common */
+	KETelFuncMobilePower,
+	/** TSY supports the MobileSignal functional unit.
+	
+	Modes: GSM/WCDMA */
+	KETelFuncMobileSignal,
+	/** TSY supports the MobileIndicator functional unit.
+	
+	Modes: Common */
+	KETelFuncMobileIndicator,
+	/** TSY supports the MobileDTMF functional unit.
+	
+	Modes: Common */
+	KETelFuncMobileDTMF,
+	/** TSY supports the MobileUserNetworkAccess functional unit.
+	
+	Modes: Common */
+	KETelFuncMobileUserNetworkAccess,
+	/** TSY supports the MobileIdentityService functional unit.
+	
+	Modes: Common */
+	KETelFuncMobileIdentityService,
+	/** TSY supports the MobileCallForwarding functional unit.
+	
+	Modes: Common */
+	KETelFuncMobileCallForwarding,
+	/** TSY supports the MobileCallBarring functional unit.
+	
+	Modes: GSM/WCDMA */
+	KETelFuncMobileCallBarring,
+	/** TSY supports the MobileCallWaiting functional unit.
+	
+	Modes: Common */
+	KETelFuncMobileCallWaiting,
+	/** TSY supports the MobileCallCompletion functional unit. */
+	KETelFuncMobileCallCompletion,
+	/** TSY supports the MobileAlternatingCall functional unit.
+	
+	Modes: GSM/WCDMA */
+	KETelFuncMobileAlternatingCall,
+	/** TSY supports the MobileCost functional unit.
+	
+	Modes: GSM/WCDMA */
+	KETelFuncMobileCost,
+	/** TSY supports the MobileSecurity functional unit.
+	
+	Modes: Common */
+	KETelFuncMobileSecurity,
+	/** TSY supports the MobileAlternateLineService functional unit.
+	
+	Modes: GSM/WCDMA */
+	KETelFuncMobileAlternateLineService,
+	/** TSY supports the MobileMessageWaiting functional unit.
+	
+	Modes: Common */
+	KETelFuncMobileMessageWaiting,
+	/** TSY supports the MobileFixedDiallingNumbers functional unit.
+	
+	Modes: GSM/WCDMA */
+	KETelFuncMobileFixedDiallingNumbers,
+	/** TSY supports the MobileDataCall functional unit.
+	
+	Modes: Common */
+	KETelFuncMobileDataCall,
+	/** TSY supports the MobilePrivacy functional unit.
+	
+	Modes: CDMA */
+	KETelFuncMobilePrivacy,
+	/** TSY supports the MobileEmergencyCall functional unit.
+	
+	Modes: Common */
+	KETelFuncMobileEmergencyCall,
+	/** TSY supports the MobileSmsMessaging functional unit.
+	
+	Modes: Common */
+	KETelFuncMobileSmsMessaging,
+	/** TSY supports the MobileBroadcastMessaging functional unit.
+	
+	Modes: Common */
+	KETelFuncMobileBroadcastMessaging,
+	/** TSY supports the MobileUssdMessaging functional unit.
+	
+	Modes: GSM/WCDMA */
+	KETelFuncMobileUssdMessaging,
+	/** TSY supports the MobileConferenceCall functional unit.
+	
+	Modes: Common */
+	KETelFuncMobileConferenceCall,
+	/** TSY supports the MobilePhonebookStore functional unit.
+	
+	Modes: Common */
+	KETelFuncMobilePhonebook,
+	/** TSY supports the MobileSmsStore functional unit.
+	
+	Modes: Common */
+	KETelFuncMobileSmsStore,
+	/** TSY supports the MobileNamStore functional unit.
+	
+	Modes: CDMA */
+	KETelFuncMobileNamStore,
+	/** TSY supports the MobileONStore functional unit.
+	
+	Modes: Common */
+	KETelFuncMobileOwnNumberStore,
+	/** TSY supports the MobileENStore functional unit.
+	
+	Modes: Common */
+	KETelFuncMobileEmergencyNumberStore,
+	/** TSY supports the MobileMultimedia functional unit.
+	
+	Modes: GSM/WCDMA */
+	KETelFuncMobileMulticall,
+	/** TSY supports the MobileNextIncomingCall functional unit.
+	
+	Modes: GSM/WCDMA */
+	KETelFuncMobileNextIncomingCall,
+	/** TSY supports the MobileMultimediaCall functional unit.
+	
+	Modes: GSM/WCDMA */
+	KETelFuncMobileMultimediaCall,
+	/** TSY supports the MobileUserSignalling functional unit.
+	
+	Modes: GSM/WCDMA */
+	KETelFuncMobileUserSignalling
+	};
+
+/** Unique API identifier and Functional Unit constants.
+Modes: WCDMA 
+
+*/
+enum TMultimodeETelV2Api
+	{
+	/** TSY supports the Multimode ETel v2.0 API.
+	
+	Modes: WCDMA */
+	KETelExtMultimodeV2=7000,  // 7000 is unique reference for Multimode Etel v2.0 API
+	/** TSY supports the MobileMultimediaCallSettings functional unit.
+	
+	Modes: WCDMA */
+	KEtelFuncMobileMultimediaCallSettings,
+	/** TSY supports the MobileNetworkSecurity functional unit.
+	
+	Modes: WCDMA */
+	KEtelFuncMobileNetworkSecurity,
+	KEtelFuncMobileUSIMApplications
+	};
+	
+/**
+Enum to define the v3.0 API additions
+
+*/
+enum TMultimodeETelV3Api
+	{
+	/**
+	Indicator that the TSY supports the Multimode ETel v3.0 API.
+	*/
+	KETelExtMultimodeV3 = 10000,	
+	/**
+	TSY supports the MobileMMSInformation functional unit.
+	*/
+	KEtelFuncMobileMMSInformation,       // 10001
+	/**
+	TSY supports the KEtelFuncMobileAirTime functional unit.
+	*/
+	KEtelFuncMobileAirTime,              // 10002
+	/**
+	TSY supports the KEtelFuncMobileAutoRedial functional unit.
+	*/
+	KEtelFuncMobileAutoRedial,           // 10003
+	/**
+	TSY supports the KEtelFuncMobilePersonalisation functional unit.
+	*/
+	KEtelFuncMobilePersonalisation,      // 10004
+	/**
+	TSY supports the KEtelMobileMailboxNumbers functional unit.
+	*/
+	KEtelFuncMobileMailboxNumbers,       // 10005
+	/**
+	TSY supports the Mobile APN Control List functional unit.
+	*/
+	KEtelFuncMobileAPNControlList        // 10006
+	};
+
+/**
+Enum to define the v4.0 API additions
+
+*/
+enum TMultimodeETelV4Api
+	{
+	/**
+	Indicator that the TSY supports the Multimode ETel v4.0 API.
+	*/
+	KETelExtMultimodeV4	= 15000
+	};
+
+
+/** Enum to define Release 5 enabling API and data structures
+*/
+enum TMultimodeEtelV5Api
+	{
+	/**
+	Indicator that the TSY supports the Multimode ETel v5.0 API.
+	*/	
+	KEtelExtMultimodeV5=20000,
+	/**
+	Indicator that the TSY supports the IMS functional unit.
+	*/	
+	KEtelFuncMobileIMS,                  // 20001
+	/**
+	TSY supports the KEtelFuncMobileSmartCardApplications functional unit.
+	*/
+	KEtelFuncMobileSmartCardApplications // 20002
+	};
+
+
+/**
+Enum to define the v6.0 API additions.
+*/
+enum TMultimodeEtelV6Api
+	{
+	/**
+	Indicator that the TSY supports the Multimode ETel v6.0 API.
+	*/	
+	KEtelExtMultimodeV6=25000,
+	/**
+	Indicator that the TSY supports the EAP supporting functional unit.
+	*/	
+	KEtelSmartCardEap                    // 25001
+	};
+/**
+Enum to define the v7.0 API additions.
+*/
+enum TMultimodeEtelV7Api
+	{
+	/**
+	Indicator that the TSY supports the Multimode ETel v7.0 API.
+	*/	
+	KEtelExtMultimodeV7=30000,
+	/**
+	Indicator that the TSY supports the LocationServices supporting functional unit.
+	*/	
+	KEtelLocationControlServices                    // 30001
+	};		
+/**
+Enum to define the Etel 3rdParty V1 API additions
+
+*/
+enum TMultimodeETel3rdPartyV1Api 
+	{
+	/**
+	Indicator that the TSY supports the Etel 3rd Party v1.0 API
+	*/
+	KETelExt3rdPartyV1 = 40000
+	};
+
+/*********************************************************/
+//
+// Phone based functionality (RMobilePhone)
+// 
+/*********************************************************/
+
+
+class CMobilePhonePtrHolder;
+class CMobilePhoneStoredNetworkList;
+class RMobileSmartCardEap;
+
+class RMobilePhone : public RPhone
+/**
+Provides client access to mobile phone functionality provided by TSY.
+
+Encapsulates access to a mobile phone. The functionality of RMobilePhone 
+is divided into a number of functional units, for the purpose of easier documentation 
+and navigation and selectable support by TSY.
+
+Note: Some RMobilePhone function members must be supported by the TSY while 
+others are part of optional "functional unit" and only need to be supported 
+if the TSY supports that functional unit. When a functional unit is mandatory 
+then the unit should at least support the Get...Caps() member function to 
+indicate the member functions that are supported for this unit.
+ 
+*/
+	{
+public:
+	friend class CAsyncRetrievePhoneList;
+	IMPORT_C RMobilePhone();
+
+	// Global multimode types
+
+	
+	class TMultimodeType
+	/**
+	Base class for all the V1 parameter types defined within the API.
+	
+	@publishedPartner
+	@released
+	*/
+		{
+	public:
+		IMPORT_C TInt ExtensionId() const;
+	protected:
+		TMultimodeType();
+		void InternalizeL(RReadStream& aStream);
+		void ExternalizeL(RWriteStream& aStream) const;
+	protected:
+		TInt iExtensionId;
+		};
+		
+	/** A typedef'd packaged TMultimodeType for passing through a generic API 
+	function member. */
+	typedef TPckg<TMultimodeType> TMultimodeTypePckg;
+
+	// Types used in RMobilePhone::TMobileAddress
+
+/** Address types.
+
+Modes: Common */
+	enum TMobileTON
+		{
+	/** User or the network has no knowledge of the type of number.
+	
+	Modes: Common */
+		EUnknownNumber,			// 0
+	/** International number.
+	
+	Modes: Common */
+		EInternationalNumber,	// 1
+	/** National number.
+	
+	Modes: Common */
+		ENationalNumber,		// 2
+	/** Administration/service number specific to the serving network, e.g. used to 
+	access an operator.
+	
+	Modes: Common */
+		ENetworkSpecificNumber, // 3
+	/** Subscriber number.
+	
+	Modes: Common */
+		ESubscriberNumber,		// 4 - Also defined as "dedicated, short code" in GSM 04.08
+	/** Alphanumeric number coded according to 3GPP TS 123 038 GSM 7-bit default alphabet.
+	
+	Modes: GSM/WCDMA */
+		EAlphanumericNumber,	// 5
+	/** Abbreviated number.
+	
+	Modes: Common */
+		EAbbreviatedNumber		// 6
+		};
+
+/** Number Plan Indicator.
+
+Modes: Common */
+	enum TMobileNPI
+		{
+	/** User or the network has no knowledge of the numbering plan.
+	
+	Modes: Common */
+		EUnknownNumberingPlan =0,
+	/** ISDN/telephony numbering plan.
+	
+	Modes: Common */
+		EIsdnNumberPlan=1,		
+	/** Data numbering plan.
+
+	Modes: Common */
+		EDataNumberPlan=3,		
+	/** Telex numbering plan.
+
+	Modes: Common */
+		ETelexNumberPlan=4,	
+	/** Service centre specific plan used to indicate a numbering plan specific to external 
+	Short Message entities attached to the SMSC. */
+		EServiceCentreSpecificPlan1=5,
+	/** Service centre specific plan used to indicate a numbering plan specific to external 
+	Short Message entities attached to the SMSC.
+	
+	Modes: GSM/WCDMA */
+		EServiceCentreSpecificPlan2=6,
+	/** National numbering plan.
+	
+	Modes: GSM/WCDMA */
+		ENationalNumberPlan=8,
+	/** Private numbering plan.
+	
+	Modes: Common */
+		EPrivateNumberPlan=9,
+	/** ERMES numbering plan.
+	
+	Modes: GSM/WCDMA */
+		EERMESNumberPlan=10
+		};
+
+	enum 
+		{
+		KMaxMobilePasswordSize=10,
+		KMaxMobileNameSize=32,
+		KMaxMobileTelNumberSize=100
+		};
+
+	struct TMMTableSettings
+		{
+		TUint32 iLocId;
+		};
+
+	typedef TPckg<TMMTableSettings> TMMTableSettingsPckg;
+
+	
+
+	class TMobileAddress
+	/**
+	Defines API abstraction of a mobile telephone number.
+	
+	@publishedPartner
+	@released
+	*/
+		{
+	public:
+		IMPORT_C TMobileAddress();
+			
+		void InternalizeL(RReadStream& aStream);
+		void ExternalizeL(RWriteStream& aStream) const;
+			
+	public:
+		/** Type of number.
+		
+		@see TMobileTON */
+		TMobileTON iTypeOfNumber;
+		/** Number plan.
+		
+		@see TMobileNPI */
+		TMobileNPI iNumberPlan;
+		/** Telephone number. */
+		TBuf<KMaxMobileTelNumberSize> iTelNumber;
+		};
+
+	// Mobile information location type
+
+	/** Defines Location of service information.
+
+	Modes: Common */
+	enum TMobileInfoLocation
+		{
+		/** Retrieve the service information ONLY from the cache on the phone. Return KErrNotFound 
+		if the cache does not exist or it is empty. */
+		EInfoLocationCache,
+		/** Retrieve the service information from the cache, but if this is empty or does 
+		not exist then interrogate the network. */
+		EInfoLocationCachePreferred,
+		/** Retrieve the service information from the network (and refresh the cache if 
+		there is one). */
+		EInfoLocationNetwork
+		};
+
+	// Mobile call service type
+
+	/** Applicability of request to a mobile service group.
+
+	Modes: Common */
+	enum TMobileService
+		{
+		/** The call service has not been specified.
+		
+		Modes: Common */
+		EServiceUnspecified,
+		/** The API request applies to voice call services.
+
+		Modes: Common */
+		EVoiceService,
+		/** The API request applies to auxiliary voice call services.
+
+		Modes: GSM/WCDMA */
+		EAuxVoiceService,
+		/** The API request applies to circuit switched data call services.
+		
+		Modes: Common */
+		ECircuitDataService,
+		/** The API request applies to packet data services.
+	
+		Modes: Common */
+		EPacketDataService,
+		/** The API request applies to fax call services.
+	
+		Modes: Common */
+		EFaxService,
+		/** The API request applies to short message services.
+	
+		Modes: Common */
+		EShortMessageService,
+		/** The API request applies to all mobile services.
+	
+		Modes: Common */
+		EAllServices,
+		/** All teleservices
+	
+		Modes: Common */
+		EAllTele,
+		/** Telephony
+	
+		Modes: Common */
+		ETelephony,
+		/** All data teleservices
+	
+		Modes: Common */
+		EAllDataTele,
+		/** Voice Broadcast Service (VBS) Bearer Service
+	
+		Modes: Common */
+		EAllDataExSms,
+		/** All teleservices except SMS
+	
+		Modes: Common */
+		EAllTeleExcSms,
+		/** All PLMN specific teleservices
+	
+		Modes: Common */
+		EAllPlmnTele,
+		/** PLMN specific teleservice 1
+	
+		Modes: Common */
+		EPlmnTele1,
+		/** PLMN specific teleservice 2
+	
+		Modes: Common */
+		EPlmnTele2,
+		/** PLMN specific teleservice 3
+	
+		Modes: Common */
+		EPlmnTele3,
+		/** PLMN specific teleservice 4
+	
+		Modes: Common */
+		EPlmnTele4,
+		/** PLMN specific teleservice 5
+
+		Modes: Common */
+		EPlmnTele5,
+		/** PLMN specific teleservice 6
+
+		Modes: Common */
+		EPlmnTele6,
+		/** PLMN specific teleservice 7
+	
+		Modes: Common */
+		EPlmnTele7,
+		/** PLMN specific teleservice 8
+	
+		Modes: Common */
+		EPlmnTele8,
+		/** PLMN specific teleservice 9
+	
+		Modes: Common */
+		EPlmnTele9,
+		/** PLMN specific teleservice 10
+	
+		Modes: Common */
+		EPlmnTeleA,
+		/** PLMN specific teleservice 11
+	
+		Modes: Common */
+		EPlmnTeleB,
+		/** PLMN specific teleservice 12
+	
+		Modes: Common */
+		EPlmnTeleC,
+		/** PLMN specific teleservice 13
+	
+		Modes: Common */
+		EPlmnTeleD,
+		/** PLMN specific teleservice 14
+	
+		Modes: Common */
+		EPlmnTeleE,
+		/** PLMN specific teleservice 15
+	
+		Modes: Common */
+		EPlmnTeleF,
+		/** All bearer services
+		
+		Modes: Common */
+		EAllBearer,
+		/** All async services
+	
+		Modes: Common */
+		EAllAsync,
+		/** All sync services
+	
+		Modes: Common */
+		EAllSync,
+		/** All data circuit sync
+	
+		Modes: Common */
+		ESyncData,
+		/** All data circuit async
+	
+		Modes: Common */
+		EAsyncData,
+		/** All packet data services
+	
+		Modes: Common */
+		EPacketData,
+		/** All pad access services
+
+		Modes: Common */
+		EPadAccess,
+		/** All PLMN specific bearer services
+
+		Modes: Common */
+		EAllPlmnBearer,
+		/** PLMN specific bearer service 1
+	
+		Modes: Common */
+		EPlmnBearerServ1,
+		/** PLMN specific bearer service 2
+	
+		Modes: Common */
+		EPlmnBearerServ2,
+		/** PLMN specific bearer service 3
+	
+		Modes: Common */
+		EPlmnBearerServ3,
+		/** PLMN specific bearer service 4
+	
+		Modes: Common */
+		EPlmnBearerServ4,
+		/** PLMN specific bearer service 5
+	
+		Modes: Common */
+		EPlmnBearerServ5,
+		/** PLMN specific bearer service 6
+	
+		Modes: Common */
+		EPlmnBearerServ6,
+		/** PLMN specific bearer service 7
+	
+		Modes: Common */
+		EPlmnBearerServ7,
+		/** PLMN specific bearer service 8
+	
+		Modes: Common */
+		EPlmnBearerServ8,
+		/** PLMN specific bearer service 9
+	
+		Modes: Common */
+		EPlmnBearerServ9,
+		/** PLMN specific bearer service 10
+	
+		Modes: Common */
+		EPlmnBearerServA,
+		/** PLMN specific bearer service 11
+	
+		Modes: Common */
+		EPlmnBearerServB,
+		/** PLMN specific bearer service 12
+	
+		Modes: Common */
+		EPlmnBearerServC,
+		/** PLMN specific bearer service 13
+	
+		Modes: Common */
+		EPlmnBearerServD,
+		/** PLMN specific bearer service 14
+	
+		Modes: Common */
+		EPlmnBearerServE,
+		/** PLMN specific bearer service 15
+	
+		Modes: Common */
+		EPlmnBearerServF,
+		/** Alternative tele services
+
+		Modes: Common */
+		EAltTele,
+		EVoiceGroupCall,
+		EVoiceBroadcast,
+		EAllGprsBearer
+		};
+
+	// Mobile name type
+
+	/** A typedef to hold the names of API sub-sessions. The names are coded as ASCII 
+	characters. */
+	typedef TBuf<KMaxMobileNameSize> TMobileName;
+
+	// Mobile password type
+
+	/** A typedef for the standard password used by mobile phones for secure access 
+	to services (phone lock, SIM lock, call barring password). The password is 
+	coded as Unicode characters. */
+	typedef TBuf<KMaxMobilePasswordSize> TMobilePassword;
+
+	// for use by client-side API code and TSY only
+
+	struct TClientId
+	/** This type is used within the 2-phase list retrieval classes. During both phases, 
+	the client-side API code will pass down the TClientId so that TSY can use
+	this information to match the first phase of the request to the second phase. */
+		{
+		/** The handle to the underlying RTelServer session. */
+		TInt iSessionHandle;
+		/** The handle to the sub-session to which this API request relates. */
+		TInt iSubSessionHandle;
+		};
+
+	/** Phone air interface capabilities. */
+	enum TMobilePhoneModeCaps
+		{
+		/** Phone can operate in GSM mode on 900/1800/1900 MHz bands. */
+		KCapsGsmSupported=0x00000001,
+		/** Phone can operate in GPRS mode on 900/1800/1900 MHz bands. */
+		KCapsGprsSupported=0x00000002,
+		/** Phone can operate in AMPS mode on 800MHz band. */
+		KCapsAmpsSupported=0x00000004,
+		/** Phone can operate in CDMA (IS-95) mode on 800/1900 MHz bands. */
+		KCapsCdma95Supported=0x00000008,
+		/** Phone can operate in CDMA (cdma2000) mode on 800/1900 MHz bands. */
+		KCapsCdma2000Supported=0x00000010,
+		/** Phone can operate in W-CDMA (UTRA Frequency Division Duplex (FDD)) mode. */
+		KCapsWcdmaSupported=0x00000020,
+		/** Phone can operate in TDMA/CDMA (UTRA Time Division Duplex (TDD)) mode. */
+		KCapsTdcdmaSupported=0x00000040,
+		/** 
+		Phone can access Smart Card functionality required for an EAP. 
+		@deprecated 9.3
+		*/
+		KCapsEapSupported=0x00000080
+		};
+
+	/** Version number of the multimode ETel API. */
+	 enum TMultimodeEtelAPIVersion
+		{
+		/** Multimode Etel API version 1. */
+		 TMultimodeETelApiV1
+		};
+
+	 //
+	 //  API/TSY internal type
+	 //
+	
+	 struct TPhoneStoreNameAndIccType
+	/** Structure that holds the phone store name and ICC type.
+
+	Mode: Common */
+		{
+		/** This parameter is used to set the name of the storage. */
+		TName iStoreName;
+		/** This parameter is used to set the type of the ICC card. */
+		TName iMode;
+		};
+
+	IMPORT_C TInt GetMultimodeAPIVersion(TInt& aVersion) const;
+
+	IMPORT_C TInt GetMultimodeCaps(TUint32& aCaps) const;
+
+	IMPORT_C void GetPhoneStoreInfo(TRequestStatus& aReqStatus, TDes8& aInfo, const TDesC& aStoreName) const;
+
+	IMPORT_C void GetPhoneStoreInfo(TRequestStatus& aStatus, TDes8& aInfo, const TDesC& aStoreName, const TDesC& aMode) const;
+
+	// explicit phone initialisation
+	IMPORT_C void InitialiseMM(TRequestStatus& aReqStatus, TDes8& aTableSettings) const; 
+
+	/***********************************************************************************/
+	//
+	// MobilePhoneIccAccess functional unit
+	//
+	/***********************************************************************************/
+	
+/** ICC access capabilities.
+
+Modes: GSM */
+	enum TMobilePhoneIccCaps
+		{
+	/** Phone has a SIM and it currently supports SIM access by clients.
+	
+	Modes: GSM */
+		KCapsSimAccessSupported=0x00000001,
+	/** Phone has a R-UIM and it currently supports R-UIM access by clients.
+	
+	Modes: CDMA */
+		KCapsRUimAccessSupported=0x00000002,
+	/** Phone has a USIM and it currently supports USIM access by clients.
+	
+	Modes: WCDMA */
+		KCapsUSimAccessSupported=0x00000004
+		};
+		
+
+	enum 
+	{
+	/**
+	Maximum size of an ICC identity. 
+	
+	NOTE: TS102.221 defines the maximum size of the ICC Identity as held in EF_ICCID as 10 bytes, however
+	TS 51.011 mentions that network operators may issue a SIM with an identification number of 20 bytes.  
+	Therefore to cover this possibility the higher figure of 20 bytes has been chosen as the maximum size of the ICC identity.
+	*/
+	KMaxSizeIccIdentity	= 20
+	};
+	
+	/** A typedef to hold the ICC identity.*/
+	typedef TBuf8<KMaxSizeIccIdentity> TIccIdentity; 
+
+	IMPORT_C TInt GetIccAccessCaps(TUint32& aCaps) const;
+	IMPORT_C void NotifyIccAccessCapsChange(TRequestStatus& aReqStatus, TUint32& aCaps) const;
+	IMPORT_C void GetIccIdentity(TRequestStatus& aReqStatus, TIccIdentity& aIdentity) const;
+
+/** The Call Transfer/Call Forward options that are supported by the CSP.
+
+Modes: WCDMA/GSM */
+	enum TCspCallOffering
+		{
+	/** Indicates that "Call Transfer" is supported by the CSP. */
+		KCspCT=0x08,
+	/** Indicates that "Call Forwarding on Not Reachable" is supported by the CSP. */
+		KCspCFNRc=0x10,
+	/** Indicates that "Call Forwarding on No Reply" is supported by the CSP. */
+		KCspCFNRy=0x20,
+	/** Indicates that "Call Forwarding on Busy" is supported by the CSP. */
+		KCspCFB=0x40,
+	/** Indicates that "Call Forwarding Unconditional" is supported by the CSP. */
+		KCspCFU=0x80
+		};
+
+/** The call restrictions supported by the CSP.
+
+Modes: GSM/WCDMA */
+	enum TCspCallRestriction
+		{
+	/** Indicates that "Barring of Incoming Calls when roaming outside the home PLMN 
+	country" is supported by CSP. */
+		KCspBICRoam=0x08,
+	/** Indicates that "Barring of All Incoming Calls" is supported by CSP. */
+		KCspBAIC=0x10,
+	/** Indicates that "Barring of Outgoing International Calls except those directed 
+	to the home PLMN country" is supported by CSP. */
+		KCspBOICexHC=0x20,
+	/** Indicates that "Barring of Outgoing International Calls" is supported by CSP. */
+		KCspBOIC=0x40,
+	/** Indicates that "Barring of All Outgoing Calls" is supported by CSP. */
+		KCspBOAC=0x80
+		};
+
+/** Other services supported by the CSP.
+
+Modes: GSM/WCDMA */
+	enum TCspOtherSuppServices
+		{
+	/** Indicates that the Outgoing Access option of the Closed User Group service is 
+	supported by the CSP. */
+		KCspCUGOA=0x08,
+	/** Indicates that the Preferential CUG option of the Closed User Group service 
+	is supported by the CSP. */
+		KCspPrefCUG=0x10,
+	/** Indicates that the Advice of Charge service is supported by the CSP. */
+		KCspAoC=0x20,
+	/** Indicates that the Closed User Group service is supported by the CSP. */
+		KCspCUG=0x40,
+	/** Indicates that the Multiparty call service is supported by the CSP */
+		KCspMPTY=0x80,
+		};
+
+/** Call completion modes supported by this CSP.
+
+Modes: GSM/WCDMA */
+	enum TCspCallCompletion
+		{
+	/** Indicates that the Call Completion to Busy Subscriber service is supported by 
+	the CSP. */
+		KCspCCBS=0x20,
+	/** Indicates that the Call Waiting service is supported by the CSP. */
+		KCspCW=0x40,
+	/** Indicates that the Call Hold service is supported by the CSP. */
+		KCspHOLD=0x80,
+		};
+
+/** SMS Teleservices supported by the CSP.
+
+Modes: GSM/WCDMA */
+	enum TCspTeleservices
+		{
+	/** Indicates that display of Validity Period menu options for SMS is supported 
+	by the CSP. */
+		KCspValidityPeriod=0x02,
+	/** Indicates that display of Protocol ID menu options for SMS is supported by the 
+	CSP. */
+		KCspProtocolID=0x04,
+	/** Indicates that SMS Delivery Confirmation is supported by the CSP. */
+		KCspDelConf=0x08,
+	/** Indicates that display of Reply Path menu options for outgoing SMS is supported 
+	by the CSP. */
+		KCspReplyPath=0x10,
+	/** Indicates that the Cell Broadcast service is supported by the CSP. */
+		KCspSMCB=0x20,
+	/** Indicates mobile originated Short Messages are supported by CSP. */
+		KCspSMMO=0x40,
+	/** Indicates mobile terminated Short Messages are supported by CSP. */
+		KCspSMMT=0x80,
+		};
+
+/** Alternate Line Services */
+	enum TCspCPHSTeleservices
+		{
+	/** Indicates that Alternate Line Service is supported by the CSP. */
+		KCspALS=0x80
+		};
+
+/** Currently not used. */
+	enum TCspCPHSFeatures
+		{
+	/** This bit value is reserved for SST in Phase 1 CPHS. */
+		KCspReservedSST=0x80
+		};
+
+/** Number Identification option supported by the CSP.
+
+Modes: GSM/WCDMA */
+	enum TCspNumberIdentification
+		{
+	/** Indicates that Calling Line Identity Presentation blocking per call (CLI sent 
+	by default) is supported by the CSP. */
+		KCspCLIBlock=0x01,
+	/** Indicates that Calling Line Identity Presentation per call (CLI blocked by default) 
+	is supported by the CSP. */
+		KCspCLISend=0x02,
+	/** Indicates that Connected Line Identification Presentation is supported by the 
+	CSP. */
+		KCspCOLP=0x10,
+	/** Indicates that Connected Line Identification Restriction is supported by the 
+	CSP. */
+		KCspCOLR=0x20,
+	/** Indicates that Calling Line Identification Presentation is supported by the CSP. */
+		KCspCLIP=0x80,
+		};
+
+/** Phase 2+ services supported by the CSP.
+
+Modes: GSM/WCDMA */
+	enum TCspPhase2PlusServices
+		{
+	/** Indicates that Multiple Band roaming is supported by CSP. */
+		KCspMultipleband=0x04,
+	/** Indicates that Multiple Subscriber Profile is supported by CSP.
+	
+	v1.0 of Multimode ETel API does not support this feature */
+		KCspMSP=0x08,
+	/** Indicates that Voice Broadcast is supported by CSP.
+	
+	v1.0 of Multimode ETel API does not support this feature. */
+		KCspVoiceBroadcast=0x10,
+	/** Indicates that Voice Group Call is supported by CSP. 
+	
+	v1.0 of Multimode ETel API does not support this feature. */
+		KCspVoiceGroupCall=0x20,
+	/** Indicates that High Speed Circuit Switched Data is supported by CSP. */
+		KCspHscsd=0x40,
+	/** Indicates that General Packet Radio Service is supported by CSP. */
+		KCspGprs=0x80
+		};
+
+/** Value added services supported by this CSP.
+
+Modes: GSM/WCDMA */
+	enum TCspValueAdded
+		{
+	/** Indicates that display of language selection menus is supported by the CSP.
+	
+	v1.0 of Multimode ETel API does not support this feature. */
+		KCspLanguage=0x01,
+	/** Indicates that display of data call option menu is supported by the CSP. */
+		KCspData=0x04,
+	/** Indicates that display of fax call option menu is supported by the CSP. */
+		KCspFax=0x08,
+	/** Indicates that display of the menu option to send a Short Message of type Email 
+	is supported by the CSP. */
+		KCspSMMOEmail=0x10,
+	/** Indicates that display of the menu option to send a Short Message of type Paging 
+	is supported by the CSP. */
+		KCspSMMOPaging=0x20,
+	/** Indicates that display of the menu option for manual PLMN selection is supported 
+	by the CSP. */
+		KCspPLMNMode=0x80,
+		};
+
+	
+
+	class TMobilePhoneCspFileV1 : public TMultimodeType
+	/** Defines contents of the CSP (Customer Service Profile) on the SIM. The profile 
+	consists of the sum of the respective enums.
+
+	@see GetCustomerServiceProfile()
+	@publishedPartner
+	@released*/
+		{
+	public:
+	/** Constructor. */
+		IMPORT_C TMobilePhoneCspFileV1();
+
+	/** Sum of the TCspCallOffering. */
+		TUint8	iCallOfferingServices;
+	/** Sum of the TCspCallRestriction. */
+		TUint8	iCallRestrictionServices;
+	/** Sum of the TCspOtherSuppServices. */
+		TUint8	iOtherSuppServices;
+	/** Sum of the TCspCallCompletion. */
+		TUint8	iCallCompletionServices;
+	/** Sum of the TCspTeleservices. */
+		TUint8  iTeleservices;
+	/** Sum of the TCspCPHSTeleservices. */
+		TUint8	iCphsTeleservices;
+	/** Sum of the TCspCPHSFeatures. */
+		TUint8	iCphsFeatures;
+	/** Sum of the TCspNumberIdentification. */
+		TUint8	iNumberIdentServices;
+	/** Sum of the TCspPhase2PlusServices. */
+		TUint8	iPhase2PlusServices;
+	/** Sum of the TCspValueAdded. */
+		TUint8	iValueAddedServices;
+		};
+
+/** A typedef'd packaged TMobilePhoneCspFileV1 for passing through a generic API 
+function member. */
+	typedef TPckg<TMobilePhoneCspFileV1> TMobilePhoneCspFileV1Pckg;
+
+	IMPORT_C void GetCustomerServiceProfile(TRequestStatus& aReqStatus, TDes8& aCsp) const;
+
+/** SIM/USIM/CDMA Service Table.
+
+Modes: Common */
+	enum TSSTServices1To8
+		{
+	/** Indicates that disabling PIN1 is supported by the ICC. */
+		KSstPin1Disable=0x01,
+	/** Indicates that storage of Abbreviated Dialling Numbers within this ICC is supported. */
+		KSstADN=0x02,
+	/** Indicates that the Fixed Dialling Numbers service and the storage of FDN numbers
+	within this ICC is supported. */
+		KSstFDN=0x04,
+	/** Indicates that the Short Message Service and the storage of short messages within 
+	this ICC is supported.
+	
+	Modes: Common */
+		KSstSMS=0x08,
+	/** Indicates that the Advice of Charge service is supported by this ICC.
+	
+	Modes: GSM/WCDMA */
+		KSstAoC=0x10,
+	/** Indicates that the storage of Configuration Capability Parameters associated 
+	with an AND, FDN, MSISDN, LND or SDN is supported by this ICC.
+	
+	Modes: GSM/WCDMA */
+		KSstCCP=0x20,
+	/** Indicates that storage of a preferred network list is supported by this ICC.
+	
+	v1.0 of Multimode ETel API does not support this feature
+	
+	Modes: GSM/WCDMA */
+		KSstPLMNSelector=0x40
+		};
+
+/** SIM/USIM/CDMA Service Table (continued).
+
+Modes: GSM/WCDMA */
+	enum TSSTServices9To16
+		{
+	/** Indicates that storage of MSISDN (own numbers) numbers within this ICC is supported.
+	
+	Modes: GSM/WCDMA */
+		KSstMSISDN=0x01,
+	/** Indicates that storage of extended (greater than 20 digits) ADN, LND and MSISDN
+	numbers within this ICC is supported.
+	
+	Modes: Common */
+		KSstExt1=0x02,
+	/** Indicates that storage of extended (greater than 20 digits) FDN numbers within 
+	this ICC is supported.
+	
+	Modes: Common */
+		KSstExt2=0x04,
+	/** Indicates that storage of SMS parameter records within this ICC is supported.
+	
+	Modes: Common */
+		KSstSMSP=0x08,
+	/** Indicates that storage of Last Numbers Dialled within this ICC is supported.
+	
+	Modes: Common */
+		KSstLND=0x10,
+	/** Indicates that the storage of Cell Broadcast message identifiers is supported 
+	within this ICC.
+	
+	Modes: GSM/WCDMA */
+		KSstCBMI=0x20,
+	/** Indicates that access to the GID1 file is supported within this ICC.
+	
+	v1.0 of Multimode ETel API does not support this feature
+	
+	Modes: GSM/WCDMA */
+		KSstGID1=0x40,
+	/** Indicates that access to the GID2 file is supported within this ICC.
+	
+	v1.0 of Multimode ETel API does not support this feature
+	
+	Modes: GSM/WCDMA */
+		KSstGID2=0x80
+		};
+	
+/** SIM/USIM/CDMA Service Table (continued).
+
+v1.0 of Multimode ETel API does not support this feature
+
+Modes: Common */
+	enum TSSTServices17To24
+		{
+	/** Indicates that access to the Service Provider Name within ICC is supported.
+	
+	v1.0 of Multimode ETel API does not support this feature
+	
+	Modes: Common */
+		KSstSPName=0x01,
+	/** Indicates that storage of Service Dialling Numbers within ICC is supported.
+	
+	Modes: Common */
+		KSstSDN=0x02,
+	/** Indicates that storage of extended (greater than 20 digits) SDN numbers within 
+	this ICC/RUIM is supported.
+	
+	Modes: Common */
+		KSstExt3=0x04,
+	/** Indicates that access to the VGCS group identifier list within ICC is supported.
+	
+	v1.0 of Multimode ETel API does not support this feature
+	
+	Modes: GSM/WCDMA */
+		KSstVGCSList=0x10,
+	/** Indicates that access to the VBS group identifier list within ICC is supported.
+	
+	v1.0 of Multimode ETel API does not support this feature
+
+	Modes: GSM/WCDMA */
+		KSstVBSList=0x20,
+	/** Indicates that the enhanced Multi-Level Precedence and Pre-emption service is 
+	supported by ICC
+	
+	v1.0 of Multimode ETel API does not support this feature
+	
+	Modes: GSM/WCDMA */
+		KSsteMLPP=0x40,
+	/** Indicates that automatic answer for eMLPP is supported by ICC
+	
+	v1.0 of Multimode ETel API does not support this feature
+	
+	Modes: GSM/WCDMA */
+		KSstAnswereMLPP=0x80
+		};
+
+/** SIM/USIM/CDMA Service Table (continued).
+
+Modes: GSM/WCDMA */
+	enum TSSTServices25To32
+		{
+	/** Indicates that SAT SMS-CB data download is supported by ICC. */
+		KSstSmsCbDataDownload=0x01,
+	/** Indicates that SAT SMS-PP data download is supported by ICC. */
+		KSstSmsPpDataDownload=0x02,
+	/** Indicates that SAT menu selection is supported by ICC.
+	
+	SAT ETel API provides this feature. */
+		KSstMenuSelection=0x04,
+	/** Indicates that SAT call control is supported by ICC.
+	
+	SAT ETel API provides this feature. */
+		KSstCallControl=0x08,
+	/** Indicates that SAT pro-active SIM is supported by ICC.
+	
+	SAT ETel API provides this feature. */
+		KSstProactiveSim=0x10,
+	/** Indicates ICC storage of ranges of Cell Broadcast Message Identifiers is supported. */
+		KSstCBMIRanges=0x20,
+	/** Indicates ICC storage of Barred Dialling Numbers is supported. */
+		KSstBDN=0x40,
+	/** Indicates ICC storage of extended (greater than 20 digits) BDN numbers is supported. */
+		KSstExt4=0x80
+		};
+
+/** SIM/USIM/CDMA Service Table (continued).
+
+Modes: GSM/WCDMA */
+	enum TSSTServices33To40
+		{
+	/** Indicates depersonalisation control keys are supported by ICC.
+	
+	v1.0 of Multimode ETel API does not support this feature. */
+		KSstDepersonalisationKeys=0x01,
+	/** Indicates co-operative network list are supported by this ICC.
+	
+	v1.0 of Multimode ETel API does not support this feature. */
+		KSstCooperativeNetworks=0x02,
+	/** Indicates Short Message Status Reports are supported by ICC. */
+		KSstSMStatusReports=0x04,
+	/** Indicates network's indication of alerting is supported by ICC.
+	
+	v1.0 of Multimode ETel API does not support this feature. */
+		KSstNetworkIndAlerting=0x08,
+	/** Indicates outgoing SM control by SAT is supported by ICC.
+	
+	SAT ETel API provides this feature. */
+		KSstMoSmControlBySim=0x10,
+	/** Indicates that GPRS is supported by this ICC.
+	
+	GPRS ETel API provides GPRS functionality. */
+		KSstGprs=0x20,
+	/** Indicates that Image files are supported by this ICC.
+	
+	SAT ETel API provides this feature. */
+		KSstImage=0x40,
+	/** Indicates that SoLSA in supported by this ICC.
+	
+	v1.0 of Multimode ETel API does not support this feature */
+		KSstSoLSA=0x80
+		};
+
+/** SIM/USIM/CDMA Service Table (continued).
+
+Modes: GSM/WCDMA */
+	enum TSSTServices41To48
+		{
+	/** Indicates that USSD string data is supported in SAT Call Control by this ICC.
+	
+	SAT ETel API provides this feature. */
+		KSstUssdStringInCallControl=0x01,
+	/** Indicates that RUN AT COMMAND is supported in SAT by this ICC.
+	
+	v1.0 of Multimode ETel API does not support this feature */
+		KSstRunATCommand=0x02,
+	/** Indicates that PLMN selector list with access technology is supported by this 
+	ICC.
+	
+	v1.0 of Multimode ETel API does not support this feature. */
+		KSstPlmnSelectorListWithAccessTechnology=0x04,
+	/** Indicates that OPLMN selector list with access technology is supported by this
+	ICC.
+	
+	v1.0 of Multimode ETel API does not support this feature. */
+		KSstOplmnSelectorListWithAccessTechnology=0x08,
+	/** Indicates that HPLMN access technology is supported by this ICC.
+	
+	v1.0 of Multimode ETel API does not support this feature. */
+		KSstHplmnAccessTechnology=0x10,
+	/** Indicates that CPBCCH information is supported by this ICC.
+	
+	v1.0 of Multimode ETel API does not support this feature. */
+		KSstCpbcchInformation=0x20,
+	/** Indicates that Investigation Scan is supported by this ICC.
+	
+	v1.0 of Multimode ETel API does not support this feature. */
+		KSstInvestigationScan=0x40,
+	/** Indicates that extended capability configuration parameters are supported by 
+	this ICC.
+	
+	v1.0 of Multimode ETel API does not support this feature. */
+		KSstExtendedCcp=0x80
+		};
+
+/** SIM/USIM/CDMA Service Table (continued).
+
+Modes: GSM/WCDMA */
+	enum TSSTServices49To56
+		{
+	/** Indicates Mobile Execution Environment services are supported by this ICC */
+		KSstMExE=0x01,
+	/** Indicates that RPLMN last used access technology is supported by this ICC.
+	
+	v1.0 of Multimode ETel API does not support this feature. */
+		KSstRplmnLastUsedAccessTechnology=0x02
+		};
+
+/** USIM service table. */
+	enum TUSTServices1To8
+		{
+	/** Indicates that the local phonebook is supported by the USIM. Local phonebook 
+	means a phonebook that is specific to a USIM Application, as opposed to the 
+	global phonebook which is located at the DF Telecom level on the UICC and 
+	not attached to a USIM Application. */
+		KUstLocalPhBk=0x01,
+	/** Indicates that the Fixed Dialling Numbers (FDN) service and the storage of 
+	FDN numbers within this USIM is supported. */
+		KUstFDN=0x02,
+	/** Indicates that the Extension 2 is supported by the USIM. Extension 2 provides 
+	extension data for Fixed Dialling Numbers. */
+		KUstExt2=0x04,
+	/** Indicates that the Service Dialling Numbers are supported by the USIM. */
+		KUstSDN=0x08,
+	/** Indicates that the Extension 3 is supported by the USIM. Extension 3 provides 
+	extension data for Service Dialling Numbers. */
+		KUstExt3=0x10,
+	/** Indicates that the Barred Dialling Numbers are supported by the USIM. */
+		KUstBDN=0x20,
+	/** Indicates that the Extension 4 is supported by the USIM. Extension 4 provides 
+	extension data for Barred Dialling Numbers. */
+		KUstExt4=0x40,
+	/** Indicates that the outgoing call information (OCI and OCT) are supported by 
+	the USIM.
+	
+	Note: v2.0 of Multimode ETel API does not support this feature. */
+		KUstOugoingCallInfo=0x80
+		};
+	
+/** USIM service table (continued). */
+	enum TUSTServices9To16
+		{
+	/** Indicates that the incoming call information (ICI and ICT) are supported by 
+	the USIM
+	
+	Note: v2.0 of Multimode ETel API does not support this feature. */
+		KUstIncomingCallInfo=0x01,
+	/** Indicates that Short Message Storage is supported by the USIM. */
+		KUstSMS=0x02,
+	/** Indicates that Short Message Status Reports are supported by the USIM. */
+		KUstSMSR=0x04,
+	/** Indicates that Short Message Service Parameters are supported by the USIM. */
+		KUstSMSP=0x08,
+	/** Indicates that Advice Of Charge is supported by the USIM. */
+		KUstAoC=0x10,
+	/** Indicates that Capability Configuration Parameters are supported by the USIM. */
+		KUstCCP=0x20,
+	/** Indicates that Cell Broadcast Message Identifier is supported by the USIM. */
+		KUstCBMI=0x40,
+	/** Indicates that Cell Broadcast Message Identifier Ranges are supported by the 
+	USIM. */
+		KUstCBMIRanges=0x80
+		};
+
+/** USIM service table (continued). */
+	enum TUSTServices17To24
+		{
+	/** Indicates that Group Identifier Level 1 is supported by the USIM.
+	
+	Note: v2.0 of Multimode ETel API does not support this feature. */
+		KUstGID1=0x01,
+	/** Indicates that Group Identifier Level 2 is supported by the USIM.
+	
+	Note: v2.0 of Multimode ETel API does not support this feature. */
+		KUstGID2=0x02,
+	/** Indicates that Service Provider Name is supported by the USIM. */
+		KUstSPN=0x04,
+	/** Indicates that user controlled PLMN selector with Access Technology is supported
+	by the USIM.
+	
+	Note: v2.0 of Multimode ETel API does not support this feature. */
+		KUstPLMNSelAccessTech=0x08,
+	/** Indicates that MSISDN is supported by the USIM. */
+		KUstMSISDN=0x10,
+	/** Indicates that Image is supported by the USIM.
+	
+	Note: (U)SAT ETel API provides this feature. This enum value is reserved for 
+	future API use. */
+		KUstIMG=0x20,
+		//0x40 is a reserved value
+	/** Indicates that enhanced Multi Level Precedence and Pre-emption Service is supported 
+	by the USIM.
+	
+	Note: v2.0 of Multimode ETel API does not support this feature. */
+		KUsteMLPP=0x80
+		};
+
+/** USIM service table (continued). */
+	enum TUSTServices25To32
+		{
+	/** Indicates that Automatic Answer for eMLPP is supported by the USIM.
+	
+	Note: v1.0 and v2.0 of Multimode ETel API do not support this feature. */
+		KUstAnswereMLPP=0x01,
+		//0x02 is a reserved value
+	/** Indicates that GSM Access is supported by the USIM */
+		KUstGSMAccess=0x04,
+	/** Indicates that Data download via SMS-PP is supported by the USIM.
+	
+	Note: (U)SAT ETel API provides this feature. */
+		KUstSMSPpDataDownload=0x08,
+	/** Indicates that Data download via SMS-CB is supported by the USIM.
+	
+	Note: (U)SAT ETel API provides this feature. */
+		KUstSMSCbDataDownload=0x10,
+	/** Indicates that Call Control by USIM is supported by the USIM.
+	
+	Note: (U)SAT ETel API provides this feature. */
+		KUstCallControl=0x20,
+	/** Indicates that MO-SMS Control by USIM is supported by the USIM.
+	
+	Note: (U)SAT ETel API provides this feature. */
+		KUstMoSmControl=0x40,
+	/** Indicates that the proactive command RUN AT COMMAND is supported by the USIM.
+	
+	Note: (U)SAT ETel API provides this feature. */
+		KUstPCmdRunAtCommand=0x80		
+		};
+
+/** USIM service table (continued). */
+	enum TUSTServices33To40
+		{
+	/** Should always be present as specified by 3 GPP spec. */
+		KUstAlways=0x10,
+	/** Indicates that the Enabled Service Table is supported by the USIM. */
+		KUstEST=0x02,
+	/** Indicates that APN Control List is supported by the USIM.
+	
+	Note: v2.0 of Multimode ETel API does not support this feature. */
+		KUstACL=0x04,
+	/** Indicates that the Depersonalisation Control Keys are supported by the USIM.
+	
+	Note: v2.0 of Multimode ETel API does not support this feature. */
+		KIstDepersonalisationKeys =0x08,
+	/** Indicates that the Co-operative Network List is supported by the USIM.
+
+	Note: v2.0 of Multimode ETel API does not support this feature. */
+		KUstCooperativeNetwork=0x10,
+	/** Indicates that GSM Security Context is supported by the USIM. */
+		KUstGSMSecurityContext=0x20,
+	/** Indicates that CPBCCH Information is supported by the USIM.
+	
+	Note: v2.0 of Multimode ETel API do not support this feature. */
+		KUstCPBCCHInfo=0x40,
+	/** Indicates that Investigation Scan is supported by the USIM.
+	
+	Note:v2.0 of Multimode ETel API do not support this feature. */
+		KUstInvestigationScan=0x80
+		};
+
+/** USIM service table (continued). */
+	enum TUSTServices41To48
+		{
+	/** Indicates that MExE is supported by the USIM.
+	
+	Note: v2.0 of Multimode ETel API do not support this feature. */
+		KUstMExE=0x01,
+	/** Indicates that Operator controlled PLMN selector with Access Technology is 
+	supported by the USIM.
+	
+	N.B .v2.0 of Multimode ETel API do not support this feature. */
+		KUstOperatorPLMNSelector=0x02,
+	/** Indicates that HPLMN selector with Access Technology is supported by the USIM.
+	
+	Note: v2.0 of Multimode ETel API do not support this feature. */
+		KUstHPLMNSelAccessTech=0x04,
+	/** Indicates that Extension 5 is supported by the USIM. Provides support for extension 
+	data for MSISDN. */
+		KUstExt5=0x08,
+	/** Indicates that PLMN Network Name is supported by the USIM.
+	
+	Note: v2.0 of Multimode ETel API do not support this feature. */
+		KUstPLMNNetworkName=0x10,
+	/** Indicates that Operator PLMN List is supported by the USIM.
+	
+	Note: v2.0 of Multimode ETel API do not support this feature. */
+		KUstOperatorPLMNList=0x20,
+	/** Indicates that Mailbox Dialling Numbers are supported by the USIM. */
+		KUstMDN=0x40,
+	/** Indicates that Message Waiting Indication Status is supported by the USIM. */
+		KUstMWISo=0x80
+		};
+
+/** USIM service table (continued). */
+	enum TUSTServices49To56
+		{
+	/** Indicates that Call forwarding indication status is supported by the USIM.
+	
+	Note: v2.0 of Multimode ETel API do not support this feature. */
+		KUstCFIS=0x01,
+	/** Indicates that RPLMN last-used access technology is supported by the USIM.
+	
+	Note: v2.0 of Multimode ETel API do not support this feature. */
+		KUstRPLMN=0x02,
+	/** Indicates that Service provider display information is supported by the USIM.
+	
+	Note: v2.0 of Multimode ETel API do not support this feature. */
+		KUstSPDI=0x04,
+	    KUstMMS=0x08,
+	    KUstExt8=0x10,
+	    KUstCConGPRS=0x20,
+	    KUstMMSUCP=0x40
+		};
+
+/** Enabled Services Table. */
+	enum TESTServices1To8
+		{
+	/** Indicates that FDN service is activated. */
+		KEstFDN=0x01,
+	/** Indicates that BDN service is activated. */
+		KEstBDN=0x02,
+	/** Indicates that the APN Control List service is activated.
+	
+	Note: v2.0 of Multimode ETel API do not support this feature. */
+		KEstACL=0x04
+		};
+
+/** Get Service Table.
+
+Modes: GSM/WCDMA */
+	enum TMobilePhoneServiceTable
+		{
+	/** Retrieve SIM service table on SIM (or from GSM application on UICC).
+	
+	Modes: GSM/WCDMA */
+		ESIMServiceTable,
+	/** Retrieve USIM service table from active USIM application on UICC.
+	
+	Modes: WCDMA */
+		EUSIMServiceTable,
+	/** Retrieve CDMA service table on R-UIM.
+	
+	Modes: CDMA */
+		ECDMAServiceTable,
+	/** USIM Enabled Services Table to be used in conjunction with the USIM Service 
+	Table.
+	
+	Modes: WCDMA */
+		EUSIMEnabledServiceTable
+		};
+
+	
+	class TMobilePhoneServiceTableV1 : public TMultimodeType
+	/** Defines contents of the specified Service Table on the ICC.
+
+	@see GetServiceTable()
+	@publishedPartner
+	@released
+	 */
+		{
+	public:
+		IMPORT_C TMobilePhoneServiceTableV1();
+
+	/** Sum of the TSSTServices1To8 capability constants. */
+		TUint8 iServices1To8;
+	/** Sum of the TSSTServices9To16 capability constants. */
+		TUint8 iServices9To16;
+	/** Sum of the TSSTServices17To24 capability constants. */
+		TUint8 iServices17To24;
+	/** Sum of the TSSTServices25To32 capability constants. */
+		TUint8 iServices25To32;
+	/** Sum of the TSSTServices33To40 capability constants. */
+		TUint8 iServices33To40;
+	/** Sum of the TSSTServices41To48 capability constants. */
+		TUint8 iServices41To48;
+	/** Sum of the TSSTServices49To56 capability constants. */
+		TUint8 iServices49To56;
+		};
+
+/** A typedef'd packaged TMobilePhoneServiceTableV1 passing through a generic API 
+function member. */
+	typedef TPckg<TMobilePhoneServiceTableV1> TMobilePhoneServiceTableV1Pckg;
+
+	enum { KAIDSize=16 };
+
+/** A typedef'd buffer to hold the application identifier (AID) that identifies 
+the USIM application in a UICC. The AID consists of a Registered application 
+provider IDentifier (RID) of 5 bytes and a Proprietary application Identifier 
+eXtension (PIX) of up to 11 bytes. */
+	typedef TBuf8<KAIDSize> TAID; 
+
+	class TMobilePhoneServiceTableV2 : public TMobilePhoneServiceTableV1
+/** Defines contents of the specified Service Table on the ICC for the v2.0 version 
+of the API. 
+*/
+		{
+	public:
+		IMPORT_C TMobilePhoneServiceTableV2();
+	public:
+	/** The application identifier. */
+		TAID   iAID;
+		};
+
+/** A typedef'd packaged TMobilePhoneServiceTableV2 passing through a generic API 
+function member. */
+	typedef TPckg<TMobilePhoneServiceTableV2> TMobilePhoneServiceTableV2Pckg;
+ 
+	IMPORT_C void GetServiceTable(TRequestStatus& aReqStatus, TMobilePhoneServiceTable aTable, TDes8& aTableData) const;
+	
+	
+	/***********************************************************************************/
+	//
+	// MobilePhonePower functional unit
+	//
+	/***********************************************************************************/
+
+/** Phone supported battery information.
+
+Modes: Common */
+	enum TMobilePhoneBatteryCaps
+		{
+	/** Phone supports requests to get the current battery information. */
+		KCapsGetBatteryInfo=0x00000001,
+	/** Phone supports requests for notification of change in battery information. */
+		KCapsNotifyBatteryInfoChange=0x00000002
+		};
+
+	IMPORT_C TInt GetBatteryCaps(TUint32& aCaps) const; 
+
+/** The mobile phone battery status.
+
+Modes: Common */
+	enum TMobilePhoneBatteryStatus
+		{
+	/** The TSY can not determine the phone's current power status. */
+		EPowerStatusUnknown,
+	/** The phone is currently powered by a battery. */
+		EPoweredByBattery,
+	/** A battery is connected, but the phone is externally powered. */
+		EBatteryConnectedButExternallyPowered,
+	/** No battery is connected. */
+		ENoBatteryConnected,
+	/** Power fault. */
+		EPowerFault
+		};
+
+	class TMobilePhoneBatteryInfoV1 : public TMultimodeType
+/** Defines contents of the battery status of the phone.
+
+@see GetBatteryInfo()
+@see NotifyBatteryInfoChange()
+*/
+		{
+	public:
+		IMPORT_C TMobilePhoneBatteryInfoV1();
+	public:
+	/** The power and battery status.
+	
+	@see TMobilePhoneBatteryStatus */
+		TMobilePhoneBatteryStatus iStatus;
+	/** The percentage battery charge level. */
+		TUint iChargeLevel;
+		};
+
+	IMPORT_C void GetBatteryInfo(TRequestStatus& aReqStatus, TMobilePhoneBatteryInfoV1& aInfo) const;
+	IMPORT_C void NotifyBatteryInfoChange(TRequestStatus& aReqStatus, TMobilePhoneBatteryInfoV1& aInfo) const;
+
+	
+	/***********************************************************************************/
+	//
+	// MobilePhoneSignal functional unit
+	//	
+	/***********************************************************************************/
+
+/** The mobile phone signal strength capabilities.
+
+Modes: Common */
+	enum TMobilePhoneSignalCaps
+		{
+	/** Phone supports requests to get the current signal strength. */
+		KCapsGetSignalStrength=0x00000001,
+	/** Phone supports requests for notification of change in signal strength. */
+		KCapsNotifySignalStrengthChange=0x00000002
+		};
+
+	IMPORT_C TInt GetSignalCaps(TUint32& aCaps) const; 
+	IMPORT_C void GetSignalStrength(TRequestStatus& aReqStatus, TInt32& aSignalStrength, TInt8& aBar) const;
+	IMPORT_C void NotifySignalStrengthChange(TRequestStatus& aReqStatus, TInt32& aSignalStrength, TInt8& aBar) const;
+
+	/***********************************************************************************/
+	//
+	// MobilePhoneIndicator functional unit
+	//
+	/***********************************************************************************/
+	
+/** The mobile phone indicator capabilities supported.
+
+Modes: Common */
+	enum TMobilePhoneIndicatorCaps
+		{
+	/** Phone supports requests to get the current value of all supported indicators. */
+		KCapsGetIndicator=0x00000001,
+	/** Phone supports requests for notification of change in the supported indicators. */
+		KCapsNotifyIndicatorChange=0x00000002
+		};
+
+/** The mobile phone indicators.
+
+Modes Common */
+	enum TMobilePhoneIndicators
+		{
+	/** If bit-flag is set to '1' indicates that the battery charger is connected to 
+	the phone. If bit-flag is set to '0' indicates that the battery charger is 
+	disconnected. */
+		KIndChargerConnected=0x00000001,
+	/** If bit-flag is set to '1' indicates that network service is available. If bit-flag 
+	is set to '0' indicates that network service is unavailable. */
+		KIndNetworkAvailable=0x00000002,
+	/** If bit-flag is set to '1' indicates that a call is in progress. If set to '0' 
+	indicates that a call is not in progress. */
+		KIndCallInProgress=0x00000004
+		};
+
+	IMPORT_C TInt GetIndicatorCaps(TUint32& aActionCaps, TUint32& aIndCaps) const; 
+	IMPORT_C void GetIndicator(TRequestStatus& aReqStatus, TUint32& aIndicator) const;
+	IMPORT_C void NotifyIndicatorChange(TRequestStatus& aReqStatus, TUint32& aIndicator) const;
+
+	
+	/***********************************************************************************/
+	//
+	// MobilePhoneIdentity functional unit
+	//
+	/***********************************************************************************/
+	
+/** Defines Identity Capabilities.
+
+Modes: Common */
+	enum TMobilePhoneIdentityCaps
+		{
+	/** Phone can return the identity of its manufacturer. */
+		KCapsGetManufacturer=0x00000001,
+	/** Phone can return the identity of its model. */
+		KCapsGetModel=0x00000002,
+	/** Phone can return the identity of its revision. */
+		KCapsGetRevision=0x00000004,
+	/** Phone can return the identity of its serial number. */
+		KCapsGetSerialNumber=0x00000008,
+	/** Phone can return the identity of its subscriber. */
+		KCapsGetSubscriberId=0x00000010
+		};
+
+	IMPORT_C TInt GetIdentityCaps(TUint32& aCaps) const;
+
+	enum {	KPhoneManufacturerIdSize=50	};
+	enum {	KPhoneModelIdSize=50 };
+	enum {	KPhoneRevisionIdSize=50	};
+	enum {	KPhoneSerialNumberSize=50 };
+	
+	class TMobilePhoneIdentityV1 : public TMultimodeType
+/** Defines the mobile phone identity.
+
+@see GetPhoneId() */
+		{
+	public:
+		IMPORT_C TMobilePhoneIdentityV1();
+	public:
+	/** Phone manufacturer identification, in character string format. */
+		TBuf<KPhoneManufacturerIdSize> iManufacturer;
+	/** Phone model identification, in character string format. */
+		TBuf<KPhoneModelIdSize> iModel;
+	/** Phone revision identification, in character string format. */
+		TBuf<KPhoneRevisionIdSize> iRevision;
+	/** Phone serial number (IMEI or ESN), in character string format. */
+		TBuf<KPhoneSerialNumberSize> iSerialNumber;
+		};
+
+	IMPORT_C void GetPhoneId(TRequestStatus& aReqStatus, TMobilePhoneIdentityV1& aId) const;
+
+	enum {	KIMSISize = 15 };
+
+/** A typedef'd buffer to hold the mobile phone subscriber id. */
+	typedef TBuf<KIMSISize> TMobilePhoneSubscriberId;
+
+	IMPORT_C void GetSubscriberId(TRequestStatus& aReqStatus, TMobilePhoneSubscriberId& aId) const;
+
+	/***********************************************************************************/
+	//
+	// MobilePhoneDTMF functional unit
+	//
+	/***********************************************************************************/
+	
+/** DTMF Capabilities.
+
+Modes: Common */
+	enum TMobilePhoneDTMFCaps
+		{
+	/** Capability to send a string of DTMF tones, containing one or more tone(s). */
+		KCapsSendDTMFString=0x00000001,
+	/** Capability to send one DTMF tone, using start and stop DTMF tone function member. */
+		KCapsSendDTMFSingleTone=0x00000002,
+		};
+		
+	/**
+	DTMF tone operation event.
+	*/
+	enum TMobilePhoneDTMFEvent
+		{
+		/**
+		 Start sending of a Dtmf tone operation has been acknowledged from the MSC.
+		*/
+		EStartDtmfTone,
+		/**
+		 Stop sending of a Dtmf tone operation has been acknowledged from the MSC.
+		*/
+		EStopDtmfTone,
+		};
+		
+
+	IMPORT_C TInt GetDTMFCaps(TUint32& aCaps) const; 
+	IMPORT_C void NotifyDTMFCapsChange(TRequestStatus& aReqStatus, TUint32& aCaps) const;
+
+	IMPORT_C void SendDTMFTones(TRequestStatus& aReqStatus, const TDesC& aTones) const;
+	IMPORT_C void ReadDTMFTones(TRequestStatus& aReqStatus, TDes& aTones) const;
+	IMPORT_C TInt StartDTMFTone(TChar aTone) const;
+	IMPORT_C TInt StopDTMFTone() const;
+
+	IMPORT_C void NotifyStopInDTMFString(TRequestStatus& aRequestStatus) const;
+	IMPORT_C TInt ContinueDTMFStringSending(TBool aContinue) const;
+	IMPORT_C void NotifyDTMFEvent(TRequestStatus& aReqStatus, TMobilePhoneDTMFEvent& aEvent) const;
+
+	/***********************************************************************************/
+	//
+	// MobilePhoneNetwork functional unit
+	//
+	/***********************************************************************************/
+	
+/** Defines Network Capabilities.
+
+Modes: Common */
+	enum TMobilePhoneNetworkCaps
+		{
+	/** The phone supports retrieval of current registration status. */
+		KCapsGetRegistrationStatus=0x00000001,
+	/** The phone supports notifications of change in registration status. */
+		KCapsNotifyRegistrationStatus=0x00000002,
+	/** The phone supports retrieval of current mode. */
+		KCapsGetCurrentMode=0x00000004,
+	/** The phone supports notification of change in mode. */
+		KCapsNotifyMode=0x00000008,
+	/** The phone supports retrieval of current network information. */
+		KCapsGetCurrentNetwork=0x00000010,
+	/** The phone supports notification of change of current network. */
+		KCapsNotifyCurrentNetwork=0x00000020,
+	/** The phone supports retrieval of home network information. */
+		KCapsGetHomeNetwork=0x00000040,
+	/** The phone supports retrieval of a list of detected networks. */
+		KCapsGetDetectedNetworks=0x00000080,
+	/** The phone supports manual network selection mode. */
+		KCapsManualNetworkSelection=0x00000100,
+	/** The phone supports retrieval of time and date information (NITZ) received from 
+	the network. */
+		KCapsGetNITZInfo=0x00000200,
+	/** The phone supports notification of new updates of time & date information (NITZ) 
+	received from the network. */
+		KCapsNotifyNITZInfo=0x00000400
+		};
+
+	IMPORT_C TInt GetNetworkCaps(TUint32& aCaps) const;
+
+/** Defines Current Network Modes.
+
+Modes: Common */
+	enum TMobilePhoneNetworkMode
+		{
+	/** Network mode is unknown.
+	
+	Modes: Common */
+		ENetworkModeUnknown,
+	/** ME is not registered.
+	
+	Modes: Common */
+		ENetworkModeUnregistered,
+	/** GSM/GPRS or DCS1800 network. */
+		ENetworkModeGsm,
+	/** AMPS network.
+	
+	Modes: CDMA */
+		ENetworkModeAmps,
+	/** CDMA (IS-95) network.
+	
+	Modes: CDMA */
+		ENetworkModeCdma95,
+	/** CDMA (cdma2000) network.
+	
+	Modes: CDMA */
+		ENetworkModeCdma2000,
+	/** WCDMA  (UTRA Frequency Division Duplex (FDD)) network.
+	
+	Modes: WCDMA */
+		ENetworkModeWcdma,
+	/** TD-CDMA (UTRA Time Division Duplex (TDD)) network.
+	
+	Modes: WCDMA */	
+		ENetworkModeTdcdma
+		};
+
+	IMPORT_C TInt GetCurrentMode(TMobilePhoneNetworkMode& aNetworkMode) const;
+	IMPORT_C void NotifyModeChange(TRequestStatus& aReqStatus, TMobilePhoneNetworkMode& aNetworkMode) const;
+	
+	void DoNotifyModeChange( TMobilePhoneNetworkMode aNetworkMode, TInt aErrorCode );
+    void CancelAsyncRequest(TInt aReqToCancel) const;
+	
+	mutable TMobilePhoneNetworkMode* iNetworkMode;
+	mutable TRequestStatus* iReqStatus;
+
+
+/** Phone network status.
+
+Modes: Common */
+	enum TMobilePhoneNetworkStatus
+		{
+	/** Status is unknown. */
+		ENetworkStatusUnknown,
+	/** A network that the ME is allowed to register to. */
+		ENetworkStatusAvailable,
+	/** The currently registered network. */
+		ENetworkStatusCurrent,
+	/** A network that the ME is not allowed to register to. */
+		ENetworkStatusForbidden
+		};
+
+/** Mobile phone network band information.
+
+Modes: CDMA */
+	enum TMobilePhoneNetworkBandInfo
+		{
+	/** The current band and band class is unknown. */
+		EBandUnknown,
+	/** The network operates at 800MHz on Band A. */
+		E800BandA,
+	/** The network operates at 800MHz on Band B. */
+		E800BandB,
+	/** The network operates at 800MHz on Band C. */
+		E800BandC,
+	/** The network operates at 1900MHz on Band A. */
+		E1900BandA,
+	/** The network operates at 1900MHz on Band B. */
+		E1900BandB,
+	/** The network operates at 1900MHz on Band C. */
+		E1900BandC,
+	/** The network operates at 1900MHz on Band D. */
+		E1900BandD,
+	/** The network operates at 1900MHz on Band E. */
+		E1900BandE,
+	/** The network operates at 1900MHz on Band F. */
+		E1900BandF
+		};
+
+/** A typedef'd buffer to hold the network display tag */
+	typedef TBuf<30> TMobilePhoneNetworkDisplayTag;
+/** A typedef'd buffer to hold the network long name. */
+	typedef TBuf<20> TMobilePhoneNetworkLongName;		
+/** A typedef'd buffer to hold the network short name. */
+	typedef TBuf<10> TMobilePhoneNetworkShortName;
+
+/** A typedef'd buffer to hold the network country code. */
+	typedef TBuf<4> TMobilePhoneNetworkCountryCode;		// MCC in GSM and CDMA
+/** A typedef'd buffer to hold the network identity. */
+	typedef TBuf<8> TMobilePhoneNetworkIdentity;		// MNC in GSM and SID or NID in CDMA 
+
+	
+
+	class TMobilePhoneNetworkInfoV1 : public TMultimodeType
+	/** Defines information related to a mobile phone network.
+
+	@see GetCurrentNetwork()
+	@see NotifyCurrentNetworkChange()
+	@see GetHomeNetwork()
+	@publishedPartner
+	@released */
+		{
+	public:
+		IMPORT_C TMobilePhoneNetworkInfoV1();
+	public:
+		void InternalizeL(RReadStream& aStream);
+		void ExternalizeL(RWriteStream& aStream) const;
+	public:
+	/** Mode of the network.
+	
+	Modes: Common
+	
+	@see TMobilePhoneNetworkMode */
+		TMobilePhoneNetworkMode iMode;
+	/** Status of the network
+	
+	Modes: Common
+	
+	@see TMobilePhoneNetworkStatus */
+		TMobilePhoneNetworkStatus iStatus;
+	/** The band and band class of the CDMA network operator.
+
+	Modes: CDMA
+	
+	@see TMobilePhoneNetworkBandInfo */
+		TMobilePhoneNetworkBandInfo iBandInfo;
+	/** The MCC of the network.
+	
+	Modes: Common
+	
+	@see TMobilePhoneNetworkCountryCode */
+		TMobilePhoneNetworkCountryCode iCountryCode;
+	/** The system identity (SID) of the CDMA network.
+	
+	Modes: CDMA
+	
+	@see TMobilePhoneNetworkIdentity */
+		TMobilePhoneNetworkIdentity iCdmaSID;
+	/** The system identity (SID) of the AMPS network.
+	
+	Modes: CDMA
+	
+	@see TMobilePhoneNetworkIdentity */
+		TMobilePhoneNetworkIdentity iAnalogSID;
+	/** The network identity (NID in CDMA and MNC in GSM).
+	
+	Modes: Common
+	
+	@see TMobilePhoneNetworkIdentity */
+		TMobilePhoneNetworkIdentity iNetworkId;
+	/** The alpha-tag displayed when this is the serving network.
+	
+	Modes: Common
+	
+	@see TMobilePhoneNetworkDisplayTag */
+		TMobilePhoneNetworkDisplayTag iDisplayTag;
+	/** The short name (up to 10 characters) of the network operator.
+	
+	Modes: GSM/WCDMA
+	
+	@see TMobilePhoneNetworkShortName */
+		TMobilePhoneNetworkShortName iShortName;
+	/** The long name (up to 20 characters) of the network operator.
+	
+	Modes: GSM/WCDMA
+	
+	@see TMobilePhoneNetworkLongName */
+		TMobilePhoneNetworkLongName iLongName;
+		};
+	
+/** A typedef'd packaged TMobilePhoneNetworkInfoV1 for passing through a generic 
+API function member. */
+	typedef TPckg<TMobilePhoneNetworkInfoV1>  TMobilePhoneNetworkInfoV1Pckg;
+	
+/** The access technology that the network is based on.
+
+Modes: Common */
+	enum TMobilePhoneNetworkAccess
+		{
+	/** This is used when there is no network activity and therefore no RAT active.
+	
+	Modes: Common */
+		ENetworkAccessUnknown,
+	/** The access technology is GSM.
+	
+	Modes: GSM */
+		ENetworkAccessGsm,
+	/** The access technology is GSM COMPACT. However GSM COMPACT systems which use 
+	GSM frequency bands but with the CBPCCH broadcast channel are considered as 
+	a separate access technology from GSM.
+	
+	Modes: GSM */
+		ENetworkAccessGsmCompact,
+	/** The access technology is UTRAN (UMTS Network).
+	
+	Modes: WCDMA */
+		ENetworkAccessUtran,					
+	/** Analogue Cellular 
+	
+	Modes: CDMA */
+		ENetworkAccessAmpsCellular,
+	/** CDMA Cellular - Standard channels 
+
+	Modes: CDMA */
+		 ENetworkAccessCdmaCellularStdChannel,
+	/** CDMA Cellular - Custom channels 
+
+	Modes: CDMA */
+		ENetworkAccessCdmaCellularCustomChannel,
+	/** CDMA/Analogue Cellular (cdma first then analogue)
+
+	Modes: CDMA */
+		ENetworkAccessCdmaAmpsCellular,
+	/** CDMA PCS - Using blocks 
+	
+	Modes: CDMA */
+		ENetworkAccessCdmaPcsUsingBlocks,
+	/** CDMA PCS - Using channels 
+	
+	Modes: CDMA */
+		ENetworkAccessCdmaPcsUsingNetworkAccessChannels,
+	/** CDMA JTACS - Standard channels 
+	
+	Modes: CDMA */
+		ENetworkAccessJTacsStdChannels,
+	/** CDMA JTACS - Custom channels 
+	
+	Modes: CDMA */
+		ENetworkAccessJTacsCustomChannels,
+	/** CDMA 2GHz band - Using channels 
+	
+	Modes: CDMA */
+		ENetworkAccess2GHzBandUsingChannels,
+	/** Generic Acquisition Record for IS-2000 and IS-95 
+	
+	Modes: CDMA */
+		ENetworkAccessGenericAcqRecord2000and95,
+	/** Generic Acquisition Record for IS-856
+	
+	Modes: CDMA */
+		ENetworkAccessGenericAcqRecord856
+		};
+
+	
+
+	class TMobilePhoneNetworkInfoV2 : public TMobilePhoneNetworkInfoV1
+	/** The access technology that the network is based on in version v2.0 of the API. 
+	@publishedPartner
+	@released*/
+		{
+	public:
+	/** Default constructor. Network access is set to ENetworkAccessUnknown and iExtensionId 
+	is set to KETelExtMultimodeV2. */
+		IMPORT_C TMobilePhoneNetworkInfoV2();
+	
+	public:
+		void InternalizeL(RReadStream& aStream);
+		void ExternalizeL(RWriteStream& aStream) const;
+	
+	public:
+	/** The type of network access.
+	
+	@see TMobilePhoneNetworkAccess */
+		TMobilePhoneNetworkAccess iAccess;
+		};
+	
+/** A typedef'd packaged TMobilePhoneNetworkInfoV2 for passing through a generic 
+API function member. */
+	typedef TPckg<TMobilePhoneNetworkInfoV2>  TMobilePhoneNetworkInfoV2Pckg;
+
+
+	class TMobilePhoneNetworkInfoV5 : public TMobilePhoneNetworkInfoV2
+	/** The access technology that the network is based on in version v2.0 of the API. 
+	@publishedPartner
+	@released*/
+		{
+	public:
+		IMPORT_C TMobilePhoneNetworkInfoV5();
+		
+	public:
+		void InternalizeL(RReadStream& aStream);
+		void ExternalizeL(RWriteStream& aStream) const;
+		
+	public:
+	/** HSDPA availability indicator. This information is for display 
+	indication only and shall not be used for any other purpose.
+		
+	Modes: WCDMA */
+		TBool iHsdpaAvailableIndicator;
+
+	/** EGPRS availability indicator. This information is for display
+	indication only and shall not be used for any other purpose.
+		
+	Modes: GPRS */
+		TBool iEgprsAvailableIndicator;
+		};
+
+/** A typedef'd packaged TMobilePhoneNetworkInfoV5 for passing through a generic 
+API function member. */		
+	typedef TPckg<TMobilePhoneNetworkInfoV5> TMobilePhoneNetworkInfoV5Pckg;
+	
+	class TMobilePhoneLocationAreaV1 : public TMultimodeType
+/** Defines the mobile phone location area.
+
+@see GetCurrentNetwork()
+@see NotifyCurrentNetworkChange() */
+		{
+	public:
+	/** Constructor. */
+		IMPORT_C TMobilePhoneLocationAreaV1();
+	public:
+	/** Boolean indicating whether the location area is known.
+	
+	Modes: Common */
+		TBool	iAreaKnown;
+	/** Location area code.
+	
+	Modes: GSM/WCDMA */
+		TUint	iLocationAreaCode;
+	/** Cell identity code.
+	
+	Modes: GSM/WCDMA */
+		TUint	iCellId;
+		};
+
+	IMPORT_C void GetCurrentNetwork(TRequestStatus& aReqStatus, TDes8& aNetworkInfo, TMobilePhoneLocationAreaV1& aArea) const;
+	IMPORT_C void NotifyCurrentNetworkChange(TRequestStatus& aReqStatus, TDes8& aNetworkInfo, TMobilePhoneLocationAreaV1& aArea) const;
+	IMPORT_C void GetCurrentNetwork(TRequestStatus& aReqStatus, TDes8& aNetworkInfo) const;
+	IMPORT_C void NotifyCurrentNetworkChange(TRequestStatus& aReqStatus, TDes8& aNetworkInfo) const;
+
+	IMPORT_C void GetHomeNetwork(TRequestStatus& aReqStatus, TDes8& aNetworkInfo) const;
+	IMPORT_C void GetHomeNetworkSearchPeriod(TRequestStatus& aReqStatus, TInt& aSearchIntv) const;
+	IMPORT_C void GetLastUsedAccessTechnology(TRequestStatus& aReqStatus, TMobilePhoneNetworkAccess& aAccessTech) const;
+
+/** The registration status of the mobile phone.
+
+Modes: WCDMA */
+	enum TMobilePhoneRegistrationStatus
+		{
+	/** Registration status is unknown. */
+		ERegistrationUnknown,
+	/** Not registered. The ME can not detect any other networks and is not currently 
+	searching a new operator to register to. */
+		ENotRegisteredNoService,
+	/** Not registered. The ME can detect other networks on which it is possible to 
+	make emergency calls only. */
+		ENotRegisteredEmergencyOnly,
+	/** Not registered, but the ME is currently searching a new operator to register to. */
+		ENotRegisteredSearching,
+	/** Registered, network busy.
+	
+	Modes: WCDMA */
+		ERegisteredBusy,
+	/** Registered on home network. */
+		ERegisteredOnHomeNetwork,
+	/** Registration denied. */
+		ERegistrationDenied,
+	/** Registered, roaming. */
+		ERegisteredRoaming
+		};
+
+	IMPORT_C void GetNetworkRegistrationStatus(TRequestStatus& aReqStatus, TMobilePhoneRegistrationStatus& aStatus) const;
+	IMPORT_C void NotifyNetworkRegistrationStatusChange(TRequestStatus& aReqStatus, TMobilePhoneRegistrationStatus& aStatus) const;
+
+/** The network selection function member.
+
+Modes: Common */
+	enum TMobilePhoneSelectionMethod
+		{
+	/** Network selection function member is unknown.
+	
+	Modes: Common */
+		ENetworkSelectionUnknown,
+	/** Network is selected automatically by phone.
+	
+	Modes: Common */
+		ENetworkSelectionAutomatic,
+	/** Network is selected manually by user.
+	
+	Modes: GSM/WCDMA */
+		ENetworkSelectionManual,
+	/** Network selection is restricted to home network only
+	
+	Modes: CDMA */
+		ENetworkSelectionHomeOnly
+		};
+
+/** The mobile phone band class preferences.
+
+Modes: CDMA */
+	enum TMobilePhoneBandClass
+		{
+	/** Band class selection is unknown. */
+		ENetworkBandClassUnknown,
+	/** Phone will select band class A only. */
+		ENetworkBandClassAOnly,
+	/** Phone will select band class B only. */
+		ENetworkBandClassBOnly,
+	/** Phone will prefer to select band class A. */
+		ENetworkBandClassAPreferred,
+	/** Phone will prefer to select band class B. */
+		ENetworkBandClassBPreferred
+		};
+
+/** The mobile phone network operation mode preferences.
+
+Modes: CDMA */
+	enum TMobilePhoneOperation
+		{
+	/** Network operation mode is unknown. */
+		ENetworkOperationUnknown,
+	/** Phone will select analog operation only. */
+		ENetworkOperationAnalogOnly,
+	/** Phone will select digital/CDMA operation only. */
+		ENetworkOperationDigitalOnly,
+	/** Phone will prefer to select analog operation. */
+		ENetworkOperationAnalogPreferred,
+	/** Phone will prefer to select digital/CDMA operation. */
+		ENetworkOperationDigitalPreferred
+		};
+
+	class TMobilePhoneNetworkSelectionV1 : public TMultimodeType
+/** The mobile phone network selection preferences.
+
+@see GetNetworkSelectionSetting()
+@see SetNetworkSelectionSetting()
+@see NotifyNetworkSelectionSettingChange()
+@publishedPartner
+@released */
+		{
+	public:
+		IMPORT_C TMobilePhoneNetworkSelectionV1();
+	public:
+	/** Phone's network selection function member.
+	
+	Modes: Common
+	
+	@see TMobilePhoneSelectionMethod */
+		TMobilePhoneSelectionMethod	iMethod;
+	/** Phone's band class setting.
+	
+	Modes: CDMA
+	
+	@see TMobilePhoneBandClass */
+		TMobilePhoneBandClass		iBandClass;
+	/** Phone's CDMA operation mode.
+	
+	Modes: CDMA
+	
+	@see TMobilePhoneOperation */
+		TMobilePhoneOperation		iOperationMode;
+		};
+
+/** A typedef'd packaged TMobilePhoneNetworkSelectionV1 for passing through a generic 
+API function member. */
+	typedef TPckg<TMobilePhoneNetworkSelectionV1>  TMobilePhoneNetworkSelectionV1Pckg;
+
+	IMPORT_C TInt GetNetworkSelectionSetting(TDes8& aSetting) const;
+	IMPORT_C void SetNetworkSelectionSetting(TRequestStatus& aReqStatus, const TDes8& aSetting) const;
+	IMPORT_C void NotifyNetworkSelectionSettingChange(TRequestStatus& aReqStatus, TDes8& aSetting) const;
+	
+	struct TMobilePhoneNetworkManualSelection
+/** The mobile phone manual network selection parameters.
+
+Modes: GSM/WCDMA
+
+@see TMobilePhoneNetworkCountryCode */
+		{
+	/** The MCC of the network
+	
+	@see TMobilePhoneNetworkCountryCode */
+		TMobilePhoneNetworkCountryCode iCountry;
+	/** The MNC of the network
+	
+	@see TMobilePhoneNetworkIdentity */
+		TMobilePhoneNetworkIdentity iNetwork;
+		};
+	
+	IMPORT_C void SelectNetwork(TRequestStatus& aReqStatus, TBool aIsManual, const TMobilePhoneNetworkManualSelection& aManualSelection) const;
+
+	
+
+	 // Used to indicate which TMobilePhoneNITZ fields are currently available
+/** The Phone Network Time Zone Capabilities. */
+	 enum TMobilePhoneNITZCaps
+		{
+	/** Universal Time is available in the current network mode. */
+		KCapsTimeAvailable      = 0x00000001,
+	/** Local time zone is available in the current network mode. */
+		KCapsTimezoneAvailable  = 0x00000002,
+	/** DST is available in the current network mode. */
+		KCapsDSTAvailable       = 0x00000004,
+	/** Short name is available in the current network mode. */
+		KCapsShortNameAvailable = 0x00000008,
+	/** Long name is available in the current network mode. */
+		KCapsLongNameAvailable  = 0x00000010
+		};
+
+	class TMobilePhoneNITZ : public TDateTime
+/** Defines time and date information received from a mobile phone network.
+
+@see GetNITZInfo()
+@see NotifyNITZInfoChange()
+@publishedPartner
+@released */
+		{
+	public:
+		IMPORT_C TMobilePhoneNITZ();
+		IMPORT_C TMobilePhoneNITZ(TInt aYear, TMonth aMonth, TInt aDay, TInt aHour, TInt aMinute, TInt aSecond, TInt aMicroSecond);		
+	public:
+	/** Bitwise sum of TMobilePhoneNITZCaps constants used to indicate which NITZ fields 
+	are available.
+	
+	Modes: Common */
+		TInt32	                     iNitzFieldsUsed;
+	/** Time zone, expressed in +/- 15 minute offsets from GMT.
+	
+	Modes: Common */
+		TInt                         iTimeZone;
+	/** Daylight Saving Time adjustment for summer time. The adjustment for DST 
+	can be +1h or +2h.
+	
+	Modes: GSM/WCDMA */
+		TInt	                     iDST;
+	/** Network name in "short" representation.
+	
+	Modes: GSM/WCDMA
+	
+	@see TMobilePhoneNetworkShortName */
+		TMobilePhoneNetworkShortName iShortNetworkId;
+	/** Network name in "long" representation.
+	
+	Modes: GSM/WCDMA
+	
+	@see TMobilePhoneNetworkLongName */
+		TMobilePhoneNetworkLongName	 iLongNetworkId;
+		};
+
+	IMPORT_C TInt GetNITZInfo(TMobilePhoneNITZ& aNITZInfo) const;
+	IMPORT_C void NotifyNITZInfoChange(TRequestStatus& aReqStatus, TMobilePhoneNITZ& aNITZInfo) const;
+
+	enum { KMaxSPNameSize=16 };
+	enum { KMaxPLMNFieldSize=251 };
+
+	enum TDisplayRequirements
+		{
+		KDisplayPLMNNotRequired	= 0x00000001,
+		KDisplayPLMNRequired	= 0x00000002,
+		KDisplaySPNRequired		= 0x00000004,
+		KDisplaySPNNotRequired	= 0x00000008
+		};
+
+	typedef TUint32 TDisplayRequirementsFlags;
+
+	class TMobilePhoneServiceProviderNameV2 : public TMultimodeType
+/** Used to retrieve the Service Provider Name from the ICC. The 
+SP is actually the entity that provides the service. The SP could have contractual 
+agreements with several home PLMN that the ME can register to. The display 
+preference of the registered PLMN and/or the SPN on the ME can be defined 
+on the UICC.
+@publishedPartner
+@released */
+		{
+	public:
+		IMPORT_C TMobilePhoneServiceProviderNameV2();
+	public:
+	/** This parameter specifies if the display of the registered PLMN is required. 
+	Can contain a number of flags from RMobilePhone::TDisplayRequirements.
+	*/
+		TDisplayRequirementsFlags	iDisplayReq;
+	/** The name of the service provider. */
+		TBuf<KMaxSPNameSize>	iSPName;
+		TBuf<KMaxPLMNFieldSize>	iPLMNField;
+		}; 
+
+/** A typedef'd packaged TMobilePhoneServiceProviderNameV2 for passing through 
+a generic API function member. */
+	typedef TPckg<TMobilePhoneServiceProviderNameV2> TMobilePhoneServiceProviderNameV2Pckg;
+
+	IMPORT_C void GetServiceProviderName(TRequestStatus& aReqStatus, TDes8& aName) const;
+	
+	/**
+	Network investigation scan settings.
+	*/
+	enum TMobilePhoneInvestigationScan
+		{
+		/**
+		Network investigation setting in limited service mode.
+		*/
+		KNetworkInvLimited = 0x01,
+		/**
+		Network investigation setting after successful PLMN selection.
+		*/
+		KNetworkInvAfterPlmnSelection=0x02		
+		};
+		
+	/**
+	Network investigation scan events.
+	*/
+	enum TMobilePhoneInvestigationScanEvent
+		{
+		/**
+		No investigation scan events available.
+		*/
+		ENetworkInvestigationNoEvent,
+		/**
+		A higher priority network has been detected, but it does not offer CS Voice.
+		*/
+		ENetworkInvestigationHighPriorityPlmn
+		};
+	
+	IMPORT_C TInt GetNetworkInvScanSetting(TMobilePhoneInvestigationScan & aSetting) const;
+	IMPORT_C void NotifyNetworkInvScanChange(TRequestStatus& aReqStatus, TMobilePhoneInvestigationScan& aSetting) const;
+	IMPORT_C void NotifyNetworkInvScanEvent(TRequestStatus& aReqStatus, TMobilePhoneInvestigationScanEvent& aEvent) const;
+
+
+	/** 251 bytes is the maximum number of octets in an L3 message as defined in3GPP TS 44.006. */
+	enum { KMaxNetworkNameFieldSize = 251 };
+	
+	class TMobilePhoneNetworkNameV3 : public TMultimodeType
+	/**
+	Class containing short, long network names and location information for a PLMN.
+	*/
+		{
+	public:
+		IMPORT_C TMobilePhoneNetworkNameV3();
+	public:
+		/**
+		The long name (up to 20 characters) of the network operator.
+		*/
+		TMobilePhoneNetworkLongName	 iLongName;
+		/**
+		The short name (up to 10 characters) of the network operator.
+		*/
+		TMobilePhoneNetworkShortName	 iShortName;
+		/**
+		This buffer contains other long and short names for the registered PLMN coded as TLV objects.
+		*/
+		TBuf<KMaxNetworkNameFieldSize>	 iOtherNames;
+		};
+		
+	/**
+ 	Packaging typedef for TMobilePhoneNetworkNameV3 class.
+ 	*/	
+	typedef TPckg<TMobilePhoneNetworkNameV3>  TMobilePhoneNetworkNameV3Pckg;
+	
+	
+	class  TMobilePhoneOPlmnV3 : public TMultimodeType
+	/**
+	Class containing network name information.
+	*/
+		{
+	public:
+		IMPORT_C TMobilePhoneOPlmnV3();
+	public:
+		/**
+		The MCC of the registered PLMN, with "wild" values specified for the particular digits of the code.
+		*/
+		TMobilePhoneNetworkCountryCode iCountryCode;
+		/**
+		The MNC of the registered PLMN, with "wild" values specified for the particular digits of the code.
+		*/
+		TMobilePhoneNetworkIdentity iNetworkId;
+		/**
+		The id of the Network Name to be displayed for the (following) location area codes.
+		*/
+		TUint32 iPNNid;
+		/**
+		First Location area code for defining the entire range of LACs for the registered PLMN.
+		*/
+		TUint iFirstLocationAreaCode;
+		/**
+		Last Location area code defining the entire range of LACs for the registered PLMN.
+		*/
+		TUint iLastLocationAreaCode;
+		
+		};
+		
+	/**
+ 	Packaging typedef for TMobilePhoneOPlmnV3 class.
+ 	*/	
+	typedef TPckg<TMobilePhoneOPlmnV3>  TMobilePhoneOPlmnV3Pckg;
+	
+	IMPORT_C void GetCurrentNetworkName(TRequestStatus& aReqStatus, TDes8& aNetworkName, TDes8& aLocInfo) const;
+	
+	/**
+	Identifiers for different access technologies.
+	*/
+	enum TMobilePhoneNetworkAccessCaps
+		{
+		/**
+		No network activity.
+		*/
+		KNetworkAccessUnknown=0x0000,
+		/**
+		Access technology is GSM.
+		*/
+		KNetworkAccessGsm=0x8000,
+		/**
+		Access technology is GSM COMPACT.
+		*/
+		KNetworkAccessGsmCompact=0x4000,
+		/**
+		Access technology is UTRAN (UMTS only).
+		*/
+		KNetworkAccessUtran=0x0080
+		};
+
+	typedef TUint32 TMobilePhoneNetworkAccessCapsFlags;
+		
+	class TMobilePreferredNetworkEntryV3 : public TMultimodeType
+	/**
+	Defines information for a preferred network.
+	*/
+		{
+	public:
+		IMPORT_C TMobilePreferredNetworkEntryV3();
+	public:
+		void InternalizeL(RReadStream& aStream);
+		void ExternalizeL(RWriteStream& aStream) const;
+	public:
+		/**
+		Access Technology supported.
+		Can contain a number of flags from RMobilePhone::TMobilePhoneNetworkAccessCaps.
+		*/
+		TMobilePhoneNetworkAccessCapsFlags iAccess;
+		/**
+		Editable preferences in the User-controlled Networks List with Access Technology.
+		*/
+		TBool iUserDefined;
+		/**
+		The MCC of the network.
+		*/
+		TMobilePhoneNetworkCountryCode iCountryCode;
+		/**
+		The MNC of the network.
+		*/
+		TMobilePhoneNetworkIdentity iNetworkId;
+		};
+		
+	IMPORT_C void StorePreferredNetworksListL(TRequestStatus& aReqStatus, CMobilePhoneStoredNetworkList* aList) const;
+	IMPORT_C void NotifyPreferredNetworksListChange(TRequestStatus& aReqStatus) const;
+		
+	/***********************************************************************************/		
+	//
+	// Mobile Multimedia Call Settings functional unit
+	//
+	/***********************************************************************************/
+	
+/** An enumerated list of settings for multimedia calls. */
+	enum TMobilePhoneMultimediaSettings
+		{
+	/** Accept all incoming multimedia calls with the fallback option enabled. (default). */
+		EAcceptMMCallsVoiceFallback,
+	/** Accept all incoming multimedia calls, but do not accept voice fallback. */
+		EAcceptMMCallsNoFallback,
+	/** Reject all incoming multimedia calls. */
+		ERejectMMCalls,
+	/** Reject all incoming multimedia calls, but drop to voice instead. */
+		EAnswerMMCallsAsVoice
+		};
+
+	IMPORT_C void SetMultimediaCallPreference(TRequestStatus& aReqStatus, TMobilePhoneMultimediaSettings aMmSettings) const;
+	IMPORT_C TInt GetMultimediaCallPreference(TMobilePhoneMultimediaSettings& aMmSettings) const;
+	IMPORT_C void NotifyMultimediaCallPreferenceChange(TRequestStatus& aReqStatus, TMobilePhoneMultimediaSettings& aMmSettings);
+
+	/***********************************************************************************/	
+	//
+	// MobilePrivacy functional unit
+	//
+	/***********************************************************************************/
+	
+/** The mobile phone privacy settings.
+
+Modes: CDMA */
+	enum TMobilePhonePrivacy
+		{
+	/** The privacy setting is unspecified. */
+		EPrivacyUnspecified,
+	/** The privacy setting is set to ON. */
+		EPrivacyOn,
+	/** The privacy setting is set to OFF. */
+		EPrivacyOff
+		};
+
+	IMPORT_C TInt GetDefaultPrivacy(TMobilePhonePrivacy& aSetting) const;
+	IMPORT_C void SetDefaultPrivacy(TRequestStatus& aReqStatus, TMobilePhonePrivacy aSetting) const;
+	IMPORT_C void NotifyDefaultPrivacyChange(TRequestStatus& aReqStatus, TMobilePhonePrivacy& aSetting) const;
+
+	/***********************************************************************************/
+	//
+	// TSY Capabilities for supplementary call services
+	// 
+	/***********************************************************************************/
+	
+/** The call services.
+
+Modes: GSM/WCDMA */
+	enum TMobilePhoneCallServiceCaps
+		{
+	/** Phone supports retrieval of call forwarding status from a cache on the phone.
+	
+	Modes: GSM/WCDMA */
+		KCapsGetCFStatusCache				=0x00000001,
+	/** Phone supports retrieval of call forwarding status from the network.
+	
+	Modes: GSM/WCDMA */
+		KCapsGetCFStatusNetwork				=0x00000002,
+	/** Phone supports setting of call forwarding status (and registered information) 
+	in the network. */
+		KCapsSetCFStatus					=0x00000004,
+	/** Phone supports notification of change in status of any call forwarding service.
+	
+	Modes: GSM/WCDMA */
+		KCapsNotifyCFStatus					=0x00000008,
+	/** Phone supports retrieval of CLIP status from either a cache or the network.
+	
+	Modes: GSM/WCDMA */
+		KCapsGetClipStatus					=0x00000010,
+	/** Phone supports retrieval of CLIR status from either a cache or the network.
+	
+	Modes: GSM/WCDMA */
+		KCapsGetClirStatus					=0x00000020,
+	/** Phone supports retrieval of COLP status from either a cache or the network.
+	
+	Modes: GSM/WCDMA */
+		KCapsGetColpStatus					=0x00000040,
+	/** Phone supports retrieval of COLR status from either a cache or the network.
+	
+	Modes: GSM/WCDMA */
+		KCapsGetColrStatus					=0x00000080,
+	/** Phone supports retrieval of CNAP status from either a cache or the network.
+
+	Modes: GSM/WCDMA */
+		KCapsGetCnapStatus					=0x00000100,
+	/** Phone supports retrieval of call barring status from a cache on the phone.
+	
+	Modes: Common */
+		KCapsGetCBStatusCache				=0x00000200,
+	/** Phone supports retrieval of call barring status from the network.
+	
+	Modes: GSM/WCDMA */
+		KCapsGetCBStatusNetwork				=0x00000400,
+	/** Phone supports setting of call barring status in the network.
+	
+	Modes: Common */
+		KCapsSetCBStatus					=0x00000800,
+	/** Phone supports notification of change in call barring status for any service.
+	
+	Modes: Common */
+		KCapsNotifyCBStatus					=0x00001000,
+	/** Phone supports setting of a password for call barring service.
+	
+	Modes: Common */
+		KCapsChangeCBPassword				=0x00002000,
+	/** Phone supports BAIC call barring service.
+	
+	Modes: Common */
+		KCapsBarAllIncoming					=0x00004000,
+	/** Phone supports BIC-Roam call barring service.
+	
+	Modes: Common */
+		KCapsBarIncomingRoaming				=0x00008000,
+	/** Phone supports BAOC call barring service.
+	
+	Modes: Common */
+		KCapsBarAllOutgoing					=0x00010000,
+	/** Phone supports BOIC call barring service.
+	
+	Modes: Common */
+		KCapsBarOutgoingInternational		=0x00020000,
+	/** Phone supports BOIC-ExHC call barring service.
+	
+	Modes: Common */
+		KCapsBarOutgoingInternationalExHC	=0x00040000,
+	/** Phone supports barring all cases at once.
+	
+	Modes: Common */
+		KCapsBarAllCases					=0x00080000,
+	/** Phone supports retrieval of call waiting status from a cache on the phone.
+	
+	Modes: GSM/WCDMA */
+		KCapsGetCWStatusCache				=0x00100000,
+	/** Phone supports retrieval of call waiting status from the network.
+	
+	Modes: GSM/WCDMA */
+		KCapsGetCWStatusNetwork				=0x00200000,
+	/** Phone supports setting of call waiting status in the network.
+	
+	Modes: Common */
+		KCapsSetCWStatus					=0x00400000,
+	/** Phone supports notification of change in call waiting status for any service.
+	
+	Modes: GSM/WCDMA */
+		KCapsNotifyCWStatus					=0x00800000,
+	/** Phone supports retrieval of call completion (CCBS) status from a cache on the 
+	phone.
+	
+	Modes: GSM/WCDMA */
+		KCapsGetCCBSStatusCache				=0x01000000,
+	/** Phone supports retrieval of call completion (CCBS) status from the network.
+	
+	Modes: GSM/WCDMA */
+		KCapsGetCCBSStatusNetwork			=0x02000000,
+	/** Phone supports deactivation of all CCBS requests at once.
+	
+	Modes: GSM/WCDMA */
+		KCapsDeactivateAllCCBS				=0x04000000,
+		KCapsDeactivateCCBS					=0x08000000,
+	/** Phone supports retrieval of a list of active CCBS requests.
+	
+	Modes: GSM/WCDMA */
+		KCapsRetrieveActiveCCBS				=0x10000000,
+	/** The phone supports programming and retrieval of feature code against a CDMA 
+	network service.
+	
+	Modes: CDMA */
+		KCapsFeatureCode					=0x20000000,
+	/** The phone supports sending of generic network service request strings.
+	
+	Modes: Common */
+		KCapsNetworkServiceRequest			=0x40000000,
+	/** The phone supports retrieval of called line identification status.
+	
+	Modes: GSM/WCDMA */
+		KCapsGetCdipStatus					=0x80000000
+		};
+
+	IMPORT_C TInt GetCallServiceCaps(TUint32& aCaps) const;
+	IMPORT_C void NotifyCallServiceCapsChange(TRequestStatus& aReqStatus, TUint32& aCaps) const;
+
+	/***********************************************************************************/
+	//
+	// MobilePhoneUserNetworkAccess functional unit
+	//
+	/***********************************************************************************/
+
+/** Mobile Phone network services.
+
+Modes: CDMA */
+	enum TMobilePhoneNetworkService
+		{
+	/** Network service is unspecified. */
+		ENetworkServiceUnspecified,
+	/** Feature code applies to call forwarding unconditional service. */
+		ECFUService,
+	/** Feature code applies to call forwarding on busy service. */
+		ECFBService,
+	/** Feature code applies to call forwarding on no reply service. */
+		ECFNRyService,
+	/** Feature code applies to call forwarding on not reachable service. */
+		ECFNRcService,
+	/** Feature code applies to user selective call forwarding service - when the 
+	user wishes to forward incoming call to voicemail. */
+		EDeflectToVoicemail,
+	/** Feature code applies to user selective call forwarding service - when the
+	user wishes to forward incoming call to a number supplied within the deflect 
+	request. */
+		EDeflectToNumber,
+	/** Feature code applies to user selective call forwarding service - when the 
+	user wishes to forward incoming call to a number pre-registered within the 
+	network. */
+		EDeflectToRegisteredNumber,
+	/** Feature code applies to call waiting service. */
+		ECWService,
+		ENextCallShowCLI,
+	/** Feature code applies to caller ID restriction service - when user wishes to 
+	hide their ID for the next call they make. */
+		ENextCallHideCLI
+		};
+
+/** Mobile phone service actions.
+
+Modes: Common */
+	enum TMobilePhoneServiceAction
+		{
+	/** The action is unspecified. */
+		EServiceActionUnspecified,
+	/** The client is registering new service information. If the service was not active 
+	then this action also activates the service. */
+		EServiceActionRegister,
+	/** The client is activating the service. */
+		EServiceActionActivate,
+	/** The client is invoking the service. */
+		EServiceActionInvoke,
+	/** The client is deactivating the service. */
+		EServiceActionDeactivate,
+	/** The client is erasing the currently registered service information. If the service 
+	was active then this action also deactivates the service. */
+		EServiceActionErase
+		};
+		
+	/**
+	Defines the type of SS operation
+	*/
+	enum TMobilePhoneNotifySendSSOperation
+		{
+		/**
+		SS Invoke operation.
+		*/
+		ESendSSInvoke,
+		/**
+		SS ReturnResult operation.
+		*/
+		ESendSSReturnResult,
+		/**
+		SS ReturnError operation.
+		*/
+		ESendSSReturnError,
+		/**
+		SS Reject operation.
+		*/
+		ESendSSReject		
+		};
+	
+	/** Size of additional info buffer. */	
+	enum{ KAdditionalInfoSize = 244 };
+	
+	class TMobilePhoneSendSSRequestV3 : public TMultimodeType
+	/**
+	Contains the operation code and buffer to hold any additional information when receiving a notification 
+	about a network service request.
+	*/
+		{
+	public:
+		IMPORT_C TMobilePhoneSendSSRequestV3();
+	public:
+		/**
+		This is the Operation Code for a Send SS Invoke or Return result events.
+		This is the Error or Problem Code for a Send SS Return Error or Reject events.
+		*/
+		TUint8	iOpCode;
+		/**
+		The additional information (parameters) for a Send SS Invoke or Return result or Return Error events.
+		This is not used for a Send SS Reject event
+		*/
+		TBuf<KAdditionalInfoSize>	iAdditionalInfo;
+		};
+	
+	/**
+ 	Packaging typedef for TMobilePhoneSendSSRequestV3 class.
+ 	*/	
+	typedef TPckg<TMobilePhoneSendSSRequestV3> TMobilePhoneSendSSRequestV3Pckg;
+
+	// API/TSY internal type
+
+	struct TNetworkServiceAndAction
+		{
+		TMobilePhoneNetworkService iService;
+		TMobilePhoneServiceAction iAction;
+		};
+	
+	IMPORT_C void ProgramFeatureCode(TRequestStatus& aReqStatus, const TDesC& aFCString, TMobilePhoneNetworkService aService, TMobilePhoneServiceAction aAction) const;
+	IMPORT_C void GetFeatureCode(TRequestStatus& aReqStatus, TDes& aFCString, TMobilePhoneNetworkService aService, TMobilePhoneServiceAction aAction) const;
+
+	IMPORT_C void SendNetworkServiceRequest(TRequestStatus& aReqStatus, const TDesC& aServiceString) const;
+	IMPORT_C void SendNetworkServiceRequestNoFdnCheck(TRequestStatus& aReqStatus, const TDesC& aServiceString) const;
+	IMPORT_C void NotifySendNetworkServiceRequest(TRequestStatus& aReqStatus, const TMobilePhoneNotifySendSSOperation aOperation, TDes8& aRequestComplete) const;
+
+	/***********************************************************************************/
+	//
+	// MobilePhoneCallForwarding functional unit
+	// 
+	/***********************************************************************************/
+
+/** The Call Forwarding flavours.
+
+Modes: GSM/WCDMA */
+	enum TMobilePhoneCFCondition
+		{
+	/** The call forwarding service is unspecified. */
+		ECallForwardingUnspecified,
+	/** All calls to this subscriber are forwarded. */
+		ECallForwardingUnconditional,
+	/** Calls are forwarded when this subscriber is busy. */
+		ECallForwardingBusy,
+	/** Calls are forwarded when this subscriber does not reply within a time-out period. */
+		ECallForwardingNoReply,
+	/** Calls are forwarded when this subscriber is unreachable. */
+		ECallForwardingNotReachable,
+	/** All of above CF services. Can be used to check all 4 call forwarding Fs 
+	at once. */
+		ECallForwardingAllCases,			// combination of all four above cases
+	/** All the conditional (busy, no reply, not reachable) CF services. Can be used 
+	to check all 3 conditional call forwarding conditions at once. */
+		ECallForwardingAllConditionalCases	// combination of CFB, CFNRy and CFNRc
+		};
+
+/** The Call Forwarding status
+
+Modes: GSM/WCDMA */
+	enum TMobilePhoneCFStatus
+		{
+	/** The CF service is currently active and operative. */
+		ECallForwardingStatusActive,
+	/** The CF service is currently deactivated. */
+		ECallForwardingStatusNotActive,
+	/** The CF service is not registered. */
+		ECallForwardingStatusNotRegistered,
+	/** The CF service is not provisioned. */
+		ECallForwardingStatusNotProvisioned,
+	/** The CF service is not available in the serving network. */
+		ECallForwardingStatusNotAvailable,
+	/** The phone can not determine CF service status. */
+		ECallForwardingStatusUnknown,
+	/** The Call Forwarding service is active and the presentation indicator is set 
+	to allowed */
+		ECallForwardingStatusActivePIAllowed,
+	/** The Call Forwarding service is active and the presentation indicator is set 
+	to not available */
+		ECallForwardingStatusActivePINotAvailable,
+	/** The Call Forwarding service is active and the presentation indicator is set 
+	to restricted
+	
+	The Call Forwarding service is active and the presentation indicator is set 
+	to restricted and screening returns "User provided, verified and passed". */
+		ECallForwardingStatusActivePIClir,
+	/** The Call Forwarding service is active and the presentation indicator is set 
+	to restricted and screening returns "User provided, not screened". */
+		ECallForwardingStatusActivePIClirSIVerified,
+	/** The Call Forwarding service is active and the presentation indicator is set 
+	to "restricted" and screening returns "Network provided". */
+		ECallForwardingStatusActivePIClirSINotScreened,
+	/** The Call Forwarding service is active and the presentation indicator is set 
+	to "restricted" and screening returns "Network provided". */
+		ECallForwardingStatusActivePIClirSINetwork,
+	/** The CF service is currently in the quiescent state. */	
+		ECallForwardingStatusQuiescent
+		};
+		
+	
+
+	class TMobilePhoneCFInfoEntryV1 : public TMultimodeType
+/** Defines information about the call forwarding service.
+
+Modes: GSM/WCDMA
+
+@see CMobilePhoneCFList
+@publishedPartner
+@released 
+*/
+		{
+	public:
+		IMPORT_C TMobilePhoneCFInfoEntryV1();
+	public:
+		void InternalizeL(RReadStream& aStream);
+		void ExternalizeL(RWriteStream& aStream) const;
+	public:
+	/** The CF service of this list entry.
+	
+	@see TMobilePhoneCFCondition */
+		TMobilePhoneCFCondition iCondition;
+	/** The basic service group associated to this CF service list entry.
+	
+	@see TMobileService */
+		TMobileService iServiceGroup;
+	/** The current status of the call forwarding condition.
+	
+	@see TMobilePhoneCFStatus */
+		TMobilePhoneCFStatus iStatus;
+	/** The "forward-to" telephone number registered for the call forwarding condition. 
+	An empty string if CF service is not registered, not provisioned or not available.
+	
+	@see TMobileAddress */
+		TMobileAddress iNumber;
+	/** The "No Reply" time-out (in seconds) registered for the call forwarding no reply 
+	condition.
+	
+	Equals to -1 if this value is not applicable. In GSM mode, will be between 
+	5 and 30 and in steps of 5 if this value is applicable. */
+		TInt iTimeout; // valid for CFRNy only
+		};
+
+	IMPORT_C void NotifyCallForwardingStatusChange(TRequestStatus& aReqStatus, TMobilePhoneCFCondition& aCondition) const;
+
+	class TMobilePhoneCFChangeV1 : public TMultimodeType
+/** Defines the call forward information.
+
+@see SetCallForwardingStatus()
+@publishedPartner
+@released 
+*/
+		{
+	public:
+		IMPORT_C TMobilePhoneCFChangeV1();
+	public:
+	/** The basic service group(s) to apply the CF status change to.
+	
+	@see TMobileService */
+		TMobileService iServiceGroup;
+	/** The service action for call forwarding.
+	
+	@see TMobilePhoneServiceAction */
+		TMobilePhoneServiceAction iAction;
+	/** A new "forward-to" number to be registered against the CF condition. This is 
+	applicable if iAction=EServiceActionRegister. In other cases, it is set to
+	an empty string.
+	
+	@see TMobileAddress */
+		TMobileAddress iNumber;
+	/** The new "No Reply" time-out in seconds to be registered. This is applicable 
+	if the CF condition is CFNRy and iAction=EServiceActionRegister. Equals -1 
+	if this value is not applicable. If applicable, in GSM mode will be between 
+	5 and 30 and in steps of 5. */
+		TInt iTimeout;
+		};
+
+	IMPORT_C void SetCallForwardingStatus(TRequestStatus& aReqStatus, TMobilePhoneCFCondition aCondition, const TMobilePhoneCFChangeV1& aInfo) const;
+
+/** Call Forwarding Active Notification
+
+Modes: Common */
+	enum TMobilePhoneCFActive
+		{
+	/** CF Unconditional is currently active. */
+		ECFUnconditionalActive,
+	/** CF Busy, CF No Reply or CF Not Reachable is currently active. */
+		ECFConditionalActive
+		};
+
+	IMPORT_C void NotifyCallForwardingActive(TRequestStatus& aReqStatus, TMobileService& aServiceGroup, TMobilePhoneCFActive& aActiveType) const;
+	
+	/**
+	Current status indicators for unconditional call forwarding.
+	*/
+	enum TCFUIndicatorStatus
+		{
+		/**
+		CFU Indicator status unknown.
+		*/
+		KCFUIndicatorUnknown = 0x0,
+		/**
+		CFU Indicator status for Voice (TMobileServiceGroup EVoice).
+		*/
+		KCFUIndicatorVoice=0x01,
+		/**
+		CFU Indicator status for Fax (TMobileServiceGroup EFax).
+		*/
+		KCFUIndicatorFax=0x02,
+		/**
+		CFU Indicator status for Data Teleservices(TMobileServiceGroup EData).
+		*/
+		KCFUIndicatorData=0x04,
+		/**
+		CFU Indicator status for Sms (TMobileServiceGroup ESms).
+		*/
+		KCFUIndicatorSms=0x08,
+		/**
+		CFU Indicator status for Data Bearer Services(TMobileServiceGroup EDataBearer).
+		*/
+		KCFUIndicatorDataBearer=0x10
+		};
+
+	typedef TUint32 TCFUIndicatorStatusFlags;
+		
+	class TMobilePhoneCFUIndicatorV3 : public TMultimodeType
+	/**
+	Contains indicator parameters for unconditional call forwarding.
+	*/
+		{
+	public:
+		IMPORT_C TMobilePhoneCFUIndicatorV3();
+	public:
+		/**
+		Current setting for indicator status.
+		Can contain a number of flags from RMobilePhone::TCFUIndicatorStatus.
+		*/
+		TCFUIndicatorStatusFlags iIndicator;		
+		};
+		
+	typedef TPckg<TMobilePhoneCFUIndicatorV3> TMobilePhoneCFUIndicatorV3Pckg;
+
+	/**
+	The MSP number contains the Profile Identity of the subscriber profile.
+	The Profile Identity shall be any of the following enlisted.
+	@see 3GPP TS 31.102 v7.4.1 section 4.2.64
+	@see 3GPP TS 23.097 [36]
+	*/
+	enum TMultipleSubscriberProfileID
+		{
+		/**
+		Profile Identity Unknown
+		*/
+		KProfileIdentityUnknown = 0x0,
+		/**
+		Profile Identity 1
+		*/
+		KProfileIdentityOne = 0x01,
+		/**
+		Profile Identity 2
+		*/
+		KProfileIdentityTwo = 0x02,
+		/**
+		Profile Identity 3
+		*/
+		KProfileIdentityThree = 0x04,
+		/**
+		Profile Identity 4
+		*/
+		KProfileIdentityFour = 0x08
+		};
+
+	class TMobilePhoneCFUIndicatorV6 : public TMobilePhoneCFUIndicatorV3
+	/**
+	Contains the indicator parameters for unconditional call forwarding.
+	The TMobilePhoneCFUIndicatorV6 supports MSP number(Multiple Subscriber Profile) and Call Forwarding Number.
+	Upto four different profiles can be provisioned against a subscriber using the MSP feature.
+	@see 3GPP TS 31.102 v7.4.1 section 4.2.64
+	*/
+		{
+	public:
+		IMPORT_C TMobilePhoneCFUIndicatorV6();
+	public:
+		/**
+		@see RMoblie::TMobileAddress
+		*/
+		TMobileAddress iCFNumber;
+		/**
+		The profile IDs allow unambiguous identification of each profile. 
+		This will allow the subscriber to select the preferred profile for outgoing calls and for subscriber actions. 
+		For terminating calls the profile ID shall be part of the notification of the profile.
+		*/
+		TMultipleSubscriberProfileID iMultipleSubscriberProfileID;
+		};
+
+	typedef TPckg<TMobilePhoneCFUIndicatorV6> TMobilePhoneCFUIndicatorV6Pckg;
+
+	IMPORT_C void GetCallForwardingIndicator(TRequestStatus& aReqStatus, TDes8& aIndicator) const;
+
+	/***********************************************************************************/
+	//
+	// Mobile Identity Service functional unit
+	// 
+	/***********************************************************************************/
+
+/** Phone ID services (CLIP/CNIP/CLIR).
+
+Modes: GSM/WCDMA */
+	enum TMobilePhoneIdService
+		{
+	/** The identity service is unspecified */
+		EIdServiceUnspecified,
+	/** The caller's ID is presented to the called party. */
+		EIdServiceCallerPresentation,
+	/** The caller's ID is restricted to the called party. */
+		EIdServiceCallerRestriction,
+	/** The connected party's ID is presented to the calling party. */
+		EIdServiceConnectedPresentation,
+	/** The connected party's ID is restricted to the calling party. */
+		EIdServiceConnectedRestriction,
+	/** The caller's name is presented to the called party. */
+		EIdServiceCallerName,
+	/** The called party is presented with the caller's ID. This command enables a 
+	called subscriber to get the called line identification of the called party 
+	when receiving a mobile terminated call. - maps to +CDIP. */
+		EIdServiceCalledPresentation
+		};
+
+/** Service status of the Phone ID services (CLIP/CLIR/CNIP).
+
+Modes: GSM/WCDMA */
+	enum TMobilePhoneIdServiceStatus
+		{
+	/** The interrogated Identity service is provisioned and active. This status is 
+	used for all identity services and in the case of the CLIR service means that 
+	it is permanently active with no subscription option set. */
+		EIdServiceActivePermanent,
+	/** This status is used for the CLIR service only and means that the service is 
+	provisioned and active.
+	
+	The CLIR subscription option is set to "Temporary, default restricted", therefore 
+	identity is always restricted unless over-ridden by the user during a call 
+	set-up. */
+		EIdServiceActiveDefaultRestricted,
+	/** This status is used for the CLIR service only and means that the service is 
+	provisioned and active.
+	
+	The CLIR subscription option is set to "Temporary, default allowed", therefore 
+	identity is always allowed unless over-ridden by the user during a call set-up. */
+		EIdServiceActiveDefaultAllowed,
+	/** The interrogated Identity service is not provisioned. */
+		EIdServiceNotProvisioned,
+	/** The status of the interrogated Identity service is unknown. */
+		EIdServiceUnknown
+		};
+
+	// for use by client-side API code and TSY only
+
+	struct TIdServiceAndLocation
+		{
+		TMobilePhoneIdService iService;
+		TMobileInfoLocation iLocation;
+		};
+
+	/** This function member retrieves the current status of the identity service specified.
+	
+	The phone will retrieve this service status information from the location 
+	specified by the client.
+	
+	If the client has requested EInfoLocationCache but there is no valid status 
+	information in the cache then the request will return KErrNotFound.
+	
+	If the client has requested EInfoLocationCachePreferred, the network will 
+	be interrogated if the cache is empty. Whenever the network is interrogated, 
+	the cache will be refreshed with the information from the network.
+	
+	Use RTelSubSessionBase::CancelAsyncRequest(EMobilePhoneGetIdentityServiceStatus) 
+	to cancel a previously placed asynchronous GetIdentityServiceStatus() request.
+	
+	@param aReqStatus On return, KErrNone if successful.
+	@param aService The identity service to be queried.
+	@param aStatus On return, the service status.
+	@param aLocation The location to use. */
+	IMPORT_C void GetIdentityServiceStatus(TRequestStatus& aReqStatus, TMobilePhoneIdService aService, TMobilePhoneIdServiceStatus& aStatus, TMobileInfoLocation aLocation = EInfoLocationCachePreferred) const;
+	
+	/**
+	Identifies default service status for provisioned identity services.
+	*/
+	enum TMobilePhoneIdServiceSetting
+		{
+		/** Sets the default setting to network default (unknown). */
+		EIdServiceNetworkDefault,
+		/** Sets the default setting to presentation restricted. */
+		EIdServicePresentationRestricted,
+		/** Sets the default setting to presentation allowed. */
+		EIdServicePresentationAllowed
+		};
+		
+	IMPORT_C void SetIdentityServiceStatus(TRequestStatus& aReqStatus, const TMobilePhoneIdService aService, const TMobilePhoneIdServiceSetting aSetting) const;
+	IMPORT_C void NotifyIdentityServiceStatus(TRequestStatus& aReqStatus, const TMobilePhoneIdService aService, TMobilePhoneIdServiceStatus& aStatus) const;
+	IMPORT_C void NotifyIdentitySuppressionRejected(TRequestStatus& aReqStatus) const;
+
+	/***********************************************************************************/
+	//
+	// Mobile Call Barring Functional Unit
+	//
+	/***********************************************************************************/
+
+/** Mobile Phone Call Baring Conditions.
+
+Modes: Common */
+	enum TMobilePhoneCBCondition
+		{
+	/** The barring program is unspecified */
+		EBarUnspecified,
+	/** All incoming calls to this subscriber are barred (BAIC). */
+		EBarAllIncoming,
+	/** All incoming calls to this subscriber are barred when roaming outside the home 
+	PLMN country (BIC-roam). */
+		EBarIncomingRoaming,
+	/** All outgoing calls by this subscriber are barred (BAOC). */
+		EBarAllOutgoing,
+	/** All outgoing international calls by this subscriber are barred (BOIC). */
+		EBarOutgoingInternational,
+	/** All outgoing international calls except those directed to the home PLMN country 
+	by this subscriber are barred (BOIC-ExHC). */
+		EBarOutgoingInternationalExHC,
+	/** All of above CB services. */
+		EBarAllCases,
+		EBarAllOutgoingServices,
+		EBarAllIncomingServices
+		};
+
+/** Mobile Phone Call Barring Status and Information.
+
+Modes: Common */
+	enum TMobilePhoneCBStatus
+		{
+	/** The CB service is currently active and operative. */
+		ECallBarringStatusActive,
+	/** The CB service is currently deactivated or quiescent. */
+		ECallBarringStatusNotActive,
+	/** In GSM/WCDMA mode, the CB service is not provisioned. In CDMA mode, this value 
+	has no meaning. */
+		ECallBarringStatusNotProvisioned,
+	/** In GSM/WCDMA mode, the CB service is not available in serving network. In CDMA
+	mode, the CB service is not available in the phone. */
+		ECallBarringStatusNotAvailable,
+	/** The phone can not determine CB service status. */
+		ECallBarringStatusUnknown
+		};
+
+	
+
+	class TMobilePhoneCBInfoEntryV1 : public TMultimodeType
+/** Defines information about the call barring service.
+
+@see CMobilePhoneCBList
+@publishedPartner
+@released 
+*/
+		{
+	public:
+		void InternalizeL(RReadStream& aStream);
+		void ExternalizeL(RWriteStream& aStream) const;
+	public:
+		IMPORT_C TMobilePhoneCBInfoEntryV1();
+	public:
+	/** The CB service of this list entry.
+	
+	Modes: Common
+	
+	@see TMobilePhoneCBCondition */
+		TMobilePhoneCBCondition iCondition;
+	/** The service group associated to this list entry.
+	
+	Modes: Common
+	
+	@see TMobileService */
+		TMobileService iServiceGroup;
+	/** The CB service status of this list entry.
+	
+	Modes: Common
+	
+	@see TMobilePhoneCBStatus */
+		TMobilePhoneCBStatus iStatus;
+		};
+		
+	class TMobilePhoneCBInfoEntryV3 : public TMobilePhoneCBInfoEntryV1
+	/**
+	V3 class extending TMobilePhoneCBInfoEntryV1 to add a comparison method parameter.
+	*/
+		{
+	public:
+		void InternalizeL(RReadStream& aStream);
+		void ExternalizeL(RWriteStream& aStream) const;
+	public:
+		IMPORT_C TMobilePhoneCBInfoEntryV3();
+	public:
+		/**
+		The comparison method associated with this CB entry.
+		*/
+		TUint8 iCompMethod;
+		};
+		
+	class TMobilePhoneCBChangeV1 : public TMultimodeType
+/** Mobile Phone Call Barring Change.
+
+@see SetCallBarringStatus() 
+*/
+		{
+	public:
+		IMPORT_C TMobilePhoneCBChangeV1();
+	public:
+	/** The basic service group(s) to apply the CB status change to.
+	
+	@see TMobileService */
+		TMobileService iServiceGroup;
+	/** The service action for call barring.
+	
+	@see TMobilePhoneServiceAction */
+		TMobilePhoneServiceAction iAction;
+	/** Password required to perform the call barring service action.
+	
+	@see TMobilePassword */
+		TMobilePassword iPassword;
+		};
+
+	IMPORT_C void SetCallBarringStatus(TRequestStatus& aReqStatus, TMobilePhoneCBCondition aCondition, const TMobilePhoneCBChangeV1& aInfo) const;
+	IMPORT_C void NotifyCallBarringStatusChange(TRequestStatus& aReqStatus, TMobilePhoneCBCondition& aCondition) const;
+	
+	class TMobilePhonePasswordChangeV1 : public TMultimodeType
+/** Mobile phone password change.
+
+@see SetCallBarringPassword()
+@see ChangeSecurityCode()
+@publishedPartner
+@released 
+*/
+		{
+	public:
+		IMPORT_C TMobilePhonePasswordChangeV1();
+	public:
+	/** Old password.
+	
+	Modes: Common
+	
+	@see TMobilePassword */
+		TMobilePassword iOldPassword;
+	/** New password.
+	
+	Modes: Common
+	
+	@see TMobilePassword */
+		TMobilePassword iNewPassword;
+		};
+
+	IMPORT_C void SetCallBarringPassword(TRequestStatus& aReqStatus, const TMobilePhonePasswordChangeV1& aPassword) const;
+
+	class TMobilePhonePasswordChangeV2 : public TMobilePhonePasswordChangeV1
+/** Mobile phone password change version 2. 
+*/
+	{
+	public:
+		IMPORT_C TMobilePhonePasswordChangeV2();
+	public:
+	/** Verified password.
+	
+	Modes: Common
+	
+	@see TMobilePassword */
+		TMobilePassword iVerifiedPassword;
+	};
+
+/** A typedef'd packaged TMobilePhonePasswordChangeV2 passing through a generic 
+API function member. */
+	typedef TPckg<TMobilePhonePasswordChangeV2> TMobilePhonePasswordChangeV2Pckg;
+
+	IMPORT_C void SetSSPassword(TRequestStatus& aReqStatus, const TDesC8& aPassword, const TInt aService) const;
+	
+	IMPORT_C void GetCompMethodName(TRequestStatus& aReqStatus, TDes& aAlphaTag, const TUint8 aCmi) const;
+
+	/***********************************************************************************/
+	//
+	// Mobile Call Waiting Functional Unit
+	//
+	/***********************************************************************************/
+
+/** The mobile phone call waiting status.
+
+Modes: GSM/WCDMA */
+	enum TMobilePhoneCWStatus
+		{
+	/** The CW service is currently active and operative. */
+		ECallWaitingStatusActive,
+	/** The CW service is currently deactivated or quiescent. */
+		ECallWaitingStatusNotActive,
+	/** The CW service is not provisioned. */
+		ECallWaitingStatusNotProvisioned,
+	/** The CW service is not available in the serving network. */
+		ECallWaitingStatusNotAvailable,
+	/** The phone can not determine CW service status. */
+		ECallWaitingStatusUnknown
+		};
+
+	
+
+	class TMobilePhoneCWInfoEntryV1 : public TMultimodeType
+/** Defines information about the call waiting service.
+
+@see CMobilePhoneCWList 
+*/
+		{
+	public:
+		void InternalizeL(RReadStream& aStream);
+		void ExternalizeL(RWriteStream& aStream) const;
+	public:
+		IMPORT_C TMobilePhoneCWInfoEntryV1();
+	public:
+	/** The service group associated to this CW service list entry.
+	
+	Modes: GSM/WCDMA
+	
+	@see TMobileService */
+		TMobileService iServiceGroup;
+	/** The CW service status of this list entry.
+	
+	Modes: GSM/WCDMA
+	
+	@see TMobilePhoneCWStatus */
+		TMobilePhoneCWStatus iStatus;
+		};
+
+/** A typedef'd packaged TMobilePhoneCWInfoEntryV1 for passing through a generic 
+API function member. */
+	typedef TPckg<TMobilePhoneCWInfoEntryV1> TMobilePhoneCWInfoEntryV1Pckg;
+
+	IMPORT_C void SetCallWaitingStatus(TRequestStatus& aReqStatus, TMobileService aServiceGroup, TMobilePhoneServiceAction aAction) const;
+	IMPORT_C void NotifyCallWaitingStatusChange(TRequestStatus& aReqStatus, TDes8& aCWStatus) const;
+
+	/***********************************************************************************/
+	//
+	// Mobile Call Completion Unit
+	//
+	/***********************************************************************************/
+
+/** The Call Completion Busy Subscriber status of the phone.
+
+Modes: GSM/WCDMA */
+	enum TMobilePhoneCCBSStatus
+		{
+	/** User has CCBS provisioned and there is at least 1 (and up to 5) active CCBS 
+	requests. */
+		ECcbsActive,
+	/** User has CCBS provisioned but there are currently no active CCBS requests. */
+		ECcbsNotActive,
+	/** User has not subscribed to the CCBS service. */
+		ECcbsNotProvisioned,
+	/** The CCBS service is not available in the serving network. */
+		ECcbsNotAvailable,
+	/** MS is unable to determine status of the CCBS service. */
+		ECcbsUnknown
+		};
+
+/** CCBS recall events.
+
+@see RMobilePhone::TMobilePhoneCCBSEntryV2 */
+	enum TCCBSRecallEvent
+		{
+	/** Recall received. */
+		ECcbsRecallReceived,
+	/** Recall accepted. */
+		ECcbsRecallAccepted,
+	/** Recall refused. */
+		ECcbsRecallRefused,
+	/** Recall reason unspecified. */
+		ECcbsRecallUnspecified
+		};
+
+	
+
+	class TMobilePhoneCCBSEntryV1 : public TMultimodeType
+/** Defines information about the call completion (CCBS) service.
+
+@see CMobilePhoneCcbsList
+@publishedPartner
+@released 
+*/
+		{
+	public:
+		void InternalizeL(RReadStream& aStream);
+		void ExternalizeL(RWriteStream& aStream) const;
+	public:
+		IMPORT_C TMobilePhoneCCBSEntryV1();
+	public:
+	/** The CCBS index - a number allocated by the network.
+	
+	Modes: GSM/WCDMA */
+		TInt			iCcbsIndex;
+	/** The basic service group (voice/data/fax) this CCBS request is applicable to.
+	
+	Modes: GSM/WCDMA
+	
+	@see TMobileService */
+		TMobileService	iServiceGroup;
+	/** The phone number of the remote party to whom the CCBS request is aimed.
+	
+	Modes: GSM/WCDMA
+	
+	@see TMobileAddress */
+		TMobileAddress	iDestination;
+
+		};
+
+/** A typedef'd packaged TMobilePhoneCCBSEntryV1 for passing through a generic API 
+function member. */
+	typedef TPckg<TMobilePhoneCCBSEntryV1> TMobilePhoneCCBSEntryV1Pckg;
+
+
+	class TMobilePhoneCCBSEntryV2 : public TMobilePhoneCCBSEntryV1
+/** Defines information about the call completion (CCBS) service version 2. 
+*/
+		{
+	public:
+		IMPORT_C	TMobilePhoneCCBSEntryV2();
+	public:
+		TCCBSRecallEvent	iEvent;
+		}; 
+	
+/** A typedef'd packaged TMobilePhoneCCBSEntryV2 for passing through a generic API 
+function member. */
+	typedef TPckg<TMobilePhoneCCBSEntryV2> TMobilePhoneCCBSEntryV2Pckg;
+	
+	IMPORT_C void GetCCBSStatus(TRequestStatus& aReqStatus, TMobilePhoneCCBSStatus& aCcbsStatus, TMobileInfoLocation aLocation = EInfoLocationCachePreferred) const;
+	IMPORT_C void NotifyCCBSStatusChange(TRequestStatus& aReqStatus, TMobilePhoneCCBSStatus& aCcbsStatus) const;
+	IMPORT_C void DeactivateCCBS(TRequestStatus& aReqStatus, TInt aIndex) const;
+	IMPORT_C void NotifyCCBSRecall(TRequestStatus& aReqStatus, TDes8& aCCBSEntry) const;
+	IMPORT_C void AcceptCCBSRecall(TRequestStatus& aReqStatus, TInt aIndex, TName& aCallName) const;
+	IMPORT_C TInt RefuseCCBSRecall(TInt aIndex) const;
+
+	/***********************************************************************************/
+	//
+	// Mobile Alternating Call Function Unit
+	//
+	/***********************************************************************************/
+
+/** Alternating Call Capabilities
+
+Modes: GSM */
+	enum TMobilePhoneAlternatingCallCaps
+		{
+	/** Phone supports outgoing Voice/Data calls
+	
+	Modes: GSM */
+		KCapsMOVoiceData = 0x00000001,
+	/** Phone supports outgoing Voice Then Data calls.
+	
+	Modes: GSM */
+		KCapsMOVoiceThenData = 0x00000002,
+	/** Phone supports outgoing Voice/Fax calls.
+	
+	Modes: GSM/WCDMA */
+		KCapsMOVoiceFax	= 0x00000004,
+	/** Phone supports incoming Voice/Data calls.
+	
+	Modes: GSM */
+		KCapsMTVoiceData = 0x00000008,
+	/** Phone supports incoming Voice Then Data calls.
+	
+	Modes: GSM */
+		KCapsMTVoiceThenData = 0x00000010,
+	/** Phone supports incoming Voice/Fax calls
+
+	Modes: GSM/WCDMA */
+		KCapsMTVoiceFax = 0x00000020
+		};
+
+	IMPORT_C TInt GetAlternatingCallCaps(TUint32& aCaps) const;
+	IMPORT_C void NotifyAlternatingCallCapsChange(TRequestStatus& aReqStatus, TUint32& aCaps) const;
+
+/** Alternating Call Mode.
+
+Modes: Common */
+	enum TMobilePhoneAlternatingCallMode
+		{
+	/** The alternating call mode is unspecified
+	
+	Modes: Common */
+		EAlternatingModeUnspecified,
+	/** Next call will use a single bearer service - default setting
+	
+	Modes: Common */
+		EAlternatingModeSingle,
+	/** Next call will use voice/data alternating bearer service. 
+	
+	Modes: GSM */
+		EAlternatingModeVoiceData,
+	/** Next call will use voice then data alternating bearer service.
+	
+	Modes: GSM */
+		EAlternatingModeVoiceThenData,
+	/** Next call will use voice/fax alternating bearer service. 
+	
+	Modes: GSM/WCDMA */
+		EAlternatingModeVoiceFax
+		};
+
+	IMPORT_C TInt GetAlternatingCallMode(TMobilePhoneAlternatingCallMode& aMode, TMobileService& aFirstService) const;
+	IMPORT_C void SetAlternatingCallMode(TRequestStatus& aReqStatus, TMobilePhoneAlternatingCallMode aMode, TMobileService aFirstService) const;
+	IMPORT_C void NotifyAlternatingCallModeChange(TRequestStatus& aReqStatus, TMobilePhoneAlternatingCallMode& aMode,TMobileService& aFirstService) const;
+
+	/***********************************************************************************/
+	//
+	// Mobile Alternate Line Service Functional Unit
+	//
+	/***********************************************************************************/
+
+/** Alternate Line Primary settings.
+
+Modes: GSM */
+	enum TMobilePhoneALSLine
+		{
+	/** Current ALS line selection is the "Primary" voice line. */
+		EAlternateLinePrimary,
+	/** Current ALS line selection is the "Auxiliary" voice line. */
+		EAlternateLineAuxiliary,
+	/** ALS is supported by ME and SIM, but the TSY can not determine which line is 
+	currently selected. */
+		EAlternateLineUnknown,
+	/** The ME, SIM or serving network does not support ALS. */
+		EAlternateLineNotAvailable
+		};
+
+	IMPORT_C TInt GetALSLine(TMobilePhoneALSLine& aALSLine) const;
+	IMPORT_C void SetALSLine(TRequestStatus& aReqStatus, TMobilePhoneALSLine aALSLine) const;
+	IMPORT_C void NotifyALSLineChange(TRequestStatus& aReqStatus, TMobilePhoneALSLine& aALSLine) const;
+
+	/***********************************************************************************/	
+	//
+	// Mobile Network Security Functional Unit
+	//
+	/***********************************************************************************/
+
+/** Enumerated network security types.
+
+Mode: Common */
+	enum TMobilePhoneNetworkSecurity
+		{
+	/** The encryption level is NONE.
+	
+	Mode: Common */
+		ECipheringOff,
+	/** The encryption level is GSM.(standard encryption algorithms for 2nd Generation 
+	Mobile networks).
+	
+	Mode: GSM */
+		ECipheringGSM,
+	/** The encryption level is WCDMA.(standard encryption algorithms for 3rd Generation 
+	Mobile networks).
+	
+	Mode: WCDMA */
+		ECipheringWCDMA,
+	/** The encryption level is CDMA.(standard encryption algorithms for 3rd Generation 
+	Mobile networks).
+	
+	Mode: CDMA */
+		ECipheringCDMA
+		};
+
+	IMPORT_C void GetNetworkSecurityLevel(TRequestStatus& aReqStatus, TMobilePhoneNetworkSecurity& aSecurity) const;
+	IMPORT_C void NotifyNetworkSecurityLevelChange(TRequestStatus& aReqStatus, TMobilePhoneNetworkSecurity& aSecurity) const;
+	
+	/**
+	Indicators for whether encryption status of the current call should be displayed.
+	*/
+	enum TMobileCallCipheringIndicator
+		{
+		/**
+		The ME indication displaying the encryption status of the current call should be off.
+		*/
+		ECipheringDisplayOff,
+		/**
+		The ME indication displaying the encryption status of the current call should be on.
+		*/
+		ECipheringDisplayOn 
+		};
+		
+    IMPORT_C void GetCipheringIndicatorStatus(TRequestStatus& aReqStatus, TMobileCallCipheringIndicator& aIndicatorStatus) const;
+    IMPORT_C void NotifyCipheringIndicatorStatus(TRequestStatus& aReqStatus, TMobileCallCipheringIndicator& aIndicatorStatus) const;
+
+	/***********************************************************************************/
+	//
+	// Mobile Cost Functional Unit
+	//
+	/***********************************************************************************/
+
+/** Call Cost Capabilities.
+
+Modes: GSM/WCDMA */
+	enum TMobilePhoneCostCaps
+		{
+	/** Indicates that the phone supports calculation and display of current and accumulated 
+	call cost on an information-only basis. (The AoCI service in GSM) 
+	
+	Modes: GSM/WCDMA */
+		KCapsCostInformation = 0x00000001,
+	/** Indicates that the phone supports calculation and display of current and accumulated 
+	call cost in order to support the charging service. (The AoCC service in GSM). 
+
+
+	Modes: Common */
+		KCapsCostCharging = 0x00000002,
+	/** Indicates that the phone supports clearing of cost meters (ACM or CCM) to zero.
+	
+	Modes: Common */
+		KCapsClearCost = 0x00000004,
+	/** Indicates that the phone supports setting the maximum allowed cost (ACMmax) 
+	to a non-zero value. 
+	
+	Modes: Common */
+		KCapsSetMaxCost = 0x00000008,
+	/** Indicates that the phone supports setting the currency and price per unit.
+	
+	Modes: GSM/WCDMA */
+		KCapsSetPuct = 0x00000010,
+	/** Indicates that the phone currently has call cost information available that 
+	the client can retrieve.
+	
+	Modes: Common */
+		KCapsGetCost = 0x00000020,
+	/** Indicates that the phone can notify the client when the call cost information 
+	changes. 
+	
+	Modes: Common */
+		KCapsNotifyCostChange = 0x00000040
+		};
+
+	IMPORT_C TInt GetCostCaps(TUint32& aCaps) const;
+	IMPORT_C void NotifyCostCapsChange(TRequestStatus& aReqStatus, TUint32& aCaps) const;
+
+/** Clear Cost Meter.
+
+Modes: Common */
+	enum TMobilePhoneCostMeters
+		{
+	/** Clear the Current Call Meter. */
+		EClearCCM,
+	/** Clear the Accumulated Charge Meter. */
+		EClearACM,
+	/** Clear all cost meters */
+		EClearAll
+		};
+
+	IMPORT_C void ClearCostMeter(TRequestStatus& aReqStatus, TMobilePhoneCostMeters aMeter) const;
+	IMPORT_C void SetMaxCostMeter(TRequestStatus& aReqStatus, TUint aUnits) const;
+
+	
+	
+	class  TMobilePhonePuctV1 : public TMultimodeType
+/** Defines the contents of the price/unit and currency table (PUCT) on the SIM.
+
+@see TMobilePhoneCostInfoV1
+@see SetPuct() 
+*/
+		{
+	public:
+		IMPORT_C TMobilePhonePuctV1();
+	public:
+	/** The Price per Unit. This floating point value is used to adjust the pricing 
+	units supplied by the network into real currency values. 
+	
+	Modes: GSM/WCDMA */
+		TReal   iPricePerUnit;
+	/** The three character currency indicator.
+	
+	Modes: GSM/WCDMA */
+		TBuf<4> iCurrencyName;
+		};
+
+/** A typedef'd packaged TMobilePhonePuctV1 for passing through a generic API function 
+member. */
+	typedef TPckg<TMobilePhonePuctV1> TMobilePhonePuctV1Pckg;
+	
+	IMPORT_C void SetPuct(TRequestStatus& aReqStatus, const TDesC8& aPuct) const;
+	
+/** Cost Information
+
+Modes: GSM/WCDMA */
+	enum TMobilePhoneCostService
+		{
+	/** Phone supports call cost service but no calls are currently in progress so the 
+	network support and user subscription is unknown. */
+		ECostServiceUnknown,
+	/** The network or the phone does not support any of the call cost services. The 
+	call can be either in progress or not. If the user is subscribed to AoCI they 
+	will be able to continue to make calls but will not see any charging information. 
+	If the user is subscribed to AoCC then they will be prevented from making 
+	chargeable calls. */
+		ECostServiceNotAvailable,
+	/** Call is in progress and a call cost service is active but the phone is unable 
+	to determine whether it is an AoCI or AoCC service. */
+		ECostServiceAvailable,
+	/** Call is in progress and the call cost information (AoCI) service is currently 
+	operating.
+	
+	Modes: GSM/WCDMA */
+		ECostServiceInformation,
+	/** Call is in progress and the call cost charging (AoCC) service is currently operating.
+	
+	Modes: GSM/WCDMA */
+		ECostServiceCharging
+		};
+
+	
+
+	class TMobilePhoneCostInfoV1 : public TMultimodeType
+/** Defines the information related to current billing costs.
+
+@see GetCostInfo()
+@see NotifyCostInfoChange() 
+*/
+		{
+	public:
+		IMPORT_C TMobilePhoneCostInfoV1();
+	public:
+	/** The current status and type of call cost service.
+	
+	@see TMobilePhoneCostService */
+		TMobilePhoneCostService iService;
+	/** The current number of charging units in the Current Call Meter. This is set 
+	to zero if reset by the user or at the start of call set-up attempt. */
+		TUint iCCM;
+	/** The current number of charging units in the Accumulated Call Meter. This equals 
+	the accumulation of previous and current calls. */
+		TUint iACM;
+	/** The maximum number of charging units that the ACM can rise to before chargeable 
+	calls are stopped. Equals zero if Service != ECostServiceCharging. */
+		TUint iACMmax;
+	/** The Price per Unit and Currency Table.
+	
+	@see TMobilePhonePuctV1 */
+		TMobilePhonePuctV1 iPuct;
+		};
+
+/** A typedef'd packaged TMobilePhoneCostInfoV1 for passing through a generic API
+function member. */
+	typedef TPckg<TMobilePhoneCostInfoV1> TMobilePhoneCostInfoV1Pckg;
+
+	IMPORT_C void GetCostInfo(TRequestStatus& aReqStatus, TDes8& aCostInfo) const;
+	IMPORT_C void NotifyCostInfoChange(TRequestStatus& aReqStatus, TDes8& aCostInfo) const;
+
+	/***********************************************************************************/
+	//
+	// Mobile Security Functional Unit
+	//
+	/***********************************************************************************/
+
+/** Security Capabilities.
+
+Modes: Common */
+	enum TMobilePhoneSecurityCaps
+		{
+	/** The phone supports an overall "phone device lock" which can be enabled or disabled. 
+	If enabled, user must enter phone password before the phone can be used. When 
+	this capability is set the phone will support get lock info, notify lock info 
+	change and set lock setting for phone device lock.
+	
+	Modes: Common */
+		KCapsLockPhone = 0x0000001,
+	/** The phone supports locking the ICC (using the PIN1 security code), which can 
+	be enabled or disabled. If enabled, the user must enter PIN1 code before the 
+	ICC can be used. When this capability is set the phone will support get lock 
+	info, notify lock info change and set lock setting for ICC lock. 
+	
+	Modes: Common */
+		KCapsLockICC = 0x00000002,
+	/** The phone supports the "phone to ICC lock" which can be enabled or disabled. 
+	If enabled, at power-up the phone will check whether current ICC is the one 
+	the phone is locked to or not. If not, then the user must enter the phone
+	password before phone can be used with this ICC. When this capability is set 
+	the phone will support get lock info, notify lock info change and set lock 
+	setting for Phone-ICC lock. 
+	
+	Modes: Common */
+		KCapsLockPhoneToICC = 0x00000004,
+	/** The phone supports the "phone to first ICC lock" which can be enabled or disabled. 
+	If enabled, at power-up the phone will check whether current ICC is the one 
+	the phone is first locked to or not. If not, then user must enter the phone 
+	password before the phone can be used with this ICC. When this capability 
+	is set the phone will support get lock info, notify lock info change and set 
+	lock setting for Phone-First ICC lock.
+
+	Modes: Common */
+		KCapsLockPhoneToFirstICC = 0x00000008,
+	/** The phone supports the "Over The Air" programming lock which can be enabled 
+	or disabled. If enabled, the phone will prevent OTA programming by the network. 
+	If disabled, the phone will allow OTA programming by the network. When this 
+	capability is set the phone will support get lock info, notify lock info change 
+	and set lock setting for OTA lock. 
+	
+	Modes: CDMA */
+		KCapsLockOTA = 0x00000010,
+	/** The phone supports access to the PIN 1 security code. When this capability is 
+	set the phone will support verification of PIN1, unblocking PIN1, changing 
+	PIN1 and notification of PIN1 required. 
+	
+	Modes: Common */
+		KCapsAccessPin1 = 0x00000020,
+	/** The phone supports access to the PIN 2 security code. When this capability is 
+	set the phone will support verification of PIN2, unblocking PIN2, changing 
+	PIN2 and notification of PIN2 required.
+	
+	Modes: GSM/WCDMA */
+		KCapsAccessPin2 = 0x00000040,
+	/** The phone supports access to the phone password security code. When this capability 
+	is set the phone will support verification of the phone password, changing 
+	the phone password and notification if the phone password is required. 
+	
+	Modes: Common */
+		KCapsAccessPhonePassword = 0x00000080,
+	/** The phone supports access to the SPC (Service Programming Code) security code. 
+	This code may need to be verified before OTA can commence.
+	
+	Modes: CDMA */
+		KCapsAccessSPC = 0x00000100,
+	/** The phone supports access to the hidden key. When this capability is set the
+	phone will support verification of HiddenKey. 
+	
+	Modes: WCDMA */
+		KCapsAccessHiddenKey=0x00000200,
+	/** The phone supports access to the USIM Application PIN. An Application PIN allows 
+	access to any file on the UICC where it is referenced in the access rules.
+	
+	Modes: WCDMA */
+		KCapsAccessUSIMAppPin=0x00000400,
+	/** The phone supports access to the second USIM Application PIN. The second Application 
+	PIN allows access to files (where it is referenced in the access rules) within 
+	one USIM Application on the UICC. This is a local PIN.
+	
+	Modes: WCDMA */
+		KCapsAccessUSIMAppSecondPin =0x00000800,
+	/** The phone supports access to the Universal PIN. A Universal PIN is a PIN that 
+	is used in a multi-application UICC environment to allow several USIM applications 
+	to share one common PIN.
+	
+	Modes: WCDMA */
+		KCapsAccessUniversalPin =0x00001000
+		};
+
+	IMPORT_C TInt GetSecurityCaps(TUint32& aCaps) const;
+	IMPORT_C void NotifySecurityCapsChange(TRequestStatus& aReqStatus, TUint32& aCaps) const;
+
+/** Lock Information.
+
+Modes: Common */
+	enum TMobilePhoneLock
+		{
+	/** Lock the whole device. Phone lock password is required to unlock when this lock 
+	is enabled. 
+
+	Modes: Common */
+		ELockPhoneDevice,
+	/** Lock PIN1 on the ICC. PIN1 security code is required to unlock when this lock 
+	is enabled. 
+	
+	Modes: Common */
+		ELockICC,
+	/** Lock the phone to the current ICC inserted in the phone Phone lock password 
+	is required to unlock when this lock is enabled.
+	
+	Modes: Common */
+		ELockPhoneToICC,
+	/** Lock the phone to the first ICC inserted in the phone. Phone lock password is 
+	required to unlock when this lock is enabled.
+	
+	Modes: Common */
+		ELockPhoneToFirstICC,
+	/** Lock the OTA facility on the phone. SPC security code may be required to unlock 
+	when this lock is enabled.
+	
+	Modes: CDMA */
+		ELockOTA,
+	/** Lock PIN2 on the ICC. PIN2 security code is required to unlock when this lock 
+	is enabled.
+	
+	Modes: Common */
+		ELockPin2,
+	/** Lock the phonebook hidden entries on the phone. Hidden key security code may 
+	be required to unlock when this lock is enabled.
+	
+	Modes: WCDMA */
+		ELockHiddenKey,
+	/** Lock the associated USIM Application. USIM Application PIN is required to unlock 
+	when this lock is enabled.
+	
+	Modes: WCDMA */
+		ELockUSimApp,
+	/** Lock the associated USIM Application. The second USIM Application PIN is required 
+	to unlock when this lock is enabled.
+	
+	Modes: WCDMA */
+		ELockSecondUSimApp,
+	/** Lock the associated USIM Application(s) that share this common lock. Universal 
+	Pin is required to unlock when this lock is enabled.
+	
+	Modes: WCDMA */
+		ELockUniversalPin,
+	/** Lock for the NAM.  The SPC is required to unlock.
+	
+	Modes: CDMA */
+		ELockNam
+		};
+
+/** Phone lock status.
+
+Modes: Common */
+	enum TMobilePhoneLockStatus
+		{
+	/** The status of the lock is unknown. */
+		EStatusLockUnknown,
+	/** Lock is closed - user can not access functionality governed by this lock until 
+	user correctly enters associated security code. */
+		EStatusLocked,
+	/** Lock is open - user can access functionality governed by this lock */
+		EStatusUnlocked,
+		EStatusBlocked
+		};
+
+/** The phone lock setting.
+
+Modes: Common */
+	enum TMobilePhoneLockSetting
+		{
+	/** The setting of the lock is unknown
+	
+	Modes: Common */
+		ELockSetUnknown,
+	/** Lock is enabled - associated security code will be required to unlock the 
+	lock, the next time the lock's status is EStatusLocked. 
+	
+	Modes: Common */
+		ELockSetEnabled,
+	/** Lock is disabled - so its status is always EStatusUnlocked.
+	
+	Modes: Common */
+		ELockSetDisabled,
+	/** Lock of the current Application is replaced by the Universal PIN. Only the 
+	Universal PIN is allowed as a replacement.
+
+	Modes: WCDMA */
+		ELockReplaced
+		};
+
+	
+
+	class TMobilePhoneLockInfoV1 : public TMultimodeType
+/** Defines the status of a phone lock.
+
+@see GetLockInfo()
+@see NotifyLockInfoChange()
+@publishedPartner
+@released
+*/
+		{
+	public:
+		IMPORT_C TMobilePhoneLockInfoV1();
+	public:
+	/** The current status of the lock.
+	
+	Modes: Common
+	
+	@see TMobilePhoneLockStatus */
+		TMobilePhoneLockStatus iStatus;
+	/** The current setting of the lock.
+	
+	Modes: Common
+	
+	@see TMobilePhoneLockSetting */
+		TMobilePhoneLockSetting iSetting;
+		};
+
+/** A typedef'd packaged TMobilePhoneLockInfoV1 for passing through a generic API 
+function member. */
+	typedef TPckg<TMobilePhoneLockInfoV1> TMobilePhoneLockInfoV1Pckg;
+
+	IMPORT_C void GetLockInfo(TRequestStatus& aReqStatus, TMobilePhoneLock aLock, TDes8& aLockInfo) const;
+	IMPORT_C void NotifyLockInfoChange(TRequestStatus& aReqStatus, TMobilePhoneLock& aLock, TDes8& aLockInfo) const;
+	IMPORT_C void SetLockSetting(TRequestStatus& aReqStatus, TMobilePhoneLock aLock, TMobilePhoneLockSetting aSetting) const;
+
+/** Change Security Code.
+
+Modes: Common */
+	enum TMobilePhoneSecurityCode
+		{
+	/** PIN 1 code (between 4-8 digits).
+
+	Modes: Common */
+		ESecurityCodePin1,
+	/** PIN 2 code (between 4-8 digits)
+	
+	Modes: GSM/WCDMA */
+		ESecurityCodePin2,
+	/** PIN 1 unblocking code (always 8 digits).
+	
+	Modes: Common */
+		ESecurityCodePuk1,
+	/** PIN 2 unblocking code (always 8 digits)
+	
+	Modes: GSM/WCDMA */
+		ESecurityCodePuk2,
+	/** Password used for Phone-SIM Lock and Phone Device Lock (up to 8 digits) 
+	
+	Modes: Common */
+		ESecurityCodePhonePassword,
+	/** Service Programming Code (SPC)
+	
+	Modes: CDMA */
+		ESecurityCodeSPC,
+	/** Phonebook key to display the hidden entries.
+	
+	Modes: WCDMA */
+		ESecurityHiddenKey,
+	/** USIM Application PIN.
+	
+	Modes: WCDMA */
+		ESecurityUSIMAppPin,
+	/** Second USIM Application PIN.
+	
+	Modes: WCDMA */
+		ESecuritySecondUSIMAppPin,
+	/** Universal PIN.
+	
+	Modes: WCDMA */
+		ESecurityUniversalPin,
+	/** Universal PIN unblocking code (always 8 digits).
+	
+	Modes: Common */
+		ESecurityUniversalPuk
+		};
+
+	IMPORT_C void ChangeSecurityCode(TRequestStatus& aReqStatus, TMobilePhoneSecurityCode aType, const TMobilePhonePasswordChangeV1& aChange) const;
+
+	/** Defines the status of a security code.
+
+	@see GetSecurityCodeInfo()
+	@see NotifySecurityCodeInfoChange()
+	@publishedPartner
+	@released
+	*/
+	class TMobilePhoneSecurityCodeInfoV5 : public TMultimodeType
+		{
+	public:
+		IMPORT_C TMobilePhoneSecurityCodeInfoV5();
+	public:
+	/** Number of remaining security code entry attempts before the corresponding lock gets blocked
+	
+	Modes: Common
+	*/
+		TInt iRemainingEntryAttempts;
+		};
+	
+	/** A typedef'd packaged TMobilePhoneSecurityCodeInfoV5 for passing through a generic API
+	function member. */
+	typedef TPckg<TMobilePhoneSecurityCodeInfoV5> TMobilePhoneSecurityCodeInfoV5Pckg;
+	
+	IMPORT_C void GetSecurityCodeInfo(TRequestStatus& aReqStatus, TMobilePhoneSecurityCode aSecurityCode, TDes8& aSecurityCodeInfo) const;
+	IMPORT_C void NotifySecurityCodeInfoChange(TRequestStatus& aReqStatus, TMobilePhoneSecurityCode& aSecurityCode, TDes8& aSecurityCodeInfo) const;
+
+/** Notify Security Events.
+
+Modes: Common */
+	enum TMobilePhoneSecurityEvent
+		{
+	/** The phone has detected that there is no ICC present. 
+	
+	Modes: Common */
+		ENoICCFound,
+	/** The phone has detected that the ICC is unusable. 
+	
+	Modes: Common */
+		EICCTerminated,
+	/** The phone requires PIN1 to be entered. 
+	
+	Modes: Common */
+		EPin1Required,
+	/** The phone requires PUK1 to be entered.
+	
+	Modes: Common */
+		EPuk1Required,
+	/** The phone requires PIN2 to be entered.
+	
+	Modes: GSM/WCDMA */
+		EPin2Required,
+	/** The phone requires PUK2 to be entered.
+	
+	Modes: GSM/WCDMA */
+		EPuk2Required,
+	/** The phone requires the Phone Password to be entered. 
+	
+	Modes: Common */
+		EPhonePasswordRequired,
+	/** The phone requires the SPC to be entered. 
+	
+	Modes: CDMA */
+		ESPCRequired,
+	/** The PIN1 verification procedure has passed. 
+	
+	Modes: Common */
+		EPin1Verified,
+	/** The PIN2 verification procedure has passed.
+
+	Modes: GSM/WCDMA */
+		EPin2Verified,
+	/** The PUK1 unblocking procedure has passed.
+	
+	Modes: Common */
+		EPuk1Verified,
+	/** The PUK2 unblocking procedure has passed. 
+	
+	Modes: GSM/WCDMA */
+		EPuk2Verified,
+	/** The Phone Password has been verified. 
+	
+	Modes: Common */
+		EPhonePasswordVerified,
+	/** The SPC verification procedure has passed.
+	
+	Modes: CDMA */
+		ESPCVerified,
+	/** The phone requires the phonebook hidden key to be entered.
+	
+	Modes: WCDMA */
+		EHiddenKeyRequired,
+	/** The phonebook hidden key procedure has passed.
+	
+	Modes: WCDMA */
+		EHiddenKeyVerified,
+	/** The phone requires the currently active USIM Application PIN to be entered.
+	
+	Modes: WCDMA */
+		EUSIMAppPinRequired,
+	/** The currently active USIM Application PIN procedure has passed.
+	
+	Modes: WCDMA */
+		EUSIMAppPinVerified,
+	/** The phone requires the currently active USIM Application second PIN to be entered.
+	
+	Modes: WCDMA */
+		ESecondUSIMAppPinRequired,
+	/** The currently active USIM Application second PIN procedure has passed.
+	
+	Modes: WCDMA */
+		ESecondUSIMAppPinVerified,
+	/** The phone requires the Universal PIN to be entered.
+	
+	Modes: WCDMA */
+		EUniversalPinRequired,
+	/** The currently active Universal PIN procedure has passed.
+	
+	Modes: WCDMA */
+		EUniversalPinVerified,
+	/** The Service Programming Code has been changed.
+	
+	Modes: CDMA */
+		ESPCChanged,
+	/** The phone requires Universal PUK to be entered.
+	
+	Modes: WCDMA */
+		EUniversalPukRequired,
+	/** The Universal PUK unblocking procedure has passed.
+	
+	Modes: WCDMA */
+		EUniversalPukVerified
+		};
+
+	IMPORT_C void NotifySecurityEvent(TRequestStatus& aReqStatus, TMobilePhoneSecurityEvent& aEvent) const;
+
+	// for use by client-side API code and TSY only
+
+	struct TCodeAndUnblockCode
+		{
+		TMobilePassword iCode;
+		TMobilePassword iUnblockCode;
+		};	
+
+	IMPORT_C void VerifySecurityCode(TRequestStatus& aReqStatus, TMobilePhoneSecurityCode aType,
+		const TMobilePassword& aCode, const TMobilePassword& aUnblockCode) const;
+	IMPORT_C TInt AbortSecurityCode(TMobilePhoneSecurityCode aType) const;
+
+	/***********************************************************************************/	
+	// 
+	// MobileMessageWaiting
+	//
+	/***********************************************************************************/
+
+/** Display indicators. */
+	enum TMobilePhoneIndicatorDisplay
+		{
+	/** Display voicemail active. */
+		KDisplayVoicemailActive = 0x01,
+	/** Display fax active. */
+		KDisplayFaxActive = 0x02,
+	/** Display E-mail active. */
+		KDisplayEmailActive = 0x04,
+	/** Display other active. */
+		KDisplayOtherActive = 0x08,
+	/** Display Aux voicemail active. */
+		KDisplayAuxVoicemailActive = 0x10,
+	/** Display data active. */
+		KDisplayDataActive = 0x20
+		};
+
+	class TMobilePhoneMessageWaitingV1 : public TMultimodeType
+/** Message Waiting Indicators. See 3GPP TS 31 102.
+
+@see GetIccMessageWaitingIndicators()
+@see SetIccMessageWaitingIndicators()
+@see NotifyIccMessageWaitingIndicatorsChange() 
+*/
+		{
+	public:
+		IMPORT_C TMobilePhoneMessageWaitingV1();
+	public:
+	/** The flags for each indicator from TMobilePhoneIndicatorDisplay to specify whether 
+	the indicator should be displayed or not. E.g. Messages of the specified type are waiting.
+
+	Modes: Common */
+		TUint8	iDisplayStatus;
+	/** The number of voicemail messages waiting for the "main" voice line.
+	
+	Modes: Common */
+		TUint8	iVoiceMsgs;
+	/** The number of voicemail messages waiting for the "auxiliary" voice line.
+	
+	Modes: GSM */
+		TUint8	iAuxVoiceMsgs;
+	/** The number of messages waiting for the data line.
+	
+	Modes: Common */
+		TUint8	iDataMsgs;
+	/** The number of messages waiting for the fax line.
+	
+	Modes: Common */
+		TUint8	iFaxMsgs;
+	/** The number of email messages waiting.
+	
+	Modes: WCDMA */
+		TUint8	iEmailMsgs;
+	/** Contains the number of "unspecified" messages waiting.
+	
+	Modes: WCDMA */
+		TUint8	iOtherMsgs;
+		};
+
+/** A typedef'd packaged TMobilePhoneMessageWaitingV1 for passing through a generic 
+API function member. */
+	typedef TPckg<TMobilePhoneMessageWaitingV1> TMobilePhoneMessageWaitingV1Pckg;
+
+	IMPORT_C void GetIccMessageWaitingIndicators(TRequestStatus& aReqStatus, TDes8& aMsgIndicators) const;
+	IMPORT_C void SetIccMessageWaitingIndicators(TRequestStatus& aReqStatus, const TDesC8& aMsgIndicators) const;
+	IMPORT_C void NotifyIccMessageWaitingIndicatorsChange(TRequestStatus& aReqStatus, TDes8& aMsgIndicators) const;
+
+	IMPORT_C void NotifyMessageWaiting(TRequestStatus& aReqStatus, TInt& aCount) const;
+
+	/***********************************************************************************/
+	//
+	// Mobile Fixed Dialling Numbers Functional Unit
+	//
+	/***********************************************************************************/
+
+/** Fixed Dialling Numbers Status.
+
+Modes: Common */
+	enum TMobilePhoneFdnStatus
+		{
+	/** Fixed Dialling Number mode is supported but is not currently active. */
+		EFdnNotActive,
+	/** Fixed Dialling Number mode is supported and is currently active. Deactivating 
+	FDN mode is supported. */
+		EFdnActive,
+	/** Fixed Dialling Number mode is supported and is permanently active. Deactivating 
+	FDN mode is NOT supported with this SIM. */
+		EFdnPermanentlyActive,
+	/** Fixed Dialling Number mode is not supported by ME and/or SIM. */
+		EFdnNotSupported,
+	/** ME is currently unable to determine the status of FDN mode. */
+		EFdnUnknown
+		};
+
+	IMPORT_C TInt GetFdnStatus(TMobilePhoneFdnStatus& aFdnStatus) const;
+	IMPORT_C void GetFdnStatus(TRequestStatus& aReqStatus, TMobilePhoneFdnStatus& aFdnStatus) const;
+
+/** Fixed Dialling Numbers Setting
+
+Modes: Common */
+	enum TMobilePhoneFdnSetting
+		{
+	/** Activate the FDN service. */
+		EFdnSetOn,
+	/** Deactivate the FDN service. */
+		EFdnSetOff
+		};
+
+	IMPORT_C void SetFdnSetting(TRequestStatus& aReqStatus, TMobilePhoneFdnSetting aFdnSetting) const;
+	IMPORT_C void NotifyFdnStatusChange(TRequestStatus& aReqStatus, TMobilePhoneFdnStatus& aFdnStatus) const;
+
+	/***********************************************************************************/
+	//
+	// Multicall bearer settings
+	//
+	/***********************************************************************************/
+
+	class TMobilePhoneMulticallSettingsV1 : public TMultimodeType
+/** Multi call settings for version v1.0.
+
+@see GetMulticallParams()
+@see NotifyMulticallParamsChange() 
+@publishedPartner
+@released*/
+		{
+	public:
+		IMPORT_C TMobilePhoneMulticallSettingsV1();
+	public:
+	/** Maximum number of simultaneous CS bearers allowed - defined by the user. 
+	
+	Modes: WCDMA */
+		TInt iUserMaxBearers;
+	/** Maximum number of simultaneous bearers allowed - defined by the service provider.
+	
+	Modes: WCDMA */
+		TInt iServiceProviderMaxBearers;
+	/** Maximum number of simultaneous CS bearers supported by the network.
+	
+	Modes: WCDMA */
+		TInt iNetworkSupportedMaxBearers;
+	/** Maximum number of simultaneous CS bearers supported by the UE.
+	
+	Modes: WCDMA */
+		TInt iUESupportedMaxBearers;
+		};
+
+/** A typedef'd packaged TMobilePhoneMulticallSettingsV1 for passing through a generic 
+API function member. */
+	typedef TPckg<TMobilePhoneMulticallSettingsV1> TMobilePhoneMulticallSettingsV1Pckg;
+
+	IMPORT_C void GetMulticallParams(TRequestStatus& aReqStatus, TDes8& aMulticallParams) const;
+	IMPORT_C void SetMulticallParams(TRequestStatus& aReqStatus, TInt aUserMaxBearers) const;
+	IMPORT_C void NotifyMulticallParamsChange(TRequestStatus& aReqStatus, TDes8& aMulticallParams) const;
+	
+	enum TMobilePhoneMulticallIndicator
+	/**
+	Indicators for exceeding allowed multiple active bearers.
+	*/
+		{
+		/** The maximum number of multiple active bearers allowed by the service provider has been exceeded. */
+		EBearerNetworProviderExceeded,
+		/** The maximum number of multiple active bearers allowed by the mobile user  has been exceeded. */
+		EBearerUserExceeded
+		};
+		
+	IMPORT_C void NotifyMulticallIndicatorChange(TRequestStatus& aReqStatus, TMobilePhoneMulticallIndicator& aMulticallIndicator) const;
+
+	/***********************************************************************************/
+	//
+	// MobileNextIncomingCall Functional Unit
+	//
+	/***********************************************************************************/
+
+/** Incoming Call Types.
+
+Modes: Common */
+	enum TMobilePhoneIncomingCallType
+		{
+	/** MS will receive any type of incoming call.
+	
+	Modes: Common */
+		EIncomingTypeNotSpecified,
+	/** MS will request voice bearer for incoming calls.
+	
+	Modes: Common */
+		EIncomingVoice,
+	/** MS will request fax bearer for incoming calls 
+	
+	Modes: Common */
+		EIncomingFax,
+	/** MS will request data bearer for incoming calls
+	
+	Modes: Common */
+		EIncomingData,
+	/** MS will request a data bearer for use by a Multimedia CS call (voice fall back 
+	is acceptable) for incoming calls.
+	
+	Modes: GSM/WCDMA */
+		EIncomingMultimediaVoiceFallback,
+	/** MS will request a data bearer for use by a Multimedia CS call (voice fall back 
+	NOT acceptable) for incoming calls 
+	
+	Modes: GSM/WCDMA */
+		EIncomingMultimediaNoFallback,
+	/** The single numbering scheme call mode is alternating voice to fax.
+	
+	Modes: GSM/WCDMA */
+		EIncomingAlternatingVoiceFax,
+	/** The single numbering scheme call mode is alternating voice to data.
+	
+	Modes: GSM */
+		EIncomingAlternatingVoiceData,
+	/** The single numbering scheme call mode is alternating fax to voice.
+	
+	Modes: GSM */
+		EIncomingAlternatingFaxVoice,
+	/** The single numbering scheme call mode is alternating data to voice.
+	
+	Modes: GSM */
+		EIncomingAlternatingDataVoice,
+	/** The single numbering scheme call mode is alternating voice then data.
+	
+	Modes: GSM */
+		EIncomingAlternatingVoiceThenData
+		};
+
+	IMPORT_C void GetIncomingCallType(TRequestStatus& aReqStatus, TMobilePhoneIncomingCallType& aCallType, TDes8& aDataParams) const;
+	IMPORT_C void SetIncomingCallType(TRequestStatus& aReqStatus, TMobilePhoneIncomingCallType aCallType, TDes8& aDataParams) const;
+	IMPORT_C void NotifyIncomingCallTypeChange(TRequestStatus& aReqStatus, TMobilePhoneIncomingCallType& aCallType, TDes8& aDataParams) const;
+
+	/***********************************************************************************/
+	//
+	// User-To-User Signalling Functional Unit
+	//
+	/***********************************************************************************/
+
+/** UUS Settings Requests.
+
+Modes: GSM/WCDMA */
+	enum TMobilePhoneUUSSetting         // UUS settings of the phone
+		{
+	/** UUS is not specified. */
+		EIncomingUUSNotSpecified,
+	/** MS will accept incoming UUS activation request. */
+		EIncomingUUSAccepted,
+	/** MS will reject incoming UUS activation request. */
+		EIncomingUUSRejected
+		};
+
+	IMPORT_C void GetUUSSetting(TRequestStatus& aReqStatus, TMobilePhoneUUSSetting& aSetting) const;
+	IMPORT_C void SetUUSSetting(TRequestStatus& aReqStatus, TMobilePhoneUUSSetting aSetting) const;
+	IMPORT_C void NotifyUUSSettingChange(TRequestStatus& aReqStatus, TMobilePhoneUUSSetting& aSetting) const;
+	
+	/***********************************************************************************/
+	//
+	// Mobile Smart Card Applications Functional Unit
+	//
+	/***********************************************************************************/
+	
+	
+	enum { KSmartCardApplicationLabelMaxSize=32 };
+	
+	/** Smart card application info version v5.0. 
+	Modes: Common
+
+	@see GetSmartCardApplicationInfo()
+	@publishedPartner
+	@released
+	*/
+	class TSmartCardApplicationInfoV5 : public TMultimodeType
+		{
+	public:
+		IMPORT_C TSmartCardApplicationInfoV5();
+	public:
+		/** 
+		Smart card application identifier.
+		*/
+		TAID iAID;
+		/** 
+		Smart card application label. 16 bit USC2 characters string provided by the application 
+		provider to be shown to the user for information, e.g. operator name. It is 
+		recommended by ETSI/3GPP spec that the application label does not exceed 32 
+		bytes.
+		
+		The application label is optional. If no label is provided, the buffer should 
+		be NULL.
+		 */
+		TBuf8<KSmartCardApplicationLabelMaxSize> iLabel;
+		};
+
+	/**
+	A typedef'd packaged TSmartCardApplicationInfoV5 for passing through a generic API 
+	function member. 
+	*/	
+	typedef TPckg<TSmartCardApplicationInfoV5> TSmartCardApplicationInfoV5Pckg;
+
+	/**
+	Specifies the max length of the buffer used to retrieve the smart
+	card application's supported EAP method list.  Value 255 since EAP
+	type list length fits into one byte (see table 5.1 of ETSI TS
+	102.310 v6.2.0).
+
+	@see RMobilePhone::GetSmartCardApplicationInfo()
+	@see RMobilePhone::TUiccApplicationEapInfoV6::iEapTypeList
+	*/
+	enum { KEapSupportedTypeListSize = 255 };
+
+	/**
+	UICC application info version v6.0.  Is a
+	TSmartCardApplicationInfoV5 object, but has an additional buffer
+	(iEapTypeList) for retrieving a list supported EAP methods on the
+	application.
+
+	Modes: GSM/WCDMA
+
+	@see RMobilePhone::GetSmartCardApplicationInfo()
+	@publishedPartner
+	@released
+	*/
+	class TUiccApplicationEapInfoV6 : public TSmartCardApplicationInfoV5
+		{
+	public:
+		IMPORT_C TUiccApplicationEapInfoV6();
+
+	public:
+		/**
+		Application EAP support type list, defining the EAP methods
+		supported by the UICC application (see RFC 3748 and
+		http://www.iana.org/assignments/eap-numbers).
+		
+		As reference, also worth seeing section 5.2 of ETSI TS 102.310
+		v6.2.0 and section 6.2 of RFC3748.
+
+		@see KETelSmartCardEapTypeMD5
+		@see KETelSmartCardEapTypeTLS
+		@see KETelSmartCardEapTypeSIM
+		@see KETelSmartCardEapTypeAKA
+		@see KETelSmartCardEapTypeTTLS
+		*/
+		TBuf8<KEapSupportedTypeListSize> iEapTypeList;	
+		};
+
+	/**
+	A typedef'd packaged TEapUiccApplicationInfoV6 for passing through
+	a generic API function member.
+
+	@see RMobilePhone::GetSmartCardApplicationInfo()
+	*/	
+	typedef TPckg<TUiccApplicationEapInfoV6> TUiccApplicationEapInfoV6Pckg;
+
+	/**
+	Smart card application notification events
+	
+	Modes: Common
+	*/	
+	enum TSmartCardApplicationEvent
+		{
+		/**
+		Smart card application has been installed.
+		*/
+		EScApplicationInstalled,
+		/**
+		Smart card application has been removed.
+		*/
+		EScApplicationRemoved,
+		/**
+		Smart card application has been activated.
+		*/
+		EScApplicationActivated,
+		/**
+		Smart card application has been terminated.
+		*/
+		EScApplicationTerminated
+		};
+
+	/**
+	Smart card application status.
+
+	Modes: Common
+	*/
+	enum TSmartCardApplicationAction
+		{
+		/**
+		Smart card application will be activated.
+		*/
+		EScApplicationActivate,
+		/** 
+		Smart card application will be terminated.
+		*/
+		EScTerminate
+		};
+
+	/**
+	Smart card application file types. For definitions see TS 102.221.
+	
+	Modes: Common
+	*/		
+	enum TScFileType
+		{
+		/**
+		Smart card file type is unknown.
+		*/
+		EUnknown,
+		/**
+		Smart card file type is linear fixed. 
+		
+		This is a record-based file.
+		*/
+		ELinearFixed,
+		/**
+		Smart card file type is cyclic. 
+		
+		This is a record-based file.
+		*/
+		ECyclic,
+		/**
+		Smart card file type is transparent. 
+		
+		This is a binary file.
+		*/
+		ETransparent
+		};
+
+	/**
+	Typedef to hold a 2-byte file identifier.
+	*/
+	typedef TUint16 TScFileID;
+
+	/** Smart card application file info version v5.0.
+	Modes: Common
+
+	@see GetScFileInfo()
+	@publishedPartner
+	@released
+	*/
+	class TScFileInfoV5 : public TMultimodeType
+		{
+	public:
+		IMPORT_C TScFileInfoV5();
+	public:
+		/**
+		Smart card file identifier.
+		*/
+		TScFileID iFileID;
+		/**
+		The type of the smart card file. Options are
+		Linear Fixed, Cyclic or Transparent.
+		*/
+		TScFileType iType;
+		/**
+		Total length of the file.  As specified in TS 102.221 the maximum length of an EF is 0xFFF bytes.
+		*/
+		TInt iTotalLength;
+		/**
+		If the file is a record based file (e.g. file type is ELinearFixed or ECyclic) then this gives the fixed length of a record in the file.
+		If file type is ETransparent then this value is unused and will be set to 0. 
+		
+		From TS 102.221 the maximum length of a record in an EF is 255 bytes.
+		*/
+		TInt iRecordLength;
+		/**
+		If the file is a record based file (e.g. file type is ELinearFixed or ECyclic) then this gives the number of records in the file.
+		If file type is ETransparent then this value is unused and will be set to 0. 
+		
+		From TS 102.221 the maximum number of records in an EF is 254.
+		*/
+		TInt iNumberRecords;
+		};
+	
+	
+	/** A typedef'd packaged TScFileInfoV5 for passing through a generic API 
+	function member. 
+	*/
+	typedef TPckg<TScFileInfoV5> TScFileInfoV5Pckg;
+	
+	/**
+	This based on the maximum number of bytes in a command PDU 
+	as defined in TS 102.221 however the actual path string is very unlikely to ever be this big.
+	
+	Modes: Common
+	*/
+	enum{ KMaxScFilePathLength = 256};
+	
+	/**
+	A typedef'd buffer to hold the path to an EF file.  
+	*/
+	typedef TBuf8<KMaxScFilePathLength> TScFilePathReference;
+	
+	
+	 /** 
+	 Class that holds a smart card applications AID and associated file path string.
+
+	 Modes: Common
+
+	 @see GetScFileInfo()
+	 @publishedPartner
+	 @released
+	 */
+	 class TScFilePath
+		{
+	 public:
+		IMPORT_C TScFilePath();
+     public:
+     	/** 
+     	AID of application. This may be empty implying the iPath is a path reference starting at the master file (MF).
+     	*/
+		TAID iAID;
+		/**
+		Full path reference to file.  
+		
+		The iPath must define the file path using full path referencing. This is because the client does not know 
+		what is the currently selected EF or DF and it is therefore necessary to select the file by full
+		path referencing from the master file.  
+		
+		If iAID value is empty then the iPath reference starts from the MF file but should not include the file ID of the MF (3F00) itself.
+		E.g. To reference the EF_DIR - iAID would be empty and iPath would be set to "2F00".
+		E.g. To refefence the EF_SMS under DF_TELECOM on a 2G SIM ICC - iAID would be empty and iPath would be set to "7F106F3C".
+		
+		If iAID is non-empty then it refers to the AID of the application and iPath is a path reference to a file in that application,
+		In this situation the path reference may start with the implicit FID of the application DF (7FFF).  
+		E.g.  The path to reference to the EF_SMS file in a USIM application using implicit ADF FID would 
+		be "7FFF6F3C".
+		
+		See TS102.221 section 8.4.2 for more information.  
+		*/
+		TScFilePathReference iPath;
+		};
+		
+	/** Smart card application file identifier and access offsets.  This class is used to identify a file and the 
+	location in a file to either read or write. Inherits attributes from TScFilePath which provide the 
+	parent AID and full path reference.
+	
+	Modes: Common
+
+	@see TScFilePath
+	@see ReadScFile()
+	@see UpdateScFile()
+	@publishedPartner
+	@released
+	*/
+	class TScFilePathWithAccessOffsets : public TScFilePath
+		{
+	public:
+		IMPORT_C TScFilePathWithAccessOffsets();
+	public:
+		/**
+		The type of the smart card file. Options are
+		Linear Fixed, Cyclic or Transparent.
+		*/
+		TScFileType iType;
+		/**
+		If file type is ELinearFixed or ECyclic then this is the starting record index to read or update.
+		This must be less than the number of records in the file.
+
+		If file type is ETransparent then this is the offset (in bytes) from the start of the transparent file to read or update.
+		This must be less than the total file size.
+		*/
+		TUint iStartOffset;
+		/**
+		If the file type is ELinearFixed or ECyclic then this is unused.
+		NOTE: A call to ReadScFile or UpdateScFile for a record based file type will only read or update
+		one record as described in TS 102.221 READ RECORD and UPDATE RECORD.
+
+		If file type is ETransparent then this is the number of bytes to read or update.
+		*/
+		TUint iCount;
+		};
+
+	IMPORT_C void EnumerateSmartCardApplications(TRequestStatus& aReqStatus, TUint& aCount) const;
+	IMPORT_C void GetSmartCardApplicationInfo(TRequestStatus& aReqStatus, TUint aAppIndex, TDes8& aInfo) const;
+	IMPORT_C void NotifySmartCardApplicationInfoChange(TRequestStatus& aReqStatus, TAID& aAID, TSmartCardApplicationEvent& aEvent) const;
+	IMPORT_C void SetSmartCardApplicationStatus(TRequestStatus& aReqStatus, const TAID& aAID, TSmartCardApplicationAction aAppAction) const;
+	IMPORT_C void GetScFileInfo(TRequestStatus& aReqStatus, const TScFilePath& aFilePathId, TDes8& aInfo) const;
+	IMPORT_C void ReadScFile(TRequestStatus& aReqStatus, const TScFilePathWithAccessOffsets& aFilePathOffsets, TDes8& aReadBuffer) const;
+	IMPORT_C void UpdateScFile(TRequestStatus& aReqStatus, const TScFilePathWithAccessOffsets& aFilePathOffsets, TDes8& aUpdateBuffer) const;
+	
+	/***********************************************************************************/
+	//
+	// Mobile USIM Applications Functional Unit
+	//
+	/***********************************************************************************/
+
+	enum { KUSimApplicationLabelMaxSize=32 };
+
+	IMPORT_C void EnumerateUSimApplications(TRequestStatus& aReqStatus, TInt& aCount, TAID& aActiveAID) const; //deprecated 9.1
+
+	class TUSimApplicationInfoV2 : public TMultimodeType
+	/** USIM application information for version v2.0. 
+		
+	@deprecated 9.1 Use @see TSmartCardApplicationInfoV5 instead.
+	*/
+		{
+	public:
+		IMPORT_C TUSimApplicationInfoV2();
+	public:
+	/** USIM Application identifier.
+
+	Modes: WCDMA */
+		TAID								iAID;
+	/** USIM Application label. 16 bit USC2 characters string provided by the application 
+	provider to be shown to the user for information, e.g. operator name. It is 
+	recommended by ETSI/3GPP spec that the application label does not exceed 32 
+	bytes.
+	
+	The application label is optional. If no label is provided, the buffer should 
+	be NULL.
+	
+	Modes: WCDMA */
+		TBuf8<KUSimApplicationLabelMaxSize> iLabel; 
+	};
+
+	/** A typedef'd packaged TUSimApplicationInfoV2 for passing through a generic API 
+	function member. 
+
+	@deprecated 9.1 Use @see TSmartCardApplicationInfoV5 instead.
+	*/
+	typedef TPckg<TUSimApplicationInfoV2> TUSimApplicationInfoV2Pckg;
+
+	IMPORT_C void GetUSimApplicationInfo(TRequestStatus& aReqStatus, TInt aUSimAppIndex, TDes8& aInfo) const; //deprecated 9.1
+	IMPORT_C void NotifyUSimApplicationsInfoChange(TRequestStatus& aReqStatus, TInt& aCount, TAID& aActiveAID) const; //deprecated 9.1
+
+	/** USIM Application Status.
+
+	Modes: WCDMA 
+
+	@deprecated 9.1 Use @see TSmartCardApplicationAction instead.
+	*/
+	enum TUSimAppAction
+		{
+	/** USIM application will be activated.
+	
+	Modes: WCDMA */
+		EUSimActivate,
+	/** USIM application will be terminated.
+	
+	Modes: WCDMA */
+		EUSimTerminate
+		};
+
+	IMPORT_C void SetUSimApplicationStatus(TRequestStatus& aReqStatus, const TAID aAID, TUSimAppAction aUsimAppAction) const; //deprecated 9.1
+
+	/** USIM Application selection mode.
+
+	Mode: WCDMA */
+	enum TUSimSelectionMode
+		{
+	/** USIM application is selected automatically by phone.
+	
+	Mode: WCDMA */
+		EUSimSelectionAutomatic,
+	/** USIM application is selected manually by user.
+	
+	Mode: WCDMA */
+		EUSimSelectionManual
+		};
+
+	IMPORT_C TInt SetUSimAppsSelectionMode(TUSimSelectionMode aUSimSelectionMode) const;
+	IMPORT_C TInt GetUSimAppsSelectionMode(TUSimSelectionMode& aUSimSelectionMode) const;
+	IMPORT_C void NotifyUSimAppsSelectionModeChange(TRequestStatus& aReqStatus, TUSimSelectionMode& aUSimSelectionMode) const;
+	IMPORT_C void GetCurrentActiveUSimApplication(TRequestStatus& aReqStatus, TAID& aAID) const;
+	
+	/***********************************************************************************/
+	//
+	// Mobile MMS Functional Unit
+	// 
+	/***********************************************************************************/
+	
+	/** max size of MMS notification buffer. */
+	enum{KMaxMmsNotification = 253};
+	
+	/**
+	Identifies current status of MMS.
+	*/
+	enum TMmsStatus
+		{
+		/**
+		The MMS has not been retrieved.
+		*/
+		EMmsNotRetrieved,
+		/**
+	    The MMS has been retrieved.
+	    */
+		EMmsRetrieved,
+		/**
+		The MMS has been rejected.
+		*/
+		EMmsRejected,
+		/**
+		The MMS has been forwarded.
+		*/
+		EMmsforwarded
+		};
+
+	/** 
+	MMS Implementation.
+	*/
+	enum TMmsImplementation
+		{
+		/**
+		Unknown implementation for MMS.
+		*/
+		KMmsImplUnknwown=0x00,
+		/**
+		Wap implementation for MMS.
+		*/
+		KWapImplementation=0x01
+		};
+	
+	/**
+	MMS Connectivity settings.
+	*/
+	enum TMmsConnParams
+		{
+		/**
+		MMS User Preferences.
+		*/
+		EUserPreferences,
+		/**
+		MMS Issuer Connectivity Parameters.
+		*/
+		EIssuerConnParams,
+		/**
+		MMS User Connectivity Parameters.
+		*/
+		EUserConnParams
+		};
+
+	/**
+	MMS field Id tags.
+	*/
+	enum TMobileMMSFieldTags
+		{
+		/**
+		Tag id for MMS connectivity parameters.
+		*/
+		ETagMmsConnParams=0xAB,
+		/**
+		Tag id for MMS Implementation.
+		*/
+		ETagMmsImpl=0x80,
+		/**
+		Tag id for MMS Relay/Server.
+		*/
+		ETagMmsServer=0x81,
+		/**
+		Tag id for Interface to Core Network and Bearer.
+		*/
+		ETagMmsBearerIE=0x82,
+		/**
+		Tag id for Gateway.
+		*/
+		ETagMmsGateway=0x83 	  
+		};
+		
+	class TMmsNotificationV3 : public TMultimodeType
+	/**
+	Class containing MMS notification paramters.
+	*/
+		{
+		public :
+			IMPORT_C TMmsNotificationV3();
+		public :
+			/**
+			Free/Used space.
+			*/
+			TBool iSpace;
+			/**
+			Notification read/not read.
+			*/
+			TBool iNotification;
+			/**
+			MMS status.
+			*/
+			TMmsStatus iMmsStatus;
+			/**
+			MMS implementation.
+			*/
+			TMmsImplementation iImplementation;
+			/**
+			MMS notification buffer.
+			*/
+			TBuf8<KMaxMmsNotification> iNotify;
+		};
+	
+	typedef TPckg<TMmsNotificationV3> TMmsNotificationV3Pckg;
+
+	//	MMS notification 	
+	IMPORT_C void NotifyMmsUpdate(TRequestStatus& aReqStatus, TDes8& aNotification) const;
+	IMPORT_C void SetMmsUserConnParams(TRequestStatus& aReqStatus, TDes8& aConnectivity) const;
+	IMPORT_C void SetMmsUserPreferences(TRequestStatus& aReqStatus, TDes8& aPreferences) const;
+	IMPORT_C void GetMmsConfig(TRequestStatus& aReqStatus, const TMmsConnParams aType, TDes8& aConnectivity) const;
+	IMPORT_C void NotifyMmsConfig(TRequestStatus& aReqStatus, const TMmsConnParams aType, TDes8& aConnectivity) const;
+	
+	/***********************************************************************************/
+	//
+	// Mobile MailBox Numbers Functional Unit 
+	// 
+	/***********************************************************************************/
+
+	class TMobilePhoneVoicemailIdsV3 : public TMultimodeType
+	/**
+	Contains mailbox numbers.
+	*/
+		{
+		public :
+			IMPORT_C TMobilePhoneVoicemailIdsV3();
+		public :
+			/**
+			Phonebook entry for "voicemail" mailbox number.
+			*/
+			TUint8	iVoice;
+			/** 
+			Phonebook entry for "data" mailbox number.
+			*/
+			TUint8	iData;
+			/**
+			Phonebook entry for "fax" mailbox number.
+			*/
+			TUint8	iFax;
+			/**
+			Phonebook entry for "other" mailbox number.
+			*/
+			TUint8	iOther;
+		};
+	
+	typedef TPckg<TMobilePhoneVoicemailIdsV3> TMobilePhoneVoicemailIdsV3Pckg;
+
+	IMPORT_C void GetMailboxNumbers(TRequestStatus& aReqStatus, TDes8& aMailBox) const;
+	IMPORT_C void NotifyMailboxNumbersChange(TRequestStatus& aReqStatus, TDes8& aMailBox) const;
+
+	/***********************************************************************************/
+	//
+	// Mobile APN Control List Functional Unit
+	// 
+	/***********************************************************************************/	
+	
+	enum { KMaxApnName = 100 };
+	
+	class TAPNEntryV3 : public TMultimodeType
+	/**
+	Contains parameters for an Access Point Name (APN) entry contained 
+	within the Access Control List EFacl file in the UICC.
+	*/
+		{
+	public:
+		IMPORT_C TAPNEntryV3();
+	public:
+		/**
+		GGSN DNS name.
+		*/
+		TBuf8<KMaxApnName> iApn;		
+		};
+		
+	typedef TPckg<TAPNEntryV3> TAPNEntryV3Pckg;
+	
+	IMPORT_C void EnumerateAPNEntries(TRequestStatus& aReqStatus, TUint32 &aIndex) const;
+	IMPORT_C void GetAPNname(TRequestStatus& aReqStatus, const TUint32 aIndex, TDes8& aAPN) const;
+	IMPORT_C void AppendAPNName(TRequestStatus& aReqStatus, const TDes8& aAPN) const;
+	IMPORT_C void DeleteAPNName(TRequestStatus& aReqStatus, TUint32 aIndex) const; 
+	IMPORT_C void NotifyAPNListChanged(TRequestStatus& aReqStatus) const;
+
+	enum TAPNControlListServiceStatus {
+		/**
+		The APN control list service is disabled.
+		*/
+		EAPNControlListServiceDisabled,
+		/**
+		The APN control list service is enabled.
+		*/
+		EAPNControlListServiceEnabled
+	};
+
+	IMPORT_C void SetAPNControlListServiceStatus(TRequestStatus& aReqStatus, TAPNControlListServiceStatus aAPNControlListServiceStatus) const;
+	IMPORT_C void GetAPNControlListServiceStatus(TRequestStatus& aReqStatus, TAPNControlListServiceStatus& aAPNControlListServiceStatus) const;
+	IMPORT_C void NotifyAPNControlListServiceStatusChange(TRequestStatus& aReqStatus, TAPNControlListServiceStatus& aAPNControlListServiceStatus) const;
+
+	/***********************************************************************************/
+	//
+	// Retrieve Total Air Time Duration Functional Unit
+	//
+	/***********************************************************************************/
+	IMPORT_C TInt GetAirTimeDuration(TTimeIntervalSeconds& aTime) const;
+	IMPORT_C void NotifyAirTimeDurationChange(TRequestStatus& aReqStatus,TTimeIntervalSeconds& aTime) const;
+	/***********************************************************************************/
+	//
+	// Terminate All Calls
+	//
+	/***********************************************************************************/
+	IMPORT_C void TerminateAllCalls(TRequestStatus& aReqStatus) const;
+	
+	/***********************************************************************************/
+	//
+	// Auto Redial Functional Unit
+	//
+	/***********************************************************************************/
+	IMPORT_C void ClearBlacklist(TRequestStatus& aReqStatus) const;
+
+	/***********************************************************************************/
+	//
+	// Mobile Personalisation Functional Unit
+	//
+	/***********************************************************************************/
+	
+	/**
+	Indentifies the personalisation scheme capabilities of the UICC/ME.
+	*/
+	enum TMobilePhonePersonalisationCaps
+		{
+		/**
+		UICC/ME personalisation based on network (MCC, MNC) information is possible.
+		*/
+		KCapsPersonalisedNetwork=0x01,
+		/**
+		UICC/ME personalisation based on network (MCC, MNC, IMSI network code group) information is possible.
+		*/
+		KCapsPersonalisedNetworkSub=0x02,
+		/**
+		UICC/ME personalisation based on network (MCC, MNC, EFGID1, EFCNL) information is possible.
+		*/
+		KCapsPersonalisedServiceProvider=0x04,
+		/**
+		UICC/ME personalisation based on network (MCC, MNC, EFGID1, EFGID2, EFCNL) information is possible.
+		*/
+		KCapsPersonalisedCorporate=0x08,
+		/**
+		UICC/ME personalisation based on (IMSI SIM/USIM code group) information is possible.
+		*/
+		KCapsPersonalisedUSim=0x10
+		};
+		
+	/**
+	Identifies the current personalisation schemes that are active. 
+	*/
+	enum TMobilePhonePersonalisationScheme
+		{
+		/**
+		The ME is personalised under the network scheme.
+		*/
+		KPersonalisedNetwork=0x01,
+		/**
+		The ME is personalised under the network sub scheme.
+		*/
+		KPersonalisedNetworkSub=0x02,
+		/**
+		The ME is personalised under the service provider scheme.
+		*/
+		KPersonalisedServiceProvider=0x04,
+		/**
+		The ME is personalised under the corprorate scheme.
+		*/
+		KPersonalisedCorporate=0x08,
+		/**
+		The ME is personalised under the  SIM/USIM scheme.
+		*/
+		KPersonalisedUSim=0x10	
+		};
+
+	/**
+	Identifies the personalisation scheme to be set.
+	*/
+	enum TMobilePhonePersonalisation
+		{
+		/**
+		Personalise the ME using the network scheme.
+		*/
+		EPersonaliseNetwork,
+		/**
+		Personalise the ME using the network sub scheme.
+		*/
+		EPersonaliseNetworkSub,
+		/**
+		Personalise the ME using the service provider scheme.
+		*/
+		EPersonaliseServiceProvider,
+		/**
+		Personalise the ME using the corporate scheme.
+		*/
+		EPersonaliseCorporate,
+		/**
+		Personalise the ME using the SIM/USIM scheme.
+		*/
+		EPersonaliseUsim
+		};
+		
+	IMPORT_C TInt GetPersonalisationCaps(TUint32& aCaps) const;
+	IMPORT_C void GetPersonalisationStatus(TRequestStatus& aReqStatus, TUint32& aPersSchemes) const;
+	IMPORT_C void SetPersonalisationStatus(TRequestStatus& aReqStatus, const TMobilePhonePersonalisation aPersSchemes, const TDes& aPersCode) const;
+	
+	/***********************************************************************************/
+	//
+	// Etel 3rd Party v1.0 Parameter classes
+	//
+	/***********************************************************************************/
+	
+	class TEtel3rdPartyMobileNetworkInfoV1 : public TMultimodeType
+	/**
+	Defines the parameters used to set-up of a call originated from an ETel 3rd Party client.
+
+	TEtel3rdPartyMobileNetworkInfoV1 was used to give an indication to the TSY of where the
+	request was originating from; i.e. if the request is from an application using the ISV
+	API or ETel API, which allowed the TSY to make a decision based on the origin.  This
+	data type also provided further protection by not including any location information
+	parameters.  With PlatSec being introduced in v9.0, there was no need to use this data
+	structure, as each API is policed with the adequate PlatSec capabilities.  Therefore,
+	in v9.0 TEtel3rdPartyMobileNetworkInfoV1 was deprecated and removed from the ETel ISV
+	(ETel3rdParty) implementation.
+
+	TEtel3rdPartyMobileNetworkInfoV1 was only used internally by the ETel ISV API when calls
+	are made to RMobilePhone::GetCurrentNetwork or RMobilePhone::NotifyCurrentNetworkChange.
+	The TSY no longer needs to support this as ETel ISV now uses the TMobilePhoneNetworkInfoV2
+	data structure and no distinction is required for ISV Apps.
+
+	@publishedPartner
+	@deprecated 9.0 This class has been deprecated from 9.0 and should no longer be used.
+	*/
+		{
+	public:
+		IMPORT_C TEtel3rdPartyMobileNetworkInfoV1();
+	public:
+	/** Mode of the network.
+	Modes: Common
+	
+	@see TMobilePhoneNetworkMode */
+		TMobilePhoneNetworkMode iMode;
+	/** Status of the network
+	
+	Modes: Common
+	
+	@see TMobilePhoneNetworkStatus */
+		TMobilePhoneNetworkStatus iStatus;
+	/** The band and band class of the CDMA network operator.
+	
+	Modes: CDMA
+	
+	@see TMobilePhoneNetworkBandInfo */
+		TMobilePhoneNetworkBandInfo iBandInfo;
+	/** The MCC of the network.
+	
+	Modes: Common
+	
+	@see TMobilePhoneNetworkCountryCode */
+		TMobilePhoneNetworkCountryCode iCountryCode;
+	/** The system identity (SID) of the CDMA network or the system identity (SID) of the AMPS network.
+	
+	Modes: CDMA
+
+	@see TMobilePhoneNetworkIdentity */
+		TMobilePhoneNetworkIdentity iCdmaSID;
+	/** The network identity (NID in CDMA and MNC in GSM).
+	
+	Modes: Common
+	
+	@see TMobilePhoneNetworkIdentity */
+		TMobilePhoneNetworkIdentity iNetworkId;
+	/** The alpha-tag displayed when this is the serving network.
+	
+	Modes: Common
+	
+	@see TMobilePhoneNetworkDisplayTag */
+		TMobilePhoneNetworkDisplayTag iDisplayTag;
+	/** The short name (up to 10 characters) of the network operator.
+	
+	Modes: GSM/WCDMA
+	
+	@see TMobilePhoneNetworkShortName */
+		TMobilePhoneNetworkShortName iShortName;
+	/** The long name (up to 20 characters) of the network operator.
+	
+	Modes: GSM/WCDMA
+	
+	@see TMobilePhoneNetworkLongName */
+		TMobilePhoneNetworkLongName iLongName;
+	/** The type of network access.
+	
+	@see TMobilePhoneNetworkAccess */
+		TMobilePhoneNetworkAccess iAccess;
+		};
+
+/** A typedef'd packaged TEtel3rdPartyMobileNetworkInfoV1 for passing through a generic
+API function member.
+
+@deprecated 9.0
+*/
+	typedef TPckg<TEtel3rdPartyMobileNetworkInfoV1>  TEtel3rdPartyMobileNetworkInfoV1Pckg;
+
+	/** IMS Authenticate constants,in accordance to 3GPP TS 33.102,
+	section 6.3.7, and RFC 3310*/
+	enum TMobilePhoneAuthenticate
+		{
+		/** length of autn is 128bits - 16octets*/
+		KAutnLength=16,
+		/** length of RAND is 16 octets */
+		KRandLength=16,
+		/** length of RES is 16 octets*/
+		KResLength=16,
+		/** length of IK is 16 octets*/
+		KIkLength=16,
+		/** length of CK is 16 octets*/
+		KCkLength=16,
+		/** length of Kc (GSM cipher key) is 8 octets*/
+		KKcLength=8,
+		/** length of is 112 bits - 14 octets */
+		KAutsLength=14,
+		};
+
+	/** Maximum size of the record in an EF is 0xff( 255 bytes) according to TS 102.221, section 8.2.2.2
+	*/
+	enum TMobilePhoneRelease5EFMaxSize
+	{
+	 KRelease5EFMaxSize=255,
+	};
+	
+	/** typedefs for encapsulation of the buffers that hold authorization data stored on the ISIM/USIM*/
+	/** typedef for Internet Multimedia Public Identity*/	
+	typedef TBuf8<KRelease5EFMaxSize> TIMPU;
+	/** typedef for Internet Multimedia Private Identity*/
+	typedef TBuf8<KRelease5EFMaxSize> TIMPI;
+	/** typedef for Home Network Domain Name*/
+	typedef TBuf8<KRelease5EFMaxSize> THNDN;
+
+
+	/** IMS Authenticate API*/
+	/** Class encapsulates data needed as an input/output for
+	ISIM/USIM AUTHENTICATE command
+	
+	@publishedPartner
+	@released
+	*/
+	class TImsAuthenticateDataV5: public TMultimodeType
+		{
+	public:
+		IMPORT_C TImsAuthenticateDataV5();
+		/** holds value of network challenge AUTN */
+		TBuf8<KAutnLength> iAUTN;
+		/** holds value of network challenge RAND */
+		TBuf8<KRandLength> iRAND;
+		/** holds result RES of AUTHENTICATE command when it's successfull*/
+		TBuf8<KResLength> iRES;
+		/** holds value of session key Integrity Key */
+		TBuf8<KIkLength> iIK;
+		/** holds value of session key Cipher Key */
+		TBuf8<KCkLength> iCK;
+		/** holds value of Authentication Token when  AUTHENTICATE fails*/
+		TBuf8<KAutsLength> iAUTS;
+		};
+
+	/** packaged version of TImsAuthenticateDataV5, used when this structure has to be passeed via IPC*/
+	typedef TPckg<TImsAuthenticateDataV5> TImsAuthenticateDataV5Pckg;
+	friend class CAsyncRetrieveAuthorizationInfo;
+
+	/** API that execute ISIM/USIM AUTHENTICATE command*/
+	IMPORT_C void ImsAuthenticate (TRequestStatus& aReqStatus,TDes8& authenticateDataPckgd) const;
+
+	IMPORT_C void NotifyImsAuthorizationInfoChange(TRequestStatus& aReqStatus) const;
+
+	/**
+	Source location of IMS Authorization data.
+	*/
+	enum TAuthorizationDataSource
+		{
+		/** Authorization data source is USIM. */
+		EFromUSIM,
+		/** Authorization data source is ISIM. */
+		EFromISIM
+		};
+
+	/** 
+	Class encapsulates IMS authorization data stored in the ISIM or USIM
+
+	@publishedPartner
+	@released
+	*/
+	class CImsAuthorizationInfoV5 : public CBase	
+		{
+	public:
+		IMPORT_C ~CImsAuthorizationInfoV5();
+		IMPORT_C static CImsAuthorizationInfoV5* NewL();
+		IMPORT_C virtual void ExternalizeL(HBufC8*& aBuffer);
+		IMPORT_C virtual void InternalizeL(const TDesC8& aBuffer);
+		IMPORT_C TUint ExtensionId() const;
+	public:
+		/**Internet Multimedia Private Identity stored on the ISIM/USIM*/
+		RMobilePhone::TIMPI iIMPI;
+		/**Internet Multimedia Public Identity(ies) stored on the ISIM/USIM*/
+		RArray<RMobilePhone::TIMPU> iIMPUArray;
+		/**Home Network Domain Name stored on the ISIM/USIM*/
+		RMobilePhone::THNDN iHomeNetworkDomainName;
+		/**indicates whether authorization data has been retrieved from the ISIM*/
+		TAuthorizationDataSource iAuthenticationDataSource;
+	protected:
+		CImsAuthorizationInfoV5();
+		/** version of the data supported*/
+		TUint iExtensionId;
+		};
+		
+	/**	
+	Defines the input as well as the ouput parameters used when performing the
+	(U)ICC AUTHENTICATE command.
+
+	@publishedPartner
+	@released
+    */
+	class TSmartCardAuthenticateDataV6 : public TImsAuthenticateDataV5
+		{
+	public:
+		IMPORT_C TSmartCardAuthenticateDataV6();
+
+	public:
+		TBuf8<KKcLength> iKc;
+		};
+
+	/**
+	Packaged version of TSmartCardAuthenticateDataV6, used when this
+	structure has to be passeed via IPC.
+	*/
+	typedef TPckg<TSmartCardAuthenticateDataV6> TSmartCardAuthenticateDataV6Pckg;
+
+	IMPORT_C void SmartCardAuthenticate(TRequestStatus& aReqStatus, TDes8& aAuthDataPckgd) const;
+	IMPORT_C void SmartCardAuthenticate(TRequestStatus& aReqStatus, const TAID& aAID, TDes8& aAuthDataPckgd) const;
+
+private:
+	CMobilePhonePtrHolder* iMmPtrHolder;
+	RMobilePhone(const RMobilePhone& aPhone);
+
+protected:
+	IMPORT_C void ConstructL();
+	IMPORT_C void Destruct();
+	};
+
+
+/*********************************************************/
+//
+// Phone Storage functionality (RMobilePhoneStore)
+//
+/*********************************************************/
+
+
+
+class CMobilePhoneStorePtrHolder;
+class RMobilePhoneStore : public RTelSubSessionBase
+/**
+Abstract class used to define common phone storage actions and types
+
+Clients open one of the specialised phone store classes that are derived from RMobilePhoneStore
+*/
+	{
+public:
+	friend class CAsyncRetrieveStoreList;
+
+/** Types of store.
+
+Modes: Common */
+	enum TMobilePhoneStoreType
+		{
+	/** Store type is unknown.
+	
+	Modes: Common */
+		EPhoneStoreTypeUnknown,
+	/** Store contains SMS messages.
+	
+	Modes: Common */
+		EShortMessageStore,
+	/** Store contains NAM entries.
+	
+	Modes: CDMA */
+		ENamStore,
+	/** Store contains PhoneBook entries.
+	
+	Modes: Common */
+		EPhoneBookStore,
+	/** Store contains emergency number entries.
+	
+	Modes: Common */
+		EEmergencyNumberStore,
+	/** Store contains own number entries.
+
+	Modes: Common */
+		EOwnNumberStore
+		};
+
+/** Store capabilities. */
+	enum TMobilePhoneStoreCaps
+		{
+	/** The store can be accessed as a whole using the ReadAll() and StoreAll() member
+	functions. */
+		KCapsWholeStore			= 0x80000000,
+	/** The store can be accessed one entry at a time using the RMobilePhoneStore::Read(), 
+	RMobilePhoneStore::Write() and RMobilePhoneStore::Delete() member functions. */
+		KCapsIndividualEntry	= 0x40000000,
+	/** The store can be accessed in order to read entries. */
+		KCapsReadAccess			= 0x20000000,
+	/** The store can be accessed in order to write or delete entries. */
+		KCapsWriteAccess		= 0x10000000,
+	/** The TSY supports deleting all the store entries at once. */
+		KCapsDeleteAll			= 0x08000000,
+	/** The TSY supports notification of store events such as entries added, deleted
+	or store becoming full. */
+		KCapsNotifyEvent		= 0x04000000
+		};
+
+/** The type of store information. As defined in TMobilePhoneStoreInfoV1::iExtensionId
+
+Modes: Common
+
+@see TMobilePhoneStoreInfoV1
+@see RMobilePhone::TMultimodeType */
+	enum TMobilePhoneStoreInfoExtId
+		{
+	/** The iExtensionId contents indicate that the packaged class is a RMobilePhoneStore::TMobilePhoneStoreInfoV1.
+	Modes: Common */
+		KETelMobilePhoneStoreV1=KETelExtMultimodeV1,
+	/** The iExtensionId contents indicate that the packaged class is a RMobilePhoneBookStore::TMobilePhoneBookInfoV1.
+	Modes: Common */
+		KETelMobilePhonebookStoreV1,
+	/** Reserved for SMS store specific information class.
+	Modes: Common */
+		KETelMobileSmsStoreV1,
+	/** The iExtensionId contents indicate that the packaged class is a RMobileNamStore::TMobileNamStoreInfoV1.
+	Modes: CDMA */
+		KETelMobileNamStoreV1,
+	/** The iExtensionId contents indicate that the packaged class is a RMobileONStore::TMobileONStoreInfoV1.
+	Modes: Common */
+		KETelMobileONStoreV1,
+	/** Reserved for Emergency Number store specific infoprmation class.
+	Modes: Common */
+		KETelMobileENStoreV1,
+	/** The iExtensionId contents indicate that the packaged class is a TMobilePhoneBookInfoV2.
+	Modes: Common */
+		KETelMobilePhonebookStoreV2=KETelExtMultimodeV2,
+		
+	/** The iExtensionId contents indicate that the packaged class is a TMobilePhoneBookInfoV2.
+ 	Modes: Common */
+ 		KETelMobilePhonebookStoreV5=KEtelExtMultimodeV5
+		};
+
+
+
+	class TMobilePhoneStoreInfoV1 : public RMobilePhone::TMultimodeType
+/** Defines information and capabilities of a phone-side store.
+@publishedPartner
+@released */
+		{
+	public:
+		IMPORT_C TMobilePhoneStoreInfoV1();
+
+	/** The type of entry in the phone-side store. 
+	
+	Modes: Common
+
+	@see TMobilePhoneStoreType */
+		TMobilePhoneStoreType		iType;
+	/** Indicates the total number of entries that may be held in this store. */
+		TInt						iTotalEntries;
+	/** Indicates the current number of entries held in this store.
+	
+	Is equal to KIndexNotUsed if the TSY is unable to determine current number 
+	of entries.
+	
+	Modes: Common */
+		TInt						iUsedEntries;
+	/** Indicates the capabilities of the store. It is the sum of caps constants defined
+	in TMobilePhoneStoreCaps and those defined for a specialised phone store.
+	
+	Modes: Common */
+		TUint32						iCaps;
+	/** The name of the phone-side store. A valid list of names is given in the description 
+	of each specialised store. 
+	
+	Modes: Common
+
+	@see RMobilePhone::TMobileName */
+		RMobilePhone::TMobileName	iName;
+		};
+
+/** A typedef'd packaged TMobilePhoneStoreInfoV1 for passing through a generic
+API member function. */
+	typedef TPckg<TMobilePhoneStoreInfoV1> TMobilePhoneStoreInfoV1Pckg;
+
+	
+
+	class TMobilePhoneStoreEntryV1 : public RMobilePhone::TMultimodeType
+/** Defines common contents of an entry in a phone-side store. 
+*/
+		{
+	public:
+
+		enum
+			{
+			KIndexNotUsed = -1
+			};
+
+	protected:
+		TMobilePhoneStoreEntryV1();
+	public:
+		void InternalizeL(RReadStream& aStream);
+		void ExternalizeL(RWriteStream& aStream) const;
+	public:
+	/** The slot location of the entry within phone-side storage.
+	
+	Modes: Common */
+		TInt  iIndex;
+		};
+
+	IMPORT_C void GetInfo(TRequestStatus& aReqStatus, TDes8& aInfo) const;
+
+	IMPORT_C void Read(TRequestStatus& aReqStatus, TDes8& aEntry) const;
+	IMPORT_C void Write(TRequestStatus& aReqStatus, TDes8& aEntry) const;
+
+	IMPORT_C void Delete(TRequestStatus& aReqStatus, TInt aIndex) const;
+	IMPORT_C void DeleteAll(TRequestStatus& aReqStatus) const;
+
+/** The store events. It is possible for more than one event to occur at the same 
+time, therefore the events are a bitmask and should be tested as a bitmask.
+
+Modes: Common
+
+@see NotifyStoreEvent() */
+	enum TMobileStoreEvent
+		{
+	/** The store has become full. This event will trigger after the last possible 
+	entry in a store has been written. */
+		KStoreFull =0x00000001,
+	/** The store was full but now has some space. This event will trigger after one 
+	or more entries have been deleted from a full store. */
+		KStoreHasSpace =0x00000002,
+	/** The store is empty. This event will trigger after the last entry in a store 
+	has been deleted or if all entries are deleted at once. */
+		KStoreEmpty =0x00000004,
+	/** The store has a new entry, placed in the slot indicated by the aIndex parameter. */
+		KStoreEntryAdded =0x00000008,
+	/** The store has deleted the entry that was in the slot indicated by the aIndex 
+	parameter. */
+		KStoreEntryDeleted =0x00000010,
+	/** The store has changed the entry that was in the slot indicated by the aIndex 
+	parameter. */
+		KStoreEntryChanged =0x00000020,
+	/** The store contents have substantially changed and the TSY is recommending that 
+	the client performs a refresh by reading all the contents again. */
+		KStoreDoRefresh =0x00000040
+		};
+
+	IMPORT_C void NotifyStoreEvent(TRequestStatus& aReqStatus, TUint32& aEvent, TInt& aIndex) const;
+
+protected:
+	CMobilePhoneStorePtrHolder* iStorePtrHolder;
+
+protected:
+	RMobilePhoneStore();
+	IMPORT_C void BaseConstruct(CMobilePhoneStorePtrHolder* aPtrHolder);
+	IMPORT_C void Destruct();
+	};
+
+
+/*********************************************************/
+//
+// Call based functionality (RMobileCall)
+// 
+/*********************************************************/
+
+
+
+class CMobileCallPtrHolder;
+
+class RMobileCall : public RCall
+/** Provides access to the functionality associated with a specific mobile call.
+
+RMobileCall encapsulates access to a mobile phone. The functionality of RMobileCall 
+is divided into a number of functional units, for the purpose of easier documentation 
+and navigation and selectable support by TSY. 
+
+Note: Some RMobileCall function members must be supported by the TSY while 
+others are part of optional "functional unit" and only need to be supported
+if the TSY supports that functional unit. When a functional unit is mandatory 
+then the TSY should at least support the Get...Caps() member function to indicate 
+the member functions that are supported for this unit. 
+ */
+	{
+public:
+	IMPORT_C RMobileCall();
+	/***********************************************************************************/
+	//
+	//  Mobile call parameters - used within Dial/Answer API
+	//
+	/***********************************************************************************/
+
+	// used to set iExtensionId in RCall::TCallParams
+/** The mobile call parameter extension IDs.
+
+Modes: Common */
+	enum TMobileCallParamsExtensionId
+		{
+	/** The iExtensionId contents indicate that the packaged class is a TMobileCallParamsV1. */
+		KETelMobileCallParamsV1=KETelExtMultimodeV1,
+	/** The iExtensionId contents indicate that the packaged class is a TMobileDataCallParamsV1.
+	
+	Modes: Common */
+		KETelMobileDataCallParamsV1,
+	/** The iExtensionId contents indicate that the packaged class is a TMobileHscsdCallParamsV1.
+	
+	Modes: GSM/WCDMA */
+		KETelMobileHscsdCallParamsV1,
+	/** The iExtensionId contents indicate that the packaged class is a TMobileCallParamsV2.
+	
+	Modes: Common */
+		KETelMobileCallParamsV2=KETelExtMultimodeV2,
+	/** The iExtensionId contents indicate that the packaged class is a TMobileDataCallParamsV2.
+	
+	Modes: Common */
+		KETelMobileDataCallParamsV2,
+	/** The iExtensionId contents indicate that the packaged class is a TMobileHscsdCallParamsV2.
+
+	Modes: GSM/WCDMA */
+		KETelMobileHscsdCallParamsV2,
+	/** The iExtensionId contents indicate that the packaged class is a TEtel3rdPartyMobileCallParamsV1. 
+	
+	Modes: Common */	
+		KETel3rdPartyCallParamsV1=KETelExt3rdPartyV1
+		};
+
+/** Caller Id restriction settings.
+
+Modes: Common
+
+@see TMobileCallParamsV1 */
+	enum TMobileCallIdRestriction
+		{
+	/** The default setting should be used if the user has not explicitly requested 
+	their identity to be restricted/allowed. */
+		EIdRestrictDefault,
+	/** The user has explicitly requested their identity to be sent for this call. */
+		ESendMyId,
+	/** The user has explicitly requested their identity not to be sent for this call. */
+		EDontSendMyId
+		};
+
+	class TMobileCallCugV1 : public RMobilePhone::TMultimodeType
+/** This class is used to set up a CUG (Closed User Group) call. 
+
+TMobileCallCugV1() is valid in GSM/WCDMA mode only. The client application 
+should set the CUG settings for the call depending on the user's choice. If
+the user has not explicitly requested a CUG call then this parameter should 
+indicate that explicit CUG invoke is false. The TSY ignores this parameter 
+if in CDMA mode. 
+*/
+		{
+	public:
+		IMPORT_C TMobileCallCugV1();
+	public:
+	/** A boolean indicating whether Closed User Group is being explicitly invoked by 
+	the client or not. If this parameter is false, the other entries in this structure 
+	will be ignored. */
+		TBool	iExplicitInvoke;
+	/** The Closed User Group index that the user has specified for this call (if no
+	index has been specified then this element will equal -1). */
+		TInt	iCugIndex;
+	/** A boolean indicating whether the user has suppressed their Outgoing Access option 
+	or not. */
+		TBool	iSuppressOA;
+	/** A boolean indicating whether the user has suppressed the use of their preferential 
+	Closed User Group or not. */
+		TBool	iSuppressPrefCug;
+		};
+	
+/** Multicall Operation set-up.
+
+Mode: WCDMA */
+	enum TMobileCallMulticallBearerMode
+		{
+	/** Multicall is not supported. */
+		EMulticallNotSupported,
+	/** MS will accept incoming call and establish a connection using an existing bearer. */
+		EMulticallShareBearer,
+	/** MS will accept incoming call and establish a connection by creating a new bearer. */
+		EMulticallNewBearer
+		};
+
+	
+
+	class TMobileCallParamsV1 : public RCall::TCallParams
+/** Defines the parameters used for set-up of a call of any type. 
+*/
+		{
+	public:
+		IMPORT_C TMobileCallParamsV1();
+	public:
+	/** Call Id restriction setting to be used for this call.
+
+	@see TMobileCallIdRestriction */
+		TMobileCallIdRestriction iIdRestrict;
+	/** Closed User Group setting to be used for this call.
+	
+	@see TMobileCallCugV1 */
+		TMobileCallCugV1 iCug;
+	/** Specifies whether this call attempt is user initiated (EFalse) or a client initiated 
+	redial (ETrue). */
+		TBool iAutoRedial;
+		};
+
+/** A typedef'd packaged TMobileCallParamsV1 for passing through a generic API function 
+member. */
+	typedef TPckg<TMobileCallParamsV1> TMobileCallParamsV1Pckg;
+
+	
+ 
+ 	class TMobileCallParamsV2 : public TMobileCallParamsV1
+/** Defines the parameters used for set-up of a call of any type 
+for version v2.0 of the API.
+A new parameter (iBearerMode) is required to support Multicall.
+@publishedPartner
+@released 
+*/
+ 		{
+ 	public:
+ 		IMPORT_C TMobileCallParamsV2();
+ 	public:
+	/** The bearer mode. */
+ 		TMobileCallMulticallBearerMode iBearerMode;
+ 		};
+ 
+/** A typedef'd packaged TMobileCallParamsV1 for passing through a generic API 
+function member. */
+ 	typedef TPckg<TMobileCallParamsV2> TMobileCallParamsV2Pckg;
+ 
+	/***********************************************************************************/
+	//
+	// Mobile Call Data Functional Unit
+	//
+	/***********************************************************************************/
+
+/** In GSM mode, maps to list of supported speeds returned in response to AT+CBST=?. 
+In CDMA mode, maps to data rates supported by supported service options.
+
+@see TMobileCallDataCapsV1 */
+	enum TMobileCallDataSpeedCaps
+		{
+	/** Call can support autobauding. */
+		KCapsSpeedAutobauding = 0x00000001,
+	/** Call can support a speed of 2400bps. */
+		KCapsSpeed2400  = 0x00000002,
+	/** Call can support a speed of 4800bps. */
+		KCapsSpeed4800  = 0x00000004,
+	/** Call can support a speed of 9600bps. */
+		KCapsSpeed9600  = 0x00000008,
+	/** Call can support a speed of 14400bps. */
+		KCapsSpeed14400 = 0x00000010,
+	/** Call can support a speed of 19200bps. */
+		KCapsSpeed19200 = 0x00000020,
+	/** Call can support a speed of 28800bps. */
+		KCapsSpeed28800 = 0x00000040,
+	/** Call can support a speed of 32000bps. */
+		KCapsSpeed32000 = 0x00000080,
+	/** Call can support a speed of 33600bps. */
+		KCapsSpeed33600 = 0x00000100,
+	/** Call can support a speed of 38400bps. */
+		KCapsSpeed38400 = 0x00000200,
+	/** Call can support a speed of 43200bps. */
+		KCapsSpeed43200 = 0x00000400,
+	/** Call can support a speed of 48000bps. */
+		KCapsSpeed48000 = 0x00000800,
+	/** Call can support a speed of 56000bps. */
+		KCapsSpeed56000 = 0x00001000,
+	/** Call can support a speed of 57600bps. */
+		KCapsSpeed57600 = 0x00002000,
+	/** Call can support a speed of 64000bps. */
+		KCapsSpeed64000 = 0x00004000,
+	/** Call can support extended data speed capabilities. This flag is reserved for 
+	future expansion of API and should always be set to zero. */
+		KCapsSpeedExtended = 0x80000000		
+		};
+
+/** List of supported values of the <speed> parameter returned in response to AT+CBST=?
+
+Not applicable to CDMA mode
+
+@see TMobileDataCallParamsV1 */
+	enum TMobileCallDataProtocolCaps
+		{
+	/** Call can support V.22bis standard
+	
+	Modes: COMMON */
+		KCapsProtocolV22bis = 0x00000001,
+	/** Call can support V.32 standard.
+	
+	Modes: COMMON */
+		KCapsProtocolV32 = 0x00000002,
+	/** Call can support V.34 standard.
+	
+	Modes: COMMON */
+		KCapsProtocolV34 = 0x00000004,
+	/** Call can support V.110 standard.
+	
+	Modes: GSM/WCDMA */
+		KCapsProtocolV110 = 0x00000008,
+	/** Call can support V.120 standard.
+	
+	Modes: GSM/WCDMA */
+		KCapsProtocolV120 = 0x00000010,
+	/** Call can support bit transparent service.
+	
+	Modes: GSM/WCDMA */
+		KCapsProtocolBitTransparent = 0x00000020,
+	/** Call can support X31 flag stuffing standard.
+	
+	Modes: GSM/WCDMA */
+		KCapsProtocolX31FlagStuffing = 0x00000040,
+	/** Call can support both PIAF standards (32000bps and 64000bps).
+	
+	Modes: GSM/WCDMA */
+		KCapsProtocolPIAFS = 0x00000080,
+	/** Call can support request for Multimedia protocol (3G-324M) over a call to PSTN
+	with voice fallback.
+	
+	Modes: WCDMA */
+		KCapsPstnMultimediaVoiceFallback = 0x00000100,
+	/** Call can support request for Multimedia protocol (3G-324M) over a call to PSTN
+	without voice fallback
+	
+	Modes: WCDMA */
+		KCapsPstnMultimedia = 0x00000200,
+	/** Call can support request for Multimedia protocol (3G-324M) over a call to ISDN 
+	(voice fallback not possible).
+	
+	Modes: WCDMA */
+		KCapsIsdnMultimedia = 0x00000400,
+	/** Call can support extended data carrier capabilities. This flag is reserved for 
+	future expansion and should always be set to zero for v1.0 of this API.
+	
+	Modes: COMMON */
+		KCapsProtocolExtended = 0x80000000
+		};
+
+/** In GSM mode, maps to list of supported <name> returned in response to AT+CBST=? 
+In CDMA mode, maps to supported service options.
+
+Modes: COMMON
+
+@see TMobileCallDataCapsV1 */
+	enum TMobileCallDataServiceCaps
+		{
+		KCapsDataCircuitAsynchronous = 0x00000001,
+		KCapsDataCircuitAsynchronousRDI = 0x00000002,
+		KCapsDataCircuitSynchronous = 0x00000004,
+		KCapsDataCircuitSynchronousRDI = 0x00000008,
+	/** Call can support "PAD Access (asynchronous) (UDI)".
+	
+	Modes: GSM/WCDMA */
+		KCapsPADAsyncUDI = 0x00000010,
+	/** Call can support "PAD Access (asynchronous) (RDI)"
+
+	Modes: GSM/WCDMA */
+		KCapsPADAsyncRDI = 0x00000020,
+	/** Call can support "Packet Access (synchronous) (UDI)" 
+	
+	Modes: GSM/WCDMA */
+		KCapsPacketAccessSyncUDI = 0x00000040,
+	/** Call can support "Packet Access (synchronous) (RDI)".
+
+	Modes: GSM/WCDMA */
+		KCapsPacketAccessSyncRDI = 0x00000080,
+	/** Call can support extended data service capabilities. This flag is reserved for 
+	future expansion of this API and should always be set to zero for v1.0 of 
+	this API.
+	
+	Modes: COMMON */
+		KCapsServiceExtended = 0x80000000
+		};
+
+/** Maps to list of supported <ce> returned in response to AT+CBST=?
+
+Not applicable to CDMA mode.
+
+@see TMobileCallDataCapsV1 */
+	enum TMobileCallDataQoSCaps
+		{
+	/** Call can support a request for "transparent only" connection. */
+		KCapsTransparent = 0x00000001,
+	/** Call can support a request for "non-transparent only" connection. */
+		KCapsNonTransparent = 0x00000002,
+	/** Call can support a request for "transparent preferred" connection. */
+		KCapsTransparentPreferred = 0x00000004,
+	/** Call can support a request for "non-transparent preferred" connection. */
+		KCapsNonTransparentPreferred = 0x00000008
+		};
+
+/** Supported Air Interface User Rates. */
+	enum TMobileCallAiurCodingCaps
+		{
+	/** Air interface user rate of 4.8k is supported. */
+		KCapsAiurCoding48 = 0x01,
+	/** Air interface user rate of 9.6k is supported. */
+		KCapsAiurCoding96 = 0x04,
+	/** Air interface user rate of 14.4k is supported. */
+		KCapsAiurCoding144 = 0x08
+		};
+
+/** HSCSD coding capabilities.
+
+Modes: GSM/WCDMA */
+	enum TMobileCallTchCodingsCaps
+		{
+	/** Call supports HSCSD coding on 4.8K full rate data traffic channel. */
+		KCapsTchCoding48  = 0x00000001,
+	/** Call supports HSCSD coding on 9.6K full rate data traffic channel. */
+		KCapsTchCoding96  = 0x00000004,
+	/** Call supports HSCSD coding on 14.4K full rate data traffic channel. */
+		KCapsTchCoding144 = 0x00000008,
+	/** Call supports HSCSD coding on 28.8K full rate data traffic channel (only possible 
+	when 14.4K is supported). */
+		KCapsTchCoding288 = 0x00000010,
+	/** Call supports HSCSD coding on 32.0K full rate data traffic channel (only possible 
+	in a two-timeslot configuration). */
+		KCapsTchCoding320 = 0x00000020,
+	/** Call supports HSCSD coding on 43.2K full rate data traffic channel (only possible 
+	when 14.4K is supported). */
+		KCapsTchCoding432 = 0x00000040
+		};
+
+/** The call asymmetry capabilities.
+
+Modes: GSM/WCDMA
+
+@see TMobileCallDataCapsV1 */
+	enum TMobileCallAsymmetryCaps
+		{
+	/** Call supports "No Preference" option for asymmetry bias of a Non-Transparent
+	ECSD call. */
+		KCapsAsymmetryNoPreference= 0x00000001,
+	/** Call supports "Downlink bias" option for asymmetry bias of a Non-Transparent 
+	ECSD call. 
+	
+	This means 8-PSK modulation is preferred downlink and GMSK modulation uplink. */
+		KCapsAsymmetryDownlink = 0x00000002,
+	/** Call supports "Uplink bias" option for asymmetry bias of a Non-Transparent ECSD 
+	call. 
+	
+	This means 8-PSK modulation is preferred uplink and GMSK modulation downlink. */
+		KCapsAsymmetryUplink = 0x00000004
+		};
+
+/** The supported Call RLP versions.
+
+Modes: GSM/WCDMA
+
+@see TMobileCallDataCapsV1 */
+	enum TMobileCallRLPVersionCaps
+		{
+	/** Call supports the single link, basic RLP version 0. */
+		KCapsRLPSingleLinkVersion0 = 0x00000001,
+	/** Call supports the single link, extended RLP version 1. */
+		KCapsRLPSingleLinkVersion1 = 0x00000002,
+	/** Call supports the multi link, RLP version 2. */
+		KCapsRLPMultiLinkVersion2  = 0x00000004
+		};
+
+/** The supported V42bis options.
+
+Modes: GSM/WCDMA
+
+@see TMobileCallDataCapsV1 */
+	enum TMobileCallV42bisCaps
+		{
+	/** Call supports V42bis compression in initiator-responder direction. */
+		KCapsV42bisTxDirection = 0x00000001,
+	/** Call supports V42bis compression in responder-initiator direction. */
+		KCapsV42bisRxDirection = 0x00000002,
+	/** Call supports V42bis compression in both directions. */
+		KCapsV42bisBothDirections = 0x00000004
+		};
+
+	
+
+	class TMobileCallDataCapsV1 : public RMobilePhone::TMultimodeType
+	/** Defines the capabilities of a circuit switched data call. 
+	@publishedPartner
+	@released
+	*/
+		{
+	public:
+		IMPORT_C TMobileCallDataCapsV1();
+	public:
+	/** Data speed capabilities - a bit wise sum of the caps defined in TMobileCallDataSpeedCaps. */
+		TUint32	iSpeedCaps;
+	/** Data protocol capabilities - a bit wise sum of the caps defined in TMobileCallDataProtocolCaps. */
+		TUint32	iProtocolCaps;
+	/** Data service capabilities - a bit wise sum of the caps defined in TMobileCallDataServiceCaps. */
+		TUint32	iServiceCaps;
+	/** Data QoS capabilities - a bit wise sum of the caps defined in TMobileCallDataQoSCaps.
+	
+	Note: Only available in GSM/WCDMA mode. */
+		TUint32	iQoSCaps;
+	/** A boolean indicating whether or not the MS supports HSCSD for this call. If 
+	this attribute equals EFalse all the following attributes are invalid.
+
+	Note: Only available in GSM/WCDMA mode. */
+		TBool	iHscsdSupport;
+	/** For HSCSD: The multi-slot class supported. */
+		TInt	iMClass;
+	/** For HSCSD: The maximum supported number of time-slots in the receive (down-link) 
+	direction. */
+		TInt	iMaxRxTimeSlots;
+	/** For HSCSD: The maximum supported number of time-slots in the transmit (up-link) 
+	direction. */
+		TInt	iMaxTxTimeSlots;
+	/** For HSCSD: The maximum supported total number of receive and transmit time-slots 
+	that can be used at same time. */
+		TInt	iTotalRxTxTimeSlots;
+	/** For HSCSD: A bit-wise sum of the supported air interface channel codings defined 
+	in TMobileCallAiurCodingCaps. */
+		TUint32	iCodingCaps;
+	/** For HSCSD: A bit-wise sum of the supported asymmetry bias defined in TMobileCallAsymmetryCaps. */
+		TUint32 iAsymmetryCaps;
+	/** For HSCSD: A boolean indicating whether or not the MS supports automatic user 
+	initiated service level upgrading. */
+		TBool 	iUserInitUpgrade;
+	/** For HSCSD and CSD: A bit-wise sum of the supported Radio Link Protocol versions 
+	defined in TMobileCallRLPVersionCaps. */
+		TUint32	iRLPVersionCaps;
+	/** For HSCSD and CSD: A bit-wise sum of the supported V42bis compression capabilities 
+	defined in TMobileCallV42bisCaps . */
+		TUint32	iV42bisCaps;
+		};
+
+/** A typedef'd packaged TMobileCallDataCapsV1 for passing through a generic API 
+function member. */
+	typedef TPckg<TMobileCallDataCapsV1> TMobileCallDataCapsV1Pckg;
+
+	IMPORT_C TInt GetMobileDataCallCaps(TDes8& aCaps) const;
+	IMPORT_C void NotifyMobileDataCallCapsChange(TRequestStatus& aReqStatus, TDes8& aCaps) const;
+
+/** The call setup requested data speed.
+
+@see TMobileDataCallParamsV1 */
+	enum TMobileCallDataSpeed
+		{
+	/** Call set-up will request speed depending on data carrier chosen. */
+		ESpeedUnspecified,
+	/** Call set-up will request autobauding. */
+		ESpeedAutobauding,
+	/** Call set-up will request 2400bps. */
+		ESpeed2400,
+	/** Call set-up will request 4800bps. */
+		ESpeed4800,
+	/** Call set-up will request 9600bps. */
+		ESpeed9600,
+	/** Call set-up will request 14400bps. */
+		ESpeed14400,
+	/** Call set-up will request 19200bps. */
+		ESpeed19200,
+	/** Call set-up will request 28800bps. */
+		ESpeed28800,
+	/** Call set-up will request 32000bps. */
+		ESpeed32000,
+	/** Call set-up will request 33600bps. */
+		ESpeed33600,
+	/** Call set-up will request 38400bps. */
+		ESpeed38400,
+	/** Call set-up will request 43200bps. */
+		ESpeed43200,
+	/** Call set-up will request 48000bps. */
+		ESpeed48000,
+	/** Call set-up will request 56000bps. */
+		ESpeed56000,
+	/** Call set-up will request 57600bps. */
+		ESpeed57600,
+	/** Call set-up will request 64000bps. */
+		ESpeed64000
+		};
+
+/** The call set-up requested data protocol.
+
+Modes: GSM/WCDMA */
+	enum TMobileCallDataProtocol
+		{
+	/** Call set-up will request carrier depending on data speed chosen. */
+		EProtocolUnspecified,
+	/** Call set-up will request the V.22bis standard. */
+		EProtocolV22bis,
+	/** Call set-up will request the V.32 standard. */
+		EProtocolV32,
+	/** Call set-up will request the V.34 standard. */
+		EProtocolV34,
+	/** Call set-up will request the V.110 standard. */
+		EProtocolV110,
+	/** Call set-up will request the V.120 standard. */
+		EProtocolV120,
+	/** Call set-up will request the X31FlagStuffing standard. */
+		EProtocolX31FlagStuffing,
+	/** Call set-up will request the PIAFS standard. */
+		EProtocolPIAFS,
+	/** Call set-up will request the bit transparent service. */
+		EProtocolBitTransparent,
+	/** Call set-up will request a PSTN multimedia call with voice fallback if multimedia 
+	fails.
+	
+	WCDMA mode only. */
+		EProtocolPstnMultimediaVoiceFallback,
+	/** Call set-up will request a PSTN multimedia call.
+	
+	WCDMA mode only. */
+		EProtocolPstnMultimedia,
+	/** Call set-up will request a ISDN multimedia call.
+	
+	WCDMA mode only. */
+		EProtocolIsdnMultimedia
+		};
+
+/** The call setup requested data services.
+
+Modes: Common
+
+@see TMobileDataCallParamsV1 */
+	enum TMobileCallDataService
+		{
+	/** Call set-up will request its default service type.
+	
+	Modes: Common */
+		EServiceUnspecified,
+	/** Call set-up will request:
+	
+	GSM mode - Data circuit asynchronous (UDI or 3.1 KHz, ex PLMN) service 
+
+	In CDMA mode - Async Data service 
+	
+	Modes: Common */
+		EServiceDataCircuitAsync,
+	/** Call set-up will request Data circuit asynchronous (RDI) service.
+	
+	Modes: GSM/WCDMA */
+		EServiceDataCircuitAsyncRdi,
+	/** Call set-up will request Data circuit synchronous (UDI or 3.1 KHz, ex PLMN) 
+	service.
+	
+	Modes: GSM/WCDMA */
+		EServiceDataCircuitSync,
+	/** Call set-up will request Data circuit synchronous (RDI) service.
+	
+	Modes: GSM/WCDMA */
+		EServiceDataCircuitSyncRdi,
+	/** Call set-up will request PAD asynchronous (UDI) service.
+	
+	Modes: GSM/WCDMA */
+		EServicePADAsyncUDI,
+	/** Call set-up will request PAD asynchronous (RDI) service.
+	
+	Modes: GSM/WCDMA */
+		EServicePADAsyncRDI,
+	/** Call set-up will request Packet Access synchronous (UDI) service.
+	
+	Modes: GSM/WCDMA */
+		EServicePacketAccessSyncUDI,
+	/** Call set-up will request Packet Access synchronous (RDI) service.
+	
+	Modes: GSM/WCDMA */
+		EServicePacketAccessSyncRDI
+		};
+
+/** The call set-up requested quality of service (QoS).
+
+Modes: GSM/WCDMA
+
+@see TMobileDataCallParamsV1 */
+	enum TMobileCallDataQoS
+		{
+	/** Call set-up will request its default connection. */
+		EQoSUnspecified,
+	/** Call set-up will request a transparent connection. */
+		EQoSTransparent,
+	/** Call set-up will request a non-transparent connection. */
+		EQoSNonTransparent,
+	/** Call set-up will prefer a transparent connection. */
+		EQosTransparentPreferred,
+	/** Call set-up will prefer a non-transparent connection. */
+		EQosNonTransparentPreferred
+		};
+
+/** The call set-up requested RLP version.
+
+@see TMobileDataCallParamsV1 */
+	enum TMobileCallDataRLPVersion
+		{
+	/** Call set-up will request no RLP version. */
+		ERLPNotRequested,
+	/** Call set-up will request single link basic RLP (version 0). */
+		ERLPSingleLinkVersion0,
+	/** Call set-up will request single link extended RLP (version 1). */
+		ERLPSingleLinkVersion1,
+	/** Call set-up will prefer multi link RLP (version 2). */
+		ERLPMultiLinkVersion2
+		};
+
+/** The V.42bis parameters used in the call set-up of a V.42bis data call.
+
+@see TMobileDataCallParamsV1 */
+	enum TMobileCallDataV42bis
+		{
+	/** Call set-up will not request V.42bis compression. */
+		EV42bisNeitherDirection,
+	/** Call set-up will request V.42bis compression in initiator-responder direction 
+	only. */
+		EV42bisTxDirection,
+	/** Call set-up will request V.42bis compression in responder-initiator direction 
+	only. */
+		EV42bisRxDirection,
+	/** Call set-up will request V.42bis compression in both directions. */
+		EV42bisBothDirections
+		};
+
+	
+	
+
+	class TMobileDataCallParamsV1 : public TMobileCallParamsV1
+/** Defines the parameters used for setup of a circuit switched data call. 
+*/
+		{
+	public:
+		IMPORT_C TMobileDataCallParamsV1();
+	public:
+	/** The type of data service.
+	
+	@see TMobileCallDataService */
+		TMobileCallDataService iService;
+	/** The data transfer rate.
+
+	@see TMobileCallDataSpeed */
+		TMobileCallDataSpeed iSpeed;
+	/** The ITU-T standard modulation protocol or higher application protocol. */
+		TMobileCallDataProtocol iProtocol;
+	/** The quality of data service.
+	
+	@see TMobileCallDataQoS */
+		TMobileCallDataQoS iQoS;
+	/** The version of Radio Link Protocol.
+	
+	Modes: GSM/WCDMA
+	
+	@see TMobileCallDataRLPVersion */
+		TMobileCallDataRLPVersion iRLPVersion;
+	/** The IWF to MS windows size.
+	
+	Modes: GSM/WCDMA */
+		TInt iModemToMSWindowSize;
+	/** The MS window to IWF size.
+	
+	Modes: GSM/WCDMA */
+		TInt iMSToModemWindowSize;
+	/** The acknowledgement timer.
+	
+	Modes: GSM/WCDMA */
+		TInt iAckTimer;
+	/** The number of retransmission attempts.
+	
+	Modes: GSM/WCDMA */
+		TInt iRetransmissionAttempts;
+	/** The resequencing period in integer format.
+	
+	Modes: GSM/WCDMA */
+		TInt iResequencingPeriod;
+	/** The V42bis compression request parameter.
+	
+	@see TMobileCallDataV42bis */
+		TMobileCallDataV42bis iV42bisReq;
+	/** The number of codewords in the algorithm. */
+		TInt iV42bisCodewordsNum;
+	/** The maximum encodable data string length. */
+		TInt iV42bisMaxStringLength;
+		TBool iUseEdge; // True for ECSD
+		};
+
+/** A typedef'd packaged TMobileDataCallParamsV1 for passing through a generic API 
+function member. */
+	typedef TPckg<TMobileDataCallParamsV1> TMobileDataCallParamsV1Pckg;
+
+	
+	
+
+	class TMobileDataCallParamsV2 : public TMobileDataCallParamsV1
+/** Defines the parameters used for setup of a circuit switched data call for version 
+v2.0 of the API. 
+*/
+		{
+	public:
+		IMPORT_C TMobileDataCallParamsV2();
+	public:
+	/** The bearer mode. */
+		TMobileCallMulticallBearerMode iBearerMode;
+		};
+
+/** A typedef'd packaged TMobileDataCallParamsV2 for passing through a generic 
+API function member. */
+	typedef TPckg<TMobileDataCallParamsV2> TMobileDataCallParamsV2Pckg;
+
+/** The Air interface user rate.
+
+Modes: GSM/WCDMA. */
+	enum TMobileCallAiur
+		{
+	/** Air interface user rate is not set. */
+		EAiurBpsUnspecified,
+	/** Air interface user rate of 9.6Kbps. */
+		EAiurBps9600,
+	/** Air interface user rate of 14.4Kbps. */
+		EAiurBps14400,
+	/** Air interface user rate of 19.2Kbps. */
+		EAiurBps19200,
+	/** Air interface user rate of 28.8Kbps. */
+		EAiurBps28800,
+	/** Air interface user rate of 38.4Kbps. */
+		EAiurBps38400,
+	/** Air interface user rate of 43.2Kbps. */
+		EAiurBps43200,
+	/** Air interface user rate of 57.6Kbps. */
+		EAiurBps57600
+		};
+
+/** Call Asymmetry preferences.
+
+Modes: GSM/WCDMA
+
+@see TMobileHscsdCallParamsV1 */
+	enum TMobileCallAsymmetry
+		{
+	/** There is no preference for Asymmetry Bias. */
+		EAsymmetryNoPreference,
+	/** Downlink Bias is preferred. */
+		EAsymmetryDownlink,
+	/** Uplink Bias is preferred. */
+		EAsymmetryUplink
+		};
+
+/** The call channel coding used.
+
+Modes: GSM/WCDMA */
+	enum TMobileCallTchCoding
+		{
+	/** Channel coding is unspecified. */
+		ETchCodingUnspecified,
+	/** 4.8K full rate data traffic channel is used. */
+		ETchCoding48,
+	/** 9.6K full rate data traffic channel is used. */
+		ETchCoding96,
+	/** 14.4K full rate data traffic channel is used. */
+		ETchCoding144,
+	/** 28.8K full rate data traffic channel is used. */
+		ETchCoding288,
+	/** 32.0K full rate data traffic channel is used. */
+		ETchCoding320,
+	/** 43.2K full rate data traffic channel is used. */
+		ETchCoding432
+		};
+
+	
+
+	class TMobileDataRLPRangesV1 : public RMobilePhone::TMultimodeType
+/** Defines the parameters for minimum and maximum RLP parameter ranges.
+
+Modes: GSM/WCDMA 
+
+*/
+		{
+	public:
+		IMPORT_C TMobileDataRLPRangesV1();
+	public:
+	/** Maximum modem to MS window size value. */
+		TInt  iIWSMax;
+	/** Minimum modem to MS window size value. */
+		TInt  iIWSMin;
+	/** Maximum MS to modem window size value. */
+		TInt  iMWSMax;
+	/** Minimum MS to modem window size value. */
+		TInt  iMWSMin;
+	/** Maximum acknowledgement timer value. */
+		TInt  iT1Max;
+	/** Minimum acknowledgement timer value. */
+		TInt  iT1Min;
+	/** Maximum retransmission attempts value. */
+		TInt  iN2Max;
+	/** Minimum retransmission attempts value. */
+		TInt  iN2Min;
+	/** Maximum resequencing period value. */
+		TInt  iT4Max;
+	/** Minimum resequencing period value. */
+		TInt  iT4Min;
+		};
+
+/** A typedef'd packaged TMobileDataRLPRangesV1 for passing through a generic API 
+function member. */
+	typedef TPckg<TMobileDataRLPRangesV1> TMobileDataRLPRangesV1Pckg;
+
+	IMPORT_C void GetMobileDataCallRLPRange(TRequestStatus& aReqStatus, TInt aRLPVersion, TDes8& aRLPRange) const;
+	
+	class TMobileHscsdCallParamsV1 : public TMobileDataCallParamsV1
+/** The High Speed Circuit Switched Data parameters. 
+*/
+		{
+	public:
+		IMPORT_C TMobileHscsdCallParamsV1();
+	public:
+	/** The wanted Air Interface Rate for the HSCSD call being set-up.
+	
+	Modes: GSM/WCDMA
+
+	@see TMobileCallAiur */
+		TMobileCallAiur	iWantedAiur;
+	/** The wanted number of receive timeslots for the HSCSD call being set-up.
+	
+	Modes: GSM/WCDMA */
+		TInt iWantedRxTimeSlots;
+		TInt iMaxTimeSlots;
+	/** Bit-wise sum of acceptable air interface channel codings TMobileCallAiurCodingCaps 
+	for the HSCSD call being set-up.
+	
+	Modes: GSM/WCDMA */
+		TUint iCodings;
+	/** The wanted asymmetry bias for the HSCSD call being set-up.
+	
+	Modes: GSM/WCDMA
+	
+	@see TMobileCallAsymmetry */
+		TMobileCallAsymmetry  iAsymmetry;
+	/** A boolean indicating whether or not automatic user initiated service level upgrading 
+	is active for the HSCSD call being set-up. ETrue means enabled, EFalse means 
+	disabled.
+	
+	Modes: GSM/WCDMA */
+		TBool iUserInitUpgrade;
+		};
+
+/** A typedef'd packaged TMobileHscsdCallParamsV1 for passing through a generic 
+API function member. */
+	typedef TPckg<TMobileHscsdCallParamsV1> TMobileHscsdCallParamsV1Pckg;
+
+	class TMobileHscsdCallParamsV2 : public TMobileHscsdCallParamsV1
+/** Call parameters for High Speed Circuit Switched Data (HSCSD) for version v2.0 
+of the API. 
+
+*/
+		{
+	public:
+		IMPORT_C TMobileHscsdCallParamsV2();
+	public:
+	/** The bearer mode. */
+		TMobileCallMulticallBearerMode iBearerMode;
+		};
+
+/** A typedef'd packaged TMobileHscsdCallParamsV2 for passing through a generic 
+API function member. */
+	typedef TPckg<TMobileHscsdCallParamsV2> TMobileHscsdCallParamsV2Pckg;
+
+	IMPORT_C void SetDynamicHscsdParams(TRequestStatus& aReqStatus, TMobileCallAiur aAiur, TInt aRxTimeslots) const;
+
+	class TMobileCallHscsdInfoV1 : public RMobilePhone::TMultimodeType
+/** The HSCSD settings.
+
+Modes: GSM/WCDMA 
+
+*/
+		{
+	public:
+		IMPORT_C TMobileCallHscsdInfoV1();
+	public:
+	/** Current AIUR for the HSCSD call.
+	
+	@see TMobileCallAiur */
+		TMobileCallAiur	iAiur;
+	/** Current number of receive timeslots for the HSCSD call. */
+		TInt iRxTimeSlots;
+	/** Current number of transmit time slots for the HSCSD call. */
+		TInt iTxTimeSlots;
+	/** Current channel coding for the HSCSD call. */
+		TMobileCallTchCoding iCodings;
+		};
+
+/** A typedef'd packaged TMobileCallHscsdInfoV1 for passing through a generic API 
+function member. */
+	typedef TPckg<TMobileCallHscsdInfoV1> TMobileCallHscsdInfoV1Pckg;
+
+	IMPORT_C TInt GetCurrentHscsdInfo(TDes8& aHSCSDInfo) const;
+	IMPORT_C void NotifyHscsdInfoChange(TRequestStatus& aReqStatus, TDes8& aHSCSDInfo) const;
+
+	/***********************************************************************************/
+	//
+	// Multimedia Calls
+	//
+	/***********************************************************************************/
+
+	IMPORT_C void AnswerMultimediaCallAsVoice(TRequestStatus& aReqStatus, const TDesC8& aCallParams, TName& aCallName) const;
+	IMPORT_C void NotifyVoiceFallback(TRequestStatus& aReqStatus, TName& aCallName) const;
+
+	//
+	// Mobile Alternating Call Functional Unit
+	//
+
+	IMPORT_C void SwitchAlternatingCall(TRequestStatus& aReqStatus) const;
+	IMPORT_C void NotifyAlternatingCallSwitch(TRequestStatus& aReqStatus) const;
+
+	/***********************************************************************************/
+	//
+	// MobileCallControl functional unit
+	//
+	/***********************************************************************************/
+
+/** Mobile call control capabilites.
+
+Modes: Common */
+	enum TMobileCallControlCaps 
+		{
+		//KCapsData=0x00000001, // taken from etel.h
+		//KCapsFax=0x00000002,
+		//KCapsVoice=0x00000004,
+		//KCapsDial=0x00000008,
+		//KCapsConnect=0x00000010,
+		//KCapsHangUp=0x00000020,
+		//KCapsAnswer=0x00000040,
+		//KCapsLoanDataPort=0x00000080, 
+		//KCapsRecoverDataPort=0x00000100
+	/** Indicates that this call can be put on hold. This implies that the call is currently 
+	active and that there is no other held call. */
+		KCapsHold = 0x00000200,
+	/** Indicates that this call can be resumed. This implies that the call is currently 
+	on hold and that there is no other active call. 
+	
+	Modes: Common */
+		KCapsResume = 0x00000400,
+	/** Indicates that this call's state can be swapped to the opposite state. This
+	implies that this call is either active or held. There may be another call 
+	in the opposite state and if this is the case then both calls will be simultaneously 
+	swapped to their opposite state. 
+	
+	Modes: Common */
+		KCapsSwap = 0x00000800,
+	/** Indicates that this incoming call can be deflected to another destination. 
+	
+	Modes: GSM/WCDMA */
+		KCapsDeflect = 0x00001000,
+	/** Indicates that this call can be transferred to the remote party of another call. 
+	For this capability to be set there must be one active call and one held or 
+	dialing call.
+	
+	Modes: GSM/WCDMA */
+		KCapsTransfer = 0x00002000,
+	/** Indicates that this call can be joined either to another single call to form 
+	a conference call or to an existing conference call.
+	
+	Modes: Common */
+		KCapsJoin = 0x00004000,
+	/** Indicates that this call (within a conference call) can go into One to One mode. 
+	This action would put the rest of the conference call on hold. 
+	
+	Modes: GSM/WCDMA */
+		KCapsOneToOne = 0x00008000,
+	/** Indicates that the user can activate a CCBS request on this failed call set-up. 
+	
+	Modes: GSM/WCDMA */
+		KCapsActivateCCBS = 0x00010000,
+	/** Indicates that this call is part of an alternating call and the client can call 
+	SwitchAlternatingCall() on this call in order to switch it to its other mode.
+	
+	Modes: GSM/WCDMA */
+		KCapsSwitchAlternatingCall = 0x00020000,
+	/** Indicates that this call can use/create a new bearer. This means that multiple 
+	calls (multicall) can be active at the same time using no more that 7 bearers 
+	simultaneously. The other option is to swap with an active call, therefore 
+	it becomes held and shares the same bearer.
+	
+	Modes: WCDMA */
+		KCapsMulticall = 0x00040000
+		};
+
+
+/** Mobile call events capabilities.
+
+Modes: Common */
+	enum TMobileCallEventCaps
+		{
+	/** Indicates that local hold notifications are supported.
+	
+	Modes: Common */
+		KCapsLocalHold = 0x00000001,
+	/** Indicates that local resume notifications are supported. 
+	
+	Modes: Common */
+		KCapsLocalResume = 0x00000002,
+	/** Indicates that local deflect transfer notifications are supported. 
+	
+	Modes: GSM/WCDMA */
+		KCapsLocalDeflectCall = 0x00000004,
+	/** Indicates that local explicit transfer notifications are supported. 
+	
+	Modes: GSM/WCDMA */
+		KCapsLocalTransfer = 0x00000008,
+	/** Indicates that remote hold notifications are supported. 
+
+	Modes: GSM/WCDMA */
+		KCapsRemoteHold = 0x00000010,
+	/** Indicates that remote resume notifications are supported. 
+	
+	Modes: GSM/WCDMA */
+		KCapsRemoteResume = 0x00000020,
+	/** Indicates that remote termination notifications are supported. 
+	
+	Modes: Common */
+		KCapsRemoteTerminate = 0x00000040,
+	/** Indicates that remote conference invocation notifications are supported.
+	
+	Modes: GSM/WCDMA */
+		KCapsRemoteConferenceCreate = 0x00000080
+		};
+
+	
+
+	class TMobileCallCapsV1 : public RMobilePhone::TMultimodeType
+/** Defines the dynamic capabilities of a mobile call. 
+*/
+		{
+	public:
+		IMPORT_C TMobileCallCapsV1();
+	public:
+	/** Call control capability information - a bit wise sum of TMobileCallControlCaps 
+	constants */
+		TUint32 iCallControlCaps;
+	/** Call event capability information - a bit wise sum of TMobileCallEventCaps constants. */
+		TUint32 iCallEventCaps;
+		};
+
+/** A typedef'd packaged TMobileCallCapsV1 for passing through a generic API function 
+member. */
+	typedef TPckg<TMobileCallCapsV1> TMobileCallCapsV1Pckg;
+
+	IMPORT_C TInt GetMobileCallCaps(TDes8& aCaps) const;
+	IMPORT_C void NotifyMobileCallCapsChange(TRequestStatus& aReqStatus, TDes8& aCaps) const;
+
+	IMPORT_C void Hold(TRequestStatus& aReqStatus) const;
+	IMPORT_C void Resume(TRequestStatus& aReqStatus) const;
+	IMPORT_C void Swap(TRequestStatus& aReqStatus) const;
+	IMPORT_C void DialISV(TRequestStatus& aStatus,const TDesC8& aCallParams,const TTelNumberC& aTelNumber);
+	IMPORT_C void AnswerIncomingCallISV(TRequestStatus& aStatus,const TDesC8& aCallParams);
+
+/** The type of call deflection requested.
+
+@see Deflect() */
+	enum TMobileCallDeflect
+		{
+	/** Destination is not specified. */
+		EDeflectUnspecified,
+	/** Call will be deflected to voicemail. */
+		EDeflectVoicemail,
+	/** Call will be deflected to the pre-registered number for the call forwarding 
+	service. */
+		EDeflectRegisteredNumber,
+	/** Call will be deflected to the number supplied in the aDestination parameter. */
+		EDeflectSuppliedNumber
+		};
+
+	IMPORT_C void Deflect(TRequestStatus& aReqStatus, TMobileCallDeflect aDeflectType, const RMobilePhone::TMobileAddress& aDestination) const;
+	IMPORT_C void Transfer(TRequestStatus& aReqStatus) const;
+	IMPORT_C void GoOneToOne(TRequestStatus& aReqStatus) const;
+
+/** The mobile call events.
+
+Modes: Common */
+	enum TMobileCallEvent
+		{
+	/** The call has been placed on hold as a result of a local action. 
+	
+	Modes: Common */
+		ELocalHold,
+	/** The call has been resumed as a result of a local action. 
+	
+	Modes: Common */
+		ELocalResume,
+	/** The call has been deflected to another remote party as a result of a local action. 
+	
+	
+	Modes: GSM/WCDMA */
+		ELocalDeflectCall,
+	/** The call has been transferred to another remote party as a result of a local 
+	action. 
+	
+	Modes: Common */
+		ELocalTransfer,
+	/** The call has been placed on hold by the remote connected party. 
+	
+	Modes: GSM/WCDMA */
+		ERemoteHold,
+	/** The call has been resumed by the remote connected party. 
+	
+	Modes: GSM/WCDMA */
+		ERemoteResume,
+	/** The call has been terminated by the remote party. 
+	
+	Modes: Common */
+		ERemoteTerminated,
+	/** The call has been joined by the remote connected party to other call(s) to create/add 
+	to a conference call. 
+	
+	Modes: GSM/WCDMA */
+		ERemoteConferenceCreate,
+		ERemoteTransferring,
+		ERemoteTransferAlerting,
+	/** The outgoing call has been barred by the remote party. 
+	
+	Modes: GSM/WCDMA */
+		ERemoteBarred,
+	/** The call is being forwarded by the remote party. 
+	
+	Modes: GSM/WCDMA */
+		ERemoteForwarding,
+	/** The call is waiting at the remote end. 
+	
+	Modes: GSM/WCDMA */
+		ERemoteWaiting,
+	/** The outgoing call has been barred by the local party. 
+	
+	Modes: GSM/WCDMA */
+		ELocalBarred
+		};
+
+	IMPORT_C void NotifyCallEvent(TRequestStatus& aReqStatus, TMobileCallEvent& aEvent) const;
+
+/** Describes the possible call states. */
+	enum TMobileCallStatus
+		{
+	/** Indicates that the call status is unknown. */
+		EStatusUnknown,			// same as RCall::EStatusUnknown
+	/** Indicates that the call is idle. */
+		EStatusIdle,			// same as RCall::EStatusIdle
+		EStatusDialling,		// same as RCall::EStatusDialling
+	/** Indicates that the MT call is ringing but not answered yet by the local user. */
+		EStatusRinging,			// same as RCall::EStatusRinging
+	/** Indicates that the local user has answered the MT call but the network has not 
+	acknowledged the call connection yet. */
+		EStatusAnswering,		// same as RCall::EStatusAnswering
+	/** MO Call: the network notifies to the MS that the remote party is now ringing. */
+		EStatusConnecting,		// same as RCall::EStatusConnecting
+	/** Indicates that call is connected and active. */
+		EStatusConnected,		// same as RCall::EStatusConnected
+	/** Indicates that call is disconnecting. */
+		EStatusDisconnecting,	// same as RCall::EStatusHangingUp
+	/** Indicates that the call is disconnecting with inband data (to enable the network 
+	to send an audio tone), signifying that the call is not to be released until 
+	the user terminates the call. */
+		EStatusDisconnectingWithInband,
+	/** Indicates that call is undergoing temporary channel loss and it may or may not 
+	be reconnected. */
+		EStatusReconnectPending,
+	/** Indicates that the call is connected but on hold. */
+		EStatusHold,
+	/** Indicates that the call is the non-active half of an alternating call. This 
+	call is waiting for its active half or the remote end to switch alternating 
+	call mode. */
+		EStatusWaitingAlternatingCallSwitch,
+		EStatusTransferring,
+		EStatusTransferAlerting
+		};
+
+	IMPORT_C TInt GetMobileCallStatus(TMobileCallStatus& aStatus) const;
+	IMPORT_C void NotifyMobileCallStatusChange(TRequestStatus& aReqStatus, TMobileCallStatus& aStatus) const;
+
+	IMPORT_C void DialNoFdnCheck(TRequestStatus& aStatus,const TDesC& aTelNumber) const;
+	IMPORT_C void DialNoFdnCheck(TRequestStatus& aStatus,const TDesC8& aCallParams,const TDesC& aTelNumber) const;
+	
+	/**
+	Contains audio tone events.
+	*/
+	enum TMobileCallAudioToneEvent
+		{
+		/**
+		Stop audio tone.
+		*/
+		EAudioStop,
+		/**
+		Start audio tone.
+		*/
+		EAudioStart		
+		};
+		
+	/**
+	List of 3GPP defined supervisory audio tones taken from technical specification 3GPP TS 22.001 v4.0.0 Annex F.
+
+	This enumeration is based on the signal information element specified in Table 10.5.130/3GPP TS 24.008 v5.15.0
+	*/
+	enum TMobileCallAudioTones	
+		{
+		/** 
+		No tone.  Not defined in specification used for initialisation of 
+		iTone class member variable during TAudioToneV3 construction.
+		*/
+		ENoTone,
+		/**
+		Dial tone.
+		*/
+		EDialTone,
+		/**
+		Subscriber busy tone.
+		*/
+		ESubscriberBusyTone,
+		/**
+		Congestion tone.
+		*/
+		ECongestionTone,
+		/**
+		Radio path acknowledgement tone.
+		*/
+		ERadioPathAcknowledgement,
+		/**
+		Radio path not available tone.
+		*/
+		ERadioPathNotAvailable,
+		/**
+		Call dropped (Mobile Originated only).
+		*/
+ 		EMOCallDropped,
+ 		/**
+		Error special information.
+		*/
+ 		EErrorSpecialInformation,
+ 		/**
+		Number unobtainable.
+		*/
+ 		ENumberUnobtainable,
+ 		/**
+		Authentication failure.
+		*/
+ 		EAuthenticationFailure,
+ 		/**
+		Call waiting.
+		*/
+ 		ECallWaiting,
+ 		/**
+		Ringback tone.
+		*/
+		ERingback
+		};
+
+	class TAudioToneV3 :  public RMobilePhone::TMultimodeType
+	/**
+	Audio tone version 1 class. Contains information relating to the  call control playing of audio tones. 
+	Tones maybe generated by the network (in-band) or signalled to be played locally by the ME.
+	@publishedPartner
+	@released
+	*/
+		{
+	public:
+		IMPORT_C TAudioToneV3();
+		
+	public:
+		/**
+		Indicates whether the tone is starting or stopping playing.
+		*/
+		TMobileCallAudioToneEvent iEvent;
+		/**
+		Indicates which tone is to be played.
+		*/
+		TMobileCallAudioTones	iTone;
+		/**
+		Indicates whether the tone is played by the network or is to be played locally by the ME.
+		*/
+		TBool iPlayedLocally; 
+		};
+
+	/**
+	Packaging typedef for TAudioToneV3 class.
+	*/
+	typedef TPckg<TAudioToneV3> TAudioToneV3Pckg;
+	
+	IMPORT_C void NotifyAudioToneEvent(TRequestStatus& aReqStatus, TDes8& aToneInfo) const;
+
+	/***********************************************************************************/
+	//
+	// MobilePrivacy functional unit
+	//
+	/***********************************************************************************/
+
+	IMPORT_C TInt SetPrivacy(RMobilePhone::TMobilePhonePrivacy aPrivacySetting) const;
+	IMPORT_C void NotifyPrivacyConfirmation(TRequestStatus& aReqStatus, RMobilePhone::TMobilePhonePrivacy& aPrivacySetting) const;
+
+	/***********************************************************************************/
+	//
+	// MobileTrafficChannel function unit
+	//
+	/***********************************************************************************/
+
+/** Call traffic channels.
+
+Modes: CDMA */
+	enum TMobileCallTch
+		{
+	/** The traffic channel of the call is unknown. */
+		ETchUnknown,
+	/** The call has a digital traffic channel */
+		ETchDigital,
+	/** The call has an analog traffic channel */
+		ETchAnalog
+		};
+
+	IMPORT_C TInt SetTrafficChannel(TMobileCallTch aTchRequest) const;
+	IMPORT_C void NotifyTrafficChannelConfirmation(TRequestStatus& aReqStatus, TMobileCallTch& aTchType) const;
+
+	/***********************************************************************************/
+	//
+	// MobileCallInformation functional unit
+	//
+	/***********************************************************************************/
+
+	/**
+	Remote party Identity status.
+
+	Modes: Common
+
+	@see TMobileCallRemotePartyInfoV1
+	*/
+	enum TMobileCallRemoteIdentityStatus
+		{
+		/**
+		The remote party's identity can not be determined.  Calling
+		party's Binary Coded Decimal (BCD) number is not available.
+		Cause of No CLI is "unavailable".
+		*/
+		ERemoteIdentityUnknown,
+
+		/**
+		The remote party's identity, or BCD number, is available.
+		However, cause of No CLI has not been set.
+		*/
+		ERemoteIdentityAvailable,
+
+		/**
+		The remote party has suppressed the transmission of its
+		identity; i.e. their BCD number is not available.  Cause of No
+		CLI is "reject by user".
+		*/
+		ERemoteIdentitySuppressed,
+		/**
+		The remote party's identity, or BCD number, is available.  The
+		cause of No CLI is "reject by user".
+
+		To be used where the network has specified that displaying of
+		CLI information of the remote party has been rejected by the
+		caller but the TMobileCallRemotePartyInfoV1::iRemoteNumber
+		parameter has been populated with some other string which may
+		be of use to the client.
+		*/
+		ERemoteIdentityAvailableNoCliRejectedByUser,
+
+		/**
+		The remote party's identity is available; a BCD number is
+		available.  The cause of No CLI is "Interaction with other
+		service".
+
+		To be used where the network has specified that CLI information
+		of the remote party is not available due to ineraction with
+		another service.  However, the
+		TMobileCallRemotePartyInfoV1::iRemoteNumber parameter has been
+		populated with some other string which may be of use to the
+		client.
+		*/
+		ERemoteIdentityAvailableNoCliInteractionWithOtherService,
+		/**
+		The remote party's identity, or BCD number, is unavailable.
+		Cause of No CLI is "interaction with other service".
+		*/
+		ERemoteIdentityUnavailableNoCliInteractionWithOtherService,
+
+		/**
+		The remote party's identity, or BCD number, is available.
+		Cause of No CLI is "Coin Line/ Payphone".
+
+		To be used where the network has specified that CLI information
+		of the remote party is not available as the caller is calling
+		from a coin/ payphone.  However, the
+		TMobileCallRemotePartyInfoV1::iRemoteNumber parameter has been
+		populated with some other string which may be of use to the
+		client.
+		*/
+		ERemoteIdentityAvailableNoCliCoinOrPayphone,
+		/**
+		The remote party's identity, or BCD number, is not available.
+		Cause of No CLI is "Coin Line/ Payphone".
+		*/
+		ERemoteIdentityUnavailableNoCliCoinOrPayphone,
+
+		/**
+		The remote party's identity, or BCD number, is available.
+		Cause of No CLI is "unavailable".
+
+		To be used where the network has specified that the CLI
+		information of the remote party is not available but the
+		TMobileCallRemotePartyInfoV1::iRemoteNumber parameter has been
+		populated with some other string which may be of use to the
+		client.
+		*/
+		ERemoteIdentityAvailableNoCliUnavailable
+		};
+
+
+	/**
+	The direction of the mobile call.
+
+	Modes: Common
+
+	@see TMobileCallRemotePartyInfoV1
+	*/
+	enum TMobileCallDirection
+		{
+	/** The direction of the call is unknown. */
+		EDirectionUnknown,
+	/** The call was originated by this phone, i.e. it is an outgoing call. */
+		EMobileOriginated,
+	/** The call was terminated by this phone, i.e. it is an incoming call. */
+		EMobileTerminated
+		};
+
+	enum { KCallingNameSize=80 };
+
+	
+
+	class TMobileCallRemotePartyInfoV1 : public RMobilePhone::TMultimodeType
+/** Defines information about the remote party of a mobile call. 
+*/
+		{
+	public:
+		IMPORT_C TMobileCallRemotePartyInfoV1();
+	public:
+	/** Indicates whether the remote party information in the rest of this structure 
+	is valid or not.
+	
+	Modes: Common
+	
+	@see TMobileCallRemoteIdentityStatus */
+		TMobileCallRemoteIdentityStatus iRemoteIdStatus;
+	/** The direction of the call and hence the role of the remote party, i.e. if the 
+	call is mobile originated then the remote party is the called party whereas 
+	if the call is mobile terminated then the remote party is the calling party.
+	
+	Modes: Common
+	
+	@see TMobileCallDirection */
+		static TMobileCallDirection iDirection;
+	/** The phone number of the remote party if available.
+	
+	Modes: Common
+	
+	@see RMobilePhone::TMobileAddress */
+		RMobilePhone::TMobileAddress iRemoteNumber;
+	/** Calling party name available through the CNAP supplementary service (if provisioned). 
+	
+	
+	Modes: Common */
+		TBuf<KCallingNameSize> iCallingName;
+		};
+
+/** A typedef'd packaged TMobileCallRemotePartyInfoV1 for passing through a generic 
+API function member. */
+	typedef TPckg<TMobileCallRemotePartyInfoV1> TMobileCallRemotePartyInfoV1Pckg;
+
+	IMPORT_C void NotifyRemotePartyInfoChange(TRequestStatus& aReqStatus, TDes8& aRemotePartyInfo) const;
+
+/** Determines which fields in the class are valid.
+
+@see TMobileCallInfoV1 */
+	enum TMobileCallInfoFlags
+		{
+	/** The iStartTime field is valid in the call info class.
+	
+	Modes: COMMON */
+		KCallStartTime		= 0x00000001,
+	/** The iDuration field is valid in the call info class.
+	
+	Modes: COMMON */
+		KCallDuration		= 0x00000002,
+	/** The iCallId field is valid in the call info class.
+	
+	Modes: COMMON */
+		KCallId				= 0x00000004,
+	/** The iRemoteParty field is valid in the call info class.
+	
+	Modes: COMMON */
+		KCallRemoteParty	= 0x00000008,
+	/** The iDialledParty field is valid in the call info class.
+	
+	Modes: COMMON */
+		KCallDialledParty	= 0x00000010,
+	/** The iExitCode field is valid in the call info class.
+	
+	Modes: COMMON */
+		KCallExitCode		= 0x00000020,
+	/** The iEmergency field is valid in the call info class.
+	
+	Modes: COMMON */
+		KCallEmergency		= 0x00000040,
+	/** The iForwarded field is valid in the call info class.
+	
+	Modes: COMMON */
+		KCallForwarded		= 0x00000080,
+	/** The iPrivacy field is valid in the call info class.
+	
+	Modes: CDMA */
+		KCallPrivacy		= 0x00000100,
+	/** The iTch field is valid in the call info class.
+	
+	Modes: CDMA */
+		KCallTch			= 0x00000200,
+	/** The iAlternatingCall field is valid in the call info class.
+	
+	Modes: GSM/WCDMA */
+		KCallAlternating	= 0x00000400,
+		KCallSecurity		= 0x00000800
+		};
+
+	
+
+	class TMobileCallInfoV1 : public RMobilePhone::TMultimodeType
+/** Defines general information about a mobile call. 
+*/
+		{
+	public:
+		IMPORT_C TMobileCallInfoV1();
+	public:
+	/** A bit-wise sum of TMobileCallInfoFlags indicating which of the following optional 
+	fields contain valid data. */
+		TUint32 iValid;
+	/** The call service (voice, data, fax, aux. voice) that this call provides.
+	
+	@see RMobilePhone::TMobileService */
+		RMobilePhone::TMobileService iService;
+	/** The mobile call status.
+	
+	@see TMobileCallStatus */
+		static TMobileCallStatus iStatus;
+	/** The call ID number assigned to an ongoing call. Will equal -1 if the call does 
+	not have an allocated ID. */
+		TInt iCallId;
+	/** The reason for termination of a finished call. Will equal KErrNone if the call 
+	ended normally and KErrNotFound if the call has not ended. */
+		TInt iExitCode;
+	/** ETrue if the call is an emergency call or EFalse if it is not. */
+		static TBool iEmergency;
+	/** For a MT call, this attribute equals ETrue if the call has been forwarded to 
+	this phone or EFalse if it has not. For a MO call, this attribute equals ETrue 
+	if the call has been forwarded to another destination or EFalse if it has 
+	not. If the phone can not determine whether the call has been forwarded or 
+	not then the attribute will return EFalse. */
+		TBool iForwarded;
+	/** This attribute indicates whether privacy is on or off for this call.
+	
+	@see RMobilePhone::TMobilePhonePrivacy */
+		RMobilePhone::TMobilePhonePrivacy iPrivacy;
+	/** This attribute indicates whether this call is an alternating call or not.
+	
+	@see RMobilePhone::TMobilePhoneAlternatingCallMode */
+		RMobilePhone::TMobilePhoneAlternatingCallMode iAlternatingCall;
+	/** The current duration of the call.
+	
+	@see TTimeIntervalSeconds */
+		TTimeIntervalSeconds iDuration;
+	/** This attribute indicates whether a digital or analog traffic channel is being 
+	used for this call.
+	
+	@see TMobileCallTch */
+		TMobileCallTch iTch;
+	/** Information about remote party of a connected call.
+	
+	@see TMobileCallRemotePartyInfoV1 */
+		TMobileCallRemotePartyInfoV1 iRemoteParty;
+	/** The original number (including DTMF) dialled for an outgoing call.
+	
+	@see RMobilePhone::TMobileAddress */
+		RMobilePhone::TMobileAddress iDialledParty;
+	/** The time and date the call started.
+	
+	@see TDateTime */
+		TDateTime iStartTime;
+	/** The name of the call.
+	
+	@see TName */
+		TName iCallName;
+	/** The name of the line on which the call is open.
+	
+	@see TName */
+		TName iLineName;
+		};
+
+/** A typedef'd packaged TMobileCallInfoV1 for passing through a generic API function 
+member. */
+	typedef TPckg<TMobileCallInfoV1> TMobileCallInfoV1Pckg;
+	
+	class TMobileCallInfoV3 : public TMobileCallInfoV1
+	/**
+	Extends the TMobileCallInfoV1 claass to include extra call info parameter relating to network security.
+	@publishedPartner
+	@released
+	*/
+		{
+	public:
+		IMPORT_C TMobileCallInfoV3();
+	public:
+		/**
+		Indicates whether Ciphering Status of a call is enabled or disabled. 
+		*/
+		RMobilePhone::TMobilePhoneNetworkSecurity  iSecurity;
+		};
+		
+	typedef TPckg<TMobileCallInfoV3> TMobileCallInfoV3Pckg;
+
+	IMPORT_C TInt GetMobileCallInfo(TDes8& aCallInfo) const;
+
+	/***********************************************************************************/
+	//
+	// MobileCallEmergency functional unit
+	//
+	/***********************************************************************************/
+
+	IMPORT_C void DialEmergencyCall(TRequestStatus& aReqStatus, const TDesC& aNumber) const;
+
+	/***********************************************************************************/
+	//
+	// MobileCallCompletion
+	//
+	/***********************************************************************************/
+
+	IMPORT_C void ActivateCCBS(TRequestStatus& aReqStatus, TInt& aIndex) const;
+	IMPORT_C TInt RejectCCBS() const;
+		//
+	// User-To-User Signalling Functional Unit
+	//
+	/***********************************************************************************/
+
+/** The UUS capabilities of the call.
+
+Modes: GSM/WCDMA. */
+	enum TMobileCallUUSCaps			// UUS capabilities of the call
+		{
+	/** Indicates that MS supports UUS1 implicit request. */
+		KCapsSetupUUS1Implicit=0x00000001,
+	/** Indicates that MS supports UUS1 explicit request. */
+		KCapsSetupUUS1Explicit=0x00000002,
+	/** Indicates that MS supports UUS2 request. */
+		KCapsSetupUUS2=0x00000004,
+	/** Indicates that MS supports UUS3 request. */
+		KCapsSetupUUS3=0x00000008,
+	/** Indicates that MS supports activating more than one UUS request at a time. */
+		KCapsSetupMultipleUUS=0x00000010,
+	/** Indicates that UUS1 is active for this call. */
+		KCapsActiveUUS1=0x00000020,
+	/** Indicates that UUS2 is active for this call. */
+		KCapsActiveUUS2=0x00000040,
+	/** Indicates that UUS3 is active for this call. */
+		KCapsActiveUUS3=0x00000080
+		};
+
+	IMPORT_C TInt GetUUSCaps(TUint32& aCaps) const;
+	IMPORT_C void NotifyUUSCapsChange(TRequestStatus& aReqStatus, TUint32& aCaps) const;
+
+/** UUS Service requests.
+
+Modes: GSM/WCDMA */
+	enum TMobileCallUUSReqs			// UUS Service requests
+		{
+	/** UUS1 is implicitly requested. */
+		KUUS1Implicit=0x00000001,
+	/** UUS1 is explicitly requested, but it is not mandatory for this call to proceed. */
+		KUUS1ExplicitRequested=0x00000002,
+	/** UUS1 is explicitly requested and it is mandatory for this call to proceed. */
+		KUUS1ExplicitRequired=0x00000004,
+	/** UUS2 is (explicitly) requested, but it is not mandatory for this call to proceed. */
+		KUUS2Requested=0x00000008,
+	/** UUS2 is (explicitly) requested and it is mandatory for this call to proceed. */
+		KUUS2Required=0x00000010,
+	/** UUS3 is (explicitly) requested, but it is not mandatory for this call to proceed. */
+		KUUS3Requested=0x00000020,
+	/** UUS3 is (explicitly) requested and it is mandatory for this call to proceed. */
+		KUUS3Required=0x00000040
+		};
+
+	enum 
+		{
+		KMaxUUISize = 129,
+		};
+
+/** Buffer for the UUI element. */
+	typedef TBuf<KMaxUUISize> TMobileCallUUI;
+
+	class  TMobileCallUUSRequestV1 : public RMobilePhone::TMultimodeType
+/** The mobile Call User-to-User Signaling request. 
+*/
+		{
+	public:
+		IMPORT_C  TMobileCallUUSRequestV1();
+	public:
+	/** This field indicates whether the specified service is requested or required 
+	for the call. */
+		TUint             iServiceReq;
+	/** The UUI element. This field only contains data if iServiceReq indicates UUS1.
+	
+	@see TMobileCallUUI */
+		TMobileCallUUI	  iUUI;
+		};
+	
+/** A typedef'd packaged TMobileCallUUSRequestV1 for passing through a generic API 
+function member. */
+	typedef TPckg<TMobileCallUUSRequestV1> TMobileCallUUSRequestV1Pckg;
+
+	IMPORT_C void ActivateUUS(TRequestStatus& aReqStatus, const TDesC8& aUUSRequest) const;
+	IMPORT_C void SendUUI(TRequestStatus& aReqStatus, TBool aMore, const TMobileCallUUI& aUUI) const;
+	IMPORT_C void ReceiveUUI(TRequestStatus& aReqStatus, TMobileCallUUI& aUUI) const;
+	IMPORT_C void HangupWithUUI(TRequestStatus& aReqStatus, const TMobileCallUUI& aUUI) const;
+	IMPORT_C void AnswerIncomingCallWithUUI(TRequestStatus& aReqStatus, const TDesC8& aCallParams, const TMobileCallUUI& aUUI) const;
+	
+	/***********************************************************************************/
+	//
+	// Etel 3rd Party v1.0 Parameter classes
+	//
+	/***********************************************************************************/
+	
+	class TEtel3rdPartyMobileCallParamsV1 : public RCall::TCallParams
+/** Defines the parameters used to set-up of a call originated from an ETel 3rd Party client. 
+@publishedPartner
+@released
+*/
+		{
+	public:
+		IMPORT_C TEtel3rdPartyMobileCallParamsV1();
+	public:
+	/** Call Id restriction setting to be used for this call.
+	
+	@see TMobileCallIdRestriction */
+		TMobileCallIdRestriction iIdRestrict;
+	/** Specifies whether this call attempt is user initiated (EFalse) or a client initiated 
+	redial (ETrue). */
+		TBool iAutoRedial;		
+		};
+		
+/** A typedef'd packaged TEtel3rdPartyMobileCallParamsV1 for passing through a generic API 
+function member. */
+	typedef TPckg<TEtel3rdPartyMobileCallParamsV1>TEtel3rdPartyMobileCallParamsV1Pckg;	
+
+	
+private:
+	RMobileCall(const RMobileCall& aCall);
+	CMobileCallPtrHolder* iMmPtrHolder;
+protected:
+	IMPORT_C void ConstructL();
+	IMPORT_C void Destruct();
+	};
+
+
+/*********************************************************/
+//
+// Line based functionality (RMobileLine)
+// 
+/*********************************************************/
+
+
+
+class CMobileLinePtrHolder;
+
+class RMobileLine : public RLine
+/** Provides access to the functionality associated with a specific mobile line. 
+*/
+	{
+public:
+	IMPORT_C RMobileLine();
+
+	/***********************************************************************************/
+	//
+	// MobileLineStatus functional unit
+	// 
+	/***********************************************************************************/
+
+	IMPORT_C TInt GetMobileLineStatus(RMobileCall::TMobileCallStatus& aStatus) const;
+	IMPORT_C void NotifyMobileLineStatusChange(TRequestStatus& aReqStatus, RMobileCall::TMobileCallStatus& aStatus) const;
+
+	//
+	// Additional Caps
+	//
+/** Enumerated auxiliary capabilities. */
+	enum TMobileLineAdditionalCaps
+		{
+	/** Indicates whether the line is a Primary or Auxiliary voice line offset added 
+	so that core Etel and additional line caps can be returned in one TUint. */
+		KCapsAuxVoice=0x00000008	
+		};
+
+private:
+	RMobileLine(const RMobileLine& aLine);
+	CMobileLinePtrHolder* iMmPtrHolder;
+protected:
+	IMPORT_C void ConstructL();
+	IMPORT_C void Destruct();
+	};
+
+
+/*********************************************************/
+//
+// SMS Messaging (RMobileSmsMessaging)
+// 
+/*********************************************************/
+
+
+
+class CMobilePhoneSmspList;
+class CSmsMessagingPtrHolder;
+
+class RMobileSmsMessaging : public RTelSubSessionBase
+/** Provides client access to SMS messaging functionality provided by TSY.
+@publishedPartner
+@released 
+*/
+	{
+public:
+
+	friend class CRetrieveMobilePhoneSmspList;
+
+	IMPORT_C RMobileSmsMessaging();
+
+	IMPORT_C TInt Open(RMobilePhone& aPhone);
+	IMPORT_C void Close();
+
+/** Defines capabilities of SMS messaging.
+
+Modes: GSM/WCDMA */
+	enum TMobileSmsModeCaps
+		{
+	/** SMS is supported in GSM and WCDMA modes. SMS are sent across MM ETel API in 
+	a GSM 03.40 TPDU format.
+	
+	Modes: GSM/WCDMA */
+		KCapsGsmSms=0x00000001,
+	/** SMS is supported in CDMA mode. SMS are sent across MM ETel API in a IS-637 
+	Teleservice message PDU format. 
+	
+	Modes: CDMA */
+		KCapsCdmaSms=0x00000002
+		};
+
+/** Defines SMS control capabilities.
+
+Modes: Common */
+	enum TMobileSmsControlCaps
+		{
+	/** TSY supports receiving incoming SMS that have been stored and acknowledged 
+	by the phone prior to forwarding to the TSY. If this flag is set then KCapsReceiveEither 
+	will not be set and the client can receive stored messages only while the 
+	TSY-phone link is in "receive stored" mode.
+	
+	Modes: Common */
+		KCapsReceiveStored=0x00000001,
+	/** TSY supports receiving incoming SMS that have been acknowledged by the phone 
+	but have NOT already been stored. It is the client's responsibility to do 
+	the storage. If this flag is set then KCapsReceiveEither will not be set and 
+	the client can receive unstored messages only while the TSY-phone link is 
+	in "receive unstored with phone ack" mode.
+	
+	Modes: Common */
+		KCapsReceiveUnstoredPhoneAck=0x00000002,
+	/** TSY supports receiving incoming SMS that have NOT already been stored and acknowledged
+	by the phone. It is the client's responsibility to do both the storage and 
+	the acknowledgment or rejection. If this flag is set then KCapsReceiveEither 
+	will not be set and the client can receive unstored messages only while the 
+	TSY-phone link is in "receive unstored with client ack" mode.
+	
+	Modes: Common */
+		KCapsReceiveUnstoredClientAck=0x00000004,
+	/** TSY supports receiving either stored or unstored incoming SMS at any time. 
+	If this flag is set then any other KCapsReceive... flags will not be set and 
+	the client can receive stored or unstored messages while the TSY-phone link 
+	is in "receive either" mode.
+	
+	Modes: Common */
+		KCapsReceiveEither=0x00000008,
+	/** TSY supports creating a default acknowledgment or rejection TPDU using only 
+	a "cause code" supplied by the client. If this flag is not set then the client 
+	must supply the full ack or nack TPDU if it calls RMobileSmsMessaging::AckSmsStored() 
+	or RMobileSmsMessaging::NackSmsStored().
+	
+	Modes: Common */
+		KCapsCreateAck=0x00000010,
+	/** TSY supports sending SMS messages but does not support returning the service 
+	centre's acknowledgment of the submitted message to the client.
+	
+	Modes: Common */
+		KCapsSendNoAck=0x00000020,
+	/** TSY supports sending SMS messages and also supports returning the service centre's 
+	acknowledgment of the submitted message to the client.
+	
+	Modes: GSM/WCDMA */
+		KCapsSendWithAck=0x00000040,
+	/** TSY supports retrieval of the SMS parameter list.
+	
+	Modes: GSM/WCDMA */
+		KCapsGetSmspList=0x00000080,
+	/** TSY supports storage of the SMS parameter list
+	
+	Modes: GSM/WCDMA */
+		KCapsSetSmspList=0x00000100
+		};
+
+	class TMobileSmsCapsV1 : public RMobilePhone::TMultimodeType
+/** Defines capabilities of SMS messaging.
+*/
+		{
+	public:
+		IMPORT_C TMobileSmsCapsV1();
+
+	/** Sum of TMobileSmsModeCaps constants.
+	
+	Modes: Common */
+		TUint32 iSmsMode;
+	/** Sum of TMobileSmsControlCaps constants.
+	
+	Modes: Common */
+		TUint32 iSmsControl;
+		};
+
+/** A typedef'd packaged TMobileSmsCapsV1 for passing through a generic API member 
+function. */
+	typedef TPckg<TMobileSmsCapsV1> TMobileSmsCapsV1Pckg;
+
+	IMPORT_C TInt GetCaps(TDes8& aCaps) const;
+
+	// Definitions for sizes of TPDU and User Data fields
+	enum 
+		{ 
+		KGsmTpduSize = 165,		// 140 bytes user data + 25 bytes TPDU header
+		KCdmaTpduSize  = 256	// Max size of Bearer Data in Transport Layer message
+		};
+
+/** A typedef'd buffer for GSM or WCDMA message data. */
+	typedef TBuf8<KGsmTpduSize>			TMobileSmsGsmTpdu;
+/** A typedef'd buffer for CDMA message data. */
+	typedef TBuf8<KCdmaTpduSize>		TMobileSmsCdmaTpdu;
+
+	/***********************************************************************************/
+	//
+	// Enum used by TSY to distinguish which SMS attribute class is used by client
+	//
+	/***********************************************************************************/
+
+/** Used by TSY to distinguish which SMS attribute class is used by client.
+
+Modes: Common
+
+@see RMobileSmsMessaging::TMobileSmsSendAttributesV1 */
+	enum TMobileSmsAttributeExtensionId
+		{
+	/** The iExtensionId contents indicate that the packaged class is a TMobileSmsAttributesV1. */
+		KETelMobileSmsAttributesV1=KETelExtMultimodeV1,
+	/** The iExtensionId contents indicate that the packaged class is a TMobileSmsReceiveAttributesV1. */
+		KETelMobileSmsReceiveAttributesV1,
+	/** The iExtensionId contents indicate that the packaged class is a TMobileSmsSendAttributesV1. */
+		KETelMobileSmsSendAttributesV1,
+	/** The iExtensionId contents indicate that the packaged class is a TMobileSmsCdmaSendAttributesV4. */
+		KETelMobileSmsCdmaSendAttributesV4=KETelExtMultimodeV4
+		};
+
+/** Defines common attributes of all SMS messages.
+
+Modes: CDMA
+
+@see TMobileSmsAttributesV1 */
+	enum TMobileSmsAttributeFlags
+		{
+	/** The iCdmaTeleservice field is valid in the attribute class.
+	
+	Modes: CDMA */
+		KCdmaTeleservice = 0x00000001,
+	/** The iCdmaServiceCategory field is valid in the attribute class.
+	
+	Modes: CDMA */
+		KCdmaServiceCategory = 0x00000002,
+	/** The iGsmServiceCentre field is valid in the attribute class.
+	
+	Modes: GSM/WCDMA */
+		KGsmServiceCentre = 0x00000004,
+	/** The iDataFormat field is valid in the attribute class.
+	
+	Modes: Common */
+		KSmsDataFormat = 0x00000008,	
+	/** The iOriginator or iDestination field is valid in the attribute class.
+	
+	Modes: Common */
+		KRemotePartyInfo = 0x00000010,
+	/** The iStatus field is valid in the attribute class.
+	
+	Modes: Common */
+		KIncomingStatus = 0x00000020,
+	/** The iStore and iStoreIndex fields are valid in the attribute class.
+	
+	Modes: Common */
+		KStorageLocation = 0x00000040,
+	/** The iMsgRef field is valid in the attribute class.
+
+	Modes: Common */
+		KMessageReference = 0x00000080,
+	/** The iSubmitReport field is valid in the attribute class.
+	
+	Modes: GSM/WCDMA */
+		KGsmSubmitReport = 0x00000100,
+	/** The iMore field is valid in the attribute class.
+	
+	Modes: Common */
+		KMoreToSend = 0x00000200,
+	/** Indicates to the TSY that it should keep the traffic channel open since there is
+	    another message ready to be sent immediately after this one (typically used when
+	    sending messages to multiple recipients). TSY should then keep the channel open 
+	    until a message is sent with this bit cleared.
+	
+	Modes: CDMA */
+		KCdmaKeepChannelOpen = 0x00000400,
+	/** Indicates to the TSY that it must wait for the Transport Layer Acknowledgement from the network
+	
+	Modes: CDMA */
+		KCdmaTLAckRequired = 0x00000800,
+	/** The iAddressAuthentication field is valid in the attribute class.
+	
+	Modes: CDMA */
+		KCdmaAddressAuthentication = 0x00001000
+		};
+
+/** Defines the SMS data format.
+
+Modes: Common */
+	enum TMobileSmsDataFormat
+		{
+	/** The format is not specified.
+
+	Modes: Common */
+		EFormatUnspecified,
+	/** The message data format complies to a SMS TPDU coded as octets according to 
+	GSM 03.40.
+	
+	Modes: GSM/WCDMA */
+		EFormatGsmTpdu,
+	/** The message data format complies to a SMS Teleservice PDU coded as octets according 
+	to IS-637.
+	
+	Modes: CDMA */
+		EFormatCdmaTpdu
+		};
+
+	class TMobileSmsAttributesV1 : public RMobilePhone::TMultimodeType
+	/** Defines common attributes of all SMS messages. 
+	@publishedPartner
+	@released
+	*/
+		{
+	protected:
+		TMobileSmsAttributesV1();
+	public:
+	/** The bit-mask flags from TMobileSmsAttributeFlags indicating which attributes 
+	are present in this instance.
+	
+	Modes: Common */
+		TUint32 iFlags;
+	/** The format of the message data buffer .
+	
+	Modes: Common
+	
+	@see TMobileSmsDataFormat */
+		TMobileSmsDataFormat iDataFormat;
+	/** The teleservice this message belongs to, coded according to SMS teleservice 
+	identifier values table in TIA/EIA-41-D.
+	
+	Modes: CDMA */
+		TInt iCdmaTeleservice;
+	/** The service category this message belongs to.
+	
+	Modes: CDMA */
+		TInt iCdmaServiceCategory;
+	/** The GSM service centre used for this SMS.
+	
+	Modes: GSM/WCDMA
+	
+	@see RMobilePhone::TMobileAddress */
+		RMobilePhone::TMobileAddress iGsmServiceCentre;
+		};
+
+/** A typedef'd packaged TMobileSmsAttributesV1 for passing through a generic 
+API member function. */
+	typedef TPckg<TMobileSmsAttributesV1> TMobileSmsAttributesV1Pckg;
+
+/** Defines attributes of incoming SMS messages.
+
+Modes: Common */
+	enum TMobileSmsIncomingStatus
+		{
+	/** The status of the incoming SMS is unknown. */
+		EMtMessageUnknownStatus,
+	/** The incoming SMS is not stored phone-side but has already been acknowledged 
+	by the phone. */
+		EMtMessageUnstoredPhoneAck,
+	/** The incoming SMS is not stored phone-side and needs to be acknowledged by the 
+	client. */
+		EMtMessageUnstoredClientAck,
+	/** The incoming SMS is stored phone-side. */
+		EMtMessageStored
+		};
+
+	class TMobileSmsReceiveAttributesV1 : public TMobileSmsAttributesV1
+	/** Defines attributes of incoming SMS messages. 
+	@publishedPartner
+	@released
+	*/
+		{
+	public:
+		IMPORT_C TMobileSmsReceiveAttributesV1();
+	public:
+	/** Indicates the status of the incoming message -whether it is stored phone-side 
+	or has been acknowledged by the phone.
+	
+	Modes: Common
+	
+	@see TMobileSmsIncomingStatus */
+		TMobileSmsIncomingStatus	 iStatus;	// indicates if MT message is stored phone-side
+	/** If the message is stored phone-side, indicates the index (within the phone-side 
+	store) where the message is stored.
+	
+	Modes: Common */
+		TInt						 iStoreIndex;// used if MT message is stored phone-side
+	/** If the message is stored phone-side, indicates the name of the appropriate 
+	phone-side store.
+	
+	Modes: Common
+	
+	@see RMobilePhone::TMobileName */
+		RMobilePhone::TMobileName	 iStore;		// used if MT message is stored phone-side
+	/** The address of the originator of the SMS.
+
+	Modes: Common
+	
+	@see RMobilePhone::TMobileAddress */
+		RMobilePhone::TMobileAddress iOriginator;
+		};
+
+/** A typedef'd packaged TMobileSmsReceiveAttributesV1 for passing through a generic 
+API member function. */
+	typedef TPckg<TMobileSmsReceiveAttributesV1> TMobileSmsReceiveAttributesV1Pckg;
+
+	
+
+	class TMobileSmsSendAttributesV1 : public TMobileSmsAttributesV1
+	/** Defines attributes of sent SMS messages.
+	@publishedPartner
+	@released */
+		{
+	public:
+		IMPORT_C TMobileSmsSendAttributesV1();
+	public:
+	/** The message reference assigned to a sent message.
+	
+	Modes: Common */
+		TUint16						 iMsgRef;
+	/** A boolean indicating whether the client is going to send another SMS immediately 
+	after this one. Equals ETrue if this is the case, EFalse if it is not.
+	
+	Modes: Common */
+		TBool						 iMore;
+	/** The SMS-SUBMIT-REPORT TPDU received from network in response to a sent message.
+	
+	Modes: GSM/WCDMA
+	
+	@see TMobileSmsGsmTpdu */
+		TMobileSmsGsmTpdu			 iSubmitReport;
+	/** The address of the destination of the SMS.
+	
+	Modes: Common
+	
+	@see RMobilePhone::TMobileAddress */
+		RMobilePhone::TMobileAddress iDestination;
+		};
+	
+/** A typedef'd packaged TMobileSmsSendAttributesV1 for passing through a generic 
+API member function. */
+	typedef TPckg<TMobileSmsSendAttributesV1> TMobileSmsSendAttributesV1Pckg;
+
+	class TMobileSmsCdmaSendAttributesV4 : public TMobileSmsAttributesV1
+	/**
+	Defines attributes of sent SMS messages (CDMA only).
+
+	@publishedPartner
+	@released
+	*/
+		{
+	public:
+		IMPORT_C TMobileSmsCdmaSendAttributesV4();
+	public:
+		/** 
+		The message id allocated by the SMS stack. The TSY should
+		retrieve the value from iCdmaTeleserviceId to determine
+		which teleservice this message id corresponds to. 
+		*/
+		TUint16 iMsgRef;
+		/** Indicates whether the client is going to send another 
+		PDU immediately after this one (typically used when sending
+		messages of more than one PDU). Equals ETrue if at least 
+		one more PDU is needed to complete the message and EFalse
+		otherwise.
+		*/
+		TBool iMore;
+		/** TPDU received from network in response to a sent message */
+		TMobileSmsCdmaTpdu iTLAck;
+		/** The address of the destination of the SMS. */
+		RMobilePhone::TMobileAddress iDestination;
+		/** Transport layer authentication parameter */
+		TUint32 iAddressAuthentication;
+		};
+
+/** A typedef'd packaged TMobileSmsCdmaSendAttributesV4 for passing through a generic 
+API member function. */
+	typedef TPckg<TMobileSmsCdmaSendAttributesV4> TMobileSmsCdmaSendAttributesV4Pckg;
+
+	//
+	// Setting up the storage & acknowledgement mode
+	//
+
+/** Defines the SMS receive modes.
+
+Modes: Common */
+	enum TMobileSmsReceiveMode
+		{
+	/** Receive mode is unspecified and phone will use its default. */
+		EReceiveModeUnspecified,
+	/** Phone will store and acknowledge all incoming messages before passing them 
+	onto TSY. */
+		EReceiveUnstoredPhoneAck,	// client stores but phone acknowledges message
+	/** Phone will acknowledge but NOT store all incoming messages before passing them 
+	onto TSY. It is client's responsibility to store the message. */
+		EReceiveUnstoredClientAck,	// client acknowledges and stores message
+	/** Phone will NOT acknowledge or store any incoming messages before passing them 
+	onto TSY. It is client's responsibility to attempt storage and then either
+	acknowledge or reject the message. */
+		EReceiveStored,				// phone acknowledges and store message
+	/** Phone may pass on either stored or unstored messages to TSY. It is client's 
+	responsibility to check RMobileSmsMessaging::TMobileSmsReceiveAttributesV1::iStatus 
+	to determine what action(s) the client needs to take for a message. */
+		EReceiveEither				// client deals with stored & unstored messages
+		};
+
+	IMPORT_C void SetReceiveMode(TRequestStatus& aReqStatus, TMobileSmsReceiveMode aReceiveMode) const;
+	IMPORT_C TInt GetReceiveMode(TMobileSmsReceiveMode& aReceiveMode) const;
+	IMPORT_C void NotifyReceiveModeChange(TRequestStatus& aStatus, TMobileSmsReceiveMode& aReceiveMode);
+
+	/***********************************************************************************/
+	//
+	// Incoming SMS
+	//
+	/***********************************************************************************/
+
+	IMPORT_C void ReceiveMessage(TRequestStatus& aReqStatus, TDes8& aMsgData, TDes8& aMsgAttributes) const;
+
+	/***********************************************************************************/
+	//
+	// Responding to incoming SMS
+	//
+	/***********************************************************************************/
+
+	IMPORT_C void AckSmsStored(TRequestStatus& aReqStatus, const TDesC8& aMsgData, TBool aFull=EFalse) const;
+	IMPORT_C void NackSmsStored(TRequestStatus& aReqStatus, const TDesC8& aMsgData, TInt aRpCause) const;
+	IMPORT_C void ResumeSmsReception(TRequestStatus& aReqStatus) const;
+
+	/***********************************************************************************/
+	//
+	// Outgoing SMS
+	//
+	/***********************************************************************************/
+
+	IMPORT_C void SendMessage(TRequestStatus& aReqStatus, const TDesC8& aMsgData, TDes8& aMsgAttributes) const;
+	IMPORT_C void SendMessageNoFdnCheck(TRequestStatus& aReqStatus, const TDesC8& aMsgData, TDes8& aMsgAttributes) const;
+
+/** Defines the SMS bearer.
+
+Modes: GSM */
+	enum TMobileSmsBearer
+		{
+	/** SMS messages will only be sent over a packet-switched (GPRS) network. */
+		ESmsBearerPacketOnly,
+	/** SMS messages will only be sent over a circuit-switched (GSM) network. */
+		ESmsBearerCircuitOnly,
+	/** SMS messages will be sent over the packet-switched (GPRS) network if possible, 
+	otherwise over circuit-switched (GSM) network. */
+		ESmsBearerPacketPreferred,
+	/** SMS messages will be sent over the circuit-switched (GSM) network if possible, 
+	otherwise over packet-switched (GPRS) network. */
+		ESmsBearerCircuitPreferred
+		};
+
+	IMPORT_C void SetMoSmsBearer(TRequestStatus& aReqStatus, TMobileSmsBearer aBearer) const;
+	IMPORT_C TInt GetMoSmsBearer(TMobileSmsBearer& aBearer) const;
+	IMPORT_C void NotifyMoSmsBearerChange(TRequestStatus& aReqStatus, TMobileSmsBearer& aBearer);
+
+	/***********************************************************************************/
+	//
+	// Get information on phone-side SMS storage
+	//
+	/***********************************************************************************/
+
+	IMPORT_C TInt EnumerateMessageStores(TInt& aCount) const;
+	IMPORT_C void GetMessageStoreInfo(TRequestStatus& aReqStatus, TInt aIndex, TDes8& aInfo) const;
+
+	/***********************************************************************************/
+	//
+	// Read/Write SMS parameters to phone-side storage
+	//
+	/***********************************************************************************/
+
+	enum { KMaxSmspTextSize=30 };
+
+/** Defines the valid SMS parameters store.
+
+Modes: GSM/WCDMA
+
+@see TMobileSmspEntryV1 */
+	enum TMobileSmspStoreValidParams
+		{
+	/** The entry includes a valid iDestination field. */
+		KDestinationIncluded=0x00000001,
+	/** The entry includes a valid iServiceCentre field. */
+		KSCAIncluded=0x00000002,
+	/** The entry includes a valid iProtocolId field. */
+		KProtocolIdIncluded=0x00000004,
+	/** The entry includes a valid iDcs field. */
+		KDcsIncluded=0x00000008,
+	/** The entry includes a valid iValidityPeriod field. */
+		KValidityPeriodIncluded=0x00000010
+ 		};
+
+	class TMobileSmspEntryV1 : public RMobilePhone::TMultimodeType
+
+	/** Defines a set of SMS parameters. 
+	@publishedPartner
+	@released
+	*/
+		{
+	public:
+		IMPORT_C TMobileSmspEntryV1();
+	public:
+		void InternalizeL(RReadStream& aStream);
+		void ExternalizeL(RWriteStream& aStream) const;
+	public:
+	/** The slot index where this SMSP entry is stored in the SIM's SMSP file. */
+		TInt iIndex;
+	/** A bit-wise sum of the constants defined in TMobileSmspStoreValidParams, that 
+	specifies which parameters are valid within this entry. */
+		TUint32	iValidParams;
+	/** Default protocol ID. Coded according to GSM 03.40. */
+		TUint8 iProtocolId;
+	/** Default data coding scheme. Coded according to GSM 03.40. */
+		TUint8 iDcs;
+	/** Default validity period, in relative format and coded on 8 bits as defined 
+	by GSM 03.40. */
+		TUint8 iValidityPeriod;
+	/** Reserved for future use. */
+		TUint8 iReservedFiller;
+	/** Default destination for outgoing SMS.
+	
+	@see RMobilePhone::TMobileAddress */
+		RMobilePhone::TMobileAddress iDestination;
+	/** Default service centre for outgoing SMS.
+	
+	@see RMobilePhone::TMobileAddress */
+		RMobilePhone::TMobileAddress iServiceCentre;
+	/** The alpha-tag associated with this SMSP entry, expressed as Unicode characters. */
+		TBuf<KMaxSmspTextSize> iText;
+		};
+
+/** A typedef'd packaged TMobileSmspEntryV1 for passing through a generic API member
+function. */
+	typedef TPckg<TMobileSmspEntryV1> TMobileSmspEntryV1Pckg;
+	IMPORT_C void StoreSmspListL(TRequestStatus& aReqStatus, CMobilePhoneSmspList* aSmspList) const;
+	IMPORT_C void NotifySmspListChange(TRequestStatus& aReqStatus) const;
+
+private:
+	RMobileSmsMessaging(const RMobileSmsMessaging&);
+	CSmsMessagingPtrHolder* iSmsMessagingPtrHolder;
+protected:
+	IMPORT_C void ConstructL();
+	IMPORT_C void Destruct();
+	};
+
+
+/*********************************************************/
+//
+// Broadcast Messaging (RMobileBroadcastMessaging)
+// 
+/*********************************************************/
+
+
+
+class CMobilePhoneBroadcastIdList;
+
+class CCbsMessagingPtrHolder;
+class RMobileBroadcastMessaging : public RTelSubSessionBase
+/** This sub-session provides access to the broadcast message services provided 
+by GSM/WCDMA and CDMA networks.
+
+Clients will open a RMobileBroadcastMessaging sub-session and then wait for 
+incoming broadcast messages. The broadcast messages received can depend upon 
+a "message filter" which defines the languages and/or identifiers of acceptable 
+(or unacceptable) messages. This sub-session and the function members within 
+this section must be supported if the TSY indicates that it supports the MobileBroadcastMessaging
+functional unit. 
+
+@publishedPartner
+@released*/
+	{
+public:
+	
+	friend class CRetrieveMobilePhoneBroadcastIdList;
+
+	IMPORT_C RMobileBroadcastMessaging();
+
+	IMPORT_C TInt Open(RMobilePhone& aPhone);
+	IMPORT_C void Close();
+
+	/***********************************************************************************/
+	//
+	// Broadcast messaging capabilities
+	//
+	/***********************************************************************************/
+
+/** Broadcast capabilities.
+
+Modes:GSM/WCDMA */
+	enum TMobileBroadcastModeCaps
+		{
+	/** GSM 03.41 cell broadcast messages are supported.
+	
+	Modes:GSM/WCDMA */
+		KCapsGsmTpduFormat = 0x00000001,
+	/** IS-637-A broadcast messages are supported.
+	
+	Modes:CDMA */
+		KCapsCdmaTpduFormat = 0x00000002,
+	/** 3GPP 25.324 Release 4 cell broadcast messages are supported.
+	
+	Modes: WCDMA */
+		KCapsWcdmaTpduFormat = 0x00000004
+		};
+
+/** Broadcast message filter capabilities.
+
+Modes: Common
+
+@see RMobileBroadcastMessaging::GetLanguageFilter() */
+	enum TBroadcastMessagingFilterCaps
+		{
+	/** Phone supports switching broadcast messages on or off. This means the EbroadcastAcceptNone 
+	and EBroadcastAcceptAll settings of TMobilePhoneBroadcastFilter are supported.
+	
+	Modes: Common */
+		KCapsSimpleFilter = 0x00000001,
+	/** Phone supports filtering of broadcast messages depending upon their language. 
+	The language filter is a list of languages used only for broadcast filtering.
+	
+	Modes: Common
+	
+	@see RMobileBroadcastMessaging::GetLanguageFilter() */
+		KCapsLangFilter = 0x00000002,
+	/** Phone supports filtering of broadcast messages depending upon their subject. 
+	The subject of a message is identified in GSM/WCDMA mode by the Cell Broadcast 
+	Message Identifier (CBMI) and in CDMA mode by the Service Category.
+	
+	Modes: Common */
+		KCapsIdFilter = 0x00000004
+		};
+
+	
+
+	class TMobileBroadcastCapsV1 : public RMobilePhone::TMultimodeType
+	/** Defines capabilities of Broadcast messaging. 
+	@publishedPartner
+	@released
+	*/
+		{
+	public:
+		IMPORT_C TMobileBroadcastCapsV1();
+	public:
+	/** Sum of TMobileBroadcastModeCaps constants.
+	
+	Modes: GSM/WCDMA */
+		TUint32 iModeCaps;
+	/** Sum of TBroadcastMessagingFilterCaps constants.
+	
+	Modes: GSM/WCDMA */
+		TUint32 iFilterCaps;
+		};
+
+/** A typedef'd packaged TMobileBroadcastCapsV1 for passing through a generic API 
+function member. */
+	typedef TPckg<TMobileBroadcastCapsV1> TMobileBroadcastCapsV1Pckg;
+
+	IMPORT_C TInt GetCaps(TDes8& aCaps) const;
+
+/** Defines the broadcast attributes.
+
+Modes: Common */
+	enum TMobileBroadcastAttributeFlags
+		{
+	/** The iFormat field is valid in the attribute class.
+	
+	Modes: Common */
+		KBroadcastDataFormat = 0x00000001,
+	/** The iServiceCategory field is valid in the attribute class.
+	
+	Modes: CDMA */
+		KCdmaServiceCategory = 0x00000002
+		};
+
+/** The mobile broadcast data format, used byTMobileBroadcastAttributesV1.
+
+Modes: Common */
+	enum TMobileBroadcastDataFormat
+		{
+	/** The message data format is not specified.
+	
+	Modes: Common */
+		EFormatUnspecified,
+	/** The message data format complies to a Cell Broadcast TPDU coded as 88 octets 
+	(6 for header and 82 for message data) according to GSM 03.41.
+	
+	Modes: GSM/WCDMA */
+		EFormatGsmTpdu,
+	/** The message data format complies to IS-637-A encoding of the Bearer Data parameter 
+	within the Transport Layer's SMS-Broadcast message.
+	
+	Modes: CDMA */
+		EFormatCdmaTpdu,
+	/** The message data format complies to a Cell Broadcast TPDU coded as 1252 octets 
+	(6 for header and a maximum of 1246 for message data) according to 3GPP 25.324.
+	
+	Modes: WCDMA */
+		EFormatWcdmaTpdu
+		};
+
+	
+
+	class TMobileBroadcastAttributesV1 : public RMobilePhone::TMultimodeType
+	/** Defines attributes of a Broadcast message.
+	@publishedPartner
+	@released
+	*/
+		{
+	public:
+		IMPORT_C TMobileBroadcastAttributesV1();
+	public:
+	/** The bit-mask flags indicating which attributes are present in this instance.
+	
+	Modes: Common
+	
+	@see TMobileBroadcastAttributeFlags */
+		TUint32	iFlags;
+	/** Format of the message data buffer.
+	
+	Modes: Common
+	
+	@see TMobileBroadcastDataFormat */
+		TMobileBroadcastDataFormat	iFormat;
+	/** Service category of the message.
+	
+	Modes: CDMA */
+		TInt iServiceCategory;
+		};
+
+/** A typedef'd packaged TMobileBroadcastAttributesV1 for passing through a generic 
+API function member. */
+	typedef TPckg<TMobileBroadcastAttributesV1> TMobileBroadcastAttributesV1Pckg;
+
+
+	
+
+	class TMobileBroadcastAttributesV2 : public TMobileBroadcastAttributesV1
+	/** Defines attributes of a UMTS Broadcast message for version v2.0 of the API. 
+	@publishedPartner
+	@released
+	*/
+		{
+	public:
+		IMPORT_C TMobileBroadcastAttributesV2();
+	public:
+	/** The number of pages that the current broadcast message consists of. The maximum 
+	number of pages for WCDMA Broadcast messages is 15. */
+		TInt	 iNumberOfPages;
+	/** This parameter is used to store the message type for this broadcast message. */
+		TUint8	 iMessageType;
+	/** This parameter is used to store the message id for this broadcast message.
+	
+	This parameter is used to store the serial number for this broadcast message.
+	
+	This parameter is used to store the data coding scheme for this broadcast 
+	message. */
+		TUint16	 iMessageId;
+	/** This parameter is used to store the serial number for this broadcast message. */
+		TUint16	 iSerialNum;
+	/** This parameter is used to store the data coding scheme for this broadcast message. */
+		TUint8	 iDCS;
+		};
+
+/** A typedef'd packaged TMobileBroadcastAttributesV1 for passing through a generic 
+API function member. */
+	typedef TPckg<TMobileBroadcastAttributesV2> TMobileBroadcastAttributesV2Pckg;
+
+	/***********************************************************************************/
+	//
+	// Receiving broadcast messages
+ 	//
+	/***********************************************************************************/
+
+	/** A constant which defines the length of the buffer to be passed to ReceiveMessage.	
+	
+	This constant should be used for all message types: GSM, CDMA and WCDMA.*/
+	enum
+		{
+		KBroadcastPageSize = 88	
+		};
+	
+	/** Buffer for received messages. 
+	
+	This buffer should be used for all message types: GSM, CDMA and WCDMA.*/
+	typedef TBuf8<KBroadcastPageSize> TBroadcastPageData;
+
+	/** Old buffer sizes.  KBroadcastPageSize should be used instead. */
+	enum 
+		{
+		KGsmBroadcastDataSize = KBroadcastPageSize,
+		KCdmaBroadcastDataSize = KBroadcastPageSize,
+		KWCdmaBroadcastPageSize = KBroadcastPageSize
+		};
+
+	/** Buffer for GSM messages.  TBroadcastPageData should be used instead. */
+	typedef TBuf8<KGsmBroadcastDataSize>  TGsmBroadcastMessageData;
+	/** Buffer for CDMA messages.  TBroadcastPageData should be used instead.  */
+	typedef TBuf8<KCdmaBroadcastDataSize> TCdmaBroadcastMessageData;
+	/** Buffer for WCDMA messages.  TBroadcastPageData should be used instead. */
+	typedef TBuf8<KWCdmaBroadcastPageSize> TWCdmaBroadcastPageData;
+
+	IMPORT_C void ReceiveMessage(TRequestStatus& aReqStatus, TDes8& aMsgData, TDes8& aMsgAttributes) const;
+
+	/***********************************************************************************/
+	//
+	// Filters
+	//
+	/***********************************************************************************/
+
+/** The filter settings of the mobile phone.
+
+Modes: Common */
+	enum TMobilePhoneBroadcastFilter
+		{
+	/** The phone does not have a filter setting. */
+		EBroadcastFilterUnspecified,
+	/** The phone is not accepting any broadcast messages. */
+		EBroadcastAcceptNone,
+	/** The phone is accepting all broadcast messages. */
+		EBroadcastAcceptAll,
+	/** The phone is accepting those broadcast messages included within the language 
+	and identifier filters. */
+		EBroadcastAcceptFilter,
+	/** The phone is rejecting those broadcast messages included within the language 
+	or identifier filters. */
+		EBroadcastRejectFilter
+		};
+
+	IMPORT_C TInt GetFilterSetting(TMobilePhoneBroadcastFilter& aSetting) const;
+	IMPORT_C void SetFilterSetting(TRequestStatus& aReqStatus, TMobilePhoneBroadcastFilter aSetting) const;
+	IMPORT_C void NotifyFilterSettingChange(TRequestStatus& aReqStatus, TMobilePhoneBroadcastFilter& aSetting) const;
+
+	IMPORT_C void GetLanguageFilter(TRequestStatus& aReqStatus, TDes16& aLangFilter) const;
+	IMPORT_C void SetLanguageFilter(TRequestStatus& aReqStatus, const TDesC16& aLangFilter) const;
+	IMPORT_C void NotifyLanguageFilterChange(TRequestStatus& aReqStatus, TDes16& aLangFilter) const;
+
+	class TMobileBroadcastIdEntryV1 : public RMobilePhone::TMultimodeType
+	/** In GSM - defines a Cell Broadcast Message Identifier (CBMI) list entry. In 
+	CDMA - defines a Service Category list entry. 
+	@publishedPartner
+	@released
+	*/
+		{
+	public:
+		void InternalizeL(RReadStream& aStream);
+		void ExternalizeL(RWriteStream& aStream) const;
+		IMPORT_C TMobileBroadcastIdEntryV1();
+	public:
+	/** The value of the message identifier. */
+		TUint16	iId;
+		};
+
+/** Defines the broadcast types. */
+	enum TMobileBroadcastIdType
+		{
+	/** GSM broadcast. */
+		EGsmBroadcastId,
+	/** CDMA broadcast. */
+		ECdmaBroadcastId
+		};
+
+	IMPORT_C void StoreBroadcastIdListL(TRequestStatus& aReqStatus, CMobilePhoneBroadcastIdList* aIdList, TMobileBroadcastIdType aIdType);
+	IMPORT_C void NotifyBroadcastIdListChange(TRequestStatus& aReqStatus) const;
+
+private:
+	RMobileBroadcastMessaging(const RMobileBroadcastMessaging&);
+	CCbsMessagingPtrHolder* iCbsMessagingPtrHolder;
+protected:
+	IMPORT_C void ConstructL();
+	IMPORT_C void Destruct();
+	};
+
+/*********************************************************/
+//
+// USSD Messaging (RMobileUssdMessaging)
+// 
+/*********************************************************/
+
+
+
+class CUssdMessagingPtrHolder;
+class RMobileUssdMessaging : public RTelSubSessionBase
+/** Provides client access to USSD functionality provided by TSY. 
+*/
+	{
+public:
+	IMPORT_C RMobileUssdMessaging();
+
+	IMPORT_C TInt Open(RMobilePhone& aPhone);
+	IMPORT_C void Close();
+
+/** Defines the USSD Messaging Format Capabilities.
+
+Modes: GSM/WCDMA */
+	enum TMobileUssdFormatCaps
+		{
+	/** USSD messages coded as a packed string within 160 octets, as defined for a 
+	ussd-String within GSM 04.80 and GSM 03.38.
+	
+	Modes: GSM/WCDMA */
+		KCapsPackedString=0x00000001
+		};
+
+/** Defines the USSD Messaging Type Capabilities.
+
+Modes: GSM/WCDMA */
+	enum TMobileUssdTypeCaps
+		{
+	/** Outgoing USSD messages are supported.
+	
+	Modes: GSM/WCDMA */
+		KCapsMOUssd=0x00000001,
+	/** Incoming USSD messages are supported.
+	
+	Modes: GSM/WCDMA */
+		KCapsMTUssd=0x00000002
+		};
+
+	
+
+	class TMobileUssdCapsV1 : public RMobilePhone::TMultimodeType
+	/** Defines capabilities of USSD messaging. 
+	@publishedPartner
+	@released
+	*/
+		{
+	public:
+		IMPORT_C TMobileUssdCapsV1();
+	/** Sum of TMobileUssdFormatCaps constants.
+	
+	Modes: GSM/WCDMA
+
+	@see TMobileUssdFormatCaps */
+		TUint32 iUssdFormat;
+	/** Sum of TMobileUssdTypeCaps constants.
+	
+	Modes: GSM/WCDMA
+
+	@see TMobileUssdTypeCaps */
+		TUint32 iUssdTypes;
+		};
+
+/** A typedef'd packaged TMobileUssdCapsV1 for passing through a generic API member 
+function. */
+	typedef TPckg<TMobileUssdCapsV1> TMobileUssdCapsV1Pckg;
+
+	IMPORT_C TInt GetCaps(TDes8& aCaps) const;
+
+/** Defines the USSD Messaging Attributes.
+
+Modes: GSM/WCDMA
+
+@see TMobileUssdAttributesV1 */
+	enum TMobileUssdAttributeFlags
+		{
+	/** The iFormat field is valid in the attribute class. */
+		KUssdDataFormat = 0x00000001,
+	/** The iType field is valid in the attribute class. */
+		KUssdMessageType = 0x00000002,
+	/** The iDcs field is valid in the attribute class. */
+		KUssdMessageDcs = 0x00000004
+		};
+
+/** Defines the USSD Data Formats.
+
+Modes: Common */
+	enum TMobileUssdDataFormat
+		{
+	/** The message data format is unspecified.
+	
+	Modes: Common */
+		EFormatUnspecified,
+	/** The message data format complies to a USSD coded as 160 octets as defined for 
+	a ussd-String within GSM 04.80 and GSM 03.38.
+	
+	Modes: GSM/WCDMA */
+		EFormatPackedString
+		};
+
+/** Defines the USSD Message Types.
+
+Modes: GSM/WCDMA */
+	enum TMobileUssdMessageType
+		{
+	/** Message is an unknown type. */
+		EUssdUnknown,
+	/** Message is a mobile originated USSD request. The MS expects the network to 
+	send a USSD MT reply. */
+		EUssdMORequest,
+	/** Message is a reply to a previously received network initiated USSD request. 
+	It is a USSD MO reply. */
+		EUssdMOReply,
+	/** Message is a one-off network initiated USSD notification. The network expects the MS to
+	send a USSD MO acknowledgement with empty message content. */
+		EUssdMTNotify,
+	/** Message is a network initiated USSD request. The network expects
+	the MS to send a USSD MO reply. */
+		EUssdMTRequest,
+	/** Message is a network initiated reply to a previously sent MO USSD request. */
+		EUssdMTReply,
+	/** For acknowledging MT USSD notifications (empty message content). */
+		EUssdMOAcknowledgement
+		};
+
+	
+
+	class TMobileUssdAttributesV1 : public RMobilePhone::TMultimodeType
+	/** Defines attributes of a USSD message. 
+	@publishedPartner
+	@released
+	*/
+		{
+	public:
+		IMPORT_C TMobileUssdAttributesV1();
+	public:
+	/** The TMobileUssdAttributeFlags bit-mask flags indicating which attributes are
+	present in this instance.
+	
+	Modes: GSM/WCDMA
+
+	@see TMobileUssdAttributeFlags */
+		TUint32 iFlags;
+	/** Format of the message data buffer.
+	
+	Modes: GSM/WCDMA
+	
+	@see TMobileUssdDataFormat */
+		TMobileUssdDataFormat iFormat;
+	/** The type of USSD message.
+	
+	Modes: GSM/WCDMA
+	
+	@see TMobileUssdMessageType */
+		TMobileUssdMessageType iType;
+	/** The Data Coding Scheme of the USSD message.
+	
+	Modes: GSM/WCDMA */
+		TUint8 iDcs;
+		};
+	
+/** A typedef'd packaged TMobileUssdAttributesV1 for passing through a generic 
+API member function. */
+	typedef TPckg<TMobileUssdAttributesV1> TMobileUssdAttributesV1Pckg;
+
+	/***********************************************************************************/
+	//
+	// Receiving USSD messages
+ 	//
+	/***********************************************************************************/
+
+	enum 
+		{
+		KGsmUssdDataSize = 160
+		};
+
+/** A typedef'd buffer to hold the message data. */
+	typedef TBuf8<KGsmUssdDataSize> TGsmUssdMessageData;
+
+	IMPORT_C void ReceiveMessage(TRequestStatus& aReqStatus, TDes8& aMsgData, TDes8& aMsgAttributes) const;
+
+	/***********************************************************************************/
+	//
+	// Sending USSD messages
+	//
+	/***********************************************************************************/
+
+	IMPORT_C void SendMessage(TRequestStatus& aReqStatus, const TDesC8& aMsgData, const TDesC8& aMsgAttributes) const;
+	IMPORT_C void SendMessageNoFdnCheck(TRequestStatus& aReqStatus, const TDesC8& aMsgData, const TDesC8& aMsgAttributes) const;
+	
+	IMPORT_C void SendRelease(TRequestStatus& aReqStatus, TDes8& aReturnResult) const;
+	IMPORT_C void NotifyNetworkRelease(TRequestStatus& aReqStatus, TDes8& aReturnResult) const;
+	IMPORT_C void NotifyNetworkRelease(TRequestStatus& aReqStatus, TDes8& aMsgData, TDes8& aMsgAttributes) const;
+
+private:
+	RMobileUssdMessaging(const RMobileUssdMessaging&);
+	CUssdMessagingPtrHolder* iUssdMessagingPtrHolder;
+protected:
+	IMPORT_C void ConstructL();
+	IMPORT_C void Destruct();
+	};
+
+
+
+/*********************************************************/
+//
+// SMS Message Storage (RMobileSmsStore)
+//
+/*********************************************************/
+
+
+
+class CSmsStorePtrHolder;
+class CMobilePhoneSmsList;
+class RMobileSmsStore : public RMobilePhoneStore
+/** Provides client access to SMS storage functionality provided by TSY.
+@publishedPartner
+@released
+*/
+	{
+public:
+
+	IMPORT_C RMobileSmsStore();
+	IMPORT_C TInt Open(RMobileSmsMessaging& aMessaging, const TDesC& aStoreName);
+	IMPORT_C void Close();
+
+/** Defines the SMS Store Capabilities.
+
+Modes: Common */
+	enum TMobileSmsStoreCaps
+		{
+	/** The store contains unread, incoming SMS entries.
+	
+	Modes: Common */
+		KCapsUnreadMessages = 0x00000001,
+	/** The store contains read, incoming SMS entries.
+	
+	Modes: Common */
+		KCapsReadMessages = 0x00000002,
+	/** The store contains sent SMS entries.
+	
+	Modes: Common */
+		KCapsSentMessages = 0x00000004,
+	/** The store contains un sent SMS entries. */
+		KCapsUnsentMessages = 0x00000008,
+	/** The store contains GSM SMS message entries – so TMobileGsmSmsEntryV1 class 
+	should be used.
+	
+	Modes: GSM/WCDMA */
+		KCapsGsmMessages = 0x00000010,
+	/** The store contains CDMA SMS message entries – so TMobileCdmaSmsEntryV1 class 
+	should be used.
+	
+	Modes: CDMA */
+		KCapsCdmaMessages = 0x00000020
+		};
+
+/** Defines contents of a fixed-size, stored SMS entry.
+
+Modes: Common */
+	enum TMobileSmsStoreStatus
+		{
+	/** The status of the SMS is unknown. */
+		EStoredMessageUnknownStatus,
+	/** The SMS is stored phone-side. It is an incoming message that has not been read 
+	yet. */
+		EStoredMessageUnread,
+	/** The SMS is stored phone-side. It is an incoming message that has already been 
+	read. */
+		EStoredMessageRead,
+	/** The SMS is stored phone-side. It is an outgoing message that has not been sent 
+	yet. */
+		EStoredMessageUnsent,
+	/** The SMS is stored phone-side. It is an outgoing message that has already been 
+	sent but a delivery/status report has either not been received yet or was 
+	not requested in the first place. */
+		EStoredMessageSent,
+	/** The SMS is stored phone-side. It is an outgoing message that has already been 
+	sent and a delivery/status report has been received */
+		EStoredMessageDelivered
+		};
+
+	//
+	// Enum used by TSY to distinguish which SMS entry class is used by client
+	//
+
+/** Used by TSY to distinguish which SMS entry class is used by client. */
+	enum TMobileSmsEntryExtensionId
+		{
+	/** Type is unknown. */
+		KETelMobileSmsEntryV1=KETelExtMultimodeV1,
+	/** The iExtensionId contents indicate that the packaged class is a TMobileGsmSmsEntryV1.
+	
+	Also used to indicate that GSM SMS entries will be retrieved by CRetrieveMobilePhoneSmsList. */
+		KETelMobileGsmSmsEntryV1,
+	/** The iExtensionId contents indicate that the packaged class is a TMobileCdmaSmsEntryV1.
+	
+	Also used to indicate that CDMA SMS entries will be retrieved by CRetrieveMobilePhoneSmsList. */
+		KETelMobileCdmaSmsEntryV1
+		};
+
+	class TMobileSmsEntryV1 : public RMobilePhoneStore::TMobilePhoneStoreEntryV1
+	/** Defines contents of a fixed-size, stored SMS entry.
+	@publishedPartner
+	@released 
+	*/
+		{
+	public:
+		void InternalizeL(RReadStream& aStream);
+		void ExternalizeL(RWriteStream& aStream) const;
+	protected:
+		TMobileSmsEntryV1();
+	public:
+	/** The status of the stored message.
+	
+	Modes: Common
+	
+	@see TMobileSmsStoreStatus */
+		TMobileSmsStoreStatus	iMsgStatus;	
+		};
+
+/** A typedef'd packaged TMobileSmsEntryV1 for passing through a generic API 
+member function. */
+	typedef TPckg<TMobileSmsEntryV1> TMobileSmsEntryV1Pckg;
+	
+	class TMobileGsmSmsEntryV1 : public TMobileSmsEntryV1
+/** Defines contents of a fixed-size, stored GSM SMS entry.
+@publishedPartner
+@released */
+		{
+	public:
+		void InternalizeL(RReadStream& aStream);
+		void ExternalizeL(RWriteStream& aStream) const;
+	public:
+		IMPORT_C TMobileGsmSmsEntryV1();
+	public:
+	/** The service centre to use (or used) for the message.
+	
+	Modes: GSM/WCDMA
+	
+	@see RMobilePhone::TMobileAddress */
+		RMobilePhone::TMobileAddress iServiceCentre;
+	/** The GSM 03.40 TPDU.
+	
+	Modes: GSM/WCDMA
+	
+	@see RMobileSmsMessaging::TMobileSmsGsmTpdu */
+		RMobileSmsMessaging::TMobileSmsGsmTpdu	iMsgData;	
+		};
+
+/** A typedef'd packaged TMobileGsmSmsEntryV1 for passing through a generic API 
+member function. */
+	typedef TPckg<TMobileGsmSmsEntryV1> TMobileGsmSmsEntryV1Pckg;
+
+	class TMobileCdmaSmsEntryV1 : public TMobileSmsEntryV1
+	/** Defines contents of a fixed-size, stored CDMA SMS entry. 
+	@publishedPartner
+	@released
+	*/
+		{
+	public:
+		void InternalizeL(RReadStream& aStream);
+		void ExternalizeL(RWriteStream& aStream) const;
+	public:
+		IMPORT_C TMobileCdmaSmsEntryV1();
+	public:
+	/** The teleservice identifier of the stored message.
+	
+	Modes: CDMA */
+		TInt iTeleservice;
+	/** The service category of the stored message.
+	
+	Modes: CDMA */
+		TInt iServiceCategory;
+	/** The remote party (destination or originator) of the stored message.
+	
+	Modes: CDMA
+	
+	@see RMobilePhone::TMobileAddress */
+		RMobilePhone::TMobileAddress iRemoteParty;
+	/** The teleservice layer bearer data of the stored message.
+	
+	Modes: CDMA
+	
+	@see RMobileSmsMessaging::TMobileSmsCdmaTpdu */
+		RMobileSmsMessaging::TMobileSmsCdmaTpdu iMsgData;	
+		};
+
+/** A typedef'd packaged TMobileCdmaSmsEntryV1 for passing through a generic API 
+member function. */
+	typedef TPckg<TMobileCdmaSmsEntryV1> TMobileCdmaSmsEntryV1Pckg;
+
+protected:
+	IMPORT_C void ConstructL();
+private:
+	RMobileSmsStore(const RMobileSmsStore&);
+	};
+
+/*********************************************************/
+//
+// NAM Storage (RMobileNamStore)
+//
+/*********************************************************/
+
+
+
+class CNamStorePtrHolder;
+class CMobilePhoneNamList;
+class CMobilePhoneNamListV4;
+
+class RMobileNamStore : public RMobilePhoneStore
+/**
+Provides client access to NAM storage functionality provided by TSY
+
+*/
+	{
+public:
+	IMPORT_C RMobileNamStore();
+	IMPORT_C TInt Open(RMobilePhone& aPhone);
+	IMPORT_C void Close();
+
+
+
+	class TMobileNamStoreInfoV1 : public RMobilePhoneStore::TMobilePhoneStoreInfoV1
+	/**
+	Defines information about a NAM store
+	
+	@publishedPartner
+	@released
+	*/
+		{
+	public:
+		IMPORT_C TMobileNamStoreInfoV1();
+	public:
+	/** The number of enabled NAMs within the NAM store.
+	
+	Modes: CDMA */
+		TInt iNamCount;
+	/** The index of the NAM that is currently the active NAM, will be between 0 and 
+	iNamCount-1.
+	
+	Modes: CDMA */
+		TInt iActiveNam;
+		};
+
+/** A typedef'd packaged TMobileNamStoreInfoV1 for passing through a generic API 
+member function. */
+	typedef TPckg<TMobileNamStoreInfoV1> TMobileNamStoreInfoV1Pckg;
+
+	IMPORT_C void SetActiveNam(TRequestStatus& aReqStatus, TInt aNamId) const;
+
+	enum
+		{
+		/* The original maximum NAM parameter size for a TMobileNamEntryV1 */
+		KMaxNamParamSize = 64,
+		/* Updated maximum NAM parameter size for TMobileNamEntryV4 */
+		KMaxNamParamSizeV4 = 256
+		};
+
+	class TMobileNamEntryV1 : public RMobilePhoneStore::TMobilePhoneStoreEntryV1
+	/**
+	Defines contents of a NAM store entry
+	
+	@publishedPartner
+	@released
+	*/
+		{
+	public:
+		IMPORT_C TMobileNamEntryV1();
+	public:
+		void InternalizeL(RReadStream& aStream);
+		void ExternalizeL(RWriteStream& aStream) const;
+	public:
+	/** The NAM that is to be accessed, will be between 0 and TMobileNamStoreInfoV1::iNamCount-1.
+	
+	Modes: CDMA */
+		TInt iNamId;
+	/** The identifier of the NAM parameter to be accessed.
+	
+	TSY must define values of parameter identifiers.
+	
+	Modes: CDMA */
+		TInt iParamIdentifier;
+	/** The data contents of the selected parameter.
+	
+	Modes: CDMA
+	
+	@see KMaxNamParamSize */
+		TBuf8<KMaxNamParamSize> iData;
+		};
+
+	/** A typedef'd packaged TMobileNamEntryV1 for passing through a generic API member 
+	function. */
+	typedef TPckg<TMobileNamEntryV1> TMobileNamEntryV1Pckg;
+
+	/** Enumeration for the standard NAM parameters (see 3GPP2 C.S0005-A appendix F.3)
+	Modes: CDMA */
+	enum TStandardNamParameters
+		{
+		/** The 64-bit pattern stored in the Mobile Station and 
+			Home Location Register/Authentication Centre used to generate/update the 
+			mobile station’s Shared Secret Data
+			Corresponds to NAM Indicator 'A_KEY' */
+		EAKey,
+		/** 64-bit key used for authentication
+			Corresponds to NAM Indicator 'SSD_A(s-p)' */
+		ESharedSecretDataA,
+		/** 64-bit key used as input to generate encryption mask and long code
+			Corresponds to NAM Indicator 'SSD_B(s-p)' */
+		ESharedSecretDataB,
+		/** Modulo-64 event counter maintained by the mobile station and Authentication Center 
+			used for clone detection
+			Corresponds to NAM Indicator 'COUNT(s-p)' */
+		EParameterUpdateReceivedCount,
+		/** Class of the International Mobile Station Identity (IMSI) containing a MIN as 
+			the lower 10 digits 
+			Corresponds to NAM Indicator 'IMSI_M_CLASS(p)' */
+		EMinBasedImsiClass,
+		/** The class of the International Mobile Station Identity (IMSI) not containing a MIN as 
+			the lower 10 digits 
+			Corresponds to NAM Indicator 'IMSI_T_CLASS(p)' */
+		ETrueImsiClass,
+		/** 34-bit number derived from the IMSI M used as input for authentication
+			Corresponds to NAM Indicator 'IMSI_M_S(p)' */
+		EMinBasedImsiS,
+		/** 34-bit number derived from the IMSI T used as input for authentication
+			Corresponds to NAM Indicator 'IMSI_T_S(p)' */
+		ETrueImsiS,
+		/** Number of digits in the IMSI M minus 4
+			Corresponds to NAM Indicator 'IMSI_M_ADDR_NUM(p)' */
+		EMinBasedImsiAddressNum,
+		/** The number of digits in the IMSI T minus 4
+			Corresponds to NAM Indicator 'IMSI_T_ADDR_NUM(p)' */
+		ETrueImsiAddressNum,
+		/** The 11th and 12th digits in the IMSI M
+			Corresponds to NAM Indicator 'IMSI_M_11_12(p)' */
+		EMinBasedImsiDigits11and12,
+		/** The 11th and 12th digits in the IMSI T
+			Corresponds to NAM Indicator 'IMSI_T_11_12(p)' */
+		ETrueImsiDigits11and12,
+		/** The country code for the IMSI M
+			Corresponds to NAM Indicator 'MCC_M(p)' */
+		EMinBasedMobileCountryCode,
+		/** The country code for the IMSI T
+			Corresponds to NAM Indicator 'MCC_T(p)' */
+		ETrueMobileCountryCode,
+		/** Up to 15 digit dialable number associated with the mobile station through a service 
+			subscription
+			Corresponds to NAM Indicator 'MDN(p)' */
+		EMobileDirectoryNumber,
+		/** 4-bit number giving the length of the assigning Temporary Mobile Station Identity (TMSI) zone 
+			(can range from 1 to 8 octets)
+			Corresponds to NAM Indicator 'ASSIGNING_TMSI_ZONE_LEN(s-p)' */
+		EAssigningTmsiZoneLen,
+		/** Temporary Mobile Station Identity (TMSI) zone is an arbitrary set of base stations 
+			for the administrative assignment of TMSI
+			Corresponds to NAM Indicator 'ASSIGNING_TMSI_ZONE(s-p)' */
+		EAssigningTmsiZone,
+		/** The uniquely assigned number to a mobile station inside a TMSI zone
+			Corresponds to NAM Indicator 'TMSI_CODE(s-p)' */
+		ETmsiCode,
+		/** The expiration time used to automatically delete the assigned TMSI
+			Corresponds to NAM Indicator 'TMSI_EXP_TIME(s-p)' */
+		ETmsiExpTime,
+		/** Mobile station's home System Id for 800MHz analog operation
+			Corresponds to NAM Indicator 'HOME_SID(p)' */
+		EHomeSystemIdAnalog,
+		/** Mobile station's home System Id
+			Corresponds to NAM Indicator 'SID(p)' */
+		EHomeSystemId,
+		/** Mobile station's home Network Id
+			Corresponds to NAM Indicator 'NID(p)' */
+		EHomeNetworkId,
+		/** Mobile station is configured to receive mobile station terminated calls when 
+			using a home (SID, NID) pair
+			Corresponds to NAM Indicator 'MOB_TERM_HOME(p)' */
+		EReceiveCallsHome,
+		/** The mobile station is configured to receive mobile station terminated calls when 
+			it is a foreign SID roamer
+			Corresponds to NAM Indicator 'MOB_TERM_FOR_SID(p)' */
+		EReceiveCallsForeignSystem,
+		/** The mobile station is configured to receive mobile station terminated calls when 
+			it is a foreign NID roamer
+			Corresponds to NAM Indicator 'MOB_TERM_FOR_NID(p)' */
+		EReceiveCallsForeignNetwork,
+		/**	A TSY may use this as the first TSY-defined non-standard NAM parameter */
+		ENumStandardNamParameters
+		};
+
+	class TMobileNamEntryV4 : public RMobilePhoneStore::TMobilePhoneStoreEntryV1
+	/**
+	Defines contents of a NAM store entry
+
+	The differences between the original TMobileNamEntryV1, and updated TMobileNamEntryV4 are:
+	- the maximum mobile NAM parameter size is KMaxNamParamSize(64) for TMobileNamEntryV1
+	  and KMaxNamParamSizeV4(256) for TMobileNamEntryV4
+	- TMobileNamEntryV4 defines a set of standard NAM parameters for the iParamIdentifier as
+	  described in 3GPP2 C.S0005-A appendix F.3
+	
+	@publishedPartner
+	@released
+	*/
+		{
+	public:
+		IMPORT_C TMobileNamEntryV4();
+	public:
+		void InternalizeL(RReadStream& aStream);
+		void ExternalizeL(RWriteStream& aStream) const;
+	public:
+	/** The NAM that is to be accessed, will be between 0 and TMobileNamStoreInfo::iNamCount-1.
+	
+	Modes: CDMA */
+		TInt iNamId;
+
+	/** The identifier of the NAM parameter to be accessed.
+	iParamIdentifier will be a TStandardNamParameters value if a standard NAM parameter is being accessed, 
+	however a TSY may support and define NAM parameters in addition to those given by TStandardNamParameters	
+	Modes: CDMA */
+		TInt iParamIdentifier;
+
+	/** The data contents of the selected parameter.
+	
+	Modes: CDMA
+	
+	@see KMaxNamParamSizeV4 */
+		TBuf8<KMaxNamParamSizeV4> iData;
+		};
+
+	/** A typedef'd packaged TMobileNamEntryV4 for passing through a generic API member 
+	function. */
+	typedef TPckg<TMobileNamEntryV4> TMobileNamEntryV4Pckg;
+
+	IMPORT_C void StoreAllL(TRequestStatus& aReqStatus, TInt aNamId, CMobilePhoneNamList* aNamList) const;
+	IMPORT_C void StoreAllL(TRequestStatus& aReqStatus, TInt aNamId, CMobilePhoneNamListV4* aNamList) const;
+
+protected:
+	IMPORT_C void ConstructL();
+private:
+	RMobileNamStore(const RMobileNamStore&);
+	};
+
+
+/*********************************************************/
+//
+// Own Number Storage (RMobileONStore)
+//
+/*********************************************************/
+
+
+
+class CONStorePtrHolder;
+class CMobilePhoneONList;
+	
+class RMobileONStore : public RMobilePhoneStore
+/**
+Provides client access to Own Number storage functionality provided by TSY
+
+*/
+	{
+public:
+	IMPORT_C RMobileONStore();
+	IMPORT_C TInt Open(RMobilePhone& aPhone);
+	IMPORT_C void Close();
+
+	
+
+	class TMobileONStoreInfoV1 : public RMobilePhoneStore::TMobilePhoneStoreInfoV1
+	/**
+	Defines information about an Own Number store
+	
+	@publishedPartner
+	@released
+	*/
+		{
+	public:
+		IMPORT_C TMobileONStoreInfoV1();
+	public:
+	/** The maximum length of the own phone number can be. */
+		TInt iNumberLen;
+	/** The maximum length the text field can be. */
+		TInt iTextLen;
+		};
+
+/** A typedef'd packaged TMobileONStoreInfoV1 for passing through a generic API 
+member function. */
+	typedef TPckg<TMobileONStoreInfoV1> TMobileONStoreInfoV1Pckg;
+
+	enum
+		{
+		KOwnNumberTextSize = 20
+		};
+
+	
+
+	class TMobileONEntryV1 : public RMobilePhoneStore::TMobilePhoneStoreEntryV1
+	/**
+	Defines contents of a Own Number store entry
+	
+	@publishedPartner
+	@released
+	*/
+		{
+	public:
+		IMPORT_C TMobileONEntryV1();
+	public:
+		void InternalizeL(RReadStream& aStream);
+		void ExternalizeL(RWriteStream& aStream) const;
+	public:
+	/** Network mode. */
+		RMobilePhone::TMobilePhoneNetworkMode iMode;
+	/** Mobile call service type.
+	
+	@see RMobilePhone::TMobileService */
+		RMobilePhone::TMobileService iService;
+	/** Own number.
+	
+	@see RMobilePhone::TMobileAddress */
+		RMobilePhone::TMobileAddress iNumber;
+	/** The name-tag associated with own number (e.g. "Voice Number"). */
+		TBuf<KOwnNumberTextSize> iText;
+		};
+
+/** A typedef'd packaged TMobileONEntryV1 for passing through a generic API member 
+function. */
+	typedef TPckg<TMobileONEntryV1> TMobileONEntryV1Pckg;
+
+	IMPORT_C void StoreAllL(TRequestStatus& aReqStatus, CMobilePhoneONList* aONList) const;
+
+protected:
+	IMPORT_C void ConstructL();
+private:
+	RMobileONStore(const RMobileONStore&);
+	};
+
+/*********************************************************/
+//
+// Emergency Number Storage (RMobileENStore)
+//
+/*********************************************************/
+
+
+
+class CMobilePhoneENList;
+
+class RMobileENStore : public RMobilePhoneStore
+/**
+Provides client access to Emergency Number storage functionality provided by TSY
+
+*/
+	{
+public:
+	IMPORT_C RMobileENStore();
+	IMPORT_C TInt Open(RMobilePhone& aPhone);
+	IMPORT_C void Close();
+
+	enum 
+		{
+		KEmergencyNumberSize  = 6,
+		KEmergencyAlphaTagSize = 20
+		};
+
+/** Enumerated list of Emergency Number entries.
+
+Mode: WCDMA */
+	enum TMobilePhoneENServiceCategory
+		{
+	/** This number provides emergency care by the police department. */
+		KServiceCatPolice =0x0001,
+	/** This number provides emergency care by the ambulance department. */
+		KServiceCatAmbulance =0x0002,
+	/** This number provides emergency care by the fire brigade department. */
+		KServiceCatFireBrigade =0x0004,
+	/** This number provides emergency care by the marine guard department. */
+		KServiceCatMarineGuard =0x0008,
+	/** This number provides emergency care by the mountain rescue department. */
+		KServiceCatMountainRescue =0x0010
+		// Reserved types: 0x0020,0x0040,
+		};
+
+	
+
+/** Buffer to hold the emergency number in. */
+	typedef TBuf<KEmergencyNumberSize> TEmergencyNumber;
+
+	class TMobileENEntryV1 : public RMobilePhoneStore::TMobilePhoneStoreEntryV1
+	/**
+	Defines contents of a Emergency Number store entry
+	@publishedPartner
+	@released
+	*/
+		{
+	public:
+		IMPORT_C TMobileENEntryV1();
+	public:
+		void InternalizeL(RReadStream& aStream);
+		void ExternalizeL(RWriteStream& aStream) const;
+	public:
+	/** Indicates whether the emergency number is applicable in all situations (=EFalse) 
+	or only when the MS is registered to a specific GSM or CDMA network (=ETrue). */
+		TBool iNetworkSpecific;
+	/** The network mode. Only applicable if iNetworkSpecific equals ETrue.
+
+	Modes: Common
+	
+	@see RMobilePhone::TMobilePhoneNetworkMode */
+		RMobilePhone::TMobilePhoneNetworkMode iMode;
+	/** Country code. Only applicable if iNetworkSpecific equals ETrue.
+	
+	Modes: Common
+	
+	@see RMobilePhone::TMobilePhoneNetworkCountryCode */
+		RMobilePhone::TMobilePhoneNetworkCountryCode iCountryCode;
+	/** Network identity. Only applicable if iNetworkSpecific equals ETrue.
+	
+	Modes: Common
+	
+	@see RMobilePhone::TMobilePhoneNetworkIdentity */
+		RMobilePhone::TMobilePhoneNetworkIdentity iIdentity;
+	/** Emergency number.
+	
+	Modes: Common
+	
+	@see TEmergencyNumber */
+		TEmergencyNumber             iNumber;
+	/** Emergency call number type. It is used to display information about the dialed 
+	emergency number (e.g. "Police", "Ambulance", "Fire brigade", etc.)
+	
+	Modes: WCDMA */
+		TBuf<KEmergencyAlphaTagSize> iAlphaId;
+		//TInt should map to TMobilePhoneENServiceCategory.
+		//It was not changed to maintain source compatibility
+		
+	/** Emergency call type indicator, which contains information to be sent to the 
+	network indicating the type of emergency call.
+	
+	The field is for future reference only and it is set to RFU (Reserved for
+	Future Use) as it is currently not being used, as specified in section 4.2.21 
+	TS 31.102 v3.3.0 Rel 99.
+	
+	Modes: WCDMA */
+		TInt	                     iCallType; 
+		};
+
+	typedef TPckg<TMobileENEntryV1> TMobileENEntryV1Pckg;
+
+protected:
+	IMPORT_C void ConstructL();
+private:
+	RMobileENStore(const RMobileENStore&);
+	};
+
+
+/*********************************************************/
+//
+// RMobilePhoneBookStore 
+//
+/*********************************************************/
+
+
+
+class CPhoneBookStorePtrHolder;
+class CMobilePhoneBookList;
+
+class RMobilePhoneBookStore : public RMobilePhoneStore
+/** Provides member functions for clients to access phone 
+books that are stored in ICC memory or in non-volatile memory on the phone 
+itself. This sub-session and the member functions within this section must 
+be supported if the TSY indicates that it supports the MobilePhonebookStore 
+functional unit.
+@publishedPartner
+@released 
+*/
+	{
+public:
+	IMPORT_C RMobilePhoneBookStore();
+	IMPORT_C TInt Open(RMobilePhone& aPhone, const TDesC& aStore);
+	IMPORT_C TInt Open(RMobilePhone& aPhone, const TDesC& aStore, const TDesC& aMode);
+	IMPORT_C void Close();
+
+/** Describes the specialized phone book capabilities.
+
+Modes: Common */
+	enum TMobilePhoneBookCaps
+		{
+	/** New entries can only be written to (or deleted from) the phone book with the 
+	PIN2 password or equivalent.
+	
+	Modes: Common */
+		KCapsRestrictedWriteAccess = 0x00000001,
+	/** The phonebook supports the second name field.
+	
+	Modes: WCDMA */
+		KCapsSecondNameUsed        = 0x00000002,
+	/** The phonebook supports the additional number (with optional Text, TON, NPI 
+	and Bearer Capability) field.
+	
+	Modes: WCDMA */
+		KCapsAdditionalNumUsed     = 0x00000004,
+	/** The phonebook supports the group name field.
+	
+	Modes: WCDMA */
+		KCapsGroupingUsed		   = 0x00000008,
+	/** The phonebook supports entry control and hidden flag fields.
+
+	Modes: WCDMA */
+		KCapsEntryControlUsed      = 0x00000010,
+	/** The phonebook supports the email address field.
+	
+	Modes: WCDMA */
+		KCapsEmailAddressUsed      = 0x00000020,
+	/** The phonebook supports the bearer capability IE field.
+	
+	Modes: WCDMA */
+		KCapsBearerCapUsed		   = 0x00000040,
+	/** The phonebook supports retrieval of the phonebook's PBID and Change Counter 
+	- and for each entry its UID field.
+	
+	Modes: WCDMA */
+		KCapsSynchronisationUsed   = 0x00000080
+		};
+
+/** Described the location of the phone book.
+
+Modes: Common for all */
+	enum TMobilePhoneBookLocation
+		{
+	/** The phonebook's location is unknown. */
+		ELocationUnknown,
+	/** The phonebook is located in ICC (SIM/R-UIM) memory. */
+		ELocationIccMemory,
+	/** The phonebook is located in Phone (ME) memory. */
+		ELocationPhoneMemory,
+	/** The phonebook is located in an external memory. */
+		ELocationExternalMemory,
+	/** The phonebook entries are dispersed over a combination of memory locations. */
+		ELocationCombinedMemory
+		};
+
+	enum
+		{
+		KMaxPBIDSize=15
+		};
+
+/** Defines a modifiable buffer descriptor to contain the phone book identity. 
+Used in TMobilePhoneBookInfoV1. */
+	typedef TBuf8<KMaxPBIDSize> TMobilePhoneBookIdentity;
+
+	
+
+	class TMobilePhoneBookInfoV1 : public RMobilePhoneStore::TMobilePhoneStoreInfoV1
+	/**
+	Defines information about a Phonebook store.
+	@publishedPartner
+	@released
+	*/
+		{
+	public:
+	/** Trivial constructor. Initializes iMaxNumLength=-1; iMaxTextLength=-1; iLocation=ELocationUnknown; 
+	iChangeCounter=0; iExtensionId=KETelMobilePhonebookStoreV1; */
+		IMPORT_C TMobilePhoneBookInfoV1();
+	public:
+	/** The maximum number of characters for the number in a phonebook entry.
+	
+	Modes: Common */
+		TInt    iMaxNumLength;
+	/** The maximum number of characters for the text tag in a phonebook entry.
+	
+	Modes: Common */
+		TInt    iMaxTextLength;
+	/** The memory location of this phonebook.
+	
+	Modes: Common
+	
+	@see TMobilePhoneBookLocation */
+		TMobilePhoneBookLocation iLocation;
+	/** The contents of the Change Counter file in a USIM phonebook.
+	
+	Modes: WCDMA */
+		TUint16 iChangeCounter;
+	/** A unique identity for this type of phonebook.
+	
+	If this is a SIM or R-UIM phonebook then it will equal the ICCID of the card.
+	
+	If this is a USIM phonebook then it will equal the PBID of the phonebook. 
+	
+	Modes: Common
+	
+	@see TMobilePhoneBookIdentity */
+		TMobilePhoneBookIdentity iIdentity; 
+		};
+
+/** Packages the TMobilePhoneBookInfoV1 into a TMobilePhoneBookInfoV1Pckg. */
+	typedef TPckg<TMobilePhoneBookInfoV1> TMobilePhoneBookInfoV1Pckg;
+
+	
+	class TMobilePhoneBookInfoV2 : public TMobilePhoneBookInfoV1
+/** Defines information about a Phonebook store for version v2.0 of the API.
+@publishedPartner
+@released */
+		{
+	public:
+		IMPORT_C TMobilePhoneBookInfoV2();
+	public:
+	/** The type of the phonebook which relates to its location (ICC/UICC/CDMA).
+	
+	Mode: Common */
+		TName iPhBkMode; 
+		};
+
+/** Packages the TMobilePhoneBookInfoV2 into a TMobilePhoneBookInfoV1Pckg. */
+	typedef TPckg<TMobilePhoneBookInfoV2> TMobilePhoneBookInfoV2Pckg;
+
+
+	/** Defines information about a Phonebook store for version v5.0 of the API.
+
+	Extends the v2.0 API to allow additional information about the phonebook
+	(Maximum number of second name fields, Maximum number of additional number fields,
+	Maximum number of additional group name fields, Maximum number of email address fields)
+	to be retieved where available. 
+
+	@publishedPartner
+	@released*/
+	class TMobilePhoneBookInfoV5 : public TMobilePhoneBookInfoV2
+		{
+	public:
+		IMPORT_C TMobilePhoneBookInfoV5();
+	public:
+		/** The maximum number of Second Name fields that can be used. */
+		TInt iMaxSecondNames;
+		
+		/** The maximum text length for Second Name fields. */
+		TInt iMaxTextLengthSecondName;
+
+		/** The maximum number of additional number fields that can be used. */
+		TInt iMaxAdditionalNumbers;
+		
+		/** The maximum number length for Additional Number fields. */
+		TInt iMaxNumLengthAdditionalNumber;
+		
+		/** The maximum text length for Additonal Number fields. */
+		TInt iMaxTextLengthAdditionalNumber;
+
+		/** The maximum number of additional Group Name fields that can be used. */
+		TInt iMaxGroupNames;
+		
+		/** The maximum text length for Group Name fields. */
+		TInt iMaxTextLengthGroupName;
+		
+		/** The maximum number of additional E-Mail address fields that can be used. */
+		TInt iMaxEmailAddr;
+		
+		/** The maximum text length for Email Address fields. */
+		TInt iMaxTextLengthEmailAddr;
+		};
+
+	/** Packages the TMobilePhoneBookInfoV5 into a TMobilePhoneBookInfoV5Pckg. */
+	typedef TPckg<TMobilePhoneBookInfoV5> TMobilePhoneBookInfoV5Pckg;
+
+
+	// check these fields - not sure all are correct
+/** The following Tag IDs are used to encode/decode the phonebook entries to/from 
+the TLV format. Each field will have a unique identifier and will be followed 
+by the field length. The type of data associated with the field is also specified 
+below. 
+
+Some fields do not have any data and just serve as separators within the buffer 
+- in these cases the Data Type column is set to not applicable (n/a).
+
+Modes: Common */
+	enum TMobilePBFieldTags
+		{
+	/** Tag id for the beginning of a new phonebook entry.
+	
+	Data type: n/a.
+	
+	Modes: Common */
+		ETagPBNewEntry		=0xA0,
+	/** Tag id for the Unique ID field.
+	
+	Data type: TUint16
+
+	Modes: WCDMA */
+		ETagPBUniqueId		=0xB0,
+	/** Tag id for the Index within the ADN record.
+	
+	Data type: TUint16
+
+	Modes: Common */
+		ETagPBAdnIndex		=0xC0,
+	/** Tag id for a Text field within the ADN/ANR record.
+	
+	Data type: TDes16
+	
+	Modes: Common */
+		ETagPBText			=0xC1,
+	/** Tag id for a Number field within the ADN/ANR record.
+	
+	Data type: TDes16
+	
+	Modes: Common */
+		ETagPBNumber		=0xC2,
+	/** Tag id for a TON/NPI byte within the ADN/ANR record.
+	
+	Data type: TUint8
+	
+	Modes: Common */
+		ETagPBTonNpi		=0xC3,
+	/** Tag id for a Bearer Capability IE associated to the ADN/ANR record.
+	
+	Data type: TDes8
+	
+	Modes: GSM/WCDMA */
+		ETagPBBearerCap		=0xC4,
+	/** Tag id for the beginning of an Additional Number entry within the phonebook 
+	entry.
+	
+	Data type: n/a
+	
+	Modes: WCDMA */
+		ETagPBAnrStart		=0xC5,
+	/** Tag id for the Second Name associated to the ADN record.
+	
+	Data type: TDes16
+	
+	Modes: WCDMA */
+		ETagPBSecondName	=0xC6,
+	/** Tag id for a Group Name associated to the ADN record.
+	
+	Data type:TDes16
+	
+	Modes: WCDMA */
+		ETagPBGroupName		=0xC7,
+	/** Tag id for an Email Address associated to the ADN record.
+	
+	Data type: TDes16
+	
+	Modes: WCDMA */
+		ETagPBEmailAddress	=0xC8,
+	/** Tag id for the Entry Control byte associated to the ADN record.
+	
+	Data type: TUint8
+	
+	Modes: WCDMA */
+		ETagPBEntryControl	=0xC9,
+	/** Tag id for the Hidden Information byte associated to the ADN record.
+	
+	Data type: TUint8
+	
+	Modes: WCDMA */
+		ETagPBHiddenInfo	=0xCA,
+		ETagPBDateTime		=0xCB,
+		ETagPBDuration		=0xCC,
+		ETagPBCallStatus	=0xCD,
+		ETagPBEntryStatus	=0xCE
+		};
+
+
+	// API/TSY internal type
+	struct TPBIndexAndNumEntries
+/** A structure to hold the phone book index and number of entries. */
+		{
+	/** Index for the phone book. */
+		TInt iIndex;
+		TInt iNumSlots;
+		};
+
+	IMPORT_C void Read(TRequestStatus& aReqStatus, TInt aIndex, TInt aNumSlots, TDes8& aPBData) const;
+	IMPORT_C void Write(TRequestStatus& aReqStatus, const TDesC8& aPBData, TInt& aIndex) const;
+
+protected:
+	IMPORT_C void ConstructL();
+private:
+	RMobilePhoneBookStore(const RMobilePhoneBookStore&);
+	};
+
+/*********************************************************/
+//
+// RMobileConferenceCall
+//
+/*********************************************************/
+
+
+
+class CMobileConferenceCallPtrHolder;
+
+class RMobileConferenceCall : public RTelSubSessionBase
+/** Provides access to conference call functionality provided by TSY.
+
+Conference calls allow users to conduct multi-connection voice calls, for example
+simultaneous communication to more than one remote party. All participants 
+within a conference call can hear and speak to each other. There is a controlling 
+party that initiates and manages the conference.
+
+Conference calling is possible in both GSM and CDMA mode and the actions to 
+initiate a 3-way conference are the same in either mode. However, GSM conference 
+calls offer more functionality and the number of remote parties is limited 
+in CDMA mode to 2 and in GSM mode to 5.
+
+The Multimode ETel API uses a new sub-session called RMobileConferenceCall 
+as a model for a conference call. The conference call object will be an aggregation 
+of all the RMobileCall objects that are part of the conference call. It will 
+be possible for clients to manipulate both the conference call as a whole 
+and individual calls within a conference call depending on the dynamic capabilities 
+of each of these objects.
+
+Please note that RMobileConferenceCall is replacing the RCallGroup abstraction 
+used in the GSM API. This was an optimisation decision. The call group abstraction 
+placed a large burden on a TSY to create call groups, monitor the calls in 
+each group and trigger notification when calls were added or moved, probably 
+even when a conference call was not ongoing. Clients will probably only open 
+a RMobileConferenceCall when the user has decided to make a conference call 
+and by having just one object replace three call groups it will also reduce 
+the number of notifications that would trigger in response to conference call 
+events. With a view to the future, without call groups there are also no longer 
+any restrictions to the allowed types of active calls (simultaneous, separate 
+voice and data calls are possible).
+
+The methods within this section must be supported if the TSY supports MobileConferenceCall 
+functional unit. 
+
+*/
+	{
+public:
+	IMPORT_C RMobileConferenceCall();
+	IMPORT_C TInt Open(RMobilePhone& aPhone);
+	IMPORT_C void Close();
+
+/** Conference call capabilities. */
+	enum TMobileConferenceCallCaps
+		{
+	/** Indicates that a conference call can be created. */
+		KCapsCreate = 0x00000001,
+	/** Indicates that a conference call can be terminated. */
+		KCapsHangUp = 0x00000002,
+	/** Indicates that a conference call exists and can be swapped to the opposite 
+	state (active or hold). */
+		KCapsSwap = 0x00000004
+		};
+
+	IMPORT_C TInt GetCaps(TUint32& aCaps) const;
+	IMPORT_C void NotifyCapsChange(TRequestStatus& aReqStatus, TUint32& aCaps) const;
+
+	IMPORT_C void CreateConference(TRequestStatus& aReqStatus) const;
+	IMPORT_C void AddCall(TRequestStatus& aReqStatus, const TName& aCallName) const;
+	IMPORT_C void Swap(TRequestStatus& aReqStatus) const;
+	IMPORT_C void HangUp(TRequestStatus& aReqStatus) const;
+	IMPORT_C TInt EnumerateCalls(TInt& aCount) const;
+	IMPORT_C TInt GetMobileCallInfo(TInt aIndex, TDes8& aCallInfo) const;
+
+/** Conference call status. */
+	enum TMobileConferenceStatus
+		{
+	/** The conference call is in the idle state. */
+		EConferenceIdle,
+	/** The conference call is in the active, connected state. */
+		EConferenceActive,
+	/** The conference call is in the held, connected state. */
+		EConferenceHold
+		};
+	
+	IMPORT_C TInt GetConferenceStatus(TMobileConferenceStatus& aStatus) const;
+	IMPORT_C void NotifyConferenceStatusChange(TRequestStatus& aReqStatus, TMobileConferenceStatus& aStatus) const;
+
+/** Conference events. */
+	enum TMobileConferenceEvent
+		{
+	/** A call has been added to the conference. */
+		EConferenceCallAdded,		// Name of the call added returned in aCallName
+	/** A call has been removed from the conference. */
+		EConferenceCallRemoved,		// Name of the call terminated returned in aCallName
+	/** Names of the two calls used to build the conference call returned in aCallName. */
+		EConferenceBuilt,		// Names of the two calls used to build the conference call returned in aCallName
+	/** No name provided */
+		EConferenceTerminated,	// No name provided
+	/** No name provided. */
+		EConferenceSwapped,		// No name provided
+	/** Name of the call being seperated. */
+		EConferenceSplit		// Name of the call being seperated
+		};
+
+	IMPORT_C void NotifyConferenceEvent(TRequestStatus& aReqStatus, TMobileConferenceEvent& aEvent, TName& aCallName) const;
+
+private:
+	CMobileConferenceCallPtrHolder* iMmPtrHolder;
+	RMobileConferenceCall(const RMobileConferenceCall&);
+protected:
+	IMPORT_C void ConstructL();
+	IMPORT_C void Destruct();
+	};
+
+
+/////////////////////////////////////////////////////////////////////////////////////
+//
+// EAP-SIM Authentication functional unit
+//
+/////////////////////////////////////////////////////////////////////////////////////
+
+class CMobileSmartCardEapPtrHolder;
+
+/**
+This sub-session opens under RMobilePhone.
+
+RMobileSmartCardEap provides the client with access to a Smart Card
+Application's EAP-capability (if one exists).
+
+(See ETSI TS 102.310 v6.2.0 and RFC3748)
+
+To submit authentication challenges or requests, a client must use
+CAsyncSmartCardEapAuthentication in conjunction with this sub-session.
+
+@see CAsyncSmartCardEapAuthentication
+@publishedPartner
+@prototype
+*/
+class RMobileSmartCardEap : public RTelSubSessionBase
+	{
+	friend class CAsyncSmartCardEapAuthentication;
+
+public:
+	/**
+	Class encapsulates EAP request packet data for authentication.
+
+	@see CAsyncSmartCardEapAuthentication
+
+	@publishedPartner
+	@prototype
+	*/
+	class CEapAuthenticateRequestDataV6 : public CBase
+		{
+	public:
+		IMPORT_C static CEapAuthenticateRequestDataV6* NewL();
+		IMPORT_C virtual void ExternalizeL(TPtr8& aBuffer);
+		IMPORT_C virtual void InternalizeL(const TDesC8& aBuffer);
+		IMPORT_C TUint VersionId() const;
+		IMPORT_C TPtr8 GetEapReqPacket() const;
+		IMPORT_C void SetEapReqPacketL(const TDesC8& aData);
+		IMPORT_C ~CEapAuthenticateRequestDataV6();
+
+	private:
+		CEapAuthenticateRequestDataV6();
+		void ConstructL();
+
+	protected:
+		/**
+		ETelMM's supported version.
+		*/
+		TUint iVersionId;
+
+	public:
+		/**
+		EAP-request packet in a flat buffer.
+		*/
+		CBufFlat* iEapReqPacket;
+		};
+
+	IMPORT_C RMobileSmartCardEap();
+
+	/**
+	EAP types are represented by one byte for standard EAP methods, and
+	eight bytes for extended methods.  Each byte specified in the
+	TEapType buffer should represent one semi-octet.  Therefore, a
+	maximum of 16-chars are needed for representing any possible EAP
+	type.  (See section 5.2 of ETSI TS 102.310 v6.2.0.)
+
+	@see RMobileSmartCardEap::TEapType
+
+	@publishedPartner
+	@prototype
+	*/
+	enum { KEapTypeSize = 16 };
+
+	/**
+	A typedef'd buffer to hold the EAP type for the subsequent
+	authentication that will be carried out on the Smart Card
+	Application.
+
+	The value specified must correspond to the pre-allocated type
+	identifiers for various EAPs (see
+	http://www.iana.org/assignments/eap-numbers).  Some known values
+	are given in etelmm.h.
+
+	The type must be specified in hexadecimal format, where each
+	character represents one semi-octet.
+
+	@see KETelSmartCardEapTypeMD5
+	@see KETelSmartCardEapTypeTLS
+	@see KETelSmartCardEapTypeSIM
+	@see KETelSmartCardEapTypeAKA
+	@see KETelSmartCardEapTypeTTLS
+	@see RMobileSmartCardEap::Open()
+
+	@publishedPartner
+	@prototype
+	*/
+	typedef TBuf8<KEapTypeSize> TEapType;
+
+	IMPORT_C TInt Open(RMobilePhone& aPhone, const RMobilePhone::TAID& aAID, const TEapType& aEapType);
+	IMPORT_C void InitialiseEapMethod(TRequestStatus& aReqStatus);
+	IMPORT_C void Close();
+
+	/**
+	Authentication status of the EAP supporting UICC application (See
+	section 7.2 of ETSI TS 102.310 v6.2.0).  One of these values is
+	returned on completion of an
+	RMobileSmartCardEap::GetAuthenticationStatus() request.
+
+	@see RMobileSmartCardEap::GetAuthenticationStatus()
+
+	@publishedPartner
+	@prototype
+	*/
+	enum TEapAuthStatus
+		{
+		/**
+		No authentication started
+		*/
+		ENoAuthStarted,    // 0
+		/**
+		Authenticating
+		*/
+		EAuthenticating,   // 1
+		/**
+		Authentication complete
+		*/
+		EAuthenticated,    // 2
+		/**
+		Held (authentication failure)
+		*/
+		EHeld              // 3
+		};
+
+	IMPORT_C void GetAuthenticationStatus(TRequestStatus& aReqStatus, TEapAuthStatus& aAuthStatus);
+
+	/**
+	TEapUserIdType should be used to request an identity from EF_PUId
+	or EF_Ps, when making an RMobileSmartCardEap::GetUserIdentity()
+	request.
+	(See sections 7.3 and 7.4, respectively, of ETSI TS	102.310 v6.2.0,
+	and RFC2486 - The Network Access Identifier).
+
+	@see RMobileSmartCardEap::GetUserIdentity()
+	@see RMobileSmartCardEap::TEapUserIdentityV6
+
+	@publishedPartner
+	@prototype
+	*/
+	enum TEapUserIdType
+		{
+		/** Identity is permanent type */
+		EPermanentIdentity,   // 0
+		/** Identity is pseudonym type */
+		EPseudonymIdentity    // 1
+		};
+
+	/**
+	Maximum permitted size of identity data.
+	*/
+	enum { KEapIdentityMaxSize = 255 };
+
+	/**
+	EAP User Identity data.  Ids are stored in EF_PUId or EF_Ps
+	(specified in sections 7.3 and 7.4, respectively, of ETSI TS
+	102.310 v6.2.0).
+
+	@see RMobileSmartCardEap::GetUserIdentity()
+
+	@publishedPartner
+	@prototype
+	*/
+	class TEapUserIdentityV6 : public RMobilePhone::TMultimodeType
+		{
+	public:
+		IMPORT_C TEapUserIdentityV6();
+	public:
+		/**
+		EAP-IDENTITY Data.
+		*/
+		TBuf8<KEapIdentityMaxSize> iEapId;
+		};
+
+	/**
+	A typedef'd packaged TEapUserIdentityV6 for passing through a
+	generic API method.
+
+	@publishedPartner
+	@prototype
+	*/
+	typedef TPckg<TEapUserIdentityV6> TEapUserIdentityV6Pckg;
+
+	IMPORT_C void GetUserIdentity(TRequestStatus& aReqStatus,
+	                              TEapUserIdType aRequestedIdType,
+	                              TDes8& aUserId);
+
+	/**
+	TEapKeyV6 should be used to request one of (currently) two keys
+	available on the EF_EAPKEYS of the UICC application (see section
+	7.1 of ETSI TS 102.310 v6.2.0).  This enumeration type should be
+	used in RMobileSmartCardEap::GetEapKey() to specify the key to be
+	retrieved.
+
+	@see RMobileSmartCardEap::TEapKeyV6
+	@see RMobileSmartCardEap::GetEapKey()
+
+	@publishedPartner
+	@prototype
+	*/
+	enum TEapKeyTag
+		{
+		/**
+		Used to request Master Session Key.
+		*/
+		EEapKeyMSK =  0x80,
+		/**
+		Used to request Extended Master Session Key.
+		*/
+		EEapKeyEMSK = 0x81
+		};
+
+	/**
+	Maximum size of an EAP Key stored on the DF_EAP's EF_EAPKEYS.
+	255 as each key has a length that can be specified by exactly one
+	byte (see section 7.1 of ETSI TS 102.310 v6.2.0).
+
+	@publishedPartner
+	@prototype
+	*/
+	enum { KEapKeyMaxSize = 255 };
+
+	/** 
+	EAP authentication key data.
+
+	@see RMobileSmartCardEap::GetEapKey()
+
+	@publishedPartner
+	@prototype
+	*/
+	class TEapKeyV6 : public RMobilePhone::TMultimodeType
+		{
+	public:
+		IMPORT_C TEapKeyV6();
+	public:
+		/**
+		EAP-KEY Data.
+		*/
+		TBuf8<KEapKeyMaxSize> iEapKey;
+		};
+
+	/**
+	A typedef'd packaged TEapKeyV6 for passing through a generic API
+	method.
+
+	@publishedPartner
+	@prototype
+	*/
+	typedef TPckg<TEapKeyV6> TEapKeyV6Pckg;
+
+	IMPORT_C void GetEapKey(TRequestStatus& aReqStatus, const TEapKeyTag aRequestedKey, TDes8& aKey);
+
+	/**
+	Status of the DF_EAP this subsession refers to.  The status is
+	basically an indication of whether the DF is in use by another sub-
+	session client instance.
+
+	NotifyEapMethodAccessStatusChange() will give a notification when
+	the status changes.
+
+	Status will change when the first client calls
+	InitialiseEapMethod() on this sub-session.  When the same client
+	calls ReleaseEapMethod() (or Close()), the status will change
+	again.  This allows mutually exclusive access to the DF_EAP.  All
+	other RMobileSmartCardEap hanles will get an error if they attempt
+	to make requests that access the same DF_EAP.
+
+	@see RMobileSmartCardEap::NotifyEapMethodAccessStatusChange()
+	@see RMobileSmartCardEap::ReleaseEapMethod()
+	@see RMobileSmartCardEap::InitialiseEapMethod()
+
+	@publishedPartner
+	@prototype
+	*/
+	enum TEapMethodAccessStatus
+		{
+		/**
+		AID/DF_EAP has been reset, and the DF_EAP has not been
+		initialised by any other instance of RMobileSmartCardEap.
+		*/
+		EEapMethodAvailable,
+		/**
+		Another instance of RMobileSmartCardEap has initialised first
+		and taken ownership of the DF_EAP.  The DF_EAP is currently
+		active and EAP requests can be made.
+		*/
+		EEapMethodInUseApplicationActive,
+		/**
+		This instance of RMobileSmartCardEap still owns the lock on the
+		DF_EAP, but the application has been deactivated elsewhere.
+		The client should re-initialise before making further EAP
+		requests.
+
+		@see RMobileSmartCardEap::InitialiseEapMethod()
+		*/
+		EEapMethodInUseApplicationInactive,
+		/**
+		Lock on the DF_EAP has been released, but another DF_EAP method
+		is in use under the same AID, thus, cannot reset/initialise
+		this subsessions EAP method.  Client can only post a
+		notification and wait till status changes to
+		EEapMethodAvailable.
+
+		@see RMobileSmartCardEap::NotifyEapMethodAccessStatusChange()
+		*/
+		EEapMethodUnableToInitialise
+		};
+
+	IMPORT_C TInt ReleaseEapMethod();
+	IMPORT_C TInt GetEapMethodAccessStatus(TEapMethodAccessStatus& aEapMethodStatus);
+	IMPORT_C void NotifyEapMethodAccessStatusChange(TRequestStatus& aReqStatus, TEapMethodAccessStatus& aEapMethodStatus);
+	IMPORT_C TBool IsEapMethodOwner() const;
+
+protected:
+	IMPORT_C void ConstructL();
+	IMPORT_C void Destruct();
+
+private:
+	RMobileSmartCardEap(const RMobileSmartCardEap&);
+
+	TChar SeptChar(TInt aDigit);
+	void ConvertBinToText(const TDesC8& aBinData, TDes& aText);
+
+private:
+	/**
+	Pointer Holder for the RMobileSmartCardEap sub-session requests.
+	*/
+	CMobileSmartCardEapPtrHolder* iMmPtrHolder;
+	/**
+	True if this object is the first to request	InitialiseEapMethod()
+	on its <AID,EAPType> when the status is EEapMethodAvailable.
+	I.e. True only for the instance of RMobileSmartCardEap that
+	successfully passes the Wait() on iSemaphore.
+	*/
+	TBool iOwnsEapMethodLock;
+	/**
+	Semaphore is actually owned by TSY, and used by all instances of
+	RMobileSmartCardEap	to stop multiple access to the same EAP method
+	on any one application.
+	*/
+	RSemaphore iSemaphore;
+
+	};	// RMobileSmartCardEap
+
+/////////////////////////////////////////////////////////////////////////////////////
+//
+// LCS-MO-LR AND LCS-MT-LR
+//
+/////////////////////////////////////////////////////////////////////////////////////
+class CMobileLocationServicesPtrHolder;
+
+/**
+This sub-session opens under RMobilePhone.
+
+A new RMobileLocationServices class is used to add the ETelMM Support for Mobile Terminating Location Request,
+Mobile Originating Location Requests, A-Gps assistance data for the LBS Framework.
+
+RMobileLocationServices is derived from RTelSubSessionBase.RMobileLocationServices lists the 
+APIs,which provided the support for Mtlr, Molr, A-Gps assistance data requests.
+*/
+class RMobileLocationServices : public RTelSubSessionBase
+	{
+public:
+	
+	IMPORT_C RMobileLocationServices();
+    IMPORT_C TInt Open(RMobilePhone& aPhone);
+    IMPORT_C void Close();
+ 	/** 
+ 	Maximum length of the array used for TLcsRequestorIdString.
+ 	*/
+	enum { KLcsMaxRequestorIdStringSize = 256 };
+	/** 
+	Maximum length of the array used for TLcsClientBufferName.
+ 	*/
+	enum { KLcsMaxClientNameBufferSize = 256 };
+	/** 
+	Maximum length of the array used for TLcsClientExternalID.
+	*/
+	enum { KLcsMaxClientExternalIdSize = 64 };
+	/** 
+	Maximum length of the array used for TLcsLocationEstimate.
+	*/
+	enum { KLcsMaxLocationEstimateSize = 64 };
+	/** 
+	Maximum length of the array used for TLcsVelocityEstimate.
+	*/
+	enum { KLcsMaxVelocityEstimateSize = 64 };
+	/** 
+	Maximum length of the array used for TLcsGpsAssistanceData.
+	*/
+	enum { KLcsMaxGpsAssistanceDataSize = 64 };
+	/** 
+	A typedef'd buffer which holds the External ClientName Buffer.
+	@see KLcsMaxClientNameBufferSize
+	*/
+	typedef TBuf8<KLcsMaxClientNameBufferSize> TLcsClientNameBuffer;
+	/** 
+	A typedef'd buffer which holds the RequestorId String.
+	@see KLcsMaxRequestorIdStringSize
+	*/
+	typedef TBuf8<KLcsMaxRequestorIdStringSize> TLcsRequestorIdString;
+	/**
+	A typedef'd buffer which holds the Gps Assistance Data.
+	@see KLcsMaxGpsAssistanceDataSize
+	*/
+	typedef TBuf8<KLcsMaxGpsAssistanceDataSize> TGpsAssistanceData;
+	/**
+	A typedef'd buffer which holds the External ClientId.
+	@see KLcsMaxClientExternalIdSize
+	*/
+	typedef TBuf8<KLcsMaxClientExternalIdSize> TLcsClientExternalID;
+	/**
+	A typedef'd TUint8 which holds the Data Coding Scheme information.
+	*/
+	typedef TUint8 TLcsDataCodingScheme;
+	/**
+	A typedef'd buffer which holds the Location Estimate.
+	@see KLcsMaxLocationEstimateSize
+ 	*/
+	typedef TBuf8<KLcsMaxLocationEstimateSize> TLcsLocationEstimate;
+	/**
+	A typedef'd buffer which holds the Velocity Estimate.
+	@see KLcsMaxVelocityEstimateSize
+	*/
+	typedef TBuf8<KLcsMaxVelocityEstimateSize> TLcsVelocityEstimate;
+	/**
+	A typedef'd buffer which holds the GpsAssistanceData type.
+	@see KLcsMaxGpsAssistanceDataSize
+	*/
+	typedef TBuf8<KLcsMaxGpsAssistanceDataSize> TGpsAssistanceData;
+	typedef TUint8 TTransactionIdentifier;
+	typedef TUint8 TGPSI;
+ 	 /**
+     Note:Refer to 3GPP TS 23.271(Functional stage 2 description of Location Services (LCS)),
+     3GPP TS 24.030(Location Services (LCS); Supplementary service operations - Stage 3) and
+     3GPP TS 24.080(Mobile radio interface layer 3 supplementary services specification; Formats and coding)
+     for further details of MTLR and MOLR member data.
+     */
+ /*********************************************************************/ 
+ //                  MTLR                                             //
+ /*********************************************************************/   
+    /**
+    TNotificationType lists the various types of Notification
+    that can be expected from any MTLR-Location Notification coming from the Network,
+    These types depend on the Subscription Profile of the UE. 
+    
+    One of the TNotificationType is expected to be retrieved from the Network,
+    when a UE places a RMobileLocationServices::NotifyMtlr() request on the TSY.
+    @internalAll
+    */
+    enum TNotificationType
+		{
+		/**
+		Notification Type Unknown
+		*/
+		ENotificationTypeUnknown,
+		/**
+		The Location Request is accepted by default
+		*/
+		ENotifyLocationAllowed,
+		/**
+        This enum is used to indicate to the client, that the user should be notified of the incoming MTLR request, 
+        and that the user is expected to respond by granting/denying the request. By defualt, if the user 
+        does not provide a response, the request is granted
+		*/
+		ENotifyAndVerify_LocationAllowedIfNoResponse,
+		/**
+        This enum is used to indicate to the client, that the user should be notified of the incoming MTLR request, 
+        and that the user is expected to respond by granting/denying the request. By defualt, if the 
+        user does not provide a response, the request is denied.
+		*/
+		ENotifyAndVerify_LocationNotAllowedIfNoResponse,
+        /**
+        The network sends the information to the UE that the external client has privacy overide capability,
+        This indicator is received when an authenticated or emergency client had sent the request.
+		*/     
+        ELocationPrivacyOverride,  
+        /**
+        This enum is used to notify the UE that an incoming MTLR request was denied by the network for any of various 
+        reasons.
+		*/
+		ELocationNotAllowed                                      
+        };
+
+    
+    /**
+    TLocationEstimateType lists the various types of LocationEstimate
+    that can be expected from any MTLR-Location Notification request coming from the Network,
+    These types depend on the Subscription Profile of the UE.
+    
+    One of the TLocationEstimateType is expected to be retrieved from the Network,
+    when a UE places a RMobileLocationServices::NotifyMtlr() request on the TSY.
+    @internalAll
+    */
+    enum TLocationEstimateType
+		{
+		/**
+		Location Estimate Type Unknown.
+		*/
+		ELocationEstimateTypeUnknown,
+		/**
+		The External Client has requested for the Current Location of
+		the UE.
+		*/
+		ECurrentLocation,
+		/**
+		The External Client has requested for the Current Location of
+		the UE.Incase,if the request is accepted,But still it fails to
+		generate the Location report because of Measurement Control Failure.
+		The Client receives the Last Known Location.
+		*/
+		ECurrentOrLastKnownLocation,
+		/**
+		The External Client has requested for the initial location of the UE. The current 
+		location of the UE may or may not be the initial location.
+		*/
+		EInitialLocation
+		};	
+    
+    /**
+    TLcsClientNameV1 holds the details of the name of the External client, 
+    who is making the request via Network.
+    TLcsClientNameV1 is used by RMobileLocationServices::NotifyMtlr() request.
+    @see TLcsDataCodingScheme
+    @see TLcsClientNameBuffer
+    @internalAll
+    */
+    class TLcsClientNameV1
+    	{
+    public:
+    	/**
+    	TLcsDataCodingScheme holds the Data Coding Scheme information which is used
+    	to extract the ExternalClient name.
+    	*/
+    	TLcsDataCodingScheme iLcsDataCodingScheme;
+    	/**
+    	TLcsClientNameBuffer holds the Client name 		
+    	*/
+    	TLcsClientNameBuffer       iLcsClientNameBuffer;	
+    	};
+    
+    /**
+    TLcsRequestorIDV1 holds the details of the RequestorId i.e the details of the 
+    Network,Which is carrying the request of External Client to UE
+    TLcsRequestorIDV1 is used by RMobileLocationServices::NotifyMtlr() request.
+    @see TLcsDataCodingScheme
+    @see TLcsRequestorIdString 
+    @internalAll
+    */
+    class TLcsRequestorIDV1
+    	{
+    public:
+        /**
+    	TLcsDataCodingScheme holds the Data Coding Scheme information which is used
+    	to extract the RequestorId String.
+    	*/
+    	TLcsDataCodingScheme        iLcsDataCodingScheme;
+    	/**
+    	TLcsRequestorIdString holds the RequestorId String 		
+    	*/
+    	TLcsRequestorIdString       iLcsRequestorIdString;	
+    	};
+    
+    /**
+    TLocationExternalInfoV1 holds the details of the External client and the Requestor
+    TLocationExternalInfoV1 is used by RMobileLocationServices::NotifyMtlr() request
+    @see TLcsClientExternalID
+    @see TLcsClientNameV1
+    @see TLcsRequestorIDV1
+    @internalAll
+    */
+    class TLocationExternalInfoV1
+		{
+	public:
+		/**
+		TLcsClientExternalID gives the id of the External client.
+		*/
+		TLcsClientExternalID     iLcsClientID;
+		/**
+		TLcsClientNameV1 holds the name of the External Client.
+		*/
+		TLcsClientNameV1           iLcsClientName;
+		/**
+		TLcsRequestorIDV1 gives the details of requestor id
+		*/
+		TLcsRequestorIDV1          iLcsRequestorID;
+		};
+	
+	/**
+	TNotifyMtlrV7 holds the details of the MTLR request made by the External client.
+	TNotifyMtlrV7 is used by RMobileLocationServices::NotifyMtlr() request
+	@see TNotificationType
+	@see TLocationEstimateType
+	@see TLocationExternalInfoV1
+	@internalAll
+	*/
+	class TNotifyMtlrV7: public RMobilePhone::TMultimodeType 
+		{
+	public:
+		IMPORT_C TNotifyMtlrV7();
+	public:
+		/**
+		TNotificationType holds the type of notification request being made
+		*/
+		TNotificationType          iNotificationType;
+		/**
+		TLocationEstimateType holds the type of LocationEstimate is requested 
+		*/
+		TLocationEstimateType      iMtlrLocationEstimateType;
+		/**
+		TLocationExternalInfoV7  holds the details of the External client. 
+		*/
+		TLocationExternalInfoV1      iLocationInfo;
+        };
+	
+   	/**
+	A typedef'd packaged TNotifyMtlrV7 for passing through a
+	generic API method.
+
+	@internalAll
+	*/
+	typedef TPckg<TNotifyMtlrV7> TNotifyMtlrV7Pckg;
+	
+ //MTLR-RESPONSE
+ 	/**
+ 	TMtlrResponse is used by the OverLoaded RMobileLocationServices::SendMtlrResponse() API
+ 	It holds the type of response being sent back for the MTLR request made.
+ 	@internalAll
+ 	*/
+	
+	enum TMtlrResponse
+		{
+		/**
+		Mtlr Response Unknown.
+		*/
+		EMtlrResponseUnknown,
+		/**
+		The UE has denied the Location Request  of the External client.
+		@see RMobileLocationServices::SendMtlrResponse()
+		*/
+		EPermissionDenied ,
+		/**
+		The UE has granted  the Location Request  of the External client.
+		@see RMobileLocationServices::SendMtlrResponse()
+		*/
+		EPermissionGranted
+		};
+	
+	/**
+ 	TMtlrError is used by the Overloaded RMobileLocationServices::SendMtlrResponse() API
+ 	It holds the type of Error response being sent back for the MTLR request made.
+ 	@internalAll
+ 	*/
+ 	enum TMtlrError
+		{
+		/**
+		Mtlr Error Unknown.
+		*/
+		EMtlrErrorUnknown,
+		/**
+		This response is sent back to the network when System has failed to 
+		do the privacy check due to some Miscellaneous reasons
+		*/
+		ESystemFailure ,
+		/**
+		The response is sent when the privacy verification has failed because of Unexpected data 
+		values retrieved from the Location Notification request generated by the Network.
+		This generates an Error-Prone response from UE
+		*/
+		EUnexpectedDataValue	
+		};
+	
+	/**
+ 	TMtlrReject is used by the Overloaded RMobileLocationServices::SendMtlrResponse() API
+ 	It holds the details of the Response being rejected due to one of the problems reported to the UE
+ 	for the MTLR request being made.
+ 	@internalAll
+ 	*/
+ 	enum TMtlrReject
+		{
+		/**
+		Mtlr Reject Unknown.
+		*/
+		EMtlrRejectUnknown,
+		/**
+		This indication is given under a scenario where the UE wants to reject a request,
+		It is done by invoking Duplicate ID's.
+		*/
+		EDuplicateInvokeID,
+		/**
+		This indication is given under a scenario where the UE wants to reject a request, 
+		It is done by saying the operation is not recognized
+		*/
+		EUnrecognizedOperation,
+		/**
+		This invokes a problem indicating Resource Limitation.
+		*/
+		EResourceLimitation,
+		/**
+		This Invokes a problem initiating release.
+		*/
+		EInitiatingRelease,
+		/**
+		This invokes a problem indicating that  the ID linked with the Client information 
+		is unrecognized
+		*/
+		EUnrecognizedLinkedID,
+		/**
+		This invokes a problem of Linked Response Unexpected
+		*/
+		ELinkedResponseUnexpected,
+		/**
+		This invokes a problem of Unexpected Linked Operation
+		*/
+		EUnexpectedLinkedOperation,
+		/**
+		This invokes a problem of Mistyped Parameter.
+		*/
+		EMistypedParameter	
+		};
+	
+   /**************************************************************/
+   //                  MOLR                                      //
+   /**************************************************************/
+ 
+ 	/**
+ 	TMolrType is used by the SendMolr() API.
+ 	This gives an indication of type of Molr request the UE wants to invoke
+ 	@internalAll
+ 	*/
+ 	enum TMolrType
+		{
+		/**
+		MolrType UnKnown
+		*/
+		EMolrTypeUnknown,
+		/**
+		UE is requesting the Network for its Location Estimate  
+		*/
+		ELocationEstimate,
+		/**
+		UE is requesting the Network for  GPS Assistance data
+		*/
+		EAssistanceData,
+		/**
+		UE is requesting the Network for  DecipheringKeys
+		*/
+		EDecipheringKeys
+		};
+
+ 	/**
+ 	TResponseTime is used by SendMolr() API
+ 	This enum holds the various types of delay that an UE is expecting.
+ 	@internalAll
+ 	*/
+ 	enum TResponseTime
+  		{
+  		/**
+  		Response Time Unknown.
+		*/
+  		EResponseTimeunknown,
+  		/**
+  		This enum value indicates that the UE expects a Less Time Delay
+  		from Network in responding to its request
+  		*/
+  		ELowDelay,
+  		/**
+  		This enum value indicates that the UE expects a Long Time Delay
+  		from Network in responding to its request and is tolerant to it.
+  		*/
+  		EDelayTolerant		
+  		};
+ 	
+ 	/**
+ 	TLocationMethod is used by SendMolr() API
+ 	This is an enum which lists out all different types of Location methods that an UE can request
+ 	@internalAll
+ 	*/
+ 	enum TLocationMethod
+  		{
+  		/**
+  		Location Method Unknown
+		*/
+  		ELocationMethodunknown,
+  		/**
+  		This indication is given under a scenario where the UE wants a MS (Mobile Station) Based Location Fix.
+  		This can be termed as UE Assisted Location Fix(EOTD-Enhanced observed time difference).
+  		*/
+  		EMSBasedEOTD,
+  		/**
+  		This indication is given under a scenario where the UE wants a MS (Mobile Station) Assisted Location Fix.
+  		This can be termed out as UE based location fix.
+  		*/
+  		EMSAssistedEOTD,
+  		/**
+  		This indication is given under a scenario where the UE wants a MS (Mobile Station) Assisted GPS data.
+  		*/
+  		EMSAssistedGPS,
+  		/**
+  		This indication is given under a scenario where the UE wants a MS (Mobile Station) based location fix 
+  		(OTDOA-Observed time difference of arrival).
+  		*/
+  		EMSBasedOTDOA
+  		}; 
+   
+    /**
+    TQosV1 is used by SendMolr() API
+    This is a class with details of accuracy of Position information, Response Time, 
+    expected to be received from the network.
+    @see TResponseTime
+    @internalAll
+    */
+ 	class TQosV1
+   		{
+   	public:
+    	/**
+    	This gives an information of the amount of Horizontal accuracy that the UE is expecting.
+    	*/
+    	TUint8 iHorizontalAccuracy;
+    	/**
+    	This gives an information of the amount of Vertical accuracy that the UE is expecting. 
+    	*/
+    	TUint8 iVerticalAccuracy;
+    	/**
+    	This enum indicates the Response Time expected by the UE to receive a response for its MOlr request.
+    	*/
+    	TResponseTime iResponseTime;
+    	};
+    
+    /**
+    TMolrErrors is used by SendMolr() API
+    This is an enum which lists out all the possible errors that can be 
+    reported to UE by an External Client or the Network.
+    @internalAll
+    */
+   	enum TMolrErrors
+    	{
+    	/**
+    	Molr Error Unknown
+		*/
+    	EMolrErrorUnknown,
+    	/**
+    	This indication is given to the UE when the Location Report is unable to reach the 
+    	External Client due to some failure in the Network Connections.
+    	*/
+        EMolrSystemFailure, 
+        /**
+        This indication is given back to the UE by the Network to the UE or by the 
+        External Client to the UE,where the UE generated MOLR has some unexpected values. 
+        */
+        EMolrUnexpectedDataValue,  
+        /**
+        This indication is given back to the UE by the Network to the UE or by the 
+        External Client to the UE,where the UE generated MOLR had a data discrepancy
+        */
+        EMolrDataMissing, 
+        /**
+        This indication is given by the Network to the UE, 
+        when the UE is not given a facility to make a MOLR request
+        */
+        EMolrFacilityNotSupported, 
+        /**
+        This indication is given by the Network to the UE, 
+        when the subscription profile of the UE doesn't match with the requests made by it.
+        */
+        EMolrSS_SubscriptionViolation, 
+        /**
+        This indication is given by the Network to the UE, 
+        when the UE or the Network failed to generate the Location estimate
+        */ 
+        EMolrPositionMethodFailure 
+        };
+
+	/**
+	TStartMolrV7 is used by SendMolr() API
+	This class lists the details send by UE to Network when a Molr request is being made.
+	@see TMolrType
+	@see TQosV1
+	@see TLocationEstimateType
+	@see TLcsClientExternalID
+	@see TGpsAssistanceData
+	@see TLocationMethod
+	@internalAll
+	*/
+	class TStartMolrV7: public RMobilePhone::TMultimodeType
+		{
+	public:
+		IMPORT_C TStartMolrV7();
+	public:
+		/**
+		TMolrType holds the type of Molr request being made
+		*/
+		TMolrType             iMolrType;
+		/**
+		TQosV1 lists out the Quality of Service expected by UE
+		*/
+		TQosV1                iQos;
+		/**
+		Type of Location Estimate requested
+		*/
+		TLocationEstimateType iMolrLocationEstimateType;
+		/**
+		Id of the External client
+		*/
+		TLcsClientExternalID  iLcsClientExternalID;
+		/**
+		Type of GpsAssistanceData
+		*/
+		TGpsAssistanceData    iGpsAssistanceData;
+		/**
+		Type of Location method requested
+		*/
+		TLocationMethod       iLocationMethod ;
+		/**
+		Type of Service requested
+		*/
+		TUint8                 iLcsServiceTypeID;
+		};
+	/**
+	A typedef'd packaged TStartMolrV7 for passing through a
+	generic API method.
+
+	@internalAll
+	*/
+	typedef TPckg<TStartMolrV7> TStartMolrV7Pckg;
+	
+	/**
+	TMolrReturnResultV7 is used by SendMolr() API
+	This class lists all the Molr return results that can be expected for the Molr request
+	being made.
+	@see TLcsLocationEstimate 
+	@see TLcsVelocityEstimate
+	@see TMolrErrors
+	@internalAll
+	*/
+    class TMolrReturnResultV7: public RMobilePhone::TMultimodeType
+    	{
+    public:
+		IMPORT_C TMolrReturnResultV7();
+    public:
+    	/**
+    	This gives the Location Estimate of the UE
+    	*/
+    	TLcsLocationEstimate    iLocationEstimate;
+    	/**
+    	This gives the Velocity Estimate of the UE
+    	*/
+    	TLcsVelocityEstimate	iVelocityEstimate;
+    	/**
+    	This gives the indication of the type of error occured
+    	*/
+    	TMolrErrors             iMolrErrors;
+    	};
+
+	/**
+	A typedef'd packaged TMolrReturnResultV7 for passing through a
+	generic API method.
+
+	@internalAll
+	*/
+	typedef TPckg<TMolrReturnResultV7> TMolrReturnResultV7Pckg;
+	
+	//**************************************//
+	// Measurement Control Data structures	//
+	//**************************************//
+
+	enum 
+		{
+		/**Maximum number of monitored cells RACH*/
+		KMaxMonitoredCells = 8,
+		/**Maximum number of satellites*/
+		KMaxSat = 16,
+		/**GlobalHealth size. 364 bits =46 bytes (Rounded) */
+		KGlobalHealthSize	= 46
+		};
+
+	/**This enum contains the possible types of measurement commands.*/
+	enum TMeasurementCmd
+		{
+		/**Measurement Command Unknown*/
+		EMeasCommandUnknown,
+		/**Setup a new measurement*/
+		ESetup,
+		/**Modify a previously defined measurement, e.g. to change the reporting criteria*/
+		EModify,
+		/**Indicates to stop a measurement and clear all information in the UE that are related to that measurement */
+		ERelease,
+		};
+
+	/**This enum contains the possible positioning method types*/
+	enum TUePosMethodType
+		{
+		/**Positioning Method Type unknown*/
+		EPosMethodTypeUnknown,
+		/**UE Assisted : The network computes the location of the UE.*/
+		EUeAssisted,
+		/**UE Based : The UE computes the location of itself*/
+		EUeBased,
+		};
+
+	/**This enum contains the possible positioning methods*/
+	enum TPosMethod
+		{
+		/**Positioning Method unknown*/
+		EPosMethodUnknown,
+		/**OTDOA may be selected by the SRNC as the method to be used on receipt of an LCS positioning request from the CN */
+		EOtdoa,
+		/**These methods make use of UEs, which are equipped with radio receivers capable of receiving GPS signals*/
+		EGps,
+		/**Use either OTDOA or GPS positioning method.*/
+		EOtdoaOrGps,
+		/**
+		In the cell ID based (i.e. cell coverage) method, the position of an UE is 
+		estimated with the knowledge of its serving Node B. The information about the serving 
+		Node B and cell may be obtained by paging,locating area update, cell update, URA update, or routing area update.
+		*/
+		ECellID
+		};
+
+	/**
+	This class contains the information which is part of the Navigation Model.
+	This can be requested by the UE as part of additional request.
+	*/
+	class TSatDataV1
+		{
+	public:
+		/**Satellite identity*/
+		TUint8		iSatID;
+		/**Issue of Data Ephemeris for SatID*/
+		TUint8		iIode;
+		};
+	
+	/**
+	This class contains the additional information that can be requested by the UE.
+	*/
+	class TNavModelAddlDataReqV1	
+		{
+	public:
+		/**GPS time in weeks*/
+		TUint16		iGpsWeek;
+		/**GPS time of ephemeris in hours of the latest ephemeris set contained by the UE.*/
+		TUint8		iGpsToe;
+		/**Ephemeris age tolerance of the UE to UTRAN in hours.*/
+		TUint8		iTToeLimit;
+		/**Satellite Identities
+		@see TSatDataV1*/
+		TSatDataV1	iSatData[KMaxSat];
+		};
+
+	/**This class contains the indicators to request for additional assistance data from the network.*/
+	class TGpsAddlAssistDataReqV1
+		{
+	public:
+		/**ETrue indicates Almanac Data is requested
+		@see	TAlmanacV1*/
+		TBool	iAlmanacRequest;
+		/**ETrue indicates UTC model Data is requested
+		@see	TUtcModelV1*/
+		TBool	iUtcModelRequest;
+		/**ETrue indicates Ionospheric Model Data is requested
+		@see	TUtcModelV1*/
+		TBool	iIonosphericModelRequest;
+		/**ETrue indicates Navigation model Data is requested
+		@see	TIonosphericModelV1*/
+		TBool	iNavigationModelRequest;
+		/**ETrue indicates DGPS corrections Data is requested
+		@see	TNavigationModelSatInfoV1*/
+		TBool	iDgpsCorrectionsRequest;
+		/**ETrue indicates Reference location Data is requested
+		@see	TDgpsCorrectionsV1*/
+		TBool	iReferenceLocationRequest;
+		/**ETrue indicates Reference time Data is requested
+		@see	TReferenceLocationV1*/
+		TBool	iReferenceTimeRequest;
+		/**ETrue indicates Acquisition assistance Data is requested
+		@see	TReferenceTimeV1*/
+		TBool	iAcquisitionAssistanceReq;
+		/**ETrue indicates Realtime integrity Data is requested
+		@see	TAcquisitionAssistanceV1*/
+		TBool	iRealTimeIntegrityRequest;
+		/**This member is included only if Navigagion Model Data is requested (iNavigationModelRequest is ETrue).
+		@see	TNavModelAddlDataReqV1*/
+		TNavModelAddlDataReqV1	iNavModelAddlDataReq;
+		};
+
+	/**This class contains the UE positioning reporting quantity*/
+	class TUePosReportingQuantityV1
+		{
+	public:
+		/**Holds the positioning method type*/
+		TUePosMethodType	 iUePosMethodType;
+		/**Holds the positioning method*/
+		TPosMethod 	iPosMethod;
+		/**Holds the horizontal accuracy*/
+		TInt8	iHorzAccuracy;
+		/**Holds the vertical accuracy*/
+		TInt8	iVertAccuracy;
+		/**If true the SRNC wants the UE to report the SFN-GPS timing of the reference cell.*/ 
+		TBool 	iGpsTimingOfCellWanted;
+		/**ETrue indicates that the UE is requested to send the IE "Additional assistance Data Request" 
+		when the IE "UE positioning Error" is present in the UE positioning measured results.
+		EFalse indicates that the UE shall use the assistance data available.
+		*/
+		TBool	iAddlAssistanceDataReq;
+		};
+
+	/**This enum contains the states in which measurements are valid*/
+	enum TMeasurementValidity
+		{
+		/**Measurement Validity Unknown*/
+		EMeasValidityUnknown,
+		/**Indicates measurement is valid in CellDCH state*/
+		ECellDCH,
+		/**Indicates measurement is valid except in CellDCH state*/
+		EAllButCellDCH,
+		/**Indicates measurement is valid in all state*/
+		EAllStates
+		};
+
+	/**This enum list the SfnTow uncertainity*/
+	enum TSfnTowUncertainity
+		{
+		/**Sfn Tow Uncertainity unknown*/
+		ESfnTowUncertainityUnknown,
+		/**SfnTowUncertainity < 10*/
+		ELessThan10,
+		/**SfnTowUncertainity > 10*/
+		EMoreThan10
+		};
+	
+	/**This enum lists the different GPS drift rates*/
+	enum TUtranGpsDriftRate
+		{
+		/**GPS Drift rate unknown*/
+		EDriftRateUnknown,
+		/**Drift = 0*/
+		EUtranGpsDrift0,
+		/**Drift = 1*/
+		EUtranGpsDrift1,
+		/**Drift = 2*/
+		EUtranGpsDrift2,
+		/**Drift = 5*/
+		EUtranGpsDrift5,
+		/**Drift = 10*/
+		EUtranGpsDrift10,
+		/**Drift = 15*/
+		EUtranGpsDrift15,
+		/**Drift = 25*/
+		EUtranGpsDrift25,
+		/**Drift = 50*/
+		EUtranGpsDrift50,
+		/**Drift = -1*/
+		EUtranGpsDriftMinus1,
+		/**Drift = -2*/
+		EUtranGpsDriftMinus2,
+		/**Drift = -5*/
+		EUtranGpsDriftMinus5,
+		/**Drift = -10*/
+		EUtranGpsDriftMinus10,
+		/**Drift = -15*/
+		EUtranGpsDriftMinus15,
+		/**Drift = -25*/
+		EUtranGpsDriftMinus25,
+		/**Drift = -50*/
+		EUtranGpsDriftMinus50,
+		};
+
+	/**This enum lists the different Udre values*/
+	enum TDiffCorrectionsStatus
+		{
+		/**Diff Corrections Status unknown*/
+		ECorrectionStatusUnknown,
+		/**UDRE 1.0 */
+		EUdre1Point0,
+		/**UDRE 0.75 */
+		EUdre0Point75,
+		/**UDRE 0.5 */
+		EUdre0Point5,
+		/**UDRE 0.3 */
+		EUdre0Point3,
+		/**UDRE 0.2 */
+		EUdre0Point2,
+		/**UDRE 0.1 */
+		EUdre0Point1,
+		/**UDRE No Data */
+		ENoData,
+		/**UDRE Invalid Data */
+		EInvalidData
+		};
+	
+	/**This class reserves members for future use*/
+	class TSubFrame1ReservedV1
+		{
+	public:
+		/**Reserve member 1*/
+		TUint	iReserved1;
+		/**Reserve member 2*/
+		TUint	iReserved2;
+		/**Reserve member 3*/
+		TUint	iReserved3;
+		/**Reserve member 4*/
+		TUint	iReserved4;
+		};
+
+	/**This class contains information for GPS ephemeris and clock correction.*/
+	class TEphemerisParameterV1
+		{
+	public:
+		/**Code(s) on L2 Channel */
+		TUint8	iCodeOnL2;
+		/**User Range Accuracy */
+		TUint8	iUraIndex;
+		/**Health of Satellite*/
+		TUint8	iSatHealth;
+		/**Issue of Data, Clock */
+		TUint16	iIodc;
+		/**L2 channel flag*/
+		TUint8	iL2Flag;
+		TSubFrame1ReservedV1	iSubFrame1Reserved;
+		/**Estimated group delay differential */
+		TUint8	iTGd;
+		/**Apparent clock correction*/
+		TUint16	iTOc;
+		/**Apparent clock correction*/
+		TUint8	iAf2;
+		/**Apparent clock correction*/
+		TUint16	iAf1;
+		/**Apparent clock correction*/
+		TUint	iAf0;
+		/**Amplitude of the Sine Harmonic Correction Term to the Orbit Radius (meters)*/
+		TUint16	iCRs;
+		/**Mean Motion Difference From Computed Value (semi-circles/sec)*/
+		TUint16	iDeltaN;
+		/**Mean Anomaly at Reference Time (semi-circles)*/
+		TUint	iM0;
+		/**Amplitude of the Cosine Harmonic Correction Term To The Argument Of Latitude (radians)*/
+		TUint16	iCUc;
+		/**Eccentricity*/
+		TUint	iE;
+		/**Amplitude of the Sine Harmonic Correction Term To The Argument Of Latitude (radians)*/
+		TUint16	iCUs;
+		/**Semi-Major Axis in squareroot(meters) */
+		TUint	iASqrt;
+		/**Reference Time Ephemeris */
+		TUint16	iTOe;
+		/**
+		Fit interval flag
+		@see ICD-GPS-200
+		*/
+		TUint8	iFitInterval;
+		/**Age Of Data Offset */
+		TUint8	iAodo;
+		/**Amplitude of the Cosine Harmonic Correction Term To The Angle Of Inclination (radians)*/
+		TUint16	iCIc;
+		/**Longitude of Ascending Node of Orbit Plane at Weekly Epoch (semi-circles) */
+		TUint	iOmega0;
+		/**Amplitude of the Sine Harmonic Correction Term To The Angle Of Inclination (radians) */
+		TUint16	iCIs;
+		/**Inclination Angle at Reference Time (semi-circles) */
+		TUint	i0;
+		/**Amplitude of the Cosine Harmonic Correction Term to the Orbit Radius (meters) */
+		TUint16	iCRc;
+		/**Argument of Perigee (semi-circles) */
+		TUint	iOmega;
+		/**Longitude of Ascending Node of Orbit Plane at Weekly Epoch (semi-circles/sec) */
+		TUint	iOmegaDot;
+		/**Rate of Inclination Angle (semi-circles/sec) */
+		TUint16	iDot;
+		};
+
+	/**This enum specifies the possible status of a satellite*/
+	enum TSatelliteStatus
+		{
+		/**Satellite Status unknown*/
+		ESatStatusUnknown,
+		/**New satellite, new Navigation Model*/
+		ENsNnU,
+		/**Existing satellite, same Navigation Model*/
+		EEsSn,
+		/**Existing satellite, new Navigation Model*/
+		EEsNnU,
+		/**Reserved*/
+		ERev2,
+		/**Reserved*/
+		ERev
+		};
+
+	/**This class contains the navigation model satellite information*/
+	class TNavigationModelSatInfoV1
+		{
+	public:
+		/**Satellite identification*/
+		TUint8				iSatID;
+		/**Status of the satellite*/
+		TSatelliteStatus	iSatelliteStatus;
+		/**Contains information for GPS ephemeris and clock correction.*/
+		TEphemerisParameterV1	iEphemerisParameter;
+		};
+
+	/**
+	This class contains the ionospheric model information needed to model
+	the propagation delays of the GPS signals through the ionosphere
+	*/
+	class TIonosphericModelV1
+		{
+	public:
+		/**
+		The parameters *n are the coefficients of a cubic equation 
+		representing the amplitude of the vertical delay.
+		@see ICD-GPS-200
+		*/
+		/**Alfa = 0*/
+		TUint8	iAlfa0;
+		/**Alfa = 1*/
+		TUint8	iAlfa1;
+		/**Alfa = 2*/
+		TUint8	iAlfa2;
+		/**Alfa = 3*/
+		TUint8	iAlfa3;
+		/**
+		The parameters *n are the coefficients of a cubic equation 
+		representing the period of the ionospheric model 
+		@see ICD-GPS-200
+		*/
+		/**Beta = 0*/
+		TUint8	iBeta0;
+		/**Beta = 1*/
+		TUint8	iBeta1;
+		/**Beta = 2*/
+		TUint8	iBeta2;
+		/**Beta = 3*/
+		TUint8	iBeta3;
+		};
+		
+	/**
+	This class contains the UTC model information needed to relate GPS time to Universal Time Coordinate (UTC)
+	@see ICD-GPS-200
+	*/
+	class TUtcModelV1
+		{
+	public:
+		/**
+		Time in seconds. 
+		@see ICD-GPS-200.
+		*/
+		TUint	iA1;
+		/**
+		Time in seconds. 
+		@see ICD-GPS-200.
+		*/
+		TUint	iA2;
+		/**Time in seconds
+		@see ICD-GPS-200
+		*/
+		TUint8	iTOt;
+		/**weeks
+		@see ICD-GPS-200
+		*/
+		TUint8	iWnT;
+		/**Time in seconds
+		@see ICD-GPS-200
+		*/
+		TUint8	iDeltaTLs;
+		/**Weeks
+		@see ICD-GPS-200
+		*/
+		TUint8	iWnLsf;
+		/**Days
+		@see ICD-GPS-200
+		*/
+		TUint8	iDn;
+		/**Seconds
+		@see ICD-GPS-200
+		*/
+		TUint8	iDeltaTLsf;
+		};
+
+	/**This class contains a reduced-precision subset of the ephemeris and clock correction parameters.*/
+	class TAlmanacSatInfoV1
+		{
+	public:
+		/**Data identification*/
+		TUint8	iDataID;
+		/**Eccentricity*/
+		TUint16	iE;
+		/**Reference Time of Almanac */
+		TUint8 	iTOa;
+		/**@see ICD-GPS-200*/
+		TUint16	iDeltaI;
+		/**Longitude of Ascending Node of Orbit Plane at Weekly Epoch (semi-circles/sec) */
+		TUint16	iOmegaDot;
+		/**Satellite health*/
+		TUint8	iSatHealth;
+		/**Semi-Major Axis in squareroot(meters)*/
+		TUint	iASqrt;
+		/**Longitude of Ascending Node of Orbit Plane at Weekly Epoch (semi-circles) */
+		TUint	iOmega0;
+		/**Mean Anomaly at Reference Time (semi-circles) */
+		TUint	iM0;
+		/**Argument of Perigee (semi-circles) */
+		TUint	iOmega;
+		/**Apparent clock correction */
+		TUint16	iAf0;
+		/**Apparent clock correction */
+		TUint16	iAf1;
+		};
+
+	/**This class holds the coarse, long-term model of the satellite positions and clocks.*/
+	class TAlmanacV1
+		{
+	public:
+		/**Almanac Reference Week */
+		TUint8	iWnA;
+		TAlmanacSatInfoV1	iAlmanacSatInfoList[KMaxSat]; 
+		/**This enables GPS time recovery and possibly extended GPS correlation intervals.*/
+		TUint16	iSvGlobalHealth[KGlobalHealthSize]; 
+		};
+
+	/**This union contains the information specific to mode - FDD/TDD*/
+	union TModeSpecificInfoV1
+		{
+		/**Used in FDD mode*/
+		TUint16	iPrimaryScramblingCode;
+		/**Used in TDD mode*/
+		TUint16	iCellParametersID;
+		};
+
+	/**This class contains parameters that enable fast acquisition of the GPS 
+	   signals in UE-assisted GPS positioning.*/
+	class TAcquisitionAssistanceV1
+		{
+	public:
+		/**Specifies GPS reference time*/
+		TUint				iGpsReferenceTime;
+		/**Specifies GPS reference time specific to mode - FDD/TDD*/
+		TModeSpecificInfoV1	iUtranGpsReferenceTime;
+		/**ETrue indicates iUtranGpsReferenceTime is iPrimaryScramblingCode. 
+		EFalse indicates iUtranGpsReferenceTime is iCellParametersID*/
+		TBool	iUtranGpsRefTimeStatus;
+		};
+
+	/**
+	The UDRE provides an estimate of the uncertainty (1-*) in the corrections for 
+	the particular satellite. The value in this field shall be multiplied by the 
+	UDRE Scale Factor in the common Corrections Status/Health field to determine the 
+	final UDRE estimate for the particular satellite. 
+	@see 3GPP TS 25.305
+	*/
+	enum TUdre
+		{
+		/**Udre unknown*/
+		EUdreUnknown,
+		/** UDRE < 1*/
+		ELessThan1,
+		/** 1> UDRE < 4*/
+		EBtw1And4,
+		/** 1> UDRE < 8*/
+		EBtw1And8,
+		/** UDRE > 8*/
+		EOver8
+		};
+
+	/**This class contains DGPS corrections to be used by the UE*/
+	class TDgpsCorrectionSatInfoV1
+		{
+	public:
+		/**Satellite identification*/
+		TUint8	iSatID;
+		/**Issue of Data Ephemeris for SatID.*/
+		TUint8	iIode;
+		/**
+		The UDRE provides an estimate of the uncertainty (1-*) in the corrections for 
+		the particular satellite. The value in this field shall be multiplied by the 
+		UDRE Scale Factor in the common Corrections Status/Health field to determine the 
+		final UDRE estimate for the particular satellite. 
+		@see 3GPP TS 25.305
+		*/
+		TUdre	iUdre;
+		/**The PRC indicates the correction to the pseudorange for the particular satellite at the GPS Reference Time*/
+		TInt16	iPrc;
+		/**
+		This information indicates the rate-of-change of the pseudorange correction for the particular satellite,
+		using the satellite ephemeris identified by the IODE IE
+		*/
+		TInt8	iRrc;
+		/**For future use*/
+		TInt8	iDummy1;
+		/**For future use*/
+		TInt8	iDummy2;
+		};
+
+	/**This class contains the DGPS corrections information*/
+	class TDgpsCorrectionsV1
+		{
+	public:
+		/**GPS time of week*/
+		TUint16				iGpsTow;
+		/**This information indicates the status of the differential corrections contained in the message.*/
+		TDiffCorrectionsStatus	iStatusHealth;
+		/**This member data contains DGPS corrections of the satellites to be used by the UE*/
+		TDgpsCorrectionSatInfoV1	iDgpsCorrectionSatInfoList[KMaxSat];
+		};
+
+	/**This enum containst the possible signs of latitude*/
+	enum TLatitudeSign
+		{
+		/**Latitude Sign Unknown*/
+		ELatitudeSignUnknown,
+		/**Latitude sign is north*/
+		ENorth,
+		/**Latitude sign is south*/
+		ESouth
+		};
+	
+	/**This enum contains the possible directions of altitudes for reference location*/
+	enum TAltDirection
+		{
+		/**Altitude Direction Unknown*/
+		EAltDirectionUnknown,
+		/**Indicates Altitude direction is height-wise*/
+		EHeight,
+		/**Indicates Altitude direction is depth-wise*/
+		EDepth
+		};
+
+	/**This class contains a 3-D location (with uncertainty)*/
+	class TReferenceLocationV1
+		{
+	public:
+		/**Specifies the sign - North/South*/
+		TLatitudeSign	iLatitudeSign;
+		/**Degree of latitude*/
+		TUint16			iLatitude;
+		/**Degree of longitude*/
+		TInt16			iLongitude;
+		/**Direction of altitude*/
+		TAltDirection	iAltDirection;
+		/**Degree of altitude*/
+		TUint16			iAltitude;
+		/**Uncertainty semi major axis*/
+		TUint8			iUncertainitySemiMajor;
+		/**Uncertainty semi minor axis*/
+		TUint8			iUncertainitySemiMinor;
+		/**Orientation of major axis*/
+		TUint8			iOrientationMajorAxis;
+		/**The uncertainty in altitude, h, expressed in metres*/
+		TUint8			iUncertainityAltitude;
+		/**The confidence by which the position of a target entity is known to be within the shape description*/
+		TUint8			iConfidence;
+		};
+
+	/**
+	Contains several fields in the Telemetry (TLM) Word and Handover Word (HOW) 
+	that are currently being broadcast by the respective GPS satellites. Combining this information 
+	with GPS TOW helps the UE with time-recovery needed to predict satellite signal.
+	*/
+	class TGpsTowAssistV1
+		{
+	public:
+		/**Satellite identification*/
+		TUint8				iSatID;
+		/**
+		Contains a 14-bit value representing the Telemetry Message (TLM) 
+		being broadcast by the GPS satellite identified by the particular SatID, 
+		with the MSB occurring first in the satellite transmission.
+		*/
+		TUint16				iTlmMsg;
+		/**
+		Contains the two reserved bits in the TLM Word 
+		being broadcast by the GPS satellite identified by SatID, 
+		with the MSB occurring first in the satellite transmission.
+		*/
+		TUint8				iTlmReserved;
+		/**Contain the Alert flags that are being broadcast by the GPS satellite identified by SatID.*/
+		TBool				iAlert;
+		/**Contain the Anti-Spoof that are being broadcast by the GPS satellite identified by SatID.*/
+		TBool				iAntiSpoof;
+		};
+
+	/**This class contains information that may be used to provide a mapping between UTRAN and GPS time*/
+	class TUtranGpsRefTimeV1
+		{
+	public:
+		/**UE-GPS timing of cell ms-part*/
+		TUint16 			iMsPart;
+		/**UE-GPS timing of cell ls-part*/
+		TUint16				iLsPart;
+		/**System frame number*/
+		TUint16				iSfn;
+		/**Specifies GPS reference time specific to mode - FDD/TDD*/
+		TModeSpecificInfoV1	iModeSpecificInfo;
+		/**ETrue indicates iUtranGpsReferenceTime is iPrimaryScramblingCode. 
+		EFalse indicates iUtranGpsReferenceTime is iCellParametersID*/
+		TBool	iModeSpecificInfoStatus;
+		};
+
+	/**
+	This class contains several fields in the Telemetry (TLM) Word and Handover Word (HOW) 
+	that are currently being broadcast by the respective GPS satellites. Combining this information 
+	with GPS TOW helps the UE with time-recovery needed to predict satellite signal.
+	*/
+	class TReferenceTimeV1
+		{
+	public:
+		/**GPS time in weeks*/
+		TUint16				iGpsWeek;
+		/**GPS Time of Week in milliseconds */
+		TUint16				iGpsTowOneMsec;
+		/**GPS reference time may be used to provide a mapping between UTRAN and GPS time*/
+		TUtranGpsRefTimeV1	iUtranGpsRefTime;
+		/**
+		This field indicates the uncertainty of the relation GPS TOW/SFN. 
+		ELessThan10 means the relation is accurate to at least 10 ms.
+		*/
+		TSfnTowUncertainity	iSfnTowUncertainity;
+		/**Drift rate of the NODE B clock relative to GPS time.*/
+		TUtranGpsDriftRate	iUtranGpsDriftRate;
+		/**
+		Contains several fields in the Telemetry (TLM) Word and Handover Word (HOW) 
+		that are currently being broadcast by the respective GPS satellites. Combining this information 
+		with GPS TOW helps the UE with time-recovery needed to predict satellite signal.
+		*/
+		TGpsTowAssistV1		iGpsTowAssistList[KMaxSat];
+		};
+
+	/**This class contains the GPS Assistance Data received from network*/
+	class TUePosGpsAssistanceDataV1
+		{
+	public:
+		/**GPS reference time may be used to provide a mapping between UTRAN and GPS time.*/
+		TReferenceTimeV1 			iReferencTime;
+		/**The Reference Location contains a 3-D location (with uncertainty)*/
+		TReferenceLocationV1		iReferenceLocation;
+		/**
+		Holds information to allow a UE to estimate its position more accurate,
+		biases in the pseudorange measurements may be provided to the UE.
+		*/
+		TDgpsCorrectionsV1			iDgpsCorrections;
+		/**Holds navigation model satellite information*/
+		TNavigationModelSatInfoV1	iNavigationModel;
+		/**
+		The Ionospheric Model contains information needed to model
+		the propagation delays of the GPS signals through the ionosphere.
+		*/
+		TIonosphericModelV1			iIonosphericModel;
+		/**UTC parameters may be used to provide Coordinated Universal Time to the UE.*/
+		TUtcModelV1					iUtcModel;
+		/**Holds the coarse, long-term model of the satellite positions and clocks.*/
+		TAlmanacV1					iAlmanac;
+		/**Holds the acquistions assistance information of the UE*/
+		TAcquisitionAssistanceV1	iAcquisitionAssistance;
+		/**Holds the list of bad satellites*/
+		TUint8						iBadSatList[KMaxSat];
+		/**
+		This member specifies which of the above additional data structures are populated.
+		*/
+		TGpsAddlAssistDataReqV1 iGpsAddlDataStatus;
+		};
+
+	/**This class contains the GPS assistance data required to compute the UE Postioning information*/
+	class TUePosMeasurementV1
+		{
+	public:
+		/**
+		The purpose of the element is to express the allowed/required location method(s), 
+		and to provide information desired QoS.
+		*/
+		TUePosReportingQuantityV1	iUePosReportingQuantity;
+		/**This member data defines in which UE states the measurement is valid.*/
+		TMeasurementValidity		iMeasurementValidity;
+		/**This member data holds the GPS Assistance Data sent by the network*/
+		TUePosGpsAssistanceDataV1	iUePosGpsAssistanceData;
+		};
+
+	/**This holds the possible types of measurement commands that can be specified*/
+	union TMeasurementCommandV1
+		{
+		/**Setup a new measurement*/
+		TUePosMeasurementV1	iSetup;
+		/**Modify a previously defined measurement*/
+		TUePosMeasurementV1	iModify;
+		/**Stop the measurement and clear all information in the UE that are related to that measurement.*/
+		TBool	iRelease;
+		};
+
+	/**This enum specifies the mode the UE shall use to transmit the measurement report*/
+	enum TMeasReportTransferMode
+		{
+		/**Transfer mode unknown*/
+		ETransferModeUnknown,
+		/**The UE shall transmit the measurement report using Acknowledged RLC mode*/
+		EAckModeRlc,
+		/**The UE shall transmit the measurement report using Unacknowledged RLC mode*/
+		EUnAckModeRlc
+		};
+
+	/**
+	This class contains the GPS assistance data needed by the UE to compute the location 
+	of the UE. The UE computes the location once it receives all required information.
+	*/
+	class TMeasurementControlV7 : public RMobilePhone::TMultimodeType
+		{
+	public:
+		IMPORT_C TMeasurementControlV7();
+	public:
+		/**
+		A reference number that should be used by the UTRAN when setting up, 
+		modifying or releasing the measurement and by the UE in the measurement report.
+		*/
+		TUint8	iMeasurementIdentity;
+		/**Specifies the Measurement Setup / Modify / Release*/
+		TMeasurementCommandV1	iMeasurementCommand;
+		/**This specifies whether the UE shall transmit the measurement report using AM or UM RLC.*/
+		TMeasReportTransferMode iMeasReportTransferMode;
+		/**ETrue indicates velocity estimate is requested. EFalse indicates velocity estimate is not requested*/
+		TBool	iVelocityRequested;
+		/**Holds the type of measurement command being used*/
+		TMeasurementCmd	iMeasurementCmdStatus;
+		};
+   	/**
+	A typedef'd packaged TMeasurementControlV7 for passing through a
+	generic API method.
+
+	@internalAll
+	*/
+	typedef TPckg<TMeasurementControlV7> TMeasurementControlV7Pckg;
+	
+	//**************************************//
+	// Measurement Report Data structures	//
+	//**************************************//
+
+	
+	/**
+	This enum contains the indicators thta specify which 
+	union members of TMeasurementQuantityV1 are included
+	*/
+	enum TMeasQnty
+		{
+		/**Measurement Quantity unknown*/
+		EMeasQntyUnknown,
+		/**Indicates that CpichEcN0 is present*/
+		EMeasQntyCpichEcN0Present,
+		/**Indicates that CpichRscp is present*/
+		EMeasQntyCpichRscpPresent,
+		/**Indicates that path loss is present*/
+		EMeasQntyPathLossPresent,
+		};
+
+	/**
+	This enum contains the indicators that specify which 
+	union members of TPosEstimateRefTime and  TPositionEstimateV1 are included
+	*/
+	enum TPosEstimateInfo
+		{
+		/**Position Estimate Info Unknown*/
+		EPosEstimateInfoUnknown,
+		/**
+		NOTE: The following states correspond to TUePosPositionEstimateInfoV1/TPosEstimateRefTime
+		Indicates that UE positioning estimate reference time is populated
+		*/
+		EUtranGpsRefTimeResultPresent,
+		/**Indicates that GPS reference time is populated*/
+		EGpsRefTimeOnlyPresent,
+		/**Indicates that cell timing is populated*/
+		ECellTimingPresent,
+		/**
+		NOTE: The following states correspond to TUePosPositionEstimateInfoV1/TPositionEstimateV1.
+		Indicates EllipsoidPoint is populated
+		*/
+		EEllipsoidPointPresent,
+		/**Indicates EllipsoidPoint with uncertainty circle is populated*/
+		EEllipsoidPointUncertCirclePresent,
+		/**Indicates EllipsoidPoint with uncertainty ellipse is populated*/
+		EEllipsoidPointUncertEllipsePresent,
+		/**Indicates EllipsoidPoint with altitude is populated*/
+		EEllipsoidPointAltitudePresent,
+		/**Indicates EllipsoidPoint with altitude and ellipse is populated*/
+		EEllipsoidPointAltEllipsePresent,
+		};
+
+	/**This enum contains the possible types of velocity estimates*/
+	enum TVelEstimate
+		{
+		/**Velocity Estimate Unknown*/
+		EVelEstimateUnknown,
+		/**Velocity Estimate is not present*/
+		EVelEstimateNotPresent,
+		/**Horizontal velocity is included*/
+		EHorzVelPresent,
+		/**Horizontal and vertical velocity is included*/
+		EHorzWithVertVelPresent,
+		/**Horizontal velocity with uncertainty is included*/
+		EHorzVelWithUncertPresent,
+		/**Horizontal and vertical velocity with uncertainty is included*/
+		EHorzWithVertVelAndUncertPresent,
+		};
+
+	/**This contains the measurement quantities of the UE*/
+	union TMeasurementQuantityV1
+		{
+	public:
+		/**
+		@see 3GPP TS 25.133.
+		@see 3GPP TS 25.123.
+		*/
+		TUint8	iCpichEcN0;
+		/**
+		@see 3GPP TS 25.133.
+		@see 3GPP TS 25.123.
+		*/
+		TUint8	iCpichRscp;
+		/**Measurement path loss in dB.*/
+		TUint8	iPathLoss;
+		/**Extra for future use*/
+		TBool	iSpare;
+		};
+
+	/**This class contains the current cell informations in TDD mode*/
+	class TTddV1
+		{
+	public:
+		/**
+		Time slot Interference on Signal Code Power
+		@see 3GPP TS 25.123
+		*/
+		TUint8	iTimeSlotIscp;
+		/**Primary Common Control Physical CHannel received signal code power*/
+		TUint8	iPrimaryCcpchRscp;
+		};
+
+	/**This class contains the information in FDD mode*/
+	class TFddV1
+		{
+	public:
+		/**Holds the measurement quantities of the UE*/
+		TMeasurementQuantityV1	iMeasurementQuantity;
+		/**Holds the field that would be populated in iMeasurementQuantity*/
+		TMeasQnty	iMeasQntyStatus;
+		};
+
+	/**This contains the current cell information in specific modes - FDD/TDD*/
+	union TCurrentCellV1 
+		{
+		/**Current cell information in FDD mode*/
+		TFddV1	iFdd;
+		/**Current cell information in TDD mode*/
+		TTddV1	iTdd;
+		};
+
+	/**This contains the type of sfn-sfn observed time difference*/
+	union TSfnSfnObsTimeDifferenceV1
+		{
+		/**Sfn-Sfn observed time difference -type1*/
+		TUint16	iSfnSfnObsTimeDiff1;
+		/**Sfn-Sfn observed time difference -type2*/
+		TUint16	iSfnSfnObsTimeDiff2;
+		};
+
+	/**This class contains the FDD mode information of monitored cells*/
+	class TMonitoredCellFddV1
+		{
+	public:
+		/**Primary Common Control Physical CHannel information*/
+		TUint16		iPrimaryCpichInfo;
+		/**Holds the measurement quantities of the UE*/
+		TMeasurementQuantityV1 iMeasurementQuantity;
+		/**Holds the field that would be populated in iMeasurementQuantity*/
+		TMeasQnty	iMeasQntyStatus;
+		};
+
+	/**This class contains the TDD mode information of monitored cells*/
+	class TMonitoredCellTddV1
+		{
+	public:
+		/**Cell identification*/
+		TUint8	iCellParametersID;
+		/**Primary Common Control Physical CHannel received signal code power*/
+		TUint8	iPrimaryCcpchRscp;
+		};
+
+	/**This contains the monitored cells information in specific mode -  FDD/TDD*/
+	union TMonitoredCellModeSpecificInfoV1
+		{
+		/**Monitored Cell information in FDD mode*/
+		TMonitoredCellFddV1	iMonitoredCellFdd;
+		/**Monitored Cell information in TDD mode*/
+		TMonitoredCellTddV1	iMonitoredCellTdd;
+		};
+
+	/**This class contains the measured results for monitored cells on Random Access Channel*/
+	class TMonitoredCellRachResultV1
+		{
+	public:
+		/**Holds the sfn-sfn observed time difference*/
+		TSfnSfnObsTimeDifferenceV1 iSfnSfnObsTimeDiff;
+		/**Holds the monitored cells specific info mode - FDD/TDD*/
+		TMonitoredCellModeSpecificInfoV1 iMonitoredCellModeSpecificInfo;
+		/**ETrue indicates iMonitoredCellModeSpecificInfo is iMonitoredCellFdd.
+		EFalse indicates iMonitoredCellModeSpecificInfo is iMonitoredCellTdd*/
+		TBool	iSfnSfnObsTimeDiffStatus;
+		};
+	/**
+	Horizontal velocity is characterised by the horizontal speed and bearing. 
+	The horizontal speed gives the magnitude of the horizontal component of the velocity of a UE. 
+	The bearing provides the direction of the horizontal component of velocity taken clockwise from North.
+	@see 3GPP TS 23.032
+	*/
+	class THorzVelocityV1
+		{
+	public:
+		/**The direction of movement is given in degrees where '0' represents North, '90' represents East, etc.*/
+		TUint16		iBearing;
+		/**The horizontal speed gives the magnitude of the horizontal component of the velocity of a UE*/
+		TUint16		iHorzSpeed;
+		};
+
+	/**This enum holds vertical speed direction*/
+	enum TVertSpeedDirection
+		{
+		/**Speed direction unknown*/
+		ESpeedDirectionUnknown,
+		/**Upward direction*/
+		EUpward,
+		/**Downward direction*/
+		EDownward
+		};
+
+	/**
+	Horizontal velocity is characterised by the horizontal speed and bearing. 
+	The horizontal speed gives the magnitude of the horizontal component of the velocity of a UE. 
+	The vertical speed and direction provides the component of velocity of a UE in a vertical direction.
+	The bearing provides the direction of the horizontal component of velocity taken clockwise from North.
+	@see 3GPP TS 23.032
+	*/
+	class THorzWithVertVelocityV1
+		{
+	public:
+		/**Direction of vertical speed*/
+		TVertSpeedDirection	iVertSpeedDirection;
+		/**The direction of movement is given in degrees where '0' represents North, '90' represents East, etc.*/
+		TUint16		iBearing;
+		/**The horizontal speed gives the magnitude of the horizontal component of the velocity of a UE*/
+		TUint16		iHorzSpeed;
+		/**The vertical speed and direction provides the component of velocity of a UE in a vertical direction.*/
+		TUint8		iVertSpeed;
+		};
+
+	/**
+	Horizontal velocity with uncertainty is characterised by a horizontal speed and bearing,
+	giving a horizontal velocity vector V, and an uncertainty speed s.
+	@see 3GPP TS 23.032
+	*/
+	class THorzVelocityWithUncertaintyV1
+		{
+	public:
+		/**	The direction of movement is given in degrees where '0' represents North, '90' represents East, etc.*/
+		TUint16		iBearing;
+		/**The horizontal speed gives the magnitude of the horizontal component of the velocity of a UE*/
+		TUint16		iHorzSpeed;
+		/**
+		Horizontal speed uncertainty.
+		*/
+		TUint8		iHorzSpeedUncertainty;
+		};
+
+	/**
+	Horizontal and vertical velocity with uncertainty is characterised by a horizontal speed and bearing, 
+	giving a horizontal velocity vector Vx,y, a vertical speed and direction giving a vertical velocity component Vz,
+	and uncertainty speeds s1 and s2. 
+	@see 3GPP TS 23.032
+	*/
+	class THorzWithVertVelocityAndUncertaintyV1
+		{	
+	public:
+		/**
+		The direction of movement is given in degrees where '0' represents North, '90' represents East, etc.
+		*/
+		TUint16		iBearing;
+		/**The horizontal speed gives the magnitude of the horizontal component of the velocity of a UE*/
+		TUint16		iHorzSpeed;
+		/**The vertical speed and direction provides the component of velocity of a UE in a vertical direction.*/
+		TUint8		iVertSpeed;
+		/**Horizontal speed uncertainty.*/
+		TUint8		iHorzSpeedUncertainty;
+		};
+
+	/**
+	This class contains the possible ways of velocity estimates
+	@see 3GPP TS 23.032
+	*/
+	union TVelocityEstimateV1
+		{
+		/**Horizontal velocity*/
+		THorzVelocityV1					iHorzVelocity;
+		/**Horizontal velockity and vertical velocity*/
+		THorzWithVertVelocityV1			iHorzWithVertVelocity;
+		/**Horizontal velocity with uncertainty*/
+		THorzVelocityWithUncertaintyV1	iHorzVelocityWithUncertainty;
+		/**Horizontal and vertical velocity with uncertainty*/
+		THorzWithVertVelocityAndUncertaintyV1	iHorzWithVertVelocityAndUncertainty;
+		};
+
+	/**This class contains the measured results on Random Access Channel*/
+	class TMeasuredResultsOnRachV1
+		{
+	public:
+		/**Current cell information*/
+		TCurrentCellV1	iCurrentCell;
+		/**Monitored Cell information*/
+		TMonitoredCellRachResultV1	iMonitoredCellsRachList[KMaxMonitoredCells];
+		/**ETrue indicates iCurrentCell is iFdd.
+		EFalse indicates iCurrentCell is iTdd*/
+		TBool	iCurrentCellStatus;
+		};
+
+	/**
+	Identifies the channel in combination with the Midamble shift and slot number.
+	It is not used in 1.28 Mcps TDD and may be set to either value and should be ignored by the receiver.
+	*/
+	enum TBurstType
+		{
+		/**Burst type 1*/
+		EType1,
+		/**Burst type 2*/
+		EType2
+		};
+
+	/**This class contains UE positioning estimates specific to TDD*/
+	class TPosEstimateTddV1
+		{
+	public:
+		/**Identifies the channel in combination with the Midamble shift and slot number.*/
+		TBurstType	iBurstType;
+		/**Midamble shift*/
+		TUint8	iMidambleShift;
+		/**
+		This member data is present only if no IPDL scheme is configured in the reference cell.
+		Otherwise the slot is defined by the IPDL configuration.
+		*/
+		TUint8	iTimeSlotNumber;
+		/**
+		Cell identification
+		*/
+		TUint8	iCellParametersID;
+		};
+
+	/**This class contains UE positioning estimates specific to FDD/TDD*/
+	union TPosEstimateModeSpecificInfoV1
+		{
+		/**Identifies the reference cell for the GPS TOW-SFN relationship.*/
+		TUint16		iPrimaryCpichInfo;
+		/**Holds the cell and channel identification*/
+		TPosEstimateTddV1	iCellAndChannelID;
+		};
+
+	/**This class contains the cell timing information*/
+	class TCellTimingV1
+		{
+	public:
+		/**
+		SFN during which the position was calculated.
+		*/
+		TUint16		iSfn;
+		/**Holds the UE positioning estimates specific to mode - FDD or TDD*/
+		TPosEstimateModeSpecificInfoV1	iPosEstimateModeSpecificInfo;
+		/**ETrue indicates iPosEstimateModeSpecificInfo is iPrimaryCpichInfo.
+		EFalse indicates iPosEstimateModeSpecificInfo is iCellAndChannelID.*/
+		TBool	iPosEstimateModeStatus;
+		};
+
+	/**This class captures the GPS measurement specific to FDD or TDD*/
+	union TGpsMeasModeSpecificInfoV1
+		{
+		/**Frequency Division Duplex identification*/
+		TUint16	iFddRefID;
+		/**Time Division Duplex identification*/
+		TUint8	iTddRefID;
+		};
+
+	/**This class contains results of the GPS reference time*/
+	class TUtranGpsRefTimeResultV1
+		{
+	public:
+		/**UE-GPS timing of cell ms-part*/
+		TUint16		iMsPart;
+		/**UE-GPS timing of cell ls-part*/
+		TUint16		iLsPart;
+		/**Holds the GPS measurement specific to FDD or TDD*/
+		TGpsMeasModeSpecificInfoV1	iGpsMeasModeSpecificInfo;
+		/**Cell System Frame Number*/
+		TUint16		iSfn;
+		/**ETrue indicates iGpsMeasModeSpecificInfo is iFddRefID. 
+		 EFalse indicates iGpsMeasModeSpecificInfo is iTddRefID*/
+		TBool	iGpsMeasModeStatus;
+		};
+
+	/**This union contains the UE positioning reference time*/
+	union TPosReferenceTimeV1
+		{
+		/**Contains the results of GPS reference time*/
+		TUtranGpsRefTimeResultV1	iUtranGpsRefTimeResult;
+		/**Contains the GPS reference time*/
+		TUint16		iGpsRefTimeOnly;
+		};
+	
+	/**
+	This class contains the information of ellipsoid.
+	It consists of a latitude and a longitude.
+	@see 3GPP TS 23.032
+	*/
+	class TEllipsoidPointV1
+		{
+	public:
+		/**Specifies the sign - North/South*/
+		TLatitudeSign	iLatitudeSign;
+		/**
+		A north/south angular measurement of position relative to the equator, 
+		in the meridian plane which contains the earth's rotation axis
+		*/
+		TUint16	iLatitude;
+		/**
+		An east/west angular measurement of position in relation to the Prime Meridian. 
+		The angle between the two great circles, one being the Prime (or Greenwich) Meridian 
+		and the other a meridian passing through the point of interest.
+		*/
+		TInt16	iLongitude;
+		};
+
+	/**
+	It is characterised by the co-ordinates of an ellipsoid point (the origin) and a distance r
+	@see 3GPP TS 23.032
+	*/
+	class TEllipsoidPointUncertCircleV1
+		{
+	public:
+		/**Specifies the sign - North/South*/
+		TLatitudeSign	iLatitudeSign;
+		/**
+		A north/south angular measurement of position relative to the equator, 
+		in the meridian plane which contains the earth's rotation axis
+		*/
+		TUint16	iLatitude;
+		/**
+		An east/west angular measurement of position in relation to the Prime Meridian. 
+		The angle between the two great circles, one being the Prime (or Greenwich) Meridian 
+		and the other a meridian passing through the point of interest.
+		*/
+		TInt16	iLongitude;
+		/**Uncertainty code*/
+		TUint8	iUncertaintyCode;
+		};
+
+	/**
+	It is characterised by the co-ordinates of an ellipsoid point (the origin), 
+	distances r1 and r2 and an angle of orientation A
+	@see 3GPP TS 23.032
+	*/
+	class TEllipsoidPointUncertEllipseV1
+		{
+	public:
+		/**Specifies the sign - North/South*/
+		TLatitudeSign	iLatitudeSign;
+		/**
+		A north/south angular measurement of position relative to the equator, 
+		in the meridian plane which contains the earth's rotation axis
+		*/
+		TUint16	iLatitude;
+		/**
+		An east/west angular measurement of position in relation to the Prime Meridian. 
+		The angle between the two great circles, one being the Prime (or Greenwich) Meridian 
+		and the other a meridian passing through the point of interest.
+		*/
+		TInt16	iLongitude;
+		/**Uncertainty semi major axis*/
+		TUint8	iUncertaintySemiMajor;
+		/**Uncertainty semi minor axis*/
+		TUint8	iUncertaintySemiMinor;
+		/**Orientation of major axis*/
+		TUint8	iOrientationMajorAxis;
+		/**The confidence by which the position of a target entity is known to be within the shape description*/
+		TUint8	iConfidence;
+		};
+
+	/**
+	The description of an ellipsoid point with altitude is that of a point at a specified distance 
+	above or below a point on the earth's surface. This is defined by an ellipsoid point 
+	with the given longitude and latitude and the altitude above or below the ellipsoid point.
+	@see 3GPP TS 23.032
+	*/
+	class TEllipsoidPointAltitudeV1
+		{
+	public:
+		/**Specifies the sign - North/South*/
+		TLatitudeSign	iLatitudeSign;
+		/**
+		A north/south angular measurement of position relative to the equator, 
+		in the meridian plane which contains the earth's rotation axis
+		*/
+		TUint16	iLatitude;
+		/**
+		An east/west angular measurement of position in relation to the Prime Meridian. 
+		The angle between the two great circles, one being the Prime (or Greenwich) Meridian 
+		and the other a meridian passing through the point of interest.
+		*/
+		TInt16	iLongitude;
+		/**Direction of altitude*/
+		TAltDirection	iAltDirection;
+		/**Degree of altitude*/
+		TUint16	iAltitude;
+		};
+	
+	/**
+	characterised by the co-ordinates of an ellipsoid point with altitude, distances r1 (the "semi-major uncertainty"),
+	r2 (the "semi-minor uncertainty") and r3 (the "vertical uncertainty") and an angle of orientation A 
+	(the "angle of the major axis")
+	@see 3GPP TS 23.032
+	*/
+	class TEllipsoidPointAltitudeEllipseV1
+		{
+	public:
+		/**Specifies the sign - North/South*/
+		TLatitudeSign	iLatitudeSign;
+		/**
+		A north/south angular measurement of position relative to the equator, 
+		in the meridian plane which contains the earth's rotation axis
+		*/
+		TUint16	iLatitude;
+		/**
+		An east/west angular measurement of position in relation to the Prime Meridian. 
+		The angle between the two great circles, one being the Prime (or Greenwich) Meridian 
+		and the other a meridian passing through the point of interest.
+		*/
+		TInt16	iLongitude;
+		/**Direction of altitude*/
+		TAltDirection	iAltDirection;
+		/**Degree of latitude*/
+		TUint16	iAltitude;
+		/**Uncertainty semi major axis*/
+		TUint8	iUncertaintySemiMajor;
+		/**Uncertainty semi minor axis*/
+		TUint8	iUncertaintySemiMinor;
+		/**Orientation of major axis*/
+		TUint8	iOrientationMajorAxis;
+		/**The confidence by which the position of a target entity is known to be within the shape description*/
+		TUint8	iConfidence;
+		};
+
+	/**This union holds the possible forms of position estimate of the UE that can be captured.*/
+	union TPositionEstimateV1
+		{
+		/**
+		The description of an ellipsoid point is that of a point
+		on the surface of the ellipsoid, and consists of a latitude and a longitude.
+		@see 3GPP TS 23.032
+		*/
+		TEllipsoidPointV1					iEllipsoidPoint;
+		/**
+		It is characterised by the co-ordinates of an ellipsoid point (the origin) and a distance r
+		@see 3GPP TS 23.032
+		*/
+		TEllipsoidPointUncertCircleV1		iEllipsoidPointUncertCircle;
+		/**
+		It is characterised by the co-ordinates of an ellipsoid point (the origin), 
+		distances r1 and r2 and an angle of orientation A
+		@see 3GPP TS 23.032
+		*/
+		TEllipsoidPointUncertEllipseV1		iEllipsoidPointUncertEllipse;
+		/**
+		The description of an ellipsoid point with altitude is that of a point at a specified distance 
+		above or below a point on the earth's surface. This is defined by an ellipsoid point 
+		with the given longitude and latitude and the altitude above or below the ellipsoid point.
+		@see 3GPP TS 23.032
+		*/
+		TEllipsoidPointAltitudeV1			iEllipsoidPointAltitude;
+		/**
+		characterised by the co-ordinates of an ellipsoid point with altitude, distances r1 (the "semi-major uncertainty"),
+		r2 (the "semi-minor uncertainty") and r3 (the "vertical uncertainty") and an angle of orientation A 
+		(the "angle of the major axis")
+		@see 3GPP TS 23.032
+		*/
+		TEllipsoidPointAltitudeEllipseV1	iEllipsoidPointAltitudeEllipsoide;
+		};
+
+	/**This contains the positioning estimate reference time*/
+	union TPosEstimateRefTime
+		{
+		/**Contains results of the GPS reference time*/
+		TUtranGpsRefTimeResultV1	iUtranGpsRefTimeResult;
+		/**Contains the GPS reference time */
+		TUint16		iGpsRefTimeOnly;
+		/**Contains the cell timing*/
+		TCellTimingV1	iCellTiming;
+		};
+
+	/**
+	Provides the position estimate from the UE to the network, 
+	if the UE is capable of determining its own position.
+	*/
+	class TUePosPositionEstimateInfoV1
+		{
+	public:
+		/**UE positioning estimate reference time*/
+		TPosEstimateRefTime	iPosEstimateRefTime;
+		/**Holds the UE's position estimate
+		@see TPositionEstimateV1
+		*/
+		TPositionEstimateV1	iPostionEstimate;
+		/**Holds the field that would be populated in iPosEstimateRefTime*/
+		TPosEstimateInfo	iPosEstimateRefTimeStatus;
+		/**Holds the field that would be populated in iPosEstimate*/
+		TPosEstimateInfo	iPosEstimateStatus;
+		};
+	
+	/**This enum contains the multipath indicators*/
+	enum TMultipathIndicator
+		{
+		/**
+		Multipath indicator unknown
+		This is an invalid indicator. 
+		*/
+		EMPUnknown,
+		/**Not measured*/
+		ENm,
+		/**MP error < 5m*/
+		ELow,
+		/**5m < MP error < 43m*/
+		EMedium,
+		/**MP error > 43m*/
+		EHigh
+		};
+
+	/**This class contains the GPS measurement parameters of the UE*/
+	class TGpsMeasMeasurementParamV1
+		{
+	public:
+		/**Satellite Identification*/
+		TUint8		iSatID;
+		/**
+		The estimate of the carrier-to-noise ratio of the received signal from the particular 
+		satellite used in the measurement. It is given in units of dB-Hz (typical levels will 
+		be in the range of 20 - 50 dB-Hz).
+		*/
+		TUint8		iCN0;
+		/**
+		It is the instantaneous frequency difference between the receiver's internal oscillator 
+		and the received carrier from the satellite. Hz, scale factor 0.2.
+		*/
+		TInt16		iDoppler;
+		/**
+		Unit in GPS chips.
+		Whole value of the UE GPS code-phase measurement, where increasing binary values of the field 
+		signify increasing measured pseudoranges.
+		*/
+		TUint16		iWholeGpsChips;
+		/**
+		The UE GPS code-phase measurement is divided into the fields "Whole GPS Chips" and "Fractional GPS Chips".
+		Scale factor 2-10 Fractional value of the UE GPS code-phase measurement.
+		*/
+		TUint16		iFractionalGpsChips;
+		/**
+		Contains the possible multipath indicators. Multipath error is usually caused by one path being bounced or 
+		reflected. The impact on a pseudo-range measurement may be up to a few metres. In the case of carrier phase,
+		this is of the order of a few centimetres.
+		*/
+		TMultipathIndicator	iMultipathIndicator;
+		/**
+		A distance measurement based on the correlation of a satellite's transmitted code (may be the C/A-Code or 
+		the encrypted P-Code) and the local receiver's reference code (for that PRN satellite number), 
+		that has not been corrected for errors in synchronisation between the transmitter's clock and the receiver's clock.
+		Hence a pseudo-range measurement is a time-error biased distance measurement.
+		*/
+		TUint8		iPseudorangeRmsError;
+		};
+
+	/**This class contains the GPS measurement parameters and the positioning reference time*/
+	class TUePosGpsMeasurementResultsV1
+		{
+	public:
+		/**UE positioning reference time*/
+		TPosReferenceTimeV1	iPosGpsMeasRefTime;
+		/**Holds the GPS measurement parameters from all the active satellites*/
+		TGpsMeasMeasurementParamV1	iGpsMeasurementParamList[KMaxSat];
+		/**ETrue indicates TPosReferenceTimeV1::iUtranGpsRefTimeResult is populated. 
+		 EFalse indicates TPosReferenceTimeV1::iGpsRefTimeOnly is populated*/
+		TBool	iPosGpsMeasRefTimeStatus;
+		};
+
+	/**
+	This enum lists all the possible errors that UE can report to the network
+	*/
+	enum TPosErrorCause
+		{
+		/**
+		Error Cause Unknown. This is an invalid error cause and is set if the UE does not set with 
+		any of the underlying valid error causes
+		*/
+		EErrorCauseUnknown,
+		/**Indicates that enought number of GPS satellites are healthy and active.*/
+		ENotEnoughGpsSatellites,
+		/**Assistance data required to compute location of the UE is missing in the measurement control.
+		If the Additional data request flag is true in the measurement control only then additional assistance
+		data can be requested otherwise measurements need to be done using the existing assistance data
+		@see TGpsAddlAssistDataReqV1
+		@see TUePosReportingQuantityV1
+		 */
+		EAssistanceDataMissing,
+		/**
+		Cell Frames Timings are not accomplished
+		*/
+		ENotAccomplishedGpsTimingOfCellFrames,
+		/**
+		UE can set this error in case other than the above mentioned is encountered 
+		*/
+		EUndefinedError,
+		/**
+		UE denies Location information
+		*/
+		ERequestDeniedByUser,
+		};
+
+	/**
+	This class contains the positioning errors that might have encountered during 
+	measurement of location of the UE.
+	*/
+	class TUePosError
+		{
+	public:
+		/**Indicates the error cause encountered while computing GPS Assistance data*/
+		TPosErrorCause		iPosErrorCause;
+		/**If error cause is "Assistance Data Missing" and iAddlAssistanceDataReq is set to ETrue then
+		then this member shall indicate what additional assistance data is needed.
+		If iAddlAssistanceDataReq is set to EFalse then existing assistance data is used to compute location
+		information of the UE.
+		@see TUePosReportingQuantityV1::iAddlAssistanceDataReq*/
+		TGpsAddlAssistDataReqV1	iGpsAddlAssistDataReq;
+		};
+
+	/**
+	This class contains the measurement results computed by the UE.
+	*/
+	class TUePosMeasuredResultsV1
+		{
+	public:
+		/**The purpose of this is to provide the position estimate from the UE to the network, 
+		if the UE is capable of determining its own position.*/
+		TUePosPositionEstimateInfoV1	iUePosPositionEstimateInfo;
+		/**Contains the GPS measurement parameters and the positioning reference time*/
+		TUePosGpsMeasurementResultsV1	iUePosGpsMeasurement;
+		/**Indicates the error cause and/or additional assistance data is required*/
+		TUePosError						iUePosError;
+		/**
+		ETrue indicates some error has encountered. iUePosError will be populated.
+		EFalse indicates Gps Assistance Data is received and no error has encountered while processing.
+		Hence iUePosPositionEstimateInfo and iUePosGpsMeasurement will be populated
+		*/
+		TBool	iPosErrorStatus;
+		};
+
+	/**Contains the measured location information of the UE*/
+	union TMeasuredResultsV1
+		{
+		/**
+		This member either contains the measurement results or the error that might have 
+		encountered during measurements.
+		*/
+		TUePosMeasuredResultsV1		iTUePosMeasuredResults;
+		/**
+		A spare member for future use.
+		*/
+		TBool						iSpare;
+		};
+
+	/**
+	This class contains the measurement report expected as response to the measurement control sent by the 
+	network. Veloctiy estimates are included if requested in measurement control.
+	*/
+	class TMeasurementReportV7 : public RMobilePhone::TMultimodeType
+		{
+	public:
+		IMPORT_C TMeasurementReportV7();
+	public:
+		/**A reference number that should be used by the UTRAN when setting up, 
+		modifying or releasing the measurement and by the UE in the measurement report.
+		*/
+		TUint8 iMeasurementIdentity;
+		/**Contains the measured location information of the UE*/
+		TMeasuredResultsV1 iMeasuredResults;
+		/**Contains the measured results on Random Access Channel*/
+		TMeasuredResultsOnRachV1	iMeasuredResultsOnRach;
+		/**Contains the velocity estimates of the UE*/
+		TVelocityEstimateV1		iVelocityEstimate;
+		/**
+		Indicates the populated member in iVelocityEstimate if velocity estimate is computed.
+		Otherwise indicates that velocity estimate is not computed.
+		*/
+		TVelEstimate	iVelEstimateStatus;
+		};
+	/**
+	A typedef'd packaged TMeasurementReportV7 for passing through a
+	generic API method.
+
+	@internalAll
+	*/
+	typedef TPckg<TMeasurementReportV7> TMeasurementReportV7Pckg;
+	
+	//*********************************************//	
+	//  Measurement Control Failure data structure //
+	//*********************************************//
+
+	/**
+	This enum contains the list of errors that the UE can specify.
+	The Measurement control failure is caused only when the the UE 
+	cannot initiate a measurement as instructed by the network.
+	*/
+	enum TMeasurementControlFailure
+		{
+		/**
+		Unknown Measurement Control Failure.
+		This is an invalid failure state whic will be set if the UE does not set with the 
+		underlying valid error reasons.
+		*/
+		EControlFailureUnknown,
+		/**Indicates ASN1.0 encoding is incorrect*/
+		EAsn1ViolationOrEncoding,
+		/**Messsgae type specified is not existent*/
+		EMsgTypeNonExistent,
+		/**Message is not compatible*/
+		EMsgNotCompatibleWithReceiverState,
+		/**Information sent cannot be understood*/
+		EIeValueNotComprehend,
+		/**Information expected is not present*/
+		EInformationElementMissing,
+		/*Message extension cannot be understood*/
+		EMsgExtnNotComprehend
+		}; 
+		
+	/**
+	This enum contains the possible domains used by MOLR 
+	*/
+	enum TDomain
+   		{
+		/**Packet switch domain is the default domain that will be used by Molr*/
+   		EPacketSwitchedDomain,
+		/**UE shall set the domain to Circuit switch whenever Molr is intended to use it*/
+  	 	ECircuitSwitchedDomain
+   		};
+
+	IMPORT_C void NotifyMtlr(TRequestStatus& aReqStatus,TDes8& aNotifyMtlr);
+	IMPORT_C void SendMtlrResponse(TRequestStatus& aReqStatus,const TMtlrResponse aMtlrResponse);
+	IMPORT_C void SendMtlrResponse(TRequestStatus& aReqStatus,const TMtlrError aMtlrResponse);
+	IMPORT_C void SendMtlrResponse(TRequestStatus& aReqStatus,const TMtlrReject aMtlrResponse);
+    IMPORT_C void SendMolr(TRequestStatus& aReqStatus,const TDesC8& aStartMolr,TDes8& aMolrReturnResult);
+	IMPORT_C void NotifyMeasurementControl(TRequestStatus& aReqStatus,TDes8& aMeasurementControl);
+	IMPORT_C void SendMeasurementReport(TRequestStatus& aReqStatus,const TDesC8& aMeasurementReport);
+	IMPORT_C void SendMeasurementReport(TRequestStatus& aReqStatus,const TMeasurementControlFailure aMeasurementControlFailure);
+	IMPORT_C TInt SetLcsDomain(const TDomain aDomain);		
+private:
+	void ConstructL();
+	void Destruct();
+private:
+	/**
+	Pointer Holder for the RMobileLocationServices sub-session requests.
+	*/
+	CMobileLocationServicesPtrHolder* iMmPtrHolder;
+	};
+
+#endif // __ETELMM_H__
+