tsrc/etelstub/inc/etelmm.h
changeset 22 496ad160a278
equal deleted inserted replaced
15:ccd8e69b5392 22:496ad160a278
       
     1 /*
       
     2 * Copyright (c) 2000-2007 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 /**
       
    20 @file
       
    21 
       
    22 Multimode ETel API header file.
       
    23 
       
    24 Describes the MM ETel API - classes, methods and types.
       
    25 
       
    26 @publishedPartner
       
    27 @released
       
    28 */
       
    29 
       
    30 #ifndef __ETELMM_H__
       
    31 #define __ETELMM_H__
       
    32 
       
    33 #include <e32base.h>
       
    34 #include <s32mem.h>
       
    35 #include <etel.h>
       
    36 #include <etelmmcs.h>
       
    37 
       
    38 
       
    39 /** 
       
    40 Internal API/TSY delimiter used to pass the phonebook type
       
    41 */
       
    42 #define PHBOOK_DELIMITER		_L("//")
       
    43 /** The size of the phone book delimiter string.
       
    44 @internalComponent
       
    45  */
       
    46 const TInt KSizeOfPhbookDelimiter=2;
       
    47 
       
    48 /**
       
    49 Names for Multimode ETel sub-sessions
       
    50 */
       
    51 _LIT(KETelMeAdnPhoneBook,"S1");
       
    52 _LIT(KETelMeDialledPhoneBook,"S2");
       
    53 _LIT(KETelMeMissedPhoneBook,"S3");
       
    54 _LIT(KETelMeReceivedPhoneBook,"S4");
       
    55 _LIT(KETelCombinedAdnPhoneBook,"S5");
       
    56 _LIT(KETelTaAdnPhoneBook,"S6");
       
    57 _LIT(KETelIccAdnPhoneBook,"S7");
       
    58 _LIT(KETelIccFdnPhoneBook,"S8");
       
    59 _LIT(KETelIccSdnPhoneBook,"S9");
       
    60 _LIT(KETelIccBdnPhoneBook,"S10");
       
    61 _LIT(KETelIccLndPhoneBook,"S11");
       
    62 _LIT(KETelIccVoiceMailBox,"S12");
       
    63 
       
    64 _LIT(KETelMeSmsStore,"S13");
       
    65 _LIT(KETelIccSmsStore,"S14");
       
    66 _LIT(KETelCombinedSmsStore,"S15");
       
    67 
       
    68 _LIT(KETelNamStore,"S16");
       
    69 _LIT(KETelOwnNumberStore,"S17");
       
    70 _LIT(KETelEmergencyNumberStore,"S18");
       
    71 
       
    72 _LIT(KETelSmsMessaging,"S19");
       
    73 _LIT(KETelBroadcastMessaging,"S20");
       
    74 _LIT(KETelUssdMessaging,"S21");
       
    75 
       
    76 _LIT(KETelConferenceCall,"S22");
       
    77 
       
    78 _LIT(KETelIccMbdnPhoneBook, "S23");
       
    79 _LIT(KETelIccMsisdnPhoneBook, "S24");
       
    80 _LIT(KETelIccOciPhoneBook, "S25");
       
    81 _LIT(KETelIccIciPhoneBook, "S26");
       
    82 _LIT(KETelIccNamStore ,"S27");
       
    83 _LIT(KETelIccInfoPhoneBook, "S28");
       
    84 
       
    85 _LIT(KETelLocationServices,"S29");
       
    86 
       
    87 // Types for Multimode ETel sub-sessions
       
    88 
       
    89 _LIT(KEtelCdmaPhoneBookType,"T1");
       
    90 _LIT(KEtelGsmPhoneBookType,"T2");
       
    91 _LIT(KEtelUSimPhoneBookType,"T3");
       
    92 
       
    93 // Types for SmartCardEap sub-sessions
       
    94 
       
    95 /**
       
    96 The prefix to all RMobileSmartCardEap sub-session names.
       
    97 */
       
    98 _LIT(KETelSmartCardEapSession, "ScEap");
       
    99 /**
       
   100 The length of KETelSmartCardEapSession.  Used to obtain a const value
       
   101 for this length at compile-time.
       
   102 */
       
   103 #define SCEAP_SSN_LENGTH 5
       
   104 
       
   105 /**
       
   106 EAP-MD5 type identifier.  Value taken from section 5 of RFC 3748 Jun 2004.
       
   107 This should be used as the EAP type identifier value of
       
   108 RMobileSmartCardEap::Open() if standard EAP-MD5 challenges are to be used.
       
   109 
       
   110 This value corresponds to one of the possible values returned in the type
       
   111 list of TUiccApplicationEapInfoV6.
       
   112 
       
   113 (Decimal value = 4)
       
   114 
       
   115 @see RMobileSmartCardEap::Open()
       
   116 @see RMobilePhone::TUiccApplicationEapInfoV6
       
   117 */
       
   118 _LIT8(KETelSmartCardEapTypeMD5, "04");
       
   119 
       
   120 /**
       
   121 EAP-TLS type identifier.  Value taken from section 4.1 of RFC 2716 Oct 1999.
       
   122 This should be used as the EAP type identifier value of
       
   123 RMobileSmartCardEap::Open() if standard EAP-TLS is to be used.
       
   124 
       
   125 This value corresponds to one of the possible values returned in the type
       
   126 list of TUiccApplicationEapInfoV6.
       
   127 
       
   128 (Decimal value = 13)
       
   129 
       
   130 @see RMobileSmartCardEap::Open()
       
   131 @see RMobilePhone::TUiccApplicationEapInfoV6
       
   132 */
       
   133 _LIT8(KETelSmartCardEapTypeTLS, "0D");
       
   134 
       
   135 /**
       
   136 EAP-SIM type identifier.
       
   137 This should be used as the EAP type identifier value of
       
   138 RMobileSmartCardEap::Open() if standard EAP-SIM is to be used.
       
   139 
       
   140 This value corresponds to one of the possible values returned in the type
       
   141 list of TUiccApplicationEapInfoV6.
       
   142 
       
   143 (Decimal value = 18)
       
   144 
       
   145 @see RMobileSmartCardEap::Open()
       
   146 @see RMobilePhone::TUiccApplicationEapInfoV6
       
   147 */
       
   148 _LIT8(KETelSmartCardEapTypeSIM, "12");
       
   149 
       
   150 /**
       
   151 EAP-AKA type identifier.
       
   152 This should be used as the EAP type identifier value of
       
   153 RMobileSmartCardEap::Open() if standard EAP-AKA is to be used.
       
   154 
       
   155 This value corresponds to one of the possible values returned in the type
       
   156 list of TUiccApplicationEapInfoV6.
       
   157 
       
   158 (Decimal value = 23)
       
   159 
       
   160 @see RMobileSmartCardEap::Open()
       
   161 @see RMobilePhone::TUiccApplicationEapInfoV6
       
   162 */
       
   163 _LIT8(KETelSmartCardEapTypeAKA, "17");
       
   164 
       
   165 /**
       
   166 EAP-TTLS type identifier.
       
   167 This should be used as the EAP type identifier value of
       
   168 RMobileSmartCardEap::Open() if standard EAP-TTLS is to be used.
       
   169 
       
   170 This value corresponds to one of the possible values returned in the type
       
   171 list of TUiccApplicationEapInfoV6.
       
   172 
       
   173 (Decimal value = 21)
       
   174 
       
   175 @see RMobileSmartCardEap::Open()
       
   176 @see RMobilePhone::TUiccApplicationEapInfoV6
       
   177 */
       
   178 _LIT8(KETelSmartCardEapTypeTTLS, "15");
       
   179 
       
   180 /***********************************************************************************/
       
   181 //
       
   182 //  Global Multimode constants and types
       
   183 // 
       
   184 /***********************************************************************************/
       
   185 
       
   186 /**
       
   187 Unique API identifier and Functional Unit constants
       
   188 Modes: Common 
       
   189 */
       
   190 enum TMultimodeETelV1Api
       
   191 	{
       
   192 	/** TSY supports the Multimode ETel v1.0 API.
       
   193 	
       
   194 	Modes: Common */
       
   195 	KETelExtMultimodeV1=3000,  // 3000 is unique reference for Multimode Etel v1.0 API
       
   196 	/** TSY supports the MobileSimAccess functional unit.
       
   197 	
       
   198 	Modes: Common */
       
   199 	KETelFuncMobileIccAccess,
       
   200 	/** TSY supports the MobileNetwork functional unit.
       
   201 	
       
   202 	Modes: Common */
       
   203 	KETelFuncMobileNetwork,
       
   204 	/** TSY supports the MobileIdentity functional unit.
       
   205 	
       
   206 	Modes: Common */
       
   207 	KETelFuncMobileIdentity,
       
   208 	/** TSY supports the MobilePower functional unit.
       
   209 	
       
   210 	Modes: Common */
       
   211 	KETelFuncMobilePower,
       
   212 	/** TSY supports the MobileSignal functional unit.
       
   213 	
       
   214 	Modes: GSM/WCDMA */
       
   215 	KETelFuncMobileSignal,
       
   216 	/** TSY supports the MobileIndicator functional unit.
       
   217 	
       
   218 	Modes: Common */
       
   219 	KETelFuncMobileIndicator,
       
   220 	/** TSY supports the MobileDTMF functional unit.
       
   221 	
       
   222 	Modes: Common */
       
   223 	KETelFuncMobileDTMF,
       
   224 	/** TSY supports the MobileUserNetworkAccess functional unit.
       
   225 	
       
   226 	Modes: Common */
       
   227 	KETelFuncMobileUserNetworkAccess,
       
   228 	/** TSY supports the MobileIdentityService functional unit.
       
   229 	
       
   230 	Modes: Common */
       
   231 	KETelFuncMobileIdentityService,
       
   232 	/** TSY supports the MobileCallForwarding functional unit.
       
   233 	
       
   234 	Modes: Common */
       
   235 	KETelFuncMobileCallForwarding,
       
   236 	/** TSY supports the MobileCallBarring functional unit.
       
   237 	
       
   238 	Modes: GSM/WCDMA */
       
   239 	KETelFuncMobileCallBarring,
       
   240 	/** TSY supports the MobileCallWaiting functional unit.
       
   241 	
       
   242 	Modes: Common */
       
   243 	KETelFuncMobileCallWaiting,
       
   244 	/** TSY supports the MobileCallCompletion functional unit. */
       
   245 	KETelFuncMobileCallCompletion,
       
   246 	/** TSY supports the MobileAlternatingCall functional unit.
       
   247 	
       
   248 	Modes: GSM/WCDMA */
       
   249 	KETelFuncMobileAlternatingCall,
       
   250 	/** TSY supports the MobileCost functional unit.
       
   251 	
       
   252 	Modes: GSM/WCDMA */
       
   253 	KETelFuncMobileCost,
       
   254 	/** TSY supports the MobileSecurity functional unit.
       
   255 	
       
   256 	Modes: Common */
       
   257 	KETelFuncMobileSecurity,
       
   258 	/** TSY supports the MobileAlternateLineService functional unit.
       
   259 	
       
   260 	Modes: GSM/WCDMA */
       
   261 	KETelFuncMobileAlternateLineService,
       
   262 	/** TSY supports the MobileMessageWaiting functional unit.
       
   263 	
       
   264 	Modes: Common */
       
   265 	KETelFuncMobileMessageWaiting,
       
   266 	/** TSY supports the MobileFixedDiallingNumbers functional unit.
       
   267 	
       
   268 	Modes: GSM/WCDMA */
       
   269 	KETelFuncMobileFixedDiallingNumbers,
       
   270 	/** TSY supports the MobileDataCall functional unit.
       
   271 	
       
   272 	Modes: Common */
       
   273 	KETelFuncMobileDataCall,
       
   274 	/** TSY supports the MobilePrivacy functional unit.
       
   275 	
       
   276 	Modes: CDMA */
       
   277 	KETelFuncMobilePrivacy,
       
   278 	/** TSY supports the MobileEmergencyCall functional unit.
       
   279 	
       
   280 	Modes: Common */
       
   281 	KETelFuncMobileEmergencyCall,
       
   282 	/** TSY supports the MobileSmsMessaging functional unit.
       
   283 	
       
   284 	Modes: Common */
       
   285 	KETelFuncMobileSmsMessaging,
       
   286 	/** TSY supports the MobileBroadcastMessaging functional unit.
       
   287 	
       
   288 	Modes: Common */
       
   289 	KETelFuncMobileBroadcastMessaging,
       
   290 	/** TSY supports the MobileUssdMessaging functional unit.
       
   291 	
       
   292 	Modes: GSM/WCDMA */
       
   293 	KETelFuncMobileUssdMessaging,
       
   294 	/** TSY supports the MobileConferenceCall functional unit.
       
   295 	
       
   296 	Modes: Common */
       
   297 	KETelFuncMobileConferenceCall,
       
   298 	/** TSY supports the MobilePhonebookStore functional unit.
       
   299 	
       
   300 	Modes: Common */
       
   301 	KETelFuncMobilePhonebook,
       
   302 	/** TSY supports the MobileSmsStore functional unit.
       
   303 	
       
   304 	Modes: Common */
       
   305 	KETelFuncMobileSmsStore,
       
   306 	/** TSY supports the MobileNamStore functional unit.
       
   307 	
       
   308 	Modes: CDMA */
       
   309 	KETelFuncMobileNamStore,
       
   310 	/** TSY supports the MobileONStore functional unit.
       
   311 	
       
   312 	Modes: Common */
       
   313 	KETelFuncMobileOwnNumberStore,
       
   314 	/** TSY supports the MobileENStore functional unit.
       
   315 	
       
   316 	Modes: Common */
       
   317 	KETelFuncMobileEmergencyNumberStore,
       
   318 	/** TSY supports the MobileMultimedia functional unit.
       
   319 	
       
   320 	Modes: GSM/WCDMA */
       
   321 	KETelFuncMobileMulticall,
       
   322 	/** TSY supports the MobileNextIncomingCall functional unit.
       
   323 	
       
   324 	Modes: GSM/WCDMA */
       
   325 	KETelFuncMobileNextIncomingCall,
       
   326 	/** TSY supports the MobileMultimediaCall functional unit.
       
   327 	
       
   328 	Modes: GSM/WCDMA */
       
   329 	KETelFuncMobileMultimediaCall,
       
   330 	/** TSY supports the MobileUserSignalling functional unit.
       
   331 	
       
   332 	Modes: GSM/WCDMA */
       
   333 	KETelFuncMobileUserSignalling
       
   334 	};
       
   335 
       
   336 /** Unique API identifier and Functional Unit constants.
       
   337 Modes: WCDMA 
       
   338 
       
   339 */
       
   340 enum TMultimodeETelV2Api
       
   341 	{
       
   342 	/** TSY supports the Multimode ETel v2.0 API.
       
   343 	
       
   344 	Modes: WCDMA */
       
   345 	KETelExtMultimodeV2=7000,  // 7000 is unique reference for Multimode Etel v2.0 API
       
   346 	/** TSY supports the MobileMultimediaCallSettings functional unit.
       
   347 	
       
   348 	Modes: WCDMA */
       
   349 	KEtelFuncMobileMultimediaCallSettings,
       
   350 	/** TSY supports the MobileNetworkSecurity functional unit.
       
   351 	
       
   352 	Modes: WCDMA */
       
   353 	KEtelFuncMobileNetworkSecurity,
       
   354 	KEtelFuncMobileUSIMApplications
       
   355 	};
       
   356 	
       
   357 /**
       
   358 Enum to define the v3.0 API additions
       
   359 
       
   360 */
       
   361 enum TMultimodeETelV3Api
       
   362 	{
       
   363 	/**
       
   364 	Indicator that the TSY supports the Multimode ETel v3.0 API.
       
   365 	*/
       
   366 	KETelExtMultimodeV3 = 10000,	
       
   367 	/**
       
   368 	TSY supports the MobileMMSInformation functional unit.
       
   369 	*/
       
   370 	KEtelFuncMobileMMSInformation,       // 10001
       
   371 	/**
       
   372 	TSY supports the KEtelFuncMobileAirTime functional unit.
       
   373 	*/
       
   374 	KEtelFuncMobileAirTime,              // 10002
       
   375 	/**
       
   376 	TSY supports the KEtelFuncMobileAutoRedial functional unit.
       
   377 	*/
       
   378 	KEtelFuncMobileAutoRedial,           // 10003
       
   379 	/**
       
   380 	TSY supports the KEtelFuncMobilePersonalisation functional unit.
       
   381 	*/
       
   382 	KEtelFuncMobilePersonalisation,      // 10004
       
   383 	/**
       
   384 	TSY supports the KEtelMobileMailboxNumbers functional unit.
       
   385 	*/
       
   386 	KEtelFuncMobileMailboxNumbers,       // 10005
       
   387 	/**
       
   388 	TSY supports the Mobile APN Control List functional unit.
       
   389 	*/
       
   390 	KEtelFuncMobileAPNControlList        // 10006
       
   391 	};
       
   392 
       
   393 /**
       
   394 Enum to define the v4.0 API additions
       
   395 
       
   396 */
       
   397 enum TMultimodeETelV4Api
       
   398 	{
       
   399 	/**
       
   400 	Indicator that the TSY supports the Multimode ETel v4.0 API.
       
   401 	*/
       
   402 	KETelExtMultimodeV4	= 15000
       
   403 	};
       
   404 
       
   405 
       
   406 /** Enum to define Release 5 enabling API and data structures
       
   407 */
       
   408 enum TMultimodeEtelV5Api
       
   409 	{
       
   410 	/**
       
   411 	Indicator that the TSY supports the Multimode ETel v5.0 API.
       
   412 	*/	
       
   413 	KEtelExtMultimodeV5=20000,
       
   414 	/**
       
   415 	Indicator that the TSY supports the IMS functional unit.
       
   416 	*/	
       
   417 	KEtelFuncMobileIMS,                  // 20001
       
   418 	/**
       
   419 	TSY supports the KEtelFuncMobileSmartCardApplications functional unit.
       
   420 	*/
       
   421 	KEtelFuncMobileSmartCardApplications // 20002
       
   422 	};
       
   423 
       
   424 
       
   425 /**
       
   426 Enum to define the v6.0 API additions.
       
   427 */
       
   428 enum TMultimodeEtelV6Api
       
   429 	{
       
   430 	/**
       
   431 	Indicator that the TSY supports the Multimode ETel v6.0 API.
       
   432 	*/	
       
   433 	KEtelExtMultimodeV6=25000,
       
   434 	/**
       
   435 	Indicator that the TSY supports the EAP supporting functional unit.
       
   436 	*/	
       
   437 	KEtelSmartCardEap                    // 25001
       
   438 	};
       
   439 /**
       
   440 Enum to define the v7.0 API additions.
       
   441 */
       
   442 enum TMultimodeEtelV7Api
       
   443 	{
       
   444 	/**
       
   445 	Indicator that the TSY supports the Multimode ETel v7.0 API.
       
   446 	*/	
       
   447 	KEtelExtMultimodeV7=30000,
       
   448 	/**
       
   449 	Indicator that the TSY supports the LocationServices supporting functional unit.
       
   450 	*/	
       
   451 	KEtelLocationControlServices                    // 30001
       
   452 	};		
       
   453 /**
       
   454 Enum to define the Etel 3rdParty V1 API additions
       
   455 
       
   456 */
       
   457 enum TMultimodeETel3rdPartyV1Api 
       
   458 	{
       
   459 	/**
       
   460 	Indicator that the TSY supports the Etel 3rd Party v1.0 API
       
   461 	*/
       
   462 	KETelExt3rdPartyV1 = 40000
       
   463 	};
       
   464 
       
   465 /*********************************************************/
       
   466 //
       
   467 // Phone based functionality (RMobilePhone)
       
   468 // 
       
   469 /*********************************************************/
       
   470 
       
   471 
       
   472 class CMobilePhonePtrHolder;
       
   473 class CMobilePhoneStoredNetworkList;
       
   474 class RMobileSmartCardEap;
       
   475 
       
   476 class RMobilePhone : public RPhone
       
   477 /**
       
   478 Provides client access to mobile phone functionality provided by TSY.
       
   479 
       
   480 Encapsulates access to a mobile phone. The functionality of RMobilePhone 
       
   481 is divided into a number of functional units, for the purpose of easier documentation 
       
   482 and navigation and selectable support by TSY.
       
   483 
       
   484 Note: Some RMobilePhone function members must be supported by the TSY while 
       
   485 others are part of optional "functional unit" and only need to be supported 
       
   486 if the TSY supports that functional unit. When a functional unit is mandatory 
       
   487 then the unit should at least support the Get...Caps() member function to 
       
   488 indicate the member functions that are supported for this unit.
       
   489  
       
   490 */
       
   491 	{
       
   492 public:
       
   493 	friend class CAsyncRetrievePhoneList;
       
   494 	IMPORT_C RMobilePhone();
       
   495 
       
   496 	// Global multimode types
       
   497 
       
   498 	
       
   499 	class TMultimodeType
       
   500 	/**
       
   501 	Base class for all the V1 parameter types defined within the API.
       
   502 	
       
   503 	@publishedPartner
       
   504 	@released
       
   505 	*/
       
   506 		{
       
   507 	public:
       
   508 		IMPORT_C TInt ExtensionId() const;
       
   509 	protected:
       
   510 		TMultimodeType();
       
   511 		void InternalizeL(RReadStream& aStream);
       
   512 		void ExternalizeL(RWriteStream& aStream) const;
       
   513 	protected:
       
   514 		TInt iExtensionId;
       
   515 		};
       
   516 		
       
   517 	/** A typedef'd packaged TMultimodeType for passing through a generic API 
       
   518 	function member. */
       
   519 	typedef TPckg<TMultimodeType> TMultimodeTypePckg;
       
   520 
       
   521 	// Types used in RMobilePhone::TMobileAddress
       
   522 
       
   523 /** Address types.
       
   524 
       
   525 Modes: Common */
       
   526 	enum TMobileTON
       
   527 		{
       
   528 	/** User or the network has no knowledge of the type of number.
       
   529 	
       
   530 	Modes: Common */
       
   531 		EUnknownNumber,			// 0
       
   532 	/** International number.
       
   533 	
       
   534 	Modes: Common */
       
   535 		EInternationalNumber,	// 1
       
   536 	/** National number.
       
   537 	
       
   538 	Modes: Common */
       
   539 		ENationalNumber,		// 2
       
   540 	/** Administration/service number specific to the serving network, e.g. used to 
       
   541 	access an operator.
       
   542 	
       
   543 	Modes: Common */
       
   544 		ENetworkSpecificNumber, // 3
       
   545 	/** Subscriber number.
       
   546 	
       
   547 	Modes: Common */
       
   548 		ESubscriberNumber,		// 4 - Also defined as "dedicated, short code" in GSM 04.08
       
   549 	/** Alphanumeric number coded according to 3GPP TS 123 038 GSM 7-bit default alphabet.
       
   550 	
       
   551 	Modes: GSM/WCDMA */
       
   552 		EAlphanumericNumber,	// 5
       
   553 	/** Abbreviated number.
       
   554 	
       
   555 	Modes: Common */
       
   556 		EAbbreviatedNumber		// 6
       
   557 		};
       
   558 
       
   559 /** Number Plan Indicator.
       
   560 
       
   561 Modes: Common */
       
   562 	enum TMobileNPI
       
   563 		{
       
   564 	/** User or the network has no knowledge of the numbering plan.
       
   565 	
       
   566 	Modes: Common */
       
   567 		EUnknownNumberingPlan =0,
       
   568 	/** ISDN/telephony numbering plan.
       
   569 	
       
   570 	Modes: Common */
       
   571 		EIsdnNumberPlan=1,		
       
   572 	/** Data numbering plan.
       
   573 
       
   574 	Modes: Common */
       
   575 		EDataNumberPlan=3,		
       
   576 	/** Telex numbering plan.
       
   577 
       
   578 	Modes: Common */
       
   579 		ETelexNumberPlan=4,	
       
   580 	/** Service centre specific plan used to indicate a numbering plan specific to external 
       
   581 	Short Message entities attached to the SMSC. */
       
   582 		EServiceCentreSpecificPlan1=5,
       
   583 	/** Service centre specific plan used to indicate a numbering plan specific to external 
       
   584 	Short Message entities attached to the SMSC.
       
   585 	
       
   586 	Modes: GSM/WCDMA */
       
   587 		EServiceCentreSpecificPlan2=6,
       
   588 	/** National numbering plan.
       
   589 	
       
   590 	Modes: GSM/WCDMA */
       
   591 		ENationalNumberPlan=8,
       
   592 	/** Private numbering plan.
       
   593 	
       
   594 	Modes: Common */
       
   595 		EPrivateNumberPlan=9,
       
   596 	/** ERMES numbering plan.
       
   597 	
       
   598 	Modes: GSM/WCDMA */
       
   599 		EERMESNumberPlan=10
       
   600 		};
       
   601 
       
   602 	enum 
       
   603 		{
       
   604 		KMaxMobilePasswordSize=10,
       
   605 		KMaxMobileNameSize=32,
       
   606 		KMaxMobileTelNumberSize=100
       
   607 		};
       
   608 
       
   609 	struct TMMTableSettings
       
   610 		{
       
   611 		TUint32 iLocId;
       
   612 		};
       
   613 
       
   614 	typedef TPckg<TMMTableSettings> TMMTableSettingsPckg;
       
   615 
       
   616 	
       
   617 
       
   618 	class TMobileAddress
       
   619 	/**
       
   620 	Defines API abstraction of a mobile telephone number.
       
   621 	
       
   622 	@publishedPartner
       
   623 	@released
       
   624 	*/
       
   625 		{
       
   626 	public:
       
   627 		IMPORT_C TMobileAddress();
       
   628 			
       
   629 		void InternalizeL(RReadStream& aStream);
       
   630 		void ExternalizeL(RWriteStream& aStream) const;
       
   631 			
       
   632 	public:
       
   633 		/** Type of number.
       
   634 		
       
   635 		@see TMobileTON */
       
   636 		TMobileTON iTypeOfNumber;
       
   637 		/** Number plan.
       
   638 		
       
   639 		@see TMobileNPI */
       
   640 		TMobileNPI iNumberPlan;
       
   641 		/** Telephone number. */
       
   642 		TBuf<KMaxMobileTelNumberSize> iTelNumber;
       
   643 		};
       
   644 
       
   645 	// Mobile information location type
       
   646 
       
   647 	/** Defines Location of service information.
       
   648 
       
   649 	Modes: Common */
       
   650 	enum TMobileInfoLocation
       
   651 		{
       
   652 		/** Retrieve the service information ONLY from the cache on the phone. Return KErrNotFound 
       
   653 		if the cache does not exist or it is empty. */
       
   654 		EInfoLocationCache,
       
   655 		/** Retrieve the service information from the cache, but if this is empty or does 
       
   656 		not exist then interrogate the network. */
       
   657 		EInfoLocationCachePreferred,
       
   658 		/** Retrieve the service information from the network (and refresh the cache if 
       
   659 		there is one). */
       
   660 		EInfoLocationNetwork
       
   661 		};
       
   662 
       
   663 	// Mobile call service type
       
   664 
       
   665 	/** Applicability of request to a mobile service group.
       
   666 
       
   667 	Modes: Common */
       
   668 	enum TMobileService
       
   669 		{
       
   670 		/** The call service has not been specified.
       
   671 		
       
   672 		Modes: Common */
       
   673 		EServiceUnspecified,
       
   674 		/** The API request applies to voice call services.
       
   675 
       
   676 		Modes: Common */
       
   677 		EVoiceService,
       
   678 		/** The API request applies to auxiliary voice call services.
       
   679 
       
   680 		Modes: GSM/WCDMA */
       
   681 		EAuxVoiceService,
       
   682 		/** The API request applies to circuit switched data call services.
       
   683 		
       
   684 		Modes: Common */
       
   685 		ECircuitDataService,
       
   686 		/** The API request applies to packet data services.
       
   687 	
       
   688 		Modes: Common */
       
   689 		EPacketDataService,
       
   690 		/** The API request applies to fax call services.
       
   691 	
       
   692 		Modes: Common */
       
   693 		EFaxService,
       
   694 		/** The API request applies to short message services.
       
   695 	
       
   696 		Modes: Common */
       
   697 		EShortMessageService,
       
   698 		/** The API request applies to all mobile services.
       
   699 	
       
   700 		Modes: Common */
       
   701 		EAllServices,
       
   702 		/** All teleservices
       
   703 	
       
   704 		Modes: Common */
       
   705 		EAllTele,
       
   706 		/** Telephony
       
   707 	
       
   708 		Modes: Common */
       
   709 		ETelephony,
       
   710 		/** All data teleservices
       
   711 	
       
   712 		Modes: Common */
       
   713 		EAllDataTele,
       
   714 		/** Voice Broadcast Service (VBS) Bearer Service
       
   715 	
       
   716 		Modes: Common */
       
   717 		EAllDataExSms,
       
   718 		/** All teleservices except SMS
       
   719 	
       
   720 		Modes: Common */
       
   721 		EAllTeleExcSms,
       
   722 		/** All PLMN specific teleservices
       
   723 	
       
   724 		Modes: Common */
       
   725 		EAllPlmnTele,
       
   726 		/** PLMN specific teleservice 1
       
   727 	
       
   728 		Modes: Common */
       
   729 		EPlmnTele1,
       
   730 		/** PLMN specific teleservice 2
       
   731 	
       
   732 		Modes: Common */
       
   733 		EPlmnTele2,
       
   734 		/** PLMN specific teleservice 3
       
   735 	
       
   736 		Modes: Common */
       
   737 		EPlmnTele3,
       
   738 		/** PLMN specific teleservice 4
       
   739 	
       
   740 		Modes: Common */
       
   741 		EPlmnTele4,
       
   742 		/** PLMN specific teleservice 5
       
   743 
       
   744 		Modes: Common */
       
   745 		EPlmnTele5,
       
   746 		/** PLMN specific teleservice 6
       
   747 
       
   748 		Modes: Common */
       
   749 		EPlmnTele6,
       
   750 		/** PLMN specific teleservice 7
       
   751 	
       
   752 		Modes: Common */
       
   753 		EPlmnTele7,
       
   754 		/** PLMN specific teleservice 8
       
   755 	
       
   756 		Modes: Common */
       
   757 		EPlmnTele8,
       
   758 		/** PLMN specific teleservice 9
       
   759 	
       
   760 		Modes: Common */
       
   761 		EPlmnTele9,
       
   762 		/** PLMN specific teleservice 10
       
   763 	
       
   764 		Modes: Common */
       
   765 		EPlmnTeleA,
       
   766 		/** PLMN specific teleservice 11
       
   767 	
       
   768 		Modes: Common */
       
   769 		EPlmnTeleB,
       
   770 		/** PLMN specific teleservice 12
       
   771 	
       
   772 		Modes: Common */
       
   773 		EPlmnTeleC,
       
   774 		/** PLMN specific teleservice 13
       
   775 	
       
   776 		Modes: Common */
       
   777 		EPlmnTeleD,
       
   778 		/** PLMN specific teleservice 14
       
   779 	
       
   780 		Modes: Common */
       
   781 		EPlmnTeleE,
       
   782 		/** PLMN specific teleservice 15
       
   783 	
       
   784 		Modes: Common */
       
   785 		EPlmnTeleF,
       
   786 		/** All bearer services
       
   787 		
       
   788 		Modes: Common */
       
   789 		EAllBearer,
       
   790 		/** All async services
       
   791 	
       
   792 		Modes: Common */
       
   793 		EAllAsync,
       
   794 		/** All sync services
       
   795 	
       
   796 		Modes: Common */
       
   797 		EAllSync,
       
   798 		/** All data circuit sync
       
   799 	
       
   800 		Modes: Common */
       
   801 		ESyncData,
       
   802 		/** All data circuit async
       
   803 	
       
   804 		Modes: Common */
       
   805 		EAsyncData,
       
   806 		/** All packet data services
       
   807 	
       
   808 		Modes: Common */
       
   809 		EPacketData,
       
   810 		/** All pad access services
       
   811 
       
   812 		Modes: Common */
       
   813 		EPadAccess,
       
   814 		/** All PLMN specific bearer services
       
   815 
       
   816 		Modes: Common */
       
   817 		EAllPlmnBearer,
       
   818 		/** PLMN specific bearer service 1
       
   819 	
       
   820 		Modes: Common */
       
   821 		EPlmnBearerServ1,
       
   822 		/** PLMN specific bearer service 2
       
   823 	
       
   824 		Modes: Common */
       
   825 		EPlmnBearerServ2,
       
   826 		/** PLMN specific bearer service 3
       
   827 	
       
   828 		Modes: Common */
       
   829 		EPlmnBearerServ3,
       
   830 		/** PLMN specific bearer service 4
       
   831 	
       
   832 		Modes: Common */
       
   833 		EPlmnBearerServ4,
       
   834 		/** PLMN specific bearer service 5
       
   835 	
       
   836 		Modes: Common */
       
   837 		EPlmnBearerServ5,
       
   838 		/** PLMN specific bearer service 6
       
   839 	
       
   840 		Modes: Common */
       
   841 		EPlmnBearerServ6,
       
   842 		/** PLMN specific bearer service 7
       
   843 	
       
   844 		Modes: Common */
       
   845 		EPlmnBearerServ7,
       
   846 		/** PLMN specific bearer service 8
       
   847 	
       
   848 		Modes: Common */
       
   849 		EPlmnBearerServ8,
       
   850 		/** PLMN specific bearer service 9
       
   851 	
       
   852 		Modes: Common */
       
   853 		EPlmnBearerServ9,
       
   854 		/** PLMN specific bearer service 10
       
   855 	
       
   856 		Modes: Common */
       
   857 		EPlmnBearerServA,
       
   858 		/** PLMN specific bearer service 11
       
   859 	
       
   860 		Modes: Common */
       
   861 		EPlmnBearerServB,
       
   862 		/** PLMN specific bearer service 12
       
   863 	
       
   864 		Modes: Common */
       
   865 		EPlmnBearerServC,
       
   866 		/** PLMN specific bearer service 13
       
   867 	
       
   868 		Modes: Common */
       
   869 		EPlmnBearerServD,
       
   870 		/** PLMN specific bearer service 14
       
   871 	
       
   872 		Modes: Common */
       
   873 		EPlmnBearerServE,
       
   874 		/** PLMN specific bearer service 15
       
   875 	
       
   876 		Modes: Common */
       
   877 		EPlmnBearerServF,
       
   878 		/** Alternative tele services
       
   879 
       
   880 		Modes: Common */
       
   881 		EAltTele,
       
   882 		EVoiceGroupCall,
       
   883 		EVoiceBroadcast,
       
   884 		EAllGprsBearer
       
   885 		};
       
   886 
       
   887 	// Mobile name type
       
   888 
       
   889 	/** A typedef to hold the names of API sub-sessions. The names are coded as ASCII 
       
   890 	characters. */
       
   891 	typedef TBuf<KMaxMobileNameSize> TMobileName;
       
   892 
       
   893 	// Mobile password type
       
   894 
       
   895 	/** A typedef for the standard password used by mobile phones for secure access 
       
   896 	to services (phone lock, SIM lock, call barring password). The password is 
       
   897 	coded as Unicode characters. */
       
   898 	typedef TBuf<KMaxMobilePasswordSize> TMobilePassword;
       
   899 
       
   900 	// for use by client-side API code and TSY only
       
   901 
       
   902 	struct TClientId
       
   903 	/** This type is used within the 2-phase list retrieval classes. During both phases, 
       
   904 	the client-side API code will pass down the TClientId so that TSY can use
       
   905 	this information to match the first phase of the request to the second phase. */
       
   906 		{
       
   907 		/** The handle to the underlying RTelServer session. */
       
   908 		TInt iSessionHandle;
       
   909 		/** The handle to the sub-session to which this API request relates. */
       
   910 		TInt iSubSessionHandle;
       
   911 		};
       
   912 
       
   913 	/** Phone air interface capabilities. */
       
   914 	enum TMobilePhoneModeCaps
       
   915 		{
       
   916 		/** Phone can operate in GSM mode on 900/1800/1900 MHz bands. */
       
   917 		KCapsGsmSupported=0x00000001,
       
   918 		/** Phone can operate in GPRS mode on 900/1800/1900 MHz bands. */
       
   919 		KCapsGprsSupported=0x00000002,
       
   920 		/** Phone can operate in AMPS mode on 800MHz band. */
       
   921 		KCapsAmpsSupported=0x00000004,
       
   922 		/** Phone can operate in CDMA (IS-95) mode on 800/1900 MHz bands. */
       
   923 		KCapsCdma95Supported=0x00000008,
       
   924 		/** Phone can operate in CDMA (cdma2000) mode on 800/1900 MHz bands. */
       
   925 		KCapsCdma2000Supported=0x00000010,
       
   926 		/** Phone can operate in W-CDMA (UTRA Frequency Division Duplex (FDD)) mode. */
       
   927 		KCapsWcdmaSupported=0x00000020,
       
   928 		/** Phone can operate in TDMA/CDMA (UTRA Time Division Duplex (TDD)) mode. */
       
   929 		KCapsTdcdmaSupported=0x00000040,
       
   930 		/** 
       
   931 		Phone can access Smart Card functionality required for an EAP. 
       
   932 		@deprecated 9.3
       
   933 		*/
       
   934 		KCapsEapSupported=0x00000080
       
   935 		};
       
   936 
       
   937 	/** Version number of the multimode ETel API. */
       
   938 	 enum TMultimodeEtelAPIVersion
       
   939 		{
       
   940 		/** Multimode Etel API version 1. */
       
   941 		 TMultimodeETelApiV1
       
   942 		};
       
   943 
       
   944 	 //
       
   945 	 //  API/TSY internal type
       
   946 	 //
       
   947 	
       
   948 	 struct TPhoneStoreNameAndIccType
       
   949 	/** Structure that holds the phone store name and ICC type.
       
   950 
       
   951 	Mode: Common */
       
   952 		{
       
   953 		/** This parameter is used to set the name of the storage. */
       
   954 		TName iStoreName;
       
   955 		/** This parameter is used to set the type of the ICC card. */
       
   956 		TName iMode;
       
   957 		};
       
   958 
       
   959 	IMPORT_C TInt GetMultimodeAPIVersion(TInt& aVersion) const;
       
   960 
       
   961 	IMPORT_C TInt GetMultimodeCaps(TUint32& aCaps) const;
       
   962 
       
   963 	IMPORT_C void GetPhoneStoreInfo(TRequestStatus& aReqStatus, TDes8& aInfo, const TDesC& aStoreName) const;
       
   964 
       
   965 	IMPORT_C void GetPhoneStoreInfo(TRequestStatus& aStatus, TDes8& aInfo, const TDesC& aStoreName, const TDesC& aMode) const;
       
   966 
       
   967 	// explicit phone initialisation
       
   968 	IMPORT_C void InitialiseMM(TRequestStatus& aReqStatus, TDes8& aTableSettings) const; 
       
   969 
       
   970 	/***********************************************************************************/
       
   971 	//
       
   972 	// MobilePhoneIccAccess functional unit
       
   973 	//
       
   974 	/***********************************************************************************/
       
   975 	
       
   976 /** ICC access capabilities.
       
   977 
       
   978 Modes: GSM */
       
   979 	enum TMobilePhoneIccCaps
       
   980 		{
       
   981 	/** Phone has a SIM and it currently supports SIM access by clients.
       
   982 	
       
   983 	Modes: GSM */
       
   984 		KCapsSimAccessSupported=0x00000001,
       
   985 	/** Phone has a R-UIM and it currently supports R-UIM access by clients.
       
   986 	
       
   987 	Modes: CDMA */
       
   988 		KCapsRUimAccessSupported=0x00000002,
       
   989 	/** Phone has a USIM and it currently supports USIM access by clients.
       
   990 	
       
   991 	Modes: WCDMA */
       
   992 		KCapsUSimAccessSupported=0x00000004
       
   993 		};
       
   994 		
       
   995 
       
   996 	enum 
       
   997 	{
       
   998 	/**
       
   999 	Maximum size of an ICC identity. 
       
  1000 	
       
  1001 	NOTE: TS102.221 defines the maximum size of the ICC Identity as held in EF_ICCID as 10 bytes, however
       
  1002 	TS 51.011 mentions that network operators may issue a SIM with an identification number of 20 bytes.  
       
  1003 	Therefore to cover this possibility the higher figure of 20 bytes has been chosen as the maximum size of the ICC identity.
       
  1004 	*/
       
  1005 	KMaxSizeIccIdentity	= 20
       
  1006 	};
       
  1007 	
       
  1008 	/** A typedef to hold the ICC identity.*/
       
  1009 	typedef TBuf8<KMaxSizeIccIdentity> TIccIdentity; 
       
  1010 
       
  1011 	IMPORT_C TInt GetIccAccessCaps(TUint32& aCaps) const;
       
  1012 	IMPORT_C void NotifyIccAccessCapsChange(TRequestStatus& aReqStatus, TUint32& aCaps) const;
       
  1013 	IMPORT_C void GetIccIdentity(TRequestStatus& aReqStatus, TIccIdentity& aIdentity) const;
       
  1014 
       
  1015 /** The Call Transfer/Call Forward options that are supported by the CSP.
       
  1016 
       
  1017 Modes: WCDMA/GSM */
       
  1018 	enum TCspCallOffering
       
  1019 		{
       
  1020 	/** Indicates that "Call Transfer" is supported by the CSP. */
       
  1021 		KCspCT=0x08,
       
  1022 	/** Indicates that "Call Forwarding on Not Reachable" is supported by the CSP. */
       
  1023 		KCspCFNRc=0x10,
       
  1024 	/** Indicates that "Call Forwarding on No Reply" is supported by the CSP. */
       
  1025 		KCspCFNRy=0x20,
       
  1026 	/** Indicates that "Call Forwarding on Busy" is supported by the CSP. */
       
  1027 		KCspCFB=0x40,
       
  1028 	/** Indicates that "Call Forwarding Unconditional" is supported by the CSP. */
       
  1029 		KCspCFU=0x80
       
  1030 		};
       
  1031 
       
  1032 /** The call restrictions supported by the CSP.
       
  1033 
       
  1034 Modes: GSM/WCDMA */
       
  1035 	enum TCspCallRestriction
       
  1036 		{
       
  1037 	/** Indicates that "Barring of Incoming Calls when roaming outside the home PLMN 
       
  1038 	country" is supported by CSP. */
       
  1039 		KCspBICRoam=0x08,
       
  1040 	/** Indicates that "Barring of All Incoming Calls" is supported by CSP. */
       
  1041 		KCspBAIC=0x10,
       
  1042 	/** Indicates that "Barring of Outgoing International Calls except those directed 
       
  1043 	to the home PLMN country" is supported by CSP. */
       
  1044 		KCspBOICexHC=0x20,
       
  1045 	/** Indicates that "Barring of Outgoing International Calls" is supported by CSP. */
       
  1046 		KCspBOIC=0x40,
       
  1047 	/** Indicates that "Barring of All Outgoing Calls" is supported by CSP. */
       
  1048 		KCspBOAC=0x80
       
  1049 		};
       
  1050 
       
  1051 /** Other services supported by the CSP.
       
  1052 
       
  1053 Modes: GSM/WCDMA */
       
  1054 	enum TCspOtherSuppServices
       
  1055 		{
       
  1056 	/** Indicates that the Outgoing Access option of the Closed User Group service is 
       
  1057 	supported by the CSP. */
       
  1058 		KCspCUGOA=0x08,
       
  1059 	/** Indicates that the Preferential CUG option of the Closed User Group service 
       
  1060 	is supported by the CSP. */
       
  1061 		KCspPrefCUG=0x10,
       
  1062 	/** Indicates that the Advice of Charge service is supported by the CSP. */
       
  1063 		KCspAoC=0x20,
       
  1064 	/** Indicates that the Closed User Group service is supported by the CSP. */
       
  1065 		KCspCUG=0x40,
       
  1066 	/** Indicates that the Multiparty call service is supported by the CSP */
       
  1067 		KCspMPTY=0x80,
       
  1068 		};
       
  1069 
       
  1070 /** Call completion modes supported by this CSP.
       
  1071 
       
  1072 Modes: GSM/WCDMA */
       
  1073 	enum TCspCallCompletion
       
  1074 		{
       
  1075 	/** Indicates that the Call Completion to Busy Subscriber service is supported by 
       
  1076 	the CSP. */
       
  1077 		KCspCCBS=0x20,
       
  1078 	/** Indicates that the Call Waiting service is supported by the CSP. */
       
  1079 		KCspCW=0x40,
       
  1080 	/** Indicates that the Call Hold service is supported by the CSP. */
       
  1081 		KCspHOLD=0x80,
       
  1082 		};
       
  1083 
       
  1084 /** SMS Teleservices supported by the CSP.
       
  1085 
       
  1086 Modes: GSM/WCDMA */
       
  1087 	enum TCspTeleservices
       
  1088 		{
       
  1089 	/** Indicates that display of Validity Period menu options for SMS is supported 
       
  1090 	by the CSP. */
       
  1091 		KCspValidityPeriod=0x02,
       
  1092 	/** Indicates that display of Protocol ID menu options for SMS is supported by the 
       
  1093 	CSP. */
       
  1094 		KCspProtocolID=0x04,
       
  1095 	/** Indicates that SMS Delivery Confirmation is supported by the CSP. */
       
  1096 		KCspDelConf=0x08,
       
  1097 	/** Indicates that display of Reply Path menu options for outgoing SMS is supported 
       
  1098 	by the CSP. */
       
  1099 		KCspReplyPath=0x10,
       
  1100 	/** Indicates that the Cell Broadcast service is supported by the CSP. */
       
  1101 		KCspSMCB=0x20,
       
  1102 	/** Indicates mobile originated Short Messages are supported by CSP. */
       
  1103 		KCspSMMO=0x40,
       
  1104 	/** Indicates mobile terminated Short Messages are supported by CSP. */
       
  1105 		KCspSMMT=0x80,
       
  1106 		};
       
  1107 
       
  1108 /** Alternate Line Services */
       
  1109 	enum TCspCPHSTeleservices
       
  1110 		{
       
  1111 	/** Indicates that Alternate Line Service is supported by the CSP. */
       
  1112 		KCspALS=0x80
       
  1113 		};
       
  1114 
       
  1115 /** Currently not used. */
       
  1116 	enum TCspCPHSFeatures
       
  1117 		{
       
  1118 	/** This bit value is reserved for SST in Phase 1 CPHS. */
       
  1119 		KCspReservedSST=0x80
       
  1120 		};
       
  1121 
       
  1122 /** Number Identification option supported by the CSP.
       
  1123 
       
  1124 Modes: GSM/WCDMA */
       
  1125 	enum TCspNumberIdentification
       
  1126 		{
       
  1127 	/** Indicates that Calling Line Identity Presentation blocking per call (CLI sent 
       
  1128 	by default) is supported by the CSP. */
       
  1129 		KCspCLIBlock=0x01,
       
  1130 	/** Indicates that Calling Line Identity Presentation per call (CLI blocked by default) 
       
  1131 	is supported by the CSP. */
       
  1132 		KCspCLISend=0x02,
       
  1133 	/** Indicates that Connected Line Identification Presentation is supported by the 
       
  1134 	CSP. */
       
  1135 		KCspCOLP=0x10,
       
  1136 	/** Indicates that Connected Line Identification Restriction is supported by the 
       
  1137 	CSP. */
       
  1138 		KCspCOLR=0x20,
       
  1139 	/** Indicates that Calling Line Identification Presentation is supported by the CSP. */
       
  1140 		KCspCLIP=0x80,
       
  1141 		};
       
  1142 
       
  1143 /** Phase 2+ services supported by the CSP.
       
  1144 
       
  1145 Modes: GSM/WCDMA */
       
  1146 	enum TCspPhase2PlusServices
       
  1147 		{
       
  1148 	/** Indicates that Multiple Band roaming is supported by CSP. */
       
  1149 		KCspMultipleband=0x04,
       
  1150 	/** Indicates that Multiple Subscriber Profile is supported by CSP.
       
  1151 	
       
  1152 	v1.0 of Multimode ETel API does not support this feature */
       
  1153 		KCspMSP=0x08,
       
  1154 	/** Indicates that Voice Broadcast is supported by CSP.
       
  1155 	
       
  1156 	v1.0 of Multimode ETel API does not support this feature. */
       
  1157 		KCspVoiceBroadcast=0x10,
       
  1158 	/** Indicates that Voice Group Call is supported by CSP. 
       
  1159 	
       
  1160 	v1.0 of Multimode ETel API does not support this feature. */
       
  1161 		KCspVoiceGroupCall=0x20,
       
  1162 	/** Indicates that High Speed Circuit Switched Data is supported by CSP. */
       
  1163 		KCspHscsd=0x40,
       
  1164 	/** Indicates that General Packet Radio Service is supported by CSP. */
       
  1165 		KCspGprs=0x80
       
  1166 		};
       
  1167 
       
  1168 /** Value added services supported by this CSP.
       
  1169 
       
  1170 Modes: GSM/WCDMA */
       
  1171 	enum TCspValueAdded
       
  1172 		{
       
  1173 	/** Indicates that display of language selection menus is supported by the CSP.
       
  1174 	
       
  1175 	v1.0 of Multimode ETel API does not support this feature. */
       
  1176 		KCspLanguage=0x01,
       
  1177 	/** Indicates that display of data call option menu is supported by the CSP. */
       
  1178 		KCspData=0x04,
       
  1179 	/** Indicates that display of fax call option menu is supported by the CSP. */
       
  1180 		KCspFax=0x08,
       
  1181 	/** Indicates that display of the menu option to send a Short Message of type Email 
       
  1182 	is supported by the CSP. */
       
  1183 		KCspSMMOEmail=0x10,
       
  1184 	/** Indicates that display of the menu option to send a Short Message of type Paging 
       
  1185 	is supported by the CSP. */
       
  1186 		KCspSMMOPaging=0x20,
       
  1187 	/** Indicates that display of the menu option for manual PLMN selection is supported 
       
  1188 	by the CSP. */
       
  1189 		KCspPLMNMode=0x80,
       
  1190 		};
       
  1191 
       
  1192 	
       
  1193 
       
  1194 	class TMobilePhoneCspFileV1 : public TMultimodeType
       
  1195 	/** Defines contents of the CSP (Customer Service Profile) on the SIM. The profile 
       
  1196 	consists of the sum of the respective enums.
       
  1197 
       
  1198 	@see GetCustomerServiceProfile()
       
  1199 	@publishedPartner
       
  1200 	@released*/
       
  1201 		{
       
  1202 	public:
       
  1203 	/** Constructor. */
       
  1204 		IMPORT_C TMobilePhoneCspFileV1();
       
  1205 
       
  1206 	/** Sum of the TCspCallOffering. */
       
  1207 		TUint8	iCallOfferingServices;
       
  1208 	/** Sum of the TCspCallRestriction. */
       
  1209 		TUint8	iCallRestrictionServices;
       
  1210 	/** Sum of the TCspOtherSuppServices. */
       
  1211 		TUint8	iOtherSuppServices;
       
  1212 	/** Sum of the TCspCallCompletion. */
       
  1213 		TUint8	iCallCompletionServices;
       
  1214 	/** Sum of the TCspTeleservices. */
       
  1215 		TUint8  iTeleservices;
       
  1216 	/** Sum of the TCspCPHSTeleservices. */
       
  1217 		TUint8	iCphsTeleservices;
       
  1218 	/** Sum of the TCspCPHSFeatures. */
       
  1219 		TUint8	iCphsFeatures;
       
  1220 	/** Sum of the TCspNumberIdentification. */
       
  1221 		TUint8	iNumberIdentServices;
       
  1222 	/** Sum of the TCspPhase2PlusServices. */
       
  1223 		TUint8	iPhase2PlusServices;
       
  1224 	/** Sum of the TCspValueAdded. */
       
  1225 		TUint8	iValueAddedServices;
       
  1226 		};
       
  1227 
       
  1228 /** A typedef'd packaged TMobilePhoneCspFileV1 for passing through a generic API 
       
  1229 function member. */
       
  1230 	typedef TPckg<TMobilePhoneCspFileV1> TMobilePhoneCspFileV1Pckg;
       
  1231 
       
  1232 	IMPORT_C void GetCustomerServiceProfile(TRequestStatus& aReqStatus, TDes8& aCsp) const;
       
  1233 
       
  1234 /** SIM/USIM/CDMA Service Table.
       
  1235 
       
  1236 Modes: Common */
       
  1237 	enum TSSTServices1To8
       
  1238 		{
       
  1239 	/** Indicates that disabling PIN1 is supported by the ICC. */
       
  1240 		KSstPin1Disable=0x01,
       
  1241 	/** Indicates that storage of Abbreviated Dialling Numbers within this ICC is supported. */
       
  1242 		KSstADN=0x02,
       
  1243 	/** Indicates that the Fixed Dialling Numbers service and the storage of FDN numbers
       
  1244 	within this ICC is supported. */
       
  1245 		KSstFDN=0x04,
       
  1246 	/** Indicates that the Short Message Service and the storage of short messages within 
       
  1247 	this ICC is supported.
       
  1248 	
       
  1249 	Modes: Common */
       
  1250 		KSstSMS=0x08,
       
  1251 	/** Indicates that the Advice of Charge service is supported by this ICC.
       
  1252 	
       
  1253 	Modes: GSM/WCDMA */
       
  1254 		KSstAoC=0x10,
       
  1255 	/** Indicates that the storage of Configuration Capability Parameters associated 
       
  1256 	with an AND, FDN, MSISDN, LND or SDN is supported by this ICC.
       
  1257 	
       
  1258 	Modes: GSM/WCDMA */
       
  1259 		KSstCCP=0x20,
       
  1260 	/** Indicates that storage of a preferred network list is supported by this ICC.
       
  1261 	
       
  1262 	v1.0 of Multimode ETel API does not support this feature
       
  1263 	
       
  1264 	Modes: GSM/WCDMA */
       
  1265 		KSstPLMNSelector=0x40
       
  1266 		};
       
  1267 
       
  1268 /** SIM/USIM/CDMA Service Table (continued).
       
  1269 
       
  1270 Modes: GSM/WCDMA */
       
  1271 	enum TSSTServices9To16
       
  1272 		{
       
  1273 	/** Indicates that storage of MSISDN (own numbers) numbers within this ICC is supported.
       
  1274 	
       
  1275 	Modes: GSM/WCDMA */
       
  1276 		KSstMSISDN=0x01,
       
  1277 	/** Indicates that storage of extended (greater than 20 digits) ADN, LND and MSISDN
       
  1278 	numbers within this ICC is supported.
       
  1279 	
       
  1280 	Modes: Common */
       
  1281 		KSstExt1=0x02,
       
  1282 	/** Indicates that storage of extended (greater than 20 digits) FDN numbers within 
       
  1283 	this ICC is supported.
       
  1284 	
       
  1285 	Modes: Common */
       
  1286 		KSstExt2=0x04,
       
  1287 	/** Indicates that storage of SMS parameter records within this ICC is supported.
       
  1288 	
       
  1289 	Modes: Common */
       
  1290 		KSstSMSP=0x08,
       
  1291 	/** Indicates that storage of Last Numbers Dialled within this ICC is supported.
       
  1292 	
       
  1293 	Modes: Common */
       
  1294 		KSstLND=0x10,
       
  1295 	/** Indicates that the storage of Cell Broadcast message identifiers is supported 
       
  1296 	within this ICC.
       
  1297 	
       
  1298 	Modes: GSM/WCDMA */
       
  1299 		KSstCBMI=0x20,
       
  1300 	/** Indicates that access to the GID1 file is supported within this ICC.
       
  1301 	
       
  1302 	v1.0 of Multimode ETel API does not support this feature
       
  1303 	
       
  1304 	Modes: GSM/WCDMA */
       
  1305 		KSstGID1=0x40,
       
  1306 	/** Indicates that access to the GID2 file is supported within this ICC.
       
  1307 	
       
  1308 	v1.0 of Multimode ETel API does not support this feature
       
  1309 	
       
  1310 	Modes: GSM/WCDMA */
       
  1311 		KSstGID2=0x80
       
  1312 		};
       
  1313 	
       
  1314 /** SIM/USIM/CDMA Service Table (continued).
       
  1315 
       
  1316 v1.0 of Multimode ETel API does not support this feature
       
  1317 
       
  1318 Modes: Common */
       
  1319 	enum TSSTServices17To24
       
  1320 		{
       
  1321 	/** Indicates that access to the Service Provider Name within ICC is supported.
       
  1322 	
       
  1323 	v1.0 of Multimode ETel API does not support this feature
       
  1324 	
       
  1325 	Modes: Common */
       
  1326 		KSstSPName=0x01,
       
  1327 	/** Indicates that storage of Service Dialling Numbers within ICC is supported.
       
  1328 	
       
  1329 	Modes: Common */
       
  1330 		KSstSDN=0x02,
       
  1331 	/** Indicates that storage of extended (greater than 20 digits) SDN numbers within 
       
  1332 	this ICC/RUIM is supported.
       
  1333 	
       
  1334 	Modes: Common */
       
  1335 		KSstExt3=0x04,
       
  1336 	/** Indicates that access to the VGCS group identifier list within ICC is supported.
       
  1337 	
       
  1338 	v1.0 of Multimode ETel API does not support this feature
       
  1339 	
       
  1340 	Modes: GSM/WCDMA */
       
  1341 		KSstVGCSList=0x10,
       
  1342 	/** Indicates that access to the VBS group identifier list within ICC is supported.
       
  1343 	
       
  1344 	v1.0 of Multimode ETel API does not support this feature
       
  1345 
       
  1346 	Modes: GSM/WCDMA */
       
  1347 		KSstVBSList=0x20,
       
  1348 	/** Indicates that the enhanced Multi-Level Precedence and Pre-emption service is 
       
  1349 	supported by ICC
       
  1350 	
       
  1351 	v1.0 of Multimode ETel API does not support this feature
       
  1352 	
       
  1353 	Modes: GSM/WCDMA */
       
  1354 		KSsteMLPP=0x40,
       
  1355 	/** Indicates that automatic answer for eMLPP is supported by ICC
       
  1356 	
       
  1357 	v1.0 of Multimode ETel API does not support this feature
       
  1358 	
       
  1359 	Modes: GSM/WCDMA */
       
  1360 		KSstAnswereMLPP=0x80
       
  1361 		};
       
  1362 
       
  1363 /** SIM/USIM/CDMA Service Table (continued).
       
  1364 
       
  1365 Modes: GSM/WCDMA */
       
  1366 	enum TSSTServices25To32
       
  1367 		{
       
  1368 	/** Indicates that SAT SMS-CB data download is supported by ICC. */
       
  1369 		KSstSmsCbDataDownload=0x01,
       
  1370 	/** Indicates that SAT SMS-PP data download is supported by ICC. */
       
  1371 		KSstSmsPpDataDownload=0x02,
       
  1372 	/** Indicates that SAT menu selection is supported by ICC.
       
  1373 	
       
  1374 	SAT ETel API provides this feature. */
       
  1375 		KSstMenuSelection=0x04,
       
  1376 	/** Indicates that SAT call control is supported by ICC.
       
  1377 	
       
  1378 	SAT ETel API provides this feature. */
       
  1379 		KSstCallControl=0x08,
       
  1380 	/** Indicates that SAT pro-active SIM is supported by ICC.
       
  1381 	
       
  1382 	SAT ETel API provides this feature. */
       
  1383 		KSstProactiveSim=0x10,
       
  1384 	/** Indicates ICC storage of ranges of Cell Broadcast Message Identifiers is supported. */
       
  1385 		KSstCBMIRanges=0x20,
       
  1386 	/** Indicates ICC storage of Barred Dialling Numbers is supported. */
       
  1387 		KSstBDN=0x40,
       
  1388 	/** Indicates ICC storage of extended (greater than 20 digits) BDN numbers is supported. */
       
  1389 		KSstExt4=0x80
       
  1390 		};
       
  1391 
       
  1392 /** SIM/USIM/CDMA Service Table (continued).
       
  1393 
       
  1394 Modes: GSM/WCDMA */
       
  1395 	enum TSSTServices33To40
       
  1396 		{
       
  1397 	/** Indicates depersonalisation control keys are supported by ICC.
       
  1398 	
       
  1399 	v1.0 of Multimode ETel API does not support this feature. */
       
  1400 		KSstDepersonalisationKeys=0x01,
       
  1401 	/** Indicates co-operative network list are supported by this ICC.
       
  1402 	
       
  1403 	v1.0 of Multimode ETel API does not support this feature. */
       
  1404 		KSstCooperativeNetworks=0x02,
       
  1405 	/** Indicates Short Message Status Reports are supported by ICC. */
       
  1406 		KSstSMStatusReports=0x04,
       
  1407 	/** Indicates network's indication of alerting is supported by ICC.
       
  1408 	
       
  1409 	v1.0 of Multimode ETel API does not support this feature. */
       
  1410 		KSstNetworkIndAlerting=0x08,
       
  1411 	/** Indicates outgoing SM control by SAT is supported by ICC.
       
  1412 	
       
  1413 	SAT ETel API provides this feature. */
       
  1414 		KSstMoSmControlBySim=0x10,
       
  1415 	/** Indicates that GPRS is supported by this ICC.
       
  1416 	
       
  1417 	GPRS ETel API provides GPRS functionality. */
       
  1418 		KSstGprs=0x20,
       
  1419 	/** Indicates that Image files are supported by this ICC.
       
  1420 	
       
  1421 	SAT ETel API provides this feature. */
       
  1422 		KSstImage=0x40,
       
  1423 	/** Indicates that SoLSA in supported by this ICC.
       
  1424 	
       
  1425 	v1.0 of Multimode ETel API does not support this feature */
       
  1426 		KSstSoLSA=0x80
       
  1427 		};
       
  1428 
       
  1429 /** SIM/USIM/CDMA Service Table (continued).
       
  1430 
       
  1431 Modes: GSM/WCDMA */
       
  1432 	enum TSSTServices41To48
       
  1433 		{
       
  1434 	/** Indicates that USSD string data is supported in SAT Call Control by this ICC.
       
  1435 	
       
  1436 	SAT ETel API provides this feature. */
       
  1437 		KSstUssdStringInCallControl=0x01,
       
  1438 	/** Indicates that RUN AT COMMAND is supported in SAT by this ICC.
       
  1439 	
       
  1440 	v1.0 of Multimode ETel API does not support this feature */
       
  1441 		KSstRunATCommand=0x02,
       
  1442 	/** Indicates that PLMN selector list with access technology is supported by this 
       
  1443 	ICC.
       
  1444 	
       
  1445 	v1.0 of Multimode ETel API does not support this feature. */
       
  1446 		KSstPlmnSelectorListWithAccessTechnology=0x04,
       
  1447 	/** Indicates that OPLMN selector list with access technology is supported by this
       
  1448 	ICC.
       
  1449 	
       
  1450 	v1.0 of Multimode ETel API does not support this feature. */
       
  1451 		KSstOplmnSelectorListWithAccessTechnology=0x08,
       
  1452 	/** Indicates that HPLMN access technology is supported by this ICC.
       
  1453 	
       
  1454 	v1.0 of Multimode ETel API does not support this feature. */
       
  1455 		KSstHplmnAccessTechnology=0x10,
       
  1456 	/** Indicates that CPBCCH information is supported by this ICC.
       
  1457 	
       
  1458 	v1.0 of Multimode ETel API does not support this feature. */
       
  1459 		KSstCpbcchInformation=0x20,
       
  1460 	/** Indicates that Investigation Scan is supported by this ICC.
       
  1461 	
       
  1462 	v1.0 of Multimode ETel API does not support this feature. */
       
  1463 		KSstInvestigationScan=0x40,
       
  1464 	/** Indicates that extended capability configuration parameters are supported by 
       
  1465 	this ICC.
       
  1466 	
       
  1467 	v1.0 of Multimode ETel API does not support this feature. */
       
  1468 		KSstExtendedCcp=0x80
       
  1469 		};
       
  1470 
       
  1471 /** SIM/USIM/CDMA Service Table (continued).
       
  1472 
       
  1473 Modes: GSM/WCDMA */
       
  1474 	enum TSSTServices49To56
       
  1475 		{
       
  1476 	/** Indicates Mobile Execution Environment services are supported by this ICC */
       
  1477 		KSstMExE=0x01,
       
  1478 	/** Indicates that RPLMN last used access technology is supported by this ICC.
       
  1479 	
       
  1480 	v1.0 of Multimode ETel API does not support this feature. */
       
  1481 		KSstRplmnLastUsedAccessTechnology=0x02
       
  1482 		};
       
  1483 
       
  1484 /** USIM service table. */
       
  1485 	enum TUSTServices1To8
       
  1486 		{
       
  1487 	/** Indicates that the local phonebook is supported by the USIM. Local phonebook 
       
  1488 	means a phonebook that is specific to a USIM Application, as opposed to the 
       
  1489 	global phonebook which is located at the DF Telecom level on the UICC and 
       
  1490 	not attached to a USIM Application. */
       
  1491 		KUstLocalPhBk=0x01,
       
  1492 	/** Indicates that the Fixed Dialling Numbers (FDN) service and the storage of 
       
  1493 	FDN numbers within this USIM is supported. */
       
  1494 		KUstFDN=0x02,
       
  1495 	/** Indicates that the Extension 2 is supported by the USIM. Extension 2 provides 
       
  1496 	extension data for Fixed Dialling Numbers. */
       
  1497 		KUstExt2=0x04,
       
  1498 	/** Indicates that the Service Dialling Numbers are supported by the USIM. */
       
  1499 		KUstSDN=0x08,
       
  1500 	/** Indicates that the Extension 3 is supported by the USIM. Extension 3 provides 
       
  1501 	extension data for Service Dialling Numbers. */
       
  1502 		KUstExt3=0x10,
       
  1503 	/** Indicates that the Barred Dialling Numbers are supported by the USIM. */
       
  1504 		KUstBDN=0x20,
       
  1505 	/** Indicates that the Extension 4 is supported by the USIM. Extension 4 provides 
       
  1506 	extension data for Barred Dialling Numbers. */
       
  1507 		KUstExt4=0x40,
       
  1508 	/** Indicates that the outgoing call information (OCI and OCT) are supported by 
       
  1509 	the USIM.
       
  1510 	
       
  1511 	Note: v2.0 of Multimode ETel API does not support this feature. */
       
  1512 		KUstOugoingCallInfo=0x80
       
  1513 		};
       
  1514 	
       
  1515 /** USIM service table (continued). */
       
  1516 	enum TUSTServices9To16
       
  1517 		{
       
  1518 	/** Indicates that the incoming call information (ICI and ICT) are supported by 
       
  1519 	the USIM
       
  1520 	
       
  1521 	Note: v2.0 of Multimode ETel API does not support this feature. */
       
  1522 		KUstIncomingCallInfo=0x01,
       
  1523 	/** Indicates that Short Message Storage is supported by the USIM. */
       
  1524 		KUstSMS=0x02,
       
  1525 	/** Indicates that Short Message Status Reports are supported by the USIM. */
       
  1526 		KUstSMSR=0x04,
       
  1527 	/** Indicates that Short Message Service Parameters are supported by the USIM. */
       
  1528 		KUstSMSP=0x08,
       
  1529 	/** Indicates that Advice Of Charge is supported by the USIM. */
       
  1530 		KUstAoC=0x10,
       
  1531 	/** Indicates that Capability Configuration Parameters are supported by the USIM. */
       
  1532 		KUstCCP=0x20,
       
  1533 	/** Indicates that Cell Broadcast Message Identifier is supported by the USIM. */
       
  1534 		KUstCBMI=0x40,
       
  1535 	/** Indicates that Cell Broadcast Message Identifier Ranges are supported by the 
       
  1536 	USIM. */
       
  1537 		KUstCBMIRanges=0x80
       
  1538 		};
       
  1539 
       
  1540 /** USIM service table (continued). */
       
  1541 	enum TUSTServices17To24
       
  1542 		{
       
  1543 	/** Indicates that Group Identifier Level 1 is supported by the USIM.
       
  1544 	
       
  1545 	Note: v2.0 of Multimode ETel API does not support this feature. */
       
  1546 		KUstGID1=0x01,
       
  1547 	/** Indicates that Group Identifier Level 2 is supported by the USIM.
       
  1548 	
       
  1549 	Note: v2.0 of Multimode ETel API does not support this feature. */
       
  1550 		KUstGID2=0x02,
       
  1551 	/** Indicates that Service Provider Name is supported by the USIM. */
       
  1552 		KUstSPN=0x04,
       
  1553 	/** Indicates that user controlled PLMN selector with Access Technology is supported
       
  1554 	by the USIM.
       
  1555 	
       
  1556 	Note: v2.0 of Multimode ETel API does not support this feature. */
       
  1557 		KUstPLMNSelAccessTech=0x08,
       
  1558 	/** Indicates that MSISDN is supported by the USIM. */
       
  1559 		KUstMSISDN=0x10,
       
  1560 	/** Indicates that Image is supported by the USIM.
       
  1561 	
       
  1562 	Note: (U)SAT ETel API provides this feature. This enum value is reserved for 
       
  1563 	future API use. */
       
  1564 		KUstIMG=0x20,
       
  1565 		//0x40 is a reserved value
       
  1566 	/** Indicates that enhanced Multi Level Precedence and Pre-emption Service is supported 
       
  1567 	by the USIM.
       
  1568 	
       
  1569 	Note: v2.0 of Multimode ETel API does not support this feature. */
       
  1570 		KUsteMLPP=0x80
       
  1571 		};
       
  1572 
       
  1573 /** USIM service table (continued). */
       
  1574 	enum TUSTServices25To32
       
  1575 		{
       
  1576 	/** Indicates that Automatic Answer for eMLPP is supported by the USIM.
       
  1577 	
       
  1578 	Note: v1.0 and v2.0 of Multimode ETel API do not support this feature. */
       
  1579 		KUstAnswereMLPP=0x01,
       
  1580 		//0x02 is a reserved value
       
  1581 	/** Indicates that GSM Access is supported by the USIM */
       
  1582 		KUstGSMAccess=0x04,
       
  1583 	/** Indicates that Data download via SMS-PP is supported by the USIM.
       
  1584 	
       
  1585 	Note: (U)SAT ETel API provides this feature. */
       
  1586 		KUstSMSPpDataDownload=0x08,
       
  1587 	/** Indicates that Data download via SMS-CB is supported by the USIM.
       
  1588 	
       
  1589 	Note: (U)SAT ETel API provides this feature. */
       
  1590 		KUstSMSCbDataDownload=0x10,
       
  1591 	/** Indicates that Call Control by USIM is supported by the USIM.
       
  1592 	
       
  1593 	Note: (U)SAT ETel API provides this feature. */
       
  1594 		KUstCallControl=0x20,
       
  1595 	/** Indicates that MO-SMS Control by USIM is supported by the USIM.
       
  1596 	
       
  1597 	Note: (U)SAT ETel API provides this feature. */
       
  1598 		KUstMoSmControl=0x40,
       
  1599 	/** Indicates that the proactive command RUN AT COMMAND is supported by the USIM.
       
  1600 	
       
  1601 	Note: (U)SAT ETel API provides this feature. */
       
  1602 		KUstPCmdRunAtCommand=0x80		
       
  1603 		};
       
  1604 
       
  1605 /** USIM service table (continued). */
       
  1606 	enum TUSTServices33To40
       
  1607 		{
       
  1608 	/** Should always be present as specified by 3 GPP spec. */
       
  1609 		KUstAlways=0x10,
       
  1610 	/** Indicates that the Enabled Service Table is supported by the USIM. */
       
  1611 		KUstEST=0x02,
       
  1612 	/** Indicates that APN Control List is supported by the USIM.
       
  1613 	
       
  1614 	Note: v2.0 of Multimode ETel API does not support this feature. */
       
  1615 		KUstACL=0x04,
       
  1616 	/** Indicates that the Depersonalisation Control Keys are supported by the USIM.
       
  1617 	
       
  1618 	Note: v2.0 of Multimode ETel API does not support this feature. */
       
  1619 		KIstDepersonalisationKeys =0x08,
       
  1620 	/** Indicates that the Co-operative Network List is supported by the USIM.
       
  1621 
       
  1622 	Note: v2.0 of Multimode ETel API does not support this feature. */
       
  1623 		KUstCooperativeNetwork=0x10,
       
  1624 	/** Indicates that GSM Security Context is supported by the USIM. */
       
  1625 		KUstGSMSecurityContext=0x20,
       
  1626 	/** Indicates that CPBCCH Information is supported by the USIM.
       
  1627 	
       
  1628 	Note: v2.0 of Multimode ETel API do not support this feature. */
       
  1629 		KUstCPBCCHInfo=0x40,
       
  1630 	/** Indicates that Investigation Scan is supported by the USIM.
       
  1631 	
       
  1632 	Note:v2.0 of Multimode ETel API do not support this feature. */
       
  1633 		KUstInvestigationScan=0x80
       
  1634 		};
       
  1635 
       
  1636 /** USIM service table (continued). */
       
  1637 	enum TUSTServices41To48
       
  1638 		{
       
  1639 	/** Indicates that MExE is supported by the USIM.
       
  1640 	
       
  1641 	Note: v2.0 of Multimode ETel API do not support this feature. */
       
  1642 		KUstMExE=0x01,
       
  1643 	/** Indicates that Operator controlled PLMN selector with Access Technology is 
       
  1644 	supported by the USIM.
       
  1645 	
       
  1646 	N.B .v2.0 of Multimode ETel API do not support this feature. */
       
  1647 		KUstOperatorPLMNSelector=0x02,
       
  1648 	/** Indicates that HPLMN selector with Access Technology is supported by the USIM.
       
  1649 	
       
  1650 	Note: v2.0 of Multimode ETel API do not support this feature. */
       
  1651 		KUstHPLMNSelAccessTech=0x04,
       
  1652 	/** Indicates that Extension 5 is supported by the USIM. Provides support for extension 
       
  1653 	data for MSISDN. */
       
  1654 		KUstExt5=0x08,
       
  1655 	/** Indicates that PLMN Network Name is supported by the USIM.
       
  1656 	
       
  1657 	Note: v2.0 of Multimode ETel API do not support this feature. */
       
  1658 		KUstPLMNNetworkName=0x10,
       
  1659 	/** Indicates that Operator PLMN List is supported by the USIM.
       
  1660 	
       
  1661 	Note: v2.0 of Multimode ETel API do not support this feature. */
       
  1662 		KUstOperatorPLMNList=0x20,
       
  1663 	/** Indicates that Mailbox Dialling Numbers are supported by the USIM. */
       
  1664 		KUstMDN=0x40,
       
  1665 	/** Indicates that Message Waiting Indication Status is supported by the USIM. */
       
  1666 		KUstMWISo=0x80
       
  1667 		};
       
  1668 
       
  1669 /** USIM service table (continued). */
       
  1670 	enum TUSTServices49To56
       
  1671 		{
       
  1672 	/** Indicates that Call forwarding indication status is supported by the USIM.
       
  1673 	
       
  1674 	Note: v2.0 of Multimode ETel API do not support this feature. */
       
  1675 		KUstCFIS=0x01,
       
  1676 	/** Indicates that RPLMN last-used access technology is supported by the USIM.
       
  1677 	
       
  1678 	Note: v2.0 of Multimode ETel API do not support this feature. */
       
  1679 		KUstRPLMN=0x02,
       
  1680 	/** Indicates that Service provider display information is supported by the USIM.
       
  1681 	
       
  1682 	Note: v2.0 of Multimode ETel API do not support this feature. */
       
  1683 		KUstSPDI=0x04,
       
  1684 	    KUstMMS=0x08,
       
  1685 	    KUstExt8=0x10,
       
  1686 	    KUstCConGPRS=0x20,
       
  1687 	    KUstMMSUCP=0x40
       
  1688 		};
       
  1689 
       
  1690 /** Enabled Services Table. */
       
  1691 	enum TESTServices1To8
       
  1692 		{
       
  1693 	/** Indicates that FDN service is activated. */
       
  1694 		KEstFDN=0x01,
       
  1695 	/** Indicates that BDN service is activated. */
       
  1696 		KEstBDN=0x02,
       
  1697 	/** Indicates that the APN Control List service is activated.
       
  1698 	
       
  1699 	Note: v2.0 of Multimode ETel API do not support this feature. */
       
  1700 		KEstACL=0x04
       
  1701 		};
       
  1702 
       
  1703 /** Get Service Table.
       
  1704 
       
  1705 Modes: GSM/WCDMA */
       
  1706 	enum TMobilePhoneServiceTable
       
  1707 		{
       
  1708 	/** Retrieve SIM service table on SIM (or from GSM application on UICC).
       
  1709 	
       
  1710 	Modes: GSM/WCDMA */
       
  1711 		ESIMServiceTable,
       
  1712 	/** Retrieve USIM service table from active USIM application on UICC.
       
  1713 	
       
  1714 	Modes: WCDMA */
       
  1715 		EUSIMServiceTable,
       
  1716 	/** Retrieve CDMA service table on R-UIM.
       
  1717 	
       
  1718 	Modes: CDMA */
       
  1719 		ECDMAServiceTable,
       
  1720 	/** USIM Enabled Services Table to be used in conjunction with the USIM Service 
       
  1721 	Table.
       
  1722 	
       
  1723 	Modes: WCDMA */
       
  1724 		EUSIMEnabledServiceTable
       
  1725 		};
       
  1726 
       
  1727 	
       
  1728 	class TMobilePhoneServiceTableV1 : public TMultimodeType
       
  1729 	/** Defines contents of the specified Service Table on the ICC.
       
  1730 
       
  1731 	@see GetServiceTable()
       
  1732 	@publishedPartner
       
  1733 	@released
       
  1734 	 */
       
  1735 		{
       
  1736 	public:
       
  1737 		IMPORT_C TMobilePhoneServiceTableV1();
       
  1738 
       
  1739 	/** Sum of the TSSTServices1To8 capability constants. */
       
  1740 		TUint8 iServices1To8;
       
  1741 	/** Sum of the TSSTServices9To16 capability constants. */
       
  1742 		TUint8 iServices9To16;
       
  1743 	/** Sum of the TSSTServices17To24 capability constants. */
       
  1744 		TUint8 iServices17To24;
       
  1745 	/** Sum of the TSSTServices25To32 capability constants. */
       
  1746 		TUint8 iServices25To32;
       
  1747 	/** Sum of the TSSTServices33To40 capability constants. */
       
  1748 		TUint8 iServices33To40;
       
  1749 	/** Sum of the TSSTServices41To48 capability constants. */
       
  1750 		TUint8 iServices41To48;
       
  1751 	/** Sum of the TSSTServices49To56 capability constants. */
       
  1752 		TUint8 iServices49To56;
       
  1753 		};
       
  1754 
       
  1755 /** A typedef'd packaged TMobilePhoneServiceTableV1 passing through a generic API 
       
  1756 function member. */
       
  1757 	typedef TPckg<TMobilePhoneServiceTableV1> TMobilePhoneServiceTableV1Pckg;
       
  1758 
       
  1759 	enum { KAIDSize=16 };
       
  1760 
       
  1761 /** A typedef'd buffer to hold the application identifier (AID) that identifies 
       
  1762 the USIM application in a UICC. The AID consists of a Registered application 
       
  1763 provider IDentifier (RID) of 5 bytes and a Proprietary application Identifier 
       
  1764 eXtension (PIX) of up to 11 bytes. */
       
  1765 	typedef TBuf8<KAIDSize> TAID; 
       
  1766 
       
  1767 	class TMobilePhoneServiceTableV2 : public TMobilePhoneServiceTableV1
       
  1768 /** Defines contents of the specified Service Table on the ICC for the v2.0 version 
       
  1769 of the API. 
       
  1770 */
       
  1771 		{
       
  1772 	public:
       
  1773 		IMPORT_C TMobilePhoneServiceTableV2();
       
  1774 	public:
       
  1775 	/** The application identifier. */
       
  1776 		TAID   iAID;
       
  1777 		};
       
  1778 
       
  1779 /** A typedef'd packaged TMobilePhoneServiceTableV2 passing through a generic API 
       
  1780 function member. */
       
  1781 	typedef TPckg<TMobilePhoneServiceTableV2> TMobilePhoneServiceTableV2Pckg;
       
  1782  
       
  1783 	IMPORT_C void GetServiceTable(TRequestStatus& aReqStatus, TMobilePhoneServiceTable aTable, TDes8& aTableData) const;
       
  1784 	
       
  1785 	
       
  1786 	/***********************************************************************************/
       
  1787 	//
       
  1788 	// MobilePhonePower functional unit
       
  1789 	//
       
  1790 	/***********************************************************************************/
       
  1791 
       
  1792 /** Phone supported battery information.
       
  1793 
       
  1794 Modes: Common */
       
  1795 	enum TMobilePhoneBatteryCaps
       
  1796 		{
       
  1797 	/** Phone supports requests to get the current battery information. */
       
  1798 		KCapsGetBatteryInfo=0x00000001,
       
  1799 	/** Phone supports requests for notification of change in battery information. */
       
  1800 		KCapsNotifyBatteryInfoChange=0x00000002
       
  1801 		};
       
  1802 
       
  1803 	IMPORT_C TInt GetBatteryCaps(TUint32& aCaps) const; 
       
  1804 
       
  1805 /** The mobile phone battery status.
       
  1806 
       
  1807 Modes: Common */
       
  1808 	enum TMobilePhoneBatteryStatus
       
  1809 		{
       
  1810 	/** The TSY can not determine the phone's current power status. */
       
  1811 		EPowerStatusUnknown,
       
  1812 	/** The phone is currently powered by a battery. */
       
  1813 		EPoweredByBattery,
       
  1814 	/** A battery is connected, but the phone is externally powered. */
       
  1815 		EBatteryConnectedButExternallyPowered,
       
  1816 	/** No battery is connected. */
       
  1817 		ENoBatteryConnected,
       
  1818 	/** Power fault. */
       
  1819 		EPowerFault
       
  1820 		};
       
  1821 
       
  1822 	class TMobilePhoneBatteryInfoV1 : public TMultimodeType
       
  1823 /** Defines contents of the battery status of the phone.
       
  1824 
       
  1825 @see GetBatteryInfo()
       
  1826 @see NotifyBatteryInfoChange()
       
  1827 */
       
  1828 		{
       
  1829 	public:
       
  1830 		IMPORT_C TMobilePhoneBatteryInfoV1();
       
  1831 	public:
       
  1832 	/** The power and battery status.
       
  1833 	
       
  1834 	@see TMobilePhoneBatteryStatus */
       
  1835 		TMobilePhoneBatteryStatus iStatus;
       
  1836 	/** The percentage battery charge level. */
       
  1837 		TUint iChargeLevel;
       
  1838 		};
       
  1839 
       
  1840 	IMPORT_C void GetBatteryInfo(TRequestStatus& aReqStatus, TMobilePhoneBatteryInfoV1& aInfo) const;
       
  1841 	IMPORT_C void NotifyBatteryInfoChange(TRequestStatus& aReqStatus, TMobilePhoneBatteryInfoV1& aInfo) const;
       
  1842 
       
  1843 	
       
  1844 	/***********************************************************************************/
       
  1845 	//
       
  1846 	// MobilePhoneSignal functional unit
       
  1847 	//	
       
  1848 	/***********************************************************************************/
       
  1849 
       
  1850 /** The mobile phone signal strength capabilities.
       
  1851 
       
  1852 Modes: Common */
       
  1853 	enum TMobilePhoneSignalCaps
       
  1854 		{
       
  1855 	/** Phone supports requests to get the current signal strength. */
       
  1856 		KCapsGetSignalStrength=0x00000001,
       
  1857 	/** Phone supports requests for notification of change in signal strength. */
       
  1858 		KCapsNotifySignalStrengthChange=0x00000002
       
  1859 		};
       
  1860 
       
  1861 	IMPORT_C TInt GetSignalCaps(TUint32& aCaps) const; 
       
  1862 	IMPORT_C void GetSignalStrength(TRequestStatus& aReqStatus, TInt32& aSignalStrength, TInt8& aBar) const;
       
  1863 	IMPORT_C void NotifySignalStrengthChange(TRequestStatus& aReqStatus, TInt32& aSignalStrength, TInt8& aBar) const;
       
  1864 
       
  1865 	/***********************************************************************************/
       
  1866 	//
       
  1867 	// MobilePhoneIndicator functional unit
       
  1868 	//
       
  1869 	/***********************************************************************************/
       
  1870 	
       
  1871 /** The mobile phone indicator capabilities supported.
       
  1872 
       
  1873 Modes: Common */
       
  1874 	enum TMobilePhoneIndicatorCaps
       
  1875 		{
       
  1876 	/** Phone supports requests to get the current value of all supported indicators. */
       
  1877 		KCapsGetIndicator=0x00000001,
       
  1878 	/** Phone supports requests for notification of change in the supported indicators. */
       
  1879 		KCapsNotifyIndicatorChange=0x00000002
       
  1880 		};
       
  1881 
       
  1882 /** The mobile phone indicators.
       
  1883 
       
  1884 Modes Common */
       
  1885 	enum TMobilePhoneIndicators
       
  1886 		{
       
  1887 	/** If bit-flag is set to '1' indicates that the battery charger is connected to 
       
  1888 	the phone. If bit-flag is set to '0' indicates that the battery charger is 
       
  1889 	disconnected. */
       
  1890 		KIndChargerConnected=0x00000001,
       
  1891 	/** If bit-flag is set to '1' indicates that network service is available. If bit-flag 
       
  1892 	is set to '0' indicates that network service is unavailable. */
       
  1893 		KIndNetworkAvailable=0x00000002,
       
  1894 	/** If bit-flag is set to '1' indicates that a call is in progress. If set to '0' 
       
  1895 	indicates that a call is not in progress. */
       
  1896 		KIndCallInProgress=0x00000004
       
  1897 		};
       
  1898 
       
  1899 	IMPORT_C TInt GetIndicatorCaps(TUint32& aActionCaps, TUint32& aIndCaps) const; 
       
  1900 	IMPORT_C void GetIndicator(TRequestStatus& aReqStatus, TUint32& aIndicator) const;
       
  1901 	IMPORT_C void NotifyIndicatorChange(TRequestStatus& aReqStatus, TUint32& aIndicator) const;
       
  1902 
       
  1903 	
       
  1904 	/***********************************************************************************/
       
  1905 	//
       
  1906 	// MobilePhoneIdentity functional unit
       
  1907 	//
       
  1908 	/***********************************************************************************/
       
  1909 	
       
  1910 /** Defines Identity Capabilities.
       
  1911 
       
  1912 Modes: Common */
       
  1913 	enum TMobilePhoneIdentityCaps
       
  1914 		{
       
  1915 	/** Phone can return the identity of its manufacturer. */
       
  1916 		KCapsGetManufacturer=0x00000001,
       
  1917 	/** Phone can return the identity of its model. */
       
  1918 		KCapsGetModel=0x00000002,
       
  1919 	/** Phone can return the identity of its revision. */
       
  1920 		KCapsGetRevision=0x00000004,
       
  1921 	/** Phone can return the identity of its serial number. */
       
  1922 		KCapsGetSerialNumber=0x00000008,
       
  1923 	/** Phone can return the identity of its subscriber. */
       
  1924 		KCapsGetSubscriberId=0x00000010
       
  1925 		};
       
  1926 
       
  1927 	IMPORT_C TInt GetIdentityCaps(TUint32& aCaps) const;
       
  1928 
       
  1929 	enum {	KPhoneManufacturerIdSize=50	};
       
  1930 	enum {	KPhoneModelIdSize=50 };
       
  1931 	enum {	KPhoneRevisionIdSize=50	};
       
  1932 	enum {	KPhoneSerialNumberSize=50 };
       
  1933 	
       
  1934 	class TMobilePhoneIdentityV1 : public TMultimodeType
       
  1935 /** Defines the mobile phone identity.
       
  1936 
       
  1937 @see GetPhoneId() */
       
  1938 		{
       
  1939 	public:
       
  1940 		IMPORT_C TMobilePhoneIdentityV1();
       
  1941 	public:
       
  1942 	/** Phone manufacturer identification, in character string format. */
       
  1943 		TBuf<KPhoneManufacturerIdSize> iManufacturer;
       
  1944 	/** Phone model identification, in character string format. */
       
  1945 		TBuf<KPhoneModelIdSize> iModel;
       
  1946 	/** Phone revision identification, in character string format. */
       
  1947 		TBuf<KPhoneRevisionIdSize> iRevision;
       
  1948 	/** Phone serial number (IMEI or ESN), in character string format. */
       
  1949 		TBuf<KPhoneSerialNumberSize> iSerialNumber;
       
  1950 		};
       
  1951 
       
  1952 	IMPORT_C void GetPhoneId(TRequestStatus& aReqStatus, TMobilePhoneIdentityV1& aId) const;
       
  1953 
       
  1954 	enum {	KIMSISize = 15 };
       
  1955 
       
  1956 /** A typedef'd buffer to hold the mobile phone subscriber id. */
       
  1957 	typedef TBuf<KIMSISize> TMobilePhoneSubscriberId;
       
  1958 
       
  1959 	IMPORT_C void GetSubscriberId(TRequestStatus& aReqStatus, TMobilePhoneSubscriberId& aId) const;
       
  1960 
       
  1961 	/***********************************************************************************/
       
  1962 	//
       
  1963 	// MobilePhoneDTMF functional unit
       
  1964 	//
       
  1965 	/***********************************************************************************/
       
  1966 	
       
  1967 /** DTMF Capabilities.
       
  1968 
       
  1969 Modes: Common */
       
  1970 	enum TMobilePhoneDTMFCaps
       
  1971 		{
       
  1972 	/** Capability to send a string of DTMF tones, containing one or more tone(s). */
       
  1973 		KCapsSendDTMFString=0x00000001,
       
  1974 	/** Capability to send one DTMF tone, using start and stop DTMF tone function member. */
       
  1975 		KCapsSendDTMFSingleTone=0x00000002,
       
  1976 		};
       
  1977 		
       
  1978 	/**
       
  1979 	DTMF tone operation event.
       
  1980 	*/
       
  1981 	enum TMobilePhoneDTMFEvent
       
  1982 		{
       
  1983 		/**
       
  1984 		 Start sending of a Dtmf tone operation has been acknowledged from the MSC.
       
  1985 		*/
       
  1986 		EStartDtmfTone,
       
  1987 		/**
       
  1988 		 Stop sending of a Dtmf tone operation has been acknowledged from the MSC.
       
  1989 		*/
       
  1990 		EStopDtmfTone,
       
  1991 		};
       
  1992 		
       
  1993 
       
  1994 	IMPORT_C TInt GetDTMFCaps(TUint32& aCaps) const; 
       
  1995 	IMPORT_C void NotifyDTMFCapsChange(TRequestStatus& aReqStatus, TUint32& aCaps) const;
       
  1996 
       
  1997 	IMPORT_C void SendDTMFTones(TRequestStatus& aReqStatus, const TDesC& aTones) const;
       
  1998 	IMPORT_C void ReadDTMFTones(TRequestStatus& aReqStatus, TDes& aTones) const;
       
  1999 	IMPORT_C TInt StartDTMFTone(TChar aTone) const;
       
  2000 	IMPORT_C TInt StopDTMFTone() const;
       
  2001 
       
  2002 	IMPORT_C void NotifyStopInDTMFString(TRequestStatus& aRequestStatus) const;
       
  2003 	IMPORT_C TInt ContinueDTMFStringSending(TBool aContinue) const;
       
  2004 	IMPORT_C void NotifyDTMFEvent(TRequestStatus& aReqStatus, TMobilePhoneDTMFEvent& aEvent) const;
       
  2005 
       
  2006 	/***********************************************************************************/
       
  2007 	//
       
  2008 	// MobilePhoneNetwork functional unit
       
  2009 	//
       
  2010 	/***********************************************************************************/
       
  2011 	
       
  2012 /** Defines Network Capabilities.
       
  2013 
       
  2014 Modes: Common */
       
  2015 	enum TMobilePhoneNetworkCaps
       
  2016 		{
       
  2017 	/** The phone supports retrieval of current registration status. */
       
  2018 		KCapsGetRegistrationStatus=0x00000001,
       
  2019 	/** The phone supports notifications of change in registration status. */
       
  2020 		KCapsNotifyRegistrationStatus=0x00000002,
       
  2021 	/** The phone supports retrieval of current mode. */
       
  2022 		KCapsGetCurrentMode=0x00000004,
       
  2023 	/** The phone supports notification of change in mode. */
       
  2024 		KCapsNotifyMode=0x00000008,
       
  2025 	/** The phone supports retrieval of current network information. */
       
  2026 		KCapsGetCurrentNetwork=0x00000010,
       
  2027 	/** The phone supports notification of change of current network. */
       
  2028 		KCapsNotifyCurrentNetwork=0x00000020,
       
  2029 	/** The phone supports retrieval of home network information. */
       
  2030 		KCapsGetHomeNetwork=0x00000040,
       
  2031 	/** The phone supports retrieval of a list of detected networks. */
       
  2032 		KCapsGetDetectedNetworks=0x00000080,
       
  2033 	/** The phone supports manual network selection mode. */
       
  2034 		KCapsManualNetworkSelection=0x00000100,
       
  2035 	/** The phone supports retrieval of time and date information (NITZ) received from 
       
  2036 	the network. */
       
  2037 		KCapsGetNITZInfo=0x00000200,
       
  2038 	/** The phone supports notification of new updates of time & date information (NITZ) 
       
  2039 	received from the network. */
       
  2040 		KCapsNotifyNITZInfo=0x00000400
       
  2041 		};
       
  2042 
       
  2043 	IMPORT_C TInt GetNetworkCaps(TUint32& aCaps) const;
       
  2044 
       
  2045 /** Defines Current Network Modes.
       
  2046 
       
  2047 Modes: Common */
       
  2048 	enum TMobilePhoneNetworkMode
       
  2049 		{
       
  2050 	/** Network mode is unknown.
       
  2051 	
       
  2052 	Modes: Common */
       
  2053 		ENetworkModeUnknown,
       
  2054 	/** ME is not registered.
       
  2055 	
       
  2056 	Modes: Common */
       
  2057 		ENetworkModeUnregistered,
       
  2058 	/** GSM/GPRS or DCS1800 network. */
       
  2059 		ENetworkModeGsm,
       
  2060 	/** AMPS network.
       
  2061 	
       
  2062 	Modes: CDMA */
       
  2063 		ENetworkModeAmps,
       
  2064 	/** CDMA (IS-95) network.
       
  2065 	
       
  2066 	Modes: CDMA */
       
  2067 		ENetworkModeCdma95,
       
  2068 	/** CDMA (cdma2000) network.
       
  2069 	
       
  2070 	Modes: CDMA */
       
  2071 		ENetworkModeCdma2000,
       
  2072 	/** WCDMA  (UTRA Frequency Division Duplex (FDD)) network.
       
  2073 	
       
  2074 	Modes: WCDMA */
       
  2075 		ENetworkModeWcdma,
       
  2076 	/** TD-CDMA (UTRA Time Division Duplex (TDD)) network.
       
  2077 	
       
  2078 	Modes: WCDMA */	
       
  2079 		ENetworkModeTdcdma
       
  2080 		};
       
  2081 
       
  2082 	IMPORT_C TInt GetCurrentMode(TMobilePhoneNetworkMode& aNetworkMode) const;
       
  2083 	IMPORT_C void NotifyModeChange(TRequestStatus& aReqStatus, TMobilePhoneNetworkMode& aNetworkMode) const;
       
  2084 
       
  2085 /** Phone network status.
       
  2086 
       
  2087 Modes: Common */
       
  2088 	enum TMobilePhoneNetworkStatus
       
  2089 		{
       
  2090 	/** Status is unknown. */
       
  2091 		ENetworkStatusUnknown,
       
  2092 	/** A network that the ME is allowed to register to. */
       
  2093 		ENetworkStatusAvailable,
       
  2094 	/** The currently registered network. */
       
  2095 		ENetworkStatusCurrent,
       
  2096 	/** A network that the ME is not allowed to register to. */
       
  2097 		ENetworkStatusForbidden
       
  2098 		};
       
  2099 
       
  2100 /** Mobile phone network band information.
       
  2101 
       
  2102 Modes: CDMA */
       
  2103 	enum TMobilePhoneNetworkBandInfo
       
  2104 		{
       
  2105 	/** The current band and band class is unknown. */
       
  2106 		EBandUnknown,
       
  2107 	/** The network operates at 800MHz on Band A. */
       
  2108 		E800BandA,
       
  2109 	/** The network operates at 800MHz on Band B. */
       
  2110 		E800BandB,
       
  2111 	/** The network operates at 800MHz on Band C. */
       
  2112 		E800BandC,
       
  2113 	/** The network operates at 1900MHz on Band A. */
       
  2114 		E1900BandA,
       
  2115 	/** The network operates at 1900MHz on Band B. */
       
  2116 		E1900BandB,
       
  2117 	/** The network operates at 1900MHz on Band C. */
       
  2118 		E1900BandC,
       
  2119 	/** The network operates at 1900MHz on Band D. */
       
  2120 		E1900BandD,
       
  2121 	/** The network operates at 1900MHz on Band E. */
       
  2122 		E1900BandE,
       
  2123 	/** The network operates at 1900MHz on Band F. */
       
  2124 		E1900BandF
       
  2125 		};
       
  2126 
       
  2127 /** A typedef'd buffer to hold the network display tag */
       
  2128 	typedef TBuf<30> TMobilePhoneNetworkDisplayTag;
       
  2129 /** A typedef'd buffer to hold the network long name. */
       
  2130 	typedef TBuf<20> TMobilePhoneNetworkLongName;		
       
  2131 /** A typedef'd buffer to hold the network short name. */
       
  2132 	typedef TBuf<10> TMobilePhoneNetworkShortName;
       
  2133 
       
  2134 /** A typedef'd buffer to hold the network country code. */
       
  2135 	typedef TBuf<4> TMobilePhoneNetworkCountryCode;		// MCC in GSM and CDMA
       
  2136 /** A typedef'd buffer to hold the network identity. */
       
  2137 	typedef TBuf<8> TMobilePhoneNetworkIdentity;		// MNC in GSM and SID or NID in CDMA 
       
  2138 
       
  2139 	
       
  2140 
       
  2141 	class TMobilePhoneNetworkInfoV1 : public TMultimodeType
       
  2142 	/** Defines information related to a mobile phone network.
       
  2143 
       
  2144 	@see GetCurrentNetwork()
       
  2145 	@see NotifyCurrentNetworkChange()
       
  2146 	@see GetHomeNetwork()
       
  2147 	@publishedPartner
       
  2148 	@released */
       
  2149 		{
       
  2150 	public:
       
  2151 		IMPORT_C TMobilePhoneNetworkInfoV1();
       
  2152 	public:
       
  2153 		void InternalizeL(RReadStream& aStream);
       
  2154 		void ExternalizeL(RWriteStream& aStream) const;
       
  2155 	public:
       
  2156 	/** Mode of the network.
       
  2157 	
       
  2158 	Modes: Common
       
  2159 	
       
  2160 	@see TMobilePhoneNetworkMode */
       
  2161 		TMobilePhoneNetworkMode iMode;
       
  2162 	/** Status of the network
       
  2163 	
       
  2164 	Modes: Common
       
  2165 	
       
  2166 	@see TMobilePhoneNetworkStatus */
       
  2167 		TMobilePhoneNetworkStatus iStatus;
       
  2168 	/** The band and band class of the CDMA network operator.
       
  2169 
       
  2170 	Modes: CDMA
       
  2171 	
       
  2172 	@see TMobilePhoneNetworkBandInfo */
       
  2173 		TMobilePhoneNetworkBandInfo iBandInfo;
       
  2174 	/** The MCC of the network.
       
  2175 	
       
  2176 	Modes: Common
       
  2177 	
       
  2178 	@see TMobilePhoneNetworkCountryCode */
       
  2179 		TMobilePhoneNetworkCountryCode iCountryCode;
       
  2180 	/** The system identity (SID) of the CDMA network.
       
  2181 	
       
  2182 	Modes: CDMA
       
  2183 	
       
  2184 	@see TMobilePhoneNetworkIdentity */
       
  2185 		TMobilePhoneNetworkIdentity iCdmaSID;
       
  2186 	/** The system identity (SID) of the AMPS network.
       
  2187 	
       
  2188 	Modes: CDMA
       
  2189 	
       
  2190 	@see TMobilePhoneNetworkIdentity */
       
  2191 		TMobilePhoneNetworkIdentity iAnalogSID;
       
  2192 	/** The network identity (NID in CDMA and MNC in GSM).
       
  2193 	
       
  2194 	Modes: Common
       
  2195 	
       
  2196 	@see TMobilePhoneNetworkIdentity */
       
  2197 		TMobilePhoneNetworkIdentity iNetworkId;
       
  2198 	/** The alpha-tag displayed when this is the serving network.
       
  2199 	
       
  2200 	Modes: Common
       
  2201 	
       
  2202 	@see TMobilePhoneNetworkDisplayTag */
       
  2203 		TMobilePhoneNetworkDisplayTag iDisplayTag;
       
  2204 	/** The short name (up to 10 characters) of the network operator.
       
  2205 	
       
  2206 	Modes: GSM/WCDMA
       
  2207 	
       
  2208 	@see TMobilePhoneNetworkShortName */
       
  2209 		TMobilePhoneNetworkShortName iShortName;
       
  2210 	/** The long name (up to 20 characters) of the network operator.
       
  2211 	
       
  2212 	Modes: GSM/WCDMA
       
  2213 	
       
  2214 	@see TMobilePhoneNetworkLongName */
       
  2215 		TMobilePhoneNetworkLongName iLongName;
       
  2216 		};
       
  2217 	
       
  2218 /** A typedef'd packaged TMobilePhoneNetworkInfoV1 for passing through a generic 
       
  2219 API function member. */
       
  2220 	typedef TPckg<TMobilePhoneNetworkInfoV1>  TMobilePhoneNetworkInfoV1Pckg;
       
  2221 	
       
  2222 /** The access technology that the network is based on.
       
  2223 
       
  2224 Modes: Common */
       
  2225 	enum TMobilePhoneNetworkAccess
       
  2226 		{
       
  2227 	/** This is used when there is no network activity and therefore no RAT active.
       
  2228 	
       
  2229 	Modes: Common */
       
  2230 		ENetworkAccessUnknown,
       
  2231 	/** The access technology is GSM.
       
  2232 	
       
  2233 	Modes: GSM */
       
  2234 		ENetworkAccessGsm,
       
  2235 	/** The access technology is GSM COMPACT. However GSM COMPACT systems which use 
       
  2236 	GSM frequency bands but with the CBPCCH broadcast channel are considered as 
       
  2237 	a separate access technology from GSM.
       
  2238 	
       
  2239 	Modes: GSM */
       
  2240 		ENetworkAccessGsmCompact,
       
  2241 	/** The access technology is UTRAN (UMTS Network).
       
  2242 	
       
  2243 	Modes: WCDMA */
       
  2244 		ENetworkAccessUtran,					
       
  2245 	/** Analogue Cellular 
       
  2246 	
       
  2247 	Modes: CDMA */
       
  2248 		ENetworkAccessAmpsCellular,
       
  2249 	/** CDMA Cellular - Standard channels 
       
  2250 
       
  2251 	Modes: CDMA */
       
  2252 		 ENetworkAccessCdmaCellularStdChannel,
       
  2253 	/** CDMA Cellular - Custom channels 
       
  2254 
       
  2255 	Modes: CDMA */
       
  2256 		ENetworkAccessCdmaCellularCustomChannel,
       
  2257 	/** CDMA/Analogue Cellular (cdma first then analogue)
       
  2258 
       
  2259 	Modes: CDMA */
       
  2260 		ENetworkAccessCdmaAmpsCellular,
       
  2261 	/** CDMA PCS - Using blocks 
       
  2262 	
       
  2263 	Modes: CDMA */
       
  2264 		ENetworkAccessCdmaPcsUsingBlocks,
       
  2265 	/** CDMA PCS - Using channels 
       
  2266 	
       
  2267 	Modes: CDMA */
       
  2268 		ENetworkAccessCdmaPcsUsingNetworkAccessChannels,
       
  2269 	/** CDMA JTACS - Standard channels 
       
  2270 	
       
  2271 	Modes: CDMA */
       
  2272 		ENetworkAccessJTacsStdChannels,
       
  2273 	/** CDMA JTACS - Custom channels 
       
  2274 	
       
  2275 	Modes: CDMA */
       
  2276 		ENetworkAccessJTacsCustomChannels,
       
  2277 	/** CDMA 2GHz band - Using channels 
       
  2278 	
       
  2279 	Modes: CDMA */
       
  2280 		ENetworkAccess2GHzBandUsingChannels,
       
  2281 	/** Generic Acquisition Record for IS-2000 and IS-95 
       
  2282 	
       
  2283 	Modes: CDMA */
       
  2284 		ENetworkAccessGenericAcqRecord2000and95,
       
  2285 	/** Generic Acquisition Record for IS-856
       
  2286 	
       
  2287 	Modes: CDMA */
       
  2288 		ENetworkAccessGenericAcqRecord856
       
  2289 		};
       
  2290 
       
  2291 	
       
  2292 
       
  2293 	class TMobilePhoneNetworkInfoV2 : public TMobilePhoneNetworkInfoV1
       
  2294 	/** The access technology that the network is based on in version v2.0 of the API. 
       
  2295 	@publishedPartner
       
  2296 	@released*/
       
  2297 		{
       
  2298 	public:
       
  2299 	/** Default constructor. Network access is set to ENetworkAccessUnknown and iExtensionId 
       
  2300 	is set to KETelExtMultimodeV2. */
       
  2301 		IMPORT_C TMobilePhoneNetworkInfoV2();
       
  2302 	
       
  2303 	public:
       
  2304 		void InternalizeL(RReadStream& aStream);
       
  2305 		void ExternalizeL(RWriteStream& aStream) const;
       
  2306 	
       
  2307 	public:
       
  2308 	/** The type of network access.
       
  2309 	
       
  2310 	@see TMobilePhoneNetworkAccess */
       
  2311 		TMobilePhoneNetworkAccess iAccess;
       
  2312 		};
       
  2313 	
       
  2314 /** A typedef'd packaged TMobilePhoneNetworkInfoV2 for passing through a generic 
       
  2315 API function member. */
       
  2316 	typedef TPckg<TMobilePhoneNetworkInfoV2>  TMobilePhoneNetworkInfoV2Pckg;
       
  2317 
       
  2318 
       
  2319 	class TMobilePhoneNetworkInfoV5 : public TMobilePhoneNetworkInfoV2
       
  2320 	/** The access technology that the network is based on in version v2.0 of the API. 
       
  2321 	@publishedPartner
       
  2322 	@released*/
       
  2323 		{
       
  2324 	public:
       
  2325 		IMPORT_C TMobilePhoneNetworkInfoV5();
       
  2326 		
       
  2327 	public:
       
  2328 		void InternalizeL(RReadStream& aStream);
       
  2329 		void ExternalizeL(RWriteStream& aStream) const;
       
  2330 		
       
  2331 	public:
       
  2332 	/** HSDPA availability indicator. This information is for display 
       
  2333 	indication only and shall not be used for any other purpose.
       
  2334 		
       
  2335 	Modes: WCDMA */
       
  2336 		TBool iHsdpaAvailableIndicator;
       
  2337 
       
  2338 	/** EGPRS availability indicator. This information is for display
       
  2339 	indication only and shall not be used for any other purpose.
       
  2340 		
       
  2341 	Modes: GPRS */
       
  2342 		TBool iEgprsAvailableIndicator;
       
  2343 		};
       
  2344 
       
  2345 /** A typedef'd packaged TMobilePhoneNetworkInfoV5 for passing through a generic 
       
  2346 API function member. */		
       
  2347 	typedef TPckg<TMobilePhoneNetworkInfoV5> TMobilePhoneNetworkInfoV5Pckg;
       
  2348 	
       
  2349 	class TMobilePhoneLocationAreaV1 : public TMultimodeType
       
  2350 /** Defines the mobile phone location area.
       
  2351 
       
  2352 @see GetCurrentNetwork()
       
  2353 @see NotifyCurrentNetworkChange() */
       
  2354 		{
       
  2355 	public:
       
  2356 	/** Constructor. */
       
  2357 		IMPORT_C TMobilePhoneLocationAreaV1();
       
  2358 	public:
       
  2359 	/** Boolean indicating whether the location area is known.
       
  2360 	
       
  2361 	Modes: Common */
       
  2362 		TBool	iAreaKnown;
       
  2363 	/** Location area code.
       
  2364 	
       
  2365 	Modes: GSM/WCDMA */
       
  2366 		TUint	iLocationAreaCode;
       
  2367 	/** Cell identity code.
       
  2368 	
       
  2369 	Modes: GSM/WCDMA */
       
  2370 		TUint	iCellId;
       
  2371 		};
       
  2372 
       
  2373 	IMPORT_C void GetCurrentNetwork(TRequestStatus& aReqStatus, TDes8& aNetworkInfo, TMobilePhoneLocationAreaV1& aArea) const;
       
  2374 	IMPORT_C void NotifyCurrentNetworkChange(TRequestStatus& aReqStatus, TDes8& aNetworkInfo, TMobilePhoneLocationAreaV1& aArea) const;
       
  2375 	IMPORT_C void GetCurrentNetwork(TRequestStatus& aReqStatus, TDes8& aNetworkInfo) const;
       
  2376 	IMPORT_C void NotifyCurrentNetworkChange(TRequestStatus& aReqStatus, TDes8& aNetworkInfo) const;
       
  2377 
       
  2378 	IMPORT_C void GetHomeNetwork(TRequestStatus& aReqStatus, TDes8& aNetworkInfo) const;
       
  2379 	IMPORT_C void GetHomeNetworkSearchPeriod(TRequestStatus& aReqStatus, TInt& aSearchIntv) const;
       
  2380 	IMPORT_C void GetLastUsedAccessTechnology(TRequestStatus& aReqStatus, TMobilePhoneNetworkAccess& aAccessTech) const;
       
  2381 
       
  2382 /** The registration status of the mobile phone.
       
  2383 
       
  2384 Modes: WCDMA */
       
  2385 	enum TMobilePhoneRegistrationStatus
       
  2386 		{
       
  2387 	/** Registration status is unknown. */
       
  2388 		ERegistrationUnknown,
       
  2389 	/** Not registered. The ME can not detect any other networks and is not currently 
       
  2390 	searching a new operator to register to. */
       
  2391 		ENotRegisteredNoService,
       
  2392 	/** Not registered. The ME can detect other networks on which it is possible to 
       
  2393 	make emergency calls only. */
       
  2394 		ENotRegisteredEmergencyOnly,
       
  2395 	/** Not registered, but the ME is currently searching a new operator to register to. */
       
  2396 		ENotRegisteredSearching,
       
  2397 	/** Registered, network busy.
       
  2398 	
       
  2399 	Modes: WCDMA */
       
  2400 		ERegisteredBusy,
       
  2401 	/** Registered on home network. */
       
  2402 		ERegisteredOnHomeNetwork,
       
  2403 	/** Registration denied. */
       
  2404 		ERegistrationDenied,
       
  2405 	/** Registered, roaming. */
       
  2406 		ERegisteredRoaming
       
  2407 		};
       
  2408 
       
  2409 	IMPORT_C void GetNetworkRegistrationStatus(TRequestStatus& aReqStatus, TMobilePhoneRegistrationStatus& aStatus) const;
       
  2410 	IMPORT_C void NotifyNetworkRegistrationStatusChange(TRequestStatus& aReqStatus, TMobilePhoneRegistrationStatus& aStatus) const;
       
  2411 
       
  2412 /** The network selection function member.
       
  2413 
       
  2414 Modes: Common */
       
  2415 	enum TMobilePhoneSelectionMethod
       
  2416 		{
       
  2417 	/** Network selection function member is unknown.
       
  2418 	
       
  2419 	Modes: Common */
       
  2420 		ENetworkSelectionUnknown,
       
  2421 	/** Network is selected automatically by phone.
       
  2422 	
       
  2423 	Modes: Common */
       
  2424 		ENetworkSelectionAutomatic,
       
  2425 	/** Network is selected manually by user.
       
  2426 	
       
  2427 	Modes: GSM/WCDMA */
       
  2428 		ENetworkSelectionManual,
       
  2429 	/** Network selection is restricted to home network only
       
  2430 	
       
  2431 	Modes: CDMA */
       
  2432 		ENetworkSelectionHomeOnly
       
  2433 		};
       
  2434 
       
  2435 /** The mobile phone band class preferences.
       
  2436 
       
  2437 Modes: CDMA */
       
  2438 	enum TMobilePhoneBandClass
       
  2439 		{
       
  2440 	/** Band class selection is unknown. */
       
  2441 		ENetworkBandClassUnknown,
       
  2442 	/** Phone will select band class A only. */
       
  2443 		ENetworkBandClassAOnly,
       
  2444 	/** Phone will select band class B only. */
       
  2445 		ENetworkBandClassBOnly,
       
  2446 	/** Phone will prefer to select band class A. */
       
  2447 		ENetworkBandClassAPreferred,
       
  2448 	/** Phone will prefer to select band class B. */
       
  2449 		ENetworkBandClassBPreferred
       
  2450 		};
       
  2451 
       
  2452 /** The mobile phone network operation mode preferences.
       
  2453 
       
  2454 Modes: CDMA */
       
  2455 	enum TMobilePhoneOperation
       
  2456 		{
       
  2457 	/** Network operation mode is unknown. */
       
  2458 		ENetworkOperationUnknown,
       
  2459 	/** Phone will select analog operation only. */
       
  2460 		ENetworkOperationAnalogOnly,
       
  2461 	/** Phone will select digital/CDMA operation only. */
       
  2462 		ENetworkOperationDigitalOnly,
       
  2463 	/** Phone will prefer to select analog operation. */
       
  2464 		ENetworkOperationAnalogPreferred,
       
  2465 	/** Phone will prefer to select digital/CDMA operation. */
       
  2466 		ENetworkOperationDigitalPreferred
       
  2467 		};
       
  2468 
       
  2469 	class TMobilePhoneNetworkSelectionV1 : public TMultimodeType
       
  2470 /** The mobile phone network selection preferences.
       
  2471 
       
  2472 @see GetNetworkSelectionSetting()
       
  2473 @see SetNetworkSelectionSetting()
       
  2474 @see NotifyNetworkSelectionSettingChange()
       
  2475 @publishedPartner
       
  2476 @released */
       
  2477 		{
       
  2478 	public:
       
  2479 		IMPORT_C TMobilePhoneNetworkSelectionV1();
       
  2480 	public:
       
  2481 	/** Phone's network selection function member.
       
  2482 	
       
  2483 	Modes: Common
       
  2484 	
       
  2485 	@see TMobilePhoneSelectionMethod */
       
  2486 		TMobilePhoneSelectionMethod	iMethod;
       
  2487 	/** Phone's band class setting.
       
  2488 	
       
  2489 	Modes: CDMA
       
  2490 	
       
  2491 	@see TMobilePhoneBandClass */
       
  2492 		TMobilePhoneBandClass		iBandClass;
       
  2493 	/** Phone's CDMA operation mode.
       
  2494 	
       
  2495 	Modes: CDMA
       
  2496 	
       
  2497 	@see TMobilePhoneOperation */
       
  2498 		TMobilePhoneOperation		iOperationMode;
       
  2499 		};
       
  2500 
       
  2501 /** A typedef'd packaged TMobilePhoneNetworkSelectionV1 for passing through a generic 
       
  2502 API function member. */
       
  2503 	typedef TPckg<TMobilePhoneNetworkSelectionV1>  TMobilePhoneNetworkSelectionV1Pckg;
       
  2504 
       
  2505 	IMPORT_C TInt GetNetworkSelectionSetting(TDes8& aSetting) const;
       
  2506 	IMPORT_C void SetNetworkSelectionSetting(TRequestStatus& aReqStatus, const TDes8& aSetting) const;
       
  2507 	IMPORT_C void NotifyNetworkSelectionSettingChange(TRequestStatus& aReqStatus, TDes8& aSetting) const;
       
  2508 	
       
  2509 	struct TMobilePhoneNetworkManualSelection
       
  2510 /** The mobile phone manual network selection parameters.
       
  2511 
       
  2512 Modes: GSM/WCDMA
       
  2513 
       
  2514 @see TMobilePhoneNetworkCountryCode */
       
  2515 		{
       
  2516 	/** The MCC of the network
       
  2517 	
       
  2518 	@see TMobilePhoneNetworkCountryCode */
       
  2519 		TMobilePhoneNetworkCountryCode iCountry;
       
  2520 	/** The MNC of the network
       
  2521 	
       
  2522 	@see TMobilePhoneNetworkIdentity */
       
  2523 		TMobilePhoneNetworkIdentity iNetwork;
       
  2524 		};
       
  2525 	
       
  2526 	IMPORT_C void SelectNetwork(TRequestStatus& aReqStatus, TBool aIsManual, const TMobilePhoneNetworkManualSelection& aManualSelection) const;
       
  2527 
       
  2528 	
       
  2529 
       
  2530 	 // Used to indicate which TMobilePhoneNITZ fields are currently available
       
  2531 /** The Phone Network Time Zone Capabilities. */
       
  2532 	 enum TMobilePhoneNITZCaps
       
  2533 		{
       
  2534 	/** Universal Time is available in the current network mode. */
       
  2535 		KCapsTimeAvailable      = 0x00000001,
       
  2536 	/** Local time zone is available in the current network mode. */
       
  2537 		KCapsTimezoneAvailable  = 0x00000002,
       
  2538 	/** DST is available in the current network mode. */
       
  2539 		KCapsDSTAvailable       = 0x00000004,
       
  2540 	/** Short name is available in the current network mode. */
       
  2541 		KCapsShortNameAvailable = 0x00000008,
       
  2542 	/** Long name is available in the current network mode. */
       
  2543 		KCapsLongNameAvailable  = 0x00000010
       
  2544 		};
       
  2545 
       
  2546 	class TMobilePhoneNITZ : public TDateTime
       
  2547 /** Defines time and date information received from a mobile phone network.
       
  2548 
       
  2549 @see GetNITZInfo()
       
  2550 @see NotifyNITZInfoChange()
       
  2551 @publishedPartner
       
  2552 @released */
       
  2553 		{
       
  2554 	public:
       
  2555 		IMPORT_C TMobilePhoneNITZ();
       
  2556 		IMPORT_C TMobilePhoneNITZ(TInt aYear, TMonth aMonth, TInt aDay, TInt aHour, TInt aMinute, TInt aSecond, TInt aMicroSecond);		
       
  2557 	public:
       
  2558 	/** Bitwise sum of TMobilePhoneNITZCaps constants used to indicate which NITZ fields 
       
  2559 	are available.
       
  2560 	
       
  2561 	Modes: Common */
       
  2562 		TInt32	                     iNitzFieldsUsed;
       
  2563 	/** Time zone, expressed in +/- 15 minute offsets from GMT.
       
  2564 	
       
  2565 	Modes: Common */
       
  2566 		TInt                         iTimeZone;
       
  2567 	/** Daylight Saving Time adjustment for summer time. The adjustment for DST 
       
  2568 	can be +1h or +2h.
       
  2569 	
       
  2570 	Modes: GSM/WCDMA */
       
  2571 		TInt	                     iDST;
       
  2572 	/** Network name in "short" representation.
       
  2573 	
       
  2574 	Modes: GSM/WCDMA
       
  2575 	
       
  2576 	@see TMobilePhoneNetworkShortName */
       
  2577 		TMobilePhoneNetworkShortName iShortNetworkId;
       
  2578 	/** Network name in "long" representation.
       
  2579 	
       
  2580 	Modes: GSM/WCDMA
       
  2581 	
       
  2582 	@see TMobilePhoneNetworkLongName */
       
  2583 		TMobilePhoneNetworkLongName	 iLongNetworkId;
       
  2584 		};
       
  2585 
       
  2586 	IMPORT_C TInt GetNITZInfo(TMobilePhoneNITZ& aNITZInfo) const;
       
  2587 	IMPORT_C void NotifyNITZInfoChange(TRequestStatus& aReqStatus, TMobilePhoneNITZ& aNITZInfo) const;
       
  2588 
       
  2589 	enum { KMaxSPNameSize=16 };
       
  2590 	enum { KMaxPLMNFieldSize=251 };
       
  2591 
       
  2592 	enum TDisplayRequirements
       
  2593 		{
       
  2594 		KDisplayPLMNNotRequired	= 0x00000001,
       
  2595 		KDisplayPLMNRequired	= 0x00000002,
       
  2596 		KDisplaySPNRequired		= 0x00000004,
       
  2597 		KDisplaySPNNotRequired	= 0x00000008
       
  2598 		};
       
  2599 
       
  2600 	typedef TUint32 TDisplayRequirementsFlags;
       
  2601 
       
  2602 	class TMobilePhoneServiceProviderNameV2 : public TMultimodeType
       
  2603 /** Used to retrieve the Service Provider Name from the ICC. The 
       
  2604 SP is actually the entity that provides the service. The SP could have contractual 
       
  2605 agreements with several home PLMN that the ME can register to. The display 
       
  2606 preference of the registered PLMN and/or the SPN on the ME can be defined 
       
  2607 on the UICC.
       
  2608 @publishedPartner
       
  2609 @released */
       
  2610 		{
       
  2611 	public:
       
  2612 		IMPORT_C TMobilePhoneServiceProviderNameV2();
       
  2613 	public:
       
  2614 	/** This parameter specifies if the display of the registered PLMN is required. 
       
  2615 	Can contain a number of flags from RMobilePhone::TDisplayRequirements.
       
  2616 	*/
       
  2617 		TDisplayRequirementsFlags	iDisplayReq;
       
  2618 	/** The name of the service provider. */
       
  2619 		TBuf<KMaxSPNameSize>	iSPName;
       
  2620 		TBuf<KMaxPLMNFieldSize>	iPLMNField;
       
  2621 		}; 
       
  2622 
       
  2623 /** A typedef'd packaged TMobilePhoneServiceProviderNameV2 for passing through 
       
  2624 a generic API function member. */
       
  2625 	typedef TPckg<TMobilePhoneServiceProviderNameV2> TMobilePhoneServiceProviderNameV2Pckg;
       
  2626 
       
  2627 	IMPORT_C void GetServiceProviderName(TRequestStatus& aReqStatus, TDes8& aName) const;
       
  2628 	
       
  2629 	/**
       
  2630 	Network investigation scan settings.
       
  2631 	*/
       
  2632 	enum TMobilePhoneInvestigationScan
       
  2633 		{
       
  2634 		/**
       
  2635 		Network investigation setting in limited service mode.
       
  2636 		*/
       
  2637 		KNetworkInvLimited = 0x01,
       
  2638 		/**
       
  2639 		Network investigation setting after successful PLMN selection.
       
  2640 		*/
       
  2641 		KNetworkInvAfterPlmnSelection=0x02		
       
  2642 		};
       
  2643 		
       
  2644 	/**
       
  2645 	Network investigation scan events.
       
  2646 	*/
       
  2647 	enum TMobilePhoneInvestigationScanEvent
       
  2648 		{
       
  2649 		/**
       
  2650 		No investigation scan events available.
       
  2651 		*/
       
  2652 		ENetworkInvestigationNoEvent,
       
  2653 		/**
       
  2654 		A higher priority network has been detected, but it does not offer CS Voice.
       
  2655 		*/
       
  2656 		ENetworkInvestigationHighPriorityPlmn
       
  2657 		};
       
  2658 	
       
  2659 	IMPORT_C TInt GetNetworkInvScanSetting(TMobilePhoneInvestigationScan & aSetting) const;
       
  2660 	IMPORT_C void NotifyNetworkInvScanChange(TRequestStatus& aReqStatus, TMobilePhoneInvestigationScan& aSetting) const;
       
  2661 	IMPORT_C void NotifyNetworkInvScanEvent(TRequestStatus& aReqStatus, TMobilePhoneInvestigationScanEvent& aEvent) const;
       
  2662 
       
  2663 
       
  2664 	/** 251 bytes is the maximum number of octets in an L3 message as defined in3GPP TS 44.006. */
       
  2665 	enum { KMaxNetworkNameFieldSize = 251 };
       
  2666 	
       
  2667 	class TMobilePhoneNetworkNameV3 : public TMultimodeType
       
  2668 	/**
       
  2669 	Class containing short, long network names and location information for a PLMN.
       
  2670 	*/
       
  2671 		{
       
  2672 	public:
       
  2673 		IMPORT_C TMobilePhoneNetworkNameV3();
       
  2674 	public:
       
  2675 		/**
       
  2676 		The long name (up to 20 characters) of the network operator.
       
  2677 		*/
       
  2678 		TMobilePhoneNetworkLongName	 iLongName;
       
  2679 		/**
       
  2680 		The short name (up to 10 characters) of the network operator.
       
  2681 		*/
       
  2682 		TMobilePhoneNetworkShortName	 iShortName;
       
  2683 		/**
       
  2684 		This buffer contains other long and short names for the registered PLMN coded as TLV objects.
       
  2685 		*/
       
  2686 		TBuf<KMaxNetworkNameFieldSize>	 iOtherNames;
       
  2687 		};
       
  2688 		
       
  2689 	/**
       
  2690  	Packaging typedef for TMobilePhoneNetworkNameV3 class.
       
  2691  	*/	
       
  2692 	typedef TPckg<TMobilePhoneNetworkNameV3>  TMobilePhoneNetworkNameV3Pckg;
       
  2693 	
       
  2694 	
       
  2695 	class  TMobilePhoneOPlmnV3 : public TMultimodeType
       
  2696 	/**
       
  2697 	Class containing network name information.
       
  2698 	*/
       
  2699 		{
       
  2700 	public:
       
  2701 		IMPORT_C TMobilePhoneOPlmnV3();
       
  2702 	public:
       
  2703 		/**
       
  2704 		The MCC of the registered PLMN, with "wild" values specified for the particular digits of the code.
       
  2705 		*/
       
  2706 		TMobilePhoneNetworkCountryCode iCountryCode;
       
  2707 		/**
       
  2708 		The MNC of the registered PLMN, with "wild" values specified for the particular digits of the code.
       
  2709 		*/
       
  2710 		TMobilePhoneNetworkIdentity iNetworkId;
       
  2711 		/**
       
  2712 		The id of the Network Name to be displayed for the (following) location area codes.
       
  2713 		*/
       
  2714 		TUint32 iPNNid;
       
  2715 		/**
       
  2716 		First Location area code for defining the entire range of LACs for the registered PLMN.
       
  2717 		*/
       
  2718 		TUint iFirstLocationAreaCode;
       
  2719 		/**
       
  2720 		Last Location area code defining the entire range of LACs for the registered PLMN.
       
  2721 		*/
       
  2722 		TUint iLastLocationAreaCode;
       
  2723 		
       
  2724 		};
       
  2725 		
       
  2726 	/**
       
  2727  	Packaging typedef for TMobilePhoneOPlmnV3 class.
       
  2728  	*/	
       
  2729 	typedef TPckg<TMobilePhoneOPlmnV3>  TMobilePhoneOPlmnV3Pckg;
       
  2730 	
       
  2731 	IMPORT_C void GetCurrentNetworkName(TRequestStatus& aReqStatus, TDes8& aNetworkName, TDes8& aLocInfo) const;
       
  2732 	
       
  2733 	/**
       
  2734 	Identifiers for different access technologies.
       
  2735 	*/
       
  2736 	enum TMobilePhoneNetworkAccessCaps
       
  2737 		{
       
  2738 		/**
       
  2739 		No network activity.
       
  2740 		*/
       
  2741 		KNetworkAccessUnknown=0x0000,
       
  2742 		/**
       
  2743 		Access technology is GSM.
       
  2744 		*/
       
  2745 		KNetworkAccessGsm=0x8000,
       
  2746 		/**
       
  2747 		Access technology is GSM COMPACT.
       
  2748 		*/
       
  2749 		KNetworkAccessGsmCompact=0x4000,
       
  2750 		/**
       
  2751 		Access technology is UTRAN (UMTS only).
       
  2752 		*/
       
  2753 		KNetworkAccessUtran=0x0080
       
  2754 		};
       
  2755 
       
  2756 	typedef TUint32 TMobilePhoneNetworkAccessCapsFlags;
       
  2757 		
       
  2758 	class TMobilePreferredNetworkEntryV3 : public TMultimodeType
       
  2759 	/**
       
  2760 	Defines information for a preferred network.
       
  2761 	*/
       
  2762 		{
       
  2763 	public:
       
  2764 		IMPORT_C TMobilePreferredNetworkEntryV3();
       
  2765 	public:
       
  2766 		void InternalizeL(RReadStream& aStream);
       
  2767 		void ExternalizeL(RWriteStream& aStream) const;
       
  2768 	public:
       
  2769 		/**
       
  2770 		Access Technology supported.
       
  2771 		Can contain a number of flags from RMobilePhone::TMobilePhoneNetworkAccessCaps.
       
  2772 		*/
       
  2773 		TMobilePhoneNetworkAccessCapsFlags iAccess;
       
  2774 		/**
       
  2775 		Editable preferences in the User-controlled Networks List with Access Technology.
       
  2776 		*/
       
  2777 		TBool iUserDefined;
       
  2778 		/**
       
  2779 		The MCC of the network.
       
  2780 		*/
       
  2781 		TMobilePhoneNetworkCountryCode iCountryCode;
       
  2782 		/**
       
  2783 		The MNC of the network.
       
  2784 		*/
       
  2785 		TMobilePhoneNetworkIdentity iNetworkId;
       
  2786 		};
       
  2787 		
       
  2788 	IMPORT_C void StorePreferredNetworksListL(TRequestStatus& aReqStatus, CMobilePhoneStoredNetworkList* aList) const;
       
  2789 	IMPORT_C void NotifyPreferredNetworksListChange(TRequestStatus& aReqStatus) const;
       
  2790 		
       
  2791 	/***********************************************************************************/		
       
  2792 	//
       
  2793 	// Mobile Multimedia Call Settings functional unit
       
  2794 	//
       
  2795 	/***********************************************************************************/
       
  2796 	
       
  2797 /** An enumerated list of settings for multimedia calls. */
       
  2798 	enum TMobilePhoneMultimediaSettings
       
  2799 		{
       
  2800 	/** Accept all incoming multimedia calls with the fallback option enabled. (default). */
       
  2801 		EAcceptMMCallsVoiceFallback,
       
  2802 	/** Accept all incoming multimedia calls, but do not accept voice fallback. */
       
  2803 		EAcceptMMCallsNoFallback,
       
  2804 	/** Reject all incoming multimedia calls. */
       
  2805 		ERejectMMCalls,
       
  2806 	/** Reject all incoming multimedia calls, but drop to voice instead. */
       
  2807 		EAnswerMMCallsAsVoice
       
  2808 		};
       
  2809 
       
  2810 	IMPORT_C void SetMultimediaCallPreference(TRequestStatus& aReqStatus, TMobilePhoneMultimediaSettings aMmSettings) const;
       
  2811 	IMPORT_C TInt GetMultimediaCallPreference(TMobilePhoneMultimediaSettings& aMmSettings) const;
       
  2812 	IMPORT_C void NotifyMultimediaCallPreferenceChange(TRequestStatus& aReqStatus, TMobilePhoneMultimediaSettings& aMmSettings);
       
  2813 
       
  2814 	/***********************************************************************************/	
       
  2815 	//
       
  2816 	// MobilePrivacy functional unit
       
  2817 	//
       
  2818 	/***********************************************************************************/
       
  2819 	
       
  2820 /** The mobile phone privacy settings.
       
  2821 
       
  2822 Modes: CDMA */
       
  2823 	enum TMobilePhonePrivacy
       
  2824 		{
       
  2825 	/** The privacy setting is unspecified. */
       
  2826 		EPrivacyUnspecified,
       
  2827 	/** The privacy setting is set to ON. */
       
  2828 		EPrivacyOn,
       
  2829 	/** The privacy setting is set to OFF. */
       
  2830 		EPrivacyOff
       
  2831 		};
       
  2832 
       
  2833 	IMPORT_C TInt GetDefaultPrivacy(TMobilePhonePrivacy& aSetting) const;
       
  2834 	IMPORT_C void SetDefaultPrivacy(TRequestStatus& aReqStatus, TMobilePhonePrivacy aSetting) const;
       
  2835 	IMPORT_C void NotifyDefaultPrivacyChange(TRequestStatus& aReqStatus, TMobilePhonePrivacy& aSetting) const;
       
  2836 
       
  2837 	/***********************************************************************************/
       
  2838 	//
       
  2839 	// TSY Capabilities for supplementary call services
       
  2840 	// 
       
  2841 	/***********************************************************************************/
       
  2842 	
       
  2843 /** The call services.
       
  2844 
       
  2845 Modes: GSM/WCDMA */
       
  2846 	enum TMobilePhoneCallServiceCaps
       
  2847 		{
       
  2848 	/** Phone supports retrieval of call forwarding status from a cache on the phone.
       
  2849 	
       
  2850 	Modes: GSM/WCDMA */
       
  2851 		KCapsGetCFStatusCache				=0x00000001,
       
  2852 	/** Phone supports retrieval of call forwarding status from the network.
       
  2853 	
       
  2854 	Modes: GSM/WCDMA */
       
  2855 		KCapsGetCFStatusNetwork				=0x00000002,
       
  2856 	/** Phone supports setting of call forwarding status (and registered information) 
       
  2857 	in the network. */
       
  2858 		KCapsSetCFStatus					=0x00000004,
       
  2859 	/** Phone supports notification of change in status of any call forwarding service.
       
  2860 	
       
  2861 	Modes: GSM/WCDMA */
       
  2862 		KCapsNotifyCFStatus					=0x00000008,
       
  2863 	/** Phone supports retrieval of CLIP status from either a cache or the network.
       
  2864 	
       
  2865 	Modes: GSM/WCDMA */
       
  2866 		KCapsGetClipStatus					=0x00000010,
       
  2867 	/** Phone supports retrieval of CLIR status from either a cache or the network.
       
  2868 	
       
  2869 	Modes: GSM/WCDMA */
       
  2870 		KCapsGetClirStatus					=0x00000020,
       
  2871 	/** Phone supports retrieval of COLP status from either a cache or the network.
       
  2872 	
       
  2873 	Modes: GSM/WCDMA */
       
  2874 		KCapsGetColpStatus					=0x00000040,
       
  2875 	/** Phone supports retrieval of COLR status from either a cache or the network.
       
  2876 	
       
  2877 	Modes: GSM/WCDMA */
       
  2878 		KCapsGetColrStatus					=0x00000080,
       
  2879 	/** Phone supports retrieval of CNAP status from either a cache or the network.
       
  2880 
       
  2881 	Modes: GSM/WCDMA */
       
  2882 		KCapsGetCnapStatus					=0x00000100,
       
  2883 	/** Phone supports retrieval of call barring status from a cache on the phone.
       
  2884 	
       
  2885 	Modes: Common */
       
  2886 		KCapsGetCBStatusCache				=0x00000200,
       
  2887 	/** Phone supports retrieval of call barring status from the network.
       
  2888 	
       
  2889 	Modes: GSM/WCDMA */
       
  2890 		KCapsGetCBStatusNetwork				=0x00000400,
       
  2891 	/** Phone supports setting of call barring status in the network.
       
  2892 	
       
  2893 	Modes: Common */
       
  2894 		KCapsSetCBStatus					=0x00000800,
       
  2895 	/** Phone supports notification of change in call barring status for any service.
       
  2896 	
       
  2897 	Modes: Common */
       
  2898 		KCapsNotifyCBStatus					=0x00001000,
       
  2899 	/** Phone supports setting of a password for call barring service.
       
  2900 	
       
  2901 	Modes: Common */
       
  2902 		KCapsChangeCBPassword				=0x00002000,
       
  2903 	/** Phone supports BAIC call barring service.
       
  2904 	
       
  2905 	Modes: Common */
       
  2906 		KCapsBarAllIncoming					=0x00004000,
       
  2907 	/** Phone supports BIC-Roam call barring service.
       
  2908 	
       
  2909 	Modes: Common */
       
  2910 		KCapsBarIncomingRoaming				=0x00008000,
       
  2911 	/** Phone supports BAOC call barring service.
       
  2912 	
       
  2913 	Modes: Common */
       
  2914 		KCapsBarAllOutgoing					=0x00010000,
       
  2915 	/** Phone supports BOIC call barring service.
       
  2916 	
       
  2917 	Modes: Common */
       
  2918 		KCapsBarOutgoingInternational		=0x00020000,
       
  2919 	/** Phone supports BOIC-ExHC call barring service.
       
  2920 	
       
  2921 	Modes: Common */
       
  2922 		KCapsBarOutgoingInternationalExHC	=0x00040000,
       
  2923 	/** Phone supports barring all cases at once.
       
  2924 	
       
  2925 	Modes: Common */
       
  2926 		KCapsBarAllCases					=0x00080000,
       
  2927 	/** Phone supports retrieval of call waiting status from a cache on the phone.
       
  2928 	
       
  2929 	Modes: GSM/WCDMA */
       
  2930 		KCapsGetCWStatusCache				=0x00100000,
       
  2931 	/** Phone supports retrieval of call waiting status from the network.
       
  2932 	
       
  2933 	Modes: GSM/WCDMA */
       
  2934 		KCapsGetCWStatusNetwork				=0x00200000,
       
  2935 	/** Phone supports setting of call waiting status in the network.
       
  2936 	
       
  2937 	Modes: Common */
       
  2938 		KCapsSetCWStatus					=0x00400000,
       
  2939 	/** Phone supports notification of change in call waiting status for any service.
       
  2940 	
       
  2941 	Modes: GSM/WCDMA */
       
  2942 		KCapsNotifyCWStatus					=0x00800000,
       
  2943 	/** Phone supports retrieval of call completion (CCBS) status from a cache on the 
       
  2944 	phone.
       
  2945 	
       
  2946 	Modes: GSM/WCDMA */
       
  2947 		KCapsGetCCBSStatusCache				=0x01000000,
       
  2948 	/** Phone supports retrieval of call completion (CCBS) status from the network.
       
  2949 	
       
  2950 	Modes: GSM/WCDMA */
       
  2951 		KCapsGetCCBSStatusNetwork			=0x02000000,
       
  2952 	/** Phone supports deactivation of all CCBS requests at once.
       
  2953 	
       
  2954 	Modes: GSM/WCDMA */
       
  2955 		KCapsDeactivateAllCCBS				=0x04000000,
       
  2956 		KCapsDeactivateCCBS					=0x08000000,
       
  2957 	/** Phone supports retrieval of a list of active CCBS requests.
       
  2958 	
       
  2959 	Modes: GSM/WCDMA */
       
  2960 		KCapsRetrieveActiveCCBS				=0x10000000,
       
  2961 	/** The phone supports programming and retrieval of feature code against a CDMA 
       
  2962 	network service.
       
  2963 	
       
  2964 	Modes: CDMA */
       
  2965 		KCapsFeatureCode					=0x20000000,
       
  2966 	/** The phone supports sending of generic network service request strings.
       
  2967 	
       
  2968 	Modes: Common */
       
  2969 		KCapsNetworkServiceRequest			=0x40000000,
       
  2970 	/** The phone supports retrieval of called line identification status.
       
  2971 	
       
  2972 	Modes: GSM/WCDMA */
       
  2973 		KCapsGetCdipStatus					=0x80000000
       
  2974 		};
       
  2975 
       
  2976 	IMPORT_C TInt GetCallServiceCaps(TUint32& aCaps) const;
       
  2977 	IMPORT_C void NotifyCallServiceCapsChange(TRequestStatus& aReqStatus, TUint32& aCaps) const;
       
  2978 
       
  2979 	/***********************************************************************************/
       
  2980 	//
       
  2981 	// MobilePhoneUserNetworkAccess functional unit
       
  2982 	//
       
  2983 	/***********************************************************************************/
       
  2984 
       
  2985 /** Mobile Phone network services.
       
  2986 
       
  2987 Modes: CDMA */
       
  2988 	enum TMobilePhoneNetworkService
       
  2989 		{
       
  2990 	/** Network service is unspecified. */
       
  2991 		ENetworkServiceUnspecified,
       
  2992 	/** Feature code applies to call forwarding unconditional service. */
       
  2993 		ECFUService,
       
  2994 	/** Feature code applies to call forwarding on busy service. */
       
  2995 		ECFBService,
       
  2996 	/** Feature code applies to call forwarding on no reply service. */
       
  2997 		ECFNRyService,
       
  2998 	/** Feature code applies to call forwarding on not reachable service. */
       
  2999 		ECFNRcService,
       
  3000 	/** Feature code applies to user selective call forwarding service - when the 
       
  3001 	user wishes to forward incoming call to voicemail. */
       
  3002 		EDeflectToVoicemail,
       
  3003 	/** Feature code applies to user selective call forwarding service - when the
       
  3004 	user wishes to forward incoming call to a number supplied within the deflect 
       
  3005 	request. */
       
  3006 		EDeflectToNumber,
       
  3007 	/** Feature code applies to user selective call forwarding service - when the 
       
  3008 	user wishes to forward incoming call to a number pre-registered within the 
       
  3009 	network. */
       
  3010 		EDeflectToRegisteredNumber,
       
  3011 	/** Feature code applies to call waiting service. */
       
  3012 		ECWService,
       
  3013 		ENextCallShowCLI,
       
  3014 	/** Feature code applies to caller ID restriction service - when user wishes to 
       
  3015 	hide their ID for the next call they make. */
       
  3016 		ENextCallHideCLI
       
  3017 		};
       
  3018 
       
  3019 /** Mobile phone service actions.
       
  3020 
       
  3021 Modes: Common */
       
  3022 	enum TMobilePhoneServiceAction
       
  3023 		{
       
  3024 	/** The action is unspecified. */
       
  3025 		EServiceActionUnspecified,
       
  3026 	/** The client is registering new service information. If the service was not active 
       
  3027 	then this action also activates the service. */
       
  3028 		EServiceActionRegister,
       
  3029 	/** The client is activating the service. */
       
  3030 		EServiceActionActivate,
       
  3031 	/** The client is invoking the service. */
       
  3032 		EServiceActionInvoke,
       
  3033 	/** The client is deactivating the service. */
       
  3034 		EServiceActionDeactivate,
       
  3035 	/** The client is erasing the currently registered service information. If the service 
       
  3036 	was active then this action also deactivates the service. */
       
  3037 		EServiceActionErase
       
  3038 		};
       
  3039 		
       
  3040 	/**
       
  3041 	Defines the type of SS operation
       
  3042 	*/
       
  3043 	enum TMobilePhoneNotifySendSSOperation
       
  3044 		{
       
  3045 		/**
       
  3046 		SS Invoke operation.
       
  3047 		*/
       
  3048 		ESendSSInvoke,
       
  3049 		/**
       
  3050 		SS ReturnResult operation.
       
  3051 		*/
       
  3052 		ESendSSReturnResult,
       
  3053 		/**
       
  3054 		SS ReturnError operation.
       
  3055 		*/
       
  3056 		ESendSSReturnError,
       
  3057 		/**
       
  3058 		SS Reject operation.
       
  3059 		*/
       
  3060 		ESendSSReject		
       
  3061 		};
       
  3062 	
       
  3063 	/** Size of additional info buffer. */	
       
  3064 	enum{ KAdditionalInfoSize = 244 };
       
  3065 	
       
  3066 	class TMobilePhoneSendSSRequestV3 : public TMultimodeType
       
  3067 	/**
       
  3068 	Contains the operation code and buffer to hold any additional information when receiving a notification 
       
  3069 	about a network service request.
       
  3070 	*/
       
  3071 		{
       
  3072 	public:
       
  3073 		IMPORT_C TMobilePhoneSendSSRequestV3();
       
  3074 	public:
       
  3075 		/**
       
  3076 		This is the Operation Code for a Send SS Invoke or Return result events.
       
  3077 		This is the Error or Problem Code for a Send SS Return Error or Reject events.
       
  3078 		*/
       
  3079 		TUint8	iOpCode;
       
  3080 		/**
       
  3081 		The additional information (parameters) for a Send SS Invoke or Return result or Return Error events.
       
  3082 		This is not used for a Send SS Reject event
       
  3083 		*/
       
  3084 		TBuf<KAdditionalInfoSize>	iAdditionalInfo;
       
  3085 		};
       
  3086 	
       
  3087 	/**
       
  3088  	Packaging typedef for TMobilePhoneSendSSRequestV3 class.
       
  3089  	*/	
       
  3090 	typedef TPckg<TMobilePhoneSendSSRequestV3> TMobilePhoneSendSSRequestV3Pckg;
       
  3091 
       
  3092 	// API/TSY internal type
       
  3093 
       
  3094 	struct TNetworkServiceAndAction
       
  3095 		{
       
  3096 		TMobilePhoneNetworkService iService;
       
  3097 		TMobilePhoneServiceAction iAction;
       
  3098 		};
       
  3099 	
       
  3100 	IMPORT_C void ProgramFeatureCode(TRequestStatus& aReqStatus, const TDesC& aFCString, TMobilePhoneNetworkService aService, TMobilePhoneServiceAction aAction) const;
       
  3101 	IMPORT_C void GetFeatureCode(TRequestStatus& aReqStatus, TDes& aFCString, TMobilePhoneNetworkService aService, TMobilePhoneServiceAction aAction) const;
       
  3102 
       
  3103 	IMPORT_C void SendNetworkServiceRequest(TRequestStatus& aReqStatus, const TDesC& aServiceString) const;
       
  3104 	IMPORT_C void SendNetworkServiceRequestNoFdnCheck(TRequestStatus& aReqStatus, const TDesC& aServiceString) const;
       
  3105 	IMPORT_C void NotifySendNetworkServiceRequest(TRequestStatus& aReqStatus, const TMobilePhoneNotifySendSSOperation aOperation, TDes8& aRequestComplete) const;
       
  3106 
       
  3107 	/***********************************************************************************/
       
  3108 	//
       
  3109 	// MobilePhoneCallForwarding functional unit
       
  3110 	// 
       
  3111 	/***********************************************************************************/
       
  3112 
       
  3113 /** The Call Forwarding flavours.
       
  3114 
       
  3115 Modes: GSM/WCDMA */
       
  3116 	enum TMobilePhoneCFCondition
       
  3117 		{
       
  3118 	/** The call forwarding service is unspecified. */
       
  3119 		ECallForwardingUnspecified,
       
  3120 	/** All calls to this subscriber are forwarded. */
       
  3121 		ECallForwardingUnconditional,
       
  3122 	/** Calls are forwarded when this subscriber is busy. */
       
  3123 		ECallForwardingBusy,
       
  3124 	/** Calls are forwarded when this subscriber does not reply within a time-out period. */
       
  3125 		ECallForwardingNoReply,
       
  3126 	/** Calls are forwarded when this subscriber is unreachable. */
       
  3127 		ECallForwardingNotReachable,
       
  3128 	/** All of above CF services. Can be used to check all 4 call forwarding Fs 
       
  3129 	at once. */
       
  3130 		ECallForwardingAllCases,			// combination of all four above cases
       
  3131 	/** All the conditional (busy, no reply, not reachable) CF services. Can be used 
       
  3132 	to check all 3 conditional call forwarding conditions at once. */
       
  3133 		ECallForwardingAllConditionalCases	// combination of CFB, CFNRy and CFNRc
       
  3134 		};
       
  3135 
       
  3136 /** The Call Forwarding status
       
  3137 
       
  3138 Modes: GSM/WCDMA */
       
  3139 	enum TMobilePhoneCFStatus
       
  3140 		{
       
  3141 	/** The CF service is currently active and operative. */
       
  3142 		ECallForwardingStatusActive,
       
  3143 	/** The CF service is currently deactivated. */
       
  3144 		ECallForwardingStatusNotActive,
       
  3145 	/** The CF service is not registered. */
       
  3146 		ECallForwardingStatusNotRegistered,
       
  3147 	/** The CF service is not provisioned. */
       
  3148 		ECallForwardingStatusNotProvisioned,
       
  3149 	/** The CF service is not available in the serving network. */
       
  3150 		ECallForwardingStatusNotAvailable,
       
  3151 	/** The phone can not determine CF service status. */
       
  3152 		ECallForwardingStatusUnknown,
       
  3153 	/** The Call Forwarding service is active and the presentation indicator is set 
       
  3154 	to allowed */
       
  3155 		ECallForwardingStatusActivePIAllowed,
       
  3156 	/** The Call Forwarding service is active and the presentation indicator is set 
       
  3157 	to not available */
       
  3158 		ECallForwardingStatusActivePINotAvailable,
       
  3159 	/** The Call Forwarding service is active and the presentation indicator is set 
       
  3160 	to restricted
       
  3161 	
       
  3162 	The Call Forwarding service is active and the presentation indicator is set 
       
  3163 	to restricted and screening returns "User provided, verified and passed". */
       
  3164 		ECallForwardingStatusActivePIClir,
       
  3165 	/** The Call Forwarding service is active and the presentation indicator is set 
       
  3166 	to restricted and screening returns "User provided, not screened". */
       
  3167 		ECallForwardingStatusActivePIClirSIVerified,
       
  3168 	/** The Call Forwarding service is active and the presentation indicator is set 
       
  3169 	to "restricted" and screening returns "Network provided". */
       
  3170 		ECallForwardingStatusActivePIClirSINotScreened,
       
  3171 	/** The Call Forwarding service is active and the presentation indicator is set 
       
  3172 	to "restricted" and screening returns "Network provided". */
       
  3173 		ECallForwardingStatusActivePIClirSINetwork,
       
  3174 	/** The CF service is currently in the quiescent state. */	
       
  3175 		ECallForwardingStatusQuiescent
       
  3176 		};
       
  3177 		
       
  3178 	
       
  3179 
       
  3180 	class TMobilePhoneCFInfoEntryV1 : public TMultimodeType
       
  3181 /** Defines information about the call forwarding service.
       
  3182 
       
  3183 Modes: GSM/WCDMA
       
  3184 
       
  3185 @see CMobilePhoneCFList
       
  3186 @publishedPartner
       
  3187 @released 
       
  3188 */
       
  3189 		{
       
  3190 	public:
       
  3191 		IMPORT_C TMobilePhoneCFInfoEntryV1();
       
  3192 	public:
       
  3193 		void InternalizeL(RReadStream& aStream);
       
  3194 		void ExternalizeL(RWriteStream& aStream) const;
       
  3195 	public:
       
  3196 	/** The CF service of this list entry.
       
  3197 	
       
  3198 	@see TMobilePhoneCFCondition */
       
  3199 		TMobilePhoneCFCondition iCondition;
       
  3200 	/** The basic service group associated to this CF service list entry.
       
  3201 	
       
  3202 	@see TMobileService */
       
  3203 		TMobileService iServiceGroup;
       
  3204 	/** The current status of the call forwarding condition.
       
  3205 	
       
  3206 	@see TMobilePhoneCFStatus */
       
  3207 		TMobilePhoneCFStatus iStatus;
       
  3208 	/** The "forward-to" telephone number registered for the call forwarding condition. 
       
  3209 	An empty string if CF service is not registered, not provisioned or not available.
       
  3210 	
       
  3211 	@see TMobileAddress */
       
  3212 		TMobileAddress iNumber;
       
  3213 	/** The "No Reply" time-out (in seconds) registered for the call forwarding no reply 
       
  3214 	condition.
       
  3215 	
       
  3216 	Equals to -1 if this value is not applicable. In GSM mode, will be between 
       
  3217 	5 and 30 and in steps of 5 if this value is applicable. */
       
  3218 		TInt iTimeout; // valid for CFRNy only
       
  3219 		};
       
  3220 
       
  3221 	IMPORT_C void NotifyCallForwardingStatusChange(TRequestStatus& aReqStatus, TMobilePhoneCFCondition& aCondition) const;
       
  3222 
       
  3223 	class TMobilePhoneCFChangeV1 : public TMultimodeType
       
  3224 /** Defines the call forward information.
       
  3225 
       
  3226 @see SetCallForwardingStatus()
       
  3227 @publishedPartner
       
  3228 @released 
       
  3229 */
       
  3230 		{
       
  3231 	public:
       
  3232 		IMPORT_C TMobilePhoneCFChangeV1();
       
  3233 	public:
       
  3234 	/** The basic service group(s) to apply the CF status change to.
       
  3235 	
       
  3236 	@see TMobileService */
       
  3237 		TMobileService iServiceGroup;
       
  3238 	/** The service action for call forwarding.
       
  3239 	
       
  3240 	@see TMobilePhoneServiceAction */
       
  3241 		TMobilePhoneServiceAction iAction;
       
  3242 	/** A new "forward-to" number to be registered against the CF condition. This is 
       
  3243 	applicable if iAction=EServiceActionRegister. In other cases, it is set to
       
  3244 	an empty string.
       
  3245 	
       
  3246 	@see TMobileAddress */
       
  3247 		TMobileAddress iNumber;
       
  3248 	/** The new "No Reply" time-out in seconds to be registered. This is applicable 
       
  3249 	if the CF condition is CFNRy and iAction=EServiceActionRegister. Equals -1 
       
  3250 	if this value is not applicable. If applicable, in GSM mode will be between 
       
  3251 	5 and 30 and in steps of 5. */
       
  3252 		TInt iTimeout;
       
  3253 		};
       
  3254 
       
  3255 	IMPORT_C void SetCallForwardingStatus(TRequestStatus& aReqStatus, TMobilePhoneCFCondition aCondition, const TMobilePhoneCFChangeV1& aInfo) const;
       
  3256 
       
  3257 /** Call Forwarding Active Notification
       
  3258 
       
  3259 Modes: Common */
       
  3260 	enum TMobilePhoneCFActive
       
  3261 		{
       
  3262 	/** CF Unconditional is currently active. */
       
  3263 		ECFUnconditionalActive,
       
  3264 	/** CF Busy, CF No Reply or CF Not Reachable is currently active. */
       
  3265 		ECFConditionalActive
       
  3266 		};
       
  3267 
       
  3268 	IMPORT_C void NotifyCallForwardingActive(TRequestStatus& aReqStatus, TMobileService& aServiceGroup, TMobilePhoneCFActive& aActiveType) const;
       
  3269 	
       
  3270 	/**
       
  3271 	Current status indicators for unconditional call forwarding.
       
  3272 	*/
       
  3273 	enum TCFUIndicatorStatus
       
  3274 		{
       
  3275 		/**
       
  3276 		CFU Indicator status unknown.
       
  3277 		*/
       
  3278 		KCFUIndicatorUnknown = 0x0,
       
  3279 		/**
       
  3280 		CFU Indicator status for Voice (TMobileServiceGroup EVoice).
       
  3281 		*/
       
  3282 		KCFUIndicatorVoice=0x01,
       
  3283 		/**
       
  3284 		CFU Indicator status for Fax (TMobileServiceGroup EFax).
       
  3285 		*/
       
  3286 		KCFUIndicatorFax=0x02,
       
  3287 		/**
       
  3288 		CFU Indicator status for Data Teleservices(TMobileServiceGroup EData).
       
  3289 		*/
       
  3290 		KCFUIndicatorData=0x04,
       
  3291 		/**
       
  3292 		CFU Indicator status for Sms (TMobileServiceGroup ESms).
       
  3293 		*/
       
  3294 		KCFUIndicatorSms=0x08,
       
  3295 		/**
       
  3296 		CFU Indicator status for Data Bearer Services(TMobileServiceGroup EDataBearer).
       
  3297 		*/
       
  3298 		KCFUIndicatorDataBearer=0x10
       
  3299 		};
       
  3300 
       
  3301 	typedef TUint32 TCFUIndicatorStatusFlags;
       
  3302 		
       
  3303 	class TMobilePhoneCFUIndicatorV3 : public TMultimodeType
       
  3304 	/**
       
  3305 	Contains indicator parameters for unconditional call forwarding.
       
  3306 	*/
       
  3307 		{
       
  3308 	public:
       
  3309 		IMPORT_C TMobilePhoneCFUIndicatorV3();
       
  3310 	public:
       
  3311 		/**
       
  3312 		Current setting for indicator status.
       
  3313 		Can contain a number of flags from RMobilePhone::TCFUIndicatorStatus.
       
  3314 		*/
       
  3315 		TCFUIndicatorStatusFlags iIndicator;		
       
  3316 		};
       
  3317 		
       
  3318 	typedef TPckg<TMobilePhoneCFUIndicatorV3> TMobilePhoneCFUIndicatorV3Pckg;
       
  3319 
       
  3320 	/**
       
  3321 	The MSP number contains the Profile Identity of the subscriber profile.
       
  3322 	The Profile Identity shall be any of the following enlisted.
       
  3323 	@see 3GPP TS 31.102 v7.4.1 section 4.2.64
       
  3324 	@see 3GPP TS 23.097 [36]
       
  3325 	*/
       
  3326 	enum TMultipleSubscriberProfileID
       
  3327 		{
       
  3328 		/**
       
  3329 		Profile Identity Unknown
       
  3330 		*/
       
  3331 		KProfileIdentityUnknown = 0x0,
       
  3332 		/**
       
  3333 		Profile Identity 1
       
  3334 		*/
       
  3335 		KProfileIdentityOne = 0x01,
       
  3336 		/**
       
  3337 		Profile Identity 2
       
  3338 		*/
       
  3339 		KProfileIdentityTwo = 0x02,
       
  3340 		/**
       
  3341 		Profile Identity 3
       
  3342 		*/
       
  3343 		KProfileIdentityThree = 0x04,
       
  3344 		/**
       
  3345 		Profile Identity 4
       
  3346 		*/
       
  3347 		KProfileIdentityFour = 0x08
       
  3348 		};
       
  3349 
       
  3350 	class TMobilePhoneCFUIndicatorV6 : public TMobilePhoneCFUIndicatorV3
       
  3351 	/**
       
  3352 	Contains the indicator parameters for unconditional call forwarding.
       
  3353 	The TMobilePhoneCFUIndicatorV6 supports MSP number(Multiple Subscriber Profile) and Call Forwarding Number.
       
  3354 	Upto four different profiles can be provisioned against a subscriber using the MSP feature.
       
  3355 	@see 3GPP TS 31.102 v7.4.1 section 4.2.64
       
  3356 	*/
       
  3357 		{
       
  3358 	public:
       
  3359 		IMPORT_C TMobilePhoneCFUIndicatorV6();
       
  3360 	public:
       
  3361 		/**
       
  3362 		@see RMoblie::TMobileAddress
       
  3363 		*/
       
  3364 		TMobileAddress iCFNumber;
       
  3365 		/**
       
  3366 		The profile IDs allow unambiguous identification of each profile. 
       
  3367 		This will allow the subscriber to select the preferred profile for outgoing calls and for subscriber actions. 
       
  3368 		For terminating calls the profile ID shall be part of the notification of the profile.
       
  3369 		*/
       
  3370 		TMultipleSubscriberProfileID iMultipleSubscriberProfileID;
       
  3371 		};
       
  3372 
       
  3373 	typedef TPckg<TMobilePhoneCFUIndicatorV6> TMobilePhoneCFUIndicatorV6Pckg;
       
  3374 
       
  3375 	IMPORT_C void GetCallForwardingIndicator(TRequestStatus& aReqStatus, TDes8& aIndicator) const;
       
  3376 
       
  3377 	/***********************************************************************************/
       
  3378 	//
       
  3379 	// Mobile Identity Service functional unit
       
  3380 	// 
       
  3381 	/***********************************************************************************/
       
  3382 
       
  3383 /** Phone ID services (CLIP/CNIP/CLIR).
       
  3384 
       
  3385 Modes: GSM/WCDMA */
       
  3386 	enum TMobilePhoneIdService
       
  3387 		{
       
  3388 	/** The identity service is unspecified */
       
  3389 		EIdServiceUnspecified,
       
  3390 	/** The caller's ID is presented to the called party. */
       
  3391 		EIdServiceCallerPresentation,
       
  3392 	/** The caller's ID is restricted to the called party. */
       
  3393 		EIdServiceCallerRestriction,
       
  3394 	/** The connected party's ID is presented to the calling party. */
       
  3395 		EIdServiceConnectedPresentation,
       
  3396 	/** The connected party's ID is restricted to the calling party. */
       
  3397 		EIdServiceConnectedRestriction,
       
  3398 	/** The caller's name is presented to the called party. */
       
  3399 		EIdServiceCallerName,
       
  3400 	/** The called party is presented with the caller's ID. This command enables a 
       
  3401 	called subscriber to get the called line identification of the called party 
       
  3402 	when receiving a mobile terminated call. - maps to +CDIP. */
       
  3403 		EIdServiceCalledPresentation
       
  3404 		};
       
  3405 
       
  3406 /** Service status of the Phone ID services (CLIP/CLIR/CNIP).
       
  3407 
       
  3408 Modes: GSM/WCDMA */
       
  3409 	enum TMobilePhoneIdServiceStatus
       
  3410 		{
       
  3411 	/** The interrogated Identity service is provisioned and active. This status is 
       
  3412 	used for all identity services and in the case of the CLIR service means that 
       
  3413 	it is permanently active with no subscription option set. */
       
  3414 		EIdServiceActivePermanent,
       
  3415 	/** This status is used for the CLIR service only and means that the service is 
       
  3416 	provisioned and active.
       
  3417 	
       
  3418 	The CLIR subscription option is set to "Temporary, default restricted", therefore 
       
  3419 	identity is always restricted unless over-ridden by the user during a call 
       
  3420 	set-up. */
       
  3421 		EIdServiceActiveDefaultRestricted,
       
  3422 	/** This status is used for the CLIR service only and means that the service is 
       
  3423 	provisioned and active.
       
  3424 	
       
  3425 	The CLIR subscription option is set to "Temporary, default allowed", therefore 
       
  3426 	identity is always allowed unless over-ridden by the user during a call set-up. */
       
  3427 		EIdServiceActiveDefaultAllowed,
       
  3428 	/** The interrogated Identity service is not provisioned. */
       
  3429 		EIdServiceNotProvisioned,
       
  3430 	/** The status of the interrogated Identity service is unknown. */
       
  3431 		EIdServiceUnknown
       
  3432 		};
       
  3433 
       
  3434 	// for use by client-side API code and TSY only
       
  3435 
       
  3436 	struct TIdServiceAndLocation
       
  3437 		{
       
  3438 		TMobilePhoneIdService iService;
       
  3439 		TMobileInfoLocation iLocation;
       
  3440 		};
       
  3441 
       
  3442 	/** This function member retrieves the current status of the identity service specified.
       
  3443 	
       
  3444 	The phone will retrieve this service status information from the location 
       
  3445 	specified by the client.
       
  3446 	
       
  3447 	If the client has requested EInfoLocationCache but there is no valid status 
       
  3448 	information in the cache then the request will return KErrNotFound.
       
  3449 	
       
  3450 	If the client has requested EInfoLocationCachePreferred, the network will 
       
  3451 	be interrogated if the cache is empty. Whenever the network is interrogated, 
       
  3452 	the cache will be refreshed with the information from the network.
       
  3453 	
       
  3454 	Use RTelSubSessionBase::CancelAsyncRequest(EMobilePhoneGetIdentityServiceStatus) 
       
  3455 	to cancel a previously placed asynchronous GetIdentityServiceStatus() request.
       
  3456 	
       
  3457 	@param aReqStatus On return, KErrNone if successful.
       
  3458 	@param aService The identity service to be queried.
       
  3459 	@param aStatus On return, the service status.
       
  3460 	@param aLocation The location to use. */
       
  3461 	IMPORT_C void GetIdentityServiceStatus(TRequestStatus& aReqStatus, TMobilePhoneIdService aService, TMobilePhoneIdServiceStatus& aStatus, TMobileInfoLocation aLocation = EInfoLocationCachePreferred) const;
       
  3462 	
       
  3463 	/**
       
  3464 	Identifies default service status for provisioned identity services.
       
  3465 	*/
       
  3466 	enum TMobilePhoneIdServiceSetting
       
  3467 		{
       
  3468 		/** Sets the default setting to network default (unknown). */
       
  3469 		EIdServiceNetworkDefault,
       
  3470 		/** Sets the default setting to presentation restricted. */
       
  3471 		EIdServicePresentationRestricted,
       
  3472 		/** Sets the default setting to presentation allowed. */
       
  3473 		EIdServicePresentationAllowed
       
  3474 		};
       
  3475 		
       
  3476 	IMPORT_C void SetIdentityServiceStatus(TRequestStatus& aReqStatus, const TMobilePhoneIdService aService, const TMobilePhoneIdServiceSetting aSetting) const;
       
  3477 	IMPORT_C void NotifyIdentityServiceStatus(TRequestStatus& aReqStatus, const TMobilePhoneIdService aService, TMobilePhoneIdServiceStatus& aStatus) const;
       
  3478 	IMPORT_C void NotifyIdentitySuppressionRejected(TRequestStatus& aReqStatus) const;
       
  3479 
       
  3480 	/***********************************************************************************/
       
  3481 	//
       
  3482 	// Mobile Call Barring Functional Unit
       
  3483 	//
       
  3484 	/***********************************************************************************/
       
  3485 
       
  3486 /** Mobile Phone Call Baring Conditions.
       
  3487 
       
  3488 Modes: Common */
       
  3489 	enum TMobilePhoneCBCondition
       
  3490 		{
       
  3491 	/** The barring program is unspecified */
       
  3492 		EBarUnspecified,
       
  3493 	/** All incoming calls to this subscriber are barred (BAIC). */
       
  3494 		EBarAllIncoming,
       
  3495 	/** All incoming calls to this subscriber are barred when roaming outside the home 
       
  3496 	PLMN country (BIC-roam). */
       
  3497 		EBarIncomingRoaming,
       
  3498 	/** All outgoing calls by this subscriber are barred (BAOC). */
       
  3499 		EBarAllOutgoing,
       
  3500 	/** All outgoing international calls by this subscriber are barred (BOIC). */
       
  3501 		EBarOutgoingInternational,
       
  3502 	/** All outgoing international calls except those directed to the home PLMN country 
       
  3503 	by this subscriber are barred (BOIC-ExHC). */
       
  3504 		EBarOutgoingInternationalExHC,
       
  3505 	/** All of above CB services. */
       
  3506 		EBarAllCases,
       
  3507 		EBarAllOutgoingServices,
       
  3508 		EBarAllIncomingServices
       
  3509 		};
       
  3510 
       
  3511 /** Mobile Phone Call Barring Status and Information.
       
  3512 
       
  3513 Modes: Common */
       
  3514 	enum TMobilePhoneCBStatus
       
  3515 		{
       
  3516 	/** The CB service is currently active and operative. */
       
  3517 		ECallBarringStatusActive,
       
  3518 	/** The CB service is currently deactivated or quiescent. */
       
  3519 		ECallBarringStatusNotActive,
       
  3520 	/** In GSM/WCDMA mode, the CB service is not provisioned. In CDMA mode, this value 
       
  3521 	has no meaning. */
       
  3522 		ECallBarringStatusNotProvisioned,
       
  3523 	/** In GSM/WCDMA mode, the CB service is not available in serving network. In CDMA
       
  3524 	mode, the CB service is not available in the phone. */
       
  3525 		ECallBarringStatusNotAvailable,
       
  3526 	/** The phone can not determine CB service status. */
       
  3527 		ECallBarringStatusUnknown
       
  3528 		};
       
  3529 
       
  3530 	
       
  3531 
       
  3532 	class TMobilePhoneCBInfoEntryV1 : public TMultimodeType
       
  3533 /** Defines information about the call barring service.
       
  3534 
       
  3535 @see CMobilePhoneCBList
       
  3536 @publishedPartner
       
  3537 @released 
       
  3538 */
       
  3539 		{
       
  3540 	public:
       
  3541 		void InternalizeL(RReadStream& aStream);
       
  3542 		void ExternalizeL(RWriteStream& aStream) const;
       
  3543 	public:
       
  3544 		IMPORT_C TMobilePhoneCBInfoEntryV1();
       
  3545 	public:
       
  3546 	/** The CB service of this list entry.
       
  3547 	
       
  3548 	Modes: Common
       
  3549 	
       
  3550 	@see TMobilePhoneCBCondition */
       
  3551 		TMobilePhoneCBCondition iCondition;
       
  3552 	/** The service group associated to this list entry.
       
  3553 	
       
  3554 	Modes: Common
       
  3555 	
       
  3556 	@see TMobileService */
       
  3557 		TMobileService iServiceGroup;
       
  3558 	/** The CB service status of this list entry.
       
  3559 	
       
  3560 	Modes: Common
       
  3561 	
       
  3562 	@see TMobilePhoneCBStatus */
       
  3563 		TMobilePhoneCBStatus iStatus;
       
  3564 		};
       
  3565 		
       
  3566 	class TMobilePhoneCBInfoEntryV3 : public TMobilePhoneCBInfoEntryV1
       
  3567 	/**
       
  3568 	V3 class extending TMobilePhoneCBInfoEntryV1 to add a comparison method parameter.
       
  3569 	*/
       
  3570 		{
       
  3571 	public:
       
  3572 		void InternalizeL(RReadStream& aStream);
       
  3573 		void ExternalizeL(RWriteStream& aStream) const;
       
  3574 	public:
       
  3575 		IMPORT_C TMobilePhoneCBInfoEntryV3();
       
  3576 	public:
       
  3577 		/**
       
  3578 		The comparison method associated with this CB entry.
       
  3579 		*/
       
  3580 		TUint8 iCompMethod;
       
  3581 		};
       
  3582 		
       
  3583 	class TMobilePhoneCBChangeV1 : public TMultimodeType
       
  3584 /** Mobile Phone Call Barring Change.
       
  3585 
       
  3586 @see SetCallBarringStatus() 
       
  3587 */
       
  3588 		{
       
  3589 	public:
       
  3590 		IMPORT_C TMobilePhoneCBChangeV1();
       
  3591 	public:
       
  3592 	/** The basic service group(s) to apply the CB status change to.
       
  3593 	
       
  3594 	@see TMobileService */
       
  3595 		TMobileService iServiceGroup;
       
  3596 	/** The service action for call barring.
       
  3597 	
       
  3598 	@see TMobilePhoneServiceAction */
       
  3599 		TMobilePhoneServiceAction iAction;
       
  3600 	/** Password required to perform the call barring service action.
       
  3601 	
       
  3602 	@see TMobilePassword */
       
  3603 		TMobilePassword iPassword;
       
  3604 		};
       
  3605 
       
  3606 	IMPORT_C void SetCallBarringStatus(TRequestStatus& aReqStatus, TMobilePhoneCBCondition aCondition, const TMobilePhoneCBChangeV1& aInfo) const;
       
  3607 	IMPORT_C void NotifyCallBarringStatusChange(TRequestStatus& aReqStatus, TMobilePhoneCBCondition& aCondition) const;
       
  3608 	
       
  3609 	class TMobilePhonePasswordChangeV1 : public TMultimodeType
       
  3610 /** Mobile phone password change.
       
  3611 
       
  3612 @see SetCallBarringPassword()
       
  3613 @see ChangeSecurityCode()
       
  3614 @publishedPartner
       
  3615 @released 
       
  3616 */
       
  3617 		{
       
  3618 	public:
       
  3619 		IMPORT_C TMobilePhonePasswordChangeV1();
       
  3620 	public:
       
  3621 	/** Old password.
       
  3622 	
       
  3623 	Modes: Common
       
  3624 	
       
  3625 	@see TMobilePassword */
       
  3626 		TMobilePassword iOldPassword;
       
  3627 	/** New password.
       
  3628 	
       
  3629 	Modes: Common
       
  3630 	
       
  3631 	@see TMobilePassword */
       
  3632 		TMobilePassword iNewPassword;
       
  3633 		};
       
  3634 
       
  3635 	IMPORT_C void SetCallBarringPassword(TRequestStatus& aReqStatus, const TMobilePhonePasswordChangeV1& aPassword) const;
       
  3636 
       
  3637 	class TMobilePhonePasswordChangeV2 : public TMobilePhonePasswordChangeV1
       
  3638 /** Mobile phone password change version 2. 
       
  3639 */
       
  3640 	{
       
  3641 	public:
       
  3642 		IMPORT_C TMobilePhonePasswordChangeV2();
       
  3643 	public:
       
  3644 	/** Verified password.
       
  3645 	
       
  3646 	Modes: Common
       
  3647 	
       
  3648 	@see TMobilePassword */
       
  3649 		TMobilePassword iVerifiedPassword;
       
  3650 	};
       
  3651 
       
  3652 /** A typedef'd packaged TMobilePhonePasswordChangeV2 passing through a generic 
       
  3653 API function member. */
       
  3654 	typedef TPckg<TMobilePhonePasswordChangeV2> TMobilePhonePasswordChangeV2Pckg;
       
  3655 
       
  3656 	IMPORT_C void SetSSPassword(TRequestStatus& aReqStatus, const TDesC8& aPassword, const TInt aService) const;
       
  3657 	
       
  3658 	IMPORT_C void GetCompMethodName(TRequestStatus& aReqStatus, TDes& aAlphaTag, const TUint8 aCmi) const;
       
  3659 
       
  3660 	/***********************************************************************************/
       
  3661 	//
       
  3662 	// Mobile Call Waiting Functional Unit
       
  3663 	//
       
  3664 	/***********************************************************************************/
       
  3665 
       
  3666 /** The mobile phone call waiting status.
       
  3667 
       
  3668 Modes: GSM/WCDMA */
       
  3669 	enum TMobilePhoneCWStatus
       
  3670 		{
       
  3671 	/** The CW service is currently active and operative. */
       
  3672 		ECallWaitingStatusActive,
       
  3673 	/** The CW service is currently deactivated or quiescent. */
       
  3674 		ECallWaitingStatusNotActive,
       
  3675 	/** The CW service is not provisioned. */
       
  3676 		ECallWaitingStatusNotProvisioned,
       
  3677 	/** The CW service is not available in the serving network. */
       
  3678 		ECallWaitingStatusNotAvailable,
       
  3679 	/** The phone can not determine CW service status. */
       
  3680 		ECallWaitingStatusUnknown
       
  3681 		};
       
  3682 
       
  3683 	
       
  3684 
       
  3685 	class TMobilePhoneCWInfoEntryV1 : public TMultimodeType
       
  3686 /** Defines information about the call waiting service.
       
  3687 
       
  3688 @see CMobilePhoneCWList 
       
  3689 */
       
  3690 		{
       
  3691 	public:
       
  3692 		void InternalizeL(RReadStream& aStream);
       
  3693 		void ExternalizeL(RWriteStream& aStream) const;
       
  3694 	public:
       
  3695 		IMPORT_C TMobilePhoneCWInfoEntryV1();
       
  3696 	public:
       
  3697 	/** The service group associated to this CW service list entry.
       
  3698 	
       
  3699 	Modes: GSM/WCDMA
       
  3700 	
       
  3701 	@see TMobileService */
       
  3702 		TMobileService iServiceGroup;
       
  3703 	/** The CW service status of this list entry.
       
  3704 	
       
  3705 	Modes: GSM/WCDMA
       
  3706 	
       
  3707 	@see TMobilePhoneCWStatus */
       
  3708 		TMobilePhoneCWStatus iStatus;
       
  3709 		};
       
  3710 
       
  3711 /** A typedef'd packaged TMobilePhoneCWInfoEntryV1 for passing through a generic 
       
  3712 API function member. */
       
  3713 	typedef TPckg<TMobilePhoneCWInfoEntryV1> TMobilePhoneCWInfoEntryV1Pckg;
       
  3714 
       
  3715 	IMPORT_C void SetCallWaitingStatus(TRequestStatus& aReqStatus, TMobileService aServiceGroup, TMobilePhoneServiceAction aAction) const;
       
  3716 	IMPORT_C void NotifyCallWaitingStatusChange(TRequestStatus& aReqStatus, TDes8& aCWStatus) const;
       
  3717 
       
  3718 	/***********************************************************************************/
       
  3719 	//
       
  3720 	// Mobile Call Completion Unit
       
  3721 	//
       
  3722 	/***********************************************************************************/
       
  3723 
       
  3724 /** The Call Completion Busy Subscriber status of the phone.
       
  3725 
       
  3726 Modes: GSM/WCDMA */
       
  3727 	enum TMobilePhoneCCBSStatus
       
  3728 		{
       
  3729 	/** User has CCBS provisioned and there is at least 1 (and up to 5) active CCBS 
       
  3730 	requests. */
       
  3731 		ECcbsActive,
       
  3732 	/** User has CCBS provisioned but there are currently no active CCBS requests. */
       
  3733 		ECcbsNotActive,
       
  3734 	/** User has not subscribed to the CCBS service. */
       
  3735 		ECcbsNotProvisioned,
       
  3736 	/** The CCBS service is not available in the serving network. */
       
  3737 		ECcbsNotAvailable,
       
  3738 	/** MS is unable to determine status of the CCBS service. */
       
  3739 		ECcbsUnknown
       
  3740 		};
       
  3741 
       
  3742 /** CCBS recall events.
       
  3743 
       
  3744 @see RMobilePhone::TMobilePhoneCCBSEntryV2 */
       
  3745 	enum TCCBSRecallEvent
       
  3746 		{
       
  3747 	/** Recall received. */
       
  3748 		ECcbsRecallReceived,
       
  3749 	/** Recall accepted. */
       
  3750 		ECcbsRecallAccepted,
       
  3751 	/** Recall refused. */
       
  3752 		ECcbsRecallRefused,
       
  3753 	/** Recall reason unspecified. */
       
  3754 		ECcbsRecallUnspecified
       
  3755 		};
       
  3756 
       
  3757 	
       
  3758 
       
  3759 	class TMobilePhoneCCBSEntryV1 : public TMultimodeType
       
  3760 /** Defines information about the call completion (CCBS) service.
       
  3761 
       
  3762 @see CMobilePhoneCcbsList
       
  3763 @publishedPartner
       
  3764 @released 
       
  3765 */
       
  3766 		{
       
  3767 	public:
       
  3768 		void InternalizeL(RReadStream& aStream);
       
  3769 		void ExternalizeL(RWriteStream& aStream) const;
       
  3770 	public:
       
  3771 		IMPORT_C TMobilePhoneCCBSEntryV1();
       
  3772 	public:
       
  3773 	/** The CCBS index - a number allocated by the network.
       
  3774 	
       
  3775 	Modes: GSM/WCDMA */
       
  3776 		TInt			iCcbsIndex;
       
  3777 	/** The basic service group (voice/data/fax) this CCBS request is applicable to.
       
  3778 	
       
  3779 	Modes: GSM/WCDMA
       
  3780 	
       
  3781 	@see TMobileService */
       
  3782 		TMobileService	iServiceGroup;
       
  3783 	/** The phone number of the remote party to whom the CCBS request is aimed.
       
  3784 	
       
  3785 	Modes: GSM/WCDMA
       
  3786 	
       
  3787 	@see TMobileAddress */
       
  3788 		TMobileAddress	iDestination;
       
  3789 
       
  3790 		};
       
  3791 
       
  3792 /** A typedef'd packaged TMobilePhoneCCBSEntryV1 for passing through a generic API 
       
  3793 function member. */
       
  3794 	typedef TPckg<TMobilePhoneCCBSEntryV1> TMobilePhoneCCBSEntryV1Pckg;
       
  3795 
       
  3796 
       
  3797 	class TMobilePhoneCCBSEntryV2 : public TMobilePhoneCCBSEntryV1
       
  3798 /** Defines information about the call completion (CCBS) service version 2. 
       
  3799 */
       
  3800 		{
       
  3801 	public:
       
  3802 		IMPORT_C	TMobilePhoneCCBSEntryV2();
       
  3803 	public:
       
  3804 		TCCBSRecallEvent	iEvent;
       
  3805 		}; 
       
  3806 	
       
  3807 /** A typedef'd packaged TMobilePhoneCCBSEntryV2 for passing through a generic API 
       
  3808 function member. */
       
  3809 	typedef TPckg<TMobilePhoneCCBSEntryV2> TMobilePhoneCCBSEntryV2Pckg;
       
  3810 	
       
  3811 	IMPORT_C void GetCCBSStatus(TRequestStatus& aReqStatus, TMobilePhoneCCBSStatus& aCcbsStatus, TMobileInfoLocation aLocation = EInfoLocationCachePreferred) const;
       
  3812 	IMPORT_C void NotifyCCBSStatusChange(TRequestStatus& aReqStatus, TMobilePhoneCCBSStatus& aCcbsStatus) const;
       
  3813 	IMPORT_C void DeactivateCCBS(TRequestStatus& aReqStatus, TInt aIndex) const;
       
  3814 	IMPORT_C void NotifyCCBSRecall(TRequestStatus& aReqStatus, TDes8& aCCBSEntry) const;
       
  3815 	IMPORT_C void AcceptCCBSRecall(TRequestStatus& aReqStatus, TInt aIndex, TName& aCallName) const;
       
  3816 	IMPORT_C TInt RefuseCCBSRecall(TInt aIndex) const;
       
  3817 
       
  3818 	/***********************************************************************************/
       
  3819 	//
       
  3820 	// Mobile Alternating Call Function Unit
       
  3821 	//
       
  3822 	/***********************************************************************************/
       
  3823 
       
  3824 /** Alternating Call Capabilities
       
  3825 
       
  3826 Modes: GSM */
       
  3827 	enum TMobilePhoneAlternatingCallCaps
       
  3828 		{
       
  3829 	/** Phone supports outgoing Voice/Data calls
       
  3830 	
       
  3831 	Modes: GSM */
       
  3832 		KCapsMOVoiceData = 0x00000001,
       
  3833 	/** Phone supports outgoing Voice Then Data calls.
       
  3834 	
       
  3835 	Modes: GSM */
       
  3836 		KCapsMOVoiceThenData = 0x00000002,
       
  3837 	/** Phone supports outgoing Voice/Fax calls.
       
  3838 	
       
  3839 	Modes: GSM/WCDMA */
       
  3840 		KCapsMOVoiceFax	= 0x00000004,
       
  3841 	/** Phone supports incoming Voice/Data calls.
       
  3842 	
       
  3843 	Modes: GSM */
       
  3844 		KCapsMTVoiceData = 0x00000008,
       
  3845 	/** Phone supports incoming Voice Then Data calls.
       
  3846 	
       
  3847 	Modes: GSM */
       
  3848 		KCapsMTVoiceThenData = 0x00000010,
       
  3849 	/** Phone supports incoming Voice/Fax calls
       
  3850 
       
  3851 	Modes: GSM/WCDMA */
       
  3852 		KCapsMTVoiceFax = 0x00000020
       
  3853 		};
       
  3854 
       
  3855 	IMPORT_C TInt GetAlternatingCallCaps(TUint32& aCaps) const;
       
  3856 	IMPORT_C void NotifyAlternatingCallCapsChange(TRequestStatus& aReqStatus, TUint32& aCaps) const;
       
  3857 
       
  3858 /** Alternating Call Mode.
       
  3859 
       
  3860 Modes: Common */
       
  3861 	enum TMobilePhoneAlternatingCallMode
       
  3862 		{
       
  3863 	/** The alternating call mode is unspecified
       
  3864 	
       
  3865 	Modes: Common */
       
  3866 		EAlternatingModeUnspecified,
       
  3867 	/** Next call will use a single bearer service - default setting
       
  3868 	
       
  3869 	Modes: Common */
       
  3870 		EAlternatingModeSingle,
       
  3871 	/** Next call will use voice/data alternating bearer service. 
       
  3872 	
       
  3873 	Modes: GSM */
       
  3874 		EAlternatingModeVoiceData,
       
  3875 	/** Next call will use voice then data alternating bearer service.
       
  3876 	
       
  3877 	Modes: GSM */
       
  3878 		EAlternatingModeVoiceThenData,
       
  3879 	/** Next call will use voice/fax alternating bearer service. 
       
  3880 	
       
  3881 	Modes: GSM/WCDMA */
       
  3882 		EAlternatingModeVoiceFax
       
  3883 		};
       
  3884 
       
  3885 	IMPORT_C TInt GetAlternatingCallMode(TMobilePhoneAlternatingCallMode& aMode, TMobileService& aFirstService) const;
       
  3886 	IMPORT_C void SetAlternatingCallMode(TRequestStatus& aReqStatus, TMobilePhoneAlternatingCallMode aMode, TMobileService aFirstService) const;
       
  3887 	IMPORT_C void NotifyAlternatingCallModeChange(TRequestStatus& aReqStatus, TMobilePhoneAlternatingCallMode& aMode,TMobileService& aFirstService) const;
       
  3888 
       
  3889 	/***********************************************************************************/
       
  3890 	//
       
  3891 	// Mobile Alternate Line Service Functional Unit
       
  3892 	//
       
  3893 	/***********************************************************************************/
       
  3894 
       
  3895 /** Alternate Line Primary settings.
       
  3896 
       
  3897 Modes: GSM */
       
  3898 	enum TMobilePhoneALSLine
       
  3899 		{
       
  3900 	/** Current ALS line selection is the "Primary" voice line. */
       
  3901 		EAlternateLinePrimary,
       
  3902 	/** Current ALS line selection is the "Auxiliary" voice line. */
       
  3903 		EAlternateLineAuxiliary,
       
  3904 	/** ALS is supported by ME and SIM, but the TSY can not determine which line is 
       
  3905 	currently selected. */
       
  3906 		EAlternateLineUnknown,
       
  3907 	/** The ME, SIM or serving network does not support ALS. */
       
  3908 		EAlternateLineNotAvailable
       
  3909 		};
       
  3910 
       
  3911 	IMPORT_C TInt GetALSLine(TMobilePhoneALSLine& aALSLine) const;
       
  3912 	IMPORT_C void SetALSLine(TRequestStatus& aReqStatus, TMobilePhoneALSLine aALSLine) const;
       
  3913 	IMPORT_C void NotifyALSLineChange(TRequestStatus& aReqStatus, TMobilePhoneALSLine& aALSLine) const;
       
  3914 
       
  3915 	/***********************************************************************************/	
       
  3916 	//
       
  3917 	// Mobile Network Security Functional Unit
       
  3918 	//
       
  3919 	/***********************************************************************************/
       
  3920 
       
  3921 /** Enumerated network security types.
       
  3922 
       
  3923 Mode: Common */
       
  3924 	enum TMobilePhoneNetworkSecurity
       
  3925 		{
       
  3926 	/** The encryption level is NONE.
       
  3927 	
       
  3928 	Mode: Common */
       
  3929 		ECipheringOff,
       
  3930 	/** The encryption level is GSM.(standard encryption algorithms for 2nd Generation 
       
  3931 	Mobile networks).
       
  3932 	
       
  3933 	Mode: GSM */
       
  3934 		ECipheringGSM,
       
  3935 	/** The encryption level is WCDMA.(standard encryption algorithms for 3rd Generation 
       
  3936 	Mobile networks).
       
  3937 	
       
  3938 	Mode: WCDMA */
       
  3939 		ECipheringWCDMA,
       
  3940 	/** The encryption level is CDMA.(standard encryption algorithms for 3rd Generation 
       
  3941 	Mobile networks).
       
  3942 	
       
  3943 	Mode: CDMA */
       
  3944 		ECipheringCDMA
       
  3945 		};
       
  3946 
       
  3947 	IMPORT_C void GetNetworkSecurityLevel(TRequestStatus& aReqStatus, TMobilePhoneNetworkSecurity& aSecurity) const;
       
  3948 	IMPORT_C void NotifyNetworkSecurityLevelChange(TRequestStatus& aReqStatus, TMobilePhoneNetworkSecurity& aSecurity) const;
       
  3949 	
       
  3950 	/**
       
  3951 	Indicators for whether encryption status of the current call should be displayed.
       
  3952 	*/
       
  3953 	enum TMobileCallCipheringIndicator
       
  3954 		{
       
  3955 		/**
       
  3956 		The ME indication displaying the encryption status of the current call should be off.
       
  3957 		*/
       
  3958 		ECipheringDisplayOff,
       
  3959 		/**
       
  3960 		The ME indication displaying the encryption status of the current call should be on.
       
  3961 		*/
       
  3962 		ECipheringDisplayOn 
       
  3963 		};
       
  3964 		
       
  3965     IMPORT_C void GetCipheringIndicatorStatus(TRequestStatus& aReqStatus, TMobileCallCipheringIndicator& aIndicatorStatus) const;
       
  3966     IMPORT_C void NotifyCipheringIndicatorStatus(TRequestStatus& aReqStatus, TMobileCallCipheringIndicator& aIndicatorStatus) const;
       
  3967 
       
  3968 	/***********************************************************************************/
       
  3969 	//
       
  3970 	// Mobile Cost Functional Unit
       
  3971 	//
       
  3972 	/***********************************************************************************/
       
  3973 
       
  3974 /** Call Cost Capabilities.
       
  3975 
       
  3976 Modes: GSM/WCDMA */
       
  3977 	enum TMobilePhoneCostCaps
       
  3978 		{
       
  3979 	/** Indicates that the phone supports calculation and display of current and accumulated 
       
  3980 	call cost on an information-only basis. (The AoCI service in GSM) 
       
  3981 	
       
  3982 	Modes: GSM/WCDMA */
       
  3983 		KCapsCostInformation = 0x00000001,
       
  3984 	/** Indicates that the phone supports calculation and display of current and accumulated 
       
  3985 	call cost in order to support the charging service. (The AoCC service in GSM). 
       
  3986 
       
  3987 
       
  3988 	Modes: Common */
       
  3989 		KCapsCostCharging = 0x00000002,
       
  3990 	/** Indicates that the phone supports clearing of cost meters (ACM or CCM) to zero.
       
  3991 	
       
  3992 	Modes: Common */
       
  3993 		KCapsClearCost = 0x00000004,
       
  3994 	/** Indicates that the phone supports setting the maximum allowed cost (ACMmax) 
       
  3995 	to a non-zero value. 
       
  3996 	
       
  3997 	Modes: Common */
       
  3998 		KCapsSetMaxCost = 0x00000008,
       
  3999 	/** Indicates that the phone supports setting the currency and price per unit.
       
  4000 	
       
  4001 	Modes: GSM/WCDMA */
       
  4002 		KCapsSetPuct = 0x00000010,
       
  4003 	/** Indicates that the phone currently has call cost information available that 
       
  4004 	the client can retrieve.
       
  4005 	
       
  4006 	Modes: Common */
       
  4007 		KCapsGetCost = 0x00000020,
       
  4008 	/** Indicates that the phone can notify the client when the call cost information 
       
  4009 	changes. 
       
  4010 	
       
  4011 	Modes: Common */
       
  4012 		KCapsNotifyCostChange = 0x00000040
       
  4013 		};
       
  4014 
       
  4015 	IMPORT_C TInt GetCostCaps(TUint32& aCaps) const;
       
  4016 	IMPORT_C void NotifyCostCapsChange(TRequestStatus& aReqStatus, TUint32& aCaps) const;
       
  4017 
       
  4018 /** Clear Cost Meter.
       
  4019 
       
  4020 Modes: Common */
       
  4021 	enum TMobilePhoneCostMeters
       
  4022 		{
       
  4023 	/** Clear the Current Call Meter. */
       
  4024 		EClearCCM,
       
  4025 	/** Clear the Accumulated Charge Meter. */
       
  4026 		EClearACM,
       
  4027 	/** Clear all cost meters */
       
  4028 		EClearAll
       
  4029 		};
       
  4030 
       
  4031 	IMPORT_C void ClearCostMeter(TRequestStatus& aReqStatus, TMobilePhoneCostMeters aMeter) const;
       
  4032 	IMPORT_C void SetMaxCostMeter(TRequestStatus& aReqStatus, TUint aUnits) const;
       
  4033 
       
  4034 	
       
  4035 	
       
  4036 	class  TMobilePhonePuctV1 : public TMultimodeType
       
  4037 /** Defines the contents of the price/unit and currency table (PUCT) on the SIM.
       
  4038 
       
  4039 @see TMobilePhoneCostInfoV1
       
  4040 @see SetPuct() 
       
  4041 */
       
  4042 		{
       
  4043 	public:
       
  4044 		IMPORT_C TMobilePhonePuctV1();
       
  4045 	public:
       
  4046 	/** The Price per Unit. This floating point value is used to adjust the pricing 
       
  4047 	units supplied by the network into real currency values. 
       
  4048 	
       
  4049 	Modes: GSM/WCDMA */
       
  4050 		TReal   iPricePerUnit;
       
  4051 	/** The three character currency indicator.
       
  4052 	
       
  4053 	Modes: GSM/WCDMA */
       
  4054 		TBuf<4> iCurrencyName;
       
  4055 		};
       
  4056 
       
  4057 /** A typedef'd packaged TMobilePhonePuctV1 for passing through a generic API function 
       
  4058 member. */
       
  4059 	typedef TPckg<TMobilePhonePuctV1> TMobilePhonePuctV1Pckg;
       
  4060 	
       
  4061 	IMPORT_C void SetPuct(TRequestStatus& aReqStatus, const TDesC8& aPuct) const;
       
  4062 	
       
  4063 /** Cost Information
       
  4064 
       
  4065 Modes: GSM/WCDMA */
       
  4066 	enum TMobilePhoneCostService
       
  4067 		{
       
  4068 	/** Phone supports call cost service but no calls are currently in progress so the 
       
  4069 	network support and user subscription is unknown. */
       
  4070 		ECostServiceUnknown,
       
  4071 	/** The network or the phone does not support any of the call cost services. The 
       
  4072 	call can be either in progress or not. If the user is subscribed to AoCI they 
       
  4073 	will be able to continue to make calls but will not see any charging information. 
       
  4074 	If the user is subscribed to AoCC then they will be prevented from making 
       
  4075 	chargeable calls. */
       
  4076 		ECostServiceNotAvailable,
       
  4077 	/** Call is in progress and a call cost service is active but the phone is unable 
       
  4078 	to determine whether it is an AoCI or AoCC service. */
       
  4079 		ECostServiceAvailable,
       
  4080 	/** Call is in progress and the call cost information (AoCI) service is currently 
       
  4081 	operating.
       
  4082 	
       
  4083 	Modes: GSM/WCDMA */
       
  4084 		ECostServiceInformation,
       
  4085 	/** Call is in progress and the call cost charging (AoCC) service is currently operating.
       
  4086 	
       
  4087 	Modes: GSM/WCDMA */
       
  4088 		ECostServiceCharging
       
  4089 		};
       
  4090 
       
  4091 	
       
  4092 
       
  4093 	class TMobilePhoneCostInfoV1 : public TMultimodeType
       
  4094 /** Defines the information related to current billing costs.
       
  4095 
       
  4096 @see GetCostInfo()
       
  4097 @see NotifyCostInfoChange() 
       
  4098 */
       
  4099 		{
       
  4100 	public:
       
  4101 		IMPORT_C TMobilePhoneCostInfoV1();
       
  4102 	public:
       
  4103 	/** The current status and type of call cost service.
       
  4104 	
       
  4105 	@see TMobilePhoneCostService */
       
  4106 		TMobilePhoneCostService iService;
       
  4107 	/** The current number of charging units in the Current Call Meter. This is set 
       
  4108 	to zero if reset by the user or at the start of call set-up attempt. */
       
  4109 		TUint iCCM;
       
  4110 	/** The current number of charging units in the Accumulated Call Meter. This equals 
       
  4111 	the accumulation of previous and current calls. */
       
  4112 		TUint iACM;
       
  4113 	/** The maximum number of charging units that the ACM can rise to before chargeable 
       
  4114 	calls are stopped. Equals zero if Service != ECostServiceCharging. */
       
  4115 		TUint iACMmax;
       
  4116 	/** The Price per Unit and Currency Table.
       
  4117 	
       
  4118 	@see TMobilePhonePuctV1 */
       
  4119 		TMobilePhonePuctV1 iPuct;
       
  4120 		};
       
  4121 
       
  4122 /** A typedef'd packaged TMobilePhoneCostInfoV1 for passing through a generic API
       
  4123 function member. */
       
  4124 	typedef TPckg<TMobilePhoneCostInfoV1> TMobilePhoneCostInfoV1Pckg;
       
  4125 
       
  4126 	IMPORT_C void GetCostInfo(TRequestStatus& aReqStatus, TDes8& aCostInfo) const;
       
  4127 	IMPORT_C void NotifyCostInfoChange(TRequestStatus& aReqStatus, TDes8& aCostInfo) const;
       
  4128 
       
  4129 	/***********************************************************************************/
       
  4130 	//
       
  4131 	// Mobile Security Functional Unit
       
  4132 	//
       
  4133 	/***********************************************************************************/
       
  4134 
       
  4135 /** Security Capabilities.
       
  4136 
       
  4137 Modes: Common */
       
  4138 	enum TMobilePhoneSecurityCaps
       
  4139 		{
       
  4140 	/** The phone supports an overall "phone device lock" which can be enabled or disabled. 
       
  4141 	If enabled, user must enter phone password before the phone can be used. When 
       
  4142 	this capability is set the phone will support get lock info, notify lock info 
       
  4143 	change and set lock setting for phone device lock.
       
  4144 	
       
  4145 	Modes: Common */
       
  4146 		KCapsLockPhone = 0x0000001,
       
  4147 	/** The phone supports locking the ICC (using the PIN1 security code), which can 
       
  4148 	be enabled or disabled. If enabled, the user must enter PIN1 code before the 
       
  4149 	ICC can be used. When this capability is set the phone will support get lock 
       
  4150 	info, notify lock info change and set lock setting for ICC lock. 
       
  4151 	
       
  4152 	Modes: Common */
       
  4153 		KCapsLockICC = 0x00000002,
       
  4154 	/** The phone supports the "phone to ICC lock" which can be enabled or disabled. 
       
  4155 	If enabled, at power-up the phone will check whether current ICC is the one 
       
  4156 	the phone is locked to or not. If not, then the user must enter the phone
       
  4157 	password before phone can be used with this ICC. When this capability is set 
       
  4158 	the phone will support get lock info, notify lock info change and set lock 
       
  4159 	setting for Phone-ICC lock. 
       
  4160 	
       
  4161 	Modes: Common */
       
  4162 		KCapsLockPhoneToICC = 0x00000004,
       
  4163 	/** The phone supports the "phone to first ICC lock" which can be enabled or disabled. 
       
  4164 	If enabled, at power-up the phone will check whether current ICC is the one 
       
  4165 	the phone is first locked to or not. If not, then user must enter the phone 
       
  4166 	password before the phone can be used with this ICC. When this capability 
       
  4167 	is set the phone will support get lock info, notify lock info change and set 
       
  4168 	lock setting for Phone-First ICC lock.
       
  4169 
       
  4170 	Modes: Common */
       
  4171 		KCapsLockPhoneToFirstICC = 0x00000008,
       
  4172 	/** The phone supports the "Over The Air" programming lock which can be enabled 
       
  4173 	or disabled. If enabled, the phone will prevent OTA programming by the network. 
       
  4174 	If disabled, the phone will allow OTA programming by the network. When this 
       
  4175 	capability is set the phone will support get lock info, notify lock info change 
       
  4176 	and set lock setting for OTA lock. 
       
  4177 	
       
  4178 	Modes: CDMA */
       
  4179 		KCapsLockOTA = 0x00000010,
       
  4180 	/** The phone supports access to the PIN 1 security code. When this capability is 
       
  4181 	set the phone will support verification of PIN1, unblocking PIN1, changing 
       
  4182 	PIN1 and notification of PIN1 required. 
       
  4183 	
       
  4184 	Modes: Common */
       
  4185 		KCapsAccessPin1 = 0x00000020,
       
  4186 	/** The phone supports access to the PIN 2 security code. When this capability is 
       
  4187 	set the phone will support verification of PIN2, unblocking PIN2, changing 
       
  4188 	PIN2 and notification of PIN2 required.
       
  4189 	
       
  4190 	Modes: GSM/WCDMA */
       
  4191 		KCapsAccessPin2 = 0x00000040,
       
  4192 	/** The phone supports access to the phone password security code. When this capability 
       
  4193 	is set the phone will support verification of the phone password, changing 
       
  4194 	the phone password and notification if the phone password is required. 
       
  4195 	
       
  4196 	Modes: Common */
       
  4197 		KCapsAccessPhonePassword = 0x00000080,
       
  4198 	/** The phone supports access to the SPC (Service Programming Code) security code. 
       
  4199 	This code may need to be verified before OTA can commence.
       
  4200 	
       
  4201 	Modes: CDMA */
       
  4202 		KCapsAccessSPC = 0x00000100,
       
  4203 	/** The phone supports access to the hidden key. When this capability is set the
       
  4204 	phone will support verification of HiddenKey. 
       
  4205 	
       
  4206 	Modes: WCDMA */
       
  4207 		KCapsAccessHiddenKey=0x00000200,
       
  4208 	/** The phone supports access to the USIM Application PIN. An Application PIN allows 
       
  4209 	access to any file on the UICC where it is referenced in the access rules.
       
  4210 	
       
  4211 	Modes: WCDMA */
       
  4212 		KCapsAccessUSIMAppPin=0x00000400,
       
  4213 	/** The phone supports access to the second USIM Application PIN. The second Application 
       
  4214 	PIN allows access to files (where it is referenced in the access rules) within 
       
  4215 	one USIM Application on the UICC. This is a local PIN.
       
  4216 	
       
  4217 	Modes: WCDMA */
       
  4218 		KCapsAccessUSIMAppSecondPin =0x00000800,
       
  4219 	/** The phone supports access to the Universal PIN. A Universal PIN is a PIN that 
       
  4220 	is used in a multi-application UICC environment to allow several USIM applications 
       
  4221 	to share one common PIN.
       
  4222 	
       
  4223 	Modes: WCDMA */
       
  4224 		KCapsAccessUniversalPin =0x00001000
       
  4225 		};
       
  4226 
       
  4227 	IMPORT_C TInt GetSecurityCaps(TUint32& aCaps) const;
       
  4228 	IMPORT_C void NotifySecurityCapsChange(TRequestStatus& aReqStatus, TUint32& aCaps) const;
       
  4229 
       
  4230 /** Lock Information.
       
  4231 
       
  4232 Modes: Common */
       
  4233 	enum TMobilePhoneLock
       
  4234 		{
       
  4235 	/** Lock the whole device. Phone lock password is required to unlock when this lock 
       
  4236 	is enabled. 
       
  4237 
       
  4238 	Modes: Common */
       
  4239 		ELockPhoneDevice,
       
  4240 	/** Lock PIN1 on the ICC. PIN1 security code is required to unlock when this lock 
       
  4241 	is enabled. 
       
  4242 	
       
  4243 	Modes: Common */
       
  4244 		ELockICC,
       
  4245 	/** Lock the phone to the current ICC inserted in the phone Phone lock password 
       
  4246 	is required to unlock when this lock is enabled.
       
  4247 	
       
  4248 	Modes: Common */
       
  4249 		ELockPhoneToICC,
       
  4250 	/** Lock the phone to the first ICC inserted in the phone. Phone lock password is 
       
  4251 	required to unlock when this lock is enabled.
       
  4252 	
       
  4253 	Modes: Common */
       
  4254 		ELockPhoneToFirstICC,
       
  4255 	/** Lock the OTA facility on the phone. SPC security code may be required to unlock 
       
  4256 	when this lock is enabled.
       
  4257 	
       
  4258 	Modes: CDMA */
       
  4259 		ELockOTA,
       
  4260 	/** Lock PIN2 on the ICC. PIN2 security code is required to unlock when this lock 
       
  4261 	is enabled.
       
  4262 	
       
  4263 	Modes: Common */
       
  4264 		ELockPin2,
       
  4265 	/** Lock the phonebook hidden entries on the phone. Hidden key security code may 
       
  4266 	be required to unlock when this lock is enabled.
       
  4267 	
       
  4268 	Modes: WCDMA */
       
  4269 		ELockHiddenKey,
       
  4270 	/** Lock the associated USIM Application. USIM Application PIN is required to unlock 
       
  4271 	when this lock is enabled.
       
  4272 	
       
  4273 	Modes: WCDMA */
       
  4274 		ELockUSimApp,
       
  4275 	/** Lock the associated USIM Application. The second USIM Application PIN is required 
       
  4276 	to unlock when this lock is enabled.
       
  4277 	
       
  4278 	Modes: WCDMA */
       
  4279 		ELockSecondUSimApp,
       
  4280 	/** Lock the associated USIM Application(s) that share this common lock. Universal 
       
  4281 	Pin is required to unlock when this lock is enabled.
       
  4282 	
       
  4283 	Modes: WCDMA */
       
  4284 		ELockUniversalPin,
       
  4285 	/** Lock for the NAM.  The SPC is required to unlock.
       
  4286 	
       
  4287 	Modes: CDMA */
       
  4288 		ELockNam
       
  4289 		};
       
  4290 
       
  4291 /** Phone lock status.
       
  4292 
       
  4293 Modes: Common */
       
  4294 	enum TMobilePhoneLockStatus
       
  4295 		{
       
  4296 	/** The status of the lock is unknown. */
       
  4297 		EStatusLockUnknown,
       
  4298 	/** Lock is closed - user can not access functionality governed by this lock until 
       
  4299 	user correctly enters associated security code. */
       
  4300 		EStatusLocked,
       
  4301 	/** Lock is open - user can access functionality governed by this lock */
       
  4302 		EStatusUnlocked,
       
  4303 		EStatusBlocked
       
  4304 		};
       
  4305 
       
  4306 /** The phone lock setting.
       
  4307 
       
  4308 Modes: Common */
       
  4309 	enum TMobilePhoneLockSetting
       
  4310 		{
       
  4311 	/** The setting of the lock is unknown
       
  4312 	
       
  4313 	Modes: Common */
       
  4314 		ELockSetUnknown,
       
  4315 	/** Lock is enabled - associated security code will be required to unlock the 
       
  4316 	lock, the next time the lock's status is EStatusLocked. 
       
  4317 	
       
  4318 	Modes: Common */
       
  4319 		ELockSetEnabled,
       
  4320 	/** Lock is disabled - so its status is always EStatusUnlocked.
       
  4321 	
       
  4322 	Modes: Common */
       
  4323 		ELockSetDisabled,
       
  4324 	/** Lock of the current Application is replaced by the Universal PIN. Only the 
       
  4325 	Universal PIN is allowed as a replacement.
       
  4326 
       
  4327 	Modes: WCDMA */
       
  4328 		ELockReplaced
       
  4329 		};
       
  4330 
       
  4331 	
       
  4332 
       
  4333 	class TMobilePhoneLockInfoV1 : public TMultimodeType
       
  4334 /** Defines the status of a phone lock.
       
  4335 
       
  4336 @see GetLockInfo()
       
  4337 @see NotifyLockInfoChange()
       
  4338 @publishedPartner
       
  4339 @released
       
  4340 */
       
  4341 		{
       
  4342 	public:
       
  4343 		IMPORT_C TMobilePhoneLockInfoV1();
       
  4344 	public:
       
  4345 	/** The current status of the lock.
       
  4346 	
       
  4347 	Modes: Common
       
  4348 	
       
  4349 	@see TMobilePhoneLockStatus */
       
  4350 		TMobilePhoneLockStatus iStatus;
       
  4351 	/** The current setting of the lock.
       
  4352 	
       
  4353 	Modes: Common
       
  4354 	
       
  4355 	@see TMobilePhoneLockSetting */
       
  4356 		TMobilePhoneLockSetting iSetting;
       
  4357 		};
       
  4358 
       
  4359 /** A typedef'd packaged TMobilePhoneLockInfoV1 for passing through a generic API 
       
  4360 function member. */
       
  4361 	typedef TPckg<TMobilePhoneLockInfoV1> TMobilePhoneLockInfoV1Pckg;
       
  4362 
       
  4363 	IMPORT_C void GetLockInfo(TRequestStatus& aReqStatus, TMobilePhoneLock aLock, TDes8& aLockInfo) const;
       
  4364 	IMPORT_C void NotifyLockInfoChange(TRequestStatus& aReqStatus, TMobilePhoneLock& aLock, TDes8& aLockInfo) const;
       
  4365 	IMPORT_C void SetLockSetting(TRequestStatus& aReqStatus, TMobilePhoneLock aLock, TMobilePhoneLockSetting aSetting) const;
       
  4366 
       
  4367 /** Change Security Code.
       
  4368 
       
  4369 Modes: Common */
       
  4370 	enum TMobilePhoneSecurityCode
       
  4371 		{
       
  4372 	/** PIN 1 code (between 4-8 digits).
       
  4373 
       
  4374 	Modes: Common */
       
  4375 		ESecurityCodePin1,
       
  4376 	/** PIN 2 code (between 4-8 digits)
       
  4377 	
       
  4378 	Modes: GSM/WCDMA */
       
  4379 		ESecurityCodePin2,
       
  4380 	/** PIN 1 unblocking code (always 8 digits).
       
  4381 	
       
  4382 	Modes: Common */
       
  4383 		ESecurityCodePuk1,
       
  4384 	/** PIN 2 unblocking code (always 8 digits)
       
  4385 	
       
  4386 	Modes: GSM/WCDMA */
       
  4387 		ESecurityCodePuk2,
       
  4388 	/** Password used for Phone-SIM Lock and Phone Device Lock (up to 8 digits) 
       
  4389 	
       
  4390 	Modes: Common */
       
  4391 		ESecurityCodePhonePassword,
       
  4392 	/** Service Programming Code (SPC)
       
  4393 	
       
  4394 	Modes: CDMA */
       
  4395 		ESecurityCodeSPC,
       
  4396 	/** Phonebook key to display the hidden entries.
       
  4397 	
       
  4398 	Modes: WCDMA */
       
  4399 		ESecurityHiddenKey,
       
  4400 	/** USIM Application PIN.
       
  4401 	
       
  4402 	Modes: WCDMA */
       
  4403 		ESecurityUSIMAppPin,
       
  4404 	/** Second USIM Application PIN.
       
  4405 	
       
  4406 	Modes: WCDMA */
       
  4407 		ESecuritySecondUSIMAppPin,
       
  4408 	/** Universal PIN.
       
  4409 	
       
  4410 	Modes: WCDMA */
       
  4411 		ESecurityUniversalPin,
       
  4412 	/** Universal PIN unblocking code (always 8 digits).
       
  4413 	
       
  4414 	Modes: Common */
       
  4415 		ESecurityUniversalPuk
       
  4416 		};
       
  4417 
       
  4418 	IMPORT_C void ChangeSecurityCode(TRequestStatus& aReqStatus, TMobilePhoneSecurityCode aType, const TMobilePhonePasswordChangeV1& aChange) const;
       
  4419 
       
  4420 	/** Defines the status of a security code.
       
  4421 
       
  4422 	@see GetSecurityCodeInfo()
       
  4423 	@see NotifySecurityCodeInfoChange()
       
  4424 	@publishedPartner
       
  4425 	@released
       
  4426 	*/
       
  4427 	class TMobilePhoneSecurityCodeInfoV5 : public TMultimodeType
       
  4428 		{
       
  4429 	public:
       
  4430 		IMPORT_C TMobilePhoneSecurityCodeInfoV5();
       
  4431 	public:
       
  4432 	/** Number of remaining security code entry attempts before the corresponding lock gets blocked
       
  4433 	
       
  4434 	Modes: Common
       
  4435 	*/
       
  4436 		TInt iRemainingEntryAttempts;
       
  4437 		};
       
  4438 	
       
  4439 	/** A typedef'd packaged TMobilePhoneSecurityCodeInfoV5 for passing through a generic API
       
  4440 	function member. */
       
  4441 	typedef TPckg<TMobilePhoneSecurityCodeInfoV5> TMobilePhoneSecurityCodeInfoV5Pckg;
       
  4442 	
       
  4443 	IMPORT_C void GetSecurityCodeInfo(TRequestStatus& aReqStatus, TMobilePhoneSecurityCode aSecurityCode, TDes8& aSecurityCodeInfo) const;
       
  4444 	IMPORT_C void NotifySecurityCodeInfoChange(TRequestStatus& aReqStatus, TMobilePhoneSecurityCode& aSecurityCode, TDes8& aSecurityCodeInfo) const;
       
  4445 
       
  4446 /** Notify Security Events.
       
  4447 
       
  4448 Modes: Common */
       
  4449 	enum TMobilePhoneSecurityEvent
       
  4450 		{
       
  4451 	/** The phone has detected that there is no ICC present. 
       
  4452 	
       
  4453 	Modes: Common */
       
  4454 		ENoICCFound,
       
  4455 	/** The phone has detected that the ICC is unusable. 
       
  4456 	
       
  4457 	Modes: Common */
       
  4458 		EICCTerminated,
       
  4459 	/** The phone requires PIN1 to be entered. 
       
  4460 	
       
  4461 	Modes: Common */
       
  4462 		EPin1Required,
       
  4463 	/** The phone requires PUK1 to be entered.
       
  4464 	
       
  4465 	Modes: Common */
       
  4466 		EPuk1Required,
       
  4467 	/** The phone requires PIN2 to be entered.
       
  4468 	
       
  4469 	Modes: GSM/WCDMA */
       
  4470 		EPin2Required,
       
  4471 	/** The phone requires PUK2 to be entered.
       
  4472 	
       
  4473 	Modes: GSM/WCDMA */
       
  4474 		EPuk2Required,
       
  4475 	/** The phone requires the Phone Password to be entered. 
       
  4476 	
       
  4477 	Modes: Common */
       
  4478 		EPhonePasswordRequired,
       
  4479 	/** The phone requires the SPC to be entered. 
       
  4480 	
       
  4481 	Modes: CDMA */
       
  4482 		ESPCRequired,
       
  4483 	/** The PIN1 verification procedure has passed. 
       
  4484 	
       
  4485 	Modes: Common */
       
  4486 		EPin1Verified,
       
  4487 	/** The PIN2 verification procedure has passed.
       
  4488 
       
  4489 	Modes: GSM/WCDMA */
       
  4490 		EPin2Verified,
       
  4491 	/** The PUK1 unblocking procedure has passed.
       
  4492 	
       
  4493 	Modes: Common */
       
  4494 		EPuk1Verified,
       
  4495 	/** The PUK2 unblocking procedure has passed. 
       
  4496 	
       
  4497 	Modes: GSM/WCDMA */
       
  4498 		EPuk2Verified,
       
  4499 	/** The Phone Password has been verified. 
       
  4500 	
       
  4501 	Modes: Common */
       
  4502 		EPhonePasswordVerified,
       
  4503 	/** The SPC verification procedure has passed.
       
  4504 	
       
  4505 	Modes: CDMA */
       
  4506 		ESPCVerified,
       
  4507 	/** The phone requires the phonebook hidden key to be entered.
       
  4508 	
       
  4509 	Modes: WCDMA */
       
  4510 		EHiddenKeyRequired,
       
  4511 	/** The phonebook hidden key procedure has passed.
       
  4512 	
       
  4513 	Modes: WCDMA */
       
  4514 		EHiddenKeyVerified,
       
  4515 	/** The phone requires the currently active USIM Application PIN to be entered.
       
  4516 	
       
  4517 	Modes: WCDMA */
       
  4518 		EUSIMAppPinRequired,
       
  4519 	/** The currently active USIM Application PIN procedure has passed.
       
  4520 	
       
  4521 	Modes: WCDMA */
       
  4522 		EUSIMAppPinVerified,
       
  4523 	/** The phone requires the currently active USIM Application second PIN to be entered.
       
  4524 	
       
  4525 	Modes: WCDMA */
       
  4526 		ESecondUSIMAppPinRequired,
       
  4527 	/** The currently active USIM Application second PIN procedure has passed.
       
  4528 	
       
  4529 	Modes: WCDMA */
       
  4530 		ESecondUSIMAppPinVerified,
       
  4531 	/** The phone requires the Universal PIN to be entered.
       
  4532 	
       
  4533 	Modes: WCDMA */
       
  4534 		EUniversalPinRequired,
       
  4535 	/** The currently active Universal PIN procedure has passed.
       
  4536 	
       
  4537 	Modes: WCDMA */
       
  4538 		EUniversalPinVerified,
       
  4539 	/** The Service Programming Code has been changed.
       
  4540 	
       
  4541 	Modes: CDMA */
       
  4542 		ESPCChanged,
       
  4543 	/** The phone requires Universal PUK to be entered.
       
  4544 	
       
  4545 	Modes: WCDMA */
       
  4546 		EUniversalPukRequired,
       
  4547 	/** The Universal PUK unblocking procedure has passed.
       
  4548 	
       
  4549 	Modes: WCDMA */
       
  4550 		EUniversalPukVerified
       
  4551 		};
       
  4552 
       
  4553 	IMPORT_C void NotifySecurityEvent(TRequestStatus& aReqStatus, TMobilePhoneSecurityEvent& aEvent) const;
       
  4554 
       
  4555 	// for use by client-side API code and TSY only
       
  4556 
       
  4557 	struct TCodeAndUnblockCode
       
  4558 		{
       
  4559 		TMobilePassword iCode;
       
  4560 		TMobilePassword iUnblockCode;
       
  4561 		};	
       
  4562 
       
  4563 	IMPORT_C void VerifySecurityCode(TRequestStatus& aReqStatus, TMobilePhoneSecurityCode aType,
       
  4564 		const TMobilePassword& aCode, const TMobilePassword& aUnblockCode) const;
       
  4565 	IMPORT_C TInt AbortSecurityCode(TMobilePhoneSecurityCode aType) const;
       
  4566 
       
  4567 	/***********************************************************************************/	
       
  4568 	// 
       
  4569 	// MobileMessageWaiting
       
  4570 	//
       
  4571 	/***********************************************************************************/
       
  4572 
       
  4573 /** Display indicators. */
       
  4574 	enum TMobilePhoneIndicatorDisplay
       
  4575 		{
       
  4576 	/** Display voicemail active. */
       
  4577 		KDisplayVoicemailActive = 0x01,
       
  4578 	/** Display fax active. */
       
  4579 		KDisplayFaxActive = 0x02,
       
  4580 	/** Display E-mail active. */
       
  4581 		KDisplayEmailActive = 0x04,
       
  4582 	/** Display other active. */
       
  4583 		KDisplayOtherActive = 0x08,
       
  4584 	/** Display Aux voicemail active. */
       
  4585 		KDisplayAuxVoicemailActive = 0x10,
       
  4586 	/** Display data active. */
       
  4587 		KDisplayDataActive = 0x20
       
  4588 		};
       
  4589 
       
  4590 	class TMobilePhoneMessageWaitingV1 : public TMultimodeType
       
  4591 /** Message Waiting Indicators. See 3GPP TS 31 102.
       
  4592 
       
  4593 @see GetIccMessageWaitingIndicators()
       
  4594 @see SetIccMessageWaitingIndicators()
       
  4595 @see NotifyIccMessageWaitingIndicatorsChange() 
       
  4596 */
       
  4597 		{
       
  4598 	public:
       
  4599 		IMPORT_C TMobilePhoneMessageWaitingV1();
       
  4600 	public:
       
  4601 	/** The flags for each indicator from TMobilePhoneIndicatorDisplay to specify whether 
       
  4602 	the indicator should be displayed or not. E.g. Messages of the specified type are waiting.
       
  4603 
       
  4604 	Modes: Common */
       
  4605 		TUint8	iDisplayStatus;
       
  4606 	/** The number of voicemail messages waiting for the "main" voice line.
       
  4607 	
       
  4608 	Modes: Common */
       
  4609 		TUint8	iVoiceMsgs;
       
  4610 	/** The number of voicemail messages waiting for the "auxiliary" voice line.
       
  4611 	
       
  4612 	Modes: GSM */
       
  4613 		TUint8	iAuxVoiceMsgs;
       
  4614 	/** The number of messages waiting for the data line.
       
  4615 	
       
  4616 	Modes: Common */
       
  4617 		TUint8	iDataMsgs;
       
  4618 	/** The number of messages waiting for the fax line.
       
  4619 	
       
  4620 	Modes: Common */
       
  4621 		TUint8	iFaxMsgs;
       
  4622 	/** The number of email messages waiting.
       
  4623 	
       
  4624 	Modes: WCDMA */
       
  4625 		TUint8	iEmailMsgs;
       
  4626 	/** Contains the number of "unspecified" messages waiting.
       
  4627 	
       
  4628 	Modes: WCDMA */
       
  4629 		TUint8	iOtherMsgs;
       
  4630 		};
       
  4631 
       
  4632 /** A typedef'd packaged TMobilePhoneMessageWaitingV1 for passing through a generic 
       
  4633 API function member. */
       
  4634 	typedef TPckg<TMobilePhoneMessageWaitingV1> TMobilePhoneMessageWaitingV1Pckg;
       
  4635 
       
  4636 	IMPORT_C void GetIccMessageWaitingIndicators(TRequestStatus& aReqStatus, TDes8& aMsgIndicators) const;
       
  4637 	IMPORT_C void SetIccMessageWaitingIndicators(TRequestStatus& aReqStatus, const TDesC8& aMsgIndicators) const;
       
  4638 	IMPORT_C void NotifyIccMessageWaitingIndicatorsChange(TRequestStatus& aReqStatus, TDes8& aMsgIndicators) const;
       
  4639 
       
  4640 	IMPORT_C void NotifyMessageWaiting(TRequestStatus& aReqStatus, TInt& aCount) const;
       
  4641 
       
  4642 	/***********************************************************************************/
       
  4643 	//
       
  4644 	// Mobile Fixed Dialling Numbers Functional Unit
       
  4645 	//
       
  4646 	/***********************************************************************************/
       
  4647 
       
  4648 /** Fixed Dialling Numbers Status.
       
  4649 
       
  4650 Modes: Common */
       
  4651 	enum TMobilePhoneFdnStatus
       
  4652 		{
       
  4653 	/** Fixed Dialling Number mode is supported but is not currently active. */
       
  4654 		EFdnNotActive,
       
  4655 	/** Fixed Dialling Number mode is supported and is currently active. Deactivating 
       
  4656 	FDN mode is supported. */
       
  4657 		EFdnActive,
       
  4658 	/** Fixed Dialling Number mode is supported and is permanently active. Deactivating 
       
  4659 	FDN mode is NOT supported with this SIM. */
       
  4660 		EFdnPermanentlyActive,
       
  4661 	/** Fixed Dialling Number mode is not supported by ME and/or SIM. */
       
  4662 		EFdnNotSupported,
       
  4663 	/** ME is currently unable to determine the status of FDN mode. */
       
  4664 		EFdnUnknown
       
  4665 		};
       
  4666 
       
  4667 	IMPORT_C TInt GetFdnStatus(TMobilePhoneFdnStatus& aFdnStatus) const;
       
  4668 	IMPORT_C void GetFdnStatus(TRequestStatus& aReqStatus, TMobilePhoneFdnStatus& aFdnStatus) const;
       
  4669 
       
  4670 /** Fixed Dialling Numbers Setting
       
  4671 
       
  4672 Modes: Common */
       
  4673 	enum TMobilePhoneFdnSetting
       
  4674 		{
       
  4675 	/** Activate the FDN service. */
       
  4676 		EFdnSetOn,
       
  4677 	/** Deactivate the FDN service. */
       
  4678 		EFdnSetOff
       
  4679 		};
       
  4680 
       
  4681 	IMPORT_C void SetFdnSetting(TRequestStatus& aReqStatus, TMobilePhoneFdnSetting aFdnSetting) const;
       
  4682 	IMPORT_C void NotifyFdnStatusChange(TRequestStatus& aReqStatus, TMobilePhoneFdnStatus& aFdnStatus) const;
       
  4683 
       
  4684 	/***********************************************************************************/
       
  4685 	//
       
  4686 	// Multicall bearer settings
       
  4687 	//
       
  4688 	/***********************************************************************************/
       
  4689 
       
  4690 	class TMobilePhoneMulticallSettingsV1 : public TMultimodeType
       
  4691 /** Multi call settings for version v1.0.
       
  4692 
       
  4693 @see GetMulticallParams()
       
  4694 @see NotifyMulticallParamsChange() 
       
  4695 @publishedPartner
       
  4696 @released*/
       
  4697 		{
       
  4698 	public:
       
  4699 		IMPORT_C TMobilePhoneMulticallSettingsV1();
       
  4700 	public:
       
  4701 	/** Maximum number of simultaneous CS bearers allowed - defined by the user. 
       
  4702 	
       
  4703 	Modes: WCDMA */
       
  4704 		TInt iUserMaxBearers;
       
  4705 	/** Maximum number of simultaneous bearers allowed - defined by the service provider.
       
  4706 	
       
  4707 	Modes: WCDMA */
       
  4708 		TInt iServiceProviderMaxBearers;
       
  4709 	/** Maximum number of simultaneous CS bearers supported by the network.
       
  4710 	
       
  4711 	Modes: WCDMA */
       
  4712 		TInt iNetworkSupportedMaxBearers;
       
  4713 	/** Maximum number of simultaneous CS bearers supported by the UE.
       
  4714 	
       
  4715 	Modes: WCDMA */
       
  4716 		TInt iUESupportedMaxBearers;
       
  4717 		};
       
  4718 
       
  4719 /** A typedef'd packaged TMobilePhoneMulticallSettingsV1 for passing through a generic 
       
  4720 API function member. */
       
  4721 	typedef TPckg<TMobilePhoneMulticallSettingsV1> TMobilePhoneMulticallSettingsV1Pckg;
       
  4722 
       
  4723 	IMPORT_C void GetMulticallParams(TRequestStatus& aReqStatus, TDes8& aMulticallParams) const;
       
  4724 	IMPORT_C void SetMulticallParams(TRequestStatus& aReqStatus, TInt aUserMaxBearers) const;
       
  4725 	IMPORT_C void NotifyMulticallParamsChange(TRequestStatus& aReqStatus, TDes8& aMulticallParams) const;
       
  4726 	
       
  4727 	enum TMobilePhoneMulticallIndicator
       
  4728 	/**
       
  4729 	Indicators for exceeding allowed multiple active bearers.
       
  4730 	*/
       
  4731 		{
       
  4732 		/** The maximum number of multiple active bearers allowed by the service provider has been exceeded. */
       
  4733 		EBearerNetworProviderExceeded,
       
  4734 		/** The maximum number of multiple active bearers allowed by the mobile user  has been exceeded. */
       
  4735 		EBearerUserExceeded
       
  4736 		};
       
  4737 		
       
  4738 	IMPORT_C void NotifyMulticallIndicatorChange(TRequestStatus& aReqStatus, TMobilePhoneMulticallIndicator& aMulticallIndicator) const;
       
  4739 
       
  4740 	/***********************************************************************************/
       
  4741 	//
       
  4742 	// MobileNextIncomingCall Functional Unit
       
  4743 	//
       
  4744 	/***********************************************************************************/
       
  4745 
       
  4746 /** Incoming Call Types.
       
  4747 
       
  4748 Modes: Common */
       
  4749 	enum TMobilePhoneIncomingCallType
       
  4750 		{
       
  4751 	/** MS will receive any type of incoming call.
       
  4752 	
       
  4753 	Modes: Common */
       
  4754 		EIncomingTypeNotSpecified,
       
  4755 	/** MS will request voice bearer for incoming calls.
       
  4756 	
       
  4757 	Modes: Common */
       
  4758 		EIncomingVoice,
       
  4759 	/** MS will request fax bearer for incoming calls 
       
  4760 	
       
  4761 	Modes: Common */
       
  4762 		EIncomingFax,
       
  4763 	/** MS will request data bearer for incoming calls
       
  4764 	
       
  4765 	Modes: Common */
       
  4766 		EIncomingData,
       
  4767 	/** MS will request a data bearer for use by a Multimedia CS call (voice fall back 
       
  4768 	is acceptable) for incoming calls.
       
  4769 	
       
  4770 	Modes: GSM/WCDMA */
       
  4771 		EIncomingMultimediaVoiceFallback,
       
  4772 	/** MS will request a data bearer for use by a Multimedia CS call (voice fall back 
       
  4773 	NOT acceptable) for incoming calls 
       
  4774 	
       
  4775 	Modes: GSM/WCDMA */
       
  4776 		EIncomingMultimediaNoFallback,
       
  4777 	/** The single numbering scheme call mode is alternating voice to fax.
       
  4778 	
       
  4779 	Modes: GSM/WCDMA */
       
  4780 		EIncomingAlternatingVoiceFax,
       
  4781 	/** The single numbering scheme call mode is alternating voice to data.
       
  4782 	
       
  4783 	Modes: GSM */
       
  4784 		EIncomingAlternatingVoiceData,
       
  4785 	/** The single numbering scheme call mode is alternating fax to voice.
       
  4786 	
       
  4787 	Modes: GSM */
       
  4788 		EIncomingAlternatingFaxVoice,
       
  4789 	/** The single numbering scheme call mode is alternating data to voice.
       
  4790 	
       
  4791 	Modes: GSM */
       
  4792 		EIncomingAlternatingDataVoice,
       
  4793 	/** The single numbering scheme call mode is alternating voice then data.
       
  4794 	
       
  4795 	Modes: GSM */
       
  4796 		EIncomingAlternatingVoiceThenData
       
  4797 		};
       
  4798 
       
  4799 	IMPORT_C void GetIncomingCallType(TRequestStatus& aReqStatus, TMobilePhoneIncomingCallType& aCallType, TDes8& aDataParams) const;
       
  4800 	IMPORT_C void SetIncomingCallType(TRequestStatus& aReqStatus, TMobilePhoneIncomingCallType aCallType, TDes8& aDataParams) const;
       
  4801 	IMPORT_C void NotifyIncomingCallTypeChange(TRequestStatus& aReqStatus, TMobilePhoneIncomingCallType& aCallType, TDes8& aDataParams) const;
       
  4802 
       
  4803 	/***********************************************************************************/
       
  4804 	//
       
  4805 	// User-To-User Signalling Functional Unit
       
  4806 	//
       
  4807 	/***********************************************************************************/
       
  4808 
       
  4809 /** UUS Settings Requests.
       
  4810 
       
  4811 Modes: GSM/WCDMA */
       
  4812 	enum TMobilePhoneUUSSetting         // UUS settings of the phone
       
  4813 		{
       
  4814 	/** UUS is not specified. */
       
  4815 		EIncomingUUSNotSpecified,
       
  4816 	/** MS will accept incoming UUS activation request. */
       
  4817 		EIncomingUUSAccepted,
       
  4818 	/** MS will reject incoming UUS activation request. */
       
  4819 		EIncomingUUSRejected
       
  4820 		};
       
  4821 
       
  4822 	IMPORT_C void GetUUSSetting(TRequestStatus& aReqStatus, TMobilePhoneUUSSetting& aSetting) const;
       
  4823 	IMPORT_C void SetUUSSetting(TRequestStatus& aReqStatus, TMobilePhoneUUSSetting aSetting) const;
       
  4824 	IMPORT_C void NotifyUUSSettingChange(TRequestStatus& aReqStatus, TMobilePhoneUUSSetting& aSetting) const;
       
  4825 	
       
  4826 	/***********************************************************************************/
       
  4827 	//
       
  4828 	// Mobile Smart Card Applications Functional Unit
       
  4829 	//
       
  4830 	/***********************************************************************************/
       
  4831 	
       
  4832 	
       
  4833 	enum { KSmartCardApplicationLabelMaxSize=32 };
       
  4834 	
       
  4835 	/** Smart card application info version v5.0. 
       
  4836 	Modes: Common
       
  4837 
       
  4838 	@see GetSmartCardApplicationInfo()
       
  4839 	@publishedPartner
       
  4840 	@released
       
  4841 	*/
       
  4842 	class TSmartCardApplicationInfoV5 : public TMultimodeType
       
  4843 		{
       
  4844 	public:
       
  4845 		IMPORT_C TSmartCardApplicationInfoV5();
       
  4846 	public:
       
  4847 		/** 
       
  4848 		Smart card application identifier.
       
  4849 		*/
       
  4850 		TAID iAID;
       
  4851 		/** 
       
  4852 		Smart card application label. 16 bit USC2 characters string provided by the application 
       
  4853 		provider to be shown to the user for information, e.g. operator name. It is 
       
  4854 		recommended by ETSI/3GPP spec that the application label does not exceed 32 
       
  4855 		bytes.
       
  4856 		
       
  4857 		The application label is optional. If no label is provided, the buffer should 
       
  4858 		be NULL.
       
  4859 		 */
       
  4860 		TBuf8<KSmartCardApplicationLabelMaxSize> iLabel;
       
  4861 		};
       
  4862 
       
  4863 	/**
       
  4864 	A typedef'd packaged TSmartCardApplicationInfoV5 for passing through a generic API 
       
  4865 	function member. 
       
  4866 	*/	
       
  4867 	typedef TPckg<TSmartCardApplicationInfoV5> TSmartCardApplicationInfoV5Pckg;
       
  4868 
       
  4869 	/**
       
  4870 	Specifies the max length of the buffer used to retrieve the smart
       
  4871 	card application's supported EAP method list.  Value 255 since EAP
       
  4872 	type list length fits into one byte (see table 5.1 of ETSI TS
       
  4873 	102.310 v6.2.0).
       
  4874 
       
  4875 	@see RMobilePhone::GetSmartCardApplicationInfo()
       
  4876 	@see RMobilePhone::TUiccApplicationEapInfoV6::iEapTypeList
       
  4877 	*/
       
  4878 	enum { KEapSupportedTypeListSize = 255 };
       
  4879 
       
  4880 	/**
       
  4881 	UICC application info version v6.0.  Is a
       
  4882 	TSmartCardApplicationInfoV5 object, but has an additional buffer
       
  4883 	(iEapTypeList) for retrieving a list supported EAP methods on the
       
  4884 	application.
       
  4885 
       
  4886 	Modes: GSM/WCDMA
       
  4887 
       
  4888 	@see RMobilePhone::GetSmartCardApplicationInfo()
       
  4889 	@publishedPartner
       
  4890 	@released
       
  4891 	*/
       
  4892 	class TUiccApplicationEapInfoV6 : public TSmartCardApplicationInfoV5
       
  4893 		{
       
  4894 	public:
       
  4895 		IMPORT_C TUiccApplicationEapInfoV6();
       
  4896 
       
  4897 	public:
       
  4898 		/**
       
  4899 		Application EAP support type list, defining the EAP methods
       
  4900 		supported by the UICC application (see RFC 3748 and
       
  4901 		http://www.iana.org/assignments/eap-numbers).
       
  4902 		
       
  4903 		As reference, also worth seeing section 5.2 of ETSI TS 102.310
       
  4904 		v6.2.0 and section 6.2 of RFC3748.
       
  4905 
       
  4906 		@see KETelSmartCardEapTypeMD5
       
  4907 		@see KETelSmartCardEapTypeTLS
       
  4908 		@see KETelSmartCardEapTypeSIM
       
  4909 		@see KETelSmartCardEapTypeAKA
       
  4910 		@see KETelSmartCardEapTypeTTLS
       
  4911 		*/
       
  4912 		TBuf8<KEapSupportedTypeListSize> iEapTypeList;	
       
  4913 		};
       
  4914 
       
  4915 	/**
       
  4916 	A typedef'd packaged TEapUiccApplicationInfoV6 for passing through
       
  4917 	a generic API function member.
       
  4918 
       
  4919 	@see RMobilePhone::GetSmartCardApplicationInfo()
       
  4920 	*/	
       
  4921 	typedef TPckg<TUiccApplicationEapInfoV6> TUiccApplicationEapInfoV6Pckg;
       
  4922 
       
  4923 	/**
       
  4924 	Smart card application notification events
       
  4925 	
       
  4926 	Modes: Common
       
  4927 	*/	
       
  4928 	enum TSmartCardApplicationEvent
       
  4929 		{
       
  4930 		/**
       
  4931 		Smart card application has been installed.
       
  4932 		*/
       
  4933 		EScApplicationInstalled,
       
  4934 		/**
       
  4935 		Smart card application has been removed.
       
  4936 		*/
       
  4937 		EScApplicationRemoved,
       
  4938 		/**
       
  4939 		Smart card application has been activated.
       
  4940 		*/
       
  4941 		EScApplicationActivated,
       
  4942 		/**
       
  4943 		Smart card application has been terminated.
       
  4944 		*/
       
  4945 		EScApplicationTerminated
       
  4946 		};
       
  4947 
       
  4948 	/**
       
  4949 	Smart card application status.
       
  4950 
       
  4951 	Modes: Common
       
  4952 	*/
       
  4953 	enum TSmartCardApplicationAction
       
  4954 		{
       
  4955 		/**
       
  4956 		Smart card application will be activated.
       
  4957 		*/
       
  4958 		EScApplicationActivate,
       
  4959 		/** 
       
  4960 		Smart card application will be terminated.
       
  4961 		*/
       
  4962 		EScTerminate
       
  4963 		};
       
  4964 
       
  4965 	/**
       
  4966 	Smart card application file types. For definitions see TS 102.221.
       
  4967 	
       
  4968 	Modes: Common
       
  4969 	*/		
       
  4970 	enum TScFileType
       
  4971 		{
       
  4972 		/**
       
  4973 		Smart card file type is unknown.
       
  4974 		*/
       
  4975 		EUnknown,
       
  4976 		/**
       
  4977 		Smart card file type is linear fixed. 
       
  4978 		
       
  4979 		This is a record-based file.
       
  4980 		*/
       
  4981 		ELinearFixed,
       
  4982 		/**
       
  4983 		Smart card file type is cyclic. 
       
  4984 		
       
  4985 		This is a record-based file.
       
  4986 		*/
       
  4987 		ECyclic,
       
  4988 		/**
       
  4989 		Smart card file type is transparent. 
       
  4990 		
       
  4991 		This is a binary file.
       
  4992 		*/
       
  4993 		ETransparent
       
  4994 		};
       
  4995 
       
  4996 	/**
       
  4997 	Typedef to hold a 2-byte file identifier.
       
  4998 	*/
       
  4999 	typedef TUint16 TScFileID;
       
  5000 
       
  5001 	/** Smart card application file info version v5.0.
       
  5002 	Modes: Common
       
  5003 
       
  5004 	@see GetScFileInfo()
       
  5005 	@publishedPartner
       
  5006 	@released
       
  5007 	*/
       
  5008 	class TScFileInfoV5 : public TMultimodeType
       
  5009 		{
       
  5010 	public:
       
  5011 		IMPORT_C TScFileInfoV5();
       
  5012 	public:
       
  5013 		/**
       
  5014 		Smart card file identifier.
       
  5015 		*/
       
  5016 		TScFileID iFileID;
       
  5017 		/**
       
  5018 		The type of the smart card file. Options are
       
  5019 		Linear Fixed, Cyclic or Transparent.
       
  5020 		*/
       
  5021 		TScFileType iType;
       
  5022 		/**
       
  5023 		Total length of the file.  As specified in TS 102.221 the maximum length of an EF is 0xFFF bytes.
       
  5024 		*/
       
  5025 		TInt iTotalLength;
       
  5026 		/**
       
  5027 		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.
       
  5028 		If file type is ETransparent then this value is unused and will be set to 0. 
       
  5029 		
       
  5030 		From TS 102.221 the maximum length of a record in an EF is 255 bytes.
       
  5031 		*/
       
  5032 		TInt iRecordLength;
       
  5033 		/**
       
  5034 		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.
       
  5035 		If file type is ETransparent then this value is unused and will be set to 0. 
       
  5036 		
       
  5037 		From TS 102.221 the maximum number of records in an EF is 254.
       
  5038 		*/
       
  5039 		TInt iNumberRecords;
       
  5040 		};
       
  5041 	
       
  5042 	
       
  5043 	/** A typedef'd packaged TScFileInfoV5 for passing through a generic API 
       
  5044 	function member. 
       
  5045 	*/
       
  5046 	typedef TPckg<TScFileInfoV5> TScFileInfoV5Pckg;
       
  5047 	
       
  5048 	/**
       
  5049 	This based on the maximum number of bytes in a command PDU 
       
  5050 	as defined in TS 102.221 however the actual path string is very unlikely to ever be this big.
       
  5051 	
       
  5052 	Modes: Common
       
  5053 	*/
       
  5054 	enum{ KMaxScFilePathLength = 256};
       
  5055 	
       
  5056 	/**
       
  5057 	A typedef'd buffer to hold the path to an EF file.  
       
  5058 	*/
       
  5059 	typedef TBuf8<KMaxScFilePathLength> TScFilePathReference;
       
  5060 	
       
  5061 	
       
  5062 	 /** 
       
  5063 	 Class that holds a smart card applications AID and associated file path string.
       
  5064 
       
  5065 	 Modes: Common
       
  5066 
       
  5067 	 @see GetScFileInfo()
       
  5068 	 @publishedPartner
       
  5069 	 @released
       
  5070 	 */
       
  5071 	 class TScFilePath
       
  5072 		{
       
  5073 	 public:
       
  5074 		IMPORT_C TScFilePath();
       
  5075      public:
       
  5076      	/** 
       
  5077      	AID of application. This may be empty implying the iPath is a path reference starting at the master file (MF).
       
  5078      	*/
       
  5079 		TAID iAID;
       
  5080 		/**
       
  5081 		Full path reference to file.  
       
  5082 		
       
  5083 		The iPath must define the file path using full path referencing. This is because the client does not know 
       
  5084 		what is the currently selected EF or DF and it is therefore necessary to select the file by full
       
  5085 		path referencing from the master file.  
       
  5086 		
       
  5087 		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.
       
  5088 		E.g. To reference the EF_DIR - iAID would be empty and iPath would be set to "2F00".
       
  5089 		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".
       
  5090 		
       
  5091 		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,
       
  5092 		In this situation the path reference may start with the implicit FID of the application DF (7FFF).  
       
  5093 		E.g.  The path to reference to the EF_SMS file in a USIM application using implicit ADF FID would 
       
  5094 		be "7FFF6F3C".
       
  5095 		
       
  5096 		See TS102.221 section 8.4.2 for more information.  
       
  5097 		*/
       
  5098 		TScFilePathReference iPath;
       
  5099 		};
       
  5100 		
       
  5101 	/** Smart card application file identifier and access offsets.  This class is used to identify a file and the 
       
  5102 	location in a file to either read or write. Inherits attributes from TScFilePath which provide the 
       
  5103 	parent AID and full path reference.
       
  5104 	
       
  5105 	Modes: Common
       
  5106 
       
  5107 	@see TScFilePath
       
  5108 	@see ReadScFile()
       
  5109 	@see UpdateScFile()
       
  5110 	@publishedPartner
       
  5111 	@released
       
  5112 	*/
       
  5113 	class TScFilePathWithAccessOffsets : public TScFilePath
       
  5114 		{
       
  5115 	public:
       
  5116 		IMPORT_C TScFilePathWithAccessOffsets();
       
  5117 	public:
       
  5118 		/**
       
  5119 		The type of the smart card file. Options are
       
  5120 		Linear Fixed, Cyclic or Transparent.
       
  5121 		*/
       
  5122 		TScFileType iType;
       
  5123 		/**
       
  5124 		If file type is ELinearFixed or ECyclic then this is the starting record index to read or update.
       
  5125 		This must be less than the number of records in the file.
       
  5126 
       
  5127 		If file type is ETransparent then this is the offset (in bytes) from the start of the transparent file to read or update.
       
  5128 		This must be less than the total file size.
       
  5129 		*/
       
  5130 		TUint iStartOffset;
       
  5131 		/**
       
  5132 		If the file type is ELinearFixed or ECyclic then this is unused.
       
  5133 		NOTE: A call to ReadScFile or UpdateScFile for a record based file type will only read or update
       
  5134 		one record as described in TS 102.221 READ RECORD and UPDATE RECORD.
       
  5135 
       
  5136 		If file type is ETransparent then this is the number of bytes to read or update.
       
  5137 		*/
       
  5138 		TUint iCount;
       
  5139 		};
       
  5140 
       
  5141 	IMPORT_C void EnumerateSmartCardApplications(TRequestStatus& aReqStatus, TUint& aCount) const;
       
  5142 	IMPORT_C void GetSmartCardApplicationInfo(TRequestStatus& aReqStatus, TUint aAppIndex, TDes8& aInfo) const;
       
  5143 	IMPORT_C void NotifySmartCardApplicationInfoChange(TRequestStatus& aReqStatus, TAID& aAID, TSmartCardApplicationEvent& aEvent) const;
       
  5144 	IMPORT_C void SetSmartCardApplicationStatus(TRequestStatus& aReqStatus, const TAID& aAID, TSmartCardApplicationAction aAppAction) const;
       
  5145 	IMPORT_C void GetScFileInfo(TRequestStatus& aReqStatus, const TScFilePath& aFilePathId, TDes8& aInfo) const;
       
  5146 	IMPORT_C void ReadScFile(TRequestStatus& aReqStatus, const TScFilePathWithAccessOffsets& aFilePathOffsets, TDes8& aReadBuffer) const;
       
  5147 	IMPORT_C void UpdateScFile(TRequestStatus& aReqStatus, const TScFilePathWithAccessOffsets& aFilePathOffsets, TDes8& aUpdateBuffer) const;
       
  5148 	
       
  5149 	/***********************************************************************************/
       
  5150 	//
       
  5151 	// Mobile USIM Applications Functional Unit
       
  5152 	//
       
  5153 	/***********************************************************************************/
       
  5154 
       
  5155 	enum { KUSimApplicationLabelMaxSize=32 };
       
  5156 
       
  5157 	IMPORT_C void EnumerateUSimApplications(TRequestStatus& aReqStatus, TInt& aCount, TAID& aActiveAID) const; //deprecated 9.1
       
  5158 
       
  5159 	class TUSimApplicationInfoV2 : public TMultimodeType
       
  5160 	/** USIM application information for version v2.0. 
       
  5161 		
       
  5162 	@deprecated 9.1 Use @see TSmartCardApplicationInfoV5 instead.
       
  5163 	*/
       
  5164 		{
       
  5165 	public:
       
  5166 		IMPORT_C TUSimApplicationInfoV2();
       
  5167 	public:
       
  5168 	/** USIM Application identifier.
       
  5169 
       
  5170 	Modes: WCDMA */
       
  5171 		TAID								iAID;
       
  5172 	/** USIM Application label. 16 bit USC2 characters string provided by the application 
       
  5173 	provider to be shown to the user for information, e.g. operator name. It is 
       
  5174 	recommended by ETSI/3GPP spec that the application label does not exceed 32 
       
  5175 	bytes.
       
  5176 	
       
  5177 	The application label is optional. If no label is provided, the buffer should 
       
  5178 	be NULL.
       
  5179 	
       
  5180 	Modes: WCDMA */
       
  5181 		TBuf8<KUSimApplicationLabelMaxSize> iLabel; 
       
  5182 	};
       
  5183 
       
  5184 	/** A typedef'd packaged TUSimApplicationInfoV2 for passing through a generic API 
       
  5185 	function member. 
       
  5186 
       
  5187 	@deprecated 9.1 Use @see TSmartCardApplicationInfoV5 instead.
       
  5188 	*/
       
  5189 	typedef TPckg<TUSimApplicationInfoV2> TUSimApplicationInfoV2Pckg;
       
  5190 
       
  5191 	IMPORT_C void GetUSimApplicationInfo(TRequestStatus& aReqStatus, TInt aUSimAppIndex, TDes8& aInfo) const; //deprecated 9.1
       
  5192 	IMPORT_C void NotifyUSimApplicationsInfoChange(TRequestStatus& aReqStatus, TInt& aCount, TAID& aActiveAID) const; //deprecated 9.1
       
  5193 
       
  5194 	/** USIM Application Status.
       
  5195 
       
  5196 	Modes: WCDMA 
       
  5197 
       
  5198 	@deprecated 9.1 Use @see TSmartCardApplicationAction instead.
       
  5199 	*/
       
  5200 	enum TUSimAppAction
       
  5201 		{
       
  5202 	/** USIM application will be activated.
       
  5203 	
       
  5204 	Modes: WCDMA */
       
  5205 		EUSimActivate,
       
  5206 	/** USIM application will be terminated.
       
  5207 	
       
  5208 	Modes: WCDMA */
       
  5209 		EUSimTerminate
       
  5210 		};
       
  5211 
       
  5212 	IMPORT_C void SetUSimApplicationStatus(TRequestStatus& aReqStatus, const TAID aAID, TUSimAppAction aUsimAppAction) const; //deprecated 9.1
       
  5213 
       
  5214 	/** USIM Application selection mode.
       
  5215 
       
  5216 	Mode: WCDMA */
       
  5217 	enum TUSimSelectionMode
       
  5218 		{
       
  5219 	/** USIM application is selected automatically by phone.
       
  5220 	
       
  5221 	Mode: WCDMA */
       
  5222 		EUSimSelectionAutomatic,
       
  5223 	/** USIM application is selected manually by user.
       
  5224 	
       
  5225 	Mode: WCDMA */
       
  5226 		EUSimSelectionManual
       
  5227 		};
       
  5228 
       
  5229 	IMPORT_C TInt SetUSimAppsSelectionMode(TUSimSelectionMode aUSimSelectionMode) const;
       
  5230 	IMPORT_C TInt GetUSimAppsSelectionMode(TUSimSelectionMode& aUSimSelectionMode) const;
       
  5231 	IMPORT_C void NotifyUSimAppsSelectionModeChange(TRequestStatus& aReqStatus, TUSimSelectionMode& aUSimSelectionMode) const;
       
  5232 	IMPORT_C void GetCurrentActiveUSimApplication(TRequestStatus& aReqStatus, TAID& aAID) const;
       
  5233 	
       
  5234 	/***********************************************************************************/
       
  5235 	//
       
  5236 	// Mobile MMS Functional Unit
       
  5237 	// 
       
  5238 	/***********************************************************************************/
       
  5239 	
       
  5240 	/** max size of MMS notification buffer. */
       
  5241 	enum{KMaxMmsNotification = 253};
       
  5242 	
       
  5243 	/**
       
  5244 	Identifies current status of MMS.
       
  5245 	*/
       
  5246 	enum TMmsStatus
       
  5247 		{
       
  5248 		/**
       
  5249 		The MMS has not been retrieved.
       
  5250 		*/
       
  5251 		EMmsNotRetrieved,
       
  5252 		/**
       
  5253 	    The MMS has been retrieved.
       
  5254 	    */
       
  5255 		EMmsRetrieved,
       
  5256 		/**
       
  5257 		The MMS has been rejected.
       
  5258 		*/
       
  5259 		EMmsRejected,
       
  5260 		/**
       
  5261 		The MMS has been forwarded.
       
  5262 		*/
       
  5263 		EMmsforwarded
       
  5264 		};
       
  5265 
       
  5266 	/** 
       
  5267 	MMS Implementation.
       
  5268 	*/
       
  5269 	enum TMmsImplementation
       
  5270 		{
       
  5271 		/**
       
  5272 		Unknown implementation for MMS.
       
  5273 		*/
       
  5274 		KMmsImplUnknwown=0x00,
       
  5275 		/**
       
  5276 		Wap implementation for MMS.
       
  5277 		*/
       
  5278 		KWapImplementation=0x01
       
  5279 		};
       
  5280 	
       
  5281 	/**
       
  5282 	MMS Connectivity settings.
       
  5283 	*/
       
  5284 	enum TMmsConnParams
       
  5285 		{
       
  5286 		/**
       
  5287 		MMS User Preferences.
       
  5288 		*/
       
  5289 		EUserPreferences,
       
  5290 		/**
       
  5291 		MMS Issuer Connectivity Parameters.
       
  5292 		*/
       
  5293 		EIssuerConnParams,
       
  5294 		/**
       
  5295 		MMS User Connectivity Parameters.
       
  5296 		*/
       
  5297 		EUserConnParams
       
  5298 		};
       
  5299 
       
  5300 	/**
       
  5301 	MMS field Id tags.
       
  5302 	*/
       
  5303 	enum TMobileMMSFieldTags
       
  5304 		{
       
  5305 		/**
       
  5306 		Tag id for MMS connectivity parameters.
       
  5307 		*/
       
  5308 		ETagMmsConnParams=0xAB,
       
  5309 		/**
       
  5310 		Tag id for MMS Implementation.
       
  5311 		*/
       
  5312 		ETagMmsImpl=0x80,
       
  5313 		/**
       
  5314 		Tag id for MMS Relay/Server.
       
  5315 		*/
       
  5316 		ETagMmsServer=0x81,
       
  5317 		/**
       
  5318 		Tag id for Interface to Core Network and Bearer.
       
  5319 		*/
       
  5320 		ETagMmsBearerIE=0x82,
       
  5321 		/**
       
  5322 		Tag id for Gateway.
       
  5323 		*/
       
  5324 		ETagMmsGateway=0x83 	  
       
  5325 		};
       
  5326 		
       
  5327 	class TMmsNotificationV3 : public TMultimodeType
       
  5328 	/**
       
  5329 	Class containing MMS notification paramters.
       
  5330 	*/
       
  5331 		{
       
  5332 		public :
       
  5333 			IMPORT_C TMmsNotificationV3();
       
  5334 		public :
       
  5335 			/**
       
  5336 			Free/Used space.
       
  5337 			*/
       
  5338 			TBool iSpace;
       
  5339 			/**
       
  5340 			Notification read/not read.
       
  5341 			*/
       
  5342 			TBool iNotification;
       
  5343 			/**
       
  5344 			MMS status.
       
  5345 			*/
       
  5346 			TMmsStatus iMmsStatus;
       
  5347 			/**
       
  5348 			MMS implementation.
       
  5349 			*/
       
  5350 			TMmsImplementation iImplementation;
       
  5351 			/**
       
  5352 			MMS notification buffer.
       
  5353 			*/
       
  5354 			TBuf8<KMaxMmsNotification> iNotify;
       
  5355 		};
       
  5356 	
       
  5357 	typedef TPckg<TMmsNotificationV3> TMmsNotificationV3Pckg;
       
  5358 
       
  5359 	//	MMS notification 	
       
  5360 	IMPORT_C void NotifyMmsUpdate(TRequestStatus& aReqStatus, TDes8& aNotification) const;
       
  5361 	IMPORT_C void SetMmsUserConnParams(TRequestStatus& aReqStatus, TDes8& aConnectivity) const;
       
  5362 	IMPORT_C void SetMmsUserPreferences(TRequestStatus& aReqStatus, TDes8& aPreferences) const;
       
  5363 	IMPORT_C void GetMmsConfig(TRequestStatus& aReqStatus, const TMmsConnParams aType, TDes8& aConnectivity) const;
       
  5364 	IMPORT_C void NotifyMmsConfig(TRequestStatus& aReqStatus, const TMmsConnParams aType, TDes8& aConnectivity) const;
       
  5365 	
       
  5366 	/***********************************************************************************/
       
  5367 	//
       
  5368 	// Mobile MailBox Numbers Functional Unit 
       
  5369 	// 
       
  5370 	/***********************************************************************************/
       
  5371 
       
  5372 	class TMobilePhoneVoicemailIdsV3 : public TMultimodeType
       
  5373 	/**
       
  5374 	Contains mailbox numbers.
       
  5375 	*/
       
  5376 		{
       
  5377 		public :
       
  5378 			IMPORT_C TMobilePhoneVoicemailIdsV3();
       
  5379 		public :
       
  5380 			/**
       
  5381 			Phonebook entry for "voicemail" mailbox number.
       
  5382 			*/
       
  5383 			TUint8	iVoice;
       
  5384 			/** 
       
  5385 			Phonebook entry for "data" mailbox number.
       
  5386 			*/
       
  5387 			TUint8	iData;
       
  5388 			/**
       
  5389 			Phonebook entry for "fax" mailbox number.
       
  5390 			*/
       
  5391 			TUint8	iFax;
       
  5392 			/**
       
  5393 			Phonebook entry for "other" mailbox number.
       
  5394 			*/
       
  5395 			TUint8	iOther;
       
  5396 		};
       
  5397 	
       
  5398 	typedef TPckg<TMobilePhoneVoicemailIdsV3> TMobilePhoneVoicemailIdsV3Pckg;
       
  5399 
       
  5400 	IMPORT_C void GetMailboxNumbers(TRequestStatus& aReqStatus, TDes8& aMailBox) const;
       
  5401 	IMPORT_C void NotifyMailboxNumbersChange(TRequestStatus& aReqStatus, TDes8& aMailBox) const;
       
  5402 
       
  5403 	/***********************************************************************************/
       
  5404 	//
       
  5405 	// Mobile APN Control List Functional Unit
       
  5406 	// 
       
  5407 	/***********************************************************************************/	
       
  5408 	
       
  5409 	enum { KMaxApnName = 100 };
       
  5410 	
       
  5411 	class TAPNEntryV3 : public TMultimodeType
       
  5412 	/**
       
  5413 	Contains parameters for an Access Point Name (APN) entry contained 
       
  5414 	within the Access Control List EFacl file in the UICC.
       
  5415 	*/
       
  5416 		{
       
  5417 	public:
       
  5418 		IMPORT_C TAPNEntryV3();
       
  5419 	public:
       
  5420 		/**
       
  5421 		GGSN DNS name.
       
  5422 		*/
       
  5423 		TBuf8<KMaxApnName> iApn;		
       
  5424 		};
       
  5425 		
       
  5426 	typedef TPckg<TAPNEntryV3> TAPNEntryV3Pckg;
       
  5427 	
       
  5428 	IMPORT_C void EnumerateAPNEntries(TRequestStatus& aReqStatus, TUint32 &aIndex) const;
       
  5429 	IMPORT_C void GetAPNname(TRequestStatus& aReqStatus, const TUint32 aIndex, TDes8& aAPN) const;
       
  5430 	IMPORT_C void AppendAPNName(TRequestStatus& aReqStatus, const TDes8& aAPN) const;
       
  5431 	IMPORT_C void DeleteAPNName(TRequestStatus& aReqStatus, TUint32 aIndex) const; 
       
  5432 	IMPORT_C void NotifyAPNListChanged(TRequestStatus& aReqStatus) const;
       
  5433 
       
  5434 	enum TAPNControlListServiceStatus {
       
  5435 		/**
       
  5436 		The APN control list service is disabled.
       
  5437 		*/
       
  5438 		EAPNControlListServiceDisabled,
       
  5439 		/**
       
  5440 		The APN control list service is enabled.
       
  5441 		*/
       
  5442 		EAPNControlListServiceEnabled
       
  5443 	};
       
  5444 
       
  5445 	IMPORT_C void SetAPNControlListServiceStatus(TRequestStatus& aReqStatus, TAPNControlListServiceStatus aAPNControlListServiceStatus) const;
       
  5446 	IMPORT_C void GetAPNControlListServiceStatus(TRequestStatus& aReqStatus, TAPNControlListServiceStatus& aAPNControlListServiceStatus) const;
       
  5447 	IMPORT_C void NotifyAPNControlListServiceStatusChange(TRequestStatus& aReqStatus, TAPNControlListServiceStatus& aAPNControlListServiceStatus) const;
       
  5448 
       
  5449 	/***********************************************************************************/
       
  5450 	//
       
  5451 	// Retrieve Total Air Time Duration Functional Unit
       
  5452 	//
       
  5453 	/***********************************************************************************/
       
  5454 	IMPORT_C TInt GetAirTimeDuration(TTimeIntervalSeconds& aTime) const;
       
  5455 	IMPORT_C void NotifyAirTimeDurationChange(TRequestStatus& aReqStatus,TTimeIntervalSeconds& aTime) const;
       
  5456 	/***********************************************************************************/
       
  5457 	//
       
  5458 	// Terminate All Calls
       
  5459 	//
       
  5460 	/***********************************************************************************/
       
  5461 	IMPORT_C void TerminateAllCalls(TRequestStatus& aReqStatus) const;
       
  5462 	
       
  5463 	/***********************************************************************************/
       
  5464 	//
       
  5465 	// Auto Redial Functional Unit
       
  5466 	//
       
  5467 	/***********************************************************************************/
       
  5468 	IMPORT_C void ClearBlacklist(TRequestStatus& aReqStatus) const;
       
  5469 
       
  5470 	/***********************************************************************************/
       
  5471 	//
       
  5472 	// Mobile Personalisation Functional Unit
       
  5473 	//
       
  5474 	/***********************************************************************************/
       
  5475 	
       
  5476 	/**
       
  5477 	Indentifies the personalisation scheme capabilities of the UICC/ME.
       
  5478 	*/
       
  5479 	enum TMobilePhonePersonalisationCaps
       
  5480 		{
       
  5481 		/**
       
  5482 		UICC/ME personalisation based on network (MCC, MNC) information is possible.
       
  5483 		*/
       
  5484 		KCapsPersonalisedNetwork=0x01,
       
  5485 		/**
       
  5486 		UICC/ME personalisation based on network (MCC, MNC, IMSI network code group) information is possible.
       
  5487 		*/
       
  5488 		KCapsPersonalisedNetworkSub=0x02,
       
  5489 		/**
       
  5490 		UICC/ME personalisation based on network (MCC, MNC, EFGID1, EFCNL) information is possible.
       
  5491 		*/
       
  5492 		KCapsPersonalisedServiceProvider=0x04,
       
  5493 		/**
       
  5494 		UICC/ME personalisation based on network (MCC, MNC, EFGID1, EFGID2, EFCNL) information is possible.
       
  5495 		*/
       
  5496 		KCapsPersonalisedCorporate=0x08,
       
  5497 		/**
       
  5498 		UICC/ME personalisation based on (IMSI SIM/USIM code group) information is possible.
       
  5499 		*/
       
  5500 		KCapsPersonalisedUSim=0x10
       
  5501 		};
       
  5502 		
       
  5503 	/**
       
  5504 	Identifies the current personalisation schemes that are active. 
       
  5505 	*/
       
  5506 	enum TMobilePhonePersonalisationScheme
       
  5507 		{
       
  5508 		/**
       
  5509 		The ME is personalised under the network scheme.
       
  5510 		*/
       
  5511 		KPersonalisedNetwork=0x01,
       
  5512 		/**
       
  5513 		The ME is personalised under the network sub scheme.
       
  5514 		*/
       
  5515 		KPersonalisedNetworkSub=0x02,
       
  5516 		/**
       
  5517 		The ME is personalised under the service provider scheme.
       
  5518 		*/
       
  5519 		KPersonalisedServiceProvider=0x04,
       
  5520 		/**
       
  5521 		The ME is personalised under the corprorate scheme.
       
  5522 		*/
       
  5523 		KPersonalisedCorporate=0x08,
       
  5524 		/**
       
  5525 		The ME is personalised under the  SIM/USIM scheme.
       
  5526 		*/
       
  5527 		KPersonalisedUSim=0x10	
       
  5528 		};
       
  5529 
       
  5530 	/**
       
  5531 	Identifies the personalisation scheme to be set.
       
  5532 	*/
       
  5533 	enum TMobilePhonePersonalisation
       
  5534 		{
       
  5535 		/**
       
  5536 		Personalise the ME using the network scheme.
       
  5537 		*/
       
  5538 		EPersonaliseNetwork,
       
  5539 		/**
       
  5540 		Personalise the ME using the network sub scheme.
       
  5541 		*/
       
  5542 		EPersonaliseNetworkSub,
       
  5543 		/**
       
  5544 		Personalise the ME using the service provider scheme.
       
  5545 		*/
       
  5546 		EPersonaliseServiceProvider,
       
  5547 		/**
       
  5548 		Personalise the ME using the corporate scheme.
       
  5549 		*/
       
  5550 		EPersonaliseCorporate,
       
  5551 		/**
       
  5552 		Personalise the ME using the SIM/USIM scheme.
       
  5553 		*/
       
  5554 		EPersonaliseUsim
       
  5555 		};
       
  5556 		
       
  5557 	IMPORT_C TInt GetPersonalisationCaps(TUint32& aCaps) const;
       
  5558 	IMPORT_C void GetPersonalisationStatus(TRequestStatus& aReqStatus, TUint32& aPersSchemes) const;
       
  5559 	IMPORT_C void SetPersonalisationStatus(TRequestStatus& aReqStatus, const TMobilePhonePersonalisation aPersSchemes, const TDes& aPersCode) const;
       
  5560 	
       
  5561 	/***********************************************************************************/
       
  5562 	//
       
  5563 	// Etel 3rd Party v1.0 Parameter classes
       
  5564 	//
       
  5565 	/***********************************************************************************/
       
  5566 	
       
  5567 	class TEtel3rdPartyMobileNetworkInfoV1 : public TMultimodeType
       
  5568 	/**
       
  5569 	Defines the parameters used to set-up of a call originated from an ETel 3rd Party client.
       
  5570 
       
  5571 	TEtel3rdPartyMobileNetworkInfoV1 was used to give an indication to the TSY of where the
       
  5572 	request was originating from; i.e. if the request is from an application using the ISV
       
  5573 	API or ETel API, which allowed the TSY to make a decision based on the origin.  This
       
  5574 	data type also provided further protection by not including any location information
       
  5575 	parameters.  With PlatSec being introduced in v9.0, there was no need to use this data
       
  5576 	structure, as each API is policed with the adequate PlatSec capabilities.  Therefore,
       
  5577 	in v9.0 TEtel3rdPartyMobileNetworkInfoV1 was deprecated and removed from the ETel ISV
       
  5578 	(ETel3rdParty) implementation.
       
  5579 
       
  5580 	TEtel3rdPartyMobileNetworkInfoV1 was only used internally by the ETel ISV API when calls
       
  5581 	are made to RMobilePhone::GetCurrentNetwork or RMobilePhone::NotifyCurrentNetworkChange.
       
  5582 	The TSY no longer needs to support this as ETel ISV now uses the TMobilePhoneNetworkInfoV2
       
  5583 	data structure and no distinction is required for ISV Apps.
       
  5584 
       
  5585 	@publishedPartner
       
  5586 	@deprecated 9.0 This class has been deprecated from 9.0 and should no longer be used.
       
  5587 	*/
       
  5588 		{
       
  5589 	public:
       
  5590 		IMPORT_C TEtel3rdPartyMobileNetworkInfoV1();
       
  5591 	public:
       
  5592 	/** Mode of the network.
       
  5593 	Modes: Common
       
  5594 	
       
  5595 	@see TMobilePhoneNetworkMode */
       
  5596 		TMobilePhoneNetworkMode iMode;
       
  5597 	/** Status of the network
       
  5598 	
       
  5599 	Modes: Common
       
  5600 	
       
  5601 	@see TMobilePhoneNetworkStatus */
       
  5602 		TMobilePhoneNetworkStatus iStatus;
       
  5603 	/** The band and band class of the CDMA network operator.
       
  5604 	
       
  5605 	Modes: CDMA
       
  5606 	
       
  5607 	@see TMobilePhoneNetworkBandInfo */
       
  5608 		TMobilePhoneNetworkBandInfo iBandInfo;
       
  5609 	/** The MCC of the network.
       
  5610 	
       
  5611 	Modes: Common
       
  5612 	
       
  5613 	@see TMobilePhoneNetworkCountryCode */
       
  5614 		TMobilePhoneNetworkCountryCode iCountryCode;
       
  5615 	/** The system identity (SID) of the CDMA network or the system identity (SID) of the AMPS network.
       
  5616 	
       
  5617 	Modes: CDMA
       
  5618 
       
  5619 	@see TMobilePhoneNetworkIdentity */
       
  5620 		TMobilePhoneNetworkIdentity iCdmaSID;
       
  5621 	/** The network identity (NID in CDMA and MNC in GSM).
       
  5622 	
       
  5623 	Modes: Common
       
  5624 	
       
  5625 	@see TMobilePhoneNetworkIdentity */
       
  5626 		TMobilePhoneNetworkIdentity iNetworkId;
       
  5627 	/** The alpha-tag displayed when this is the serving network.
       
  5628 	
       
  5629 	Modes: Common
       
  5630 	
       
  5631 	@see TMobilePhoneNetworkDisplayTag */
       
  5632 		TMobilePhoneNetworkDisplayTag iDisplayTag;
       
  5633 	/** The short name (up to 10 characters) of the network operator.
       
  5634 	
       
  5635 	Modes: GSM/WCDMA
       
  5636 	
       
  5637 	@see TMobilePhoneNetworkShortName */
       
  5638 		TMobilePhoneNetworkShortName iShortName;
       
  5639 	/** The long name (up to 20 characters) of the network operator.
       
  5640 	
       
  5641 	Modes: GSM/WCDMA
       
  5642 	
       
  5643 	@see TMobilePhoneNetworkLongName */
       
  5644 		TMobilePhoneNetworkLongName iLongName;
       
  5645 	/** The type of network access.
       
  5646 	
       
  5647 	@see TMobilePhoneNetworkAccess */
       
  5648 		TMobilePhoneNetworkAccess iAccess;
       
  5649 		};
       
  5650 
       
  5651 /** A typedef'd packaged TEtel3rdPartyMobileNetworkInfoV1 for passing through a generic
       
  5652 API function member.
       
  5653 
       
  5654 @deprecated 9.0
       
  5655 */
       
  5656 	typedef TPckg<TEtel3rdPartyMobileNetworkInfoV1>  TEtel3rdPartyMobileNetworkInfoV1Pckg;
       
  5657 
       
  5658 	/** IMS Authenticate constants,in accordance to 3GPP TS 33.102,
       
  5659 	section 6.3.7, and RFC 3310*/
       
  5660 	enum TMobilePhoneAuthenticate
       
  5661 		{
       
  5662 		/** length of autn is 128bits - 16octets*/
       
  5663 		KAutnLength=16,
       
  5664 		/** length of RAND is 16 octets */
       
  5665 		KRandLength=16,
       
  5666 		/** length of RES is 16 octets*/
       
  5667 		KResLength=16,
       
  5668 		/** length of IK is 16 octets*/
       
  5669 		KIkLength=16,
       
  5670 		/** length of CK is 16 octets*/
       
  5671 		KCkLength=16,
       
  5672 		/** length of Kc (GSM cipher key) is 8 octets*/
       
  5673 		KKcLength=8,
       
  5674 		/** length of is 112 bits - 14 octets */
       
  5675 		KAutsLength=14,
       
  5676 		};
       
  5677 
       
  5678 	/** Maximum size of the record in an EF is 0xff( 255 bytes) according to TS 102.221, section 8.2.2.2
       
  5679 	*/
       
  5680 	enum TMobilePhoneRelease5EFMaxSize
       
  5681 	{
       
  5682 	 KRelease5EFMaxSize=255,
       
  5683 	};
       
  5684 	
       
  5685 	/** typedefs for encapsulation of the buffers that hold authorization data stored on the ISIM/USIM*/
       
  5686 	/** typedef for Internet Multimedia Public Identity*/	
       
  5687 	typedef TBuf8<KRelease5EFMaxSize> TIMPU;
       
  5688 	/** typedef for Internet Multimedia Private Identity*/
       
  5689 	typedef TBuf8<KRelease5EFMaxSize> TIMPI;
       
  5690 	/** typedef for Home Network Domain Name*/
       
  5691 	typedef TBuf8<KRelease5EFMaxSize> THNDN;
       
  5692 
       
  5693 
       
  5694 	/** IMS Authenticate API*/
       
  5695 	/** Class encapsulates data needed as an input/output for
       
  5696 	ISIM/USIM AUTHENTICATE command
       
  5697 	
       
  5698 	@publishedPartner
       
  5699 	@released
       
  5700 	*/
       
  5701 	class TImsAuthenticateDataV5: public TMultimodeType
       
  5702 		{
       
  5703 	public:
       
  5704 		IMPORT_C TImsAuthenticateDataV5();
       
  5705 		/** holds value of network challenge AUTN */
       
  5706 		TBuf8<KAutnLength> iAUTN;
       
  5707 		/** holds value of network challenge RAND */
       
  5708 		TBuf8<KRandLength> iRAND;
       
  5709 		/** holds result RES of AUTHENTICATE command when it's successfull*/
       
  5710 		TBuf8<KResLength> iRES;
       
  5711 		/** holds value of session key Integrity Key */
       
  5712 		TBuf8<KIkLength> iIK;
       
  5713 		/** holds value of session key Cipher Key */
       
  5714 		TBuf8<KCkLength> iCK;
       
  5715 		/** holds value of Authentication Token when  AUTHENTICATE fails*/
       
  5716 		TBuf8<KAutsLength> iAUTS;
       
  5717 		};
       
  5718 
       
  5719 	/** packaged version of TImsAuthenticateDataV5, used when this structure has to be passeed via IPC*/
       
  5720 	typedef TPckg<TImsAuthenticateDataV5> TImsAuthenticateDataV5Pckg;
       
  5721 	friend class CAsyncRetrieveAuthorizationInfo;
       
  5722 
       
  5723 	/** API that execute ISIM/USIM AUTHENTICATE command*/
       
  5724 	IMPORT_C void ImsAuthenticate (TRequestStatus& aReqStatus,TDes8& authenticateDataPckgd) const;
       
  5725 
       
  5726 	IMPORT_C void NotifyImsAuthorizationInfoChange(TRequestStatus& aReqStatus) const;
       
  5727 
       
  5728 	/**
       
  5729 	Source location of IMS Authorization data.
       
  5730 	*/
       
  5731 	enum TAuthorizationDataSource
       
  5732 		{
       
  5733 		/** Authorization data source is USIM. */
       
  5734 		EFromUSIM,
       
  5735 		/** Authorization data source is ISIM. */
       
  5736 		EFromISIM
       
  5737 		};
       
  5738 
       
  5739 	/** 
       
  5740 	Class encapsulates IMS authorization data stored in the ISIM or USIM
       
  5741 
       
  5742 	@publishedPartner
       
  5743 	@released
       
  5744 	*/
       
  5745 	class CImsAuthorizationInfoV5 : public CBase	
       
  5746 		{
       
  5747 	public:
       
  5748 		IMPORT_C ~CImsAuthorizationInfoV5();
       
  5749 		IMPORT_C static CImsAuthorizationInfoV5* NewL();
       
  5750 		IMPORT_C virtual void ExternalizeL(HBufC8*& aBuffer);
       
  5751 		IMPORT_C virtual void InternalizeL(const TDesC8& aBuffer);
       
  5752 		IMPORT_C TUint ExtensionId() const;
       
  5753 	public:
       
  5754 		/**Internet Multimedia Private Identity stored on the ISIM/USIM*/
       
  5755 		RMobilePhone::TIMPI iIMPI;
       
  5756 		/**Internet Multimedia Public Identity(ies) stored on the ISIM/USIM*/
       
  5757 		RArray<RMobilePhone::TIMPU> iIMPUArray;
       
  5758 		/**Home Network Domain Name stored on the ISIM/USIM*/
       
  5759 		RMobilePhone::THNDN iHomeNetworkDomainName;
       
  5760 		/**indicates whether authorization data has been retrieved from the ISIM*/
       
  5761 		TAuthorizationDataSource iAuthenticationDataSource;
       
  5762 	protected:
       
  5763 		CImsAuthorizationInfoV5();
       
  5764 		/** version of the data supported*/
       
  5765 		TUint iExtensionId;
       
  5766 		};
       
  5767 		
       
  5768 	/**	
       
  5769 	Defines the input as well as the ouput parameters used when performing the
       
  5770 	(U)ICC AUTHENTICATE command.
       
  5771 
       
  5772 	@publishedPartner
       
  5773 	@released
       
  5774     */
       
  5775 	class TSmartCardAuthenticateDataV6 : public TImsAuthenticateDataV5
       
  5776 		{
       
  5777 	public:
       
  5778 		IMPORT_C TSmartCardAuthenticateDataV6();
       
  5779 
       
  5780 	public:
       
  5781 		TBuf8<KKcLength> iKc;
       
  5782 		};
       
  5783 
       
  5784 	/**
       
  5785 	Packaged version of TSmartCardAuthenticateDataV6, used when this
       
  5786 	structure has to be passeed via IPC.
       
  5787 	*/
       
  5788 	typedef TPckg<TSmartCardAuthenticateDataV6> TSmartCardAuthenticateDataV6Pckg;
       
  5789 
       
  5790 	IMPORT_C void SmartCardAuthenticate(TRequestStatus& aReqStatus, TDes8& aAuthDataPckgd) const;
       
  5791 	IMPORT_C void SmartCardAuthenticate(TRequestStatus& aReqStatus, const TAID& aAID, TDes8& aAuthDataPckgd) const;
       
  5792 
       
  5793 private:
       
  5794 	CMobilePhonePtrHolder* iMmPtrHolder;
       
  5795 	RMobilePhone(const RMobilePhone& aPhone);
       
  5796 
       
  5797 protected:
       
  5798 	IMPORT_C void ConstructL();
       
  5799 	IMPORT_C void Destruct();
       
  5800 	};
       
  5801 
       
  5802 
       
  5803 /*********************************************************/
       
  5804 //
       
  5805 // Phone Storage functionality (RMobilePhoneStore)
       
  5806 //
       
  5807 /*********************************************************/
       
  5808 
       
  5809 
       
  5810 
       
  5811 class CMobilePhoneStorePtrHolder;
       
  5812 class RMobilePhoneStore : public RTelSubSessionBase
       
  5813 /**
       
  5814 Abstract class used to define common phone storage actions and types
       
  5815 
       
  5816 Clients open one of the specialised phone store classes that are derived from RMobilePhoneStore
       
  5817 */
       
  5818 	{
       
  5819 public:
       
  5820 	friend class CAsyncRetrieveStoreList;
       
  5821 
       
  5822 /** Types of store.
       
  5823 
       
  5824 Modes: Common */
       
  5825 	enum TMobilePhoneStoreType
       
  5826 		{
       
  5827 	/** Store type is unknown.
       
  5828 	
       
  5829 	Modes: Common */
       
  5830 		EPhoneStoreTypeUnknown,
       
  5831 	/** Store contains SMS messages.
       
  5832 	
       
  5833 	Modes: Common */
       
  5834 		EShortMessageStore,
       
  5835 	/** Store contains NAM entries.
       
  5836 	
       
  5837 	Modes: CDMA */
       
  5838 		ENamStore,
       
  5839 	/** Store contains PhoneBook entries.
       
  5840 	
       
  5841 	Modes: Common */
       
  5842 		EPhoneBookStore,
       
  5843 	/** Store contains emergency number entries.
       
  5844 	
       
  5845 	Modes: Common */
       
  5846 		EEmergencyNumberStore,
       
  5847 	/** Store contains own number entries.
       
  5848 
       
  5849 	Modes: Common */
       
  5850 		EOwnNumberStore
       
  5851 		};
       
  5852 
       
  5853 /** Store capabilities. */
       
  5854 	enum TMobilePhoneStoreCaps
       
  5855 		{
       
  5856 	/** The store can be accessed as a whole using the ReadAll() and StoreAll() member
       
  5857 	functions. */
       
  5858 		KCapsWholeStore			= 0x80000000,
       
  5859 	/** The store can be accessed one entry at a time using the RMobilePhoneStore::Read(), 
       
  5860 	RMobilePhoneStore::Write() and RMobilePhoneStore::Delete() member functions. */
       
  5861 		KCapsIndividualEntry	= 0x40000000,
       
  5862 	/** The store can be accessed in order to read entries. */
       
  5863 		KCapsReadAccess			= 0x20000000,
       
  5864 	/** The store can be accessed in order to write or delete entries. */
       
  5865 		KCapsWriteAccess		= 0x10000000,
       
  5866 	/** The TSY supports deleting all the store entries at once. */
       
  5867 		KCapsDeleteAll			= 0x08000000,
       
  5868 	/** The TSY supports notification of store events such as entries added, deleted
       
  5869 	or store becoming full. */
       
  5870 		KCapsNotifyEvent		= 0x04000000
       
  5871 		};
       
  5872 
       
  5873 /** The type of store information. As defined in TMobilePhoneStoreInfoV1::iExtensionId
       
  5874 
       
  5875 Modes: Common
       
  5876 
       
  5877 @see TMobilePhoneStoreInfoV1
       
  5878 @see RMobilePhone::TMultimodeType */
       
  5879 	enum TMobilePhoneStoreInfoExtId
       
  5880 		{
       
  5881 	/** The iExtensionId contents indicate that the packaged class is a RMobilePhoneStore::TMobilePhoneStoreInfoV1.
       
  5882 	Modes: Common */
       
  5883 		KETelMobilePhoneStoreV1=KETelExtMultimodeV1,
       
  5884 	/** The iExtensionId contents indicate that the packaged class is a RMobilePhoneBookStore::TMobilePhoneBookInfoV1.
       
  5885 	Modes: Common */
       
  5886 		KETelMobilePhonebookStoreV1,
       
  5887 	/** Reserved for SMS store specific information class.
       
  5888 	Modes: Common */
       
  5889 		KETelMobileSmsStoreV1,
       
  5890 	/** The iExtensionId contents indicate that the packaged class is a RMobileNamStore::TMobileNamStoreInfoV1.
       
  5891 	Modes: CDMA */
       
  5892 		KETelMobileNamStoreV1,
       
  5893 	/** The iExtensionId contents indicate that the packaged class is a RMobileONStore::TMobileONStoreInfoV1.
       
  5894 	Modes: Common */
       
  5895 		KETelMobileONStoreV1,
       
  5896 	/** Reserved for Emergency Number store specific infoprmation class.
       
  5897 	Modes: Common */
       
  5898 		KETelMobileENStoreV1,
       
  5899 	/** The iExtensionId contents indicate that the packaged class is a TMobilePhoneBookInfoV2.
       
  5900 	Modes: Common */
       
  5901 		KETelMobilePhonebookStoreV2=KETelExtMultimodeV2,
       
  5902 		
       
  5903 	/** The iExtensionId contents indicate that the packaged class is a TMobilePhoneBookInfoV2.
       
  5904  	Modes: Common */
       
  5905  		KETelMobilePhonebookStoreV5=KEtelExtMultimodeV5
       
  5906 		};
       
  5907 
       
  5908 
       
  5909 
       
  5910 	class TMobilePhoneStoreInfoV1 : public RMobilePhone::TMultimodeType
       
  5911 /** Defines information and capabilities of a phone-side store.
       
  5912 @publishedPartner
       
  5913 @released */
       
  5914 		{
       
  5915 	public:
       
  5916 		IMPORT_C TMobilePhoneStoreInfoV1();
       
  5917 
       
  5918 	/** The type of entry in the phone-side store. 
       
  5919 	
       
  5920 	Modes: Common
       
  5921 
       
  5922 	@see TMobilePhoneStoreType */
       
  5923 		TMobilePhoneStoreType		iType;
       
  5924 	/** Indicates the total number of entries that may be held in this store. */
       
  5925 		TInt						iTotalEntries;
       
  5926 	/** Indicates the current number of entries held in this store.
       
  5927 	
       
  5928 	Is equal to KIndexNotUsed if the TSY is unable to determine current number 
       
  5929 	of entries.
       
  5930 	
       
  5931 	Modes: Common */
       
  5932 		TInt						iUsedEntries;
       
  5933 	/** Indicates the capabilities of the store. It is the sum of caps constants defined
       
  5934 	in TMobilePhoneStoreCaps and those defined for a specialised phone store.
       
  5935 	
       
  5936 	Modes: Common */
       
  5937 		TUint32						iCaps;
       
  5938 	/** The name of the phone-side store. A valid list of names is given in the description 
       
  5939 	of each specialised store. 
       
  5940 	
       
  5941 	Modes: Common
       
  5942 
       
  5943 	@see RMobilePhone::TMobileName */
       
  5944 		RMobilePhone::TMobileName	iName;
       
  5945 		};
       
  5946 
       
  5947 /** A typedef'd packaged TMobilePhoneStoreInfoV1 for passing through a generic
       
  5948 API member function. */
       
  5949 	typedef TPckg<TMobilePhoneStoreInfoV1> TMobilePhoneStoreInfoV1Pckg;
       
  5950 
       
  5951 	
       
  5952 
       
  5953 	class TMobilePhoneStoreEntryV1 : public RMobilePhone::TMultimodeType
       
  5954 /** Defines common contents of an entry in a phone-side store. 
       
  5955 */
       
  5956 		{
       
  5957 	public:
       
  5958 
       
  5959 		enum
       
  5960 			{
       
  5961 			KIndexNotUsed = -1
       
  5962 			};
       
  5963 
       
  5964 	protected:
       
  5965 		TMobilePhoneStoreEntryV1();
       
  5966 	public:
       
  5967 		void InternalizeL(RReadStream& aStream);
       
  5968 		void ExternalizeL(RWriteStream& aStream) const;
       
  5969 	public:
       
  5970 	/** The slot location of the entry within phone-side storage.
       
  5971 	
       
  5972 	Modes: Common */
       
  5973 		TInt  iIndex;
       
  5974 		};
       
  5975 
       
  5976 	IMPORT_C void GetInfo(TRequestStatus& aReqStatus, TDes8& aInfo) const;
       
  5977 
       
  5978 	IMPORT_C void Read(TRequestStatus& aReqStatus, TDes8& aEntry) const;
       
  5979 	IMPORT_C void Write(TRequestStatus& aReqStatus, TDes8& aEntry) const;
       
  5980 
       
  5981 	IMPORT_C void Delete(TRequestStatus& aReqStatus, TInt aIndex) const;
       
  5982 	IMPORT_C void DeleteAll(TRequestStatus& aReqStatus) const;
       
  5983 
       
  5984 /** The store events. It is possible for more than one event to occur at the same 
       
  5985 time, therefore the events are a bitmask and should be tested as a bitmask.
       
  5986 
       
  5987 Modes: Common
       
  5988 
       
  5989 @see NotifyStoreEvent() */
       
  5990 	enum TMobileStoreEvent
       
  5991 		{
       
  5992 	/** The store has become full. This event will trigger after the last possible 
       
  5993 	entry in a store has been written. */
       
  5994 		KStoreFull =0x00000001,
       
  5995 	/** The store was full but now has some space. This event will trigger after one 
       
  5996 	or more entries have been deleted from a full store. */
       
  5997 		KStoreHasSpace =0x00000002,
       
  5998 	/** The store is empty. This event will trigger after the last entry in a store 
       
  5999 	has been deleted or if all entries are deleted at once. */
       
  6000 		KStoreEmpty =0x00000004,
       
  6001 	/** The store has a new entry, placed in the slot indicated by the aIndex parameter. */
       
  6002 		KStoreEntryAdded =0x00000008,
       
  6003 	/** The store has deleted the entry that was in the slot indicated by the aIndex 
       
  6004 	parameter. */
       
  6005 		KStoreEntryDeleted =0x00000010,
       
  6006 	/** The store has changed the entry that was in the slot indicated by the aIndex 
       
  6007 	parameter. */
       
  6008 		KStoreEntryChanged =0x00000020,
       
  6009 	/** The store contents have substantially changed and the TSY is recommending that 
       
  6010 	the client performs a refresh by reading all the contents again. */
       
  6011 		KStoreDoRefresh =0x00000040
       
  6012 		};
       
  6013 
       
  6014 	IMPORT_C void NotifyStoreEvent(TRequestStatus& aReqStatus, TUint32& aEvent, TInt& aIndex) const;
       
  6015 
       
  6016 protected:
       
  6017 	CMobilePhoneStorePtrHolder* iStorePtrHolder;
       
  6018 
       
  6019 protected:
       
  6020 	RMobilePhoneStore();
       
  6021 	IMPORT_C void BaseConstruct(CMobilePhoneStorePtrHolder* aPtrHolder);
       
  6022 	IMPORT_C void Destruct();
       
  6023 	};
       
  6024 
       
  6025 
       
  6026 /*********************************************************/
       
  6027 //
       
  6028 // Call based functionality (RMobileCall)
       
  6029 // 
       
  6030 /*********************************************************/
       
  6031 
       
  6032 
       
  6033 
       
  6034 class CMobileCallPtrHolder;
       
  6035 
       
  6036 class RMobileCall : public RCall
       
  6037 /** Provides access to the functionality associated with a specific mobile call.
       
  6038 
       
  6039 RMobileCall encapsulates access to a mobile phone. The functionality of RMobileCall 
       
  6040 is divided into a number of functional units, for the purpose of easier documentation 
       
  6041 and navigation and selectable support by TSY. 
       
  6042 
       
  6043 Note: Some RMobileCall function members must be supported by the TSY while 
       
  6044 others are part of optional "functional unit" and only need to be supported
       
  6045 if the TSY supports that functional unit. When a functional unit is mandatory 
       
  6046 then the TSY should at least support the Get...Caps() member function to indicate 
       
  6047 the member functions that are supported for this unit. 
       
  6048  */
       
  6049 	{
       
  6050 public:
       
  6051 	IMPORT_C RMobileCall();
       
  6052 	/***********************************************************************************/
       
  6053 	//
       
  6054 	//  Mobile call parameters - used within Dial/Answer API
       
  6055 	//
       
  6056 	/***********************************************************************************/
       
  6057 
       
  6058 	// used to set iExtensionId in RCall::TCallParams
       
  6059 /** The mobile call parameter extension IDs.
       
  6060 
       
  6061 Modes: Common */
       
  6062 	enum TMobileCallParamsExtensionId
       
  6063 		{
       
  6064 	/** The iExtensionId contents indicate that the packaged class is a TMobileCallParamsV1. */
       
  6065 		KETelMobileCallParamsV1=KETelExtMultimodeV1,
       
  6066 	/** The iExtensionId contents indicate that the packaged class is a TMobileDataCallParamsV1.
       
  6067 	
       
  6068 	Modes: Common */
       
  6069 		KETelMobileDataCallParamsV1,
       
  6070 	/** The iExtensionId contents indicate that the packaged class is a TMobileHscsdCallParamsV1.
       
  6071 	
       
  6072 	Modes: GSM/WCDMA */
       
  6073 		KETelMobileHscsdCallParamsV1,
       
  6074 	/** The iExtensionId contents indicate that the packaged class is a TMobileCallParamsV2.
       
  6075 	
       
  6076 	Modes: Common */
       
  6077 		KETelMobileCallParamsV2=KETelExtMultimodeV2,
       
  6078 	/** The iExtensionId contents indicate that the packaged class is a TMobileDataCallParamsV2.
       
  6079 	
       
  6080 	Modes: Common */
       
  6081 		KETelMobileDataCallParamsV2,
       
  6082 	/** The iExtensionId contents indicate that the packaged class is a TMobileHscsdCallParamsV2.
       
  6083 
       
  6084 	Modes: GSM/WCDMA */
       
  6085 		KETelMobileHscsdCallParamsV2,
       
  6086 	/** The iExtensionId contents indicate that the packaged class is a TEtel3rdPartyMobileCallParamsV1. 
       
  6087 	
       
  6088 	Modes: Common */	
       
  6089 		KETel3rdPartyCallParamsV1=KETelExt3rdPartyV1
       
  6090 		};
       
  6091 
       
  6092 /** Caller Id restriction settings.
       
  6093 
       
  6094 Modes: Common
       
  6095 
       
  6096 @see TMobileCallParamsV1 */
       
  6097 	enum TMobileCallIdRestriction
       
  6098 		{
       
  6099 	/** The default setting should be used if the user has not explicitly requested 
       
  6100 	their identity to be restricted/allowed. */
       
  6101 		EIdRestrictDefault,
       
  6102 	/** The user has explicitly requested their identity to be sent for this call. */
       
  6103 		ESendMyId,
       
  6104 	/** The user has explicitly requested their identity not to be sent for this call. */
       
  6105 		EDontSendMyId
       
  6106 		};
       
  6107 
       
  6108 	class TMobileCallCugV1 : public RMobilePhone::TMultimodeType
       
  6109 /** This class is used to set up a CUG (Closed User Group) call. 
       
  6110 
       
  6111 TMobileCallCugV1() is valid in GSM/WCDMA mode only. The client application 
       
  6112 should set the CUG settings for the call depending on the user's choice. If
       
  6113 the user has not explicitly requested a CUG call then this parameter should 
       
  6114 indicate that explicit CUG invoke is false. The TSY ignores this parameter 
       
  6115 if in CDMA mode. 
       
  6116 */
       
  6117 		{
       
  6118 	public:
       
  6119 		IMPORT_C TMobileCallCugV1();
       
  6120 	public:
       
  6121 	/** A boolean indicating whether Closed User Group is being explicitly invoked by 
       
  6122 	the client or not. If this parameter is false, the other entries in this structure 
       
  6123 	will be ignored. */
       
  6124 		TBool	iExplicitInvoke;
       
  6125 	/** The Closed User Group index that the user has specified for this call (if no
       
  6126 	index has been specified then this element will equal -1). */
       
  6127 		TInt	iCugIndex;
       
  6128 	/** A boolean indicating whether the user has suppressed their Outgoing Access option 
       
  6129 	or not. */
       
  6130 		TBool	iSuppressOA;
       
  6131 	/** A boolean indicating whether the user has suppressed the use of their preferential 
       
  6132 	Closed User Group or not. */
       
  6133 		TBool	iSuppressPrefCug;
       
  6134 		};
       
  6135 	
       
  6136 /** Multicall Operation set-up.
       
  6137 
       
  6138 Mode: WCDMA */
       
  6139 	enum TMobileCallMulticallBearerMode
       
  6140 		{
       
  6141 	/** Multicall is not supported. */
       
  6142 		EMulticallNotSupported,
       
  6143 	/** MS will accept incoming call and establish a connection using an existing bearer. */
       
  6144 		EMulticallShareBearer,
       
  6145 	/** MS will accept incoming call and establish a connection by creating a new bearer. */
       
  6146 		EMulticallNewBearer
       
  6147 		};
       
  6148 
       
  6149 	
       
  6150 
       
  6151 	class TMobileCallParamsV1 : public RCall::TCallParams
       
  6152 /** Defines the parameters used for set-up of a call of any type. 
       
  6153 */
       
  6154 		{
       
  6155 	public:
       
  6156 		IMPORT_C TMobileCallParamsV1();
       
  6157 	public:
       
  6158 	/** Call Id restriction setting to be used for this call.
       
  6159 
       
  6160 	@see TMobileCallIdRestriction */
       
  6161 		TMobileCallIdRestriction iIdRestrict;
       
  6162 	/** Closed User Group setting to be used for this call.
       
  6163 	
       
  6164 	@see TMobileCallCugV1 */
       
  6165 		TMobileCallCugV1 iCug;
       
  6166 	/** Specifies whether this call attempt is user initiated (EFalse) or a client initiated 
       
  6167 	redial (ETrue). */
       
  6168 		TBool iAutoRedial;
       
  6169 		};
       
  6170 
       
  6171 /** A typedef'd packaged TMobileCallParamsV1 for passing through a generic API function 
       
  6172 member. */
       
  6173 	typedef TPckg<TMobileCallParamsV1> TMobileCallParamsV1Pckg;
       
  6174 
       
  6175 	
       
  6176  
       
  6177  	class TMobileCallParamsV2 : public TMobileCallParamsV1
       
  6178 /** Defines the parameters used for set-up of a call of any type 
       
  6179 for version v2.0 of the API.
       
  6180 A new parameter (iBearerMode) is required to support Multicall.
       
  6181 @publishedPartner
       
  6182 @released 
       
  6183 */
       
  6184  		{
       
  6185  	public:
       
  6186  		IMPORT_C TMobileCallParamsV2();
       
  6187  	public:
       
  6188 	/** The bearer mode. */
       
  6189  		TMobileCallMulticallBearerMode iBearerMode;
       
  6190  		};
       
  6191  
       
  6192 /** A typedef'd packaged TMobileCallParamsV1 for passing through a generic API 
       
  6193 function member. */
       
  6194  	typedef TPckg<TMobileCallParamsV2> TMobileCallParamsV2Pckg;
       
  6195  
       
  6196 	/***********************************************************************************/
       
  6197 	//
       
  6198 	// Mobile Call Data Functional Unit
       
  6199 	//
       
  6200 	/***********************************************************************************/
       
  6201 
       
  6202 /** In GSM mode, maps to list of supported speeds returned in response to AT+CBST=?. 
       
  6203 In CDMA mode, maps to data rates supported by supported service options.
       
  6204 
       
  6205 @see TMobileCallDataCapsV1 */
       
  6206 	enum TMobileCallDataSpeedCaps
       
  6207 		{
       
  6208 	/** Call can support autobauding. */
       
  6209 		KCapsSpeedAutobauding = 0x00000001,
       
  6210 	/** Call can support a speed of 2400bps. */
       
  6211 		KCapsSpeed2400  = 0x00000002,
       
  6212 	/** Call can support a speed of 4800bps. */
       
  6213 		KCapsSpeed4800  = 0x00000004,
       
  6214 	/** Call can support a speed of 9600bps. */
       
  6215 		KCapsSpeed9600  = 0x00000008,
       
  6216 	/** Call can support a speed of 14400bps. */
       
  6217 		KCapsSpeed14400 = 0x00000010,
       
  6218 	/** Call can support a speed of 19200bps. */
       
  6219 		KCapsSpeed19200 = 0x00000020,
       
  6220 	/** Call can support a speed of 28800bps. */
       
  6221 		KCapsSpeed28800 = 0x00000040,
       
  6222 	/** Call can support a speed of 32000bps. */
       
  6223 		KCapsSpeed32000 = 0x00000080,
       
  6224 	/** Call can support a speed of 33600bps. */
       
  6225 		KCapsSpeed33600 = 0x00000100,
       
  6226 	/** Call can support a speed of 38400bps. */
       
  6227 		KCapsSpeed38400 = 0x00000200,
       
  6228 	/** Call can support a speed of 43200bps. */
       
  6229 		KCapsSpeed43200 = 0x00000400,
       
  6230 	/** Call can support a speed of 48000bps. */
       
  6231 		KCapsSpeed48000 = 0x00000800,
       
  6232 	/** Call can support a speed of 56000bps. */
       
  6233 		KCapsSpeed56000 = 0x00001000,
       
  6234 	/** Call can support a speed of 57600bps. */
       
  6235 		KCapsSpeed57600 = 0x00002000,
       
  6236 	/** Call can support a speed of 64000bps. */
       
  6237 		KCapsSpeed64000 = 0x00004000,
       
  6238 	/** Call can support extended data speed capabilities. This flag is reserved for 
       
  6239 	future expansion of API and should always be set to zero. */
       
  6240 		KCapsSpeedExtended = 0x80000000		
       
  6241 		};
       
  6242 
       
  6243 /** List of supported values of the <speed> parameter returned in response to AT+CBST=?
       
  6244 
       
  6245 Not applicable to CDMA mode
       
  6246 
       
  6247 @see TMobileDataCallParamsV1 */
       
  6248 	enum TMobileCallDataProtocolCaps
       
  6249 		{
       
  6250 	/** Call can support V.22bis standard
       
  6251 	
       
  6252 	Modes: COMMON */
       
  6253 		KCapsProtocolV22bis = 0x00000001,
       
  6254 	/** Call can support V.32 standard.
       
  6255 	
       
  6256 	Modes: COMMON */
       
  6257 		KCapsProtocolV32 = 0x00000002,
       
  6258 	/** Call can support V.34 standard.
       
  6259 	
       
  6260 	Modes: COMMON */
       
  6261 		KCapsProtocolV34 = 0x00000004,
       
  6262 	/** Call can support V.110 standard.
       
  6263 	
       
  6264 	Modes: GSM/WCDMA */
       
  6265 		KCapsProtocolV110 = 0x00000008,
       
  6266 	/** Call can support V.120 standard.
       
  6267 	
       
  6268 	Modes: GSM/WCDMA */
       
  6269 		KCapsProtocolV120 = 0x00000010,
       
  6270 	/** Call can support bit transparent service.
       
  6271 	
       
  6272 	Modes: GSM/WCDMA */
       
  6273 		KCapsProtocolBitTransparent = 0x00000020,
       
  6274 	/** Call can support X31 flag stuffing standard.
       
  6275 	
       
  6276 	Modes: GSM/WCDMA */
       
  6277 		KCapsProtocolX31FlagStuffing = 0x00000040,
       
  6278 	/** Call can support both PIAF standards (32000bps and 64000bps).
       
  6279 	
       
  6280 	Modes: GSM/WCDMA */
       
  6281 		KCapsProtocolPIAFS = 0x00000080,
       
  6282 	/** Call can support request for Multimedia protocol (3G-324M) over a call to PSTN
       
  6283 	with voice fallback.
       
  6284 	
       
  6285 	Modes: WCDMA */
       
  6286 		KCapsPstnMultimediaVoiceFallback = 0x00000100,
       
  6287 	/** Call can support request for Multimedia protocol (3G-324M) over a call to PSTN
       
  6288 	without voice fallback
       
  6289 	
       
  6290 	Modes: WCDMA */
       
  6291 		KCapsPstnMultimedia = 0x00000200,
       
  6292 	/** Call can support request for Multimedia protocol (3G-324M) over a call to ISDN 
       
  6293 	(voice fallback not possible).
       
  6294 	
       
  6295 	Modes: WCDMA */
       
  6296 		KCapsIsdnMultimedia = 0x00000400,
       
  6297 	/** Call can support extended data carrier capabilities. This flag is reserved for 
       
  6298 	future expansion and should always be set to zero for v1.0 of this API.
       
  6299 	
       
  6300 	Modes: COMMON */
       
  6301 		KCapsProtocolExtended = 0x80000000
       
  6302 		};
       
  6303 
       
  6304 /** In GSM mode, maps to list of supported <name> returned in response to AT+CBST=? 
       
  6305 In CDMA mode, maps to supported service options.
       
  6306 
       
  6307 Modes: COMMON
       
  6308 
       
  6309 @see TMobileCallDataCapsV1 */
       
  6310 	enum TMobileCallDataServiceCaps
       
  6311 		{
       
  6312 		KCapsDataCircuitAsynchronous = 0x00000001,
       
  6313 		KCapsDataCircuitAsynchronousRDI = 0x00000002,
       
  6314 		KCapsDataCircuitSynchronous = 0x00000004,
       
  6315 		KCapsDataCircuitSynchronousRDI = 0x00000008,
       
  6316 	/** Call can support "PAD Access (asynchronous) (UDI)".
       
  6317 	
       
  6318 	Modes: GSM/WCDMA */
       
  6319 		KCapsPADAsyncUDI = 0x00000010,
       
  6320 	/** Call can support "PAD Access (asynchronous) (RDI)"
       
  6321 
       
  6322 	Modes: GSM/WCDMA */
       
  6323 		KCapsPADAsyncRDI = 0x00000020,
       
  6324 	/** Call can support "Packet Access (synchronous) (UDI)" 
       
  6325 	
       
  6326 	Modes: GSM/WCDMA */
       
  6327 		KCapsPacketAccessSyncUDI = 0x00000040,
       
  6328 	/** Call can support "Packet Access (synchronous) (RDI)".
       
  6329 
       
  6330 	Modes: GSM/WCDMA */
       
  6331 		KCapsPacketAccessSyncRDI = 0x00000080,
       
  6332 	/** Call can support extended data service capabilities. This flag is reserved for 
       
  6333 	future expansion of this API and should always be set to zero for v1.0 of 
       
  6334 	this API.
       
  6335 	
       
  6336 	Modes: COMMON */
       
  6337 		KCapsServiceExtended = 0x80000000
       
  6338 		};
       
  6339 
       
  6340 /** Maps to list of supported <ce> returned in response to AT+CBST=?
       
  6341 
       
  6342 Not applicable to CDMA mode.
       
  6343 
       
  6344 @see TMobileCallDataCapsV1 */
       
  6345 	enum TMobileCallDataQoSCaps
       
  6346 		{
       
  6347 	/** Call can support a request for "transparent only" connection. */
       
  6348 		KCapsTransparent = 0x00000001,
       
  6349 	/** Call can support a request for "non-transparent only" connection. */
       
  6350 		KCapsNonTransparent = 0x00000002,
       
  6351 	/** Call can support a request for "transparent preferred" connection. */
       
  6352 		KCapsTransparentPreferred = 0x00000004,
       
  6353 	/** Call can support a request for "non-transparent preferred" connection. */
       
  6354 		KCapsNonTransparentPreferred = 0x00000008
       
  6355 		};
       
  6356 
       
  6357 /** Supported Air Interface User Rates. */
       
  6358 	enum TMobileCallAiurCodingCaps
       
  6359 		{
       
  6360 	/** Air interface user rate of 4.8k is supported. */
       
  6361 		KCapsAiurCoding48 = 0x01,
       
  6362 	/** Air interface user rate of 9.6k is supported. */
       
  6363 		KCapsAiurCoding96 = 0x04,
       
  6364 	/** Air interface user rate of 14.4k is supported. */
       
  6365 		KCapsAiurCoding144 = 0x08
       
  6366 		};
       
  6367 
       
  6368 /** HSCSD coding capabilities.
       
  6369 
       
  6370 Modes: GSM/WCDMA */
       
  6371 	enum TMobileCallTchCodingsCaps
       
  6372 		{
       
  6373 	/** Call supports HSCSD coding on 4.8K full rate data traffic channel. */
       
  6374 		KCapsTchCoding48  = 0x00000001,
       
  6375 	/** Call supports HSCSD coding on 9.6K full rate data traffic channel. */
       
  6376 		KCapsTchCoding96  = 0x00000004,
       
  6377 	/** Call supports HSCSD coding on 14.4K full rate data traffic channel. */
       
  6378 		KCapsTchCoding144 = 0x00000008,
       
  6379 	/** Call supports HSCSD coding on 28.8K full rate data traffic channel (only possible 
       
  6380 	when 14.4K is supported). */
       
  6381 		KCapsTchCoding288 = 0x00000010,
       
  6382 	/** Call supports HSCSD coding on 32.0K full rate data traffic channel (only possible 
       
  6383 	in a two-timeslot configuration). */
       
  6384 		KCapsTchCoding320 = 0x00000020,
       
  6385 	/** Call supports HSCSD coding on 43.2K full rate data traffic channel (only possible 
       
  6386 	when 14.4K is supported). */
       
  6387 		KCapsTchCoding432 = 0x00000040
       
  6388 		};
       
  6389 
       
  6390 /** The call asymmetry capabilities.
       
  6391 
       
  6392 Modes: GSM/WCDMA
       
  6393 
       
  6394 @see TMobileCallDataCapsV1 */
       
  6395 	enum TMobileCallAsymmetryCaps
       
  6396 		{
       
  6397 	/** Call supports "No Preference" option for asymmetry bias of a Non-Transparent
       
  6398 	ECSD call. */
       
  6399 		KCapsAsymmetryNoPreference= 0x00000001,
       
  6400 	/** Call supports "Downlink bias" option for asymmetry bias of a Non-Transparent 
       
  6401 	ECSD call. 
       
  6402 	
       
  6403 	This means 8-PSK modulation is preferred downlink and GMSK modulation uplink. */
       
  6404 		KCapsAsymmetryDownlink = 0x00000002,
       
  6405 	/** Call supports "Uplink bias" option for asymmetry bias of a Non-Transparent ECSD 
       
  6406 	call. 
       
  6407 	
       
  6408 	This means 8-PSK modulation is preferred uplink and GMSK modulation downlink. */
       
  6409 		KCapsAsymmetryUplink = 0x00000004
       
  6410 		};
       
  6411 
       
  6412 /** The supported Call RLP versions.
       
  6413 
       
  6414 Modes: GSM/WCDMA
       
  6415 
       
  6416 @see TMobileCallDataCapsV1 */
       
  6417 	enum TMobileCallRLPVersionCaps
       
  6418 		{
       
  6419 	/** Call supports the single link, basic RLP version 0. */
       
  6420 		KCapsRLPSingleLinkVersion0 = 0x00000001,
       
  6421 	/** Call supports the single link, extended RLP version 1. */
       
  6422 		KCapsRLPSingleLinkVersion1 = 0x00000002,
       
  6423 	/** Call supports the multi link, RLP version 2. */
       
  6424 		KCapsRLPMultiLinkVersion2  = 0x00000004
       
  6425 		};
       
  6426 
       
  6427 /** The supported V42bis options.
       
  6428 
       
  6429 Modes: GSM/WCDMA
       
  6430 
       
  6431 @see TMobileCallDataCapsV1 */
       
  6432 	enum TMobileCallV42bisCaps
       
  6433 		{
       
  6434 	/** Call supports V42bis compression in initiator-responder direction. */
       
  6435 		KCapsV42bisTxDirection = 0x00000001,
       
  6436 	/** Call supports V42bis compression in responder-initiator direction. */
       
  6437 		KCapsV42bisRxDirection = 0x00000002,
       
  6438 	/** Call supports V42bis compression in both directions. */
       
  6439 		KCapsV42bisBothDirections = 0x00000004
       
  6440 		};
       
  6441 
       
  6442 	
       
  6443 
       
  6444 	class TMobileCallDataCapsV1 : public RMobilePhone::TMultimodeType
       
  6445 	/** Defines the capabilities of a circuit switched data call. 
       
  6446 	@publishedPartner
       
  6447 	@released
       
  6448 	*/
       
  6449 		{
       
  6450 	public:
       
  6451 		IMPORT_C TMobileCallDataCapsV1();
       
  6452 	public:
       
  6453 	/** Data speed capabilities - a bit wise sum of the caps defined in TMobileCallDataSpeedCaps. */
       
  6454 		TUint32	iSpeedCaps;
       
  6455 	/** Data protocol capabilities - a bit wise sum of the caps defined in TMobileCallDataProtocolCaps. */
       
  6456 		TUint32	iProtocolCaps;
       
  6457 	/** Data service capabilities - a bit wise sum of the caps defined in TMobileCallDataServiceCaps. */
       
  6458 		TUint32	iServiceCaps;
       
  6459 	/** Data QoS capabilities - a bit wise sum of the caps defined in TMobileCallDataQoSCaps.
       
  6460 	
       
  6461 	Note: Only available in GSM/WCDMA mode. */
       
  6462 		TUint32	iQoSCaps;
       
  6463 	/** A boolean indicating whether or not the MS supports HSCSD for this call. If 
       
  6464 	this attribute equals EFalse all the following attributes are invalid.
       
  6465 
       
  6466 	Note: Only available in GSM/WCDMA mode. */
       
  6467 		TBool	iHscsdSupport;
       
  6468 	/** For HSCSD: The multi-slot class supported. */
       
  6469 		TInt	iMClass;
       
  6470 	/** For HSCSD: The maximum supported number of time-slots in the receive (down-link) 
       
  6471 	direction. */
       
  6472 		TInt	iMaxRxTimeSlots;
       
  6473 	/** For HSCSD: The maximum supported number of time-slots in the transmit (up-link) 
       
  6474 	direction. */
       
  6475 		TInt	iMaxTxTimeSlots;
       
  6476 	/** For HSCSD: The maximum supported total number of receive and transmit time-slots 
       
  6477 	that can be used at same time. */
       
  6478 		TInt	iTotalRxTxTimeSlots;
       
  6479 	/** For HSCSD: A bit-wise sum of the supported air interface channel codings defined 
       
  6480 	in TMobileCallAiurCodingCaps. */
       
  6481 		TUint32	iCodingCaps;
       
  6482 	/** For HSCSD: A bit-wise sum of the supported asymmetry bias defined in TMobileCallAsymmetryCaps. */
       
  6483 		TUint32 iAsymmetryCaps;
       
  6484 	/** For HSCSD: A boolean indicating whether or not the MS supports automatic user 
       
  6485 	initiated service level upgrading. */
       
  6486 		TBool 	iUserInitUpgrade;
       
  6487 	/** For HSCSD and CSD: A bit-wise sum of the supported Radio Link Protocol versions 
       
  6488 	defined in TMobileCallRLPVersionCaps. */
       
  6489 		TUint32	iRLPVersionCaps;
       
  6490 	/** For HSCSD and CSD: A bit-wise sum of the supported V42bis compression capabilities 
       
  6491 	defined in TMobileCallV42bisCaps . */
       
  6492 		TUint32	iV42bisCaps;
       
  6493 		};
       
  6494 
       
  6495 /** A typedef'd packaged TMobileCallDataCapsV1 for passing through a generic API 
       
  6496 function member. */
       
  6497 	typedef TPckg<TMobileCallDataCapsV1> TMobileCallDataCapsV1Pckg;
       
  6498 
       
  6499 	IMPORT_C TInt GetMobileDataCallCaps(TDes8& aCaps) const;
       
  6500 	IMPORT_C void NotifyMobileDataCallCapsChange(TRequestStatus& aReqStatus, TDes8& aCaps) const;
       
  6501 
       
  6502 /** The call setup requested data speed.
       
  6503 
       
  6504 @see TMobileDataCallParamsV1 */
       
  6505 	enum TMobileCallDataSpeed
       
  6506 		{
       
  6507 	/** Call set-up will request speed depending on data carrier chosen. */
       
  6508 		ESpeedUnspecified,
       
  6509 	/** Call set-up will request autobauding. */
       
  6510 		ESpeedAutobauding,
       
  6511 	/** Call set-up will request 2400bps. */
       
  6512 		ESpeed2400,
       
  6513 	/** Call set-up will request 4800bps. */
       
  6514 		ESpeed4800,
       
  6515 	/** Call set-up will request 9600bps. */
       
  6516 		ESpeed9600,
       
  6517 	/** Call set-up will request 14400bps. */
       
  6518 		ESpeed14400,
       
  6519 	/** Call set-up will request 19200bps. */
       
  6520 		ESpeed19200,
       
  6521 	/** Call set-up will request 28800bps. */
       
  6522 		ESpeed28800,
       
  6523 	/** Call set-up will request 32000bps. */
       
  6524 		ESpeed32000,
       
  6525 	/** Call set-up will request 33600bps. */
       
  6526 		ESpeed33600,
       
  6527 	/** Call set-up will request 38400bps. */
       
  6528 		ESpeed38400,
       
  6529 	/** Call set-up will request 43200bps. */
       
  6530 		ESpeed43200,
       
  6531 	/** Call set-up will request 48000bps. */
       
  6532 		ESpeed48000,
       
  6533 	/** Call set-up will request 56000bps. */
       
  6534 		ESpeed56000,
       
  6535 	/** Call set-up will request 57600bps. */
       
  6536 		ESpeed57600,
       
  6537 	/** Call set-up will request 64000bps. */
       
  6538 		ESpeed64000
       
  6539 		};
       
  6540 
       
  6541 /** The call set-up requested data protocol.
       
  6542 
       
  6543 Modes: GSM/WCDMA */
       
  6544 	enum TMobileCallDataProtocol
       
  6545 		{
       
  6546 	/** Call set-up will request carrier depending on data speed chosen. */
       
  6547 		EProtocolUnspecified,
       
  6548 	/** Call set-up will request the V.22bis standard. */
       
  6549 		EProtocolV22bis,
       
  6550 	/** Call set-up will request the V.32 standard. */
       
  6551 		EProtocolV32,
       
  6552 	/** Call set-up will request the V.34 standard. */
       
  6553 		EProtocolV34,
       
  6554 	/** Call set-up will request the V.110 standard. */
       
  6555 		EProtocolV110,
       
  6556 	/** Call set-up will request the V.120 standard. */
       
  6557 		EProtocolV120,
       
  6558 	/** Call set-up will request the X31FlagStuffing standard. */
       
  6559 		EProtocolX31FlagStuffing,
       
  6560 	/** Call set-up will request the PIAFS standard. */
       
  6561 		EProtocolPIAFS,
       
  6562 	/** Call set-up will request the bit transparent service. */
       
  6563 		EProtocolBitTransparent,
       
  6564 	/** Call set-up will request a PSTN multimedia call with voice fallback if multimedia 
       
  6565 	fails.
       
  6566 	
       
  6567 	WCDMA mode only. */
       
  6568 		EProtocolPstnMultimediaVoiceFallback,
       
  6569 	/** Call set-up will request a PSTN multimedia call.
       
  6570 	
       
  6571 	WCDMA mode only. */
       
  6572 		EProtocolPstnMultimedia,
       
  6573 	/** Call set-up will request a ISDN multimedia call.
       
  6574 	
       
  6575 	WCDMA mode only. */
       
  6576 		EProtocolIsdnMultimedia
       
  6577 		};
       
  6578 
       
  6579 /** The call setup requested data services.
       
  6580 
       
  6581 Modes: Common
       
  6582 
       
  6583 @see TMobileDataCallParamsV1 */
       
  6584 	enum TMobileCallDataService
       
  6585 		{
       
  6586 	/** Call set-up will request its default service type.
       
  6587 	
       
  6588 	Modes: Common */
       
  6589 		EServiceUnspecified,
       
  6590 	/** Call set-up will request:
       
  6591 	
       
  6592 	GSM mode - Data circuit asynchronous (UDI or 3.1 KHz, ex PLMN) service 
       
  6593 
       
  6594 	In CDMA mode - Async Data service 
       
  6595 	
       
  6596 	Modes: Common */
       
  6597 		EServiceDataCircuitAsync,
       
  6598 	/** Call set-up will request Data circuit asynchronous (RDI) service.
       
  6599 	
       
  6600 	Modes: GSM/WCDMA */
       
  6601 		EServiceDataCircuitAsyncRdi,
       
  6602 	/** Call set-up will request Data circuit synchronous (UDI or 3.1 KHz, ex PLMN) 
       
  6603 	service.
       
  6604 	
       
  6605 	Modes: GSM/WCDMA */
       
  6606 		EServiceDataCircuitSync,
       
  6607 	/** Call set-up will request Data circuit synchronous (RDI) service.
       
  6608 	
       
  6609 	Modes: GSM/WCDMA */
       
  6610 		EServiceDataCircuitSyncRdi,
       
  6611 	/** Call set-up will request PAD asynchronous (UDI) service.
       
  6612 	
       
  6613 	Modes: GSM/WCDMA */
       
  6614 		EServicePADAsyncUDI,
       
  6615 	/** Call set-up will request PAD asynchronous (RDI) service.
       
  6616 	
       
  6617 	Modes: GSM/WCDMA */
       
  6618 		EServicePADAsyncRDI,
       
  6619 	/** Call set-up will request Packet Access synchronous (UDI) service.
       
  6620 	
       
  6621 	Modes: GSM/WCDMA */
       
  6622 		EServicePacketAccessSyncUDI,
       
  6623 	/** Call set-up will request Packet Access synchronous (RDI) service.
       
  6624 	
       
  6625 	Modes: GSM/WCDMA */
       
  6626 		EServicePacketAccessSyncRDI
       
  6627 		};
       
  6628 
       
  6629 /** The call set-up requested quality of service (QoS).
       
  6630 
       
  6631 Modes: GSM/WCDMA
       
  6632 
       
  6633 @see TMobileDataCallParamsV1 */
       
  6634 	enum TMobileCallDataQoS
       
  6635 		{
       
  6636 	/** Call set-up will request its default connection. */
       
  6637 		EQoSUnspecified,
       
  6638 	/** Call set-up will request a transparent connection. */
       
  6639 		EQoSTransparent,
       
  6640 	/** Call set-up will request a non-transparent connection. */
       
  6641 		EQoSNonTransparent,
       
  6642 	/** Call set-up will prefer a transparent connection. */
       
  6643 		EQosTransparentPreferred,
       
  6644 	/** Call set-up will prefer a non-transparent connection. */
       
  6645 		EQosNonTransparentPreferred
       
  6646 		};
       
  6647 
       
  6648 /** The call set-up requested RLP version.
       
  6649 
       
  6650 @see TMobileDataCallParamsV1 */
       
  6651 	enum TMobileCallDataRLPVersion
       
  6652 		{
       
  6653 	/** Call set-up will request no RLP version. */
       
  6654 		ERLPNotRequested,
       
  6655 	/** Call set-up will request single link basic RLP (version 0). */
       
  6656 		ERLPSingleLinkVersion0,
       
  6657 	/** Call set-up will request single link extended RLP (version 1). */
       
  6658 		ERLPSingleLinkVersion1,
       
  6659 	/** Call set-up will prefer multi link RLP (version 2). */
       
  6660 		ERLPMultiLinkVersion2
       
  6661 		};
       
  6662 
       
  6663 /** The V.42bis parameters used in the call set-up of a V.42bis data call.
       
  6664 
       
  6665 @see TMobileDataCallParamsV1 */
       
  6666 	enum TMobileCallDataV42bis
       
  6667 		{
       
  6668 	/** Call set-up will not request V.42bis compression. */
       
  6669 		EV42bisNeitherDirection,
       
  6670 	/** Call set-up will request V.42bis compression in initiator-responder direction 
       
  6671 	only. */
       
  6672 		EV42bisTxDirection,
       
  6673 	/** Call set-up will request V.42bis compression in responder-initiator direction 
       
  6674 	only. */
       
  6675 		EV42bisRxDirection,
       
  6676 	/** Call set-up will request V.42bis compression in both directions. */
       
  6677 		EV42bisBothDirections
       
  6678 		};
       
  6679 
       
  6680 	
       
  6681 	
       
  6682 
       
  6683 	class TMobileDataCallParamsV1 : public TMobileCallParamsV1
       
  6684 /** Defines the parameters used for setup of a circuit switched data call. 
       
  6685 */
       
  6686 		{
       
  6687 	public:
       
  6688 		IMPORT_C TMobileDataCallParamsV1();
       
  6689 	public:
       
  6690 	/** The type of data service.
       
  6691 	
       
  6692 	@see TMobileCallDataService */
       
  6693 		TMobileCallDataService iService;
       
  6694 	/** The data transfer rate.
       
  6695 
       
  6696 	@see TMobileCallDataSpeed */
       
  6697 		TMobileCallDataSpeed iSpeed;
       
  6698 	/** The ITU-T standard modulation protocol or higher application protocol. */
       
  6699 		TMobileCallDataProtocol iProtocol;
       
  6700 	/** The quality of data service.
       
  6701 	
       
  6702 	@see TMobileCallDataQoS */
       
  6703 		TMobileCallDataQoS iQoS;
       
  6704 	/** The version of Radio Link Protocol.
       
  6705 	
       
  6706 	Modes: GSM/WCDMA
       
  6707 	
       
  6708 	@see TMobileCallDataRLPVersion */
       
  6709 		TMobileCallDataRLPVersion iRLPVersion;
       
  6710 	/** The IWF to MS windows size.
       
  6711 	
       
  6712 	Modes: GSM/WCDMA */
       
  6713 		TInt iModemToMSWindowSize;
       
  6714 	/** The MS window to IWF size.
       
  6715 	
       
  6716 	Modes: GSM/WCDMA */
       
  6717 		TInt iMSToModemWindowSize;
       
  6718 	/** The acknowledgement timer.
       
  6719 	
       
  6720 	Modes: GSM/WCDMA */
       
  6721 		TInt iAckTimer;
       
  6722 	/** The number of retransmission attempts.
       
  6723 	
       
  6724 	Modes: GSM/WCDMA */
       
  6725 		TInt iRetransmissionAttempts;
       
  6726 	/** The resequencing period in integer format.
       
  6727 	
       
  6728 	Modes: GSM/WCDMA */
       
  6729 		TInt iResequencingPeriod;
       
  6730 	/** The V42bis compression request parameter.
       
  6731 	
       
  6732 	@see TMobileCallDataV42bis */
       
  6733 		TMobileCallDataV42bis iV42bisReq;
       
  6734 	/** The number of codewords in the algorithm. */
       
  6735 		TInt iV42bisCodewordsNum;
       
  6736 	/** The maximum encodable data string length. */
       
  6737 		TInt iV42bisMaxStringLength;
       
  6738 		TBool iUseEdge; // True for ECSD
       
  6739 		};
       
  6740 
       
  6741 /** A typedef'd packaged TMobileDataCallParamsV1 for passing through a generic API 
       
  6742 function member. */
       
  6743 	typedef TPckg<TMobileDataCallParamsV1> TMobileDataCallParamsV1Pckg;
       
  6744 
       
  6745 	
       
  6746 	
       
  6747 
       
  6748 	class TMobileDataCallParamsV2 : public TMobileDataCallParamsV1
       
  6749 /** Defines the parameters used for setup of a circuit switched data call for version 
       
  6750 v2.0 of the API. 
       
  6751 */
       
  6752 		{
       
  6753 	public:
       
  6754 		IMPORT_C TMobileDataCallParamsV2();
       
  6755 	public:
       
  6756 	/** The bearer mode. */
       
  6757 		TMobileCallMulticallBearerMode iBearerMode;
       
  6758 		};
       
  6759 
       
  6760 /** A typedef'd packaged TMobileDataCallParamsV2 for passing through a generic 
       
  6761 API function member. */
       
  6762 	typedef TPckg<TMobileDataCallParamsV2> TMobileDataCallParamsV2Pckg;
       
  6763 
       
  6764 /** The Air interface user rate.
       
  6765 
       
  6766 Modes: GSM/WCDMA. */
       
  6767 	enum TMobileCallAiur
       
  6768 		{
       
  6769 	/** Air interface user rate is not set. */
       
  6770 		EAiurBpsUnspecified,
       
  6771 	/** Air interface user rate of 9.6Kbps. */
       
  6772 		EAiurBps9600,
       
  6773 	/** Air interface user rate of 14.4Kbps. */
       
  6774 		EAiurBps14400,
       
  6775 	/** Air interface user rate of 19.2Kbps. */
       
  6776 		EAiurBps19200,
       
  6777 	/** Air interface user rate of 28.8Kbps. */
       
  6778 		EAiurBps28800,
       
  6779 	/** Air interface user rate of 38.4Kbps. */
       
  6780 		EAiurBps38400,
       
  6781 	/** Air interface user rate of 43.2Kbps. */
       
  6782 		EAiurBps43200,
       
  6783 	/** Air interface user rate of 57.6Kbps. */
       
  6784 		EAiurBps57600
       
  6785 		};
       
  6786 
       
  6787 /** Call Asymmetry preferences.
       
  6788 
       
  6789 Modes: GSM/WCDMA
       
  6790 
       
  6791 @see TMobileHscsdCallParamsV1 */
       
  6792 	enum TMobileCallAsymmetry
       
  6793 		{
       
  6794 	/** There is no preference for Asymmetry Bias. */
       
  6795 		EAsymmetryNoPreference,
       
  6796 	/** Downlink Bias is preferred. */
       
  6797 		EAsymmetryDownlink,
       
  6798 	/** Uplink Bias is preferred. */
       
  6799 		EAsymmetryUplink
       
  6800 		};
       
  6801 
       
  6802 /** The call channel coding used.
       
  6803 
       
  6804 Modes: GSM/WCDMA */
       
  6805 	enum TMobileCallTchCoding
       
  6806 		{
       
  6807 	/** Channel coding is unspecified. */
       
  6808 		ETchCodingUnspecified,
       
  6809 	/** 4.8K full rate data traffic channel is used. */
       
  6810 		ETchCoding48,
       
  6811 	/** 9.6K full rate data traffic channel is used. */
       
  6812 		ETchCoding96,
       
  6813 	/** 14.4K full rate data traffic channel is used. */
       
  6814 		ETchCoding144,
       
  6815 	/** 28.8K full rate data traffic channel is used. */
       
  6816 		ETchCoding288,
       
  6817 	/** 32.0K full rate data traffic channel is used. */
       
  6818 		ETchCoding320,
       
  6819 	/** 43.2K full rate data traffic channel is used. */
       
  6820 		ETchCoding432
       
  6821 		};
       
  6822 
       
  6823 	
       
  6824 
       
  6825 	class TMobileDataRLPRangesV1 : public RMobilePhone::TMultimodeType
       
  6826 /** Defines the parameters for minimum and maximum RLP parameter ranges.
       
  6827 
       
  6828 Modes: GSM/WCDMA 
       
  6829 
       
  6830 */
       
  6831 		{
       
  6832 	public:
       
  6833 		IMPORT_C TMobileDataRLPRangesV1();
       
  6834 	public:
       
  6835 	/** Maximum modem to MS window size value. */
       
  6836 		TInt  iIWSMax;
       
  6837 	/** Minimum modem to MS window size value. */
       
  6838 		TInt  iIWSMin;
       
  6839 	/** Maximum MS to modem window size value. */
       
  6840 		TInt  iMWSMax;
       
  6841 	/** Minimum MS to modem window size value. */
       
  6842 		TInt  iMWSMin;
       
  6843 	/** Maximum acknowledgement timer value. */
       
  6844 		TInt  iT1Max;
       
  6845 	/** Minimum acknowledgement timer value. */
       
  6846 		TInt  iT1Min;
       
  6847 	/** Maximum retransmission attempts value. */
       
  6848 		TInt  iN2Max;
       
  6849 	/** Minimum retransmission attempts value. */
       
  6850 		TInt  iN2Min;
       
  6851 	/** Maximum resequencing period value. */
       
  6852 		TInt  iT4Max;
       
  6853 	/** Minimum resequencing period value. */
       
  6854 		TInt  iT4Min;
       
  6855 		};
       
  6856 
       
  6857 /** A typedef'd packaged TMobileDataRLPRangesV1 for passing through a generic API 
       
  6858 function member. */
       
  6859 	typedef TPckg<TMobileDataRLPRangesV1> TMobileDataRLPRangesV1Pckg;
       
  6860 
       
  6861 	IMPORT_C void GetMobileDataCallRLPRange(TRequestStatus& aReqStatus, TInt aRLPVersion, TDes8& aRLPRange) const;
       
  6862 	
       
  6863 	class TMobileHscsdCallParamsV1 : public TMobileDataCallParamsV1
       
  6864 /** The High Speed Circuit Switched Data parameters. 
       
  6865 */
       
  6866 		{
       
  6867 	public:
       
  6868 		IMPORT_C TMobileHscsdCallParamsV1();
       
  6869 	public:
       
  6870 	/** The wanted Air Interface Rate for the HSCSD call being set-up.
       
  6871 	
       
  6872 	Modes: GSM/WCDMA
       
  6873 
       
  6874 	@see TMobileCallAiur */
       
  6875 		TMobileCallAiur	iWantedAiur;
       
  6876 	/** The wanted number of receive timeslots for the HSCSD call being set-up.
       
  6877 	
       
  6878 	Modes: GSM/WCDMA */
       
  6879 		TInt iWantedRxTimeSlots;
       
  6880 		TInt iMaxTimeSlots;
       
  6881 	/** Bit-wise sum of acceptable air interface channel codings TMobileCallAiurCodingCaps 
       
  6882 	for the HSCSD call being set-up.
       
  6883 	
       
  6884 	Modes: GSM/WCDMA */
       
  6885 		TUint iCodings;
       
  6886 	/** The wanted asymmetry bias for the HSCSD call being set-up.
       
  6887 	
       
  6888 	Modes: GSM/WCDMA
       
  6889 	
       
  6890 	@see TMobileCallAsymmetry */
       
  6891 		TMobileCallAsymmetry  iAsymmetry;
       
  6892 	/** A boolean indicating whether or not automatic user initiated service level upgrading 
       
  6893 	is active for the HSCSD call being set-up. ETrue means enabled, EFalse means 
       
  6894 	disabled.
       
  6895 	
       
  6896 	Modes: GSM/WCDMA */
       
  6897 		TBool iUserInitUpgrade;
       
  6898 		};
       
  6899 
       
  6900 /** A typedef'd packaged TMobileHscsdCallParamsV1 for passing through a generic 
       
  6901 API function member. */
       
  6902 	typedef TPckg<TMobileHscsdCallParamsV1> TMobileHscsdCallParamsV1Pckg;
       
  6903 
       
  6904 	class TMobileHscsdCallParamsV2 : public TMobileHscsdCallParamsV1
       
  6905 /** Call parameters for High Speed Circuit Switched Data (HSCSD) for version v2.0 
       
  6906 of the API. 
       
  6907 
       
  6908 */
       
  6909 		{
       
  6910 	public:
       
  6911 		IMPORT_C TMobileHscsdCallParamsV2();
       
  6912 	public:
       
  6913 	/** The bearer mode. */
       
  6914 		TMobileCallMulticallBearerMode iBearerMode;
       
  6915 		};
       
  6916 
       
  6917 /** A typedef'd packaged TMobileHscsdCallParamsV2 for passing through a generic 
       
  6918 API function member. */
       
  6919 	typedef TPckg<TMobileHscsdCallParamsV2> TMobileHscsdCallParamsV2Pckg;
       
  6920 
       
  6921 	IMPORT_C void SetDynamicHscsdParams(TRequestStatus& aReqStatus, TMobileCallAiur aAiur, TInt aRxTimeslots) const;
       
  6922 
       
  6923 	class TMobileCallHscsdInfoV1 : public RMobilePhone::TMultimodeType
       
  6924 /** The HSCSD settings.
       
  6925 
       
  6926 Modes: GSM/WCDMA 
       
  6927 
       
  6928 */
       
  6929 		{
       
  6930 	public:
       
  6931 		IMPORT_C TMobileCallHscsdInfoV1();
       
  6932 	public:
       
  6933 	/** Current AIUR for the HSCSD call.
       
  6934 	
       
  6935 	@see TMobileCallAiur */
       
  6936 		TMobileCallAiur	iAiur;
       
  6937 	/** Current number of receive timeslots for the HSCSD call. */
       
  6938 		TInt iRxTimeSlots;
       
  6939 	/** Current number of transmit time slots for the HSCSD call. */
       
  6940 		TInt iTxTimeSlots;
       
  6941 	/** Current channel coding for the HSCSD call. */
       
  6942 		TMobileCallTchCoding iCodings;
       
  6943 		};
       
  6944 
       
  6945 /** A typedef'd packaged TMobileCallHscsdInfoV1 for passing through a generic API 
       
  6946 function member. */
       
  6947 	typedef TPckg<TMobileCallHscsdInfoV1> TMobileCallHscsdInfoV1Pckg;
       
  6948 
       
  6949 	IMPORT_C TInt GetCurrentHscsdInfo(TDes8& aHSCSDInfo) const;
       
  6950 	IMPORT_C void NotifyHscsdInfoChange(TRequestStatus& aReqStatus, TDes8& aHSCSDInfo) const;
       
  6951 
       
  6952 	/***********************************************************************************/
       
  6953 	//
       
  6954 	// Multimedia Calls
       
  6955 	//
       
  6956 	/***********************************************************************************/
       
  6957 
       
  6958 	IMPORT_C void AnswerMultimediaCallAsVoice(TRequestStatus& aReqStatus, const TDesC8& aCallParams, TName& aCallName) const;
       
  6959 	IMPORT_C void NotifyVoiceFallback(TRequestStatus& aReqStatus, TName& aCallName) const;
       
  6960 
       
  6961 	//
       
  6962 	// Mobile Alternating Call Functional Unit
       
  6963 	//
       
  6964 
       
  6965 	IMPORT_C void SwitchAlternatingCall(TRequestStatus& aReqStatus) const;
       
  6966 	IMPORT_C void NotifyAlternatingCallSwitch(TRequestStatus& aReqStatus) const;
       
  6967 
       
  6968 	/***********************************************************************************/
       
  6969 	//
       
  6970 	// MobileCallControl functional unit
       
  6971 	//
       
  6972 	/***********************************************************************************/
       
  6973 
       
  6974 /** Mobile call control capabilites.
       
  6975 
       
  6976 Modes: Common */
       
  6977 	enum TMobileCallControlCaps 
       
  6978 		{
       
  6979 		//KCapsData=0x00000001, // taken from etel.h
       
  6980 		//KCapsFax=0x00000002,
       
  6981 		//KCapsVoice=0x00000004,
       
  6982 		//KCapsDial=0x00000008,
       
  6983 		//KCapsConnect=0x00000010,
       
  6984 		//KCapsHangUp=0x00000020,
       
  6985 		//KCapsAnswer=0x00000040,
       
  6986 		//KCapsLoanDataPort=0x00000080, 
       
  6987 		//KCapsRecoverDataPort=0x00000100
       
  6988 	/** Indicates that this call can be put on hold. This implies that the call is currently 
       
  6989 	active and that there is no other held call. */
       
  6990 		KCapsHold = 0x00000200,
       
  6991 	/** Indicates that this call can be resumed. This implies that the call is currently 
       
  6992 	on hold and that there is no other active call. 
       
  6993 	
       
  6994 	Modes: Common */
       
  6995 		KCapsResume = 0x00000400,
       
  6996 	/** Indicates that this call's state can be swapped to the opposite state. This
       
  6997 	implies that this call is either active or held. There may be another call 
       
  6998 	in the opposite state and if this is the case then both calls will be simultaneously 
       
  6999 	swapped to their opposite state. 
       
  7000 	
       
  7001 	Modes: Common */
       
  7002 		KCapsSwap = 0x00000800,
       
  7003 	/** Indicates that this incoming call can be deflected to another destination. 
       
  7004 	
       
  7005 	Modes: GSM/WCDMA */
       
  7006 		KCapsDeflect = 0x00001000,
       
  7007 	/** Indicates that this call can be transferred to the remote party of another call. 
       
  7008 	For this capability to be set there must be one active call and one held or 
       
  7009 	dialing call.
       
  7010 	
       
  7011 	Modes: GSM/WCDMA */
       
  7012 		KCapsTransfer = 0x00002000,
       
  7013 	/** Indicates that this call can be joined either to another single call to form 
       
  7014 	a conference call or to an existing conference call.
       
  7015 	
       
  7016 	Modes: Common */
       
  7017 		KCapsJoin = 0x00004000,
       
  7018 	/** Indicates that this call (within a conference call) can go into One to One mode. 
       
  7019 	This action would put the rest of the conference call on hold. 
       
  7020 	
       
  7021 	Modes: GSM/WCDMA */
       
  7022 		KCapsOneToOne = 0x00008000,
       
  7023 	/** Indicates that the user can activate a CCBS request on this failed call set-up. 
       
  7024 	
       
  7025 	Modes: GSM/WCDMA */
       
  7026 		KCapsActivateCCBS = 0x00010000,
       
  7027 	/** Indicates that this call is part of an alternating call and the client can call 
       
  7028 	SwitchAlternatingCall() on this call in order to switch it to its other mode.
       
  7029 	
       
  7030 	Modes: GSM/WCDMA */
       
  7031 		KCapsSwitchAlternatingCall = 0x00020000,
       
  7032 	/** Indicates that this call can use/create a new bearer. This means that multiple 
       
  7033 	calls (multicall) can be active at the same time using no more that 7 bearers 
       
  7034 	simultaneously. The other option is to swap with an active call, therefore 
       
  7035 	it becomes held and shares the same bearer.
       
  7036 	
       
  7037 	Modes: WCDMA */
       
  7038 		KCapsMulticall = 0x00040000
       
  7039 		};
       
  7040 
       
  7041 
       
  7042 /** Mobile call events capabilities.
       
  7043 
       
  7044 Modes: Common */
       
  7045 	enum TMobileCallEventCaps
       
  7046 		{
       
  7047 	/** Indicates that local hold notifications are supported.
       
  7048 	
       
  7049 	Modes: Common */
       
  7050 		KCapsLocalHold = 0x00000001,
       
  7051 	/** Indicates that local resume notifications are supported. 
       
  7052 	
       
  7053 	Modes: Common */
       
  7054 		KCapsLocalResume = 0x00000002,
       
  7055 	/** Indicates that local deflect transfer notifications are supported. 
       
  7056 	
       
  7057 	Modes: GSM/WCDMA */
       
  7058 		KCapsLocalDeflectCall = 0x00000004,
       
  7059 	/** Indicates that local explicit transfer notifications are supported. 
       
  7060 	
       
  7061 	Modes: GSM/WCDMA */
       
  7062 		KCapsLocalTransfer = 0x00000008,
       
  7063 	/** Indicates that remote hold notifications are supported. 
       
  7064 
       
  7065 	Modes: GSM/WCDMA */
       
  7066 		KCapsRemoteHold = 0x00000010,
       
  7067 	/** Indicates that remote resume notifications are supported. 
       
  7068 	
       
  7069 	Modes: GSM/WCDMA */
       
  7070 		KCapsRemoteResume = 0x00000020,
       
  7071 	/** Indicates that remote termination notifications are supported. 
       
  7072 	
       
  7073 	Modes: Common */
       
  7074 		KCapsRemoteTerminate = 0x00000040,
       
  7075 	/** Indicates that remote conference invocation notifications are supported.
       
  7076 	
       
  7077 	Modes: GSM/WCDMA */
       
  7078 		KCapsRemoteConferenceCreate = 0x00000080
       
  7079 		};
       
  7080 
       
  7081 	
       
  7082 
       
  7083 	class TMobileCallCapsV1 : public RMobilePhone::TMultimodeType
       
  7084 /** Defines the dynamic capabilities of a mobile call. 
       
  7085 */
       
  7086 		{
       
  7087 	public:
       
  7088 		IMPORT_C TMobileCallCapsV1();
       
  7089 	public:
       
  7090 	/** Call control capability information - a bit wise sum of TMobileCallControlCaps 
       
  7091 	constants */
       
  7092 		TUint32 iCallControlCaps;
       
  7093 	/** Call event capability information - a bit wise sum of TMobileCallEventCaps constants. */
       
  7094 		TUint32 iCallEventCaps;
       
  7095 		};
       
  7096 
       
  7097 /** A typedef'd packaged TMobileCallCapsV1 for passing through a generic API function 
       
  7098 member. */
       
  7099 	typedef TPckg<TMobileCallCapsV1> TMobileCallCapsV1Pckg;
       
  7100 
       
  7101 	IMPORT_C TInt GetMobileCallCaps(TDes8& aCaps) const;
       
  7102 	IMPORT_C void NotifyMobileCallCapsChange(TRequestStatus& aReqStatus, TDes8& aCaps) const;
       
  7103 
       
  7104 	IMPORT_C void Hold(TRequestStatus& aReqStatus) const;
       
  7105 	IMPORT_C void Resume(TRequestStatus& aReqStatus) const;
       
  7106 	IMPORT_C void Swap(TRequestStatus& aReqStatus) const;
       
  7107 	IMPORT_C void DialISV(TRequestStatus& aStatus,const TDesC8& aCallParams,const TTelNumberC& aTelNumber);
       
  7108 	IMPORT_C void AnswerIncomingCallISV(TRequestStatus& aStatus,const TDesC8& aCallParams);
       
  7109 
       
  7110 /** The type of call deflection requested.
       
  7111 
       
  7112 @see Deflect() */
       
  7113 	enum TMobileCallDeflect
       
  7114 		{
       
  7115 	/** Destination is not specified. */
       
  7116 		EDeflectUnspecified,
       
  7117 	/** Call will be deflected to voicemail. */
       
  7118 		EDeflectVoicemail,
       
  7119 	/** Call will be deflected to the pre-registered number for the call forwarding 
       
  7120 	service. */
       
  7121 		EDeflectRegisteredNumber,
       
  7122 	/** Call will be deflected to the number supplied in the aDestination parameter. */
       
  7123 		EDeflectSuppliedNumber
       
  7124 		};
       
  7125 
       
  7126 	IMPORT_C void Deflect(TRequestStatus& aReqStatus, TMobileCallDeflect aDeflectType, const RMobilePhone::TMobileAddress& aDestination) const;
       
  7127 	IMPORT_C void Transfer(TRequestStatus& aReqStatus) const;
       
  7128 	IMPORT_C void GoOneToOne(TRequestStatus& aReqStatus) const;
       
  7129 
       
  7130 /** The mobile call events.
       
  7131 
       
  7132 Modes: Common */
       
  7133 	enum TMobileCallEvent
       
  7134 		{
       
  7135 	/** The call has been placed on hold as a result of a local action. 
       
  7136 	
       
  7137 	Modes: Common */
       
  7138 		ELocalHold,
       
  7139 	/** The call has been resumed as a result of a local action. 
       
  7140 	
       
  7141 	Modes: Common */
       
  7142 		ELocalResume,
       
  7143 	/** The call has been deflected to another remote party as a result of a local action. 
       
  7144 	
       
  7145 	
       
  7146 	Modes: GSM/WCDMA */
       
  7147 		ELocalDeflectCall,
       
  7148 	/** The call has been transferred to another remote party as a result of a local 
       
  7149 	action. 
       
  7150 	
       
  7151 	Modes: Common */
       
  7152 		ELocalTransfer,
       
  7153 	/** The call has been placed on hold by the remote connected party. 
       
  7154 	
       
  7155 	Modes: GSM/WCDMA */
       
  7156 		ERemoteHold,
       
  7157 	/** The call has been resumed by the remote connected party. 
       
  7158 	
       
  7159 	Modes: GSM/WCDMA */
       
  7160 		ERemoteResume,
       
  7161 	/** The call has been terminated by the remote party. 
       
  7162 	
       
  7163 	Modes: Common */
       
  7164 		ERemoteTerminated,
       
  7165 	/** The call has been joined by the remote connected party to other call(s) to create/add 
       
  7166 	to a conference call. 
       
  7167 	
       
  7168 	Modes: GSM/WCDMA */
       
  7169 		ERemoteConferenceCreate,
       
  7170 		ERemoteTransferring,
       
  7171 		ERemoteTransferAlerting,
       
  7172 	/** The outgoing call has been barred by the remote party. 
       
  7173 	
       
  7174 	Modes: GSM/WCDMA */
       
  7175 		ERemoteBarred,
       
  7176 	/** The call is being forwarded by the remote party. 
       
  7177 	
       
  7178 	Modes: GSM/WCDMA */
       
  7179 		ERemoteForwarding,
       
  7180 	/** The call is waiting at the remote end. 
       
  7181 	
       
  7182 	Modes: GSM/WCDMA */
       
  7183 		ERemoteWaiting,
       
  7184 	/** The outgoing call has been barred by the local party. 
       
  7185 	
       
  7186 	Modes: GSM/WCDMA */
       
  7187 		ELocalBarred
       
  7188 		};
       
  7189 
       
  7190 	IMPORT_C void NotifyCallEvent(TRequestStatus& aReqStatus, TMobileCallEvent& aEvent) const;
       
  7191 
       
  7192 /** Describes the possible call states. */
       
  7193 	enum TMobileCallStatus
       
  7194 		{
       
  7195 	/** Indicates that the call status is unknown. */
       
  7196 		EStatusUnknown,			// same as RCall::EStatusUnknown
       
  7197 	/** Indicates that the call is idle. */
       
  7198 		EStatusIdle,			// same as RCall::EStatusIdle
       
  7199 		EStatusDialling,		// same as RCall::EStatusDialling
       
  7200 	/** Indicates that the MT call is ringing but not answered yet by the local user. */
       
  7201 		EStatusRinging,			// same as RCall::EStatusRinging
       
  7202 	/** Indicates that the local user has answered the MT call but the network has not 
       
  7203 	acknowledged the call connection yet. */
       
  7204 		EStatusAnswering,		// same as RCall::EStatusAnswering
       
  7205 	/** MO Call: the network notifies to the MS that the remote party is now ringing. */
       
  7206 		EStatusConnecting,		// same as RCall::EStatusConnecting
       
  7207 	/** Indicates that call is connected and active. */
       
  7208 		EStatusConnected,		// same as RCall::EStatusConnected
       
  7209 	/** Indicates that call is disconnecting. */
       
  7210 		EStatusDisconnecting,	// same as RCall::EStatusHangingUp
       
  7211 	/** Indicates that the call is disconnecting with inband data (to enable the network 
       
  7212 	to send an audio tone), signifying that the call is not to be released until 
       
  7213 	the user terminates the call. */
       
  7214 		EStatusDisconnectingWithInband,
       
  7215 	/** Indicates that call is undergoing temporary channel loss and it may or may not 
       
  7216 	be reconnected. */
       
  7217 		EStatusReconnectPending,
       
  7218 	/** Indicates that the call is connected but on hold. */
       
  7219 		EStatusHold,
       
  7220 	/** Indicates that the call is the non-active half of an alternating call. This 
       
  7221 	call is waiting for its active half or the remote end to switch alternating 
       
  7222 	call mode. */
       
  7223 		EStatusWaitingAlternatingCallSwitch,
       
  7224 		EStatusTransferring,
       
  7225 		EStatusTransferAlerting
       
  7226 		};
       
  7227 
       
  7228 	IMPORT_C TInt GetMobileCallStatus(TMobileCallStatus& aStatus) const;
       
  7229 	IMPORT_C void NotifyMobileCallStatusChange(TRequestStatus& aReqStatus, TMobileCallStatus& aStatus) const;
       
  7230 
       
  7231 	IMPORT_C void DialNoFdnCheck(TRequestStatus& aStatus,const TDesC& aTelNumber) const;
       
  7232 	IMPORT_C void DialNoFdnCheck(TRequestStatus& aStatus,const TDesC8& aCallParams,const TDesC& aTelNumber) const;
       
  7233 	
       
  7234 	/**
       
  7235 	Contains audio tone events.
       
  7236 	*/
       
  7237 	enum TMobileCallAudioToneEvent
       
  7238 		{
       
  7239 		/**
       
  7240 		Stop audio tone.
       
  7241 		*/
       
  7242 		EAudioStop,
       
  7243 		/**
       
  7244 		Start audio tone.
       
  7245 		*/
       
  7246 		EAudioStart		
       
  7247 		};
       
  7248 		
       
  7249 	/**
       
  7250 	List of 3GPP defined supervisory audio tones taken from technical specification 3GPP TS 22.001 v4.0.0 Annex F.
       
  7251 
       
  7252 	This enumeration is based on the signal information element specified in Table 10.5.130/3GPP TS 24.008 v5.15.0
       
  7253 	*/
       
  7254 	enum TMobileCallAudioTones	
       
  7255 		{
       
  7256 		/** 
       
  7257 		No tone.  Not defined in specification used for initialisation of 
       
  7258 		iTone class member variable during TAudioToneV3 construction.
       
  7259 		*/
       
  7260 		ENoTone,
       
  7261 		/**
       
  7262 		Dial tone.
       
  7263 		*/
       
  7264 		EDialTone,
       
  7265 		/**
       
  7266 		Subscriber busy tone.
       
  7267 		*/
       
  7268 		ESubscriberBusyTone,
       
  7269 		/**
       
  7270 		Congestion tone.
       
  7271 		*/
       
  7272 		ECongestionTone,
       
  7273 		/**
       
  7274 		Radio path acknowledgement tone.
       
  7275 		*/
       
  7276 		ERadioPathAcknowledgement,
       
  7277 		/**
       
  7278 		Radio path not available tone.
       
  7279 		*/
       
  7280 		ERadioPathNotAvailable,
       
  7281 		/**
       
  7282 		Call dropped (Mobile Originated only).
       
  7283 		*/
       
  7284  		EMOCallDropped,
       
  7285  		/**
       
  7286 		Error special information.
       
  7287 		*/
       
  7288  		EErrorSpecialInformation,
       
  7289  		/**
       
  7290 		Number unobtainable.
       
  7291 		*/
       
  7292  		ENumberUnobtainable,
       
  7293  		/**
       
  7294 		Authentication failure.
       
  7295 		*/
       
  7296  		EAuthenticationFailure,
       
  7297  		/**
       
  7298 		Call waiting.
       
  7299 		*/
       
  7300  		ECallWaiting,
       
  7301  		/**
       
  7302 		Ringback tone.
       
  7303 		*/
       
  7304 		ERingback
       
  7305 		};
       
  7306 
       
  7307 	class TAudioToneV3 :  public RMobilePhone::TMultimodeType
       
  7308 	/**
       
  7309 	Audio tone version 1 class. Contains information relating to the  call control playing of audio tones. 
       
  7310 	Tones maybe generated by the network (in-band) or signalled to be played locally by the ME.
       
  7311 	@publishedPartner
       
  7312 	@released
       
  7313 	*/
       
  7314 		{
       
  7315 	public:
       
  7316 		IMPORT_C TAudioToneV3();
       
  7317 		
       
  7318 	public:
       
  7319 		/**
       
  7320 		Indicates whether the tone is starting or stopping playing.
       
  7321 		*/
       
  7322 		TMobileCallAudioToneEvent iEvent;
       
  7323 		/**
       
  7324 		Indicates which tone is to be played.
       
  7325 		*/
       
  7326 		TMobileCallAudioTones	iTone;
       
  7327 		/**
       
  7328 		Indicates whether the tone is played by the network or is to be played locally by the ME.
       
  7329 		*/
       
  7330 		TBool iPlayedLocally; 
       
  7331 		};
       
  7332 
       
  7333 	/**
       
  7334 	Packaging typedef for TAudioToneV3 class.
       
  7335 	*/
       
  7336 	typedef TPckg<TAudioToneV3> TAudioToneV3Pckg;
       
  7337 	
       
  7338 	IMPORT_C void NotifyAudioToneEvent(TRequestStatus& aReqStatus, TDes8& aToneInfo) const;
       
  7339 
       
  7340 	/***********************************************************************************/
       
  7341 	//
       
  7342 	// MobilePrivacy functional unit
       
  7343 	//
       
  7344 	/***********************************************************************************/
       
  7345 
       
  7346 	IMPORT_C TInt SetPrivacy(RMobilePhone::TMobilePhonePrivacy aPrivacySetting) const;
       
  7347 	IMPORT_C void NotifyPrivacyConfirmation(TRequestStatus& aReqStatus, RMobilePhone::TMobilePhonePrivacy& aPrivacySetting) const;
       
  7348 
       
  7349 	/***********************************************************************************/
       
  7350 	//
       
  7351 	// MobileTrafficChannel function unit
       
  7352 	//
       
  7353 	/***********************************************************************************/
       
  7354 
       
  7355 /** Call traffic channels.
       
  7356 
       
  7357 Modes: CDMA */
       
  7358 	enum TMobileCallTch
       
  7359 		{
       
  7360 	/** The traffic channel of the call is unknown. */
       
  7361 		ETchUnknown,
       
  7362 	/** The call has a digital traffic channel */
       
  7363 		ETchDigital,
       
  7364 	/** The call has an analog traffic channel */
       
  7365 		ETchAnalog
       
  7366 		};
       
  7367 
       
  7368 	IMPORT_C TInt SetTrafficChannel(TMobileCallTch aTchRequest) const;
       
  7369 	IMPORT_C void NotifyTrafficChannelConfirmation(TRequestStatus& aReqStatus, TMobileCallTch& aTchType) const;
       
  7370 
       
  7371 	/***********************************************************************************/
       
  7372 	//
       
  7373 	// MobileCallInformation functional unit
       
  7374 	//
       
  7375 	/***********************************************************************************/
       
  7376 
       
  7377 	/**
       
  7378 	Remote party Identity status.
       
  7379 
       
  7380 	Modes: Common
       
  7381 
       
  7382 	@see TMobileCallRemotePartyInfoV1
       
  7383 	*/
       
  7384 	enum TMobileCallRemoteIdentityStatus
       
  7385 		{
       
  7386 		/**
       
  7387 		The remote party's identity can not be determined.  Calling
       
  7388 		party's Binary Coded Decimal (BCD) number is not available.
       
  7389 		Cause of No CLI is "unavailable".
       
  7390 		*/
       
  7391 		ERemoteIdentityUnknown,
       
  7392 
       
  7393 		/**
       
  7394 		The remote party's identity, or BCD number, is available.
       
  7395 		However, cause of No CLI has not been set.
       
  7396 		*/
       
  7397 		ERemoteIdentityAvailable,
       
  7398 
       
  7399 		/**
       
  7400 		The remote party has suppressed the transmission of its
       
  7401 		identity; i.e. their BCD number is not available.  Cause of No
       
  7402 		CLI is "reject by user".
       
  7403 		*/
       
  7404 		ERemoteIdentitySuppressed,
       
  7405 		/**
       
  7406 		The remote party's identity, or BCD number, is available.  The
       
  7407 		cause of No CLI is "reject by user".
       
  7408 
       
  7409 		To be used where the network has specified that displaying of
       
  7410 		CLI information of the remote party has been rejected by the
       
  7411 		caller but the TMobileCallRemotePartyInfoV1::iRemoteNumber
       
  7412 		parameter has been populated with some other string which may
       
  7413 		be of use to the client.
       
  7414 		*/
       
  7415 		ERemoteIdentityAvailableNoCliRejectedByUser,
       
  7416 
       
  7417 		/**
       
  7418 		The remote party's identity is available; a BCD number is
       
  7419 		available.  The cause of No CLI is "Interaction with other
       
  7420 		service".
       
  7421 
       
  7422 		To be used where the network has specified that CLI information
       
  7423 		of the remote party is not available due to ineraction with
       
  7424 		another service.  However, the
       
  7425 		TMobileCallRemotePartyInfoV1::iRemoteNumber parameter has been
       
  7426 		populated with some other string which may be of use to the
       
  7427 		client.
       
  7428 		*/
       
  7429 		ERemoteIdentityAvailableNoCliInteractionWithOtherService,
       
  7430 		/**
       
  7431 		The remote party's identity, or BCD number, is unavailable.
       
  7432 		Cause of No CLI is "interaction with other service".
       
  7433 		*/
       
  7434 		ERemoteIdentityUnavailableNoCliInteractionWithOtherService,
       
  7435 
       
  7436 		/**
       
  7437 		The remote party's identity, or BCD number, is available.
       
  7438 		Cause of No CLI is "Coin Line/ Payphone".
       
  7439 
       
  7440 		To be used where the network has specified that CLI information
       
  7441 		of the remote party is not available as the caller is calling
       
  7442 		from a coin/ payphone.  However, the
       
  7443 		TMobileCallRemotePartyInfoV1::iRemoteNumber parameter has been
       
  7444 		populated with some other string which may be of use to the
       
  7445 		client.
       
  7446 		*/
       
  7447 		ERemoteIdentityAvailableNoCliCoinOrPayphone,
       
  7448 		/**
       
  7449 		The remote party's identity, or BCD number, is not available.
       
  7450 		Cause of No CLI is "Coin Line/ Payphone".
       
  7451 		*/
       
  7452 		ERemoteIdentityUnavailableNoCliCoinOrPayphone,
       
  7453 
       
  7454 		/**
       
  7455 		The remote party's identity, or BCD number, is available.
       
  7456 		Cause of No CLI is "unavailable".
       
  7457 
       
  7458 		To be used where the network has specified that the CLI
       
  7459 		information of the remote party is not available but the
       
  7460 		TMobileCallRemotePartyInfoV1::iRemoteNumber parameter has been
       
  7461 		populated with some other string which may be of use to the
       
  7462 		client.
       
  7463 		*/
       
  7464 		ERemoteIdentityAvailableNoCliUnavailable
       
  7465 		};
       
  7466 
       
  7467 
       
  7468 	/**
       
  7469 	The direction of the mobile call.
       
  7470 
       
  7471 	Modes: Common
       
  7472 
       
  7473 	@see TMobileCallRemotePartyInfoV1
       
  7474 	*/
       
  7475 	enum TMobileCallDirection
       
  7476 		{
       
  7477 	/** The direction of the call is unknown. */
       
  7478 		EDirectionUnknown,
       
  7479 	/** The call was originated by this phone, i.e. it is an outgoing call. */
       
  7480 		EMobileOriginated,
       
  7481 	/** The call was terminated by this phone, i.e. it is an incoming call. */
       
  7482 		EMobileTerminated
       
  7483 		};
       
  7484 
       
  7485 	enum { KCallingNameSize=80 };
       
  7486 
       
  7487 	
       
  7488 
       
  7489 	class TMobileCallRemotePartyInfoV1 : public RMobilePhone::TMultimodeType
       
  7490 /** Defines information about the remote party of a mobile call. 
       
  7491 */
       
  7492 		{
       
  7493 	public:
       
  7494 		IMPORT_C TMobileCallRemotePartyInfoV1();
       
  7495 	public:
       
  7496 	/** Indicates whether the remote party information in the rest of this structure 
       
  7497 	is valid or not.
       
  7498 	
       
  7499 	Modes: Common
       
  7500 	
       
  7501 	@see TMobileCallRemoteIdentityStatus */
       
  7502 		TMobileCallRemoteIdentityStatus iRemoteIdStatus;
       
  7503 	/** The direction of the call and hence the role of the remote party, i.e. if the 
       
  7504 	call is mobile originated then the remote party is the called party whereas 
       
  7505 	if the call is mobile terminated then the remote party is the calling party.
       
  7506 	
       
  7507 	Modes: Common
       
  7508 	
       
  7509 	@see TMobileCallDirection */
       
  7510 		TMobileCallDirection iDirection;
       
  7511 	/** The phone number of the remote party if available.
       
  7512 	
       
  7513 	Modes: Common
       
  7514 	
       
  7515 	@see RMobilePhone::TMobileAddress */
       
  7516 		RMobilePhone::TMobileAddress iRemoteNumber;
       
  7517 	/** Calling party name available through the CNAP supplementary service (if provisioned). 
       
  7518 	
       
  7519 	
       
  7520 	Modes: Common */
       
  7521 		TBuf<KCallingNameSize> iCallingName;
       
  7522 		};
       
  7523 
       
  7524 /** A typedef'd packaged TMobileCallRemotePartyInfoV1 for passing through a generic 
       
  7525 API function member. */
       
  7526 	typedef TPckg<TMobileCallRemotePartyInfoV1> TMobileCallRemotePartyInfoV1Pckg;
       
  7527 
       
  7528 	IMPORT_C void NotifyRemotePartyInfoChange(TRequestStatus& aReqStatus, TDes8& aRemotePartyInfo) const;
       
  7529 
       
  7530 /** Determines which fields in the class are valid.
       
  7531 
       
  7532 @see TMobileCallInfoV1 */
       
  7533 	enum TMobileCallInfoFlags
       
  7534 		{
       
  7535 	/** The iStartTime field is valid in the call info class.
       
  7536 	
       
  7537 	Modes: COMMON */
       
  7538 		KCallStartTime		= 0x00000001,
       
  7539 	/** The iDuration field is valid in the call info class.
       
  7540 	
       
  7541 	Modes: COMMON */
       
  7542 		KCallDuration		= 0x00000002,
       
  7543 	/** The iCallId field is valid in the call info class.
       
  7544 	
       
  7545 	Modes: COMMON */
       
  7546 		KCallId				= 0x00000004,
       
  7547 	/** The iRemoteParty field is valid in the call info class.
       
  7548 	
       
  7549 	Modes: COMMON */
       
  7550 		KCallRemoteParty	= 0x00000008,
       
  7551 	/** The iDialledParty field is valid in the call info class.
       
  7552 	
       
  7553 	Modes: COMMON */
       
  7554 		KCallDialledParty	= 0x00000010,
       
  7555 	/** The iExitCode field is valid in the call info class.
       
  7556 	
       
  7557 	Modes: COMMON */
       
  7558 		KCallExitCode		= 0x00000020,
       
  7559 	/** The iEmergency field is valid in the call info class.
       
  7560 	
       
  7561 	Modes: COMMON */
       
  7562 		KCallEmergency		= 0x00000040,
       
  7563 	/** The iForwarded field is valid in the call info class.
       
  7564 	
       
  7565 	Modes: COMMON */
       
  7566 		KCallForwarded		= 0x00000080,
       
  7567 	/** The iPrivacy field is valid in the call info class.
       
  7568 	
       
  7569 	Modes: CDMA */
       
  7570 		KCallPrivacy		= 0x00000100,
       
  7571 	/** The iTch field is valid in the call info class.
       
  7572 	
       
  7573 	Modes: CDMA */
       
  7574 		KCallTch			= 0x00000200,
       
  7575 	/** The iAlternatingCall field is valid in the call info class.
       
  7576 	
       
  7577 	Modes: GSM/WCDMA */
       
  7578 		KCallAlternating	= 0x00000400,
       
  7579 		KCallSecurity		= 0x00000800
       
  7580 		};
       
  7581 
       
  7582 	
       
  7583 
       
  7584 	class TMobileCallInfoV1 : public RMobilePhone::TMultimodeType
       
  7585 /** Defines general information about a mobile call. 
       
  7586 */
       
  7587 		{
       
  7588 	public:
       
  7589 		IMPORT_C TMobileCallInfoV1();
       
  7590 	public:
       
  7591 	/** A bit-wise sum of TMobileCallInfoFlags indicating which of the following optional 
       
  7592 	fields contain valid data. */
       
  7593 		TUint32 iValid;
       
  7594 	/** The call service (voice, data, fax, aux. voice) that this call provides.
       
  7595 	
       
  7596 	@see RMobilePhone::TMobileService */
       
  7597 		RMobilePhone::TMobileService iService;
       
  7598 	/** The mobile call status.
       
  7599 	
       
  7600 	@see TMobileCallStatus */
       
  7601 		static TMobileCallStatus iStatus;
       
  7602 	/** The call ID number assigned to an ongoing call. Will equal -1 if the call does 
       
  7603 	not have an allocated ID. */
       
  7604 		TInt iCallId;
       
  7605 	/** The reason for termination of a finished call. Will equal KErrNone if the call 
       
  7606 	ended normally and KErrNotFound if the call has not ended. */
       
  7607 		TInt iExitCode;
       
  7608 	/** ETrue if the call is an emergency call or EFalse if it is not. */
       
  7609 		TBool iEmergency;
       
  7610 	/** For a MT call, this attribute equals ETrue if the call has been forwarded to 
       
  7611 	this phone or EFalse if it has not. For a MO call, this attribute equals ETrue 
       
  7612 	if the call has been forwarded to another destination or EFalse if it has 
       
  7613 	not. If the phone can not determine whether the call has been forwarded or 
       
  7614 	not then the attribute will return EFalse. */
       
  7615 		TBool iForwarded;
       
  7616 	/** This attribute indicates whether privacy is on or off for this call.
       
  7617 	
       
  7618 	@see RMobilePhone::TMobilePhonePrivacy */
       
  7619 		RMobilePhone::TMobilePhonePrivacy iPrivacy;
       
  7620 	/** This attribute indicates whether this call is an alternating call or not.
       
  7621 	
       
  7622 	@see RMobilePhone::TMobilePhoneAlternatingCallMode */
       
  7623 		RMobilePhone::TMobilePhoneAlternatingCallMode iAlternatingCall;
       
  7624 	/** The current duration of the call.
       
  7625 	
       
  7626 	@see TTimeIntervalSeconds */
       
  7627 		TTimeIntervalSeconds iDuration;
       
  7628 	/** This attribute indicates whether a digital or analog traffic channel is being 
       
  7629 	used for this call.
       
  7630 	
       
  7631 	@see TMobileCallTch */
       
  7632 		TMobileCallTch iTch;
       
  7633 	/** Information about remote party of a connected call.
       
  7634 	
       
  7635 	@see TMobileCallRemotePartyInfoV1 */
       
  7636 		TMobileCallRemotePartyInfoV1 iRemoteParty;
       
  7637 	/** The original number (including DTMF) dialled for an outgoing call.
       
  7638 	
       
  7639 	@see RMobilePhone::TMobileAddress */
       
  7640 		RMobilePhone::TMobileAddress iDialledParty;
       
  7641 	/** The time and date the call started.
       
  7642 	
       
  7643 	@see TDateTime */
       
  7644 		TDateTime iStartTime;
       
  7645 	/** The name of the call.
       
  7646 	
       
  7647 	@see TName */
       
  7648 		TName iCallName;
       
  7649 	/** The name of the line on which the call is open.
       
  7650 	
       
  7651 	@see TName */
       
  7652 		TName iLineName;
       
  7653 		};
       
  7654 
       
  7655 /** A typedef'd packaged TMobileCallInfoV1 for passing through a generic API function 
       
  7656 member. */
       
  7657 	typedef TPckg<TMobileCallInfoV1> TMobileCallInfoV1Pckg;
       
  7658 	
       
  7659 	class TMobileCallInfoV3 : public TMobileCallInfoV1
       
  7660 	/**
       
  7661 	Extends the TMobileCallInfoV1 claass to include extra call info parameter relating to network security.
       
  7662 	@publishedPartner
       
  7663 	@released
       
  7664 	*/
       
  7665 		{
       
  7666 	public:
       
  7667 		IMPORT_C TMobileCallInfoV3();
       
  7668 	public:
       
  7669 		/**
       
  7670 		Indicates whether Ciphering Status of a call is enabled or disabled. 
       
  7671 		*/
       
  7672 		RMobilePhone::TMobilePhoneNetworkSecurity  iSecurity;
       
  7673 		};
       
  7674 		
       
  7675 	typedef TPckg<TMobileCallInfoV3> TMobileCallInfoV3Pckg;
       
  7676 
       
  7677 	IMPORT_C TInt GetMobileCallInfo(TDes8& aCallInfo) const;
       
  7678 
       
  7679 	/***********************************************************************************/
       
  7680 	//
       
  7681 	// MobileCallEmergency functional unit
       
  7682 	//
       
  7683 	/***********************************************************************************/
       
  7684 
       
  7685 	IMPORT_C void DialEmergencyCall(TRequestStatus& aReqStatus, const TDesC& aNumber) const;
       
  7686 
       
  7687 	/***********************************************************************************/
       
  7688 	//
       
  7689 	// MobileCallCompletion
       
  7690 	//
       
  7691 	/***********************************************************************************/
       
  7692 
       
  7693 	IMPORT_C void ActivateCCBS(TRequestStatus& aReqStatus, TInt& aIndex) const;
       
  7694 	IMPORT_C TInt RejectCCBS() const;
       
  7695 		//
       
  7696 	// User-To-User Signalling Functional Unit
       
  7697 	//
       
  7698 	/***********************************************************************************/
       
  7699 
       
  7700 /** The UUS capabilities of the call.
       
  7701 
       
  7702 Modes: GSM/WCDMA. */
       
  7703 	enum TMobileCallUUSCaps			// UUS capabilities of the call
       
  7704 		{
       
  7705 	/** Indicates that MS supports UUS1 implicit request. */
       
  7706 		KCapsSetupUUS1Implicit=0x00000001,
       
  7707 	/** Indicates that MS supports UUS1 explicit request. */
       
  7708 		KCapsSetupUUS1Explicit=0x00000002,
       
  7709 	/** Indicates that MS supports UUS2 request. */
       
  7710 		KCapsSetupUUS2=0x00000004,
       
  7711 	/** Indicates that MS supports UUS3 request. */
       
  7712 		KCapsSetupUUS3=0x00000008,
       
  7713 	/** Indicates that MS supports activating more than one UUS request at a time. */
       
  7714 		KCapsSetupMultipleUUS=0x00000010,
       
  7715 	/** Indicates that UUS1 is active for this call. */
       
  7716 		KCapsActiveUUS1=0x00000020,
       
  7717 	/** Indicates that UUS2 is active for this call. */
       
  7718 		KCapsActiveUUS2=0x00000040,
       
  7719 	/** Indicates that UUS3 is active for this call. */
       
  7720 		KCapsActiveUUS3=0x00000080
       
  7721 		};
       
  7722 
       
  7723 	IMPORT_C TInt GetUUSCaps(TUint32& aCaps) const;
       
  7724 	IMPORT_C void NotifyUUSCapsChange(TRequestStatus& aReqStatus, TUint32& aCaps) const;
       
  7725 
       
  7726 /** UUS Service requests.
       
  7727 
       
  7728 Modes: GSM/WCDMA */
       
  7729 	enum TMobileCallUUSReqs			// UUS Service requests
       
  7730 		{
       
  7731 	/** UUS1 is implicitly requested. */
       
  7732 		KUUS1Implicit=0x00000001,
       
  7733 	/** UUS1 is explicitly requested, but it is not mandatory for this call to proceed. */
       
  7734 		KUUS1ExplicitRequested=0x00000002,
       
  7735 	/** UUS1 is explicitly requested and it is mandatory for this call to proceed. */
       
  7736 		KUUS1ExplicitRequired=0x00000004,
       
  7737 	/** UUS2 is (explicitly) requested, but it is not mandatory for this call to proceed. */
       
  7738 		KUUS2Requested=0x00000008,
       
  7739 	/** UUS2 is (explicitly) requested and it is mandatory for this call to proceed. */
       
  7740 		KUUS2Required=0x00000010,
       
  7741 	/** UUS3 is (explicitly) requested, but it is not mandatory for this call to proceed. */
       
  7742 		KUUS3Requested=0x00000020,
       
  7743 	/** UUS3 is (explicitly) requested and it is mandatory for this call to proceed. */
       
  7744 		KUUS3Required=0x00000040
       
  7745 		};
       
  7746 
       
  7747 	enum 
       
  7748 		{
       
  7749 		KMaxUUISize = 129,
       
  7750 		};
       
  7751 
       
  7752 /** Buffer for the UUI element. */
       
  7753 	typedef TBuf<KMaxUUISize> TMobileCallUUI;
       
  7754 
       
  7755 	class  TMobileCallUUSRequestV1 : public RMobilePhone::TMultimodeType
       
  7756 /** The mobile Call User-to-User Signaling request. 
       
  7757 */
       
  7758 		{
       
  7759 	public:
       
  7760 		IMPORT_C  TMobileCallUUSRequestV1();
       
  7761 	public:
       
  7762 	/** This field indicates whether the specified service is requested or required 
       
  7763 	for the call. */
       
  7764 		TUint             iServiceReq;
       
  7765 	/** The UUI element. This field only contains data if iServiceReq indicates UUS1.
       
  7766 	
       
  7767 	@see TMobileCallUUI */
       
  7768 		TMobileCallUUI	  iUUI;
       
  7769 		};
       
  7770 	
       
  7771 /** A typedef'd packaged TMobileCallUUSRequestV1 for passing through a generic API 
       
  7772 function member. */
       
  7773 	typedef TPckg<TMobileCallUUSRequestV1> TMobileCallUUSRequestV1Pckg;
       
  7774 
       
  7775 	IMPORT_C void ActivateUUS(TRequestStatus& aReqStatus, const TDesC8& aUUSRequest) const;
       
  7776 	IMPORT_C void SendUUI(TRequestStatus& aReqStatus, TBool aMore, const TMobileCallUUI& aUUI) const;
       
  7777 	IMPORT_C void ReceiveUUI(TRequestStatus& aReqStatus, TMobileCallUUI& aUUI) const;
       
  7778 	IMPORT_C void HangupWithUUI(TRequestStatus& aReqStatus, const TMobileCallUUI& aUUI) const;
       
  7779 	IMPORT_C void AnswerIncomingCallWithUUI(TRequestStatus& aReqStatus, const TDesC8& aCallParams, const TMobileCallUUI& aUUI) const;
       
  7780 	
       
  7781 	/***********************************************************************************/
       
  7782 	//
       
  7783 	// Etel 3rd Party v1.0 Parameter classes
       
  7784 	//
       
  7785 	/***********************************************************************************/
       
  7786 	
       
  7787 	class TEtel3rdPartyMobileCallParamsV1 : public RCall::TCallParams
       
  7788 /** Defines the parameters used to set-up of a call originated from an ETel 3rd Party client. 
       
  7789 @publishedPartner
       
  7790 @released
       
  7791 */
       
  7792 		{
       
  7793 	public:
       
  7794 		IMPORT_C TEtel3rdPartyMobileCallParamsV1();
       
  7795 	public:
       
  7796 	/** Call Id restriction setting to be used for this call.
       
  7797 	
       
  7798 	@see TMobileCallIdRestriction */
       
  7799 		TMobileCallIdRestriction iIdRestrict;
       
  7800 	/** Specifies whether this call attempt is user initiated (EFalse) or a client initiated 
       
  7801 	redial (ETrue). */
       
  7802 		TBool iAutoRedial;		
       
  7803 		};
       
  7804 		
       
  7805 /** A typedef'd packaged TEtel3rdPartyMobileCallParamsV1 for passing through a generic API 
       
  7806 function member. */
       
  7807 	typedef TPckg<TEtel3rdPartyMobileCallParamsV1>TEtel3rdPartyMobileCallParamsV1Pckg;	
       
  7808 
       
  7809 	
       
  7810 private:
       
  7811 	RMobileCall(const RMobileCall& aCall);
       
  7812 	CMobileCallPtrHolder* iMmPtrHolder;
       
  7813 protected:
       
  7814 	IMPORT_C void ConstructL();
       
  7815 	IMPORT_C void Destruct();
       
  7816 	};
       
  7817 
       
  7818 
       
  7819 /*********************************************************/
       
  7820 //
       
  7821 // Line based functionality (RMobileLine)
       
  7822 // 
       
  7823 /*********************************************************/
       
  7824 
       
  7825 
       
  7826 
       
  7827 class CMobileLinePtrHolder;
       
  7828 
       
  7829 class RMobileLine : public RLine
       
  7830 /** Provides access to the functionality associated with a specific mobile line. 
       
  7831 */
       
  7832 	{
       
  7833 public:
       
  7834 	IMPORT_C RMobileLine();
       
  7835 
       
  7836 	/***********************************************************************************/
       
  7837 	//
       
  7838 	// MobileLineStatus functional unit
       
  7839 	// 
       
  7840 	/***********************************************************************************/
       
  7841 
       
  7842 	IMPORT_C TInt GetMobileLineStatus(RMobileCall::TMobileCallStatus& aStatus) const;
       
  7843 	IMPORT_C void NotifyMobileLineStatusChange(TRequestStatus& aReqStatus, RMobileCall::TMobileCallStatus& aStatus) const;
       
  7844 
       
  7845 	//
       
  7846 	// Additional Caps
       
  7847 	//
       
  7848 /** Enumerated auxiliary capabilities. */
       
  7849 	enum TMobileLineAdditionalCaps
       
  7850 		{
       
  7851 	/** Indicates whether the line is a Primary or Auxiliary voice line offset added 
       
  7852 	so that core Etel and additional line caps can be returned in one TUint. */
       
  7853 		KCapsAuxVoice=0x00000008	
       
  7854 		};
       
  7855 
       
  7856 private:
       
  7857 	RMobileLine(const RMobileLine& aLine);
       
  7858 	CMobileLinePtrHolder* iMmPtrHolder;
       
  7859 protected:
       
  7860 	IMPORT_C void ConstructL();
       
  7861 	IMPORT_C void Destruct();
       
  7862 	};
       
  7863 
       
  7864 
       
  7865 /*********************************************************/
       
  7866 //
       
  7867 // SMS Messaging (RMobileSmsMessaging)
       
  7868 // 
       
  7869 /*********************************************************/
       
  7870 
       
  7871 
       
  7872 
       
  7873 class CMobilePhoneSmspList;
       
  7874 class CSmsMessagingPtrHolder;
       
  7875 
       
  7876 class RMobileSmsMessaging : public RTelSubSessionBase
       
  7877 /** Provides client access to SMS messaging functionality provided by TSY.
       
  7878 @publishedPartner
       
  7879 @released 
       
  7880 */
       
  7881 	{
       
  7882 public:
       
  7883 
       
  7884 	friend class CRetrieveMobilePhoneSmspList;
       
  7885 
       
  7886 	IMPORT_C RMobileSmsMessaging();
       
  7887 
       
  7888 	IMPORT_C TInt Open(RMobilePhone& aPhone);
       
  7889 	IMPORT_C void Close();
       
  7890 
       
  7891 /** Defines capabilities of SMS messaging.
       
  7892 
       
  7893 Modes: GSM/WCDMA */
       
  7894 	enum TMobileSmsModeCaps
       
  7895 		{
       
  7896 	/** SMS is supported in GSM and WCDMA modes. SMS are sent across MM ETel API in 
       
  7897 	a GSM 03.40 TPDU format.
       
  7898 	
       
  7899 	Modes: GSM/WCDMA */
       
  7900 		KCapsGsmSms=0x00000001,
       
  7901 	/** SMS is supported in CDMA mode. SMS are sent across MM ETel API in a IS-637 
       
  7902 	Teleservice message PDU format. 
       
  7903 	
       
  7904 	Modes: CDMA */
       
  7905 		KCapsCdmaSms=0x00000002
       
  7906 		};
       
  7907 
       
  7908 /** Defines SMS control capabilities.
       
  7909 
       
  7910 Modes: Common */
       
  7911 	enum TMobileSmsControlCaps
       
  7912 		{
       
  7913 	/** TSY supports receiving incoming SMS that have been stored and acknowledged 
       
  7914 	by the phone prior to forwarding to the TSY. If this flag is set then KCapsReceiveEither 
       
  7915 	will not be set and the client can receive stored messages only while the 
       
  7916 	TSY-phone link is in "receive stored" mode.
       
  7917 	
       
  7918 	Modes: Common */
       
  7919 		KCapsReceiveStored=0x00000001,
       
  7920 	/** TSY supports receiving incoming SMS that have been acknowledged by the phone 
       
  7921 	but have NOT already been stored. It is the client's responsibility to do 
       
  7922 	the storage. If this flag is set then KCapsReceiveEither will not be set and 
       
  7923 	the client can receive unstored messages only while the TSY-phone link is 
       
  7924 	in "receive unstored with phone ack" mode.
       
  7925 	
       
  7926 	Modes: Common */
       
  7927 		KCapsReceiveUnstoredPhoneAck=0x00000002,
       
  7928 	/** TSY supports receiving incoming SMS that have NOT already been stored and acknowledged
       
  7929 	by the phone. It is the client's responsibility to do both the storage and 
       
  7930 	the acknowledgment or rejection. If this flag is set then KCapsReceiveEither 
       
  7931 	will not be set and the client can receive unstored messages only while the 
       
  7932 	TSY-phone link is in "receive unstored with client ack" mode.
       
  7933 	
       
  7934 	Modes: Common */
       
  7935 		KCapsReceiveUnstoredClientAck=0x00000004,
       
  7936 	/** TSY supports receiving either stored or unstored incoming SMS at any time. 
       
  7937 	If this flag is set then any other KCapsReceive... flags will not be set and 
       
  7938 	the client can receive stored or unstored messages while the TSY-phone link 
       
  7939 	is in "receive either" mode.
       
  7940 	
       
  7941 	Modes: Common */
       
  7942 		KCapsReceiveEither=0x00000008,
       
  7943 	/** TSY supports creating a default acknowledgment or rejection TPDU using only 
       
  7944 	a "cause code" supplied by the client. If this flag is not set then the client 
       
  7945 	must supply the full ack or nack TPDU if it calls RMobileSmsMessaging::AckSmsStored() 
       
  7946 	or RMobileSmsMessaging::NackSmsStored().
       
  7947 	
       
  7948 	Modes: Common */
       
  7949 		KCapsCreateAck=0x00000010,
       
  7950 	/** TSY supports sending SMS messages but does not support returning the service 
       
  7951 	centre's acknowledgment of the submitted message to the client.
       
  7952 	
       
  7953 	Modes: Common */
       
  7954 		KCapsSendNoAck=0x00000020,
       
  7955 	/** TSY supports sending SMS messages and also supports returning the service centre's 
       
  7956 	acknowledgment of the submitted message to the client.
       
  7957 	
       
  7958 	Modes: GSM/WCDMA */
       
  7959 		KCapsSendWithAck=0x00000040,
       
  7960 	/** TSY supports retrieval of the SMS parameter list.
       
  7961 	
       
  7962 	Modes: GSM/WCDMA */
       
  7963 		KCapsGetSmspList=0x00000080,
       
  7964 	/** TSY supports storage of the SMS parameter list
       
  7965 	
       
  7966 	Modes: GSM/WCDMA */
       
  7967 		KCapsSetSmspList=0x00000100
       
  7968 		};
       
  7969 
       
  7970 	class TMobileSmsCapsV1 : public RMobilePhone::TMultimodeType
       
  7971 /** Defines capabilities of SMS messaging.
       
  7972 */
       
  7973 		{
       
  7974 	public:
       
  7975 		IMPORT_C TMobileSmsCapsV1();
       
  7976 
       
  7977 	/** Sum of TMobileSmsModeCaps constants.
       
  7978 	
       
  7979 	Modes: Common */
       
  7980 		TUint32 iSmsMode;
       
  7981 	/** Sum of TMobileSmsControlCaps constants.
       
  7982 	
       
  7983 	Modes: Common */
       
  7984 		TUint32 iSmsControl;
       
  7985 		};
       
  7986 
       
  7987 /** A typedef'd packaged TMobileSmsCapsV1 for passing through a generic API member 
       
  7988 function. */
       
  7989 	typedef TPckg<TMobileSmsCapsV1> TMobileSmsCapsV1Pckg;
       
  7990 
       
  7991 	IMPORT_C TInt GetCaps(TDes8& aCaps) const;
       
  7992 
       
  7993 	// Definitions for sizes of TPDU and User Data fields
       
  7994 	enum 
       
  7995 		{ 
       
  7996 		KGsmTpduSize = 165,		// 140 bytes user data + 25 bytes TPDU header
       
  7997 		KCdmaTpduSize  = 256	// Max size of Bearer Data in Transport Layer message
       
  7998 		};
       
  7999 
       
  8000 /** A typedef'd buffer for GSM or WCDMA message data. */
       
  8001 	typedef TBuf8<KGsmTpduSize>			TMobileSmsGsmTpdu;
       
  8002 /** A typedef'd buffer for CDMA message data. */
       
  8003 	typedef TBuf8<KCdmaTpduSize>		TMobileSmsCdmaTpdu;
       
  8004 
       
  8005 	/***********************************************************************************/
       
  8006 	//
       
  8007 	// Enum used by TSY to distinguish which SMS attribute class is used by client
       
  8008 	//
       
  8009 	/***********************************************************************************/
       
  8010 
       
  8011 /** Used by TSY to distinguish which SMS attribute class is used by client.
       
  8012 
       
  8013 Modes: Common
       
  8014 
       
  8015 @see RMobileSmsMessaging::TMobileSmsSendAttributesV1 */
       
  8016 	enum TMobileSmsAttributeExtensionId
       
  8017 		{
       
  8018 	/** The iExtensionId contents indicate that the packaged class is a TMobileSmsAttributesV1. */
       
  8019 		KETelMobileSmsAttributesV1=KETelExtMultimodeV1,
       
  8020 	/** The iExtensionId contents indicate that the packaged class is a TMobileSmsReceiveAttributesV1. */
       
  8021 		KETelMobileSmsReceiveAttributesV1,
       
  8022 	/** The iExtensionId contents indicate that the packaged class is a TMobileSmsSendAttributesV1. */
       
  8023 		KETelMobileSmsSendAttributesV1,
       
  8024 	/** The iExtensionId contents indicate that the packaged class is a TMobileSmsCdmaSendAttributesV4. */
       
  8025 		KETelMobileSmsCdmaSendAttributesV4=KETelExtMultimodeV4
       
  8026 		};
       
  8027 
       
  8028 /** Defines common attributes of all SMS messages.
       
  8029 
       
  8030 Modes: CDMA
       
  8031 
       
  8032 @see TMobileSmsAttributesV1 */
       
  8033 	enum TMobileSmsAttributeFlags
       
  8034 		{
       
  8035 	/** The iCdmaTeleservice field is valid in the attribute class.
       
  8036 	
       
  8037 	Modes: CDMA */
       
  8038 		KCdmaTeleservice = 0x00000001,
       
  8039 	/** The iCdmaServiceCategory field is valid in the attribute class.
       
  8040 	
       
  8041 	Modes: CDMA */
       
  8042 		KCdmaServiceCategory = 0x00000002,
       
  8043 	/** The iGsmServiceCentre field is valid in the attribute class.
       
  8044 	
       
  8045 	Modes: GSM/WCDMA */
       
  8046 		KGsmServiceCentre = 0x00000004,
       
  8047 	/** The iDataFormat field is valid in the attribute class.
       
  8048 	
       
  8049 	Modes: Common */
       
  8050 		KSmsDataFormat = 0x00000008,	
       
  8051 	/** The iOriginator or iDestination field is valid in the attribute class.
       
  8052 	
       
  8053 	Modes: Common */
       
  8054 		KRemotePartyInfo = 0x00000010,
       
  8055 	/** The iStatus field is valid in the attribute class.
       
  8056 	
       
  8057 	Modes: Common */
       
  8058 		KIncomingStatus = 0x00000020,
       
  8059 	/** The iStore and iStoreIndex fields are valid in the attribute class.
       
  8060 	
       
  8061 	Modes: Common */
       
  8062 		KStorageLocation = 0x00000040,
       
  8063 	/** The iMsgRef field is valid in the attribute class.
       
  8064 
       
  8065 	Modes: Common */
       
  8066 		KMessageReference = 0x00000080,
       
  8067 	/** The iSubmitReport field is valid in the attribute class.
       
  8068 	
       
  8069 	Modes: GSM/WCDMA */
       
  8070 		KGsmSubmitReport = 0x00000100,
       
  8071 	/** The iMore field is valid in the attribute class.
       
  8072 	
       
  8073 	Modes: Common */
       
  8074 		KMoreToSend = 0x00000200,
       
  8075 	/** Indicates to the TSY that it should keep the traffic channel open since there is
       
  8076 	    another message ready to be sent immediately after this one (typically used when
       
  8077 	    sending messages to multiple recipients). TSY should then keep the channel open 
       
  8078 	    until a message is sent with this bit cleared.
       
  8079 	
       
  8080 	Modes: CDMA */
       
  8081 		KCdmaKeepChannelOpen = 0x00000400,
       
  8082 	/** Indicates to the TSY that it must wait for the Transport Layer Acknowledgement from the network
       
  8083 	
       
  8084 	Modes: CDMA */
       
  8085 		KCdmaTLAckRequired = 0x00000800,
       
  8086 	/** The iAddressAuthentication field is valid in the attribute class.
       
  8087 	
       
  8088 	Modes: CDMA */
       
  8089 		KCdmaAddressAuthentication = 0x00001000
       
  8090 		};
       
  8091 
       
  8092 /** Defines the SMS data format.
       
  8093 
       
  8094 Modes: Common */
       
  8095 	enum TMobileSmsDataFormat
       
  8096 		{
       
  8097 	/** The format is not specified.
       
  8098 
       
  8099 	Modes: Common */
       
  8100 		EFormatUnspecified,
       
  8101 	/** The message data format complies to a SMS TPDU coded as octets according to 
       
  8102 	GSM 03.40.
       
  8103 	
       
  8104 	Modes: GSM/WCDMA */
       
  8105 		EFormatGsmTpdu,
       
  8106 	/** The message data format complies to a SMS Teleservice PDU coded as octets according 
       
  8107 	to IS-637.
       
  8108 	
       
  8109 	Modes: CDMA */
       
  8110 		EFormatCdmaTpdu
       
  8111 		};
       
  8112 
       
  8113 	class TMobileSmsAttributesV1 : public RMobilePhone::TMultimodeType
       
  8114 	/** Defines common attributes of all SMS messages. 
       
  8115 	@publishedPartner
       
  8116 	@released
       
  8117 	*/
       
  8118 		{
       
  8119 	protected:
       
  8120 		TMobileSmsAttributesV1();
       
  8121 	public:
       
  8122 	/** The bit-mask flags from TMobileSmsAttributeFlags indicating which attributes 
       
  8123 	are present in this instance.
       
  8124 	
       
  8125 	Modes: Common */
       
  8126 		TUint32 iFlags;
       
  8127 	/** The format of the message data buffer .
       
  8128 	
       
  8129 	Modes: Common
       
  8130 	
       
  8131 	@see TMobileSmsDataFormat */
       
  8132 		TMobileSmsDataFormat iDataFormat;
       
  8133 	/** The teleservice this message belongs to, coded according to SMS teleservice 
       
  8134 	identifier values table in TIA/EIA-41-D.
       
  8135 	
       
  8136 	Modes: CDMA */
       
  8137 		TInt iCdmaTeleservice;
       
  8138 	/** The service category this message belongs to.
       
  8139 	
       
  8140 	Modes: CDMA */
       
  8141 		TInt iCdmaServiceCategory;
       
  8142 	/** The GSM service centre used for this SMS.
       
  8143 	
       
  8144 	Modes: GSM/WCDMA
       
  8145 	
       
  8146 	@see RMobilePhone::TMobileAddress */
       
  8147 		RMobilePhone::TMobileAddress iGsmServiceCentre;
       
  8148 		};
       
  8149 
       
  8150 /** A typedef'd packaged TMobileSmsAttributesV1 for passing through a generic 
       
  8151 API member function. */
       
  8152 	typedef TPckg<TMobileSmsAttributesV1> TMobileSmsAttributesV1Pckg;
       
  8153 
       
  8154 /** Defines attributes of incoming SMS messages.
       
  8155 
       
  8156 Modes: Common */
       
  8157 	enum TMobileSmsIncomingStatus
       
  8158 		{
       
  8159 	/** The status of the incoming SMS is unknown. */
       
  8160 		EMtMessageUnknownStatus,
       
  8161 	/** The incoming SMS is not stored phone-side but has already been acknowledged 
       
  8162 	by the phone. */
       
  8163 		EMtMessageUnstoredPhoneAck,
       
  8164 	/** The incoming SMS is not stored phone-side and needs to be acknowledged by the 
       
  8165 	client. */
       
  8166 		EMtMessageUnstoredClientAck,
       
  8167 	/** The incoming SMS is stored phone-side. */
       
  8168 		EMtMessageStored
       
  8169 		};
       
  8170 
       
  8171 	class TMobileSmsReceiveAttributesV1 : public TMobileSmsAttributesV1
       
  8172 	/** Defines attributes of incoming SMS messages. 
       
  8173 	@publishedPartner
       
  8174 	@released
       
  8175 	*/
       
  8176 		{
       
  8177 	public:
       
  8178 		IMPORT_C TMobileSmsReceiveAttributesV1();
       
  8179 	public:
       
  8180 	/** Indicates the status of the incoming message -whether it is stored phone-side 
       
  8181 	or has been acknowledged by the phone.
       
  8182 	
       
  8183 	Modes: Common
       
  8184 	
       
  8185 	@see TMobileSmsIncomingStatus */
       
  8186 		TMobileSmsIncomingStatus	 iStatus;	// indicates if MT message is stored phone-side
       
  8187 	/** If the message is stored phone-side, indicates the index (within the phone-side 
       
  8188 	store) where the message is stored.
       
  8189 	
       
  8190 	Modes: Common */
       
  8191 		TInt						 iStoreIndex;// used if MT message is stored phone-side
       
  8192 	/** If the message is stored phone-side, indicates the name of the appropriate 
       
  8193 	phone-side store.
       
  8194 	
       
  8195 	Modes: Common
       
  8196 	
       
  8197 	@see RMobilePhone::TMobileName */
       
  8198 		RMobilePhone::TMobileName	 iStore;		// used if MT message is stored phone-side
       
  8199 	/** The address of the originator of the SMS.
       
  8200 
       
  8201 	Modes: Common
       
  8202 	
       
  8203 	@see RMobilePhone::TMobileAddress */
       
  8204 		RMobilePhone::TMobileAddress iOriginator;
       
  8205 		};
       
  8206 
       
  8207 /** A typedef'd packaged TMobileSmsReceiveAttributesV1 for passing through a generic 
       
  8208 API member function. */
       
  8209 	typedef TPckg<TMobileSmsReceiveAttributesV1> TMobileSmsReceiveAttributesV1Pckg;
       
  8210 
       
  8211 	
       
  8212 
       
  8213 	class TMobileSmsSendAttributesV1 : public TMobileSmsAttributesV1
       
  8214 	/** Defines attributes of sent SMS messages.
       
  8215 	@publishedPartner
       
  8216 	@released */
       
  8217 		{
       
  8218 	public:
       
  8219 		IMPORT_C TMobileSmsSendAttributesV1();
       
  8220 	public:
       
  8221 	/** The message reference assigned to a sent message.
       
  8222 	
       
  8223 	Modes: Common */
       
  8224 		TUint16						 iMsgRef;
       
  8225 	/** A boolean indicating whether the client is going to send another SMS immediately 
       
  8226 	after this one. Equals ETrue if this is the case, EFalse if it is not.
       
  8227 	
       
  8228 	Modes: Common */
       
  8229 		TBool						 iMore;
       
  8230 	/** The SMS-SUBMIT-REPORT TPDU received from network in response to a sent message.
       
  8231 	
       
  8232 	Modes: GSM/WCDMA
       
  8233 	
       
  8234 	@see TMobileSmsGsmTpdu */
       
  8235 		TMobileSmsGsmTpdu			 iSubmitReport;
       
  8236 	/** The address of the destination of the SMS.
       
  8237 	
       
  8238 	Modes: Common
       
  8239 	
       
  8240 	@see RMobilePhone::TMobileAddress */
       
  8241 		RMobilePhone::TMobileAddress iDestination;
       
  8242 		};
       
  8243 	
       
  8244 /** A typedef'd packaged TMobileSmsSendAttributesV1 for passing through a generic 
       
  8245 API member function. */
       
  8246 	typedef TPckg<TMobileSmsSendAttributesV1> TMobileSmsSendAttributesV1Pckg;
       
  8247 
       
  8248 	class TMobileSmsCdmaSendAttributesV4 : public TMobileSmsAttributesV1
       
  8249 	/**
       
  8250 	Defines attributes of sent SMS messages (CDMA only).
       
  8251 
       
  8252 	@publishedPartner
       
  8253 	@released
       
  8254 	*/
       
  8255 		{
       
  8256 	public:
       
  8257 		IMPORT_C TMobileSmsCdmaSendAttributesV4();
       
  8258 	public:
       
  8259 		/** 
       
  8260 		The message id allocated by the SMS stack. The TSY should
       
  8261 		retrieve the value from iCdmaTeleserviceId to determine
       
  8262 		which teleservice this message id corresponds to. 
       
  8263 		*/
       
  8264 		TUint16 iMsgRef;
       
  8265 		/** Indicates whether the client is going to send another 
       
  8266 		PDU immediately after this one (typically used when sending
       
  8267 		messages of more than one PDU). Equals ETrue if at least 
       
  8268 		one more PDU is needed to complete the message and EFalse
       
  8269 		otherwise.
       
  8270 		*/
       
  8271 		TBool iMore;
       
  8272 		/** TPDU received from network in response to a sent message */
       
  8273 		TMobileSmsCdmaTpdu iTLAck;
       
  8274 		/** The address of the destination of the SMS. */
       
  8275 		RMobilePhone::TMobileAddress iDestination;
       
  8276 		/** Transport layer authentication parameter */
       
  8277 		TUint32 iAddressAuthentication;
       
  8278 		};
       
  8279 
       
  8280 /** A typedef'd packaged TMobileSmsCdmaSendAttributesV4 for passing through a generic 
       
  8281 API member function. */
       
  8282 	typedef TPckg<TMobileSmsCdmaSendAttributesV4> TMobileSmsCdmaSendAttributesV4Pckg;
       
  8283 
       
  8284 	//
       
  8285 	// Setting up the storage & acknowledgement mode
       
  8286 	//
       
  8287 
       
  8288 /** Defines the SMS receive modes.
       
  8289 
       
  8290 Modes: Common */
       
  8291 	enum TMobileSmsReceiveMode
       
  8292 		{
       
  8293 	/** Receive mode is unspecified and phone will use its default. */
       
  8294 		EReceiveModeUnspecified,
       
  8295 	/** Phone will store and acknowledge all incoming messages before passing them 
       
  8296 	onto TSY. */
       
  8297 		EReceiveUnstoredPhoneAck,	// client stores but phone acknowledges message
       
  8298 	/** Phone will acknowledge but NOT store all incoming messages before passing them 
       
  8299 	onto TSY. It is client's responsibility to store the message. */
       
  8300 		EReceiveUnstoredClientAck,	// client acknowledges and stores message
       
  8301 	/** Phone will NOT acknowledge or store any incoming messages before passing them 
       
  8302 	onto TSY. It is client's responsibility to attempt storage and then either
       
  8303 	acknowledge or reject the message. */
       
  8304 		EReceiveStored,				// phone acknowledges and store message
       
  8305 	/** Phone may pass on either stored or unstored messages to TSY. It is client's 
       
  8306 	responsibility to check RMobileSmsMessaging::TMobileSmsReceiveAttributesV1::iStatus 
       
  8307 	to determine what action(s) the client needs to take for a message. */
       
  8308 		EReceiveEither				// client deals with stored & unstored messages
       
  8309 		};
       
  8310 
       
  8311 	IMPORT_C void SetReceiveMode(TRequestStatus& aReqStatus, TMobileSmsReceiveMode aReceiveMode) const;
       
  8312 	IMPORT_C TInt GetReceiveMode(TMobileSmsReceiveMode& aReceiveMode) const;
       
  8313 	IMPORT_C void NotifyReceiveModeChange(TRequestStatus& aStatus, TMobileSmsReceiveMode& aReceiveMode);
       
  8314 
       
  8315 	/***********************************************************************************/
       
  8316 	//
       
  8317 	// Incoming SMS
       
  8318 	//
       
  8319 	/***********************************************************************************/
       
  8320 
       
  8321 	IMPORT_C void ReceiveMessage(TRequestStatus& aReqStatus, TDes8& aMsgData, TDes8& aMsgAttributes) const;
       
  8322 
       
  8323 	/***********************************************************************************/
       
  8324 	//
       
  8325 	// Responding to incoming SMS
       
  8326 	//
       
  8327 	/***********************************************************************************/
       
  8328 
       
  8329 	IMPORT_C void AckSmsStored(TRequestStatus& aReqStatus, const TDesC8& aMsgData, TBool aFull=EFalse) const;
       
  8330 	IMPORT_C void NackSmsStored(TRequestStatus& aReqStatus, const TDesC8& aMsgData, TInt aRpCause) const;
       
  8331 	IMPORT_C void ResumeSmsReception(TRequestStatus& aReqStatus) const;
       
  8332 
       
  8333 	/***********************************************************************************/
       
  8334 	//
       
  8335 	// Outgoing SMS
       
  8336 	//
       
  8337 	/***********************************************************************************/
       
  8338 
       
  8339 	IMPORT_C void SendMessage(TRequestStatus& aReqStatus, const TDesC8& aMsgData, TDes8& aMsgAttributes) const;
       
  8340 	IMPORT_C void SendMessageNoFdnCheck(TRequestStatus& aReqStatus, const TDesC8& aMsgData, TDes8& aMsgAttributes) const;
       
  8341 
       
  8342 /** Defines the SMS bearer.
       
  8343 
       
  8344 Modes: GSM */
       
  8345 	enum TMobileSmsBearer
       
  8346 		{
       
  8347 	/** SMS messages will only be sent over a packet-switched (GPRS) network. */
       
  8348 		ESmsBearerPacketOnly,
       
  8349 	/** SMS messages will only be sent over a circuit-switched (GSM) network. */
       
  8350 		ESmsBearerCircuitOnly,
       
  8351 	/** SMS messages will be sent over the packet-switched (GPRS) network if possible, 
       
  8352 	otherwise over circuit-switched (GSM) network. */
       
  8353 		ESmsBearerPacketPreferred,
       
  8354 	/** SMS messages will be sent over the circuit-switched (GSM) network if possible, 
       
  8355 	otherwise over packet-switched (GPRS) network. */
       
  8356 		ESmsBearerCircuitPreferred
       
  8357 		};
       
  8358 
       
  8359 	IMPORT_C void SetMoSmsBearer(TRequestStatus& aReqStatus, TMobileSmsBearer aBearer) const;
       
  8360 	IMPORT_C TInt GetMoSmsBearer(TMobileSmsBearer& aBearer) const;
       
  8361 	IMPORT_C void NotifyMoSmsBearerChange(TRequestStatus& aReqStatus, TMobileSmsBearer& aBearer);
       
  8362 
       
  8363 	/***********************************************************************************/
       
  8364 	//
       
  8365 	// Get information on phone-side SMS storage
       
  8366 	//
       
  8367 	/***********************************************************************************/
       
  8368 
       
  8369 	IMPORT_C TInt EnumerateMessageStores(TInt& aCount) const;
       
  8370 	IMPORT_C void GetMessageStoreInfo(TRequestStatus& aReqStatus, TInt aIndex, TDes8& aInfo) const;
       
  8371 
       
  8372 	/***********************************************************************************/
       
  8373 	//
       
  8374 	// Read/Write SMS parameters to phone-side storage
       
  8375 	//
       
  8376 	/***********************************************************************************/
       
  8377 
       
  8378 	enum { KMaxSmspTextSize=30 };
       
  8379 
       
  8380 /** Defines the valid SMS parameters store.
       
  8381 
       
  8382 Modes: GSM/WCDMA
       
  8383 
       
  8384 @see TMobileSmspEntryV1 */
       
  8385 	enum TMobileSmspStoreValidParams
       
  8386 		{
       
  8387 	/** The entry includes a valid iDestination field. */
       
  8388 		KDestinationIncluded=0x00000001,
       
  8389 	/** The entry includes a valid iServiceCentre field. */
       
  8390 		KSCAIncluded=0x00000002,
       
  8391 	/** The entry includes a valid iProtocolId field. */
       
  8392 		KProtocolIdIncluded=0x00000004,
       
  8393 	/** The entry includes a valid iDcs field. */
       
  8394 		KDcsIncluded=0x00000008,
       
  8395 	/** The entry includes a valid iValidityPeriod field. */
       
  8396 		KValidityPeriodIncluded=0x00000010
       
  8397  		};
       
  8398 
       
  8399 	class TMobileSmspEntryV1 : public RMobilePhone::TMultimodeType
       
  8400 
       
  8401 	/** Defines a set of SMS parameters. 
       
  8402 	@publishedPartner
       
  8403 	@released
       
  8404 	*/
       
  8405 		{
       
  8406 	public:
       
  8407 		IMPORT_C TMobileSmspEntryV1();
       
  8408 	public:
       
  8409 		void InternalizeL(RReadStream& aStream);
       
  8410 		void ExternalizeL(RWriteStream& aStream) const;
       
  8411 	public:
       
  8412 	/** The slot index where this SMSP entry is stored in the SIM's SMSP file. */
       
  8413 		TInt iIndex;
       
  8414 	/** A bit-wise sum of the constants defined in TMobileSmspStoreValidParams, that 
       
  8415 	specifies which parameters are valid within this entry. */
       
  8416 		TUint32	iValidParams;
       
  8417 	/** Default protocol ID. Coded according to GSM 03.40. */
       
  8418 		TUint8 iProtocolId;
       
  8419 	/** Default data coding scheme. Coded according to GSM 03.40. */
       
  8420 		TUint8 iDcs;
       
  8421 	/** Default validity period, in relative format and coded on 8 bits as defined 
       
  8422 	by GSM 03.40. */
       
  8423 		TUint8 iValidityPeriod;
       
  8424 	/** Reserved for future use. */
       
  8425 		TUint8 iReservedFiller;
       
  8426 	/** Default destination for outgoing SMS.
       
  8427 	
       
  8428 	@see RMobilePhone::TMobileAddress */
       
  8429 		RMobilePhone::TMobileAddress iDestination;
       
  8430 	/** Default service centre for outgoing SMS.
       
  8431 	
       
  8432 	@see RMobilePhone::TMobileAddress */
       
  8433 		RMobilePhone::TMobileAddress iServiceCentre;
       
  8434 	/** The alpha-tag associated with this SMSP entry, expressed as Unicode characters. */
       
  8435 		TBuf<KMaxSmspTextSize> iText;
       
  8436 		};
       
  8437 
       
  8438 /** A typedef'd packaged TMobileSmspEntryV1 for passing through a generic API member
       
  8439 function. */
       
  8440 	typedef TPckg<TMobileSmspEntryV1> TMobileSmspEntryV1Pckg;
       
  8441 	IMPORT_C void StoreSmspListL(TRequestStatus& aReqStatus, CMobilePhoneSmspList* aSmspList) const;
       
  8442 	IMPORT_C void NotifySmspListChange(TRequestStatus& aReqStatus) const;
       
  8443 
       
  8444 private:
       
  8445 	RMobileSmsMessaging(const RMobileSmsMessaging&);
       
  8446 	CSmsMessagingPtrHolder* iSmsMessagingPtrHolder;
       
  8447 protected:
       
  8448 	IMPORT_C void ConstructL();
       
  8449 	IMPORT_C void Destruct();
       
  8450 	};
       
  8451 
       
  8452 
       
  8453 /*********************************************************/
       
  8454 //
       
  8455 // Broadcast Messaging (RMobileBroadcastMessaging)
       
  8456 // 
       
  8457 /*********************************************************/
       
  8458 
       
  8459 
       
  8460 
       
  8461 class CMobilePhoneBroadcastIdList;
       
  8462 
       
  8463 class CCbsMessagingPtrHolder;
       
  8464 class RMobileBroadcastMessaging : public RTelSubSessionBase
       
  8465 /** This sub-session provides access to the broadcast message services provided 
       
  8466 by GSM/WCDMA and CDMA networks.
       
  8467 
       
  8468 Clients will open a RMobileBroadcastMessaging sub-session and then wait for 
       
  8469 incoming broadcast messages. The broadcast messages received can depend upon 
       
  8470 a "message filter" which defines the languages and/or identifiers of acceptable 
       
  8471 (or unacceptable) messages. This sub-session and the function members within 
       
  8472 this section must be supported if the TSY indicates that it supports the MobileBroadcastMessaging
       
  8473 functional unit. 
       
  8474 
       
  8475 @publishedPartner
       
  8476 @released*/
       
  8477 	{
       
  8478 public:
       
  8479 	
       
  8480 	friend class CRetrieveMobilePhoneBroadcastIdList;
       
  8481 
       
  8482 	IMPORT_C RMobileBroadcastMessaging();
       
  8483 
       
  8484 	IMPORT_C TInt Open(RMobilePhone& aPhone);
       
  8485 	IMPORT_C void Close();
       
  8486 
       
  8487 	/***********************************************************************************/
       
  8488 	//
       
  8489 	// Broadcast messaging capabilities
       
  8490 	//
       
  8491 	/***********************************************************************************/
       
  8492 
       
  8493 /** Broadcast capabilities.
       
  8494 
       
  8495 Modes:GSM/WCDMA */
       
  8496 	enum TMobileBroadcastModeCaps
       
  8497 		{
       
  8498 	/** GSM 03.41 cell broadcast messages are supported.
       
  8499 	
       
  8500 	Modes:GSM/WCDMA */
       
  8501 		KCapsGsmTpduFormat = 0x00000001,
       
  8502 	/** IS-637-A broadcast messages are supported.
       
  8503 	
       
  8504 	Modes:CDMA */
       
  8505 		KCapsCdmaTpduFormat = 0x00000002,
       
  8506 	/** 3GPP 25.324 Release 4 cell broadcast messages are supported.
       
  8507 	
       
  8508 	Modes: WCDMA */
       
  8509 		KCapsWcdmaTpduFormat = 0x00000004
       
  8510 		};
       
  8511 
       
  8512 /** Broadcast message filter capabilities.
       
  8513 
       
  8514 Modes: Common
       
  8515 
       
  8516 @see RMobileBroadcastMessaging::GetLanguageFilter() */
       
  8517 	enum TBroadcastMessagingFilterCaps
       
  8518 		{
       
  8519 	/** Phone supports switching broadcast messages on or off. This means the EbroadcastAcceptNone 
       
  8520 	and EBroadcastAcceptAll settings of TMobilePhoneBroadcastFilter are supported.
       
  8521 	
       
  8522 	Modes: Common */
       
  8523 		KCapsSimpleFilter = 0x00000001,
       
  8524 	/** Phone supports filtering of broadcast messages depending upon their language. 
       
  8525 	The language filter is a list of languages used only for broadcast filtering.
       
  8526 	
       
  8527 	Modes: Common
       
  8528 	
       
  8529 	@see RMobileBroadcastMessaging::GetLanguageFilter() */
       
  8530 		KCapsLangFilter = 0x00000002,
       
  8531 	/** Phone supports filtering of broadcast messages depending upon their subject. 
       
  8532 	The subject of a message is identified in GSM/WCDMA mode by the Cell Broadcast 
       
  8533 	Message Identifier (CBMI) and in CDMA mode by the Service Category.
       
  8534 	
       
  8535 	Modes: Common */
       
  8536 		KCapsIdFilter = 0x00000004
       
  8537 		};
       
  8538 
       
  8539 	
       
  8540 
       
  8541 	class TMobileBroadcastCapsV1 : public RMobilePhone::TMultimodeType
       
  8542 	/** Defines capabilities of Broadcast messaging. 
       
  8543 	@publishedPartner
       
  8544 	@released
       
  8545 	*/
       
  8546 		{
       
  8547 	public:
       
  8548 		IMPORT_C TMobileBroadcastCapsV1();
       
  8549 	public:
       
  8550 	/** Sum of TMobileBroadcastModeCaps constants.
       
  8551 	
       
  8552 	Modes: GSM/WCDMA */
       
  8553 		TUint32 iModeCaps;
       
  8554 	/** Sum of TBroadcastMessagingFilterCaps constants.
       
  8555 	
       
  8556 	Modes: GSM/WCDMA */
       
  8557 		TUint32 iFilterCaps;
       
  8558 		};
       
  8559 
       
  8560 /** A typedef'd packaged TMobileBroadcastCapsV1 for passing through a generic API 
       
  8561 function member. */
       
  8562 	typedef TPckg<TMobileBroadcastCapsV1> TMobileBroadcastCapsV1Pckg;
       
  8563 
       
  8564 	IMPORT_C TInt GetCaps(TDes8& aCaps) const;
       
  8565 
       
  8566 /** Defines the broadcast attributes.
       
  8567 
       
  8568 Modes: Common */
       
  8569 	enum TMobileBroadcastAttributeFlags
       
  8570 		{
       
  8571 	/** The iFormat field is valid in the attribute class.
       
  8572 	
       
  8573 	Modes: Common */
       
  8574 		KBroadcastDataFormat = 0x00000001,
       
  8575 	/** The iServiceCategory field is valid in the attribute class.
       
  8576 	
       
  8577 	Modes: CDMA */
       
  8578 		KCdmaServiceCategory = 0x00000002
       
  8579 		};
       
  8580 
       
  8581 /** The mobile broadcast data format, used byTMobileBroadcastAttributesV1.
       
  8582 
       
  8583 Modes: Common */
       
  8584 	enum TMobileBroadcastDataFormat
       
  8585 		{
       
  8586 	/** The message data format is not specified.
       
  8587 	
       
  8588 	Modes: Common */
       
  8589 		EFormatUnspecified,
       
  8590 	/** The message data format complies to a Cell Broadcast TPDU coded as 88 octets 
       
  8591 	(6 for header and 82 for message data) according to GSM 03.41.
       
  8592 	
       
  8593 	Modes: GSM/WCDMA */
       
  8594 		EFormatGsmTpdu,
       
  8595 	/** The message data format complies to IS-637-A encoding of the Bearer Data parameter 
       
  8596 	within the Transport Layer's SMS-Broadcast message.
       
  8597 	
       
  8598 	Modes: CDMA */
       
  8599 		EFormatCdmaTpdu,
       
  8600 	/** The message data format complies to a Cell Broadcast TPDU coded as 1252 octets 
       
  8601 	(6 for header and a maximum of 1246 for message data) according to 3GPP 25.324.
       
  8602 	
       
  8603 	Modes: WCDMA */
       
  8604 		EFormatWcdmaTpdu
       
  8605 		};
       
  8606 
       
  8607 	
       
  8608 
       
  8609 	class TMobileBroadcastAttributesV1 : public RMobilePhone::TMultimodeType
       
  8610 	/** Defines attributes of a Broadcast message.
       
  8611 	@publishedPartner
       
  8612 	@released
       
  8613 	*/
       
  8614 		{
       
  8615 	public:
       
  8616 		IMPORT_C TMobileBroadcastAttributesV1();
       
  8617 	public:
       
  8618 	/** The bit-mask flags indicating which attributes are present in this instance.
       
  8619 	
       
  8620 	Modes: Common
       
  8621 	
       
  8622 	@see TMobileBroadcastAttributeFlags */
       
  8623 		TUint32	iFlags;
       
  8624 	/** Format of the message data buffer.
       
  8625 	
       
  8626 	Modes: Common
       
  8627 	
       
  8628 	@see TMobileBroadcastDataFormat */
       
  8629 		TMobileBroadcastDataFormat	iFormat;
       
  8630 	/** Service category of the message.
       
  8631 	
       
  8632 	Modes: CDMA */
       
  8633 		TInt iServiceCategory;
       
  8634 		};
       
  8635 
       
  8636 /** A typedef'd packaged TMobileBroadcastAttributesV1 for passing through a generic 
       
  8637 API function member. */
       
  8638 	typedef TPckg<TMobileBroadcastAttributesV1> TMobileBroadcastAttributesV1Pckg;
       
  8639 
       
  8640 
       
  8641 	
       
  8642 
       
  8643 	class TMobileBroadcastAttributesV2 : public TMobileBroadcastAttributesV1
       
  8644 	/** Defines attributes of a UMTS Broadcast message for version v2.0 of the API. 
       
  8645 	@publishedPartner
       
  8646 	@released
       
  8647 	*/
       
  8648 		{
       
  8649 	public:
       
  8650 		IMPORT_C TMobileBroadcastAttributesV2();
       
  8651 	public:
       
  8652 	/** The number of pages that the current broadcast message consists of. The maximum 
       
  8653 	number of pages for WCDMA Broadcast messages is 15. */
       
  8654 		TInt	 iNumberOfPages;
       
  8655 	/** This parameter is used to store the message type for this broadcast message. */
       
  8656 		TUint8	 iMessageType;
       
  8657 	/** This parameter is used to store the message id for this broadcast message.
       
  8658 	
       
  8659 	This parameter is used to store the serial number for this broadcast message.
       
  8660 	
       
  8661 	This parameter is used to store the data coding scheme for this broadcast 
       
  8662 	message. */
       
  8663 		TUint16	 iMessageId;
       
  8664 	/** This parameter is used to store the serial number for this broadcast message. */
       
  8665 		TUint16	 iSerialNum;
       
  8666 	/** This parameter is used to store the data coding scheme for this broadcast message. */
       
  8667 		TUint8	 iDCS;
       
  8668 		};
       
  8669 
       
  8670 /** A typedef'd packaged TMobileBroadcastAttributesV1 for passing through a generic 
       
  8671 API function member. */
       
  8672 	typedef TPckg<TMobileBroadcastAttributesV2> TMobileBroadcastAttributesV2Pckg;
       
  8673 
       
  8674 	/***********************************************************************************/
       
  8675 	//
       
  8676 	// Receiving broadcast messages
       
  8677  	//
       
  8678 	/***********************************************************************************/
       
  8679 
       
  8680 	/** A constant which defines the length of the buffer to be passed to ReceiveMessage.	
       
  8681 	
       
  8682 	This constant should be used for all message types: GSM, CDMA and WCDMA.*/
       
  8683 	enum
       
  8684 		{
       
  8685 		KBroadcastPageSize = 88	
       
  8686 		};
       
  8687 	
       
  8688 	/** Buffer for received messages. 
       
  8689 	
       
  8690 	This buffer should be used for all message types: GSM, CDMA and WCDMA.*/
       
  8691 	typedef TBuf8<KBroadcastPageSize> TBroadcastPageData;
       
  8692 
       
  8693 	/** Old buffer sizes.  KBroadcastPageSize should be used instead. */
       
  8694 	enum 
       
  8695 		{
       
  8696 		KGsmBroadcastDataSize = KBroadcastPageSize,
       
  8697 		KCdmaBroadcastDataSize = KBroadcastPageSize,
       
  8698 		KWCdmaBroadcastPageSize = KBroadcastPageSize
       
  8699 		};
       
  8700 
       
  8701 	/** Buffer for GSM messages.  TBroadcastPageData should be used instead. */
       
  8702 	typedef TBuf8<KGsmBroadcastDataSize>  TGsmBroadcastMessageData;
       
  8703 	/** Buffer for CDMA messages.  TBroadcastPageData should be used instead.  */
       
  8704 	typedef TBuf8<KCdmaBroadcastDataSize> TCdmaBroadcastMessageData;
       
  8705 	/** Buffer for WCDMA messages.  TBroadcastPageData should be used instead. */
       
  8706 	typedef TBuf8<KWCdmaBroadcastPageSize> TWCdmaBroadcastPageData;
       
  8707 
       
  8708 	IMPORT_C void ReceiveMessage(TRequestStatus& aReqStatus, TDes8& aMsgData, TDes8& aMsgAttributes) const;
       
  8709 
       
  8710 	/***********************************************************************************/
       
  8711 	//
       
  8712 	// Filters
       
  8713 	//
       
  8714 	/***********************************************************************************/
       
  8715 
       
  8716 /** The filter settings of the mobile phone.
       
  8717 
       
  8718 Modes: Common */
       
  8719 	enum TMobilePhoneBroadcastFilter
       
  8720 		{
       
  8721 	/** The phone does not have a filter setting. */
       
  8722 		EBroadcastFilterUnspecified,
       
  8723 	/** The phone is not accepting any broadcast messages. */
       
  8724 		EBroadcastAcceptNone,
       
  8725 	/** The phone is accepting all broadcast messages. */
       
  8726 		EBroadcastAcceptAll,
       
  8727 	/** The phone is accepting those broadcast messages included within the language 
       
  8728 	and identifier filters. */
       
  8729 		EBroadcastAcceptFilter,
       
  8730 	/** The phone is rejecting those broadcast messages included within the language 
       
  8731 	or identifier filters. */
       
  8732 		EBroadcastRejectFilter
       
  8733 		};
       
  8734 
       
  8735 	IMPORT_C TInt GetFilterSetting(TMobilePhoneBroadcastFilter& aSetting) const;
       
  8736 	IMPORT_C void SetFilterSetting(TRequestStatus& aReqStatus, TMobilePhoneBroadcastFilter aSetting) const;
       
  8737 	IMPORT_C void NotifyFilterSettingChange(TRequestStatus& aReqStatus, TMobilePhoneBroadcastFilter& aSetting) const;
       
  8738 
       
  8739 	IMPORT_C void GetLanguageFilter(TRequestStatus& aReqStatus, TDes16& aLangFilter) const;
       
  8740 	IMPORT_C void SetLanguageFilter(TRequestStatus& aReqStatus, const TDesC16& aLangFilter) const;
       
  8741 	IMPORT_C void NotifyLanguageFilterChange(TRequestStatus& aReqStatus, TDes16& aLangFilter) const;
       
  8742 
       
  8743 	class TMobileBroadcastIdEntryV1 : public RMobilePhone::TMultimodeType
       
  8744 	/** In GSM - defines a Cell Broadcast Message Identifier (CBMI) list entry. In 
       
  8745 	CDMA - defines a Service Category list entry. 
       
  8746 	@publishedPartner
       
  8747 	@released
       
  8748 	*/
       
  8749 		{
       
  8750 	public:
       
  8751 		void InternalizeL(RReadStream& aStream);
       
  8752 		void ExternalizeL(RWriteStream& aStream) const;
       
  8753 		IMPORT_C TMobileBroadcastIdEntryV1();
       
  8754 	public:
       
  8755 	/** The value of the message identifier. */
       
  8756 		TUint16	iId;
       
  8757 		};
       
  8758 
       
  8759 /** Defines the broadcast types. */
       
  8760 	enum TMobileBroadcastIdType
       
  8761 		{
       
  8762 	/** GSM broadcast. */
       
  8763 		EGsmBroadcastId,
       
  8764 	/** CDMA broadcast. */
       
  8765 		ECdmaBroadcastId
       
  8766 		};
       
  8767 
       
  8768 	IMPORT_C void StoreBroadcastIdListL(TRequestStatus& aReqStatus, CMobilePhoneBroadcastIdList* aIdList, TMobileBroadcastIdType aIdType);
       
  8769 	IMPORT_C void NotifyBroadcastIdListChange(TRequestStatus& aReqStatus) const;
       
  8770 
       
  8771 private:
       
  8772 	RMobileBroadcastMessaging(const RMobileBroadcastMessaging&);
       
  8773 	CCbsMessagingPtrHolder* iCbsMessagingPtrHolder;
       
  8774 protected:
       
  8775 	IMPORT_C void ConstructL();
       
  8776 	IMPORT_C void Destruct();
       
  8777 	};
       
  8778 
       
  8779 /*********************************************************/
       
  8780 //
       
  8781 // USSD Messaging (RMobileUssdMessaging)
       
  8782 // 
       
  8783 /*********************************************************/
       
  8784 
       
  8785 
       
  8786 
       
  8787 class CUssdMessagingPtrHolder;
       
  8788 class RMobileUssdMessaging : public RTelSubSessionBase
       
  8789 /** Provides client access to USSD functionality provided by TSY. 
       
  8790 */
       
  8791 	{
       
  8792 public:
       
  8793 	IMPORT_C RMobileUssdMessaging();
       
  8794 
       
  8795 	IMPORT_C TInt Open(RMobilePhone& aPhone);
       
  8796 	IMPORT_C void Close();
       
  8797 
       
  8798 /** Defines the USSD Messaging Format Capabilities.
       
  8799 
       
  8800 Modes: GSM/WCDMA */
       
  8801 	enum TMobileUssdFormatCaps
       
  8802 		{
       
  8803 	/** USSD messages coded as a packed string within 160 octets, as defined for a 
       
  8804 	ussd-String within GSM 04.80 and GSM 03.38.
       
  8805 	
       
  8806 	Modes: GSM/WCDMA */
       
  8807 		KCapsPackedString=0x00000001
       
  8808 		};
       
  8809 
       
  8810 /** Defines the USSD Messaging Type Capabilities.
       
  8811 
       
  8812 Modes: GSM/WCDMA */
       
  8813 	enum TMobileUssdTypeCaps
       
  8814 		{
       
  8815 	/** Outgoing USSD messages are supported.
       
  8816 	
       
  8817 	Modes: GSM/WCDMA */
       
  8818 		KCapsMOUssd=0x00000001,
       
  8819 	/** Incoming USSD messages are supported.
       
  8820 	
       
  8821 	Modes: GSM/WCDMA */
       
  8822 		KCapsMTUssd=0x00000002
       
  8823 		};
       
  8824 
       
  8825 	
       
  8826 
       
  8827 	class TMobileUssdCapsV1 : public RMobilePhone::TMultimodeType
       
  8828 	/** Defines capabilities of USSD messaging. 
       
  8829 	@publishedPartner
       
  8830 	@released
       
  8831 	*/
       
  8832 		{
       
  8833 	public:
       
  8834 		IMPORT_C TMobileUssdCapsV1();
       
  8835 	/** Sum of TMobileUssdFormatCaps constants.
       
  8836 	
       
  8837 	Modes: GSM/WCDMA
       
  8838 
       
  8839 	@see TMobileUssdFormatCaps */
       
  8840 		TUint32 iUssdFormat;
       
  8841 	/** Sum of TMobileUssdTypeCaps constants.
       
  8842 	
       
  8843 	Modes: GSM/WCDMA
       
  8844 
       
  8845 	@see TMobileUssdTypeCaps */
       
  8846 		TUint32 iUssdTypes;
       
  8847 		};
       
  8848 
       
  8849 /** A typedef'd packaged TMobileUssdCapsV1 for passing through a generic API member 
       
  8850 function. */
       
  8851 	typedef TPckg<TMobileUssdCapsV1> TMobileUssdCapsV1Pckg;
       
  8852 
       
  8853 	IMPORT_C TInt GetCaps(TDes8& aCaps) const;
       
  8854 
       
  8855 /** Defines the USSD Messaging Attributes.
       
  8856 
       
  8857 Modes: GSM/WCDMA
       
  8858 
       
  8859 @see TMobileUssdAttributesV1 */
       
  8860 	enum TMobileUssdAttributeFlags
       
  8861 		{
       
  8862 	/** The iFormat field is valid in the attribute class. */
       
  8863 		KUssdDataFormat = 0x00000001,
       
  8864 	/** The iType field is valid in the attribute class. */
       
  8865 		KUssdMessageType = 0x00000002,
       
  8866 	/** The iDcs field is valid in the attribute class. */
       
  8867 		KUssdMessageDcs = 0x00000004
       
  8868 		};
       
  8869 
       
  8870 /** Defines the USSD Data Formats.
       
  8871 
       
  8872 Modes: Common */
       
  8873 	enum TMobileUssdDataFormat
       
  8874 		{
       
  8875 	/** The message data format is unspecified.
       
  8876 	
       
  8877 	Modes: Common */
       
  8878 		EFormatUnspecified,
       
  8879 	/** The message data format complies to a USSD coded as 160 octets as defined for 
       
  8880 	a ussd-String within GSM 04.80 and GSM 03.38.
       
  8881 	
       
  8882 	Modes: GSM/WCDMA */
       
  8883 		EFormatPackedString
       
  8884 		};
       
  8885 
       
  8886 /** Defines the USSD Message Types.
       
  8887 
       
  8888 Modes: GSM/WCDMA */
       
  8889 	enum TMobileUssdMessageType
       
  8890 		{
       
  8891 	/** Message is an unknown type. */
       
  8892 		EUssdUnknown,
       
  8893 	/** Message is a mobile originated USSD request. The MS expects the network to 
       
  8894 	send a USSD MT reply. */
       
  8895 		EUssdMORequest,
       
  8896 	/** Message is a reply to a previously received network initiated USSD request. 
       
  8897 	It is a USSD MO reply. */
       
  8898 		EUssdMOReply,
       
  8899 	/** Message is a one-off network initiated USSD notification. The network expects the MS to
       
  8900 	send a USSD MO acknowledgement with empty message content. */
       
  8901 		EUssdMTNotify,
       
  8902 	/** Message is a network initiated USSD request. The network expects
       
  8903 	the MS to send a USSD MO reply. */
       
  8904 		EUssdMTRequest,
       
  8905 	/** Message is a network initiated reply to a previously sent MO USSD request. */
       
  8906 		EUssdMTReply,
       
  8907 	/** For acknowledging MT USSD notifications (empty message content). */
       
  8908 		EUssdMOAcknowledgement
       
  8909 		};
       
  8910 
       
  8911 	
       
  8912 
       
  8913 	class TMobileUssdAttributesV1 : public RMobilePhone::TMultimodeType
       
  8914 	/** Defines attributes of a USSD message. 
       
  8915 	@publishedPartner
       
  8916 	@released
       
  8917 	*/
       
  8918 		{
       
  8919 	public:
       
  8920 		IMPORT_C TMobileUssdAttributesV1();
       
  8921 	public:
       
  8922 	/** The TMobileUssdAttributeFlags bit-mask flags indicating which attributes are
       
  8923 	present in this instance.
       
  8924 	
       
  8925 	Modes: GSM/WCDMA
       
  8926 
       
  8927 	@see TMobileUssdAttributeFlags */
       
  8928 		TUint32 iFlags;
       
  8929 	/** Format of the message data buffer.
       
  8930 	
       
  8931 	Modes: GSM/WCDMA
       
  8932 	
       
  8933 	@see TMobileUssdDataFormat */
       
  8934 		TMobileUssdDataFormat iFormat;
       
  8935 	/** The type of USSD message.
       
  8936 	
       
  8937 	Modes: GSM/WCDMA
       
  8938 	
       
  8939 	@see TMobileUssdMessageType */
       
  8940 		TMobileUssdMessageType iType;
       
  8941 	/** The Data Coding Scheme of the USSD message.
       
  8942 	
       
  8943 	Modes: GSM/WCDMA */
       
  8944 		TUint8 iDcs;
       
  8945 		};
       
  8946 	
       
  8947 /** A typedef'd packaged TMobileUssdAttributesV1 for passing through a generic 
       
  8948 API member function. */
       
  8949 	typedef TPckg<TMobileUssdAttributesV1> TMobileUssdAttributesV1Pckg;
       
  8950 
       
  8951 	/***********************************************************************************/
       
  8952 	//
       
  8953 	// Receiving USSD messages
       
  8954  	//
       
  8955 	/***********************************************************************************/
       
  8956 
       
  8957 	enum 
       
  8958 		{
       
  8959 		KGsmUssdDataSize = 160
       
  8960 		};
       
  8961 
       
  8962 /** A typedef'd buffer to hold the message data. */
       
  8963 	typedef TBuf8<KGsmUssdDataSize> TGsmUssdMessageData;
       
  8964 
       
  8965 	IMPORT_C void ReceiveMessage(TRequestStatus& aReqStatus, TDes8& aMsgData, TDes8& aMsgAttributes) const;
       
  8966 
       
  8967 	/***********************************************************************************/
       
  8968 	//
       
  8969 	// Sending USSD messages
       
  8970 	//
       
  8971 	/***********************************************************************************/
       
  8972 
       
  8973 	IMPORT_C void SendMessage(TRequestStatus& aReqStatus, const TDesC8& aMsgData, const TDesC8& aMsgAttributes) const;
       
  8974 	IMPORT_C void SendMessageNoFdnCheck(TRequestStatus& aReqStatus, const TDesC8& aMsgData, const TDesC8& aMsgAttributes) const;
       
  8975 	
       
  8976 	IMPORT_C void SendRelease(TRequestStatus& aReqStatus, TDes8& aReturnResult) const;
       
  8977 	IMPORT_C void NotifyNetworkRelease(TRequestStatus& aReqStatus, TDes8& aReturnResult) const;
       
  8978 	IMPORT_C void NotifyNetworkRelease(TRequestStatus& aReqStatus, TDes8& aMsgData, TDes8& aMsgAttributes) const;
       
  8979 
       
  8980 private:
       
  8981 	RMobileUssdMessaging(const RMobileUssdMessaging&);
       
  8982 	CUssdMessagingPtrHolder* iUssdMessagingPtrHolder;
       
  8983 protected:
       
  8984 	IMPORT_C void ConstructL();
       
  8985 	IMPORT_C void Destruct();
       
  8986 	};
       
  8987 
       
  8988 
       
  8989 
       
  8990 /*********************************************************/
       
  8991 //
       
  8992 // SMS Message Storage (RMobileSmsStore)
       
  8993 //
       
  8994 /*********************************************************/
       
  8995 
       
  8996 
       
  8997 
       
  8998 class CSmsStorePtrHolder;
       
  8999 class CMobilePhoneSmsList;
       
  9000 class RMobileSmsStore : public RMobilePhoneStore
       
  9001 /** Provides client access to SMS storage functionality provided by TSY.
       
  9002 @publishedPartner
       
  9003 @released
       
  9004 */
       
  9005 	{
       
  9006 public:
       
  9007 
       
  9008 	IMPORT_C RMobileSmsStore();
       
  9009 	IMPORT_C TInt Open(RMobileSmsMessaging& aMessaging, const TDesC& aStoreName);
       
  9010 	IMPORT_C void Close();
       
  9011 
       
  9012 /** Defines the SMS Store Capabilities.
       
  9013 
       
  9014 Modes: Common */
       
  9015 	enum TMobileSmsStoreCaps
       
  9016 		{
       
  9017 	/** The store contains unread, incoming SMS entries.
       
  9018 	
       
  9019 	Modes: Common */
       
  9020 		KCapsUnreadMessages = 0x00000001,
       
  9021 	/** The store contains read, incoming SMS entries.
       
  9022 	
       
  9023 	Modes: Common */
       
  9024 		KCapsReadMessages = 0x00000002,
       
  9025 	/** The store contains sent SMS entries.
       
  9026 	
       
  9027 	Modes: Common */
       
  9028 		KCapsSentMessages = 0x00000004,
       
  9029 	/** The store contains un sent SMS entries. */
       
  9030 		KCapsUnsentMessages = 0x00000008,
       
  9031 	/** The store contains GSM SMS message entries – so TMobileGsmSmsEntryV1 class 
       
  9032 	should be used.
       
  9033 	
       
  9034 	Modes: GSM/WCDMA */
       
  9035 		KCapsGsmMessages = 0x00000010,
       
  9036 	/** The store contains CDMA SMS message entries – so TMobileCdmaSmsEntryV1 class 
       
  9037 	should be used.
       
  9038 	
       
  9039 	Modes: CDMA */
       
  9040 		KCapsCdmaMessages = 0x00000020
       
  9041 		};
       
  9042 
       
  9043 /** Defines contents of a fixed-size, stored SMS entry.
       
  9044 
       
  9045 Modes: Common */
       
  9046 	enum TMobileSmsStoreStatus
       
  9047 		{
       
  9048 	/** The status of the SMS is unknown. */
       
  9049 		EStoredMessageUnknownStatus,
       
  9050 	/** The SMS is stored phone-side. It is an incoming message that has not been read 
       
  9051 	yet. */
       
  9052 		EStoredMessageUnread,
       
  9053 	/** The SMS is stored phone-side. It is an incoming message that has already been 
       
  9054 	read. */
       
  9055 		EStoredMessageRead,
       
  9056 	/** The SMS is stored phone-side. It is an outgoing message that has not been sent 
       
  9057 	yet. */
       
  9058 		EStoredMessageUnsent,
       
  9059 	/** The SMS is stored phone-side. It is an outgoing message that has already been 
       
  9060 	sent but a delivery/status report has either not been received yet or was 
       
  9061 	not requested in the first place. */
       
  9062 		EStoredMessageSent,
       
  9063 	/** The SMS is stored phone-side. It is an outgoing message that has already been 
       
  9064 	sent and a delivery/status report has been received */
       
  9065 		EStoredMessageDelivered
       
  9066 		};
       
  9067 
       
  9068 	//
       
  9069 	// Enum used by TSY to distinguish which SMS entry class is used by client
       
  9070 	//
       
  9071 
       
  9072 /** Used by TSY to distinguish which SMS entry class is used by client. */
       
  9073 	enum TMobileSmsEntryExtensionId
       
  9074 		{
       
  9075 	/** Type is unknown. */
       
  9076 		KETelMobileSmsEntryV1=KETelExtMultimodeV1,
       
  9077 	/** The iExtensionId contents indicate that the packaged class is a TMobileGsmSmsEntryV1.
       
  9078 	
       
  9079 	Also used to indicate that GSM SMS entries will be retrieved by CRetrieveMobilePhoneSmsList. */
       
  9080 		KETelMobileGsmSmsEntryV1,
       
  9081 	/** The iExtensionId contents indicate that the packaged class is a TMobileCdmaSmsEntryV1.
       
  9082 	
       
  9083 	Also used to indicate that CDMA SMS entries will be retrieved by CRetrieveMobilePhoneSmsList. */
       
  9084 		KETelMobileCdmaSmsEntryV1
       
  9085 		};
       
  9086 
       
  9087 	class TMobileSmsEntryV1 : public RMobilePhoneStore::TMobilePhoneStoreEntryV1
       
  9088 	/** Defines contents of a fixed-size, stored SMS entry.
       
  9089 	@publishedPartner
       
  9090 	@released 
       
  9091 	*/
       
  9092 		{
       
  9093 	public:
       
  9094 		void InternalizeL(RReadStream& aStream);
       
  9095 		void ExternalizeL(RWriteStream& aStream) const;
       
  9096 	protected:
       
  9097 		TMobileSmsEntryV1();
       
  9098 	public:
       
  9099 	/** The status of the stored message.
       
  9100 	
       
  9101 	Modes: Common
       
  9102 	
       
  9103 	@see TMobileSmsStoreStatus */
       
  9104 		TMobileSmsStoreStatus	iMsgStatus;	
       
  9105 		};
       
  9106 
       
  9107 /** A typedef'd packaged TMobileSmsEntryV1 for passing through a generic API 
       
  9108 member function. */
       
  9109 	typedef TPckg<TMobileSmsEntryV1> TMobileSmsEntryV1Pckg;
       
  9110 	
       
  9111 	class TMobileGsmSmsEntryV1 : public TMobileSmsEntryV1
       
  9112 /** Defines contents of a fixed-size, stored GSM SMS entry.
       
  9113 @publishedPartner
       
  9114 @released */
       
  9115 		{
       
  9116 	public:
       
  9117 		void InternalizeL(RReadStream& aStream);
       
  9118 		void ExternalizeL(RWriteStream& aStream) const;
       
  9119 	public:
       
  9120 		IMPORT_C TMobileGsmSmsEntryV1();
       
  9121 	public:
       
  9122 	/** The service centre to use (or used) for the message.
       
  9123 	
       
  9124 	Modes: GSM/WCDMA
       
  9125 	
       
  9126 	@see RMobilePhone::TMobileAddress */
       
  9127 		RMobilePhone::TMobileAddress iServiceCentre;
       
  9128 	/** The GSM 03.40 TPDU.
       
  9129 	
       
  9130 	Modes: GSM/WCDMA
       
  9131 	
       
  9132 	@see RMobileSmsMessaging::TMobileSmsGsmTpdu */
       
  9133 		RMobileSmsMessaging::TMobileSmsGsmTpdu	iMsgData;	
       
  9134 		};
       
  9135 
       
  9136 /** A typedef'd packaged TMobileGsmSmsEntryV1 for passing through a generic API 
       
  9137 member function. */
       
  9138 	typedef TPckg<TMobileGsmSmsEntryV1> TMobileGsmSmsEntryV1Pckg;
       
  9139 
       
  9140 	class TMobileCdmaSmsEntryV1 : public TMobileSmsEntryV1
       
  9141 	/** Defines contents of a fixed-size, stored CDMA SMS entry. 
       
  9142 	@publishedPartner
       
  9143 	@released
       
  9144 	*/
       
  9145 		{
       
  9146 	public:
       
  9147 		void InternalizeL(RReadStream& aStream);
       
  9148 		void ExternalizeL(RWriteStream& aStream) const;
       
  9149 	public:
       
  9150 		IMPORT_C TMobileCdmaSmsEntryV1();
       
  9151 	public:
       
  9152 	/** The teleservice identifier of the stored message.
       
  9153 	
       
  9154 	Modes: CDMA */
       
  9155 		TInt iTeleservice;
       
  9156 	/** The service category of the stored message.
       
  9157 	
       
  9158 	Modes: CDMA */
       
  9159 		TInt iServiceCategory;
       
  9160 	/** The remote party (destination or originator) of the stored message.
       
  9161 	
       
  9162 	Modes: CDMA
       
  9163 	
       
  9164 	@see RMobilePhone::TMobileAddress */
       
  9165 		RMobilePhone::TMobileAddress iRemoteParty;
       
  9166 	/** The teleservice layer bearer data of the stored message.
       
  9167 	
       
  9168 	Modes: CDMA
       
  9169 	
       
  9170 	@see RMobileSmsMessaging::TMobileSmsCdmaTpdu */
       
  9171 		RMobileSmsMessaging::TMobileSmsCdmaTpdu iMsgData;	
       
  9172 		};
       
  9173 
       
  9174 /** A typedef'd packaged TMobileCdmaSmsEntryV1 for passing through a generic API 
       
  9175 member function. */
       
  9176 	typedef TPckg<TMobileCdmaSmsEntryV1> TMobileCdmaSmsEntryV1Pckg;
       
  9177 
       
  9178 protected:
       
  9179 	IMPORT_C void ConstructL();
       
  9180 private:
       
  9181 	RMobileSmsStore(const RMobileSmsStore&);
       
  9182 	};
       
  9183 
       
  9184 /*********************************************************/
       
  9185 //
       
  9186 // NAM Storage (RMobileNamStore)
       
  9187 //
       
  9188 /*********************************************************/
       
  9189 
       
  9190 
       
  9191 
       
  9192 class CNamStorePtrHolder;
       
  9193 class CMobilePhoneNamList;
       
  9194 class CMobilePhoneNamListV4;
       
  9195 
       
  9196 class RMobileNamStore : public RMobilePhoneStore
       
  9197 /**
       
  9198 Provides client access to NAM storage functionality provided by TSY
       
  9199 
       
  9200 */
       
  9201 	{
       
  9202 public:
       
  9203 	IMPORT_C RMobileNamStore();
       
  9204 	IMPORT_C TInt Open(RMobilePhone& aPhone);
       
  9205 	IMPORT_C void Close();
       
  9206 
       
  9207 
       
  9208 
       
  9209 	class TMobileNamStoreInfoV1 : public RMobilePhoneStore::TMobilePhoneStoreInfoV1
       
  9210 	/**
       
  9211 	Defines information about a NAM store
       
  9212 	
       
  9213 	@publishedPartner
       
  9214 	@released
       
  9215 	*/
       
  9216 		{
       
  9217 	public:
       
  9218 		IMPORT_C TMobileNamStoreInfoV1();
       
  9219 	public:
       
  9220 	/** The number of enabled NAMs within the NAM store.
       
  9221 	
       
  9222 	Modes: CDMA */
       
  9223 		TInt iNamCount;
       
  9224 	/** The index of the NAM that is currently the active NAM, will be between 0 and 
       
  9225 	iNamCount-1.
       
  9226 	
       
  9227 	Modes: CDMA */
       
  9228 		TInt iActiveNam;
       
  9229 		};
       
  9230 
       
  9231 /** A typedef'd packaged TMobileNamStoreInfoV1 for passing through a generic API 
       
  9232 member function. */
       
  9233 	typedef TPckg<TMobileNamStoreInfoV1> TMobileNamStoreInfoV1Pckg;
       
  9234 
       
  9235 	IMPORT_C void SetActiveNam(TRequestStatus& aReqStatus, TInt aNamId) const;
       
  9236 
       
  9237 	enum
       
  9238 		{
       
  9239 		/* The original maximum NAM parameter size for a TMobileNamEntryV1 */
       
  9240 		KMaxNamParamSize = 64,
       
  9241 		/* Updated maximum NAM parameter size for TMobileNamEntryV4 */
       
  9242 		KMaxNamParamSizeV4 = 256
       
  9243 		};
       
  9244 
       
  9245 	class TMobileNamEntryV1 : public RMobilePhoneStore::TMobilePhoneStoreEntryV1
       
  9246 	/**
       
  9247 	Defines contents of a NAM store entry
       
  9248 	
       
  9249 	@publishedPartner
       
  9250 	@released
       
  9251 	*/
       
  9252 		{
       
  9253 	public:
       
  9254 		IMPORT_C TMobileNamEntryV1();
       
  9255 	public:
       
  9256 		void InternalizeL(RReadStream& aStream);
       
  9257 		void ExternalizeL(RWriteStream& aStream) const;
       
  9258 	public:
       
  9259 	/** The NAM that is to be accessed, will be between 0 and TMobileNamStoreInfoV1::iNamCount-1.
       
  9260 	
       
  9261 	Modes: CDMA */
       
  9262 		TInt iNamId;
       
  9263 	/** The identifier of the NAM parameter to be accessed.
       
  9264 	
       
  9265 	TSY must define values of parameter identifiers.
       
  9266 	
       
  9267 	Modes: CDMA */
       
  9268 		TInt iParamIdentifier;
       
  9269 	/** The data contents of the selected parameter.
       
  9270 	
       
  9271 	Modes: CDMA
       
  9272 	
       
  9273 	@see KMaxNamParamSize */
       
  9274 		TBuf8<KMaxNamParamSize> iData;
       
  9275 		};
       
  9276 
       
  9277 	/** A typedef'd packaged TMobileNamEntryV1 for passing through a generic API member 
       
  9278 	function. */
       
  9279 	typedef TPckg<TMobileNamEntryV1> TMobileNamEntryV1Pckg;
       
  9280 
       
  9281 	/** Enumeration for the standard NAM parameters (see 3GPP2 C.S0005-A appendix F.3)
       
  9282 	Modes: CDMA */
       
  9283 	enum TStandardNamParameters
       
  9284 		{
       
  9285 		/** The 64-bit pattern stored in the Mobile Station and 
       
  9286 			Home Location Register/Authentication Centre used to generate/update the 
       
  9287 			mobile station’s Shared Secret Data
       
  9288 			Corresponds to NAM Indicator 'A_KEY' */
       
  9289 		EAKey,
       
  9290 		/** 64-bit key used for authentication
       
  9291 			Corresponds to NAM Indicator 'SSD_A(s-p)' */
       
  9292 		ESharedSecretDataA,
       
  9293 		/** 64-bit key used as input to generate encryption mask and long code
       
  9294 			Corresponds to NAM Indicator 'SSD_B(s-p)' */
       
  9295 		ESharedSecretDataB,
       
  9296 		/** Modulo-64 event counter maintained by the mobile station and Authentication Center 
       
  9297 			used for clone detection
       
  9298 			Corresponds to NAM Indicator 'COUNT(s-p)' */
       
  9299 		EParameterUpdateReceivedCount,
       
  9300 		/** Class of the International Mobile Station Identity (IMSI) containing a MIN as 
       
  9301 			the lower 10 digits 
       
  9302 			Corresponds to NAM Indicator 'IMSI_M_CLASS(p)' */
       
  9303 		EMinBasedImsiClass,
       
  9304 		/** The class of the International Mobile Station Identity (IMSI) not containing a MIN as 
       
  9305 			the lower 10 digits 
       
  9306 			Corresponds to NAM Indicator 'IMSI_T_CLASS(p)' */
       
  9307 		ETrueImsiClass,
       
  9308 		/** 34-bit number derived from the IMSI M used as input for authentication
       
  9309 			Corresponds to NAM Indicator 'IMSI_M_S(p)' */
       
  9310 		EMinBasedImsiS,
       
  9311 		/** 34-bit number derived from the IMSI T used as input for authentication
       
  9312 			Corresponds to NAM Indicator 'IMSI_T_S(p)' */
       
  9313 		ETrueImsiS,
       
  9314 		/** Number of digits in the IMSI M minus 4
       
  9315 			Corresponds to NAM Indicator 'IMSI_M_ADDR_NUM(p)' */
       
  9316 		EMinBasedImsiAddressNum,
       
  9317 		/** The number of digits in the IMSI T minus 4
       
  9318 			Corresponds to NAM Indicator 'IMSI_T_ADDR_NUM(p)' */
       
  9319 		ETrueImsiAddressNum,
       
  9320 		/** The 11th and 12th digits in the IMSI M
       
  9321 			Corresponds to NAM Indicator 'IMSI_M_11_12(p)' */
       
  9322 		EMinBasedImsiDigits11and12,
       
  9323 		/** The 11th and 12th digits in the IMSI T
       
  9324 			Corresponds to NAM Indicator 'IMSI_T_11_12(p)' */
       
  9325 		ETrueImsiDigits11and12,
       
  9326 		/** The country code for the IMSI M
       
  9327 			Corresponds to NAM Indicator 'MCC_M(p)' */
       
  9328 		EMinBasedMobileCountryCode,
       
  9329 		/** The country code for the IMSI T
       
  9330 			Corresponds to NAM Indicator 'MCC_T(p)' */
       
  9331 		ETrueMobileCountryCode,
       
  9332 		/** Up to 15 digit dialable number associated with the mobile station through a service 
       
  9333 			subscription
       
  9334 			Corresponds to NAM Indicator 'MDN(p)' */
       
  9335 		EMobileDirectoryNumber,
       
  9336 		/** 4-bit number giving the length of the assigning Temporary Mobile Station Identity (TMSI) zone 
       
  9337 			(can range from 1 to 8 octets)
       
  9338 			Corresponds to NAM Indicator 'ASSIGNING_TMSI_ZONE_LEN(s-p)' */
       
  9339 		EAssigningTmsiZoneLen,
       
  9340 		/** Temporary Mobile Station Identity (TMSI) zone is an arbitrary set of base stations 
       
  9341 			for the administrative assignment of TMSI
       
  9342 			Corresponds to NAM Indicator 'ASSIGNING_TMSI_ZONE(s-p)' */
       
  9343 		EAssigningTmsiZone,
       
  9344 		/** The uniquely assigned number to a mobile station inside a TMSI zone
       
  9345 			Corresponds to NAM Indicator 'TMSI_CODE(s-p)' */
       
  9346 		ETmsiCode,
       
  9347 		/** The expiration time used to automatically delete the assigned TMSI
       
  9348 			Corresponds to NAM Indicator 'TMSI_EXP_TIME(s-p)' */
       
  9349 		ETmsiExpTime,
       
  9350 		/** Mobile station's home System Id for 800MHz analog operation
       
  9351 			Corresponds to NAM Indicator 'HOME_SID(p)' */
       
  9352 		EHomeSystemIdAnalog,
       
  9353 		/** Mobile station's home System Id
       
  9354 			Corresponds to NAM Indicator 'SID(p)' */
       
  9355 		EHomeSystemId,
       
  9356 		/** Mobile station's home Network Id
       
  9357 			Corresponds to NAM Indicator 'NID(p)' */
       
  9358 		EHomeNetworkId,
       
  9359 		/** Mobile station is configured to receive mobile station terminated calls when 
       
  9360 			using a home (SID, NID) pair
       
  9361 			Corresponds to NAM Indicator 'MOB_TERM_HOME(p)' */
       
  9362 		EReceiveCallsHome,
       
  9363 		/** The mobile station is configured to receive mobile station terminated calls when 
       
  9364 			it is a foreign SID roamer
       
  9365 			Corresponds to NAM Indicator 'MOB_TERM_FOR_SID(p)' */
       
  9366 		EReceiveCallsForeignSystem,
       
  9367 		/** The mobile station is configured to receive mobile station terminated calls when 
       
  9368 			it is a foreign NID roamer
       
  9369 			Corresponds to NAM Indicator 'MOB_TERM_FOR_NID(p)' */
       
  9370 		EReceiveCallsForeignNetwork,
       
  9371 		/**	A TSY may use this as the first TSY-defined non-standard NAM parameter */
       
  9372 		ENumStandardNamParameters
       
  9373 		};
       
  9374 
       
  9375 	class TMobileNamEntryV4 : public RMobilePhoneStore::TMobilePhoneStoreEntryV1
       
  9376 	/**
       
  9377 	Defines contents of a NAM store entry
       
  9378 
       
  9379 	The differences between the original TMobileNamEntryV1, and updated TMobileNamEntryV4 are:
       
  9380 	- the maximum mobile NAM parameter size is KMaxNamParamSize(64) for TMobileNamEntryV1
       
  9381 	  and KMaxNamParamSizeV4(256) for TMobileNamEntryV4
       
  9382 	- TMobileNamEntryV4 defines a set of standard NAM parameters for the iParamIdentifier as
       
  9383 	  described in 3GPP2 C.S0005-A appendix F.3
       
  9384 	
       
  9385 	@publishedPartner
       
  9386 	@released
       
  9387 	*/
       
  9388 		{
       
  9389 	public:
       
  9390 		IMPORT_C TMobileNamEntryV4();
       
  9391 	public:
       
  9392 		void InternalizeL(RReadStream& aStream);
       
  9393 		void ExternalizeL(RWriteStream& aStream) const;
       
  9394 	public:
       
  9395 	/** The NAM that is to be accessed, will be between 0 and TMobileNamStoreInfo::iNamCount-1.
       
  9396 	
       
  9397 	Modes: CDMA */
       
  9398 		TInt iNamId;
       
  9399 
       
  9400 	/** The identifier of the NAM parameter to be accessed.
       
  9401 	iParamIdentifier will be a TStandardNamParameters value if a standard NAM parameter is being accessed, 
       
  9402 	however a TSY may support and define NAM parameters in addition to those given by TStandardNamParameters	
       
  9403 	Modes: CDMA */
       
  9404 		TInt iParamIdentifier;
       
  9405 
       
  9406 	/** The data contents of the selected parameter.
       
  9407 	
       
  9408 	Modes: CDMA
       
  9409 	
       
  9410 	@see KMaxNamParamSizeV4 */
       
  9411 		TBuf8<KMaxNamParamSizeV4> iData;
       
  9412 		};
       
  9413 
       
  9414 	/** A typedef'd packaged TMobileNamEntryV4 for passing through a generic API member 
       
  9415 	function. */
       
  9416 	typedef TPckg<TMobileNamEntryV4> TMobileNamEntryV4Pckg;
       
  9417 
       
  9418 	IMPORT_C void StoreAllL(TRequestStatus& aReqStatus, TInt aNamId, CMobilePhoneNamList* aNamList) const;
       
  9419 	IMPORT_C void StoreAllL(TRequestStatus& aReqStatus, TInt aNamId, CMobilePhoneNamListV4* aNamList) const;
       
  9420 
       
  9421 protected:
       
  9422 	IMPORT_C void ConstructL();
       
  9423 private:
       
  9424 	RMobileNamStore(const RMobileNamStore&);
       
  9425 	};
       
  9426 
       
  9427 
       
  9428 /*********************************************************/
       
  9429 //
       
  9430 // Own Number Storage (RMobileONStore)
       
  9431 //
       
  9432 /*********************************************************/
       
  9433 
       
  9434 
       
  9435 
       
  9436 class CONStorePtrHolder;
       
  9437 class CMobilePhoneONList;
       
  9438 	
       
  9439 class RMobileONStore : public RMobilePhoneStore
       
  9440 /**
       
  9441 Provides client access to Own Number storage functionality provided by TSY
       
  9442 
       
  9443 */
       
  9444 	{
       
  9445 public:
       
  9446 	IMPORT_C RMobileONStore();
       
  9447 	IMPORT_C TInt Open(RMobilePhone& aPhone);
       
  9448 	IMPORT_C void Close();
       
  9449 
       
  9450 	
       
  9451 
       
  9452 	class TMobileONStoreInfoV1 : public RMobilePhoneStore::TMobilePhoneStoreInfoV1
       
  9453 	/**
       
  9454 	Defines information about an Own Number store
       
  9455 	
       
  9456 	@publishedPartner
       
  9457 	@released
       
  9458 	*/
       
  9459 		{
       
  9460 	public:
       
  9461 		IMPORT_C TMobileONStoreInfoV1();
       
  9462 	public:
       
  9463 	/** The maximum length of the own phone number can be. */
       
  9464 		TInt iNumberLen;
       
  9465 	/** The maximum length the text field can be. */
       
  9466 		TInt iTextLen;
       
  9467 		};
       
  9468 
       
  9469 /** A typedef'd packaged TMobileONStoreInfoV1 for passing through a generic API 
       
  9470 member function. */
       
  9471 	typedef TPckg<TMobileONStoreInfoV1> TMobileONStoreInfoV1Pckg;
       
  9472 
       
  9473 	enum
       
  9474 		{
       
  9475 		KOwnNumberTextSize = 20
       
  9476 		};
       
  9477 
       
  9478 	
       
  9479 
       
  9480 	class TMobileONEntryV1 : public RMobilePhoneStore::TMobilePhoneStoreEntryV1
       
  9481 	/**
       
  9482 	Defines contents of a Own Number store entry
       
  9483 	
       
  9484 	@publishedPartner
       
  9485 	@released
       
  9486 	*/
       
  9487 		{
       
  9488 	public:
       
  9489 		IMPORT_C TMobileONEntryV1();
       
  9490 	public:
       
  9491 		void InternalizeL(RReadStream& aStream);
       
  9492 		void ExternalizeL(RWriteStream& aStream) const;
       
  9493 	public:
       
  9494 	/** Network mode. */
       
  9495 		RMobilePhone::TMobilePhoneNetworkMode iMode;
       
  9496 	/** Mobile call service type.
       
  9497 	
       
  9498 	@see RMobilePhone::TMobileService */
       
  9499 		RMobilePhone::TMobileService iService;
       
  9500 	/** Own number.
       
  9501 	
       
  9502 	@see RMobilePhone::TMobileAddress */
       
  9503 		RMobilePhone::TMobileAddress iNumber;
       
  9504 	/** The name-tag associated with own number (e.g. "Voice Number"). */
       
  9505 		TBuf<KOwnNumberTextSize> iText;
       
  9506 		};
       
  9507 
       
  9508 /** A typedef'd packaged TMobileONEntryV1 for passing through a generic API member 
       
  9509 function. */
       
  9510 	typedef TPckg<TMobileONEntryV1> TMobileONEntryV1Pckg;
       
  9511 
       
  9512 	IMPORT_C void StoreAllL(TRequestStatus& aReqStatus, CMobilePhoneONList* aONList) const;
       
  9513 
       
  9514 protected:
       
  9515 	IMPORT_C void ConstructL();
       
  9516 private:
       
  9517 	RMobileONStore(const RMobileONStore&);
       
  9518 	};
       
  9519 
       
  9520 /*********************************************************/
       
  9521 //
       
  9522 // Emergency Number Storage (RMobileENStore)
       
  9523 //
       
  9524 /*********************************************************/
       
  9525 
       
  9526 
       
  9527 
       
  9528 class CMobilePhoneENList;
       
  9529 
       
  9530 class RMobileENStore : public RMobilePhoneStore
       
  9531 /**
       
  9532 Provides client access to Emergency Number storage functionality provided by TSY
       
  9533 
       
  9534 */
       
  9535 	{
       
  9536 public:
       
  9537 	IMPORT_C RMobileENStore();
       
  9538 	IMPORT_C TInt Open(RMobilePhone& aPhone);
       
  9539 	IMPORT_C void Close();
       
  9540 
       
  9541 	enum 
       
  9542 		{
       
  9543 		KEmergencyNumberSize  = 6,
       
  9544 		KEmergencyAlphaTagSize = 20
       
  9545 		};
       
  9546 
       
  9547 /** Enumerated list of Emergency Number entries.
       
  9548 
       
  9549 Mode: WCDMA */
       
  9550 	enum TMobilePhoneENServiceCategory
       
  9551 		{
       
  9552 	/** This number provides emergency care by the police department. */
       
  9553 		KServiceCatPolice =0x0001,
       
  9554 	/** This number provides emergency care by the ambulance department. */
       
  9555 		KServiceCatAmbulance =0x0002,
       
  9556 	/** This number provides emergency care by the fire brigade department. */
       
  9557 		KServiceCatFireBrigade =0x0004,
       
  9558 	/** This number provides emergency care by the marine guard department. */
       
  9559 		KServiceCatMarineGuard =0x0008,
       
  9560 	/** This number provides emergency care by the mountain rescue department. */
       
  9561 		KServiceCatMountainRescue =0x0010
       
  9562 		// Reserved types: 0x0020,0x0040,
       
  9563 		};
       
  9564 
       
  9565 	
       
  9566 
       
  9567 /** Buffer to hold the emergency number in. */
       
  9568 	typedef TBuf<KEmergencyNumberSize> TEmergencyNumber;
       
  9569 
       
  9570 	class TMobileENEntryV1 : public RMobilePhoneStore::TMobilePhoneStoreEntryV1
       
  9571 	/**
       
  9572 	Defines contents of a Emergency Number store entry
       
  9573 	@publishedPartner
       
  9574 	@released
       
  9575 	*/
       
  9576 		{
       
  9577 	public:
       
  9578 		IMPORT_C TMobileENEntryV1();
       
  9579 	public:
       
  9580 		void InternalizeL(RReadStream& aStream);
       
  9581 		void ExternalizeL(RWriteStream& aStream) const;
       
  9582 	public:
       
  9583 	/** Indicates whether the emergency number is applicable in all situations (=EFalse) 
       
  9584 	or only when the MS is registered to a specific GSM or CDMA network (=ETrue). */
       
  9585 		TBool iNetworkSpecific;
       
  9586 	/** The network mode. Only applicable if iNetworkSpecific equals ETrue.
       
  9587 
       
  9588 	Modes: Common
       
  9589 	
       
  9590 	@see RMobilePhone::TMobilePhoneNetworkMode */
       
  9591 		RMobilePhone::TMobilePhoneNetworkMode iMode;
       
  9592 	/** Country code. Only applicable if iNetworkSpecific equals ETrue.
       
  9593 	
       
  9594 	Modes: Common
       
  9595 	
       
  9596 	@see RMobilePhone::TMobilePhoneNetworkCountryCode */
       
  9597 		RMobilePhone::TMobilePhoneNetworkCountryCode iCountryCode;
       
  9598 	/** Network identity. Only applicable if iNetworkSpecific equals ETrue.
       
  9599 	
       
  9600 	Modes: Common
       
  9601 	
       
  9602 	@see RMobilePhone::TMobilePhoneNetworkIdentity */
       
  9603 		RMobilePhone::TMobilePhoneNetworkIdentity iIdentity;
       
  9604 	/** Emergency number.
       
  9605 	
       
  9606 	Modes: Common
       
  9607 	
       
  9608 	@see TEmergencyNumber */
       
  9609 		TEmergencyNumber             iNumber;
       
  9610 	/** Emergency call number type. It is used to display information about the dialed 
       
  9611 	emergency number (e.g. "Police", "Ambulance", "Fire brigade", etc.)
       
  9612 	
       
  9613 	Modes: WCDMA */
       
  9614 		TBuf<KEmergencyAlphaTagSize> iAlphaId;
       
  9615 		//TInt should map to TMobilePhoneENServiceCategory.
       
  9616 		//It was not changed to maintain source compatibility
       
  9617 		
       
  9618 	/** Emergency call type indicator, which contains information to be sent to the 
       
  9619 	network indicating the type of emergency call.
       
  9620 	
       
  9621 	The field is for future reference only and it is set to RFU (Reserved for
       
  9622 	Future Use) as it is currently not being used, as specified in section 4.2.21 
       
  9623 	TS 31.102 v3.3.0 Rel 99.
       
  9624 	
       
  9625 	Modes: WCDMA */
       
  9626 		TInt	                     iCallType; 
       
  9627 		};
       
  9628 
       
  9629 	typedef TPckg<TMobileENEntryV1> TMobileENEntryV1Pckg;
       
  9630 
       
  9631 protected:
       
  9632 	IMPORT_C void ConstructL();
       
  9633 private:
       
  9634 	RMobileENStore(const RMobileENStore&);
       
  9635 	};
       
  9636 
       
  9637 
       
  9638 /*********************************************************/
       
  9639 //
       
  9640 // RMobilePhoneBookStore 
       
  9641 //
       
  9642 /*********************************************************/
       
  9643 
       
  9644 
       
  9645 
       
  9646 class CPhoneBookStorePtrHolder;
       
  9647 class CMobilePhoneBookList;
       
  9648 
       
  9649 class RMobilePhoneBookStore : public RMobilePhoneStore
       
  9650 /** Provides member functions for clients to access phone 
       
  9651 books that are stored in ICC memory or in non-volatile memory on the phone 
       
  9652 itself. This sub-session and the member functions within this section must 
       
  9653 be supported if the TSY indicates that it supports the MobilePhonebookStore 
       
  9654 functional unit.
       
  9655 @publishedPartner
       
  9656 @released 
       
  9657 */
       
  9658 	{
       
  9659 public:
       
  9660 	IMPORT_C RMobilePhoneBookStore();
       
  9661 	IMPORT_C TInt Open(RMobilePhone& aPhone, const TDesC& aStore);
       
  9662 	IMPORT_C TInt Open(RMobilePhone& aPhone, const TDesC& aStore, const TDesC& aMode);
       
  9663 	IMPORT_C void Close();
       
  9664 
       
  9665 /** Describes the specialized phone book capabilities.
       
  9666 
       
  9667 Modes: Common */
       
  9668 	enum TMobilePhoneBookCaps
       
  9669 		{
       
  9670 	/** New entries can only be written to (or deleted from) the phone book with the 
       
  9671 	PIN2 password or equivalent.
       
  9672 	
       
  9673 	Modes: Common */
       
  9674 		KCapsRestrictedWriteAccess = 0x00000001,
       
  9675 	/** The phonebook supports the second name field.
       
  9676 	
       
  9677 	Modes: WCDMA */
       
  9678 		KCapsSecondNameUsed        = 0x00000002,
       
  9679 	/** The phonebook supports the additional number (with optional Text, TON, NPI 
       
  9680 	and Bearer Capability) field.
       
  9681 	
       
  9682 	Modes: WCDMA */
       
  9683 		KCapsAdditionalNumUsed     = 0x00000004,
       
  9684 	/** The phonebook supports the group name field.
       
  9685 	
       
  9686 	Modes: WCDMA */
       
  9687 		KCapsGroupingUsed		   = 0x00000008,
       
  9688 	/** The phonebook supports entry control and hidden flag fields.
       
  9689 
       
  9690 	Modes: WCDMA */
       
  9691 		KCapsEntryControlUsed      = 0x00000010,
       
  9692 	/** The phonebook supports the email address field.
       
  9693 	
       
  9694 	Modes: WCDMA */
       
  9695 		KCapsEmailAddressUsed      = 0x00000020,
       
  9696 	/** The phonebook supports the bearer capability IE field.
       
  9697 	
       
  9698 	Modes: WCDMA */
       
  9699 		KCapsBearerCapUsed		   = 0x00000040,
       
  9700 	/** The phonebook supports retrieval of the phonebook's PBID and Change Counter 
       
  9701 	- and for each entry its UID field.
       
  9702 	
       
  9703 	Modes: WCDMA */
       
  9704 		KCapsSynchronisationUsed   = 0x00000080
       
  9705 		};
       
  9706 
       
  9707 /** Described the location of the phone book.
       
  9708 
       
  9709 Modes: Common for all */
       
  9710 	enum TMobilePhoneBookLocation
       
  9711 		{
       
  9712 	/** The phonebook's location is unknown. */
       
  9713 		ELocationUnknown,
       
  9714 	/** The phonebook is located in ICC (SIM/R-UIM) memory. */
       
  9715 		ELocationIccMemory,
       
  9716 	/** The phonebook is located in Phone (ME) memory. */
       
  9717 		ELocationPhoneMemory,
       
  9718 	/** The phonebook is located in an external memory. */
       
  9719 		ELocationExternalMemory,
       
  9720 	/** The phonebook entries are dispersed over a combination of memory locations. */
       
  9721 		ELocationCombinedMemory
       
  9722 		};
       
  9723 
       
  9724 	enum
       
  9725 		{
       
  9726 		KMaxPBIDSize=15
       
  9727 		};
       
  9728 
       
  9729 /** Defines a modifiable buffer descriptor to contain the phone book identity. 
       
  9730 Used in TMobilePhoneBookInfoV1. */
       
  9731 	typedef TBuf8<KMaxPBIDSize> TMobilePhoneBookIdentity;
       
  9732 
       
  9733 	
       
  9734 
       
  9735 	class TMobilePhoneBookInfoV1 : public RMobilePhoneStore::TMobilePhoneStoreInfoV1
       
  9736 	/**
       
  9737 	Defines information about a Phonebook store.
       
  9738 	@publishedPartner
       
  9739 	@released
       
  9740 	*/
       
  9741 		{
       
  9742 	public:
       
  9743 	/** Trivial constructor. Initializes iMaxNumLength=-1; iMaxTextLength=-1; iLocation=ELocationUnknown; 
       
  9744 	iChangeCounter=0; iExtensionId=KETelMobilePhonebookStoreV1; */
       
  9745 		IMPORT_C TMobilePhoneBookInfoV1();
       
  9746 	public:
       
  9747 	/** The maximum number of characters for the number in a phonebook entry.
       
  9748 	
       
  9749 	Modes: Common */
       
  9750 		TInt    iMaxNumLength;
       
  9751 	/** The maximum number of characters for the text tag in a phonebook entry.
       
  9752 	
       
  9753 	Modes: Common */
       
  9754 		TInt    iMaxTextLength;
       
  9755 	/** The memory location of this phonebook.
       
  9756 	
       
  9757 	Modes: Common
       
  9758 	
       
  9759 	@see TMobilePhoneBookLocation */
       
  9760 		TMobilePhoneBookLocation iLocation;
       
  9761 	/** The contents of the Change Counter file in a USIM phonebook.
       
  9762 	
       
  9763 	Modes: WCDMA */
       
  9764 		TUint16 iChangeCounter;
       
  9765 	/** A unique identity for this type of phonebook.
       
  9766 	
       
  9767 	If this is a SIM or R-UIM phonebook then it will equal the ICCID of the card.
       
  9768 	
       
  9769 	If this is a USIM phonebook then it will equal the PBID of the phonebook. 
       
  9770 	
       
  9771 	Modes: Common
       
  9772 	
       
  9773 	@see TMobilePhoneBookIdentity */
       
  9774 		TMobilePhoneBookIdentity iIdentity; 
       
  9775 		};
       
  9776 
       
  9777 /** Packages the TMobilePhoneBookInfoV1 into a TMobilePhoneBookInfoV1Pckg. */
       
  9778 	typedef TPckg<TMobilePhoneBookInfoV1> TMobilePhoneBookInfoV1Pckg;
       
  9779 
       
  9780 	
       
  9781 	class TMobilePhoneBookInfoV2 : public TMobilePhoneBookInfoV1
       
  9782 /** Defines information about a Phonebook store for version v2.0 of the API.
       
  9783 @publishedPartner
       
  9784 @released */
       
  9785 		{
       
  9786 	public:
       
  9787 		IMPORT_C TMobilePhoneBookInfoV2();
       
  9788 	public:
       
  9789 	/** The type of the phonebook which relates to its location (ICC/UICC/CDMA).
       
  9790 	
       
  9791 	Mode: Common */
       
  9792 		TName iPhBkMode; 
       
  9793 		};
       
  9794 
       
  9795 /** Packages the TMobilePhoneBookInfoV2 into a TMobilePhoneBookInfoV1Pckg. */
       
  9796 	typedef TPckg<TMobilePhoneBookInfoV2> TMobilePhoneBookInfoV2Pckg;
       
  9797 
       
  9798 
       
  9799 	/** Defines information about a Phonebook store for version v5.0 of the API.
       
  9800 
       
  9801 	Extends the v2.0 API to allow additional information about the phonebook
       
  9802 	(Maximum number of second name fields, Maximum number of additional number fields,
       
  9803 	Maximum number of additional group name fields, Maximum number of email address fields)
       
  9804 	to be retieved where available. 
       
  9805 
       
  9806 	@publishedPartner
       
  9807 	@released*/
       
  9808 	class TMobilePhoneBookInfoV5 : public TMobilePhoneBookInfoV2
       
  9809 		{
       
  9810 	public:
       
  9811 		IMPORT_C TMobilePhoneBookInfoV5();
       
  9812 	public:
       
  9813 		/** The maximum number of Second Name fields that can be used. */
       
  9814 		TInt iMaxSecondNames;
       
  9815 		
       
  9816 		/** The maximum text length for Second Name fields. */
       
  9817 		TInt iMaxTextLengthSecondName;
       
  9818 
       
  9819 		/** The maximum number of additional number fields that can be used. */
       
  9820 		TInt iMaxAdditionalNumbers;
       
  9821 		
       
  9822 		/** The maximum number length for Additional Number fields. */
       
  9823 		TInt iMaxNumLengthAdditionalNumber;
       
  9824 		
       
  9825 		/** The maximum text length for Additonal Number fields. */
       
  9826 		TInt iMaxTextLengthAdditionalNumber;
       
  9827 
       
  9828 		/** The maximum number of additional Group Name fields that can be used. */
       
  9829 		TInt iMaxGroupNames;
       
  9830 		
       
  9831 		/** The maximum text length for Group Name fields. */
       
  9832 		TInt iMaxTextLengthGroupName;
       
  9833 		
       
  9834 		/** The maximum number of additional E-Mail address fields that can be used. */
       
  9835 		TInt iMaxEmailAddr;
       
  9836 		
       
  9837 		/** The maximum text length for Email Address fields. */
       
  9838 		TInt iMaxTextLengthEmailAddr;
       
  9839 		};
       
  9840 
       
  9841 	/** Packages the TMobilePhoneBookInfoV5 into a TMobilePhoneBookInfoV5Pckg. */
       
  9842 	typedef TPckg<TMobilePhoneBookInfoV5> TMobilePhoneBookInfoV5Pckg;
       
  9843 
       
  9844 
       
  9845 	// check these fields - not sure all are correct
       
  9846 /** The following Tag IDs are used to encode/decode the phonebook entries to/from 
       
  9847 the TLV format. Each field will have a unique identifier and will be followed 
       
  9848 by the field length. The type of data associated with the field is also specified 
       
  9849 below. 
       
  9850 
       
  9851 Some fields do not have any data and just serve as separators within the buffer 
       
  9852 - in these cases the Data Type column is set to not applicable (n/a).
       
  9853 
       
  9854 Modes: Common */
       
  9855 	enum TMobilePBFieldTags
       
  9856 		{
       
  9857 	/** Tag id for the beginning of a new phonebook entry.
       
  9858 	
       
  9859 	Data type: n/a.
       
  9860 	
       
  9861 	Modes: Common */
       
  9862 		ETagPBNewEntry		=0xA0,
       
  9863 	/** Tag id for the Unique ID field.
       
  9864 	
       
  9865 	Data type: TUint16
       
  9866 
       
  9867 	Modes: WCDMA */
       
  9868 		ETagPBUniqueId		=0xB0,
       
  9869 	/** Tag id for the Index within the ADN record.
       
  9870 	
       
  9871 	Data type: TUint16
       
  9872 
       
  9873 	Modes: Common */
       
  9874 		ETagPBAdnIndex		=0xC0,
       
  9875 	/** Tag id for a Text field within the ADN/ANR record.
       
  9876 	
       
  9877 	Data type: TDes16
       
  9878 	
       
  9879 	Modes: Common */
       
  9880 		ETagPBText			=0xC1,
       
  9881 	/** Tag id for a Number field within the ADN/ANR record.
       
  9882 	
       
  9883 	Data type: TDes16
       
  9884 	
       
  9885 	Modes: Common */
       
  9886 		ETagPBNumber		=0xC2,
       
  9887 	/** Tag id for a TON/NPI byte within the ADN/ANR record.
       
  9888 	
       
  9889 	Data type: TUint8
       
  9890 	
       
  9891 	Modes: Common */
       
  9892 		ETagPBTonNpi		=0xC3,
       
  9893 	/** Tag id for a Bearer Capability IE associated to the ADN/ANR record.
       
  9894 	
       
  9895 	Data type: TDes8
       
  9896 	
       
  9897 	Modes: GSM/WCDMA */
       
  9898 		ETagPBBearerCap		=0xC4,
       
  9899 	/** Tag id for the beginning of an Additional Number entry within the phonebook 
       
  9900 	entry.
       
  9901 	
       
  9902 	Data type: n/a
       
  9903 	
       
  9904 	Modes: WCDMA */
       
  9905 		ETagPBAnrStart		=0xC5,
       
  9906 	/** Tag id for the Second Name associated to the ADN record.
       
  9907 	
       
  9908 	Data type: TDes16
       
  9909 	
       
  9910 	Modes: WCDMA */
       
  9911 		ETagPBSecondName	=0xC6,
       
  9912 	/** Tag id for a Group Name associated to the ADN record.
       
  9913 	
       
  9914 	Data type:TDes16
       
  9915 	
       
  9916 	Modes: WCDMA */
       
  9917 		ETagPBGroupName		=0xC7,
       
  9918 	/** Tag id for an Email Address associated to the ADN record.
       
  9919 	
       
  9920 	Data type: TDes16
       
  9921 	
       
  9922 	Modes: WCDMA */
       
  9923 		ETagPBEmailAddress	=0xC8,
       
  9924 	/** Tag id for the Entry Control byte associated to the ADN record.
       
  9925 	
       
  9926 	Data type: TUint8
       
  9927 	
       
  9928 	Modes: WCDMA */
       
  9929 		ETagPBEntryControl	=0xC9,
       
  9930 	/** Tag id for the Hidden Information byte associated to the ADN record.
       
  9931 	
       
  9932 	Data type: TUint8
       
  9933 	
       
  9934 	Modes: WCDMA */
       
  9935 		ETagPBHiddenInfo	=0xCA,
       
  9936 		ETagPBDateTime		=0xCB,
       
  9937 		ETagPBDuration		=0xCC,
       
  9938 		ETagPBCallStatus	=0xCD,
       
  9939 		ETagPBEntryStatus	=0xCE
       
  9940 		};
       
  9941 
       
  9942 
       
  9943 	// API/TSY internal type
       
  9944 	struct TPBIndexAndNumEntries
       
  9945 /** A structure to hold the phone book index and number of entries. */
       
  9946 		{
       
  9947 	/** Index for the phone book. */
       
  9948 		TInt iIndex;
       
  9949 		TInt iNumSlots;
       
  9950 		};
       
  9951 
       
  9952 	IMPORT_C void Read(TRequestStatus& aReqStatus, TInt aIndex, TInt aNumSlots, TDes8& aPBData) const;
       
  9953 	IMPORT_C void Write(TRequestStatus& aReqStatus, const TDesC8& aPBData, TInt& aIndex) const;
       
  9954 
       
  9955 protected:
       
  9956 	IMPORT_C void ConstructL();
       
  9957 private:
       
  9958 	RMobilePhoneBookStore(const RMobilePhoneBookStore&);
       
  9959 	};
       
  9960 
       
  9961 /*********************************************************/
       
  9962 //
       
  9963 // RMobileConferenceCall
       
  9964 //
       
  9965 /*********************************************************/
       
  9966 
       
  9967 
       
  9968 
       
  9969 class CMobileConferenceCallPtrHolder;
       
  9970 
       
  9971 class RMobileConferenceCall : public RTelSubSessionBase
       
  9972 /** Provides access to conference call functionality provided by TSY.
       
  9973 
       
  9974 Conference calls allow users to conduct multi-connection voice calls, for example
       
  9975 simultaneous communication to more than one remote party. All participants 
       
  9976 within a conference call can hear and speak to each other. There is a controlling 
       
  9977 party that initiates and manages the conference.
       
  9978 
       
  9979 Conference calling is possible in both GSM and CDMA mode and the actions to 
       
  9980 initiate a 3-way conference are the same in either mode. However, GSM conference 
       
  9981 calls offer more functionality and the number of remote parties is limited 
       
  9982 in CDMA mode to 2 and in GSM mode to 5.
       
  9983 
       
  9984 The Multimode ETel API uses a new sub-session called RMobileConferenceCall 
       
  9985 as a model for a conference call. The conference call object will be an aggregation 
       
  9986 of all the RMobileCall objects that are part of the conference call. It will 
       
  9987 be possible for clients to manipulate both the conference call as a whole 
       
  9988 and individual calls within a conference call depending on the dynamic capabilities 
       
  9989 of each of these objects.
       
  9990 
       
  9991 Please note that RMobileConferenceCall is replacing the RCallGroup abstraction 
       
  9992 used in the GSM API. This was an optimisation decision. The call group abstraction 
       
  9993 placed a large burden on a TSY to create call groups, monitor the calls in 
       
  9994 each group and trigger notification when calls were added or moved, probably 
       
  9995 even when a conference call was not ongoing. Clients will probably only open 
       
  9996 a RMobileConferenceCall when the user has decided to make a conference call 
       
  9997 and by having just one object replace three call groups it will also reduce 
       
  9998 the number of notifications that would trigger in response to conference call 
       
  9999 events. With a view to the future, without call groups there are also no longer 
       
 10000 any restrictions to the allowed types of active calls (simultaneous, separate 
       
 10001 voice and data calls are possible).
       
 10002 
       
 10003 The methods within this section must be supported if the TSY supports MobileConferenceCall 
       
 10004 functional unit. 
       
 10005 
       
 10006 */
       
 10007 	{
       
 10008 public:
       
 10009 	IMPORT_C RMobileConferenceCall();
       
 10010 	IMPORT_C TInt Open(RMobilePhone& aPhone);
       
 10011 	IMPORT_C void Close();
       
 10012 
       
 10013 /** Conference call capabilities. */
       
 10014 	enum TMobileConferenceCallCaps
       
 10015 		{
       
 10016 	/** Indicates that a conference call can be created. */
       
 10017 		KCapsCreate = 0x00000001,
       
 10018 	/** Indicates that a conference call can be terminated. */
       
 10019 		KCapsHangUp = 0x00000002,
       
 10020 	/** Indicates that a conference call exists and can be swapped to the opposite 
       
 10021 	state (active or hold). */
       
 10022 		KCapsSwap = 0x00000004
       
 10023 		};
       
 10024 
       
 10025 	IMPORT_C TInt GetCaps(TUint32& aCaps) const;
       
 10026 	IMPORT_C void NotifyCapsChange(TRequestStatus& aReqStatus, TUint32& aCaps) const;
       
 10027 
       
 10028 	IMPORT_C void CreateConference(TRequestStatus& aReqStatus) const;
       
 10029 	IMPORT_C void AddCall(TRequestStatus& aReqStatus, const TName& aCallName) const;
       
 10030 	IMPORT_C void Swap(TRequestStatus& aReqStatus) const;
       
 10031 	IMPORT_C void HangUp(TRequestStatus& aReqStatus) const;
       
 10032 	IMPORT_C TInt EnumerateCalls(TInt& aCount) const;
       
 10033 	IMPORT_C TInt GetMobileCallInfo(TInt aIndex, TDes8& aCallInfo) const;
       
 10034 
       
 10035 /** Conference call status. */
       
 10036 	enum TMobileConferenceStatus
       
 10037 		{
       
 10038 	/** The conference call is in the idle state. */
       
 10039 		EConferenceIdle,
       
 10040 	/** The conference call is in the active, connected state. */
       
 10041 		EConferenceActive,
       
 10042 	/** The conference call is in the held, connected state. */
       
 10043 		EConferenceHold
       
 10044 		};
       
 10045 	
       
 10046 	IMPORT_C TInt GetConferenceStatus(TMobileConferenceStatus& aStatus) const;
       
 10047 	IMPORT_C void NotifyConferenceStatusChange(TRequestStatus& aReqStatus, TMobileConferenceStatus& aStatus) const;
       
 10048 
       
 10049 /** Conference events. */
       
 10050 	enum TMobileConferenceEvent
       
 10051 		{
       
 10052 	/** A call has been added to the conference. */
       
 10053 		EConferenceCallAdded,		// Name of the call added returned in aCallName
       
 10054 	/** A call has been removed from the conference. */
       
 10055 		EConferenceCallRemoved,		// Name of the call terminated returned in aCallName
       
 10056 	/** Names of the two calls used to build the conference call returned in aCallName. */
       
 10057 		EConferenceBuilt,		// Names of the two calls used to build the conference call returned in aCallName
       
 10058 	/** No name provided */
       
 10059 		EConferenceTerminated,	// No name provided
       
 10060 	/** No name provided. */
       
 10061 		EConferenceSwapped,		// No name provided
       
 10062 	/** Name of the call being seperated. */
       
 10063 		EConferenceSplit		// Name of the call being seperated
       
 10064 		};
       
 10065 
       
 10066 	IMPORT_C void NotifyConferenceEvent(TRequestStatus& aReqStatus, TMobileConferenceEvent& aEvent, TName& aCallName) const;
       
 10067 
       
 10068 private:
       
 10069 	CMobileConferenceCallPtrHolder* iMmPtrHolder;
       
 10070 	RMobileConferenceCall(const RMobileConferenceCall&);
       
 10071 protected:
       
 10072 	IMPORT_C void ConstructL();
       
 10073 	IMPORT_C void Destruct();
       
 10074 	};
       
 10075 
       
 10076 
       
 10077 /////////////////////////////////////////////////////////////////////////////////////
       
 10078 //
       
 10079 // EAP-SIM Authentication functional unit
       
 10080 //
       
 10081 /////////////////////////////////////////////////////////////////////////////////////
       
 10082 
       
 10083 class CMobileSmartCardEapPtrHolder;
       
 10084 
       
 10085 /**
       
 10086 This sub-session opens under RMobilePhone.
       
 10087 
       
 10088 RMobileSmartCardEap provides the client with access to a Smart Card
       
 10089 Application's EAP-capability (if one exists).
       
 10090 
       
 10091 (See ETSI TS 102.310 v6.2.0 and RFC3748)
       
 10092 
       
 10093 To submit authentication challenges or requests, a client must use
       
 10094 CAsyncSmartCardEapAuthentication in conjunction with this sub-session.
       
 10095 
       
 10096 @see CAsyncSmartCardEapAuthentication
       
 10097 @publishedPartner
       
 10098 @prototype
       
 10099 */
       
 10100 class RMobileSmartCardEap : public RTelSubSessionBase
       
 10101 	{
       
 10102 	friend class CAsyncSmartCardEapAuthentication;
       
 10103 
       
 10104 public:
       
 10105 	/**
       
 10106 	Class encapsulates EAP request packet data for authentication.
       
 10107 
       
 10108 	@see CAsyncSmartCardEapAuthentication
       
 10109 
       
 10110 	@publishedPartner
       
 10111 	@prototype
       
 10112 	*/
       
 10113 	class CEapAuthenticateRequestDataV6 : public CBase
       
 10114 		{
       
 10115 	public:
       
 10116 		IMPORT_C static CEapAuthenticateRequestDataV6* NewL();
       
 10117 		IMPORT_C virtual void ExternalizeL(TPtr8& aBuffer);
       
 10118 		IMPORT_C virtual void InternalizeL(const TDesC8& aBuffer);
       
 10119 		IMPORT_C TUint VersionId() const;
       
 10120 		IMPORT_C TPtr8 GetEapReqPacket() const;
       
 10121 		IMPORT_C void SetEapReqPacketL(const TDesC8& aData);
       
 10122 		IMPORT_C ~CEapAuthenticateRequestDataV6();
       
 10123 
       
 10124 	private:
       
 10125 		CEapAuthenticateRequestDataV6();
       
 10126 		void ConstructL();
       
 10127 
       
 10128 	protected:
       
 10129 		/**
       
 10130 		ETelMM's supported version.
       
 10131 		*/
       
 10132 		TUint iVersionId;
       
 10133 
       
 10134 	public:
       
 10135 		/**
       
 10136 		EAP-request packet in a flat buffer.
       
 10137 		*/
       
 10138 		CBufFlat* iEapReqPacket;
       
 10139 		};
       
 10140 
       
 10141 	IMPORT_C RMobileSmartCardEap();
       
 10142 
       
 10143 	/**
       
 10144 	EAP types are represented by one byte for standard EAP methods, and
       
 10145 	eight bytes for extended methods.  Each byte specified in the
       
 10146 	TEapType buffer should represent one semi-octet.  Therefore, a
       
 10147 	maximum of 16-chars are needed for representing any possible EAP
       
 10148 	type.  (See section 5.2 of ETSI TS 102.310 v6.2.0.)
       
 10149 
       
 10150 	@see RMobileSmartCardEap::TEapType
       
 10151 
       
 10152 	@publishedPartner
       
 10153 	@prototype
       
 10154 	*/
       
 10155 	enum { KEapTypeSize = 16 };
       
 10156 
       
 10157 	/**
       
 10158 	A typedef'd buffer to hold the EAP type for the subsequent
       
 10159 	authentication that will be carried out on the Smart Card
       
 10160 	Application.
       
 10161 
       
 10162 	The value specified must correspond to the pre-allocated type
       
 10163 	identifiers for various EAPs (see
       
 10164 	http://www.iana.org/assignments/eap-numbers).  Some known values
       
 10165 	are given in etelmm.h.
       
 10166 
       
 10167 	The type must be specified in hexadecimal format, where each
       
 10168 	character represents one semi-octet.
       
 10169 
       
 10170 	@see KETelSmartCardEapTypeMD5
       
 10171 	@see KETelSmartCardEapTypeTLS
       
 10172 	@see KETelSmartCardEapTypeSIM
       
 10173 	@see KETelSmartCardEapTypeAKA
       
 10174 	@see KETelSmartCardEapTypeTTLS
       
 10175 	@see RMobileSmartCardEap::Open()
       
 10176 
       
 10177 	@publishedPartner
       
 10178 	@prototype
       
 10179 	*/
       
 10180 	typedef TBuf8<KEapTypeSize> TEapType;
       
 10181 
       
 10182 	IMPORT_C TInt Open(RMobilePhone& aPhone, const RMobilePhone::TAID& aAID, const TEapType& aEapType);
       
 10183 	IMPORT_C void InitialiseEapMethod(TRequestStatus& aReqStatus);
       
 10184 	IMPORT_C void Close();
       
 10185 
       
 10186 	/**
       
 10187 	Authentication status of the EAP supporting UICC application (See
       
 10188 	section 7.2 of ETSI TS 102.310 v6.2.0).  One of these values is
       
 10189 	returned on completion of an
       
 10190 	RMobileSmartCardEap::GetAuthenticationStatus() request.
       
 10191 
       
 10192 	@see RMobileSmartCardEap::GetAuthenticationStatus()
       
 10193 
       
 10194 	@publishedPartner
       
 10195 	@prototype
       
 10196 	*/
       
 10197 	enum TEapAuthStatus
       
 10198 		{
       
 10199 		/**
       
 10200 		No authentication started
       
 10201 		*/
       
 10202 		ENoAuthStarted,    // 0
       
 10203 		/**
       
 10204 		Authenticating
       
 10205 		*/
       
 10206 		EAuthenticating,   // 1
       
 10207 		/**
       
 10208 		Authentication complete
       
 10209 		*/
       
 10210 		EAuthenticated,    // 2
       
 10211 		/**
       
 10212 		Held (authentication failure)
       
 10213 		*/
       
 10214 		EHeld              // 3
       
 10215 		};
       
 10216 
       
 10217 	IMPORT_C void GetAuthenticationStatus(TRequestStatus& aReqStatus, TEapAuthStatus& aAuthStatus);
       
 10218 
       
 10219 	/**
       
 10220 	TEapUserIdType should be used to request an identity from EF_PUId
       
 10221 	or EF_Ps, when making an RMobileSmartCardEap::GetUserIdentity()
       
 10222 	request.
       
 10223 	(See sections 7.3 and 7.4, respectively, of ETSI TS	102.310 v6.2.0,
       
 10224 	and RFC2486 - The Network Access Identifier).
       
 10225 
       
 10226 	@see RMobileSmartCardEap::GetUserIdentity()
       
 10227 	@see RMobileSmartCardEap::TEapUserIdentityV6
       
 10228 
       
 10229 	@publishedPartner
       
 10230 	@prototype
       
 10231 	*/
       
 10232 	enum TEapUserIdType
       
 10233 		{
       
 10234 		/** Identity is permanent type */
       
 10235 		EPermanentIdentity,   // 0
       
 10236 		/** Identity is pseudonym type */
       
 10237 		EPseudonymIdentity    // 1
       
 10238 		};
       
 10239 
       
 10240 	/**
       
 10241 	Maximum permitted size of identity data.
       
 10242 	*/
       
 10243 	enum { KEapIdentityMaxSize = 255 };
       
 10244 
       
 10245 	/**
       
 10246 	EAP User Identity data.  Ids are stored in EF_PUId or EF_Ps
       
 10247 	(specified in sections 7.3 and 7.4, respectively, of ETSI TS
       
 10248 	102.310 v6.2.0).
       
 10249 
       
 10250 	@see RMobileSmartCardEap::GetUserIdentity()
       
 10251 
       
 10252 	@publishedPartner
       
 10253 	@prototype
       
 10254 	*/
       
 10255 	class TEapUserIdentityV6 : public RMobilePhone::TMultimodeType
       
 10256 		{
       
 10257 	public:
       
 10258 		IMPORT_C TEapUserIdentityV6();
       
 10259 	public:
       
 10260 		/**
       
 10261 		EAP-IDENTITY Data.
       
 10262 		*/
       
 10263 		TBuf8<KEapIdentityMaxSize> iEapId;
       
 10264 		};
       
 10265 
       
 10266 	/**
       
 10267 	A typedef'd packaged TEapUserIdentityV6 for passing through a
       
 10268 	generic API method.
       
 10269 
       
 10270 	@publishedPartner
       
 10271 	@prototype
       
 10272 	*/
       
 10273 	typedef TPckg<TEapUserIdentityV6> TEapUserIdentityV6Pckg;
       
 10274 
       
 10275 	IMPORT_C void GetUserIdentity(TRequestStatus& aReqStatus,
       
 10276 	                              TEapUserIdType aRequestedIdType,
       
 10277 	                              TDes8& aUserId);
       
 10278 
       
 10279 	/**
       
 10280 	TEapKeyV6 should be used to request one of (currently) two keys
       
 10281 	available on the EF_EAPKEYS of the UICC application (see section
       
 10282 	7.1 of ETSI TS 102.310 v6.2.0).  This enumeration type should be
       
 10283 	used in RMobileSmartCardEap::GetEapKey() to specify the key to be
       
 10284 	retrieved.
       
 10285 
       
 10286 	@see RMobileSmartCardEap::TEapKeyV6
       
 10287 	@see RMobileSmartCardEap::GetEapKey()
       
 10288 
       
 10289 	@publishedPartner
       
 10290 	@prototype
       
 10291 	*/
       
 10292 	enum TEapKeyTag
       
 10293 		{
       
 10294 		/**
       
 10295 		Used to request Master Session Key.
       
 10296 		*/
       
 10297 		EEapKeyMSK =  0x80,
       
 10298 		/**
       
 10299 		Used to request Extended Master Session Key.
       
 10300 		*/
       
 10301 		EEapKeyEMSK = 0x81
       
 10302 		};
       
 10303 
       
 10304 	/**
       
 10305 	Maximum size of an EAP Key stored on the DF_EAP's EF_EAPKEYS.
       
 10306 	255 as each key has a length that can be specified by exactly one
       
 10307 	byte (see section 7.1 of ETSI TS 102.310 v6.2.0).
       
 10308 
       
 10309 	@publishedPartner
       
 10310 	@prototype
       
 10311 	*/
       
 10312 	enum { KEapKeyMaxSize = 255 };
       
 10313 
       
 10314 	/** 
       
 10315 	EAP authentication key data.
       
 10316 
       
 10317 	@see RMobileSmartCardEap::GetEapKey()
       
 10318 
       
 10319 	@publishedPartner
       
 10320 	@prototype
       
 10321 	*/
       
 10322 	class TEapKeyV6 : public RMobilePhone::TMultimodeType
       
 10323 		{
       
 10324 	public:
       
 10325 		IMPORT_C TEapKeyV6();
       
 10326 	public:
       
 10327 		/**
       
 10328 		EAP-KEY Data.
       
 10329 		*/
       
 10330 		TBuf8<KEapKeyMaxSize> iEapKey;
       
 10331 		};
       
 10332 
       
 10333 	/**
       
 10334 	A typedef'd packaged TEapKeyV6 for passing through a generic API
       
 10335 	method.
       
 10336 
       
 10337 	@publishedPartner
       
 10338 	@prototype
       
 10339 	*/
       
 10340 	typedef TPckg<TEapKeyV6> TEapKeyV6Pckg;
       
 10341 
       
 10342 	IMPORT_C void GetEapKey(TRequestStatus& aReqStatus, const TEapKeyTag aRequestedKey, TDes8& aKey);
       
 10343 
       
 10344 	/**
       
 10345 	Status of the DF_EAP this subsession refers to.  The status is
       
 10346 	basically an indication of whether the DF is in use by another sub-
       
 10347 	session client instance.
       
 10348 
       
 10349 	NotifyEapMethodAccessStatusChange() will give a notification when
       
 10350 	the status changes.
       
 10351 
       
 10352 	Status will change when the first client calls
       
 10353 	InitialiseEapMethod() on this sub-session.  When the same client
       
 10354 	calls ReleaseEapMethod() (or Close()), the status will change
       
 10355 	again.  This allows mutually exclusive access to the DF_EAP.  All
       
 10356 	other RMobileSmartCardEap hanles will get an error if they attempt
       
 10357 	to make requests that access the same DF_EAP.
       
 10358 
       
 10359 	@see RMobileSmartCardEap::NotifyEapMethodAccessStatusChange()
       
 10360 	@see RMobileSmartCardEap::ReleaseEapMethod()
       
 10361 	@see RMobileSmartCardEap::InitialiseEapMethod()
       
 10362 
       
 10363 	@publishedPartner
       
 10364 	@prototype
       
 10365 	*/
       
 10366 	enum TEapMethodAccessStatus
       
 10367 		{
       
 10368 		/**
       
 10369 		AID/DF_EAP has been reset, and the DF_EAP has not been
       
 10370 		initialised by any other instance of RMobileSmartCardEap.
       
 10371 		*/
       
 10372 		EEapMethodAvailable,
       
 10373 		/**
       
 10374 		Another instance of RMobileSmartCardEap has initialised first
       
 10375 		and taken ownership of the DF_EAP.  The DF_EAP is currently
       
 10376 		active and EAP requests can be made.
       
 10377 		*/
       
 10378 		EEapMethodInUseApplicationActive,
       
 10379 		/**
       
 10380 		This instance of RMobileSmartCardEap still owns the lock on the
       
 10381 		DF_EAP, but the application has been deactivated elsewhere.
       
 10382 		The client should re-initialise before making further EAP
       
 10383 		requests.
       
 10384 
       
 10385 		@see RMobileSmartCardEap::InitialiseEapMethod()
       
 10386 		*/
       
 10387 		EEapMethodInUseApplicationInactive,
       
 10388 		/**
       
 10389 		Lock on the DF_EAP has been released, but another DF_EAP method
       
 10390 		is in use under the same AID, thus, cannot reset/initialise
       
 10391 		this subsessions EAP method.  Client can only post a
       
 10392 		notification and wait till status changes to
       
 10393 		EEapMethodAvailable.
       
 10394 
       
 10395 		@see RMobileSmartCardEap::NotifyEapMethodAccessStatusChange()
       
 10396 		*/
       
 10397 		EEapMethodUnableToInitialise
       
 10398 		};
       
 10399 
       
 10400 	IMPORT_C TInt ReleaseEapMethod();
       
 10401 	IMPORT_C TInt GetEapMethodAccessStatus(TEapMethodAccessStatus& aEapMethodStatus);
       
 10402 	IMPORT_C void NotifyEapMethodAccessStatusChange(TRequestStatus& aReqStatus, TEapMethodAccessStatus& aEapMethodStatus);
       
 10403 	IMPORT_C TBool IsEapMethodOwner() const;
       
 10404 
       
 10405 protected:
       
 10406 	IMPORT_C void ConstructL();
       
 10407 	IMPORT_C void Destruct();
       
 10408 
       
 10409 private:
       
 10410 	RMobileSmartCardEap(const RMobileSmartCardEap&);
       
 10411 
       
 10412 	TChar SeptChar(TInt aDigit);
       
 10413 	void ConvertBinToText(const TDesC8& aBinData, TDes& aText);
       
 10414 
       
 10415 private:
       
 10416 	/**
       
 10417 	Pointer Holder for the RMobileSmartCardEap sub-session requests.
       
 10418 	*/
       
 10419 	CMobileSmartCardEapPtrHolder* iMmPtrHolder;
       
 10420 	/**
       
 10421 	True if this object is the first to request	InitialiseEapMethod()
       
 10422 	on its <AID,EAPType> when the status is EEapMethodAvailable.
       
 10423 	I.e. True only for the instance of RMobileSmartCardEap that
       
 10424 	successfully passes the Wait() on iSemaphore.
       
 10425 	*/
       
 10426 	TBool iOwnsEapMethodLock;
       
 10427 	/**
       
 10428 	Semaphore is actually owned by TSY, and used by all instances of
       
 10429 	RMobileSmartCardEap	to stop multiple access to the same EAP method
       
 10430 	on any one application.
       
 10431 	*/
       
 10432 	RSemaphore iSemaphore;
       
 10433 
       
 10434 	};	// RMobileSmartCardEap
       
 10435 
       
 10436 /////////////////////////////////////////////////////////////////////////////////////
       
 10437 //
       
 10438 // LCS-MO-LR AND LCS-MT-LR
       
 10439 //
       
 10440 /////////////////////////////////////////////////////////////////////////////////////
       
 10441 class CMobileLocationServicesPtrHolder;
       
 10442 
       
 10443 /**
       
 10444 This sub-session opens under RMobilePhone.
       
 10445 
       
 10446 A new RMobileLocationServices class is used to add the ETelMM Support for Mobile Terminating Location Request,
       
 10447 Mobile Originating Location Requests, A-Gps assistance data for the LBS Framework.
       
 10448 
       
 10449 RMobileLocationServices is derived from RTelSubSessionBase.RMobileLocationServices lists the 
       
 10450 APIs,which provided the support for Mtlr, Molr, A-Gps assistance data requests.
       
 10451 */
       
 10452 class RMobileLocationServices : public RTelSubSessionBase
       
 10453 	{
       
 10454 public:
       
 10455 	
       
 10456 	IMPORT_C RMobileLocationServices();
       
 10457     IMPORT_C TInt Open(RMobilePhone& aPhone);
       
 10458     IMPORT_C void Close();
       
 10459  	/** 
       
 10460  	Maximum length of the array used for TLcsRequestorIdString.
       
 10461  	*/
       
 10462 	enum { KLcsMaxRequestorIdStringSize = 256 };
       
 10463 	/** 
       
 10464 	Maximum length of the array used for TLcsClientBufferName.
       
 10465  	*/
       
 10466 	enum { KLcsMaxClientNameBufferSize = 256 };
       
 10467 	/** 
       
 10468 	Maximum length of the array used for TLcsClientExternalID.
       
 10469 	*/
       
 10470 	enum { KLcsMaxClientExternalIdSize = 64 };
       
 10471 	/** 
       
 10472 	Maximum length of the array used for TLcsLocationEstimate.
       
 10473 	*/
       
 10474 	enum { KLcsMaxLocationEstimateSize = 64 };
       
 10475 	/** 
       
 10476 	Maximum length of the array used for TLcsVelocityEstimate.
       
 10477 	*/
       
 10478 	enum { KLcsMaxVelocityEstimateSize = 64 };
       
 10479 	/** 
       
 10480 	Maximum length of the array used for TLcsGpsAssistanceData.
       
 10481 	*/
       
 10482 	enum { KLcsMaxGpsAssistanceDataSize = 64 };
       
 10483 	/** 
       
 10484 	A typedef'd buffer which holds the External ClientName Buffer.
       
 10485 	@see KLcsMaxClientNameBufferSize
       
 10486 	*/
       
 10487 	typedef TBuf8<KLcsMaxClientNameBufferSize> TLcsClientNameBuffer;
       
 10488 	/** 
       
 10489 	A typedef'd buffer which holds the RequestorId String.
       
 10490 	@see KLcsMaxRequestorIdStringSize
       
 10491 	*/
       
 10492 	typedef TBuf8<KLcsMaxRequestorIdStringSize> TLcsRequestorIdString;
       
 10493 	/**
       
 10494 	A typedef'd buffer which holds the Gps Assistance Data.
       
 10495 	@see KLcsMaxGpsAssistanceDataSize
       
 10496 	*/
       
 10497 	typedef TBuf8<KLcsMaxGpsAssistanceDataSize> TGpsAssistanceData;
       
 10498 	/**
       
 10499 	A typedef'd buffer which holds the External ClientId.
       
 10500 	@see KLcsMaxClientExternalIdSize
       
 10501 	*/
       
 10502 	typedef TBuf8<KLcsMaxClientExternalIdSize> TLcsClientExternalID;
       
 10503 	/**
       
 10504 	A typedef'd TUint8 which holds the Data Coding Scheme information.
       
 10505 	*/
       
 10506 	typedef TUint8 TLcsDataCodingScheme;
       
 10507 	/**
       
 10508 	A typedef'd buffer which holds the Location Estimate.
       
 10509 	@see KLcsMaxLocationEstimateSize
       
 10510  	*/
       
 10511 	typedef TBuf8<KLcsMaxLocationEstimateSize> TLcsLocationEstimate;
       
 10512 	/**
       
 10513 	A typedef'd buffer which holds the Velocity Estimate.
       
 10514 	@see KLcsMaxVelocityEstimateSize
       
 10515 	*/
       
 10516 	typedef TBuf8<KLcsMaxVelocityEstimateSize> TLcsVelocityEstimate;
       
 10517 	/**
       
 10518 	A typedef'd buffer which holds the GpsAssistanceData type.
       
 10519 	@see KLcsMaxGpsAssistanceDataSize
       
 10520 	*/
       
 10521 	typedef TBuf8<KLcsMaxGpsAssistanceDataSize> TGpsAssistanceData;
       
 10522 	typedef TUint8 TTransactionIdentifier;
       
 10523 	typedef TUint8 TGPSI;
       
 10524  	 /**
       
 10525      Note:Refer to 3GPP TS 23.271(Functional stage 2 description of Location Services (LCS)),
       
 10526      3GPP TS 24.030(Location Services (LCS); Supplementary service operations - Stage 3) and
       
 10527      3GPP TS 24.080(Mobile radio interface layer 3 supplementary services specification; Formats and coding)
       
 10528      for further details of MTLR and MOLR member data.
       
 10529      */
       
 10530  /*********************************************************************/ 
       
 10531  //                  MTLR                                             //
       
 10532  /*********************************************************************/   
       
 10533     /**
       
 10534     TNotificationType lists the various types of Notification
       
 10535     that can be expected from any MTLR-Location Notification coming from the Network,
       
 10536     These types depend on the Subscription Profile of the UE. 
       
 10537     
       
 10538     One of the TNotificationType is expected to be retrieved from the Network,
       
 10539     when a UE places a RMobileLocationServices::NotifyMtlr() request on the TSY.
       
 10540     @internalAll
       
 10541     */
       
 10542     enum TNotificationType
       
 10543 		{
       
 10544 		/**
       
 10545 		Notification Type Unknown
       
 10546 		*/
       
 10547 		ENotificationTypeUnknown,
       
 10548 		/**
       
 10549 		The Location Request is accepted by default
       
 10550 		*/
       
 10551 		ENotifyLocationAllowed,
       
 10552 		/**
       
 10553         This enum is used to indicate to the client, that the user should be notified of the incoming MTLR request, 
       
 10554         and that the user is expected to respond by granting/denying the request. By defualt, if the user 
       
 10555         does not provide a response, the request is granted
       
 10556 		*/
       
 10557 		ENotifyAndVerify_LocationAllowedIfNoResponse,
       
 10558 		/**
       
 10559         This enum is used to indicate to the client, that the user should be notified of the incoming MTLR request, 
       
 10560         and that the user is expected to respond by granting/denying the request. By defualt, if the 
       
 10561         user does not provide a response, the request is denied.
       
 10562 		*/
       
 10563 		ENotifyAndVerify_LocationNotAllowedIfNoResponse,
       
 10564         /**
       
 10565         The network sends the information to the UE that the external client has privacy overide capability,
       
 10566         This indicator is received when an authenticated or emergency client had sent the request.
       
 10567 		*/     
       
 10568         ELocationPrivacyOverride,  
       
 10569         /**
       
 10570         This enum is used to notify the UE that an incoming MTLR request was denied by the network for any of various 
       
 10571         reasons.
       
 10572 		*/
       
 10573 		ELocationNotAllowed                                      
       
 10574         };
       
 10575 
       
 10576     
       
 10577     /**
       
 10578     TLocationEstimateType lists the various types of LocationEstimate
       
 10579     that can be expected from any MTLR-Location Notification request coming from the Network,
       
 10580     These types depend on the Subscription Profile of the UE.
       
 10581     
       
 10582     One of the TLocationEstimateType is expected to be retrieved from the Network,
       
 10583     when a UE places a RMobileLocationServices::NotifyMtlr() request on the TSY.
       
 10584     @internalAll
       
 10585     */
       
 10586     enum TLocationEstimateType
       
 10587 		{
       
 10588 		/**
       
 10589 		Location Estimate Type Unknown.
       
 10590 		*/
       
 10591 		ELocationEstimateTypeUnknown,
       
 10592 		/**
       
 10593 		The External Client has requested for the Current Location of
       
 10594 		the UE.
       
 10595 		*/
       
 10596 		ECurrentLocation,
       
 10597 		/**
       
 10598 		The External Client has requested for the Current Location of
       
 10599 		the UE.Incase,if the request is accepted,But still it fails to
       
 10600 		generate the Location report because of Measurement Control Failure.
       
 10601 		The Client receives the Last Known Location.
       
 10602 		*/
       
 10603 		ECurrentOrLastKnownLocation,
       
 10604 		/**
       
 10605 		The External Client has requested for the initial location of the UE. The current 
       
 10606 		location of the UE may or may not be the initial location.
       
 10607 		*/
       
 10608 		EInitialLocation
       
 10609 		};	
       
 10610     
       
 10611     /**
       
 10612     TLcsClientNameV1 holds the details of the name of the External client, 
       
 10613     who is making the request via Network.
       
 10614     TLcsClientNameV1 is used by RMobileLocationServices::NotifyMtlr() request.
       
 10615     @see TLcsDataCodingScheme
       
 10616     @see TLcsClientNameBuffer
       
 10617     @internalAll
       
 10618     */
       
 10619     class TLcsClientNameV1
       
 10620     	{
       
 10621     public:
       
 10622     	/**
       
 10623     	TLcsDataCodingScheme holds the Data Coding Scheme information which is used
       
 10624     	to extract the ExternalClient name.
       
 10625     	*/
       
 10626     	TLcsDataCodingScheme iLcsDataCodingScheme;
       
 10627     	/**
       
 10628     	TLcsClientNameBuffer holds the Client name 		
       
 10629     	*/
       
 10630     	TLcsClientNameBuffer       iLcsClientNameBuffer;	
       
 10631     	};
       
 10632     
       
 10633     /**
       
 10634     TLcsRequestorIDV1 holds the details of the RequestorId i.e the details of the 
       
 10635     Network,Which is carrying the request of External Client to UE
       
 10636     TLcsRequestorIDV1 is used by RMobileLocationServices::NotifyMtlr() request.
       
 10637     @see TLcsDataCodingScheme
       
 10638     @see TLcsRequestorIdString 
       
 10639     @internalAll
       
 10640     */
       
 10641     class TLcsRequestorIDV1
       
 10642     	{
       
 10643     public:
       
 10644         /**
       
 10645     	TLcsDataCodingScheme holds the Data Coding Scheme information which is used
       
 10646     	to extract the RequestorId String.
       
 10647     	*/
       
 10648     	TLcsDataCodingScheme        iLcsDataCodingScheme;
       
 10649     	/**
       
 10650     	TLcsRequestorIdString holds the RequestorId String 		
       
 10651     	*/
       
 10652     	TLcsRequestorIdString       iLcsRequestorIdString;	
       
 10653     	};
       
 10654     
       
 10655     /**
       
 10656     TLocationExternalInfoV1 holds the details of the External client and the Requestor
       
 10657     TLocationExternalInfoV1 is used by RMobileLocationServices::NotifyMtlr() request
       
 10658     @see TLcsClientExternalID
       
 10659     @see TLcsClientNameV1
       
 10660     @see TLcsRequestorIDV1
       
 10661     @internalAll
       
 10662     */
       
 10663     class TLocationExternalInfoV1
       
 10664 		{
       
 10665 	public:
       
 10666 		/**
       
 10667 		TLcsClientExternalID gives the id of the External client.
       
 10668 		*/
       
 10669 		TLcsClientExternalID     iLcsClientID;
       
 10670 		/**
       
 10671 		TLcsClientNameV1 holds the name of the External Client.
       
 10672 		*/
       
 10673 		TLcsClientNameV1           iLcsClientName;
       
 10674 		/**
       
 10675 		TLcsRequestorIDV1 gives the details of requestor id
       
 10676 		*/
       
 10677 		TLcsRequestorIDV1          iLcsRequestorID;
       
 10678 		};
       
 10679 	
       
 10680 	/**
       
 10681 	TNotifyMtlrV7 holds the details of the MTLR request made by the External client.
       
 10682 	TNotifyMtlrV7 is used by RMobileLocationServices::NotifyMtlr() request
       
 10683 	@see TNotificationType
       
 10684 	@see TLocationEstimateType
       
 10685 	@see TLocationExternalInfoV1
       
 10686 	@internalAll
       
 10687 	*/
       
 10688 	class TNotifyMtlrV7: public RMobilePhone::TMultimodeType 
       
 10689 		{
       
 10690 	public:
       
 10691 		IMPORT_C TNotifyMtlrV7();
       
 10692 	public:
       
 10693 		/**
       
 10694 		TNotificationType holds the type of notification request being made
       
 10695 		*/
       
 10696 		TNotificationType          iNotificationType;
       
 10697 		/**
       
 10698 		TLocationEstimateType holds the type of LocationEstimate is requested 
       
 10699 		*/
       
 10700 		TLocationEstimateType      iMtlrLocationEstimateType;
       
 10701 		/**
       
 10702 		TLocationExternalInfoV7  holds the details of the External client. 
       
 10703 		*/
       
 10704 		TLocationExternalInfoV1      iLocationInfo;
       
 10705         };
       
 10706 	
       
 10707    	/**
       
 10708 	A typedef'd packaged TNotifyMtlrV7 for passing through a
       
 10709 	generic API method.
       
 10710 
       
 10711 	@internalAll
       
 10712 	*/
       
 10713 	typedef TPckg<TNotifyMtlrV7> TNotifyMtlrV7Pckg;
       
 10714 	
       
 10715  //MTLR-RESPONSE
       
 10716  	/**
       
 10717  	TMtlrResponse is used by the OverLoaded RMobileLocationServices::SendMtlrResponse() API
       
 10718  	It holds the type of response being sent back for the MTLR request made.
       
 10719  	@internalAll
       
 10720  	*/
       
 10721 	
       
 10722 	enum TMtlrResponse
       
 10723 		{
       
 10724 		/**
       
 10725 		Mtlr Response Unknown.
       
 10726 		*/
       
 10727 		EMtlrResponseUnknown,
       
 10728 		/**
       
 10729 		The UE has denied the Location Request  of the External client.
       
 10730 		@see RMobileLocationServices::SendMtlrResponse()
       
 10731 		*/
       
 10732 		EPermissionDenied ,
       
 10733 		/**
       
 10734 		The UE has granted  the Location Request  of the External client.
       
 10735 		@see RMobileLocationServices::SendMtlrResponse()
       
 10736 		*/
       
 10737 		EPermissionGranted
       
 10738 		};
       
 10739 	
       
 10740 	/**
       
 10741  	TMtlrError is used by the Overloaded RMobileLocationServices::SendMtlrResponse() API
       
 10742  	It holds the type of Error response being sent back for the MTLR request made.
       
 10743  	@internalAll
       
 10744  	*/
       
 10745  	enum TMtlrError
       
 10746 		{
       
 10747 		/**
       
 10748 		Mtlr Error Unknown.
       
 10749 		*/
       
 10750 		EMtlrErrorUnknown,
       
 10751 		/**
       
 10752 		This response is sent back to the network when System has failed to 
       
 10753 		do the privacy check due to some Miscellaneous reasons
       
 10754 		*/
       
 10755 		ESystemFailure ,
       
 10756 		/**
       
 10757 		The response is sent when the privacy verification has failed because of Unexpected data 
       
 10758 		values retrieved from the Location Notification request generated by the Network.
       
 10759 		This generates an Error-Prone response from UE
       
 10760 		*/
       
 10761 		EUnexpectedDataValue	
       
 10762 		};
       
 10763 	
       
 10764 	/**
       
 10765  	TMtlrReject is used by the Overloaded RMobileLocationServices::SendMtlrResponse() API
       
 10766  	It holds the details of the Response being rejected due to one of the problems reported to the UE
       
 10767  	for the MTLR request being made.
       
 10768  	@internalAll
       
 10769  	*/
       
 10770  	enum TMtlrReject
       
 10771 		{
       
 10772 		/**
       
 10773 		Mtlr Reject Unknown.
       
 10774 		*/
       
 10775 		EMtlrRejectUnknown,
       
 10776 		/**
       
 10777 		This indication is given under a scenario where the UE wants to reject a request,
       
 10778 		It is done by invoking Duplicate ID's.
       
 10779 		*/
       
 10780 		EDuplicateInvokeID,
       
 10781 		/**
       
 10782 		This indication is given under a scenario where the UE wants to reject a request, 
       
 10783 		It is done by saying the operation is not recognized
       
 10784 		*/
       
 10785 		EUnrecognizedOperation,
       
 10786 		/**
       
 10787 		This invokes a problem indicating Resource Limitation.
       
 10788 		*/
       
 10789 		EResourceLimitation,
       
 10790 		/**
       
 10791 		This Invokes a problem initiating release.
       
 10792 		*/
       
 10793 		EInitiatingRelease,
       
 10794 		/**
       
 10795 		This invokes a problem indicating that  the ID linked with the Client information 
       
 10796 		is unrecognized
       
 10797 		*/
       
 10798 		EUnrecognizedLinkedID,
       
 10799 		/**
       
 10800 		This invokes a problem of Linked Response Unexpected
       
 10801 		*/
       
 10802 		ELinkedResponseUnexpected,
       
 10803 		/**
       
 10804 		This invokes a problem of Unexpected Linked Operation
       
 10805 		*/
       
 10806 		EUnexpectedLinkedOperation,
       
 10807 		/**
       
 10808 		This invokes a problem of Mistyped Parameter.
       
 10809 		*/
       
 10810 		EMistypedParameter	
       
 10811 		};
       
 10812 	
       
 10813    /**************************************************************/
       
 10814    //                  MOLR                                      //
       
 10815    /**************************************************************/
       
 10816  
       
 10817  	/**
       
 10818  	TMolrType is used by the SendMolr() API.
       
 10819  	This gives an indication of type of Molr request the UE wants to invoke
       
 10820  	@internalAll
       
 10821  	*/
       
 10822  	enum TMolrType
       
 10823 		{
       
 10824 		/**
       
 10825 		MolrType UnKnown
       
 10826 		*/
       
 10827 		EMolrTypeUnknown,
       
 10828 		/**
       
 10829 		UE is requesting the Network for its Location Estimate  
       
 10830 		*/
       
 10831 		ELocationEstimate,
       
 10832 		/**
       
 10833 		UE is requesting the Network for  GPS Assistance data
       
 10834 		*/
       
 10835 		EAssistanceData,
       
 10836 		/**
       
 10837 		UE is requesting the Network for  DecipheringKeys
       
 10838 		*/
       
 10839 		EDecipheringKeys
       
 10840 		};
       
 10841 
       
 10842  	/**
       
 10843  	TResponseTime is used by SendMolr() API
       
 10844  	This enum holds the various types of delay that an UE is expecting.
       
 10845  	@internalAll
       
 10846  	*/
       
 10847  	enum TResponseTime
       
 10848   		{
       
 10849   		/**
       
 10850   		Response Time Unknown.
       
 10851 		*/
       
 10852   		EResponseTimeunknown,
       
 10853   		/**
       
 10854   		This enum value indicates that the UE expects a Less Time Delay
       
 10855   		from Network in responding to its request
       
 10856   		*/
       
 10857   		ELowDelay,
       
 10858   		/**
       
 10859   		This enum value indicates that the UE expects a Long Time Delay
       
 10860   		from Network in responding to its request and is tolerant to it.
       
 10861   		*/
       
 10862   		EDelayTolerant		
       
 10863   		};
       
 10864  	
       
 10865  	/**
       
 10866  	TLocationMethod is used by SendMolr() API
       
 10867  	This is an enum which lists out all different types of Location methods that an UE can request
       
 10868  	@internalAll
       
 10869  	*/
       
 10870  	enum TLocationMethod
       
 10871   		{
       
 10872   		/**
       
 10873   		Location Method Unknown
       
 10874 		*/
       
 10875   		ELocationMethodunknown,
       
 10876   		/**
       
 10877   		This indication is given under a scenario where the UE wants a MS (Mobile Station) Based Location Fix.
       
 10878   		This can be termed as UE Assisted Location Fix(EOTD-Enhanced observed time difference).
       
 10879   		*/
       
 10880   		EMSBasedEOTD,
       
 10881   		/**
       
 10882   		This indication is given under a scenario where the UE wants a MS (Mobile Station) Assisted Location Fix.
       
 10883   		This can be termed out as UE based location fix.
       
 10884   		*/
       
 10885   		EMSAssistedEOTD,
       
 10886   		/**
       
 10887   		This indication is given under a scenario where the UE wants a MS (Mobile Station) Assisted GPS data.
       
 10888   		*/
       
 10889   		EMSAssistedGPS,
       
 10890   		/**
       
 10891   		This indication is given under a scenario where the UE wants a MS (Mobile Station) based location fix 
       
 10892   		(OTDOA-Observed time difference of arrival).
       
 10893   		*/
       
 10894   		EMSBasedOTDOA
       
 10895   		}; 
       
 10896    
       
 10897     /**
       
 10898     TQosV1 is used by SendMolr() API
       
 10899     This is a class with details of accuracy of Position information, Response Time, 
       
 10900     expected to be received from the network.
       
 10901     @see TResponseTime
       
 10902     @internalAll
       
 10903     */
       
 10904  	class TQosV1
       
 10905    		{
       
 10906    	public:
       
 10907     	/**
       
 10908     	This gives an information of the amount of Horizontal accuracy that the UE is expecting.
       
 10909     	*/
       
 10910     	TUint8 iHorizontalAccuracy;
       
 10911     	/**
       
 10912     	This gives an information of the amount of Vertical accuracy that the UE is expecting. 
       
 10913     	*/
       
 10914     	TUint8 iVerticalAccuracy;
       
 10915     	/**
       
 10916     	This enum indicates the Response Time expected by the UE to receive a response for its MOlr request.
       
 10917     	*/
       
 10918     	TResponseTime iResponseTime;
       
 10919     	};
       
 10920     
       
 10921     /**
       
 10922     TMolrErrors is used by SendMolr() API
       
 10923     This is an enum which lists out all the possible errors that can be 
       
 10924     reported to UE by an External Client or the Network.
       
 10925     @internalAll
       
 10926     */
       
 10927    	enum TMolrErrors
       
 10928     	{
       
 10929     	/**
       
 10930     	Molr Error Unknown
       
 10931 		*/
       
 10932     	EMolrErrorUnknown,
       
 10933     	/**
       
 10934     	This indication is given to the UE when the Location Report is unable to reach the 
       
 10935     	External Client due to some failure in the Network Connections.
       
 10936     	*/
       
 10937         EMolrSystemFailure, 
       
 10938         /**
       
 10939         This indication is given back to the UE by the Network to the UE or by the 
       
 10940         External Client to the UE,where the UE generated MOLR has some unexpected values. 
       
 10941         */
       
 10942         EMolrUnexpectedDataValue,  
       
 10943         /**
       
 10944         This indication is given back to the UE by the Network to the UE or by the 
       
 10945         External Client to the UE,where the UE generated MOLR had a data discrepancy
       
 10946         */
       
 10947         EMolrDataMissing, 
       
 10948         /**
       
 10949         This indication is given by the Network to the UE, 
       
 10950         when the UE is not given a facility to make a MOLR request
       
 10951         */
       
 10952         EMolrFacilityNotSupported, 
       
 10953         /**
       
 10954         This indication is given by the Network to the UE, 
       
 10955         when the subscription profile of the UE doesn't match with the requests made by it.
       
 10956         */
       
 10957         EMolrSS_SubscriptionViolation, 
       
 10958         /**
       
 10959         This indication is given by the Network to the UE, 
       
 10960         when the UE or the Network failed to generate the Location estimate
       
 10961         */ 
       
 10962         EMolrPositionMethodFailure 
       
 10963         };
       
 10964 
       
 10965 	/**
       
 10966 	TStartMolrV7 is used by SendMolr() API
       
 10967 	This class lists the details send by UE to Network when a Molr request is being made.
       
 10968 	@see TMolrType
       
 10969 	@see TQosV1
       
 10970 	@see TLocationEstimateType
       
 10971 	@see TLcsClientExternalID
       
 10972 	@see TGpsAssistanceData
       
 10973 	@see TLocationMethod
       
 10974 	@internalAll
       
 10975 	*/
       
 10976 	class TStartMolrV7: public RMobilePhone::TMultimodeType
       
 10977 		{
       
 10978 	public:
       
 10979 		IMPORT_C TStartMolrV7();
       
 10980 	public:
       
 10981 		/**
       
 10982 		TMolrType holds the type of Molr request being made
       
 10983 		*/
       
 10984 		TMolrType             iMolrType;
       
 10985 		/**
       
 10986 		TQosV1 lists out the Quality of Service expected by UE
       
 10987 		*/
       
 10988 		TQosV1                iQos;
       
 10989 		/**
       
 10990 		Type of Location Estimate requested
       
 10991 		*/
       
 10992 		TLocationEstimateType iMolrLocationEstimateType;
       
 10993 		/**
       
 10994 		Id of the External client
       
 10995 		*/
       
 10996 		TLcsClientExternalID  iLcsClientExternalID;
       
 10997 		/**
       
 10998 		Type of GpsAssistanceData
       
 10999 		*/
       
 11000 		TGpsAssistanceData    iGpsAssistanceData;
       
 11001 		/**
       
 11002 		Type of Location method requested
       
 11003 		*/
       
 11004 		TLocationMethod       iLocationMethod ;
       
 11005 		/**
       
 11006 		Type of Service requested
       
 11007 		*/
       
 11008 		TUint8                 iLcsServiceTypeID;
       
 11009 		};
       
 11010 	/**
       
 11011 	A typedef'd packaged TStartMolrV7 for passing through a
       
 11012 	generic API method.
       
 11013 
       
 11014 	@internalAll
       
 11015 	*/
       
 11016 	typedef TPckg<TStartMolrV7> TStartMolrV7Pckg;
       
 11017 	
       
 11018 	/**
       
 11019 	TMolrReturnResultV7 is used by SendMolr() API
       
 11020 	This class lists all the Molr return results that can be expected for the Molr request
       
 11021 	being made.
       
 11022 	@see TLcsLocationEstimate 
       
 11023 	@see TLcsVelocityEstimate
       
 11024 	@see TMolrErrors
       
 11025 	@internalAll
       
 11026 	*/
       
 11027     class TMolrReturnResultV7: public RMobilePhone::TMultimodeType
       
 11028     	{
       
 11029     public:
       
 11030 		IMPORT_C TMolrReturnResultV7();
       
 11031     public:
       
 11032     	/**
       
 11033     	This gives the Location Estimate of the UE
       
 11034     	*/
       
 11035     	TLcsLocationEstimate    iLocationEstimate;
       
 11036     	/**
       
 11037     	This gives the Velocity Estimate of the UE
       
 11038     	*/
       
 11039     	TLcsVelocityEstimate	iVelocityEstimate;
       
 11040     	/**
       
 11041     	This gives the indication of the type of error occured
       
 11042     	*/
       
 11043     	TMolrErrors             iMolrErrors;
       
 11044     	};
       
 11045 
       
 11046 	/**
       
 11047 	A typedef'd packaged TMolrReturnResultV7 for passing through a
       
 11048 	generic API method.
       
 11049 
       
 11050 	@internalAll
       
 11051 	*/
       
 11052 	typedef TPckg<TMolrReturnResultV7> TMolrReturnResultV7Pckg;
       
 11053 	
       
 11054 	//**************************************//
       
 11055 	// Measurement Control Data structures	//
       
 11056 	//**************************************//
       
 11057 
       
 11058 	enum 
       
 11059 		{
       
 11060 		/**Maximum number of monitored cells RACH*/
       
 11061 		KMaxMonitoredCells = 8,
       
 11062 		/**Maximum number of satellites*/
       
 11063 		KMaxSat = 16,
       
 11064 		/**GlobalHealth size. 364 bits =46 bytes (Rounded) */
       
 11065 		KGlobalHealthSize	= 46
       
 11066 		};
       
 11067 
       
 11068 	/**This enum contains the possible types of measurement commands.*/
       
 11069 	enum TMeasurementCmd
       
 11070 		{
       
 11071 		/**Measurement Command Unknown*/
       
 11072 		EMeasCommandUnknown,
       
 11073 		/**Setup a new measurement*/
       
 11074 		ESetup,
       
 11075 		/**Modify a previously defined measurement, e.g. to change the reporting criteria*/
       
 11076 		EModify,
       
 11077 		/**Indicates to stop a measurement and clear all information in the UE that are related to that measurement */
       
 11078 		ERelease,
       
 11079 		};
       
 11080 
       
 11081 	/**This enum contains the possible positioning method types*/
       
 11082 	enum TUePosMethodType
       
 11083 		{
       
 11084 		/**Positioning Method Type unknown*/
       
 11085 		EPosMethodTypeUnknown,
       
 11086 		/**UE Assisted : The network computes the location of the UE.*/
       
 11087 		EUeAssisted,
       
 11088 		/**UE Based : The UE computes the location of itself*/
       
 11089 		EUeBased,
       
 11090 		};
       
 11091 
       
 11092 	/**This enum contains the possible positioning methods*/
       
 11093 	enum TPosMethod
       
 11094 		{
       
 11095 		/**Positioning Method unknown*/
       
 11096 		EPosMethodUnknown,
       
 11097 		/**OTDOA may be selected by the SRNC as the method to be used on receipt of an LCS positioning request from the CN */
       
 11098 		EOtdoa,
       
 11099 		/**These methods make use of UEs, which are equipped with radio receivers capable of receiving GPS signals*/
       
 11100 		EGps,
       
 11101 		/**Use either OTDOA or GPS positioning method.*/
       
 11102 		EOtdoaOrGps,
       
 11103 		/**
       
 11104 		In the cell ID based (i.e. cell coverage) method, the position of an UE is 
       
 11105 		estimated with the knowledge of its serving Node B. The information about the serving 
       
 11106 		Node B and cell may be obtained by paging,locating area update, cell update, URA update, or routing area update.
       
 11107 		*/
       
 11108 		ECellID
       
 11109 		};
       
 11110 
       
 11111 	/**
       
 11112 	This class contains the information which is part of the Navigation Model.
       
 11113 	This can be requested by the UE as part of additional request.
       
 11114 	*/
       
 11115 	class TSatDataV1
       
 11116 		{
       
 11117 	public:
       
 11118 		/**Satellite identity*/
       
 11119 		TUint8		iSatID;
       
 11120 		/**Issue of Data Ephemeris for SatID*/
       
 11121 		TUint8		iIode;
       
 11122 		};
       
 11123 	
       
 11124 	/**
       
 11125 	This class contains the additional information that can be requested by the UE.
       
 11126 	*/
       
 11127 	class TNavModelAddlDataReqV1	
       
 11128 		{
       
 11129 	public:
       
 11130 		/**GPS time in weeks*/
       
 11131 		TUint16		iGpsWeek;
       
 11132 		/**GPS time of ephemeris in hours of the latest ephemeris set contained by the UE.*/
       
 11133 		TUint8		iGpsToe;
       
 11134 		/**Ephemeris age tolerance of the UE to UTRAN in hours.*/
       
 11135 		TUint8		iTToeLimit;
       
 11136 		/**Satellite Identities
       
 11137 		@see TSatDataV1*/
       
 11138 		TSatDataV1	iSatData[KMaxSat];
       
 11139 		};
       
 11140 
       
 11141 	/**This class contains the indicators to request for additional assistance data from the network.*/
       
 11142 	class TGpsAddlAssistDataReqV1
       
 11143 		{
       
 11144 	public:
       
 11145 		/**ETrue indicates Almanac Data is requested
       
 11146 		@see	TAlmanacV1*/
       
 11147 		TBool	iAlmanacRequest;
       
 11148 		/**ETrue indicates UTC model Data is requested
       
 11149 		@see	TUtcModelV1*/
       
 11150 		TBool	iUtcModelRequest;
       
 11151 		/**ETrue indicates Ionospheric Model Data is requested
       
 11152 		@see	TUtcModelV1*/
       
 11153 		TBool	iIonosphericModelRequest;
       
 11154 		/**ETrue indicates Navigation model Data is requested
       
 11155 		@see	TIonosphericModelV1*/
       
 11156 		TBool	iNavigationModelRequest;
       
 11157 		/**ETrue indicates DGPS corrections Data is requested
       
 11158 		@see	TNavigationModelSatInfoV1*/
       
 11159 		TBool	iDgpsCorrectionsRequest;
       
 11160 		/**ETrue indicates Reference location Data is requested
       
 11161 		@see	TDgpsCorrectionsV1*/
       
 11162 		TBool	iReferenceLocationRequest;
       
 11163 		/**ETrue indicates Reference time Data is requested
       
 11164 		@see	TReferenceLocationV1*/
       
 11165 		TBool	iReferenceTimeRequest;
       
 11166 		/**ETrue indicates Acquisition assistance Data is requested
       
 11167 		@see	TReferenceTimeV1*/
       
 11168 		TBool	iAcquisitionAssistanceReq;
       
 11169 		/**ETrue indicates Realtime integrity Data is requested
       
 11170 		@see	TAcquisitionAssistanceV1*/
       
 11171 		TBool	iRealTimeIntegrityRequest;
       
 11172 		/**This member is included only if Navigagion Model Data is requested (iNavigationModelRequest is ETrue).
       
 11173 		@see	TNavModelAddlDataReqV1*/
       
 11174 		TNavModelAddlDataReqV1	iNavModelAddlDataReq;
       
 11175 		};
       
 11176 
       
 11177 	/**This class contains the UE positioning reporting quantity*/
       
 11178 	class TUePosReportingQuantityV1
       
 11179 		{
       
 11180 	public:
       
 11181 		/**Holds the positioning method type*/
       
 11182 		TUePosMethodType	 iUePosMethodType;
       
 11183 		/**Holds the positioning method*/
       
 11184 		TPosMethod 	iPosMethod;
       
 11185 		/**Holds the horizontal accuracy*/
       
 11186 		TInt8	iHorzAccuracy;
       
 11187 		/**Holds the vertical accuracy*/
       
 11188 		TInt8	iVertAccuracy;
       
 11189 		/**If true the SRNC wants the UE to report the SFN-GPS timing of the reference cell.*/ 
       
 11190 		TBool 	iGpsTimingOfCellWanted;
       
 11191 		/**ETrue indicates that the UE is requested to send the IE "Additional assistance Data Request" 
       
 11192 		when the IE "UE positioning Error" is present in the UE positioning measured results.
       
 11193 		EFalse indicates that the UE shall use the assistance data available.
       
 11194 		*/
       
 11195 		TBool	iAddlAssistanceDataReq;
       
 11196 		};
       
 11197 
       
 11198 	/**This enum contains the states in which measurements are valid*/
       
 11199 	enum TMeasurementValidity
       
 11200 		{
       
 11201 		/**Measurement Validity Unknown*/
       
 11202 		EMeasValidityUnknown,
       
 11203 		/**Indicates measurement is valid in CellDCH state*/
       
 11204 		ECellDCH,
       
 11205 		/**Indicates measurement is valid except in CellDCH state*/
       
 11206 		EAllButCellDCH,
       
 11207 		/**Indicates measurement is valid in all state*/
       
 11208 		EAllStates
       
 11209 		};
       
 11210 
       
 11211 	/**This enum list the SfnTow uncertainity*/
       
 11212 	enum TSfnTowUncertainity
       
 11213 		{
       
 11214 		/**Sfn Tow Uncertainity unknown*/
       
 11215 		ESfnTowUncertainityUnknown,
       
 11216 		/**SfnTowUncertainity < 10*/
       
 11217 		ELessThan10,
       
 11218 		/**SfnTowUncertainity > 10*/
       
 11219 		EMoreThan10
       
 11220 		};
       
 11221 	
       
 11222 	/**This enum lists the different GPS drift rates*/
       
 11223 	enum TUtranGpsDriftRate
       
 11224 		{
       
 11225 		/**GPS Drift rate unknown*/
       
 11226 		EDriftRateUnknown,
       
 11227 		/**Drift = 0*/
       
 11228 		EUtranGpsDrift0,
       
 11229 		/**Drift = 1*/
       
 11230 		EUtranGpsDrift1,
       
 11231 		/**Drift = 2*/
       
 11232 		EUtranGpsDrift2,
       
 11233 		/**Drift = 5*/
       
 11234 		EUtranGpsDrift5,
       
 11235 		/**Drift = 10*/
       
 11236 		EUtranGpsDrift10,
       
 11237 		/**Drift = 15*/
       
 11238 		EUtranGpsDrift15,
       
 11239 		/**Drift = 25*/
       
 11240 		EUtranGpsDrift25,
       
 11241 		/**Drift = 50*/
       
 11242 		EUtranGpsDrift50,
       
 11243 		/**Drift = -1*/
       
 11244 		EUtranGpsDriftMinus1,
       
 11245 		/**Drift = -2*/
       
 11246 		EUtranGpsDriftMinus2,
       
 11247 		/**Drift = -5*/
       
 11248 		EUtranGpsDriftMinus5,
       
 11249 		/**Drift = -10*/
       
 11250 		EUtranGpsDriftMinus10,
       
 11251 		/**Drift = -15*/
       
 11252 		EUtranGpsDriftMinus15,
       
 11253 		/**Drift = -25*/
       
 11254 		EUtranGpsDriftMinus25,
       
 11255 		/**Drift = -50*/
       
 11256 		EUtranGpsDriftMinus50,
       
 11257 		};
       
 11258 
       
 11259 	/**This enum lists the different Udre values*/
       
 11260 	enum TDiffCorrectionsStatus
       
 11261 		{
       
 11262 		/**Diff Corrections Status unknown*/
       
 11263 		ECorrectionStatusUnknown,
       
 11264 		/**UDRE 1.0 */
       
 11265 		EUdre1Point0,
       
 11266 		/**UDRE 0.75 */
       
 11267 		EUdre0Point75,
       
 11268 		/**UDRE 0.5 */
       
 11269 		EUdre0Point5,
       
 11270 		/**UDRE 0.3 */
       
 11271 		EUdre0Point3,
       
 11272 		/**UDRE 0.2 */
       
 11273 		EUdre0Point2,
       
 11274 		/**UDRE 0.1 */
       
 11275 		EUdre0Point1,
       
 11276 		/**UDRE No Data */
       
 11277 		ENoData,
       
 11278 		/**UDRE Invalid Data */
       
 11279 		EInvalidData
       
 11280 		};
       
 11281 	
       
 11282 	/**This class reserves members for future use*/
       
 11283 	class TSubFrame1ReservedV1
       
 11284 		{
       
 11285 	public:
       
 11286 		/**Reserve member 1*/
       
 11287 		TUint	iReserved1;
       
 11288 		/**Reserve member 2*/
       
 11289 		TUint	iReserved2;
       
 11290 		/**Reserve member 3*/
       
 11291 		TUint	iReserved3;
       
 11292 		/**Reserve member 4*/
       
 11293 		TUint	iReserved4;
       
 11294 		};
       
 11295 
       
 11296 	/**This class contains information for GPS ephemeris and clock correction.*/
       
 11297 	class TEphemerisParameterV1
       
 11298 		{
       
 11299 	public:
       
 11300 		/**Code(s) on L2 Channel */
       
 11301 		TUint8	iCodeOnL2;
       
 11302 		/**User Range Accuracy */
       
 11303 		TUint8	iUraIndex;
       
 11304 		/**Health of Satellite*/
       
 11305 		TUint8	iSatHealth;
       
 11306 		/**Issue of Data, Clock */
       
 11307 		TUint16	iIodc;
       
 11308 		/**L2 channel flag*/
       
 11309 		TUint8	iL2Flag;
       
 11310 		TSubFrame1ReservedV1	iSubFrame1Reserved;
       
 11311 		/**Estimated group delay differential */
       
 11312 		TUint8	iTGd;
       
 11313 		/**Apparent clock correction*/
       
 11314 		TUint16	iTOc;
       
 11315 		/**Apparent clock correction*/
       
 11316 		TUint8	iAf2;
       
 11317 		/**Apparent clock correction*/
       
 11318 		TUint16	iAf1;
       
 11319 		/**Apparent clock correction*/
       
 11320 		TUint	iAf0;
       
 11321 		/**Amplitude of the Sine Harmonic Correction Term to the Orbit Radius (meters)*/
       
 11322 		TUint16	iCRs;
       
 11323 		/**Mean Motion Difference From Computed Value (semi-circles/sec)*/
       
 11324 		TUint16	iDeltaN;
       
 11325 		/**Mean Anomaly at Reference Time (semi-circles)*/
       
 11326 		TUint	iM0;
       
 11327 		/**Amplitude of the Cosine Harmonic Correction Term To The Argument Of Latitude (radians)*/
       
 11328 		TUint16	iCUc;
       
 11329 		/**Eccentricity*/
       
 11330 		TUint	iE;
       
 11331 		/**Amplitude of the Sine Harmonic Correction Term To The Argument Of Latitude (radians)*/
       
 11332 		TUint16	iCUs;
       
 11333 		/**Semi-Major Axis in squareroot(meters) */
       
 11334 		TUint	iASqrt;
       
 11335 		/**Reference Time Ephemeris */
       
 11336 		TUint16	iTOe;
       
 11337 		/**
       
 11338 		Fit interval flag
       
 11339 		@see ICD-GPS-200
       
 11340 		*/
       
 11341 		TUint8	iFitInterval;
       
 11342 		/**Age Of Data Offset */
       
 11343 		TUint8	iAodo;
       
 11344 		/**Amplitude of the Cosine Harmonic Correction Term To The Angle Of Inclination (radians)*/
       
 11345 		TUint16	iCIc;
       
 11346 		/**Longitude of Ascending Node of Orbit Plane at Weekly Epoch (semi-circles) */
       
 11347 		TUint	iOmega0;
       
 11348 		/**Amplitude of the Sine Harmonic Correction Term To The Angle Of Inclination (radians) */
       
 11349 		TUint16	iCIs;
       
 11350 		/**Inclination Angle at Reference Time (semi-circles) */
       
 11351 		TUint	i0;
       
 11352 		/**Amplitude of the Cosine Harmonic Correction Term to the Orbit Radius (meters) */
       
 11353 		TUint16	iCRc;
       
 11354 		/**Argument of Perigee (semi-circles) */
       
 11355 		TUint	iOmega;
       
 11356 		/**Longitude of Ascending Node of Orbit Plane at Weekly Epoch (semi-circles/sec) */
       
 11357 		TUint	iOmegaDot;
       
 11358 		/**Rate of Inclination Angle (semi-circles/sec) */
       
 11359 		TUint16	iDot;
       
 11360 		};
       
 11361 
       
 11362 	/**This enum specifies the possible status of a satellite*/
       
 11363 	enum TSatelliteStatus
       
 11364 		{
       
 11365 		/**Satellite Status unknown*/
       
 11366 		ESatStatusUnknown,
       
 11367 		/**New satellite, new Navigation Model*/
       
 11368 		ENsNnU,
       
 11369 		/**Existing satellite, same Navigation Model*/
       
 11370 		EEsSn,
       
 11371 		/**Existing satellite, new Navigation Model*/
       
 11372 		EEsNnU,
       
 11373 		/**Reserved*/
       
 11374 		ERev2,
       
 11375 		/**Reserved*/
       
 11376 		ERev
       
 11377 		};
       
 11378 
       
 11379 	/**This class contains the navigation model satellite information*/
       
 11380 	class TNavigationModelSatInfoV1
       
 11381 		{
       
 11382 	public:
       
 11383 		/**Satellite identification*/
       
 11384 		TUint8				iSatID;
       
 11385 		/**Status of the satellite*/
       
 11386 		TSatelliteStatus	iSatelliteStatus;
       
 11387 		/**Contains information for GPS ephemeris and clock correction.*/
       
 11388 		TEphemerisParameterV1	iEphemerisParameter;
       
 11389 		};
       
 11390 
       
 11391 	/**
       
 11392 	This class contains the ionospheric model information needed to model
       
 11393 	the propagation delays of the GPS signals through the ionosphere
       
 11394 	*/
       
 11395 	class TIonosphericModelV1
       
 11396 		{
       
 11397 	public:
       
 11398 		/**
       
 11399 		The parameters *n are the coefficients of a cubic equation 
       
 11400 		representing the amplitude of the vertical delay.
       
 11401 		@see ICD-GPS-200
       
 11402 		*/
       
 11403 		/**Alfa = 0*/
       
 11404 		TUint8	iAlfa0;
       
 11405 		/**Alfa = 1*/
       
 11406 		TUint8	iAlfa1;
       
 11407 		/**Alfa = 2*/
       
 11408 		TUint8	iAlfa2;
       
 11409 		/**Alfa = 3*/
       
 11410 		TUint8	iAlfa3;
       
 11411 		/**
       
 11412 		The parameters *n are the coefficients of a cubic equation 
       
 11413 		representing the period of the ionospheric model 
       
 11414 		@see ICD-GPS-200
       
 11415 		*/
       
 11416 		/**Beta = 0*/
       
 11417 		TUint8	iBeta0;
       
 11418 		/**Beta = 1*/
       
 11419 		TUint8	iBeta1;
       
 11420 		/**Beta = 2*/
       
 11421 		TUint8	iBeta2;
       
 11422 		/**Beta = 3*/
       
 11423 		TUint8	iBeta3;
       
 11424 		};
       
 11425 		
       
 11426 	/**
       
 11427 	This class contains the UTC model information needed to relate GPS time to Universal Time Coordinate (UTC)
       
 11428 	@see ICD-GPS-200
       
 11429 	*/
       
 11430 	class TUtcModelV1
       
 11431 		{
       
 11432 	public:
       
 11433 		/**
       
 11434 		Time in seconds. 
       
 11435 		@see ICD-GPS-200.
       
 11436 		*/
       
 11437 		TUint	iA1;
       
 11438 		/**
       
 11439 		Time in seconds. 
       
 11440 		@see ICD-GPS-200.
       
 11441 		*/
       
 11442 		TUint	iA2;
       
 11443 		/**Time in seconds
       
 11444 		@see ICD-GPS-200
       
 11445 		*/
       
 11446 		TUint8	iTOt;
       
 11447 		/**weeks
       
 11448 		@see ICD-GPS-200
       
 11449 		*/
       
 11450 		TUint8	iWnT;
       
 11451 		/**Time in seconds
       
 11452 		@see ICD-GPS-200
       
 11453 		*/
       
 11454 		TUint8	iDeltaTLs;
       
 11455 		/**Weeks
       
 11456 		@see ICD-GPS-200
       
 11457 		*/
       
 11458 		TUint8	iWnLsf;
       
 11459 		/**Days
       
 11460 		@see ICD-GPS-200
       
 11461 		*/
       
 11462 		TUint8	iDn;
       
 11463 		/**Seconds
       
 11464 		@see ICD-GPS-200
       
 11465 		*/
       
 11466 		TUint8	iDeltaTLsf;
       
 11467 		};
       
 11468 
       
 11469 	/**This class contains a reduced-precision subset of the ephemeris and clock correction parameters.*/
       
 11470 	class TAlmanacSatInfoV1
       
 11471 		{
       
 11472 	public:
       
 11473 		/**Data identification*/
       
 11474 		TUint8	iDataID;
       
 11475 		/**Eccentricity*/
       
 11476 		TUint16	iE;
       
 11477 		/**Reference Time of Almanac */
       
 11478 		TUint8 	iTOa;
       
 11479 		/**@see ICD-GPS-200*/
       
 11480 		TUint16	iDeltaI;
       
 11481 		/**Longitude of Ascending Node of Orbit Plane at Weekly Epoch (semi-circles/sec) */
       
 11482 		TUint16	iOmegaDot;
       
 11483 		/**Satellite health*/
       
 11484 		TUint8	iSatHealth;
       
 11485 		/**Semi-Major Axis in squareroot(meters)*/
       
 11486 		TUint	iASqrt;
       
 11487 		/**Longitude of Ascending Node of Orbit Plane at Weekly Epoch (semi-circles) */
       
 11488 		TUint	iOmega0;
       
 11489 		/**Mean Anomaly at Reference Time (semi-circles) */
       
 11490 		TUint	iM0;
       
 11491 		/**Argument of Perigee (semi-circles) */
       
 11492 		TUint	iOmega;
       
 11493 		/**Apparent clock correction */
       
 11494 		TUint16	iAf0;
       
 11495 		/**Apparent clock correction */
       
 11496 		TUint16	iAf1;
       
 11497 		};
       
 11498 
       
 11499 	/**This class holds the coarse, long-term model of the satellite positions and clocks.*/
       
 11500 	class TAlmanacV1
       
 11501 		{
       
 11502 	public:
       
 11503 		/**Almanac Reference Week */
       
 11504 		TUint8	iWnA;
       
 11505 		TAlmanacSatInfoV1	iAlmanacSatInfoList[KMaxSat]; 
       
 11506 		/**This enables GPS time recovery and possibly extended GPS correlation intervals.*/
       
 11507 		TUint16	iSvGlobalHealth[KGlobalHealthSize]; 
       
 11508 		};
       
 11509 
       
 11510 	/**This union contains the information specific to mode - FDD/TDD*/
       
 11511 	union TModeSpecificInfoV1
       
 11512 		{
       
 11513 		/**Used in FDD mode*/
       
 11514 		TUint16	iPrimaryScramblingCode;
       
 11515 		/**Used in TDD mode*/
       
 11516 		TUint16	iCellParametersID;
       
 11517 		};
       
 11518 
       
 11519 	/**This class contains parameters that enable fast acquisition of the GPS 
       
 11520 	   signals in UE-assisted GPS positioning.*/
       
 11521 	class TAcquisitionAssistanceV1
       
 11522 		{
       
 11523 	public:
       
 11524 		/**Specifies GPS reference time*/
       
 11525 		TUint				iGpsReferenceTime;
       
 11526 		/**Specifies GPS reference time specific to mode - FDD/TDD*/
       
 11527 		TModeSpecificInfoV1	iUtranGpsReferenceTime;
       
 11528 		/**ETrue indicates iUtranGpsReferenceTime is iPrimaryScramblingCode. 
       
 11529 		EFalse indicates iUtranGpsReferenceTime is iCellParametersID*/
       
 11530 		TBool	iUtranGpsRefTimeStatus;
       
 11531 		};
       
 11532 
       
 11533 	/**
       
 11534 	The UDRE provides an estimate of the uncertainty (1-*) in the corrections for 
       
 11535 	the particular satellite. The value in this field shall be multiplied by the 
       
 11536 	UDRE Scale Factor in the common Corrections Status/Health field to determine the 
       
 11537 	final UDRE estimate for the particular satellite. 
       
 11538 	@see 3GPP TS 25.305
       
 11539 	*/
       
 11540 	enum TUdre
       
 11541 		{
       
 11542 		/**Udre unknown*/
       
 11543 		EUdreUnknown,
       
 11544 		/** UDRE < 1*/
       
 11545 		ELessThan1,
       
 11546 		/** 1> UDRE < 4*/
       
 11547 		EBtw1And4,
       
 11548 		/** 1> UDRE < 8*/
       
 11549 		EBtw1And8,
       
 11550 		/** UDRE > 8*/
       
 11551 		EOver8
       
 11552 		};
       
 11553 
       
 11554 	/**This class contains DGPS corrections to be used by the UE*/
       
 11555 	class TDgpsCorrectionSatInfoV1
       
 11556 		{
       
 11557 	public:
       
 11558 		/**Satellite identification*/
       
 11559 		TUint8	iSatID;
       
 11560 		/**Issue of Data Ephemeris for SatID.*/
       
 11561 		TUint8	iIode;
       
 11562 		/**
       
 11563 		The UDRE provides an estimate of the uncertainty (1-*) in the corrections for 
       
 11564 		the particular satellite. The value in this field shall be multiplied by the 
       
 11565 		UDRE Scale Factor in the common Corrections Status/Health field to determine the 
       
 11566 		final UDRE estimate for the particular satellite. 
       
 11567 		@see 3GPP TS 25.305
       
 11568 		*/
       
 11569 		TUdre	iUdre;
       
 11570 		/**The PRC indicates the correction to the pseudorange for the particular satellite at the GPS Reference Time*/
       
 11571 		TInt16	iPrc;
       
 11572 		/**
       
 11573 		This information indicates the rate-of-change of the pseudorange correction for the particular satellite,
       
 11574 		using the satellite ephemeris identified by the IODE IE
       
 11575 		*/
       
 11576 		TInt8	iRrc;
       
 11577 		/**For future use*/
       
 11578 		TInt8	iDummy1;
       
 11579 		/**For future use*/
       
 11580 		TInt8	iDummy2;
       
 11581 		};
       
 11582 
       
 11583 	/**This class contains the DGPS corrections information*/
       
 11584 	class TDgpsCorrectionsV1
       
 11585 		{
       
 11586 	public:
       
 11587 		/**GPS time of week*/
       
 11588 		TUint16				iGpsTow;
       
 11589 		/**This information indicates the status of the differential corrections contained in the message.*/
       
 11590 		TDiffCorrectionsStatus	iStatusHealth;
       
 11591 		/**This member data contains DGPS corrections of the satellites to be used by the UE*/
       
 11592 		TDgpsCorrectionSatInfoV1	iDgpsCorrectionSatInfoList[KMaxSat];
       
 11593 		};
       
 11594 
       
 11595 	/**This enum containst the possible signs of latitude*/
       
 11596 	enum TLatitudeSign
       
 11597 		{
       
 11598 		/**Latitude Sign Unknown*/
       
 11599 		ELatitudeSignUnknown,
       
 11600 		/**Latitude sign is north*/
       
 11601 		ENorth,
       
 11602 		/**Latitude sign is south*/
       
 11603 		ESouth
       
 11604 		};
       
 11605 	
       
 11606 	/**This enum contains the possible directions of altitudes for reference location*/
       
 11607 	enum TAltDirection
       
 11608 		{
       
 11609 		/**Altitude Direction Unknown*/
       
 11610 		EAltDirectionUnknown,
       
 11611 		/**Indicates Altitude direction is height-wise*/
       
 11612 		EHeight,
       
 11613 		/**Indicates Altitude direction is depth-wise*/
       
 11614 		EDepth
       
 11615 		};
       
 11616 
       
 11617 	/**This class contains a 3-D location (with uncertainty)*/
       
 11618 	class TReferenceLocationV1
       
 11619 		{
       
 11620 	public:
       
 11621 		/**Specifies the sign - North/South*/
       
 11622 		TLatitudeSign	iLatitudeSign;
       
 11623 		/**Degree of latitude*/
       
 11624 		TUint16			iLatitude;
       
 11625 		/**Degree of longitude*/
       
 11626 		TInt16			iLongitude;
       
 11627 		/**Direction of altitude*/
       
 11628 		TAltDirection	iAltDirection;
       
 11629 		/**Degree of altitude*/
       
 11630 		TUint16			iAltitude;
       
 11631 		/**Uncertainty semi major axis*/
       
 11632 		TUint8			iUncertainitySemiMajor;
       
 11633 		/**Uncertainty semi minor axis*/
       
 11634 		TUint8			iUncertainitySemiMinor;
       
 11635 		/**Orientation of major axis*/
       
 11636 		TUint8			iOrientationMajorAxis;
       
 11637 		/**The uncertainty in altitude, h, expressed in metres*/
       
 11638 		TUint8			iUncertainityAltitude;
       
 11639 		/**The confidence by which the position of a target entity is known to be within the shape description*/
       
 11640 		TUint8			iConfidence;
       
 11641 		};
       
 11642 
       
 11643 	/**
       
 11644 	Contains several fields in the Telemetry (TLM) Word and Handover Word (HOW) 
       
 11645 	that are currently being broadcast by the respective GPS satellites. Combining this information 
       
 11646 	with GPS TOW helps the UE with time-recovery needed to predict satellite signal.
       
 11647 	*/
       
 11648 	class TGpsTowAssistV1
       
 11649 		{
       
 11650 	public:
       
 11651 		/**Satellite identification*/
       
 11652 		TUint8				iSatID;
       
 11653 		/**
       
 11654 		Contains a 14-bit value representing the Telemetry Message (TLM) 
       
 11655 		being broadcast by the GPS satellite identified by the particular SatID, 
       
 11656 		with the MSB occurring first in the satellite transmission.
       
 11657 		*/
       
 11658 		TUint16				iTlmMsg;
       
 11659 		/**
       
 11660 		Contains the two reserved bits in the TLM Word 
       
 11661 		being broadcast by the GPS satellite identified by SatID, 
       
 11662 		with the MSB occurring first in the satellite transmission.
       
 11663 		*/
       
 11664 		TUint8				iTlmReserved;
       
 11665 		/**Contain the Alert flags that are being broadcast by the GPS satellite identified by SatID.*/
       
 11666 		TBool				iAlert;
       
 11667 		/**Contain the Anti-Spoof that are being broadcast by the GPS satellite identified by SatID.*/
       
 11668 		TBool				iAntiSpoof;
       
 11669 		};
       
 11670 
       
 11671 	/**This class contains information that may be used to provide a mapping between UTRAN and GPS time*/
       
 11672 	class TUtranGpsRefTimeV1
       
 11673 		{
       
 11674 	public:
       
 11675 		/**UE-GPS timing of cell ms-part*/
       
 11676 		TUint16 			iMsPart;
       
 11677 		/**UE-GPS timing of cell ls-part*/
       
 11678 		TUint16				iLsPart;
       
 11679 		/**System frame number*/
       
 11680 		TUint16				iSfn;
       
 11681 		/**Specifies GPS reference time specific to mode - FDD/TDD*/
       
 11682 		TModeSpecificInfoV1	iModeSpecificInfo;
       
 11683 		/**ETrue indicates iUtranGpsReferenceTime is iPrimaryScramblingCode. 
       
 11684 		EFalse indicates iUtranGpsReferenceTime is iCellParametersID*/
       
 11685 		TBool	iModeSpecificInfoStatus;
       
 11686 		};
       
 11687 
       
 11688 	/**
       
 11689 	This class contains several fields in the Telemetry (TLM) Word and Handover Word (HOW) 
       
 11690 	that are currently being broadcast by the respective GPS satellites. Combining this information 
       
 11691 	with GPS TOW helps the UE with time-recovery needed to predict satellite signal.
       
 11692 	*/
       
 11693 	class TReferenceTimeV1
       
 11694 		{
       
 11695 	public:
       
 11696 		/**GPS time in weeks*/
       
 11697 		TUint16				iGpsWeek;
       
 11698 		/**GPS Time of Week in milliseconds */
       
 11699 		TUint16				iGpsTowOneMsec;
       
 11700 		/**GPS reference time may be used to provide a mapping between UTRAN and GPS time*/
       
 11701 		TUtranGpsRefTimeV1	iUtranGpsRefTime;
       
 11702 		/**
       
 11703 		This field indicates the uncertainty of the relation GPS TOW/SFN. 
       
 11704 		ELessThan10 means the relation is accurate to at least 10 ms.
       
 11705 		*/
       
 11706 		TSfnTowUncertainity	iSfnTowUncertainity;
       
 11707 		/**Drift rate of the NODE B clock relative to GPS time.*/
       
 11708 		TUtranGpsDriftRate	iUtranGpsDriftRate;
       
 11709 		/**
       
 11710 		Contains several fields in the Telemetry (TLM) Word and Handover Word (HOW) 
       
 11711 		that are currently being broadcast by the respective GPS satellites. Combining this information 
       
 11712 		with GPS TOW helps the UE with time-recovery needed to predict satellite signal.
       
 11713 		*/
       
 11714 		TGpsTowAssistV1		iGpsTowAssistList[KMaxSat];
       
 11715 		};
       
 11716 
       
 11717 	/**This class contains the GPS Assistance Data received from network*/
       
 11718 	class TUePosGpsAssistanceDataV1
       
 11719 		{
       
 11720 	public:
       
 11721 		/**GPS reference time may be used to provide a mapping between UTRAN and GPS time.*/
       
 11722 		TReferenceTimeV1 			iReferencTime;
       
 11723 		/**The Reference Location contains a 3-D location (with uncertainty)*/
       
 11724 		TReferenceLocationV1		iReferenceLocation;
       
 11725 		/**
       
 11726 		Holds information to allow a UE to estimate its position more accurate,
       
 11727 		biases in the pseudorange measurements may be provided to the UE.
       
 11728 		*/
       
 11729 		TDgpsCorrectionsV1			iDgpsCorrections;
       
 11730 		/**Holds navigation model satellite information*/
       
 11731 		TNavigationModelSatInfoV1	iNavigationModel;
       
 11732 		/**
       
 11733 		The Ionospheric Model contains information needed to model
       
 11734 		the propagation delays of the GPS signals through the ionosphere.
       
 11735 		*/
       
 11736 		TIonosphericModelV1			iIonosphericModel;
       
 11737 		/**UTC parameters may be used to provide Coordinated Universal Time to the UE.*/
       
 11738 		TUtcModelV1					iUtcModel;
       
 11739 		/**Holds the coarse, long-term model of the satellite positions and clocks.*/
       
 11740 		TAlmanacV1					iAlmanac;
       
 11741 		/**Holds the acquistions assistance information of the UE*/
       
 11742 		TAcquisitionAssistanceV1	iAcquisitionAssistance;
       
 11743 		/**Holds the list of bad satellites*/
       
 11744 		TUint8						iBadSatList[KMaxSat];
       
 11745 		/**
       
 11746 		This member specifies which of the above additional data structures are populated.
       
 11747 		*/
       
 11748 		TGpsAddlAssistDataReqV1 iGpsAddlDataStatus;
       
 11749 		};
       
 11750 
       
 11751 	/**This class contains the GPS assistance data required to compute the UE Postioning information*/
       
 11752 	class TUePosMeasurementV1
       
 11753 		{
       
 11754 	public:
       
 11755 		/**
       
 11756 		The purpose of the element is to express the allowed/required location method(s), 
       
 11757 		and to provide information desired QoS.
       
 11758 		*/
       
 11759 		TUePosReportingQuantityV1	iUePosReportingQuantity;
       
 11760 		/**This member data defines in which UE states the measurement is valid.*/
       
 11761 		TMeasurementValidity		iMeasurementValidity;
       
 11762 		/**This member data holds the GPS Assistance Data sent by the network*/
       
 11763 		TUePosGpsAssistanceDataV1	iUePosGpsAssistanceData;
       
 11764 		};
       
 11765 
       
 11766 	/**This holds the possible types of measurement commands that can be specified*/
       
 11767 	union TMeasurementCommandV1
       
 11768 		{
       
 11769 		/**Setup a new measurement*/
       
 11770 		TUePosMeasurementV1	iSetup;
       
 11771 		/**Modify a previously defined measurement*/
       
 11772 		TUePosMeasurementV1	iModify;
       
 11773 		/**Stop the measurement and clear all information in the UE that are related to that measurement.*/
       
 11774 		TBool	iRelease;
       
 11775 		};
       
 11776 
       
 11777 	/**This enum specifies the mode the UE shall use to transmit the measurement report*/
       
 11778 	enum TMeasReportTransferMode
       
 11779 		{
       
 11780 		/**Transfer mode unknown*/
       
 11781 		ETransferModeUnknown,
       
 11782 		/**The UE shall transmit the measurement report using Acknowledged RLC mode*/
       
 11783 		EAckModeRlc,
       
 11784 		/**The UE shall transmit the measurement report using Unacknowledged RLC mode*/
       
 11785 		EUnAckModeRlc
       
 11786 		};
       
 11787 
       
 11788 	/**
       
 11789 	This class contains the GPS assistance data needed by the UE to compute the location 
       
 11790 	of the UE. The UE computes the location once it receives all required information.
       
 11791 	*/
       
 11792 	class TMeasurementControlV7 : public RMobilePhone::TMultimodeType
       
 11793 		{
       
 11794 	public:
       
 11795 		IMPORT_C TMeasurementControlV7();
       
 11796 	public:
       
 11797 		/**
       
 11798 		A reference number that should be used by the UTRAN when setting up, 
       
 11799 		modifying or releasing the measurement and by the UE in the measurement report.
       
 11800 		*/
       
 11801 		TUint8	iMeasurementIdentity;
       
 11802 		/**Specifies the Measurement Setup / Modify / Release*/
       
 11803 		TMeasurementCommandV1	iMeasurementCommand;
       
 11804 		/**This specifies whether the UE shall transmit the measurement report using AM or UM RLC.*/
       
 11805 		TMeasReportTransferMode iMeasReportTransferMode;
       
 11806 		/**ETrue indicates velocity estimate is requested. EFalse indicates velocity estimate is not requested*/
       
 11807 		TBool	iVelocityRequested;
       
 11808 		/**Holds the type of measurement command being used*/
       
 11809 		TMeasurementCmd	iMeasurementCmdStatus;
       
 11810 		};
       
 11811    	/**
       
 11812 	A typedef'd packaged TMeasurementControlV7 for passing through a
       
 11813 	generic API method.
       
 11814 
       
 11815 	@internalAll
       
 11816 	*/
       
 11817 	typedef TPckg<TMeasurementControlV7> TMeasurementControlV7Pckg;
       
 11818 	
       
 11819 	//**************************************//
       
 11820 	// Measurement Report Data structures	//
       
 11821 	//**************************************//
       
 11822 
       
 11823 	
       
 11824 	/**
       
 11825 	This enum contains the indicators thta specify which 
       
 11826 	union members of TMeasurementQuantityV1 are included
       
 11827 	*/
       
 11828 	enum TMeasQnty
       
 11829 		{
       
 11830 		/**Measurement Quantity unknown*/
       
 11831 		EMeasQntyUnknown,
       
 11832 		/**Indicates that CpichEcN0 is present*/
       
 11833 		EMeasQntyCpichEcN0Present,
       
 11834 		/**Indicates that CpichRscp is present*/
       
 11835 		EMeasQntyCpichRscpPresent,
       
 11836 		/**Indicates that path loss is present*/
       
 11837 		EMeasQntyPathLossPresent,
       
 11838 		};
       
 11839 
       
 11840 	/**
       
 11841 	This enum contains the indicators that specify which 
       
 11842 	union members of TPosEstimateRefTime and  TPositionEstimateV1 are included
       
 11843 	*/
       
 11844 	enum TPosEstimateInfo
       
 11845 		{
       
 11846 		/**Position Estimate Info Unknown*/
       
 11847 		EPosEstimateInfoUnknown,
       
 11848 		/**
       
 11849 		NOTE: The following states correspond to TUePosPositionEstimateInfoV1/TPosEstimateRefTime
       
 11850 		Indicates that UE positioning estimate reference time is populated
       
 11851 		*/
       
 11852 		EUtranGpsRefTimeResultPresent,
       
 11853 		/**Indicates that GPS reference time is populated*/
       
 11854 		EGpsRefTimeOnlyPresent,
       
 11855 		/**Indicates that cell timing is populated*/
       
 11856 		ECellTimingPresent,
       
 11857 		/**
       
 11858 		NOTE: The following states correspond to TUePosPositionEstimateInfoV1/TPositionEstimateV1.
       
 11859 		Indicates EllipsoidPoint is populated
       
 11860 		*/
       
 11861 		EEllipsoidPointPresent,
       
 11862 		/**Indicates EllipsoidPoint with uncertainty circle is populated*/
       
 11863 		EEllipsoidPointUncertCirclePresent,
       
 11864 		/**Indicates EllipsoidPoint with uncertainty ellipse is populated*/
       
 11865 		EEllipsoidPointUncertEllipsePresent,
       
 11866 		/**Indicates EllipsoidPoint with altitude is populated*/
       
 11867 		EEllipsoidPointAltitudePresent,
       
 11868 		/**Indicates EllipsoidPoint with altitude and ellipse is populated*/
       
 11869 		EEllipsoidPointAltEllipsePresent,
       
 11870 		};
       
 11871 
       
 11872 	/**This enum contains the possible types of velocity estimates*/
       
 11873 	enum TVelEstimate
       
 11874 		{
       
 11875 		/**Velocity Estimate Unknown*/
       
 11876 		EVelEstimateUnknown,
       
 11877 		/**Velocity Estimate is not present*/
       
 11878 		EVelEstimateNotPresent,
       
 11879 		/**Horizontal velocity is included*/
       
 11880 		EHorzVelPresent,
       
 11881 		/**Horizontal and vertical velocity is included*/
       
 11882 		EHorzWithVertVelPresent,
       
 11883 		/**Horizontal velocity with uncertainty is included*/
       
 11884 		EHorzVelWithUncertPresent,
       
 11885 		/**Horizontal and vertical velocity with uncertainty is included*/
       
 11886 		EHorzWithVertVelAndUncertPresent,
       
 11887 		};
       
 11888 
       
 11889 	/**This contains the measurement quantities of the UE*/
       
 11890 	union TMeasurementQuantityV1
       
 11891 		{
       
 11892 	public:
       
 11893 		/**
       
 11894 		@see 3GPP TS 25.133.
       
 11895 		@see 3GPP TS 25.123.
       
 11896 		*/
       
 11897 		TUint8	iCpichEcN0;
       
 11898 		/**
       
 11899 		@see 3GPP TS 25.133.
       
 11900 		@see 3GPP TS 25.123.
       
 11901 		*/
       
 11902 		TUint8	iCpichRscp;
       
 11903 		/**Measurement path loss in dB.*/
       
 11904 		TUint8	iPathLoss;
       
 11905 		/**Extra for future use*/
       
 11906 		TBool	iSpare;
       
 11907 		};
       
 11908 
       
 11909 	/**This class contains the current cell informations in TDD mode*/
       
 11910 	class TTddV1
       
 11911 		{
       
 11912 	public:
       
 11913 		/**
       
 11914 		Time slot Interference on Signal Code Power
       
 11915 		@see 3GPP TS 25.123
       
 11916 		*/
       
 11917 		TUint8	iTimeSlotIscp;
       
 11918 		/**Primary Common Control Physical CHannel received signal code power*/
       
 11919 		TUint8	iPrimaryCcpchRscp;
       
 11920 		};
       
 11921 
       
 11922 	/**This class contains the information in FDD mode*/
       
 11923 	class TFddV1
       
 11924 		{
       
 11925 	public:
       
 11926 		/**Holds the measurement quantities of the UE*/
       
 11927 		TMeasurementQuantityV1	iMeasurementQuantity;
       
 11928 		/**Holds the field that would be populated in iMeasurementQuantity*/
       
 11929 		TMeasQnty	iMeasQntyStatus;
       
 11930 		};
       
 11931 
       
 11932 	/**This contains the current cell information in specific modes - FDD/TDD*/
       
 11933 	union TCurrentCellV1 
       
 11934 		{
       
 11935 		/**Current cell information in FDD mode*/
       
 11936 		TFddV1	iFdd;
       
 11937 		/**Current cell information in TDD mode*/
       
 11938 		TTddV1	iTdd;
       
 11939 		};
       
 11940 
       
 11941 	/**This contains the type of sfn-sfn observed time difference*/
       
 11942 	union TSfnSfnObsTimeDifferenceV1
       
 11943 		{
       
 11944 		/**Sfn-Sfn observed time difference -type1*/
       
 11945 		TUint16	iSfnSfnObsTimeDiff1;
       
 11946 		/**Sfn-Sfn observed time difference -type2*/
       
 11947 		TUint16	iSfnSfnObsTimeDiff2;
       
 11948 		};
       
 11949 
       
 11950 	/**This class contains the FDD mode information of monitored cells*/
       
 11951 	class TMonitoredCellFddV1
       
 11952 		{
       
 11953 	public:
       
 11954 		/**Primary Common Control Physical CHannel information*/
       
 11955 		TUint16		iPrimaryCpichInfo;
       
 11956 		/**Holds the measurement quantities of the UE*/
       
 11957 		TMeasurementQuantityV1 iMeasurementQuantity;
       
 11958 		/**Holds the field that would be populated in iMeasurementQuantity*/
       
 11959 		TMeasQnty	iMeasQntyStatus;
       
 11960 		};
       
 11961 
       
 11962 	/**This class contains the TDD mode information of monitored cells*/
       
 11963 	class TMonitoredCellTddV1
       
 11964 		{
       
 11965 	public:
       
 11966 		/**Cell identification*/
       
 11967 		TUint8	iCellParametersID;
       
 11968 		/**Primary Common Control Physical CHannel received signal code power*/
       
 11969 		TUint8	iPrimaryCcpchRscp;
       
 11970 		};
       
 11971 
       
 11972 	/**This contains the monitored cells information in specific mode -  FDD/TDD*/
       
 11973 	union TMonitoredCellModeSpecificInfoV1
       
 11974 		{
       
 11975 		/**Monitored Cell information in FDD mode*/
       
 11976 		TMonitoredCellFddV1	iMonitoredCellFdd;
       
 11977 		/**Monitored Cell information in TDD mode*/
       
 11978 		TMonitoredCellTddV1	iMonitoredCellTdd;
       
 11979 		};
       
 11980 
       
 11981 	/**This class contains the measured results for monitored cells on Random Access Channel*/
       
 11982 	class TMonitoredCellRachResultV1
       
 11983 		{
       
 11984 	public:
       
 11985 		/**Holds the sfn-sfn observed time difference*/
       
 11986 		TSfnSfnObsTimeDifferenceV1 iSfnSfnObsTimeDiff;
       
 11987 		/**Holds the monitored cells specific info mode - FDD/TDD*/
       
 11988 		TMonitoredCellModeSpecificInfoV1 iMonitoredCellModeSpecificInfo;
       
 11989 		/**ETrue indicates iMonitoredCellModeSpecificInfo is iMonitoredCellFdd.
       
 11990 		EFalse indicates iMonitoredCellModeSpecificInfo is iMonitoredCellTdd*/
       
 11991 		TBool	iSfnSfnObsTimeDiffStatus;
       
 11992 		};
       
 11993 	/**
       
 11994 	Horizontal velocity is characterised by the horizontal speed and bearing. 
       
 11995 	The horizontal speed gives the magnitude of the horizontal component of the velocity of a UE. 
       
 11996 	The bearing provides the direction of the horizontal component of velocity taken clockwise from North.
       
 11997 	@see 3GPP TS 23.032
       
 11998 	*/
       
 11999 	class THorzVelocityV1
       
 12000 		{
       
 12001 	public:
       
 12002 		/**The direction of movement is given in degrees where '0' represents North, '90' represents East, etc.*/
       
 12003 		TUint16		iBearing;
       
 12004 		/**The horizontal speed gives the magnitude of the horizontal component of the velocity of a UE*/
       
 12005 		TUint16		iHorzSpeed;
       
 12006 		};
       
 12007 
       
 12008 	/**This enum holds vertical speed direction*/
       
 12009 	enum TVertSpeedDirection
       
 12010 		{
       
 12011 		/**Speed direction unknown*/
       
 12012 		ESpeedDirectionUnknown,
       
 12013 		/**Upward direction*/
       
 12014 		EUpward,
       
 12015 		/**Downward direction*/
       
 12016 		EDownward
       
 12017 		};
       
 12018 
       
 12019 	/**
       
 12020 	Horizontal velocity is characterised by the horizontal speed and bearing. 
       
 12021 	The horizontal speed gives the magnitude of the horizontal component of the velocity of a UE. 
       
 12022 	The vertical speed and direction provides the component of velocity of a UE in a vertical direction.
       
 12023 	The bearing provides the direction of the horizontal component of velocity taken clockwise from North.
       
 12024 	@see 3GPP TS 23.032
       
 12025 	*/
       
 12026 	class THorzWithVertVelocityV1
       
 12027 		{
       
 12028 	public:
       
 12029 		/**Direction of vertical speed*/
       
 12030 		TVertSpeedDirection	iVertSpeedDirection;
       
 12031 		/**The direction of movement is given in degrees where '0' represents North, '90' represents East, etc.*/
       
 12032 		TUint16		iBearing;
       
 12033 		/**The horizontal speed gives the magnitude of the horizontal component of the velocity of a UE*/
       
 12034 		TUint16		iHorzSpeed;
       
 12035 		/**The vertical speed and direction provides the component of velocity of a UE in a vertical direction.*/
       
 12036 		TUint8		iVertSpeed;
       
 12037 		};
       
 12038 
       
 12039 	/**
       
 12040 	Horizontal velocity with uncertainty is characterised by a horizontal speed and bearing,
       
 12041 	giving a horizontal velocity vector V, and an uncertainty speed s.
       
 12042 	@see 3GPP TS 23.032
       
 12043 	*/
       
 12044 	class THorzVelocityWithUncertaintyV1
       
 12045 		{
       
 12046 	public:
       
 12047 		/**	The direction of movement is given in degrees where '0' represents North, '90' represents East, etc.*/
       
 12048 		TUint16		iBearing;
       
 12049 		/**The horizontal speed gives the magnitude of the horizontal component of the velocity of a UE*/
       
 12050 		TUint16		iHorzSpeed;
       
 12051 		/**
       
 12052 		Horizontal speed uncertainty.
       
 12053 		*/
       
 12054 		TUint8		iHorzSpeedUncertainty;
       
 12055 		};
       
 12056 
       
 12057 	/**
       
 12058 	Horizontal and vertical velocity with uncertainty is characterised by a horizontal speed and bearing, 
       
 12059 	giving a horizontal velocity vector Vx,y, a vertical speed and direction giving a vertical velocity component Vz,
       
 12060 	and uncertainty speeds s1 and s2. 
       
 12061 	@see 3GPP TS 23.032
       
 12062 	*/
       
 12063 	class THorzWithVertVelocityAndUncertaintyV1
       
 12064 		{	
       
 12065 	public:
       
 12066 		/**
       
 12067 		The direction of movement is given in degrees where '0' represents North, '90' represents East, etc.
       
 12068 		*/
       
 12069 		TUint16		iBearing;
       
 12070 		/**The horizontal speed gives the magnitude of the horizontal component of the velocity of a UE*/
       
 12071 		TUint16		iHorzSpeed;
       
 12072 		/**The vertical speed and direction provides the component of velocity of a UE in a vertical direction.*/
       
 12073 		TUint8		iVertSpeed;
       
 12074 		/**Horizontal speed uncertainty.*/
       
 12075 		TUint8		iHorzSpeedUncertainty;
       
 12076 		};
       
 12077 
       
 12078 	/**
       
 12079 	This class contains the possible ways of velocity estimates
       
 12080 	@see 3GPP TS 23.032
       
 12081 	*/
       
 12082 	union TVelocityEstimateV1
       
 12083 		{
       
 12084 		/**Horizontal velocity*/
       
 12085 		THorzVelocityV1					iHorzVelocity;
       
 12086 		/**Horizontal velockity and vertical velocity*/
       
 12087 		THorzWithVertVelocityV1			iHorzWithVertVelocity;
       
 12088 		/**Horizontal velocity with uncertainty*/
       
 12089 		THorzVelocityWithUncertaintyV1	iHorzVelocityWithUncertainty;
       
 12090 		/**Horizontal and vertical velocity with uncertainty*/
       
 12091 		THorzWithVertVelocityAndUncertaintyV1	iHorzWithVertVelocityAndUncertainty;
       
 12092 		};
       
 12093 
       
 12094 	/**This class contains the measured results on Random Access Channel*/
       
 12095 	class TMeasuredResultsOnRachV1
       
 12096 		{
       
 12097 	public:
       
 12098 		/**Current cell information*/
       
 12099 		TCurrentCellV1	iCurrentCell;
       
 12100 		/**Monitored Cell information*/
       
 12101 		TMonitoredCellRachResultV1	iMonitoredCellsRachList[KMaxMonitoredCells];
       
 12102 		/**ETrue indicates iCurrentCell is iFdd.
       
 12103 		EFalse indicates iCurrentCell is iTdd*/
       
 12104 		TBool	iCurrentCellStatus;
       
 12105 		};
       
 12106 
       
 12107 	/**
       
 12108 	Identifies the channel in combination with the Midamble shift and slot number.
       
 12109 	It is not used in 1.28 Mcps TDD and may be set to either value and should be ignored by the receiver.
       
 12110 	*/
       
 12111 	enum TBurstType
       
 12112 		{
       
 12113 		/**Burst type 1*/
       
 12114 		EType1,
       
 12115 		/**Burst type 2*/
       
 12116 		EType2
       
 12117 		};
       
 12118 
       
 12119 	/**This class contains UE positioning estimates specific to TDD*/
       
 12120 	class TPosEstimateTddV1
       
 12121 		{
       
 12122 	public:
       
 12123 		/**Identifies the channel in combination with the Midamble shift and slot number.*/
       
 12124 		TBurstType	iBurstType;
       
 12125 		/**Midamble shift*/
       
 12126 		TUint8	iMidambleShift;
       
 12127 		/**
       
 12128 		This member data is present only if no IPDL scheme is configured in the reference cell.
       
 12129 		Otherwise the slot is defined by the IPDL configuration.
       
 12130 		*/
       
 12131 		TUint8	iTimeSlotNumber;
       
 12132 		/**
       
 12133 		Cell identification
       
 12134 		*/
       
 12135 		TUint8	iCellParametersID;
       
 12136 		};
       
 12137 
       
 12138 	/**This class contains UE positioning estimates specific to FDD/TDD*/
       
 12139 	union TPosEstimateModeSpecificInfoV1
       
 12140 		{
       
 12141 		/**Identifies the reference cell for the GPS TOW-SFN relationship.*/
       
 12142 		TUint16		iPrimaryCpichInfo;
       
 12143 		/**Holds the cell and channel identification*/
       
 12144 		TPosEstimateTddV1	iCellAndChannelID;
       
 12145 		};
       
 12146 
       
 12147 	/**This class contains the cell timing information*/
       
 12148 	class TCellTimingV1
       
 12149 		{
       
 12150 	public:
       
 12151 		/**
       
 12152 		SFN during which the position was calculated.
       
 12153 		*/
       
 12154 		TUint16		iSfn;
       
 12155 		/**Holds the UE positioning estimates specific to mode - FDD or TDD*/
       
 12156 		TPosEstimateModeSpecificInfoV1	iPosEstimateModeSpecificInfo;
       
 12157 		/**ETrue indicates iPosEstimateModeSpecificInfo is iPrimaryCpichInfo.
       
 12158 		EFalse indicates iPosEstimateModeSpecificInfo is iCellAndChannelID.*/
       
 12159 		TBool	iPosEstimateModeStatus;
       
 12160 		};
       
 12161 
       
 12162 	/**This class captures the GPS measurement specific to FDD or TDD*/
       
 12163 	union TGpsMeasModeSpecificInfoV1
       
 12164 		{
       
 12165 		/**Frequency Division Duplex identification*/
       
 12166 		TUint16	iFddRefID;
       
 12167 		/**Time Division Duplex identification*/
       
 12168 		TUint8	iTddRefID;
       
 12169 		};
       
 12170 
       
 12171 	/**This class contains results of the GPS reference time*/
       
 12172 	class TUtranGpsRefTimeResultV1
       
 12173 		{
       
 12174 	public:
       
 12175 		/**UE-GPS timing of cell ms-part*/
       
 12176 		TUint16		iMsPart;
       
 12177 		/**UE-GPS timing of cell ls-part*/
       
 12178 		TUint16		iLsPart;
       
 12179 		/**Holds the GPS measurement specific to FDD or TDD*/
       
 12180 		TGpsMeasModeSpecificInfoV1	iGpsMeasModeSpecificInfo;
       
 12181 		/**Cell System Frame Number*/
       
 12182 		TUint16		iSfn;
       
 12183 		/**ETrue indicates iGpsMeasModeSpecificInfo is iFddRefID. 
       
 12184 		 EFalse indicates iGpsMeasModeSpecificInfo is iTddRefID*/
       
 12185 		TBool	iGpsMeasModeStatus;
       
 12186 		};
       
 12187 
       
 12188 	/**This union contains the UE positioning reference time*/
       
 12189 	union TPosReferenceTimeV1
       
 12190 		{
       
 12191 		/**Contains the results of GPS reference time*/
       
 12192 		TUtranGpsRefTimeResultV1	iUtranGpsRefTimeResult;
       
 12193 		/**Contains the GPS reference time*/
       
 12194 		TUint16		iGpsRefTimeOnly;
       
 12195 		};
       
 12196 	
       
 12197 	/**
       
 12198 	This class contains the information of ellipsoid.
       
 12199 	It consists of a latitude and a longitude.
       
 12200 	@see 3GPP TS 23.032
       
 12201 	*/
       
 12202 	class TEllipsoidPointV1
       
 12203 		{
       
 12204 	public:
       
 12205 		/**Specifies the sign - North/South*/
       
 12206 		TLatitudeSign	iLatitudeSign;
       
 12207 		/**
       
 12208 		A north/south angular measurement of position relative to the equator, 
       
 12209 		in the meridian plane which contains the earth's rotation axis
       
 12210 		*/
       
 12211 		TUint16	iLatitude;
       
 12212 		/**
       
 12213 		An east/west angular measurement of position in relation to the Prime Meridian. 
       
 12214 		The angle between the two great circles, one being the Prime (or Greenwich) Meridian 
       
 12215 		and the other a meridian passing through the point of interest.
       
 12216 		*/
       
 12217 		TInt16	iLongitude;
       
 12218 		};
       
 12219 
       
 12220 	/**
       
 12221 	It is characterised by the co-ordinates of an ellipsoid point (the origin) and a distance r
       
 12222 	@see 3GPP TS 23.032
       
 12223 	*/
       
 12224 	class TEllipsoidPointUncertCircleV1
       
 12225 		{
       
 12226 	public:
       
 12227 		/**Specifies the sign - North/South*/
       
 12228 		TLatitudeSign	iLatitudeSign;
       
 12229 		/**
       
 12230 		A north/south angular measurement of position relative to the equator, 
       
 12231 		in the meridian plane which contains the earth's rotation axis
       
 12232 		*/
       
 12233 		TUint16	iLatitude;
       
 12234 		/**
       
 12235 		An east/west angular measurement of position in relation to the Prime Meridian. 
       
 12236 		The angle between the two great circles, one being the Prime (or Greenwich) Meridian 
       
 12237 		and the other a meridian passing through the point of interest.
       
 12238 		*/
       
 12239 		TInt16	iLongitude;
       
 12240 		/**Uncertainty code*/
       
 12241 		TUint8	iUncertaintyCode;
       
 12242 		};
       
 12243 
       
 12244 	/**
       
 12245 	It is characterised by the co-ordinates of an ellipsoid point (the origin), 
       
 12246 	distances r1 and r2 and an angle of orientation A
       
 12247 	@see 3GPP TS 23.032
       
 12248 	*/
       
 12249 	class TEllipsoidPointUncertEllipseV1
       
 12250 		{
       
 12251 	public:
       
 12252 		/**Specifies the sign - North/South*/
       
 12253 		TLatitudeSign	iLatitudeSign;
       
 12254 		/**
       
 12255 		A north/south angular measurement of position relative to the equator, 
       
 12256 		in the meridian plane which contains the earth's rotation axis
       
 12257 		*/
       
 12258 		TUint16	iLatitude;
       
 12259 		/**
       
 12260 		An east/west angular measurement of position in relation to the Prime Meridian. 
       
 12261 		The angle between the two great circles, one being the Prime (or Greenwich) Meridian 
       
 12262 		and the other a meridian passing through the point of interest.
       
 12263 		*/
       
 12264 		TInt16	iLongitude;
       
 12265 		/**Uncertainty semi major axis*/
       
 12266 		TUint8	iUncertaintySemiMajor;
       
 12267 		/**Uncertainty semi minor axis*/
       
 12268 		TUint8	iUncertaintySemiMinor;
       
 12269 		/**Orientation of major axis*/
       
 12270 		TUint8	iOrientationMajorAxis;
       
 12271 		/**The confidence by which the position of a target entity is known to be within the shape description*/
       
 12272 		TUint8	iConfidence;
       
 12273 		};
       
 12274 
       
 12275 	/**
       
 12276 	The description of an ellipsoid point with altitude is that of a point at a specified distance 
       
 12277 	above or below a point on the earth's surface. This is defined by an ellipsoid point 
       
 12278 	with the given longitude and latitude and the altitude above or below the ellipsoid point.
       
 12279 	@see 3GPP TS 23.032
       
 12280 	*/
       
 12281 	class TEllipsoidPointAltitudeV1
       
 12282 		{
       
 12283 	public:
       
 12284 		/**Specifies the sign - North/South*/
       
 12285 		TLatitudeSign	iLatitudeSign;
       
 12286 		/**
       
 12287 		A north/south angular measurement of position relative to the equator, 
       
 12288 		in the meridian plane which contains the earth's rotation axis
       
 12289 		*/
       
 12290 		TUint16	iLatitude;
       
 12291 		/**
       
 12292 		An east/west angular measurement of position in relation to the Prime Meridian. 
       
 12293 		The angle between the two great circles, one being the Prime (or Greenwich) Meridian 
       
 12294 		and the other a meridian passing through the point of interest.
       
 12295 		*/
       
 12296 		TInt16	iLongitude;
       
 12297 		/**Direction of altitude*/
       
 12298 		TAltDirection	iAltDirection;
       
 12299 		/**Degree of altitude*/
       
 12300 		TUint16	iAltitude;
       
 12301 		};
       
 12302 	
       
 12303 	/**
       
 12304 	characterised by the co-ordinates of an ellipsoid point with altitude, distances r1 (the "semi-major uncertainty"),
       
 12305 	r2 (the "semi-minor uncertainty") and r3 (the "vertical uncertainty") and an angle of orientation A 
       
 12306 	(the "angle of the major axis")
       
 12307 	@see 3GPP TS 23.032
       
 12308 	*/
       
 12309 	class TEllipsoidPointAltitudeEllipseV1
       
 12310 		{
       
 12311 	public:
       
 12312 		/**Specifies the sign - North/South*/
       
 12313 		TLatitudeSign	iLatitudeSign;
       
 12314 		/**
       
 12315 		A north/south angular measurement of position relative to the equator, 
       
 12316 		in the meridian plane which contains the earth's rotation axis
       
 12317 		*/
       
 12318 		TUint16	iLatitude;
       
 12319 		/**
       
 12320 		An east/west angular measurement of position in relation to the Prime Meridian. 
       
 12321 		The angle between the two great circles, one being the Prime (or Greenwich) Meridian 
       
 12322 		and the other a meridian passing through the point of interest.
       
 12323 		*/
       
 12324 		TInt16	iLongitude;
       
 12325 		/**Direction of altitude*/
       
 12326 		TAltDirection	iAltDirection;
       
 12327 		/**Degree of latitude*/
       
 12328 		TUint16	iAltitude;
       
 12329 		/**Uncertainty semi major axis*/
       
 12330 		TUint8	iUncertaintySemiMajor;
       
 12331 		/**Uncertainty semi minor axis*/
       
 12332 		TUint8	iUncertaintySemiMinor;
       
 12333 		/**Orientation of major axis*/
       
 12334 		TUint8	iOrientationMajorAxis;
       
 12335 		/**The confidence by which the position of a target entity is known to be within the shape description*/
       
 12336 		TUint8	iConfidence;
       
 12337 		};
       
 12338 
       
 12339 	/**This union holds the possible forms of position estimate of the UE that can be captured.*/
       
 12340 	union TPositionEstimateV1
       
 12341 		{
       
 12342 		/**
       
 12343 		The description of an ellipsoid point is that of a point
       
 12344 		on the surface of the ellipsoid, and consists of a latitude and a longitude.
       
 12345 		@see 3GPP TS 23.032
       
 12346 		*/
       
 12347 		TEllipsoidPointV1					iEllipsoidPoint;
       
 12348 		/**
       
 12349 		It is characterised by the co-ordinates of an ellipsoid point (the origin) and a distance r
       
 12350 		@see 3GPP TS 23.032
       
 12351 		*/
       
 12352 		TEllipsoidPointUncertCircleV1		iEllipsoidPointUncertCircle;
       
 12353 		/**
       
 12354 		It is characterised by the co-ordinates of an ellipsoid point (the origin), 
       
 12355 		distances r1 and r2 and an angle of orientation A
       
 12356 		@see 3GPP TS 23.032
       
 12357 		*/
       
 12358 		TEllipsoidPointUncertEllipseV1		iEllipsoidPointUncertEllipse;
       
 12359 		/**
       
 12360 		The description of an ellipsoid point with altitude is that of a point at a specified distance 
       
 12361 		above or below a point on the earth's surface. This is defined by an ellipsoid point 
       
 12362 		with the given longitude and latitude and the altitude above or below the ellipsoid point.
       
 12363 		@see 3GPP TS 23.032
       
 12364 		*/
       
 12365 		TEllipsoidPointAltitudeV1			iEllipsoidPointAltitude;
       
 12366 		/**
       
 12367 		characterised by the co-ordinates of an ellipsoid point with altitude, distances r1 (the "semi-major uncertainty"),
       
 12368 		r2 (the "semi-minor uncertainty") and r3 (the "vertical uncertainty") and an angle of orientation A 
       
 12369 		(the "angle of the major axis")
       
 12370 		@see 3GPP TS 23.032
       
 12371 		*/
       
 12372 		TEllipsoidPointAltitudeEllipseV1	iEllipsoidPointAltitudeEllipsoide;
       
 12373 		};
       
 12374 
       
 12375 	/**This contains the positioning estimate reference time*/
       
 12376 	union TPosEstimateRefTime
       
 12377 		{
       
 12378 		/**Contains results of the GPS reference time*/
       
 12379 		TUtranGpsRefTimeResultV1	iUtranGpsRefTimeResult;
       
 12380 		/**Contains the GPS reference time */
       
 12381 		TUint16		iGpsRefTimeOnly;
       
 12382 		/**Contains the cell timing*/
       
 12383 		TCellTimingV1	iCellTiming;
       
 12384 		};
       
 12385 
       
 12386 	/**
       
 12387 	Provides the position estimate from the UE to the network, 
       
 12388 	if the UE is capable of determining its own position.
       
 12389 	*/
       
 12390 	class TUePosPositionEstimateInfoV1
       
 12391 		{
       
 12392 	public:
       
 12393 		/**UE positioning estimate reference time*/
       
 12394 		TPosEstimateRefTime	iPosEstimateRefTime;
       
 12395 		/**Holds the UE's position estimate
       
 12396 		@see TPositionEstimateV1
       
 12397 		*/
       
 12398 		TPositionEstimateV1	iPostionEstimate;
       
 12399 		/**Holds the field that would be populated in iPosEstimateRefTime*/
       
 12400 		TPosEstimateInfo	iPosEstimateRefTimeStatus;
       
 12401 		/**Holds the field that would be populated in iPosEstimate*/
       
 12402 		TPosEstimateInfo	iPosEstimateStatus;
       
 12403 		};
       
 12404 	
       
 12405 	/**This enum contains the multipath indicators*/
       
 12406 	enum TMultipathIndicator
       
 12407 		{
       
 12408 		/**
       
 12409 		Multipath indicator unknown
       
 12410 		This is an invalid indicator. 
       
 12411 		*/
       
 12412 		EMPUnknown,
       
 12413 		/**Not measured*/
       
 12414 		ENm,
       
 12415 		/**MP error < 5m*/
       
 12416 		ELow,
       
 12417 		/**5m < MP error < 43m*/
       
 12418 		EMedium,
       
 12419 		/**MP error > 43m*/
       
 12420 		EHigh
       
 12421 		};
       
 12422 
       
 12423 	/**This class contains the GPS measurement parameters of the UE*/
       
 12424 	class TGpsMeasMeasurementParamV1
       
 12425 		{
       
 12426 	public:
       
 12427 		/**Satellite Identification*/
       
 12428 		TUint8		iSatID;
       
 12429 		/**
       
 12430 		The estimate of the carrier-to-noise ratio of the received signal from the particular 
       
 12431 		satellite used in the measurement. It is given in units of dB-Hz (typical levels will 
       
 12432 		be in the range of 20 - 50 dB-Hz).
       
 12433 		*/
       
 12434 		TUint8		iCN0;
       
 12435 		/**
       
 12436 		It is the instantaneous frequency difference between the receiver's internal oscillator 
       
 12437 		and the received carrier from the satellite. Hz, scale factor 0.2.
       
 12438 		*/
       
 12439 		TInt16		iDoppler;
       
 12440 		/**
       
 12441 		Unit in GPS chips.
       
 12442 		Whole value of the UE GPS code-phase measurement, where increasing binary values of the field 
       
 12443 		signify increasing measured pseudoranges.
       
 12444 		*/
       
 12445 		TUint16		iWholeGpsChips;
       
 12446 		/**
       
 12447 		The UE GPS code-phase measurement is divided into the fields "Whole GPS Chips" and "Fractional GPS Chips".
       
 12448 		Scale factor 2-10 Fractional value of the UE GPS code-phase measurement.
       
 12449 		*/
       
 12450 		TUint16		iFractionalGpsChips;
       
 12451 		/**
       
 12452 		Contains the possible multipath indicators. Multipath error is usually caused by one path being bounced or 
       
 12453 		reflected. The impact on a pseudo-range measurement may be up to a few metres. In the case of carrier phase,
       
 12454 		this is of the order of a few centimetres.
       
 12455 		*/
       
 12456 		TMultipathIndicator	iMultipathIndicator;
       
 12457 		/**
       
 12458 		A distance measurement based on the correlation of a satellite's transmitted code (may be the C/A-Code or 
       
 12459 		the encrypted P-Code) and the local receiver's reference code (for that PRN satellite number), 
       
 12460 		that has not been corrected for errors in synchronisation between the transmitter's clock and the receiver's clock.
       
 12461 		Hence a pseudo-range measurement is a time-error biased distance measurement.
       
 12462 		*/
       
 12463 		TUint8		iPseudorangeRmsError;
       
 12464 		};
       
 12465 
       
 12466 	/**This class contains the GPS measurement parameters and the positioning reference time*/
       
 12467 	class TUePosGpsMeasurementResultsV1
       
 12468 		{
       
 12469 	public:
       
 12470 		/**UE positioning reference time*/
       
 12471 		TPosReferenceTimeV1	iPosGpsMeasRefTime;
       
 12472 		/**Holds the GPS measurement parameters from all the active satellites*/
       
 12473 		TGpsMeasMeasurementParamV1	iGpsMeasurementParamList[KMaxSat];
       
 12474 		/**ETrue indicates TPosReferenceTimeV1::iUtranGpsRefTimeResult is populated. 
       
 12475 		 EFalse indicates TPosReferenceTimeV1::iGpsRefTimeOnly is populated*/
       
 12476 		TBool	iPosGpsMeasRefTimeStatus;
       
 12477 		};
       
 12478 
       
 12479 	/**
       
 12480 	This enum lists all the possible errors that UE can report to the network
       
 12481 	*/
       
 12482 	enum TPosErrorCause
       
 12483 		{
       
 12484 		/**
       
 12485 		Error Cause Unknown. This is an invalid error cause and is set if the UE does not set with 
       
 12486 		any of the underlying valid error causes
       
 12487 		*/
       
 12488 		EErrorCauseUnknown,
       
 12489 		/**Indicates that enought number of GPS satellites are healthy and active.*/
       
 12490 		ENotEnoughGpsSatellites,
       
 12491 		/**Assistance data required to compute location of the UE is missing in the measurement control.
       
 12492 		If the Additional data request flag is true in the measurement control only then additional assistance
       
 12493 		data can be requested otherwise measurements need to be done using the existing assistance data
       
 12494 		@see TGpsAddlAssistDataReqV1
       
 12495 		@see TUePosReportingQuantityV1
       
 12496 		 */
       
 12497 		EAssistanceDataMissing,
       
 12498 		/**
       
 12499 		Cell Frames Timings are not accomplished
       
 12500 		*/
       
 12501 		ENotAccomplishedGpsTimingOfCellFrames,
       
 12502 		/**
       
 12503 		UE can set this error in case other than the above mentioned is encountered 
       
 12504 		*/
       
 12505 		EUndefinedError,
       
 12506 		/**
       
 12507 		UE denies Location information
       
 12508 		*/
       
 12509 		ERequestDeniedByUser,
       
 12510 		};
       
 12511 
       
 12512 	/**
       
 12513 	This class contains the positioning errors that might have encountered during 
       
 12514 	measurement of location of the UE.
       
 12515 	*/
       
 12516 	class TUePosError
       
 12517 		{
       
 12518 	public:
       
 12519 		/**Indicates the error cause encountered while computing GPS Assistance data*/
       
 12520 		TPosErrorCause		iPosErrorCause;
       
 12521 		/**If error cause is "Assistance Data Missing" and iAddlAssistanceDataReq is set to ETrue then
       
 12522 		then this member shall indicate what additional assistance data is needed.
       
 12523 		If iAddlAssistanceDataReq is set to EFalse then existing assistance data is used to compute location
       
 12524 		information of the UE.
       
 12525 		@see TUePosReportingQuantityV1::iAddlAssistanceDataReq*/
       
 12526 		TGpsAddlAssistDataReqV1	iGpsAddlAssistDataReq;
       
 12527 		};
       
 12528 
       
 12529 	/**
       
 12530 	This class contains the measurement results computed by the UE.
       
 12531 	*/
       
 12532 	class TUePosMeasuredResultsV1
       
 12533 		{
       
 12534 	public:
       
 12535 		/**The purpose of this is to provide the position estimate from the UE to the network, 
       
 12536 		if the UE is capable of determining its own position.*/
       
 12537 		TUePosPositionEstimateInfoV1	iUePosPositionEstimateInfo;
       
 12538 		/**Contains the GPS measurement parameters and the positioning reference time*/
       
 12539 		TUePosGpsMeasurementResultsV1	iUePosGpsMeasurement;
       
 12540 		/**Indicates the error cause and/or additional assistance data is required*/
       
 12541 		TUePosError						iUePosError;
       
 12542 		/**
       
 12543 		ETrue indicates some error has encountered. iUePosError will be populated.
       
 12544 		EFalse indicates Gps Assistance Data is received and no error has encountered while processing.
       
 12545 		Hence iUePosPositionEstimateInfo and iUePosGpsMeasurement will be populated
       
 12546 		*/
       
 12547 		TBool	iPosErrorStatus;
       
 12548 		};
       
 12549 
       
 12550 	/**Contains the measured location information of the UE*/
       
 12551 	union TMeasuredResultsV1
       
 12552 		{
       
 12553 		/**
       
 12554 		This member either contains the measurement results or the error that might have 
       
 12555 		encountered during measurements.
       
 12556 		*/
       
 12557 		TUePosMeasuredResultsV1		iTUePosMeasuredResults;
       
 12558 		/**
       
 12559 		A spare member for future use.
       
 12560 		*/
       
 12561 		TBool						iSpare;
       
 12562 		};
       
 12563 
       
 12564 	/**
       
 12565 	This class contains the measurement report expected as response to the measurement control sent by the 
       
 12566 	network. Veloctiy estimates are included if requested in measurement control.
       
 12567 	*/
       
 12568 	class TMeasurementReportV7 : public RMobilePhone::TMultimodeType
       
 12569 		{
       
 12570 	public:
       
 12571 		IMPORT_C TMeasurementReportV7();
       
 12572 	public:
       
 12573 		/**A reference number that should be used by the UTRAN when setting up, 
       
 12574 		modifying or releasing the measurement and by the UE in the measurement report.
       
 12575 		*/
       
 12576 		TUint8 iMeasurementIdentity;
       
 12577 		/**Contains the measured location information of the UE*/
       
 12578 		TMeasuredResultsV1 iMeasuredResults;
       
 12579 		/**Contains the measured results on Random Access Channel*/
       
 12580 		TMeasuredResultsOnRachV1	iMeasuredResultsOnRach;
       
 12581 		/**Contains the velocity estimates of the UE*/
       
 12582 		TVelocityEstimateV1		iVelocityEstimate;
       
 12583 		/**
       
 12584 		Indicates the populated member in iVelocityEstimate if velocity estimate is computed.
       
 12585 		Otherwise indicates that velocity estimate is not computed.
       
 12586 		*/
       
 12587 		TVelEstimate	iVelEstimateStatus;
       
 12588 		};
       
 12589 	/**
       
 12590 	A typedef'd packaged TMeasurementReportV7 for passing through a
       
 12591 	generic API method.
       
 12592 
       
 12593 	@internalAll
       
 12594 	*/
       
 12595 	typedef TPckg<TMeasurementReportV7> TMeasurementReportV7Pckg;
       
 12596 	
       
 12597 	//*********************************************//	
       
 12598 	//  Measurement Control Failure data structure //
       
 12599 	//*********************************************//
       
 12600 
       
 12601 	/**
       
 12602 	This enum contains the list of errors that the UE can specify.
       
 12603 	The Measurement control failure is caused only when the the UE 
       
 12604 	cannot initiate a measurement as instructed by the network.
       
 12605 	*/
       
 12606 	enum TMeasurementControlFailure
       
 12607 		{
       
 12608 		/**
       
 12609 		Unknown Measurement Control Failure.
       
 12610 		This is an invalid failure state whic will be set if the UE does not set with the 
       
 12611 		underlying valid error reasons.
       
 12612 		*/
       
 12613 		EControlFailureUnknown,
       
 12614 		/**Indicates ASN1.0 encoding is incorrect*/
       
 12615 		EAsn1ViolationOrEncoding,
       
 12616 		/**Messsgae type specified is not existent*/
       
 12617 		EMsgTypeNonExistent,
       
 12618 		/**Message is not compatible*/
       
 12619 		EMsgNotCompatibleWithReceiverState,
       
 12620 		/**Information sent cannot be understood*/
       
 12621 		EIeValueNotComprehend,
       
 12622 		/**Information expected is not present*/
       
 12623 		EInformationElementMissing,
       
 12624 		/*Message extension cannot be understood*/
       
 12625 		EMsgExtnNotComprehend
       
 12626 		}; 
       
 12627 		
       
 12628 	/**
       
 12629 	This enum contains the possible domains used by MOLR 
       
 12630 	*/
       
 12631 	enum TDomain
       
 12632    		{
       
 12633 		/**Packet switch domain is the default domain that will be used by Molr*/
       
 12634    		EPacketSwitchedDomain,
       
 12635 		/**UE shall set the domain to Circuit switch whenever Molr is intended to use it*/
       
 12636   	 	ECircuitSwitchedDomain
       
 12637    		};
       
 12638 
       
 12639 	IMPORT_C void NotifyMtlr(TRequestStatus& aReqStatus,TDes8& aNotifyMtlr);
       
 12640 	IMPORT_C void SendMtlrResponse(TRequestStatus& aReqStatus,const TMtlrResponse aMtlrResponse);
       
 12641 	IMPORT_C void SendMtlrResponse(TRequestStatus& aReqStatus,const TMtlrError aMtlrResponse);
       
 12642 	IMPORT_C void SendMtlrResponse(TRequestStatus& aReqStatus,const TMtlrReject aMtlrResponse);
       
 12643     IMPORT_C void SendMolr(TRequestStatus& aReqStatus,const TDesC8& aStartMolr,TDes8& aMolrReturnResult);
       
 12644 	IMPORT_C void NotifyMeasurementControl(TRequestStatus& aReqStatus,TDes8& aMeasurementControl);
       
 12645 	IMPORT_C void SendMeasurementReport(TRequestStatus& aReqStatus,const TDesC8& aMeasurementReport);
       
 12646 	IMPORT_C void SendMeasurementReport(TRequestStatus& aReqStatus,const TMeasurementControlFailure aMeasurementControlFailure);
       
 12647 	IMPORT_C TInt SetLcsDomain(const TDomain aDomain);		
       
 12648 private:
       
 12649 	void ConstructL();
       
 12650 	void Destruct();
       
 12651 private:
       
 12652 	/**
       
 12653 	Pointer Holder for the RMobileLocationServices sub-session requests.
       
 12654 	*/
       
 12655 	CMobileLocationServicesPtrHolder* iMmPtrHolder;
       
 12656 	};
       
 12657 
       
 12658 class RTelHelper
       
 12659     {
       
 12660     public:
       
 12661     static RTelSubSessionBase::TCalledFunction GetCalledFunction();
       
 12662     static void SetCallStatus( RMobileCall::TMobileCallStatus aStatus );
       
 12663     static void SetCallEvent( RMobileCall::TMobileCallEvent aCallEvent );
       
 12664     static void SetConfEvent( RMobileConferenceCall::TMobileConferenceEvent aConfEvent );
       
 12665     static void SetConfStatus( RMobileConferenceCall::TMobileConferenceStatus aConfStatus );
       
 12666     static void SetCallDirection( RMobileCall::TMobileCallDirection aDirection );
       
 12667     static void SetCallEmergency( TBool aVal );
       
 12668     };
       
 12669 
       
 12670 #endif // __ETELMM_H__
       
 12671