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