epoc32/include/etelmm.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:27:01 +0100
branchSymbian2
changeset 3 e1b950c65cb4
parent 0 061f57f2323e
permissions -rw-r--r--
Attempt to represent the S^2->S^3 header reorganisation as a series of "hg rename" operations
williamr@2
     1
// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
williamr@2
     2
// All rights reserved.
williamr@2
     3
// This component and the accompanying materials are made available
williamr@2
     4
// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
williamr@2
     5
// which accompanies this distribution, and is available
williamr@2
     6
// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
williamr@2
     7
//
williamr@2
     8
// Initial Contributors:
williamr@2
     9
// Nokia Corporation - initial contribution.
williamr@2
    10
//
williamr@2
    11
// Contributors:
williamr@2
    12
//
williamr@2
    13
// Description:
williamr@2
    14
// Multimode ETel API header file.
williamr@2
    15
// Describes the MM ETel API - classes, methods and types.
williamr@2
    16
// 
williamr@2
    17
//
williamr@2
    18
williamr@2
    19
williamr@2
    20
williamr@2
    21
/**
williamr@2
    22
 @file
williamr@2
    23
 @publishedPartner
williamr@2
    24
 @released
williamr@2
    25
*/
williamr@2
    26
williamr@2
    27
#ifndef __ETELMM_H__
williamr@2
    28
#define __ETELMM_H__
williamr@2
    29
williamr@2
    30
#include <e32base.h>
williamr@2
    31
#include <s32mem.h>
williamr@2
    32
#include <etel.h>
williamr@2
    33
#include <etelmmcs.h>
williamr@2
    34
williamr@2
    35
williamr@2
    36
/** 
williamr@2
    37
Internal API/TSY delimiter used to pass the phonebook type
williamr@2
    38
*/
williamr@2
    39
#define PHBOOK_DELIMITER		_L("//")
williamr@2
    40
/** The size of the phone book delimiter string.
williamr@2
    41
@internalComponent
williamr@2
    42
 */
williamr@2
    43
const TInt KSizeOfPhbookDelimiter=2;
williamr@2
    44
williamr@2
    45
/**
williamr@2
    46
Names for Multimode ETel sub-sessions
williamr@2
    47
*/
williamr@2
    48
_LIT(KETelMeAdnPhoneBook,"S1");
williamr@2
    49
_LIT(KETelMeDialledPhoneBook,"S2");
williamr@2
    50
_LIT(KETelMeMissedPhoneBook,"S3");
williamr@2
    51
_LIT(KETelMeReceivedPhoneBook,"S4");
williamr@2
    52
_LIT(KETelCombinedAdnPhoneBook,"S5");
williamr@2
    53
_LIT(KETelTaAdnPhoneBook,"S6");
williamr@2
    54
_LIT(KETelIccAdnPhoneBook,"S7");
williamr@2
    55
_LIT(KETelIccFdnPhoneBook,"S8");
williamr@2
    56
_LIT(KETelIccSdnPhoneBook,"S9");
williamr@2
    57
_LIT(KETelIccBdnPhoneBook,"S10");
williamr@2
    58
_LIT(KETelIccLndPhoneBook,"S11");
williamr@2
    59
_LIT(KETelIccVoiceMailBox,"S12");
williamr@2
    60
williamr@2
    61
_LIT(KETelMeSmsStore,"S13");
williamr@2
    62
_LIT(KETelIccSmsStore,"S14");
williamr@2
    63
_LIT(KETelCombinedSmsStore,"S15");
williamr@2
    64
williamr@2
    65
_LIT(KETelNamStore,"S16");
williamr@2
    66
_LIT(KETelOwnNumberStore,"S17");
williamr@2
    67
_LIT(KETelEmergencyNumberStore,"S18");
williamr@2
    68
williamr@2
    69
_LIT(KETelSmsMessaging,"S19");
williamr@2
    70
_LIT(KETelBroadcastMessaging,"S20");
williamr@2
    71
_LIT(KETelUssdMessaging,"S21");
williamr@2
    72
williamr@2
    73
_LIT(KETelConferenceCall,"S22");
williamr@2
    74
williamr@2
    75
_LIT(KETelIccMbdnPhoneBook, "S23");
williamr@2
    76
_LIT(KETelIccMsisdnPhoneBook, "S24");
williamr@2
    77
_LIT(KETelIccOciPhoneBook, "S25");
williamr@2
    78
_LIT(KETelIccIciPhoneBook, "S26");
williamr@2
    79
_LIT(KETelIccNamStore ,"S27");
williamr@2
    80
_LIT(KETelIccInfoPhoneBook, "S28");
williamr@2
    81
williamr@2
    82
_LIT(KETelLocationServices,"S29");
williamr@2
    83
williamr@2
    84
// Types for Multimode ETel sub-sessions
williamr@2
    85
williamr@2
    86
_LIT(KEtelCdmaPhoneBookType,"T1");
williamr@2
    87
_LIT(KEtelGsmPhoneBookType,"T2");
williamr@2
    88
_LIT(KEtelUSimPhoneBookType,"T3");
williamr@2
    89
williamr@2
    90
// Types for SmartCardEap sub-sessions
williamr@2
    91
williamr@2
    92
/**
williamr@2
    93
The prefix to all RMobileSmartCardEap sub-session names.
williamr@2
    94
*/
williamr@2
    95
_LIT(KETelSmartCardEapSession, "ScEap");
williamr@2
    96
/**
williamr@2
    97
The length of KETelSmartCardEapSession.  Used to obtain a const value
williamr@2
    98
for this length at compile-time.
williamr@2
    99
*/
williamr@2
   100
#define SCEAP_SSN_LENGTH 5
williamr@2
   101
williamr@2
   102
/**
williamr@2
   103
EAP-MD5 type identifier.  Value taken from section 5 of RFC 3748 Jun 2004.
williamr@2
   104
This should be used as the EAP type identifier value of
williamr@2
   105
RMobileSmartCardEap::Open() if standard EAP-MD5 challenges are to be used.
williamr@2
   106
williamr@2
   107
This value corresponds to one of the possible values returned in the type
williamr@2
   108
list of TUiccApplicationEapInfoV6.
williamr@2
   109
williamr@2
   110
(Decimal value = 4)
williamr@2
   111
williamr@2
   112
@see RMobileSmartCardEap::Open()
williamr@2
   113
@see RMobilePhone::TUiccApplicationEapInfoV6
williamr@2
   114
*/
williamr@2
   115
_LIT8(KETelSmartCardEapTypeMD5, "04");
williamr@2
   116
williamr@2
   117
/**
williamr@2
   118
EAP-TLS type identifier.  Value taken from section 4.1 of RFC 2716 Oct 1999.
williamr@2
   119
This should be used as the EAP type identifier value of
williamr@2
   120
RMobileSmartCardEap::Open() if standard EAP-TLS is to be used.
williamr@2
   121
williamr@2
   122
This value corresponds to one of the possible values returned in the type
williamr@2
   123
list of TUiccApplicationEapInfoV6.
williamr@2
   124
williamr@2
   125
(Decimal value = 13)
williamr@2
   126
williamr@2
   127
@see RMobileSmartCardEap::Open()
williamr@2
   128
@see RMobilePhone::TUiccApplicationEapInfoV6
williamr@2
   129
*/
williamr@2
   130
_LIT8(KETelSmartCardEapTypeTLS, "0D");
williamr@2
   131
williamr@2
   132
/**
williamr@2
   133
EAP-SIM type identifier.
williamr@2
   134
This should be used as the EAP type identifier value of
williamr@2
   135
RMobileSmartCardEap::Open() if standard EAP-SIM is to be used.
williamr@2
   136
williamr@2
   137
This value corresponds to one of the possible values returned in the type
williamr@2
   138
list of TUiccApplicationEapInfoV6.
williamr@2
   139
williamr@2
   140
(Decimal value = 18)
williamr@2
   141
williamr@2
   142
@see RMobileSmartCardEap::Open()
williamr@2
   143
@see RMobilePhone::TUiccApplicationEapInfoV6
williamr@2
   144
*/
williamr@2
   145
_LIT8(KETelSmartCardEapTypeSIM, "12");
williamr@2
   146
williamr@2
   147
/**
williamr@2
   148
EAP-AKA type identifier.
williamr@2
   149
This should be used as the EAP type identifier value of
williamr@2
   150
RMobileSmartCardEap::Open() if standard EAP-AKA is to be used.
williamr@2
   151
williamr@2
   152
This value corresponds to one of the possible values returned in the type
williamr@2
   153
list of TUiccApplicationEapInfoV6.
williamr@2
   154
williamr@2
   155
(Decimal value = 23)
williamr@2
   156
williamr@2
   157
@see RMobileSmartCardEap::Open()
williamr@2
   158
@see RMobilePhone::TUiccApplicationEapInfoV6
williamr@2
   159
*/
williamr@2
   160
_LIT8(KETelSmartCardEapTypeAKA, "17");
williamr@2
   161
williamr@2
   162
/**
williamr@2
   163
EAP-TTLS type identifier.
williamr@2
   164
This should be used as the EAP type identifier value of
williamr@2
   165
RMobileSmartCardEap::Open() if standard EAP-TTLS is to be used.
williamr@2
   166
williamr@2
   167
This value corresponds to one of the possible values returned in the type
williamr@2
   168
list of TUiccApplicationEapInfoV6.
williamr@2
   169
williamr@2
   170
(Decimal value = 21)
williamr@2
   171
williamr@2
   172
@see RMobileSmartCardEap::Open()
williamr@2
   173
@see RMobilePhone::TUiccApplicationEapInfoV6
williamr@2
   174
*/
williamr@2
   175
_LIT8(KETelSmartCardEapTypeTTLS, "15");
williamr@2
   176
williamr@2
   177
/***********************************************************************************/
williamr@2
   178
//
williamr@2
   179
//  Global Multimode constants and types
williamr@2
   180
// 
williamr@2
   181
/***********************************************************************************/
williamr@2
   182
williamr@2
   183
/**
williamr@2
   184
Unique API identifier and Functional Unit constants
williamr@2
   185
Modes: Common 
williamr@2
   186
*/
williamr@2
   187
enum TMultimodeETelV1Api
williamr@2
   188
	{
williamr@2
   189
	/** TSY supports the Multimode ETel v1.0 API.
williamr@2
   190
	
williamr@2
   191
	Modes: Common */
williamr@2
   192
	KETelExtMultimodeV1=3000,  // 3000 is unique reference for Multimode Etel v1.0 API
williamr@2
   193
	/** TSY supports the MobileSimAccess functional unit.
williamr@2
   194
	
williamr@2
   195
	Modes: Common */
williamr@2
   196
	KETelFuncMobileIccAccess,
williamr@2
   197
	/** TSY supports the MobileNetwork functional unit.
williamr@2
   198
	
williamr@2
   199
	Modes: Common */
williamr@2
   200
	KETelFuncMobileNetwork,
williamr@2
   201
	/** TSY supports the MobileIdentity functional unit.
williamr@2
   202
	
williamr@2
   203
	Modes: Common */
williamr@2
   204
	KETelFuncMobileIdentity,
williamr@2
   205
	/** TSY supports the MobilePower functional unit.
williamr@2
   206
	
williamr@2
   207
	Modes: Common */
williamr@2
   208
	KETelFuncMobilePower,
williamr@2
   209
	/** TSY supports the MobileSignal functional unit.
williamr@2
   210
	
williamr@2
   211
	Modes: GSM/WCDMA */
williamr@2
   212
	KETelFuncMobileSignal,
williamr@2
   213
	/** TSY supports the MobileIndicator functional unit.
williamr@2
   214
	
williamr@2
   215
	Modes: Common */
williamr@2
   216
	KETelFuncMobileIndicator,
williamr@2
   217
	/** TSY supports the MobileDTMF functional unit.
williamr@2
   218
	
williamr@2
   219
	Modes: Common */
williamr@2
   220
	KETelFuncMobileDTMF,
williamr@2
   221
	/** TSY supports the MobileUserNetworkAccess functional unit.
williamr@2
   222
	
williamr@2
   223
	Modes: Common */
williamr@2
   224
	KETelFuncMobileUserNetworkAccess,
williamr@2
   225
	/** TSY supports the MobileIdentityService functional unit.
williamr@2
   226
	
williamr@2
   227
	Modes: Common */
williamr@2
   228
	KETelFuncMobileIdentityService,
williamr@2
   229
	/** TSY supports the MobileCallForwarding functional unit.
williamr@2
   230
	
williamr@2
   231
	Modes: Common */
williamr@2
   232
	KETelFuncMobileCallForwarding,
williamr@2
   233
	/** TSY supports the MobileCallBarring functional unit.
williamr@2
   234
	
williamr@2
   235
	Modes: GSM/WCDMA */
williamr@2
   236
	KETelFuncMobileCallBarring,
williamr@2
   237
	/** TSY supports the MobileCallWaiting functional unit.
williamr@2
   238
	
williamr@2
   239
	Modes: Common */
williamr@2
   240
	KETelFuncMobileCallWaiting,
williamr@2
   241
	/** TSY supports the MobileCallCompletion functional unit. */
williamr@2
   242
	KETelFuncMobileCallCompletion,
williamr@2
   243
	/** TSY supports the MobileAlternatingCall functional unit.
williamr@2
   244
	
williamr@2
   245
	Modes: GSM/WCDMA */
williamr@2
   246
	KETelFuncMobileAlternatingCall,
williamr@2
   247
	/** TSY supports the MobileCost functional unit.
williamr@2
   248
	
williamr@2
   249
	Modes: GSM/WCDMA */
williamr@2
   250
	KETelFuncMobileCost,
williamr@2
   251
	/** TSY supports the MobileSecurity functional unit.
williamr@2
   252
	
williamr@2
   253
	Modes: Common */
williamr@2
   254
	KETelFuncMobileSecurity,
williamr@2
   255
	/** TSY supports the MobileAlternateLineService functional unit.
williamr@2
   256
	
williamr@2
   257
	Modes: GSM/WCDMA */
williamr@2
   258
	KETelFuncMobileAlternateLineService,
williamr@2
   259
	/** TSY supports the MobileMessageWaiting functional unit.
williamr@2
   260
	
williamr@2
   261
	Modes: Common */
williamr@2
   262
	KETelFuncMobileMessageWaiting,
williamr@2
   263
	/** TSY supports the MobileFixedDiallingNumbers functional unit.
williamr@2
   264
	
williamr@2
   265
	Modes: GSM/WCDMA */
williamr@2
   266
	KETelFuncMobileFixedDiallingNumbers,
williamr@2
   267
	/** TSY supports the MobileDataCall functional unit.
williamr@2
   268
	
williamr@2
   269
	Modes: Common */
williamr@2
   270
	KETelFuncMobileDataCall,
williamr@2
   271
	/** TSY supports the MobilePrivacy functional unit.
williamr@2
   272
	
williamr@2
   273
	Modes: CDMA */
williamr@2
   274
	KETelFuncMobilePrivacy,
williamr@2
   275
	/** TSY supports the MobileEmergencyCall functional unit.
williamr@2
   276
	
williamr@2
   277
	Modes: Common */
williamr@2
   278
	KETelFuncMobileEmergencyCall,
williamr@2
   279
	/** TSY supports the MobileSmsMessaging functional unit.
williamr@2
   280
	
williamr@2
   281
	Modes: Common */
williamr@2
   282
	KETelFuncMobileSmsMessaging,
williamr@2
   283
	/** TSY supports the MobileBroadcastMessaging functional unit.
williamr@2
   284
	
williamr@2
   285
	Modes: Common */
williamr@2
   286
	KETelFuncMobileBroadcastMessaging,
williamr@2
   287
	/** TSY supports the MobileUssdMessaging functional unit.
williamr@2
   288
	
williamr@2
   289
	Modes: GSM/WCDMA */
williamr@2
   290
	KETelFuncMobileUssdMessaging,
williamr@2
   291
	/** TSY supports the MobileConferenceCall functional unit.
williamr@2
   292
	
williamr@2
   293
	Modes: Common */
williamr@2
   294
	KETelFuncMobileConferenceCall,
williamr@2
   295
	/** TSY supports the MobilePhonebookStore functional unit.
williamr@2
   296
	
williamr@2
   297
	Modes: Common */
williamr@2
   298
	KETelFuncMobilePhonebook,
williamr@2
   299
	/** TSY supports the MobileSmsStore functional unit.
williamr@2
   300
	
williamr@2
   301
	Modes: Common */
williamr@2
   302
	KETelFuncMobileSmsStore,
williamr@2
   303
	/** TSY supports the MobileNamStore functional unit.
williamr@2
   304
	
williamr@2
   305
	Modes: CDMA */
williamr@2
   306
	KETelFuncMobileNamStore,
williamr@2
   307
	/** TSY supports the MobileONStore functional unit.
williamr@2
   308
	
williamr@2
   309
	Modes: Common */
williamr@2
   310
	KETelFuncMobileOwnNumberStore,
williamr@2
   311
	/** TSY supports the MobileENStore functional unit.
williamr@2
   312
	
williamr@2
   313
	Modes: Common */
williamr@2
   314
	KETelFuncMobileEmergencyNumberStore,
williamr@2
   315
	/** TSY supports the MobileMultimedia functional unit.
williamr@2
   316
	
williamr@2
   317
	Modes: GSM/WCDMA */
williamr@2
   318
	KETelFuncMobileMulticall,
williamr@2
   319
	/** TSY supports the MobileNextIncomingCall functional unit.
williamr@2
   320
	
williamr@2
   321
	Modes: GSM/WCDMA */
williamr@2
   322
	KETelFuncMobileNextIncomingCall,
williamr@2
   323
	/** TSY supports the MobileMultimediaCall functional unit.
williamr@2
   324
	
williamr@2
   325
	Modes: GSM/WCDMA */
williamr@2
   326
	KETelFuncMobileMultimediaCall,
williamr@2
   327
	/** TSY supports the MobileUserSignalling functional unit.
williamr@2
   328
	
williamr@2
   329
	Modes: GSM/WCDMA */
williamr@2
   330
	KETelFuncMobileUserSignalling
williamr@2
   331
	};
williamr@2
   332
williamr@2
   333
/** Unique API identifier and Functional Unit constants.
williamr@2
   334
Modes: WCDMA 
williamr@2
   335
williamr@2
   336
*/
williamr@2
   337
enum TMultimodeETelV2Api
williamr@2
   338
	{
williamr@2
   339
	/** TSY supports the Multimode ETel v2.0 API.
williamr@2
   340
	
williamr@2
   341
	Modes: WCDMA */
williamr@2
   342
	KETelExtMultimodeV2=7000,  // 7000 is unique reference for Multimode Etel v2.0 API
williamr@2
   343
	/** TSY supports the MobileMultimediaCallSettings functional unit.
williamr@2
   344
	
williamr@2
   345
	Modes: WCDMA */
williamr@2
   346
	KEtelFuncMobileMultimediaCallSettings,
williamr@2
   347
	/** TSY supports the MobileNetworkSecurity functional unit.
williamr@2
   348
	
williamr@2
   349
	Modes: WCDMA */
williamr@2
   350
	KEtelFuncMobileNetworkSecurity,
williamr@2
   351
	KEtelFuncMobileUSIMApplications
williamr@2
   352
	};
williamr@2
   353
	
williamr@2
   354
/**
williamr@2
   355
Enum to define the v3.0 API additions
williamr@2
   356
williamr@2
   357
*/
williamr@2
   358
enum TMultimodeETelV3Api
williamr@2
   359
	{
williamr@2
   360
	/**
williamr@2
   361
	Indicator that the TSY supports the Multimode ETel v3.0 API.
williamr@2
   362
	*/
williamr@2
   363
	KETelExtMultimodeV3 = 10000,	
williamr@2
   364
	/**
williamr@2
   365
	TSY supports the MobileMMSInformation functional unit.
williamr@2
   366
	*/
williamr@2
   367
	KEtelFuncMobileMMSInformation,       // 10001
williamr@2
   368
	/**
williamr@2
   369
	TSY supports the KEtelFuncMobileAirTime functional unit.
williamr@2
   370
	*/
williamr@2
   371
	KEtelFuncMobileAirTime,              // 10002
williamr@2
   372
	/**
williamr@2
   373
	TSY supports the KEtelFuncMobileAutoRedial functional unit.
williamr@2
   374
	*/
williamr@2
   375
	KEtelFuncMobileAutoRedial,           // 10003
williamr@2
   376
	/**
williamr@2
   377
	TSY supports the KEtelFuncMobilePersonalisation functional unit.
williamr@2
   378
	*/
williamr@2
   379
	KEtelFuncMobilePersonalisation,      // 10004
williamr@2
   380
	/**
williamr@2
   381
	TSY supports the KEtelMobileMailboxNumbers functional unit.
williamr@2
   382
	*/
williamr@2
   383
	KEtelFuncMobileMailboxNumbers,       // 10005
williamr@2
   384
	/**
williamr@2
   385
	TSY supports the Mobile APN Control List functional unit.
williamr@2
   386
	*/
williamr@2
   387
	KEtelFuncMobileAPNControlList        // 10006
williamr@2
   388
	};
williamr@2
   389
williamr@2
   390
/**
williamr@2
   391
Enum to define the v4.0 API additions
williamr@2
   392
williamr@2
   393
*/
williamr@2
   394
enum TMultimodeETelV4Api
williamr@2
   395
	{
williamr@2
   396
	/**
williamr@2
   397
	Indicator that the TSY supports the Multimode ETel v4.0 API.
williamr@2
   398
	*/
williamr@2
   399
	KETelExtMultimodeV4	= 15000
williamr@2
   400
	};
williamr@2
   401
williamr@2
   402
williamr@2
   403
/** Enum to define Release 5 enabling API and data structures
williamr@2
   404
*/
williamr@2
   405
enum TMultimodeEtelV5Api
williamr@2
   406
	{
williamr@2
   407
	/**
williamr@2
   408
	Indicator that the TSY supports the Multimode ETel v5.0 API.
williamr@2
   409
	*/	
williamr@2
   410
	KEtelExtMultimodeV5=20000,
williamr@2
   411
	/**
williamr@2
   412
	Indicator that the TSY supports the IMS functional unit.
williamr@2
   413
	*/	
williamr@2
   414
	KEtelFuncMobileIMS,                  // 20001
williamr@2
   415
	/**
williamr@2
   416
	TSY supports the KEtelFuncMobileSmartCardApplications functional unit.
williamr@2
   417
	*/
williamr@2
   418
	KEtelFuncMobileSmartCardApplications // 20002
williamr@2
   419
	};
williamr@2
   420
williamr@2
   421
williamr@2
   422
/**
williamr@2
   423
Enum to define the v6.0 API additions.
williamr@2
   424
*/
williamr@2
   425
enum TMultimodeEtelV6Api
williamr@2
   426
	{
williamr@2
   427
	/**
williamr@2
   428
	Indicator that the TSY supports the Multimode ETel v6.0 API.
williamr@2
   429
	*/	
williamr@2
   430
	KEtelExtMultimodeV6=25000,
williamr@2
   431
	/**
williamr@2
   432
	Indicator that the TSY supports the EAP supporting functional unit.
williamr@2
   433
	*/	
williamr@2
   434
	KEtelSmartCardEap                    // 25001
williamr@2
   435
	};
williamr@2
   436
	
williamr@2
   437
/**
williamr@2
   438
Enum to define the v7.0 API additions.
williamr@2
   439
*/
williamr@2
   440
enum TMultimodeEtelV7Api
williamr@2
   441
	{
williamr@2
   442
	/**
williamr@2
   443
	Indicator that the TSY supports the Multimode ETel v7.0 API.
williamr@2
   444
	*/	
williamr@2
   445
	KEtelExtMultimodeV7=30000,
williamr@2
   446
	/**
williamr@2
   447
	Indicator that the TSY supports the LocationServices supporting functional unit.
williamr@2
   448
	*/	
williamr@2
   449
	KEtelLocationControlServices                    // 30001
williamr@2
   450
	};
williamr@2
   451
williamr@2
   452
/**
williamr@2
   453
Enum to define the v8.0 API additions.
williamr@2
   454
*/
williamr@2
   455
enum TMultimodeEtelV8Api
williamr@2
   456
	{
williamr@2
   457
	/**
williamr@2
   458
	Indicator that the TSY supports the Multimode ETel v8.0 API.
williamr@2
   459
	*/	
williamr@2
   460
	KEtelExtMultimodeV8=35000,
williamr@2
   461
	/**
williamr@2
   462
	Indicator that the TSY supports HSUPA.
williamr@2
   463
	*/	
williamr@2
   464
	KEtelHsupa,                   // 35001
williamr@2
   465
	/**
williamr@2
   466
	Indicator that the TSY supports GBA authentication functional unit
williamr@2
   467
	*/
williamr@2
   468
	KEtelFuncGenericBootstrapArchitecture,
williamr@2
   469
	/**
williamr@2
   470
	Indicator that the TSY supports MBMS authentication functional unit 
williamr@2
   471
	*/
williamr@2
   472
	KEtelFuncMBMS,
williamr@2
   473
	/*
williamr@2
   474
	Indicator that the TSY supports WLAN parameters on the USIM functional unit 
williamr@2
   475
	*/
williamr@2
   476
	KEtelFuncWLan
williamr@2
   477
	};
williamr@2
   478
			
williamr@2
   479
/**
williamr@2
   480
Enum to define the v9.0 API additions.
williamr@2
   481
*/
williamr@2
   482
enum TMultimodeEtelV9Api
williamr@2
   483
	{
williamr@2
   484
	/**
williamr@2
   485
	Indicator that the TSY supports the Multimode ETel v9.0 API.
williamr@2
   486
	*/	
williamr@2
   487
	KEtelExtMultimodeV9=45000,
williamr@2
   488
	/**
williamr@2
   489
	Indicator that the TSY supports the Cell Information functional unit.
williamr@2
   490
	*/	
williamr@2
   491
	KEtelFuncCellInfo,                   // 45001
williamr@2
   492
	};
williamr@2
   493
		
williamr@2
   494
/**
williamr@2
   495
Enum to define the Etel 3rdParty V1 API additions
williamr@2
   496
williamr@2
   497
*/
williamr@2
   498
enum TMultimodeETel3rdPartyV1Api 
williamr@2
   499
	{
williamr@2
   500
	/**
williamr@2
   501
	Indicator that the TSY supports the Etel 3rd Party v1.0 API
williamr@2
   502
	*/
williamr@2
   503
	KETelExt3rdPartyV1 = 40000
williamr@2
   504
	};
williamr@2
   505
williamr@2
   506
	
williamr@2
   507
/*********************************************************/
williamr@2
   508
//
williamr@2
   509
// Phone based functionality (RMobilePhone)
williamr@2
   510
// 
williamr@2
   511
/*********************************************************/
williamr@2
   512
williamr@2
   513
williamr@2
   514
class CMobilePhonePtrHolder;
williamr@2
   515
class CMobilePhoneStoredNetworkList;
williamr@2
   516
class CMobilePhoneStoredWlanSIDList;
williamr@2
   517
class RMobileSmartCardEap;
williamr@2
   518
williamr@2
   519
class RMobilePhone : public RPhone
williamr@2
   520
/**
williamr@2
   521
Provides client access to mobile phone functionality provided by TSY.
williamr@2
   522
williamr@2
   523
Encapsulates access to a mobile phone. The functionality of RMobilePhone 
williamr@2
   524
is divided into a number of functional units, for the purpose of easier documentation 
williamr@2
   525
and navigation and selectable support by TSY.
williamr@2
   526
williamr@2
   527
Note: Some RMobilePhone function members must be supported by the TSY while 
williamr@2
   528
others are part of optional "functional unit" and only need to be supported 
williamr@2
   529
if the TSY supports that functional unit. When a functional unit is mandatory 
williamr@2
   530
then the unit should at least support the Get...Caps() member function to 
williamr@2
   531
indicate the member functions that are supported for this unit.
williamr@2
   532
 
williamr@2
   533
*/
williamr@2
   534
	{
williamr@2
   535
public:
williamr@2
   536
	friend class CAsyncRetrievePhoneList;
williamr@2
   537
	IMPORT_C RMobilePhone();
williamr@2
   538
williamr@2
   539
	// Global multimode types
williamr@2
   540
williamr@2
   541
	
williamr@2
   542
	class TMultimodeType
williamr@2
   543
	/**
williamr@2
   544
	Base class for all the V1 parameter types defined within the API.
williamr@2
   545
	
williamr@2
   546
	@publishedPartner
williamr@2
   547
	@released
williamr@2
   548
	*/
williamr@2
   549
		{
williamr@2
   550
	public:
williamr@2
   551
		IMPORT_C TInt ExtensionId() const;
williamr@2
   552
	protected:
williamr@2
   553
		TMultimodeType();
williamr@2
   554
		void InternalizeL(RReadStream& aStream);
williamr@2
   555
		void ExternalizeL(RWriteStream& aStream) const;
williamr@2
   556
	protected:
williamr@2
   557
		TInt iExtensionId;
williamr@2
   558
		};
williamr@2
   559
		
williamr@2
   560
	/** A typedef'd packaged TMultimodeType for passing through a generic API 
williamr@2
   561
	function member. */
williamr@2
   562
	typedef TPckg<TMultimodeType> TMultimodeTypePckg;
williamr@2
   563
williamr@2
   564
	// Types used in RMobilePhone::TMobileAddress
williamr@2
   565
williamr@2
   566
/** Address types.
williamr@2
   567
williamr@2
   568
Modes: Common */
williamr@2
   569
	enum TMobileTON
williamr@2
   570
		{
williamr@2
   571
	/** User or the network has no knowledge of the type of number.
williamr@2
   572
	
williamr@2
   573
	Modes: Common */
williamr@2
   574
		EUnknownNumber,			// 0
williamr@2
   575
	/** International number.
williamr@2
   576
	
williamr@2
   577
	Modes: Common */
williamr@2
   578
		EInternationalNumber,	// 1
williamr@2
   579
	/** National number.
williamr@2
   580
	
williamr@2
   581
	Modes: Common */
williamr@2
   582
		ENationalNumber,		// 2
williamr@2
   583
	/** Administration/service number specific to the serving network, e.g. used to 
williamr@2
   584
	access an operator.
williamr@2
   585
	
williamr@2
   586
	Modes: Common */
williamr@2
   587
		ENetworkSpecificNumber, // 3
williamr@2
   588
	/** Subscriber number.
williamr@2
   589
	
williamr@2
   590
	Modes: Common */
williamr@2
   591
		ESubscriberNumber,		// 4 - Also defined as "dedicated, short code" in GSM 04.08
williamr@2
   592
	/** Alphanumeric number coded according to 3GPP TS 123 038 GSM 7-bit default alphabet.
williamr@2
   593
	
williamr@2
   594
	Modes: GSM/WCDMA */
williamr@2
   595
		EAlphanumericNumber,	// 5
williamr@2
   596
	/** Abbreviated number.
williamr@2
   597
	
williamr@2
   598
	Modes: Common */
williamr@2
   599
		EAbbreviatedNumber		// 6
williamr@2
   600
		};
williamr@2
   601
williamr@2
   602
/** Number Plan Indicator.
williamr@2
   603
williamr@2
   604
Modes: Common */
williamr@2
   605
	enum TMobileNPI
williamr@2
   606
		{
williamr@2
   607
	/** User or the network has no knowledge of the numbering plan.
williamr@2
   608
	
williamr@2
   609
	Modes: Common */
williamr@2
   610
		EUnknownNumberingPlan =0,
williamr@2
   611
	/** ISDN/telephony numbering plan.
williamr@2
   612
	
williamr@2
   613
	Modes: Common */
williamr@2
   614
		EIsdnNumberPlan=1,		
williamr@2
   615
	/** Data numbering plan.
williamr@2
   616
williamr@2
   617
	Modes: Common */
williamr@2
   618
		EDataNumberPlan=3,		
williamr@2
   619
	/** Telex numbering plan.
williamr@2
   620
williamr@2
   621
	Modes: Common */
williamr@2
   622
		ETelexNumberPlan=4,	
williamr@2
   623
	/** Service centre specific plan used to indicate a numbering plan specific to external 
williamr@2
   624
	Short Message entities attached to the SMSC. */
williamr@2
   625
		EServiceCentreSpecificPlan1=5,
williamr@2
   626
	/** Service centre specific plan used to indicate a numbering plan specific to external 
williamr@2
   627
	Short Message entities attached to the SMSC.
williamr@2
   628
	
williamr@2
   629
	Modes: GSM/WCDMA */
williamr@2
   630
		EServiceCentreSpecificPlan2=6,
williamr@2
   631
	/** National numbering plan.
williamr@2
   632
	
williamr@2
   633
	Modes: GSM/WCDMA */
williamr@2
   634
		ENationalNumberPlan=8,
williamr@2
   635
	/** Private numbering plan.
williamr@2
   636
	
williamr@2
   637
	Modes: Common */
williamr@2
   638
		EPrivateNumberPlan=9,
williamr@2
   639
	/** ERMES numbering plan.
williamr@2
   640
	
williamr@2
   641
	Modes: GSM/WCDMA */
williamr@2
   642
		EERMESNumberPlan=10
williamr@2
   643
		};
williamr@2
   644
williamr@2
   645
	enum 
williamr@2
   646
		{
williamr@2
   647
		KMaxMobilePasswordSize=10,
williamr@2
   648
		KMaxMobileNameSize=32,
williamr@2
   649
		KMaxMobileTelNumberSize=100
williamr@2
   650
		};
williamr@2
   651
williamr@2
   652
	struct TMMTableSettings
williamr@2
   653
		{
williamr@2
   654
		TUint32 iLocId;
williamr@2
   655
		};
williamr@2
   656
williamr@2
   657
	typedef TPckg<TMMTableSettings> TMMTableSettingsPckg;
williamr@2
   658
williamr@2
   659
	
williamr@2
   660
williamr@2
   661
	class TMobileAddress
williamr@2
   662
	/**
williamr@2
   663
	Defines API abstraction of a mobile telephone number.
williamr@2
   664
	
williamr@2
   665
	@publishedPartner
williamr@2
   666
	@released
williamr@2
   667
	*/
williamr@2
   668
		{
williamr@2
   669
	public:
williamr@2
   670
		IMPORT_C TMobileAddress();
williamr@2
   671
			
williamr@2
   672
		void InternalizeL(RReadStream& aStream);
williamr@2
   673
		void ExternalizeL(RWriteStream& aStream) const;
williamr@2
   674
			
williamr@2
   675
	public:
williamr@2
   676
		/** Type of number.
williamr@2
   677
		
williamr@2
   678
		@see TMobileTON */
williamr@2
   679
		TMobileTON iTypeOfNumber;
williamr@2
   680
		/** Number plan.
williamr@2
   681
		
williamr@2
   682
		@see TMobileNPI */
williamr@2
   683
		TMobileNPI iNumberPlan;
williamr@2
   684
		/** Telephone number. */
williamr@2
   685
		TBuf<KMaxMobileTelNumberSize> iTelNumber;
williamr@2
   686
		};
williamr@2
   687
williamr@2
   688
	// Mobile information location type
williamr@2
   689
williamr@2
   690
	/** Defines Location of service information.
williamr@2
   691
williamr@2
   692
	Modes: Common */
williamr@2
   693
	enum TMobileInfoLocation
williamr@2
   694
		{
williamr@2
   695
		/** Retrieve the service information ONLY from the cache on the phone. Return KErrNotFound 
williamr@2
   696
		if the cache does not exist or it is empty. */
williamr@2
   697
		EInfoLocationCache,
williamr@2
   698
		/** Retrieve the service information from the cache, but if this is empty or does 
williamr@2
   699
		not exist then interrogate the network. */
williamr@2
   700
		EInfoLocationCachePreferred,
williamr@2
   701
		/** Retrieve the service information from the network (and refresh the cache if 
williamr@2
   702
		there is one). */
williamr@2
   703
		EInfoLocationNetwork
williamr@2
   704
		};
williamr@2
   705
williamr@2
   706
	// Mobile call service type
williamr@2
   707
williamr@2
   708
	/** Applicability of request to a mobile service group.
williamr@2
   709
williamr@2
   710
	Modes: Common */
williamr@2
   711
	enum TMobileService
williamr@2
   712
		{
williamr@2
   713
		/** The call service has not been specified.
williamr@2
   714
		
williamr@2
   715
		Modes: Common */
williamr@2
   716
		EServiceUnspecified,
williamr@2
   717
		/** The API request applies to voice call services.
williamr@2
   718
williamr@2
   719
		Modes: Common */
williamr@2
   720
		EVoiceService,
williamr@2
   721
		/** The API request applies to auxiliary voice call services.
williamr@2
   722
williamr@2
   723
		Modes: GSM/WCDMA */
williamr@2
   724
		EAuxVoiceService,
williamr@2
   725
		/** The API request applies to circuit switched data call services.
williamr@2
   726
		
williamr@2
   727
		Modes: Common */
williamr@2
   728
		ECircuitDataService,
williamr@2
   729
		/** The API request applies to packet data services.
williamr@2
   730
	
williamr@2
   731
		Modes: Common */
williamr@2
   732
		EPacketDataService,
williamr@2
   733
		/** The API request applies to fax call services.
williamr@2
   734
	
williamr@2
   735
		Modes: Common */
williamr@2
   736
		EFaxService,
williamr@2
   737
		/** The API request applies to short message services.
williamr@2
   738
	
williamr@2
   739
		Modes: Common */
williamr@2
   740
		EShortMessageService,
williamr@2
   741
		/** The API request applies to all mobile services.
williamr@2
   742
	
williamr@2
   743
		Modes: Common */
williamr@2
   744
		EAllServices,
williamr@2
   745
		/** All teleservices
williamr@2
   746
	
williamr@2
   747
		Modes: Common */
williamr@2
   748
		EAllTele,
williamr@2
   749
		/** Telephony
williamr@2
   750
	
williamr@2
   751
		Modes: Common */
williamr@2
   752
		ETelephony,
williamr@2
   753
		/** All data teleservices
williamr@2
   754
	
williamr@2
   755
		Modes: Common */
williamr@2
   756
		EAllDataTele,
williamr@2
   757
		/** Voice Broadcast Service (VBS) Bearer Service
williamr@2
   758
	
williamr@2
   759
		Modes: Common */
williamr@2
   760
		EAllDataExSms,
williamr@2
   761
		/** All teleservices except SMS
williamr@2
   762
	
williamr@2
   763
		Modes: Common */
williamr@2
   764
		EAllTeleExcSms,
williamr@2
   765
		/** All PLMN specific teleservices
williamr@2
   766
	
williamr@2
   767
		Modes: Common */
williamr@2
   768
		EAllPlmnTele,
williamr@2
   769
		/** PLMN specific teleservice 1
williamr@2
   770
	
williamr@2
   771
		Modes: Common */
williamr@2
   772
		EPlmnTele1,
williamr@2
   773
		/** PLMN specific teleservice 2
williamr@2
   774
	
williamr@2
   775
		Modes: Common */
williamr@2
   776
		EPlmnTele2,
williamr@2
   777
		/** PLMN specific teleservice 3
williamr@2
   778
	
williamr@2
   779
		Modes: Common */
williamr@2
   780
		EPlmnTele3,
williamr@2
   781
		/** PLMN specific teleservice 4
williamr@2
   782
	
williamr@2
   783
		Modes: Common */
williamr@2
   784
		EPlmnTele4,
williamr@2
   785
		/** PLMN specific teleservice 5
williamr@2
   786
williamr@2
   787
		Modes: Common */
williamr@2
   788
		EPlmnTele5,
williamr@2
   789
		/** PLMN specific teleservice 6
williamr@2
   790
williamr@2
   791
		Modes: Common */
williamr@2
   792
		EPlmnTele6,
williamr@2
   793
		/** PLMN specific teleservice 7
williamr@2
   794
	
williamr@2
   795
		Modes: Common */
williamr@2
   796
		EPlmnTele7,
williamr@2
   797
		/** PLMN specific teleservice 8
williamr@2
   798
	
williamr@2
   799
		Modes: Common */
williamr@2
   800
		EPlmnTele8,
williamr@2
   801
		/** PLMN specific teleservice 9
williamr@2
   802
	
williamr@2
   803
		Modes: Common */
williamr@2
   804
		EPlmnTele9,
williamr@2
   805
		/** PLMN specific teleservice 10
williamr@2
   806
	
williamr@2
   807
		Modes: Common */
williamr@2
   808
		EPlmnTeleA,
williamr@2
   809
		/** PLMN specific teleservice 11
williamr@2
   810
	
williamr@2
   811
		Modes: Common */
williamr@2
   812
		EPlmnTeleB,
williamr@2
   813
		/** PLMN specific teleservice 12
williamr@2
   814
	
williamr@2
   815
		Modes: Common */
williamr@2
   816
		EPlmnTeleC,
williamr@2
   817
		/** PLMN specific teleservice 13
williamr@2
   818
	
williamr@2
   819
		Modes: Common */
williamr@2
   820
		EPlmnTeleD,
williamr@2
   821
		/** PLMN specific teleservice 14
williamr@2
   822
	
williamr@2
   823
		Modes: Common */
williamr@2
   824
		EPlmnTeleE,
williamr@2
   825
		/** PLMN specific teleservice 15
williamr@2
   826
	
williamr@2
   827
		Modes: Common */
williamr@2
   828
		EPlmnTeleF,
williamr@2
   829
		/** All bearer services
williamr@2
   830
		
williamr@2
   831
		Modes: Common */
williamr@2
   832
		EAllBearer,
williamr@2
   833
		/** All async services
williamr@2
   834
	
williamr@2
   835
		Modes: Common */
williamr@2
   836
		EAllAsync,
williamr@2
   837
		/** All sync services
williamr@2
   838
	
williamr@2
   839
		Modes: Common */
williamr@2
   840
		EAllSync,
williamr@2
   841
		/** All data circuit sync
williamr@2
   842
	
williamr@2
   843
		Modes: Common */
williamr@2
   844
		ESyncData,
williamr@2
   845
		/** All data circuit async
williamr@2
   846
	
williamr@2
   847
		Modes: Common */
williamr@2
   848
		EAsyncData,
williamr@2
   849
		/** All packet data services
williamr@2
   850
	
williamr@2
   851
		Modes: Common */
williamr@2
   852
		EPacketData,
williamr@2
   853
		/** All pad access services
williamr@2
   854
williamr@2
   855
		Modes: Common */
williamr@2
   856
		EPadAccess,
williamr@2
   857
		/** All PLMN specific bearer services
williamr@2
   858
williamr@2
   859
		Modes: Common */
williamr@2
   860
		EAllPlmnBearer,
williamr@2
   861
		/** PLMN specific bearer service 1
williamr@2
   862
	
williamr@2
   863
		Modes: Common */
williamr@2
   864
		EPlmnBearerServ1,
williamr@2
   865
		/** PLMN specific bearer service 2
williamr@2
   866
	
williamr@2
   867
		Modes: Common */
williamr@2
   868
		EPlmnBearerServ2,
williamr@2
   869
		/** PLMN specific bearer service 3
williamr@2
   870
	
williamr@2
   871
		Modes: Common */
williamr@2
   872
		EPlmnBearerServ3,
williamr@2
   873
		/** PLMN specific bearer service 4
williamr@2
   874
	
williamr@2
   875
		Modes: Common */
williamr@2
   876
		EPlmnBearerServ4,
williamr@2
   877
		/** PLMN specific bearer service 5
williamr@2
   878
	
williamr@2
   879
		Modes: Common */
williamr@2
   880
		EPlmnBearerServ5,
williamr@2
   881
		/** PLMN specific bearer service 6
williamr@2
   882
	
williamr@2
   883
		Modes: Common */
williamr@2
   884
		EPlmnBearerServ6,
williamr@2
   885
		/** PLMN specific bearer service 7
williamr@2
   886
	
williamr@2
   887
		Modes: Common */
williamr@2
   888
		EPlmnBearerServ7,
williamr@2
   889
		/** PLMN specific bearer service 8
williamr@2
   890
	
williamr@2
   891
		Modes: Common */
williamr@2
   892
		EPlmnBearerServ8,
williamr@2
   893
		/** PLMN specific bearer service 9
williamr@2
   894
	
williamr@2
   895
		Modes: Common */
williamr@2
   896
		EPlmnBearerServ9,
williamr@2
   897
		/** PLMN specific bearer service 10
williamr@2
   898
	
williamr@2
   899
		Modes: Common */
williamr@2
   900
		EPlmnBearerServA,
williamr@2
   901
		/** PLMN specific bearer service 11
williamr@2
   902
	
williamr@2
   903
		Modes: Common */
williamr@2
   904
		EPlmnBearerServB,
williamr@2
   905
		/** PLMN specific bearer service 12
williamr@2
   906
	
williamr@2
   907
		Modes: Common */
williamr@2
   908
		EPlmnBearerServC,
williamr@2
   909
		/** PLMN specific bearer service 13
williamr@2
   910
	
williamr@2
   911
		Modes: Common */
williamr@2
   912
		EPlmnBearerServD,
williamr@2
   913
		/** PLMN specific bearer service 14
williamr@2
   914
	
williamr@2
   915
		Modes: Common */
williamr@2
   916
		EPlmnBearerServE,
williamr@2
   917
		/** PLMN specific bearer service 15
williamr@2
   918
	
williamr@2
   919
		Modes: Common */
williamr@2
   920
		EPlmnBearerServF,
williamr@2
   921
		/** Alternative tele services
williamr@2
   922
williamr@2
   923
		Modes: Common */
williamr@2
   924
		EAltTele,
williamr@2
   925
		/** Voice Group Call Service (VGCS)
williamr@2
   926
williamr@2
   927
		Modes: Common */
williamr@2
   928
		EVoiceGroupCall,
williamr@2
   929
		/** Voice Broadcast Service (VBS)
williamr@2
   930
williamr@2
   931
		Modes: Common */
williamr@2
   932
		EVoiceBroadcast,
williamr@2
   933
		/** All GPRS Bearer Services
williamr@2
   934
williamr@2
   935
		Modes: Common */
williamr@2
   936
		EAllGprsBearer
williamr@2
   937
		};
williamr@2
   938
williamr@2
   939
	// Mobile name type
williamr@2
   940
williamr@2
   941
	/** A typedef to hold the names of API sub-sessions. The names are coded as ASCII 
williamr@2
   942
	characters. */
williamr@2
   943
	typedef TBuf<KMaxMobileNameSize> TMobileName;
williamr@2
   944
williamr@2
   945
	// Mobile password type
williamr@2
   946
williamr@2
   947
	/** A typedef for the standard password used by mobile phones for secure access 
williamr@2
   948
	to services (phone lock, SIM lock, call barring password). The password is 
williamr@2
   949
	coded as Unicode characters. */
williamr@2
   950
	typedef TBuf<KMaxMobilePasswordSize> TMobilePassword;
williamr@2
   951
williamr@2
   952
	// for use by client-side API code and TSY only
williamr@2
   953
williamr@2
   954
	struct TClientId
williamr@2
   955
	/** This type is used within the 2-phase list retrieval classes. During both phases, 
williamr@2
   956
	the client-side API code will pass down the TClientId so that TSY can use
williamr@2
   957
	this information to match the first phase of the request to the second phase. */
williamr@2
   958
		{
williamr@2
   959
		/** The handle to the underlying RTelServer session. */
williamr@2
   960
		TInt iSessionHandle;
williamr@2
   961
		/** The handle to the sub-session to which this API request relates. */
williamr@2
   962
		TInt iSubSessionHandle;
williamr@2
   963
		};
williamr@2
   964
williamr@2
   965
	/** Phone air interface capabilities. */
williamr@2
   966
	enum TMobilePhoneModeCaps
williamr@2
   967
		{
williamr@2
   968
		/** Phone can operate in GSM mode on 900/1800/1900 MHz bands. */
williamr@2
   969
		KCapsGsmSupported=0x00000001,
williamr@2
   970
		/** Phone can operate in GPRS mode on 900/1800/1900 MHz bands. */
williamr@2
   971
		KCapsGprsSupported=0x00000002,
williamr@2
   972
		/** Phone can operate in AMPS mode on 800MHz band. */
williamr@2
   973
		KCapsAmpsSupported=0x00000004,
williamr@2
   974
		/** Phone can operate in CDMA (IS-95) mode on 800/1900 MHz bands. */
williamr@2
   975
		KCapsCdma95Supported=0x00000008,
williamr@2
   976
		/** Phone can operate in CDMA (cdma2000) mode on 800/1900 MHz bands. */
williamr@2
   977
		KCapsCdma2000Supported=0x00000010,
williamr@2
   978
		/** Phone can operate in W-CDMA (UTRA Frequency Division Duplex (FDD)) mode. */
williamr@2
   979
		KCapsWcdmaSupported=0x00000020,
williamr@2
   980
		/** Phone can operate in TDMA/CDMA (UTRA Time Division Duplex (TDD)) mode. */
williamr@2
   981
		KCapsTdcdmaSupported=0x00000040,
williamr@2
   982
		/** 
williamr@2
   983
		Phone can access Smart Card functionality required for an EAP. 
williamr@2
   984
		@deprecated 9.3
williamr@2
   985
		*/
williamr@2
   986
		KCapsEapSupported=0x00000080
williamr@2
   987
		};
williamr@2
   988
williamr@2
   989
	/** Version number of the multimode ETel API. */
williamr@2
   990
	 enum TMultimodeEtelAPIVersion
williamr@2
   991
		{
williamr@2
   992
		/** Multimode Etel API version 1. */
williamr@2
   993
		 TMultimodeETelApiV1
williamr@2
   994
		};
williamr@2
   995
williamr@2
   996
	 //
williamr@2
   997
	 //  API/TSY internal type
williamr@2
   998
	 //
williamr@2
   999
	
williamr@2
  1000
	 struct TPhoneStoreNameAndIccType
williamr@2
  1001
	/** Structure that holds the phone store name and ICC type.
williamr@2
  1002
williamr@2
  1003
	Mode: Common */
williamr@2
  1004
		{
williamr@2
  1005
		/** This parameter is used to set the name of the storage. */
williamr@2
  1006
		TName iStoreName;
williamr@2
  1007
		/** This parameter is used to set the type of the ICC card. */
williamr@2
  1008
		TName iMode;
williamr@2
  1009
		};
williamr@2
  1010
williamr@2
  1011
	IMPORT_C TInt GetMultimodeAPIVersion(TInt& aVersion) const;
williamr@2
  1012
williamr@2
  1013
	IMPORT_C TInt GetMultimodeCaps(TUint32& aCaps) const;
williamr@2
  1014
williamr@2
  1015
	IMPORT_C void GetPhoneStoreInfo(TRequestStatus& aReqStatus, TDes8& aInfo, const TDesC& aStoreName) const;
williamr@2
  1016
williamr@2
  1017
	IMPORT_C void GetPhoneStoreInfo(TRequestStatus& aStatus, TDes8& aInfo, const TDesC& aStoreName, const TDesC& aMode) const;
williamr@2
  1018
williamr@2
  1019
	// explicit phone initialisation
williamr@2
  1020
	IMPORT_C void InitialiseMM(TRequestStatus& aReqStatus, TDes8& aTableSettings) const; 
williamr@2
  1021
williamr@2
  1022
	/***********************************************************************************/
williamr@2
  1023
	//
williamr@2
  1024
	// MobilePhoneIccAccess functional unit
williamr@2
  1025
	//
williamr@2
  1026
	/***********************************************************************************/
williamr@2
  1027
	
williamr@2
  1028
/** ICC access capabilities.
williamr@2
  1029
williamr@2
  1030
Modes: GSM */
williamr@2
  1031
	enum TMobilePhoneIccCaps
williamr@2
  1032
		{
williamr@2
  1033
	/** Phone has a SIM and it currently supports SIM access by clients.
williamr@2
  1034
	
williamr@2
  1035
	Modes: GSM */
williamr@2
  1036
		KCapsSimAccessSupported=0x00000001,
williamr@2
  1037
	/** Phone has a R-UIM and it currently supports R-UIM access by clients.
williamr@2
  1038
	
williamr@2
  1039
	Modes: CDMA */
williamr@2
  1040
		KCapsRUimAccessSupported=0x00000002,
williamr@2
  1041
	/** Phone has a USIM and it currently supports USIM access by clients.
williamr@2
  1042
	
williamr@2
  1043
	Modes: WCDMA */
williamr@2
  1044
		KCapsUSimAccessSupported=0x00000004
williamr@2
  1045
		};
williamr@2
  1046
		
williamr@2
  1047
williamr@2
  1048
	enum 
williamr@2
  1049
	{
williamr@2
  1050
	/**
williamr@2
  1051
	Maximum size of an ICC identity. 
williamr@2
  1052
	
williamr@2
  1053
	NOTE: TS102.221 defines the maximum size of the ICC Identity as held in EF_ICCID as 10 bytes, however
williamr@2
  1054
	TS 51.011 mentions that network operators may issue a SIM with an identification number of 20 bytes.  
williamr@2
  1055
	Therefore to cover this possibility the higher figure of 20 bytes has been chosen as the maximum size of the ICC identity.
williamr@2
  1056
	*/
williamr@2
  1057
	KMaxSizeIccIdentity	= 20
williamr@2
  1058
	};
williamr@2
  1059
	
williamr@2
  1060
	/** A typedef to hold the ICC identity.*/
williamr@2
  1061
	typedef TBuf8<KMaxSizeIccIdentity> TIccIdentity; 
williamr@2
  1062
williamr@2
  1063
	IMPORT_C TInt GetIccAccessCaps(TUint32& aCaps) const;
williamr@2
  1064
	IMPORT_C void NotifyIccAccessCapsChange(TRequestStatus& aReqStatus, TUint32& aCaps) const;
williamr@2
  1065
	IMPORT_C void GetIccIdentity(TRequestStatus& aReqStatus, TIccIdentity& aIdentity) const;
williamr@2
  1066
williamr@2
  1067
/** The Call Transfer/Call Forward options that are supported by the CSP.
williamr@2
  1068
williamr@2
  1069
Modes: WCDMA/GSM */
williamr@2
  1070
	enum TCspCallOffering
williamr@2
  1071
		{
williamr@2
  1072
	/** Indicates that "Call Transfer" is supported by the CSP. */
williamr@2
  1073
		KCspCT=0x08,
williamr@2
  1074
	/** Indicates that "Call Forwarding on Not Reachable" is supported by the CSP. */
williamr@2
  1075
		KCspCFNRc=0x10,
williamr@2
  1076
	/** Indicates that "Call Forwarding on No Reply" is supported by the CSP. */
williamr@2
  1077
		KCspCFNRy=0x20,
williamr@2
  1078
	/** Indicates that "Call Forwarding on Busy" is supported by the CSP. */
williamr@2
  1079
		KCspCFB=0x40,
williamr@2
  1080
	/** Indicates that "Call Forwarding Unconditional" is supported by the CSP. */
williamr@2
  1081
		KCspCFU=0x80
williamr@2
  1082
		};
williamr@2
  1083
williamr@2
  1084
/** The call restrictions supported by the CSP.
williamr@2
  1085
williamr@2
  1086
Modes: GSM/WCDMA */
williamr@2
  1087
	enum TCspCallRestriction
williamr@2
  1088
		{
williamr@2
  1089
	/** Indicates that "Barring of Incoming Calls when roaming outside the home PLMN 
williamr@2
  1090
	country" is supported by CSP. */
williamr@2
  1091
		KCspBICRoam=0x08,
williamr@2
  1092
	/** Indicates that "Barring of All Incoming Calls" is supported by CSP. */
williamr@2
  1093
		KCspBAIC=0x10,
williamr@2
  1094
	/** Indicates that "Barring of Outgoing International Calls except those directed 
williamr@2
  1095
	to the home PLMN country" is supported by CSP. */
williamr@2
  1096
		KCspBOICexHC=0x20,
williamr@2
  1097
	/** Indicates that "Barring of Outgoing International Calls" is supported by CSP. */
williamr@2
  1098
		KCspBOIC=0x40,
williamr@2
  1099
	/** Indicates that "Barring of All Outgoing Calls" is supported by CSP. */
williamr@2
  1100
		KCspBOAC=0x80
williamr@2
  1101
		};
williamr@2
  1102
williamr@2
  1103
/** Other services supported by the CSP.
williamr@2
  1104
williamr@2
  1105
Modes: GSM/WCDMA */
williamr@2
  1106
	enum TCspOtherSuppServices
williamr@2
  1107
		{
williamr@2
  1108
	/** Indicates that the Outgoing Access option of the Closed User Group service is 
williamr@2
  1109
	supported by the CSP. */
williamr@2
  1110
		KCspCUGOA=0x08,
williamr@2
  1111
	/** Indicates that the Preferential CUG option of the Closed User Group service 
williamr@2
  1112
	is supported by the CSP. */
williamr@2
  1113
		KCspPrefCUG=0x10,
williamr@2
  1114
	/** Indicates that the Advice of Charge service is supported by the CSP. */
williamr@2
  1115
		KCspAoC=0x20,
williamr@2
  1116
	/** Indicates that the Closed User Group service is supported by the CSP. */
williamr@2
  1117
		KCspCUG=0x40,
williamr@2
  1118
	/** Indicates that the Multiparty call service is supported by the CSP */
williamr@2
  1119
		KCspMPTY=0x80,
williamr@2
  1120
		};
williamr@2
  1121
williamr@2
  1122
/** Call completion modes supported by this CSP.
williamr@2
  1123
williamr@2
  1124
Modes: GSM/WCDMA */
williamr@2
  1125
	enum TCspCallCompletion
williamr@2
  1126
		{
williamr@2
  1127
	/** Indicates that the Call Completion to Busy Subscriber service is supported by 
williamr@2
  1128
	the CSP. */
williamr@2
  1129
		KCspCCBS=0x20,
williamr@2
  1130
	/** Indicates that the Call Waiting service is supported by the CSP. */
williamr@2
  1131
		KCspCW=0x40,
williamr@2
  1132
	/** Indicates that the Call Hold service is supported by the CSP. */
williamr@2
  1133
		KCspHOLD=0x80,
williamr@2
  1134
		};
williamr@2
  1135
williamr@2
  1136
/** SMS Teleservices supported by the CSP.
williamr@2
  1137
williamr@2
  1138
Modes: GSM/WCDMA */
williamr@2
  1139
	enum TCspTeleservices
williamr@2
  1140
		{
williamr@2
  1141
	/** Indicates that display of Validity Period menu options for SMS is supported 
williamr@2
  1142
	by the CSP. */
williamr@2
  1143
		KCspValidityPeriod=0x02,
williamr@2
  1144
	/** Indicates that display of Protocol ID menu options for SMS is supported by the 
williamr@2
  1145
	CSP. */
williamr@2
  1146
		KCspProtocolID=0x04,
williamr@2
  1147
	/** Indicates that SMS Delivery Confirmation is supported by the CSP. */
williamr@2
  1148
		KCspDelConf=0x08,
williamr@2
  1149
	/** Indicates that display of Reply Path menu options for outgoing SMS is supported 
williamr@2
  1150
	by the CSP. */
williamr@2
  1151
		KCspReplyPath=0x10,
williamr@2
  1152
	/** Indicates that the Cell Broadcast service is supported by the CSP. */
williamr@2
  1153
		KCspSMCB=0x20,
williamr@2
  1154
	/** Indicates mobile originated Short Messages are supported by CSP. */
williamr@2
  1155
		KCspSMMO=0x40,
williamr@2
  1156
	/** Indicates mobile terminated Short Messages are supported by CSP. */
williamr@2
  1157
		KCspSMMT=0x80,
williamr@2
  1158
		};
williamr@2
  1159
williamr@2
  1160
/** Alternate Line Services */
williamr@2
  1161
	enum TCspCPHSTeleservices
williamr@2
  1162
		{
williamr@2
  1163
	/** Indicates that Alternate Line Service is supported by the CSP. */
williamr@2
  1164
		KCspALS=0x80
williamr@2
  1165
		};
williamr@2
  1166
williamr@2
  1167
/** Currently not used. */
williamr@2
  1168
	enum TCspCPHSFeatures
williamr@2
  1169
		{
williamr@2
  1170
	/** This bit value is reserved for SST in Phase 1 CPHS. */
williamr@2
  1171
		KCspReservedSST=0x80
williamr@2
  1172
		};
williamr@2
  1173
williamr@2
  1174
/** Number Identification option supported by the CSP.
williamr@2
  1175
williamr@2
  1176
Modes: GSM/WCDMA */
williamr@2
  1177
	enum TCspNumberIdentification
williamr@2
  1178
		{
williamr@2
  1179
	/** Indicates that Calling Line Identity Presentation blocking per call (CLI sent 
williamr@2
  1180
	by default) is supported by the CSP. */
williamr@2
  1181
		KCspCLIBlock=0x01,
williamr@2
  1182
	/** Indicates that Calling Line Identity Presentation per call (CLI blocked by default) 
williamr@2
  1183
	is supported by the CSP. */
williamr@2
  1184
		KCspCLISend=0x02,
williamr@2
  1185
	/** Indicates that Connected Line Identification Presentation is supported by the 
williamr@2
  1186
	CSP. */
williamr@2
  1187
		KCspCOLP=0x10,
williamr@2
  1188
	/** Indicates that Connected Line Identification Restriction is supported by the 
williamr@2
  1189
	CSP. */
williamr@2
  1190
		KCspCOLR=0x20,
williamr@2
  1191
	/** Indicates that Calling Line Identification Presentation is supported by the CSP. */
williamr@2
  1192
		KCspCLIP=0x80,
williamr@2
  1193
		};
williamr@2
  1194
williamr@2
  1195
/** Phase 2+ services supported by the CSP.
williamr@2
  1196
williamr@2
  1197
Modes: GSM/WCDMA */
williamr@2
  1198
	enum TCspPhase2PlusServices
williamr@2
  1199
		{
williamr@2
  1200
	/** Indicates that Multiple Band roaming is supported by CSP. */
williamr@2
  1201
		KCspMultipleband=0x04,
williamr@2
  1202
	/** Indicates that Multiple Subscriber Profile is supported by CSP.
williamr@2
  1203
	
williamr@2
  1204
	v1.0 of Multimode ETel API does not support this feature */
williamr@2
  1205
		KCspMSP=0x08,
williamr@2
  1206
	/** Indicates that Voice Broadcast is supported by CSP.
williamr@2
  1207
	
williamr@2
  1208
	v1.0 of Multimode ETel API does not support this feature. */
williamr@2
  1209
		KCspVoiceBroadcast=0x10,
williamr@2
  1210
	/** Indicates that Voice Group Call is supported by CSP. 
williamr@2
  1211
	
williamr@2
  1212
	v1.0 of Multimode ETel API does not support this feature. */
williamr@2
  1213
		KCspVoiceGroupCall=0x20,
williamr@2
  1214
	/** Indicates that High Speed Circuit Switched Data is supported by CSP. */
williamr@2
  1215
		KCspHscsd=0x40,
williamr@2
  1216
	/** Indicates that General Packet Radio Service is supported by CSP. */
williamr@2
  1217
		KCspGprs=0x80
williamr@2
  1218
		};
williamr@2
  1219
williamr@2
  1220
/** Value added services supported by this CSP.
williamr@2
  1221
williamr@2
  1222
Modes: GSM/WCDMA */
williamr@2
  1223
	enum TCspValueAdded
williamr@2
  1224
		{
williamr@2
  1225
	/** Indicates that display of language selection menus is supported by the CSP.
williamr@2
  1226
	
williamr@2
  1227
	v1.0 of Multimode ETel API does not support this feature. */
williamr@2
  1228
		KCspLanguage=0x01,
williamr@2
  1229
	/** Indicates that display of data call option menu is supported by the CSP. */
williamr@2
  1230
		KCspData=0x04,
williamr@2
  1231
	/** Indicates that display of fax call option menu is supported by the CSP. */
williamr@2
  1232
		KCspFax=0x08,
williamr@2
  1233
	/** Indicates that display of the menu option to send a Short Message of type Email 
williamr@2
  1234
	is supported by the CSP. */
williamr@2
  1235
		KCspSMMOEmail=0x10,
williamr@2
  1236
	/** Indicates that display of the menu option to send a Short Message of type Paging 
williamr@2
  1237
	is supported by the CSP. */
williamr@2
  1238
		KCspSMMOPaging=0x20,
williamr@2
  1239
	/** Indicates that display of the menu option for manual PLMN selection is supported 
williamr@2
  1240
	by the CSP. */
williamr@2
  1241
		KCspPLMNMode=0x80,
williamr@2
  1242
		};
williamr@2
  1243
williamr@2
  1244
	
williamr@2
  1245
williamr@2
  1246
	class TMobilePhoneCspFileV1 : public TMultimodeType
williamr@2
  1247
	/** Defines contents of the CSP (Customer Service Profile) on the SIM. The profile 
williamr@2
  1248
	consists of the sum of the respective enums.
williamr@2
  1249
williamr@2
  1250
	@see GetCustomerServiceProfile()
williamr@2
  1251
	@publishedPartner
williamr@2
  1252
	@released*/
williamr@2
  1253
		{
williamr@2
  1254
	public:
williamr@2
  1255
	/** Constructor. */
williamr@2
  1256
		IMPORT_C TMobilePhoneCspFileV1();
williamr@2
  1257
williamr@2
  1258
	/** Sum of the TCspCallOffering. */
williamr@2
  1259
		TUint8	iCallOfferingServices;
williamr@2
  1260
	/** Sum of the TCspCallRestriction. */
williamr@2
  1261
		TUint8	iCallRestrictionServices;
williamr@2
  1262
	/** Sum of the TCspOtherSuppServices. */
williamr@2
  1263
		TUint8	iOtherSuppServices;
williamr@2
  1264
	/** Sum of the TCspCallCompletion. */
williamr@2
  1265
		TUint8	iCallCompletionServices;
williamr@2
  1266
	/** Sum of the TCspTeleservices. */
williamr@2
  1267
		TUint8  iTeleservices;
williamr@2
  1268
	/** Sum of the TCspCPHSTeleservices. */
williamr@2
  1269
		TUint8	iCphsTeleservices;
williamr@2
  1270
	/** Sum of the TCspCPHSFeatures. */
williamr@2
  1271
		TUint8	iCphsFeatures;
williamr@2
  1272
	/** Sum of the TCspNumberIdentification. */
williamr@2
  1273
		TUint8	iNumberIdentServices;
williamr@2
  1274
	/** Sum of the TCspPhase2PlusServices. */
williamr@2
  1275
		TUint8	iPhase2PlusServices;
williamr@2
  1276
	/** Sum of the TCspValueAdded. */
williamr@2
  1277
		TUint8	iValueAddedServices;
williamr@2
  1278
		};
williamr@2
  1279
williamr@2
  1280
/** A typedef'd packaged TMobilePhoneCspFileV1 for passing through a generic API 
williamr@2
  1281
function member. */
williamr@2
  1282
	typedef TPckg<TMobilePhoneCspFileV1> TMobilePhoneCspFileV1Pckg;
williamr@2
  1283
williamr@2
  1284
	IMPORT_C void GetCustomerServiceProfile(TRequestStatus& aReqStatus, TDes8& aCsp) const;
williamr@2
  1285
williamr@2
  1286
/** SIM/USIM/CDMA Service Table.
williamr@2
  1287
williamr@2
  1288
Modes: Common */
williamr@2
  1289
	enum TSSTServices1To8
williamr@2
  1290
		{
williamr@2
  1291
	/** Indicates that disabling PIN1 is supported by the ICC. */
williamr@2
  1292
		KSstPin1Disable=0x01,
williamr@2
  1293
	/** Indicates that storage of Abbreviated Dialling Numbers within this ICC is supported. */
williamr@2
  1294
		KSstADN=0x02,
williamr@2
  1295
	/** Indicates that the Fixed Dialling Numbers service and the storage of FDN numbers
williamr@2
  1296
	within this ICC is supported. */
williamr@2
  1297
		KSstFDN=0x04,
williamr@2
  1298
	/** Indicates that the Short Message Service and the storage of short messages within 
williamr@2
  1299
	this ICC is supported.
williamr@2
  1300
	
williamr@2
  1301
	Modes: Common */
williamr@2
  1302
		KSstSMS=0x08,
williamr@2
  1303
	/** Indicates that the Advice of Charge service is supported by this ICC.
williamr@2
  1304
	
williamr@2
  1305
	Modes: GSM/WCDMA */
williamr@2
  1306
		KSstAoC=0x10,
williamr@2
  1307
	/** Indicates that the storage of Configuration Capability Parameters associated 
williamr@2
  1308
	with an AND, FDN, MSISDN, LND or SDN is supported by this ICC.
williamr@2
  1309
	
williamr@2
  1310
	Modes: GSM/WCDMA */
williamr@2
  1311
		KSstCCP=0x20,
williamr@2
  1312
	/** Indicates that storage of a preferred network list is supported by this ICC.
williamr@2
  1313
	
williamr@2
  1314
	v1.0 of Multimode ETel API does not support this feature
williamr@2
  1315
	
williamr@2
  1316
	Modes: GSM/WCDMA */
williamr@2
  1317
		KSstPLMNSelector=0x40
williamr@2
  1318
		};
williamr@2
  1319
williamr@2
  1320
/** SIM/USIM/CDMA Service Table (continued).
williamr@2
  1321
williamr@2
  1322
Modes: GSM/WCDMA */
williamr@2
  1323
	enum TSSTServices9To16
williamr@2
  1324
		{
williamr@2
  1325
	/** Indicates that storage of MSISDN (own numbers) numbers within this ICC is supported.
williamr@2
  1326
	
williamr@2
  1327
	Modes: GSM/WCDMA */
williamr@2
  1328
		KSstMSISDN=0x01,
williamr@2
  1329
	/** Indicates that storage of extended (greater than 20 digits) ADN, LND and MSISDN
williamr@2
  1330
	numbers within this ICC is supported.
williamr@2
  1331
	
williamr@2
  1332
	Modes: Common */
williamr@2
  1333
		KSstExt1=0x02,
williamr@2
  1334
	/** Indicates that storage of extended (greater than 20 digits) FDN numbers within 
williamr@2
  1335
	this ICC is supported.
williamr@2
  1336
	
williamr@2
  1337
	Modes: Common */
williamr@2
  1338
		KSstExt2=0x04,
williamr@2
  1339
	/** Indicates that storage of SMS parameter records within this ICC is supported.
williamr@2
  1340
	
williamr@2
  1341
	Modes: Common */
williamr@2
  1342
		KSstSMSP=0x08,
williamr@2
  1343
	/** Indicates that storage of Last Numbers Dialled within this ICC is supported.
williamr@2
  1344
	
williamr@2
  1345
	Modes: Common */
williamr@2
  1346
		KSstLND=0x10,
williamr@2
  1347
	/** Indicates that the storage of Cell Broadcast message identifiers is supported 
williamr@2
  1348
	within this ICC.
williamr@2
  1349
	
williamr@2
  1350
	Modes: GSM/WCDMA */
williamr@2
  1351
		KSstCBMI=0x20,
williamr@2
  1352
	/** Indicates that access to the GID1 file is supported within this ICC.
williamr@2
  1353
	
williamr@2
  1354
	v1.0 of Multimode ETel API does not support this feature
williamr@2
  1355
	
williamr@2
  1356
	Modes: GSM/WCDMA */
williamr@2
  1357
		KSstGID1=0x40,
williamr@2
  1358
	/** Indicates that access to the GID2 file is supported within this ICC.
williamr@2
  1359
	
williamr@2
  1360
	v1.0 of Multimode ETel API does not support this feature
williamr@2
  1361
	
williamr@2
  1362
	Modes: GSM/WCDMA */
williamr@2
  1363
		KSstGID2=0x80
williamr@2
  1364
		};
williamr@2
  1365
	
williamr@2
  1366
/** SIM/USIM/CDMA Service Table (continued).
williamr@2
  1367
williamr@2
  1368
v1.0 of Multimode ETel API does not support this feature
williamr@2
  1369
williamr@2
  1370
Modes: Common */
williamr@2
  1371
	enum TSSTServices17To24
williamr@2
  1372
		{
williamr@2
  1373
	/** Indicates that access to the Service Provider Name within ICC is supported.
williamr@2
  1374
	
williamr@2
  1375
	v1.0 of Multimode ETel API does not support this feature
williamr@2
  1376
	
williamr@2
  1377
	Modes: Common */
williamr@2
  1378
		KSstSPName=0x01,
williamr@2
  1379
	/** Indicates that storage of Service Dialling Numbers within ICC is supported.
williamr@2
  1380
	
williamr@2
  1381
	Modes: Common */
williamr@2
  1382
		KSstSDN=0x02,
williamr@2
  1383
	/** Indicates that storage of extended (greater than 20 digits) SDN numbers within 
williamr@2
  1384
	this ICC/RUIM is supported.
williamr@2
  1385
	
williamr@2
  1386
	Modes: Common */
williamr@2
  1387
		KSstExt3=0x04,
williamr@2
  1388
	/** Indicates that access to the VGCS group identifier list within ICC is supported.
williamr@2
  1389
	
williamr@2
  1390
	v1.0 of Multimode ETel API does not support this feature
williamr@2
  1391
	
williamr@2
  1392
	Modes: GSM/WCDMA */
williamr@2
  1393
		KSstVGCSList=0x10,
williamr@2
  1394
	/** Indicates that access to the VBS group identifier list within ICC is supported.
williamr@2
  1395
	
williamr@2
  1396
	v1.0 of Multimode ETel API does not support this feature
williamr@2
  1397
williamr@2
  1398
	Modes: GSM/WCDMA */
williamr@2
  1399
		KSstVBSList=0x20,
williamr@2
  1400
	/** Indicates that the enhanced Multi-Level Precedence and Pre-emption service is 
williamr@2
  1401
	supported by ICC
williamr@2
  1402
	
williamr@2
  1403
	v1.0 of Multimode ETel API does not support this feature
williamr@2
  1404
	
williamr@2
  1405
	Modes: GSM/WCDMA */
williamr@2
  1406
		KSsteMLPP=0x40,
williamr@2
  1407
	/** Indicates that automatic answer for eMLPP is supported by ICC
williamr@2
  1408
	
williamr@2
  1409
	v1.0 of Multimode ETel API does not support this feature
williamr@2
  1410
	
williamr@2
  1411
	Modes: GSM/WCDMA */
williamr@2
  1412
		KSstAnswereMLPP=0x80
williamr@2
  1413
		};
williamr@2
  1414
williamr@2
  1415
/** SIM/USIM/CDMA Service Table (continued).
williamr@2
  1416
williamr@2
  1417
Modes: GSM/WCDMA */
williamr@2
  1418
	enum TSSTServices25To32
williamr@2
  1419
		{
williamr@2
  1420
	/** Indicates that SAT SMS-CB data download is supported by ICC. */
williamr@2
  1421
		KSstSmsCbDataDownload=0x01,
williamr@2
  1422
	/** Indicates that SAT SMS-PP data download is supported by ICC. */
williamr@2
  1423
		KSstSmsPpDataDownload=0x02,
williamr@2
  1424
	/** Indicates that SAT menu selection is supported by ICC.
williamr@2
  1425
	
williamr@2
  1426
	SAT ETel API provides this feature. */
williamr@2
  1427
		KSstMenuSelection=0x04,
williamr@2
  1428
	/** Indicates that SAT call control is supported by ICC.
williamr@2
  1429
	
williamr@2
  1430
	SAT ETel API provides this feature. */
williamr@2
  1431
		KSstCallControl=0x08,
williamr@2
  1432
	/** Indicates that SAT pro-active SIM is supported by ICC.
williamr@2
  1433
	
williamr@2
  1434
	SAT ETel API provides this feature. */
williamr@2
  1435
		KSstProactiveSim=0x10,
williamr@2
  1436
	/** Indicates ICC storage of ranges of Cell Broadcast Message Identifiers is supported. */
williamr@2
  1437
		KSstCBMIRanges=0x20,
williamr@2
  1438
	/** Indicates ICC storage of Barred Dialling Numbers is supported. */
williamr@2
  1439
		KSstBDN=0x40,
williamr@2
  1440
	/** Indicates ICC storage of extended (greater than 20 digits) BDN numbers is supported. */
williamr@2
  1441
		KSstExt4=0x80
williamr@2
  1442
		};
williamr@2
  1443
williamr@2
  1444
/** SIM/USIM/CDMA Service Table (continued).
williamr@2
  1445
williamr@2
  1446
Modes: GSM/WCDMA */
williamr@2
  1447
	enum TSSTServices33To40
williamr@2
  1448
		{
williamr@2
  1449
	/** Indicates depersonalisation control keys are supported by ICC.
williamr@2
  1450
	
williamr@2
  1451
	v1.0 of Multimode ETel API does not support this feature. */
williamr@2
  1452
		KSstDepersonalisationKeys=0x01,
williamr@2
  1453
	/** Indicates co-operative network list are supported by this ICC.
williamr@2
  1454
	
williamr@2
  1455
	v1.0 of Multimode ETel API does not support this feature. */
williamr@2
  1456
		KSstCooperativeNetworks=0x02,
williamr@2
  1457
	/** Indicates Short Message Status Reports are supported by ICC. */
williamr@2
  1458
		KSstSMStatusReports=0x04,
williamr@2
  1459
	/** Indicates network's indication of alerting is supported by ICC.
williamr@2
  1460
	
williamr@2
  1461
	v1.0 of Multimode ETel API does not support this feature. */
williamr@2
  1462
		KSstNetworkIndAlerting=0x08,
williamr@2
  1463
	/** Indicates outgoing SM control by SAT is supported by ICC.
williamr@2
  1464
	
williamr@2
  1465
	SAT ETel API provides this feature. */
williamr@2
  1466
		KSstMoSmControlBySim=0x10,
williamr@2
  1467
	/** Indicates that GPRS is supported by this ICC.
williamr@2
  1468
	
williamr@2
  1469
	GPRS ETel API provides GPRS functionality. */
williamr@2
  1470
		KSstGprs=0x20,
williamr@2
  1471
	/** Indicates that Image files are supported by this ICC.
williamr@2
  1472
	
williamr@2
  1473
	SAT ETel API provides this feature. */
williamr@2
  1474
		KSstImage=0x40,
williamr@2
  1475
	/** Indicates that SoLSA in supported by this ICC.
williamr@2
  1476
	
williamr@2
  1477
	v1.0 of Multimode ETel API does not support this feature */
williamr@2
  1478
		KSstSoLSA=0x80
williamr@2
  1479
		};
williamr@2
  1480
williamr@2
  1481
/** SIM/USIM/CDMA Service Table (continued).
williamr@2
  1482
williamr@2
  1483
Modes: GSM/WCDMA */
williamr@2
  1484
	enum TSSTServices41To48
williamr@2
  1485
		{
williamr@2
  1486
	/** Indicates that USSD string data is supported in SAT Call Control by this ICC.
williamr@2
  1487
	
williamr@2
  1488
	SAT ETel API provides this feature. */
williamr@2
  1489
		KSstUssdStringInCallControl=0x01,
williamr@2
  1490
	/** Indicates that RUN AT COMMAND is supported in SAT by this ICC.
williamr@2
  1491
	
williamr@2
  1492
	v1.0 of Multimode ETel API does not support this feature */
williamr@2
  1493
		KSstRunATCommand=0x02,
williamr@2
  1494
	/** Indicates that PLMN selector list with access technology is supported by this 
williamr@2
  1495
	ICC.
williamr@2
  1496
	
williamr@2
  1497
	v1.0 of Multimode ETel API does not support this feature. */
williamr@2
  1498
		KSstPlmnSelectorListWithAccessTechnology=0x04,
williamr@2
  1499
	/** Indicates that OPLMN selector list with access technology is supported by this
williamr@2
  1500
	ICC.
williamr@2
  1501
	
williamr@2
  1502
	v1.0 of Multimode ETel API does not support this feature. */
williamr@2
  1503
		KSstOplmnSelectorListWithAccessTechnology=0x08,
williamr@2
  1504
	/** Indicates that HPLMN access technology is supported by this ICC.
williamr@2
  1505
	
williamr@2
  1506
	v1.0 of Multimode ETel API does not support this feature. */
williamr@2
  1507
		KSstHplmnAccessTechnology=0x10,
williamr@2
  1508
	/** Indicates that CPBCCH information is supported by this ICC.
williamr@2
  1509
	
williamr@2
  1510
	v1.0 of Multimode ETel API does not support this feature. */
williamr@2
  1511
		KSstCpbcchInformation=0x20,
williamr@2
  1512
	/** Indicates that Investigation Scan is supported by this ICC.
williamr@2
  1513
	
williamr@2
  1514
	v1.0 of Multimode ETel API does not support this feature. */
williamr@2
  1515
		KSstInvestigationScan=0x40,
williamr@2
  1516
	/** Indicates that extended capability configuration parameters are supported by 
williamr@2
  1517
	this ICC.
williamr@2
  1518
	
williamr@2
  1519
	v1.0 of Multimode ETel API does not support this feature. */
williamr@2
  1520
		KSstExtendedCcp=0x80
williamr@2
  1521
		};
williamr@2
  1522
williamr@2
  1523
/** SIM/USIM/CDMA Service Table (continued).
williamr@2
  1524
williamr@2
  1525
Modes: GSM/WCDMA */
williamr@2
  1526
	enum TSSTServices49To56
williamr@2
  1527
		{
williamr@2
  1528
	/** Indicates Mobile Execution Environment services are supported by this ICC */
williamr@2
  1529
		KSstMExE=0x01,
williamr@2
  1530
	/** Indicates that RPLMN last used access technology is supported by this ICC.
williamr@2
  1531
	
williamr@2
  1532
	v1.0 of Multimode ETel API does not support this feature. */
williamr@2
  1533
		KSstRplmnLastUsedAccessTechnology=0x02
williamr@2
  1534
		};
williamr@2
  1535
williamr@2
  1536
/** USIM service table. */
williamr@2
  1537
	enum TUSTServices1To8
williamr@2
  1538
		{
williamr@2
  1539
	/** Indicates that the local phonebook is supported by the USIM. Local phonebook 
williamr@2
  1540
	means a phonebook that is specific to a USIM Application, as opposed to the 
williamr@2
  1541
	global phonebook which is located at the DF Telecom level on the UICC and 
williamr@2
  1542
	not attached to a USIM Application. */
williamr@2
  1543
		KUstLocalPhBk=0x01,
williamr@2
  1544
	/** Indicates that the Fixed Dialling Numbers (FDN) service and the storage of 
williamr@2
  1545
	FDN numbers within this USIM is supported. */
williamr@2
  1546
		KUstFDN=0x02,
williamr@2
  1547
	/** Indicates that the Extension 2 is supported by the USIM. Extension 2 provides 
williamr@2
  1548
	extension data for Fixed Dialling Numbers. */
williamr@2
  1549
		KUstExt2=0x04,
williamr@2
  1550
	/** Indicates that the Service Dialling Numbers are supported by the USIM. */
williamr@2
  1551
		KUstSDN=0x08,
williamr@2
  1552
	/** Indicates that the Extension 3 is supported by the USIM. Extension 3 provides 
williamr@2
  1553
	extension data for Service Dialling Numbers. */
williamr@2
  1554
		KUstExt3=0x10,
williamr@2
  1555
	/** Indicates that the Barred Dialling Numbers are supported by the USIM. */
williamr@2
  1556
		KUstBDN=0x20,
williamr@2
  1557
	/** Indicates that the Extension 4 is supported by the USIM. Extension 4 provides 
williamr@2
  1558
	extension data for Barred Dialling Numbers. */
williamr@2
  1559
		KUstExt4=0x40,
williamr@2
  1560
	/** Indicates that the outgoing call information (OCI and OCT) are supported by 
williamr@2
  1561
	the USIM.
williamr@2
  1562
	
williamr@2
  1563
	Note: v2.0 of Multimode ETel API does not support this feature. */
williamr@2
  1564
		KUstOugoingCallInfo=0x80
williamr@2
  1565
		};
williamr@2
  1566
	
williamr@2
  1567
/** USIM service table (continued). */
williamr@2
  1568
	enum TUSTServices9To16
williamr@2
  1569
		{
williamr@2
  1570
	/** Indicates that the incoming call information (ICI and ICT) are supported by 
williamr@2
  1571
	the USIM
williamr@2
  1572
	
williamr@2
  1573
	Note: v2.0 of Multimode ETel API does not support this feature. */
williamr@2
  1574
		KUstIncomingCallInfo=0x01,
williamr@2
  1575
	/** Indicates that Short Message Storage is supported by the USIM. */
williamr@2
  1576
		KUstSMS=0x02,
williamr@2
  1577
	/** Indicates that Short Message Status Reports are supported by the USIM. */
williamr@2
  1578
		KUstSMSR=0x04,
williamr@2
  1579
	/** Indicates that Short Message Service Parameters are supported by the USIM. */
williamr@2
  1580
		KUstSMSP=0x08,
williamr@2
  1581
	/** Indicates that Advice Of Charge is supported by the USIM. */
williamr@2
  1582
		KUstAoC=0x10,
williamr@2
  1583
	/** Indicates that Capability Configuration Parameters are supported by the USIM. */
williamr@2
  1584
		KUstCCP=0x20,
williamr@2
  1585
	/** Indicates that Cell Broadcast Message Identifier is supported by the USIM. */
williamr@2
  1586
		KUstCBMI=0x40,
williamr@2
  1587
	/** Indicates that Cell Broadcast Message Identifier Ranges are supported by the 
williamr@2
  1588
	USIM. */
williamr@2
  1589
		KUstCBMIRanges=0x80
williamr@2
  1590
		};
williamr@2
  1591
williamr@2
  1592
/** USIM service table (continued). */
williamr@2
  1593
	enum TUSTServices17To24
williamr@2
  1594
		{
williamr@2
  1595
	/** Indicates that Group Identifier Level 1 is supported by the USIM.
williamr@2
  1596
	
williamr@2
  1597
	Note: v2.0 of Multimode ETel API does not support this feature. */
williamr@2
  1598
		KUstGID1=0x01,
williamr@2
  1599
	/** Indicates that Group Identifier Level 2 is supported by the USIM.
williamr@2
  1600
	
williamr@2
  1601
	Note: v2.0 of Multimode ETel API does not support this feature. */
williamr@2
  1602
		KUstGID2=0x02,
williamr@2
  1603
	/** Indicates that Service Provider Name is supported by the USIM. */
williamr@2
  1604
		KUstSPN=0x04,
williamr@2
  1605
	/** Indicates that user controlled PLMN selector with Access Technology is supported
williamr@2
  1606
	by the USIM.
williamr@2
  1607
	
williamr@2
  1608
	Note: v2.0 of Multimode ETel API does not support this feature. */
williamr@2
  1609
		KUstPLMNSelAccessTech=0x08,
williamr@2
  1610
	/** Indicates that MSISDN is supported by the USIM. */
williamr@2
  1611
		KUstMSISDN=0x10,
williamr@2
  1612
	/** Indicates that Image is supported by the USIM.
williamr@2
  1613
	
williamr@2
  1614
	Note: (U)SAT ETel API provides this feature. This enum value is reserved for 
williamr@2
  1615
	future API use. */
williamr@2
  1616
		KUstIMG=0x20,
williamr@2
  1617
		//0x40 is a reserved value
williamr@2
  1618
	/** Indicates that enhanced Multi Level Precedence and Pre-emption Service is supported 
williamr@2
  1619
	by the USIM.
williamr@2
  1620
	
williamr@2
  1621
	Note: v2.0 of Multimode ETel API does not support this feature. */
williamr@2
  1622
		KUsteMLPP=0x80
williamr@2
  1623
		};
williamr@2
  1624
williamr@2
  1625
/** USIM service table (continued). */
williamr@2
  1626
	enum TUSTServices25To32
williamr@2
  1627
		{
williamr@2
  1628
	/** Indicates that Automatic Answer for eMLPP is supported by the USIM.
williamr@2
  1629
	
williamr@2
  1630
	Note: v1.0 and v2.0 of Multimode ETel API do not support this feature. */
williamr@2
  1631
		KUstAnswereMLPP=0x01,
williamr@2
  1632
		//0x02 is a reserved value
williamr@2
  1633
	/** Indicates that GSM Access is supported by the USIM */
williamr@2
  1634
		KUstGSMAccess=0x04,
williamr@2
  1635
	/** Indicates that Data download via SMS-PP is supported by the USIM.
williamr@2
  1636
	
williamr@2
  1637
	Note: (U)SAT ETel API provides this feature. */
williamr@2
  1638
		KUstSMSPpDataDownload=0x08,
williamr@2
  1639
	/** Indicates that Data download via SMS-CB is supported by the USIM.
williamr@2
  1640
	
williamr@2
  1641
	Note: (U)SAT ETel API provides this feature. */
williamr@2
  1642
		KUstSMSCbDataDownload=0x10,
williamr@2
  1643
	/** Indicates that Call Control by USIM is supported by the USIM.
williamr@2
  1644
	
williamr@2
  1645
	Note: (U)SAT ETel API provides this feature. */
williamr@2
  1646
		KUstCallControl=0x20,
williamr@2
  1647
	/** Indicates that MO-SMS Control by USIM is supported by the USIM.
williamr@2
  1648
	
williamr@2
  1649
	Note: (U)SAT ETel API provides this feature. */
williamr@2
  1650
		KUstMoSmControl=0x40,
williamr@2
  1651
	/** Indicates that the proactive command RUN AT COMMAND is supported by the USIM.
williamr@2
  1652
	
williamr@2
  1653
	Note: (U)SAT ETel API provides this feature. */
williamr@2
  1654
		KUstPCmdRunAtCommand=0x80		
williamr@2
  1655
		};
williamr@2
  1656
williamr@2
  1657
/** USIM service table (continued). */
williamr@2
  1658
	enum TUSTServices33To40
williamr@2
  1659
		{
williamr@2
  1660
	/** Should always be present as specified by 3 GPP spec. */
williamr@2
  1661
		KUstAlways=0x10,
williamr@2
  1662
	/** Indicates that the Enabled Service Table is supported by the USIM. */
williamr@2
  1663
		KUstEST=0x02,
williamr@2
  1664
	/** Indicates that APN Control List is supported by the USIM.
williamr@2
  1665
	
williamr@2
  1666
	Note: v2.0 of Multimode ETel API does not support this feature. */
williamr@2
  1667
		KUstACL=0x04,
williamr@2
  1668
	/** Indicates that the Depersonalisation Control Keys are supported by the USIM.
williamr@2
  1669
	
williamr@2
  1670
	Note: v2.0 of Multimode ETel API does not support this feature. */
williamr@2
  1671
		KIstDepersonalisationKeys =0x08,
williamr@2
  1672
	/** Indicates that the Co-operative Network List is supported by the USIM.
williamr@2
  1673
williamr@2
  1674
	Note: v2.0 of Multimode ETel API does not support this feature. */
williamr@2
  1675
		KUstCooperativeNetwork=0x10,
williamr@2
  1676
	/** Indicates that GSM Security Context is supported by the USIM. */
williamr@2
  1677
		KUstGSMSecurityContext=0x20,
williamr@2
  1678
	/** Indicates that CPBCCH Information is supported by the USIM.
williamr@2
  1679
	
williamr@2
  1680
	Note: v2.0 of Multimode ETel API do not support this feature. */
williamr@2
  1681
		KUstCPBCCHInfo=0x40,
williamr@2
  1682
	/** Indicates that Investigation Scan is supported by the USIM.
williamr@2
  1683
	
williamr@2
  1684
	Note:v2.0 of Multimode ETel API do not support this feature. */
williamr@2
  1685
		KUstInvestigationScan=0x80
williamr@2
  1686
		};
williamr@2
  1687
williamr@2
  1688
/** USIM service table (continued). */
williamr@2
  1689
	enum TUSTServices41To48
williamr@2
  1690
		{
williamr@2
  1691
	/** Indicates that MExE is supported by the USIM.
williamr@2
  1692
	
williamr@2
  1693
	Note: v2.0 of Multimode ETel API do not support this feature. */
williamr@2
  1694
		KUstMExE=0x01,
williamr@2
  1695
	/** Indicates that Operator controlled PLMN selector with Access Technology is 
williamr@2
  1696
	supported by the USIM.
williamr@2
  1697
	
williamr@2
  1698
	N.B .v2.0 of Multimode ETel API do not support this feature. */
williamr@2
  1699
		KUstOperatorPLMNSelector=0x02,
williamr@2
  1700
	/** Indicates that HPLMN selector with Access Technology is supported by the USIM.
williamr@2
  1701
	
williamr@2
  1702
	Note: v2.0 of Multimode ETel API do not support this feature. */
williamr@2
  1703
		KUstHPLMNSelAccessTech=0x04,
williamr@2
  1704
	/** Indicates that Extension 5 is supported by the USIM. Provides support for extension 
williamr@2
  1705
	data for MSISDN. */
williamr@2
  1706
		KUstExt5=0x08,
williamr@2
  1707
	/** Indicates that PLMN Network Name is supported by the USIM.
williamr@2
  1708
	
williamr@2
  1709
	Note: v2.0 of Multimode ETel API do not support this feature. */
williamr@2
  1710
		KUstPLMNNetworkName=0x10,
williamr@2
  1711
	/** Indicates that Operator PLMN List is supported by the USIM.
williamr@2
  1712
	
williamr@2
  1713
	Note: v2.0 of Multimode ETel API do not support this feature. */
williamr@2
  1714
		KUstOperatorPLMNList=0x20,
williamr@2
  1715
	/** Indicates that Mailbox Dialling Numbers are supported by the USIM. */
williamr@2
  1716
		KUstMDN=0x40,
williamr@2
  1717
	/** Indicates that Message Waiting Indication Status is supported by the USIM. */
williamr@2
  1718
		KUstMWISo=0x80
williamr@2
  1719
		};
williamr@2
  1720
williamr@2
  1721
/** USIM service table (continued). */
williamr@2
  1722
	enum TUSTServices49To56
williamr@2
  1723
		{
williamr@2
  1724
	/** Indicates that Call forwarding indication status is supported by the USIM.
williamr@2
  1725
	
williamr@2
  1726
	Note: v2.0 of Multimode ETel API do not support this feature. */
williamr@2
  1727
		KUstCFIS=0x01,
williamr@2
  1728
	/** Indicates that RPLMN last-used access technology is supported by the USIM (Release 5).
williamr@2
  1729
	From Release 6 this service is "Reserved and shall be ignored".
williamr@2
  1730
	
williamr@2
  1731
	Note: v2.0 of Multimode ETel API do not support this feature. */
williamr@2
  1732
		KUstRPLMN=0x02,
williamr@2
  1733
	/** Indicates that Service provider display information is supported by the USIM.
williamr@2
  1734
	
williamr@2
  1735
	Note: v2.0 of Multimode ETel API do not support this feature. */
williamr@2
  1736
		KUstSPDI=0x04,
williamr@2
  1737
	    KUstMMS=0x08,
williamr@2
  1738
	    KUstExt8=0x10,
williamr@2
  1739
	    KUstCConGPRS=0x20,
williamr@2
  1740
	    KUstMMSUCP=0x40
williamr@2
  1741
		};
williamr@2
  1742
williamr@2
  1743
williamr@2
  1744
/** USIM service table (continued). */
williamr@2
  1745
	enum TUSTServices57To64
williamr@2
  1746
		{
williamr@2
  1747
	/** Indicates that VGCS Group Identifier List ( VGCS and VGCSS) is supported by the USIM.
williamr@2
  1748
	
williamr@2
  1749
	Note: v8.0 of Multimode ETel API does not support this feature. */
williamr@2
  1750
		KUstVGCSGroupIdList=0x01,
williamr@2
  1751
	/** Indicates that VBS Group Identifier List ( VBS and VBSS ) is supported by the USIM.
williamr@2
  1752
	
williamr@2
  1753
	Note: v8.0 of Multimode ETel API does not support this feature. */
williamr@2
  1754
		KUstVBSGroupIdList=0x02,
williamr@2
  1755
	/** Indicates that Pseudonym  is supported by the USIM.*/
williamr@2
  1756
		KUstPseudonym=0x04,
williamr@2
  1757
	/** Indicates that User controlled PLMN selector for WLAN Access is supported by the USIM. */	
williamr@2
  1758
	    KUstUserPLMNSelectorWLAN=0x08,
williamr@2
  1759
	/** Indicates that Operator controlled PLMN selector for WLAN Access is supported by the USIM.*/    
williamr@2
  1760
	    KUstOperatorPLMNSelectorWLAN =0x10,
williamr@2
  1761
	/** Indicates that User controlled WLAN specific identifier list  is supported by the USIM.*/    
williamr@2
  1762
	    KUstUserWSIDList=0x20,
williamr@2
  1763
	/** Indicates that Opertor controlled WLAN specific identifier list  is supported by the USIM. */    
williamr@2
  1764
  	    KUstOperatorWSIDList=0x40,
williamr@2
  1765
	/** Indicates that Voice Group Call Service Ciphering Algorithm is supported by the USIM.
williamr@2
  1766
	
williamr@2
  1767
	Note: v8.0 of Multimode ETel API does not support this feature. */  
williamr@2
  1768
	    KUstVGCSSecurity=0x80
williamr@2
  1769
		};
williamr@2
  1770
williamr@2
  1771
/** USIM service table (continued). */
williamr@2
  1772
	enum TUSTServices65To72
williamr@2
  1773
		{
williamr@2
  1774
	/** Indicates that Voice Broadcast Service Ciphering Algorithm is supported by the USIM.
williamr@2
  1775
	
williamr@2
  1776
	 Note: v8.0 of Multimode ETel API does not support this feature. */  
williamr@2
  1777
		KUstVBSSecurity=0x01,
williamr@2
  1778
	/** Indicates that the WLAN Reauthentication Identity is supported by the USIM.*/
williamr@2
  1779
		KUstWLANReAuthenId=0x02,
williamr@2
  1780
	/** Indicates that Multimedia Message Storage is supported by the USIM.
williamr@2
  1781
	
williamr@2
  1782
	Note: v8.0 of Multimode ETel API does not support this feature. */  
williamr@2
  1783
		KUstMMStorage=0x04,
williamr@2
  1784
	/** Indicates that Generic Bootstrapping Architecture (GBA) is supported by the USIM */  
williamr@2
  1785
			
williamr@2
  1786
	    KUstGBA=0x08,
williamr@2
  1787
	/** Indicates that Multimedia Broadcast Multicast Service (MBMS) Security is supported by the USIM.*/  
williamr@2
  1788
	
williamr@2
  1789
	    KUstMBMSSecurity =0x10,
williamr@2
  1790
	 /** Indicates that USSD Data Dowload feature is supported by the USIM.
williamr@2
  1791
	
williamr@2
  1792
	Note: v8.0 of Multimode ETel API does not support this feature. */  
williamr@2
  1793
	
williamr@2
  1794
	    KUstUSSDDataDownload=0x20,
williamr@2
  1795
	/** Indicates that Additional TERMINAL PROFILE after UICC activation is supported by the USIM */  
williamr@2
  1796
	    KUstTerminalProfileUICCActivation=0x80
williamr@2
  1797
		};
williamr@2
  1798
williamr@2
  1799
/** Enabled Services Table. */
williamr@2
  1800
	enum TESTServices1To8
williamr@2
  1801
		{
williamr@2
  1802
	/** Indicates that FDN service is activated. */
williamr@2
  1803
		KEstFDN=0x01,
williamr@2
  1804
	/** Indicates that BDN service is activated. */
williamr@2
  1805
		KEstBDN=0x02,
williamr@2
  1806
	/** Indicates that the APN Control List service is activated.
williamr@2
  1807
	
williamr@2
  1808
	Note: v2.0 of Multimode ETel API do not support this feature. */
williamr@2
  1809
		KEstACL=0x04
williamr@2
  1810
		};
williamr@2
  1811
williamr@2
  1812
 /** ISIM Service Table*/
williamr@2
  1813
	enum TISTServices1To8
williamr@2
  1814
		{
williamr@2
  1815
	/** Indicates that EFP-CSCF is present in the ISIM. */	
williamr@2
  1816
		KIstPCSCF=0x01,
williamr@2
  1817
	/** Indicates that the Generic Bootstrapping Architecture (GBA) is supported by the ISIM. */
williamr@2
  1818
		KIstGBA=0x02,
williamr@2
  1819
	/** Indicates that the ISIM supports operations in HTTP-Digest security context. */
williamr@2
  1820
		KIstHTTPDigest=0x04
williamr@2
  1821
		};
williamr@2
  1822
williamr@2
  1823
williamr@2
  1824
/** Get Service Table.
williamr@2
  1825
williamr@2
  1826
Modes: GSM/WCDMA */
williamr@2
  1827
	enum TMobilePhoneServiceTable
williamr@2
  1828
		{
williamr@2
  1829
	/** Retrieve SIM service table on SIM (or from GSM application on UICC).
williamr@2
  1830
	
williamr@2
  1831
	Modes: GSM/WCDMA */
williamr@2
  1832
		ESIMServiceTable,
williamr@2
  1833
	/** Retrieve USIM service table from active USIM application on UICC.
williamr@2
  1834
	
williamr@2
  1835
	Modes: WCDMA */
williamr@2
  1836
		EUSIMServiceTable,
williamr@2
  1837
	/** Retrieve CDMA service table on R-UIM.
williamr@2
  1838
	
williamr@2
  1839
	Modes: CDMA */
williamr@2
  1840
		ECDMAServiceTable,
williamr@2
  1841
	/** USIM Enabled Services Table to be used in conjunction with the USIM Service 
williamr@2
  1842
	Table.
williamr@2
  1843
	
williamr@2
  1844
	Modes: WCDMA */
williamr@2
  1845
		EUSIMEnabledServiceTable,
williamr@2
  1846
	/** ISIM Service Table (IST) for the currently active ISIM application on the UICC is selected.
williamr@2
  1847
	
williamr@2
  1848
	Modes: WCDMA */	
williamr@2
  1849
		EISIMServiceTable
williamr@2
  1850
		};
williamr@2
  1851
williamr@2
  1852
	
williamr@2
  1853
	class TMobilePhoneServiceTableV1 : public TMultimodeType
williamr@2
  1854
	/** Defines contents of the specified Service Table on the ICC.
williamr@2
  1855
williamr@2
  1856
	@see GetServiceTable()
williamr@2
  1857
	@publishedPartner
williamr@2
  1858
	@released
williamr@2
  1859
	 */
williamr@2
  1860
		{
williamr@2
  1861
	public:
williamr@2
  1862
		IMPORT_C TMobilePhoneServiceTableV1();
williamr@2
  1863
williamr@2
  1864
	/** Sum of the TSSTServices1To8 capability constants. */
williamr@2
  1865
		TUint8 iServices1To8;
williamr@2
  1866
	/** Sum of the TSSTServices9To16 capability constants. */
williamr@2
  1867
		TUint8 iServices9To16;
williamr@2
  1868
	/** Sum of the TSSTServices17To24 capability constants. */
williamr@2
  1869
		TUint8 iServices17To24;
williamr@2
  1870
	/** Sum of the TSSTServices25To32 capability constants. */
williamr@2
  1871
		TUint8 iServices25To32;
williamr@2
  1872
	/** Sum of the TSSTServices33To40 capability constants. */
williamr@2
  1873
		TUint8 iServices33To40;
williamr@2
  1874
	/** Sum of the TSSTServices41To48 capability constants. */
williamr@2
  1875
		TUint8 iServices41To48;
williamr@2
  1876
	/** Sum of the TSSTServices49To56 capability constants. */
williamr@2
  1877
		TUint8 iServices49To56;
williamr@2
  1878
		};
williamr@2
  1879
williamr@2
  1880
/** A typedef'd packaged TMobilePhoneServiceTableV1 passing through a generic API 
williamr@2
  1881
function member. */
williamr@2
  1882
	typedef TPckg<TMobilePhoneServiceTableV1> TMobilePhoneServiceTableV1Pckg;
williamr@2
  1883
williamr@2
  1884
	enum { KAIDSize=16 };
williamr@2
  1885
williamr@2
  1886
/** A typedef'd buffer to hold the application identifier (AID) that identifies 
williamr@2
  1887
the USIM application in a UICC. The AID consists of a Registered application 
williamr@2
  1888
provider IDentifier (RID) of 5 bytes and a Proprietary application Identifier 
williamr@2
  1889
eXtension (PIX) of up to 11 bytes. */
williamr@2
  1890
	typedef TBuf8<KAIDSize> TAID; 
williamr@2
  1891
williamr@2
  1892
	class TMobilePhoneServiceTableV2 : public TMobilePhoneServiceTableV1
williamr@2
  1893
/** Defines contents of the specified Service Table on the ICC for the v2.0 version 
williamr@2
  1894
of the API. 
williamr@2
  1895
*/
williamr@2
  1896
		{
williamr@2
  1897
	public:
williamr@2
  1898
		IMPORT_C TMobilePhoneServiceTableV2();
williamr@2
  1899
	public:
williamr@2
  1900
	/** The application identifier. */
williamr@2
  1901
		TAID   iAID;
williamr@2
  1902
		};
williamr@2
  1903
williamr@2
  1904
/** A typedef'd packaged TMobilePhoneServiceTableV2 passing through a generic API 
williamr@2
  1905
function member. */
williamr@2
  1906
	typedef TPckg<TMobilePhoneServiceTableV2> TMobilePhoneServiceTableV2Pckg;
williamr@2
  1907
	
williamr@2
  1908
	class TMobilePhoneServiceTableV8 : public TMobilePhoneServiceTableV2
williamr@2
  1909
	/** Defines contents of the specified Service Table on the UICC for the v8.0 version 
williamr@2
  1910
	of the API.
williamr@2
  1911
	See section 4.2.8 of 3GPP TS 31.102 v6.18.0 of the API. 
williamr@2
  1912
	*/	
williamr@2
  1913
		{
williamr@2
  1914
	public:
williamr@2
  1915
		IMPORT_C TMobilePhoneServiceTableV8();	
williamr@2
  1916
	public:
williamr@2
  1917
	/** Sum of the TSSTServices57To64 capability constants. */
williamr@2
  1918
		TUint8 	iServices57To64;
williamr@2
  1919
	/** Sum of the TSSTServices65To72 capability constants. */		
williamr@2
  1920
		TUint8	iServices65To72;	
williamr@2
  1921
		};
williamr@2
  1922
	
williamr@2
  1923
/** A typedef'd packaged TMobilePhoneServiceTableV8 passing through a generic API 
williamr@2
  1924
function member. */	
williamr@2
  1925
	typedef TPckg<TMobilePhoneServiceTableV8> TMobilePhoneServiceTableV8Pckg;	
williamr@2
  1926
 
williamr@2
  1927
	IMPORT_C void GetServiceTable(TRequestStatus& aReqStatus, TMobilePhoneServiceTable aTable, TDes8& aTableData) const;
williamr@2
  1928
	
williamr@2
  1929
	
williamr@2
  1930
	/***********************************************************************************/
williamr@2
  1931
	//
williamr@2
  1932
	// MobilePhonePower functional unit
williamr@2
  1933
	//
williamr@2
  1934
	/***********************************************************************************/
williamr@2
  1935
williamr@2
  1936
/** Phone supported battery information.
williamr@2
  1937
williamr@2
  1938
Modes: Common */
williamr@2
  1939
	enum TMobilePhoneBatteryCaps
williamr@2
  1940
		{
williamr@2
  1941
	/** Phone supports requests to get the current battery information. */
williamr@2
  1942
		KCapsGetBatteryInfo=0x00000001,
williamr@2
  1943
	/** Phone supports requests for notification of change in battery information. */
williamr@2
  1944
		KCapsNotifyBatteryInfoChange=0x00000002
williamr@2
  1945
		};
williamr@2
  1946
williamr@2
  1947
	IMPORT_C TInt GetBatteryCaps(TUint32& aCaps) const; 
williamr@2
  1948
williamr@2
  1949
/** The mobile phone battery status.
williamr@2
  1950
williamr@2
  1951
Modes: Common */
williamr@2
  1952
	enum TMobilePhoneBatteryStatus
williamr@2
  1953
		{
williamr@2
  1954
	/** The TSY can not determine the phone's current power status. */
williamr@2
  1955
		EPowerStatusUnknown,
williamr@2
  1956
	/** The phone is currently powered by a battery. */
williamr@2
  1957
		EPoweredByBattery,
williamr@2
  1958
	/** A battery is connected, but the phone is externally powered. */
williamr@2
  1959
		EBatteryConnectedButExternallyPowered,
williamr@2
  1960
	/** No battery is connected. */
williamr@2
  1961
		ENoBatteryConnected,
williamr@2
  1962
	/** Power fault. */
williamr@2
  1963
		EPowerFault
williamr@2
  1964
		};
williamr@2
  1965
williamr@2
  1966
	class TMobilePhoneBatteryInfoV1 : public TMultimodeType
williamr@2
  1967
/** Defines contents of the battery status of the phone.
williamr@2
  1968
williamr@2
  1969
@see GetBatteryInfo()
williamr@2
  1970
@see NotifyBatteryInfoChange()
williamr@2
  1971
*/
williamr@2
  1972
		{
williamr@2
  1973
	public:
williamr@2
  1974
		IMPORT_C TMobilePhoneBatteryInfoV1();
williamr@2
  1975
	public:
williamr@2
  1976
	/** The power and battery status.
williamr@2
  1977
	
williamr@2
  1978
	@see TMobilePhoneBatteryStatus */
williamr@2
  1979
		TMobilePhoneBatteryStatus iStatus;
williamr@2
  1980
	/** The percentage battery charge level. */
williamr@2
  1981
		TUint iChargeLevel;
williamr@2
  1982
		};
williamr@2
  1983
williamr@2
  1984
	IMPORT_C void GetBatteryInfo(TRequestStatus& aReqStatus, TMobilePhoneBatteryInfoV1& aInfo) const;
williamr@2
  1985
	IMPORT_C void NotifyBatteryInfoChange(TRequestStatus& aReqStatus, TMobilePhoneBatteryInfoV1& aInfo) const;
williamr@2
  1986
williamr@2
  1987
	
williamr@2
  1988
	/***********************************************************************************/
williamr@2
  1989
	//
williamr@2
  1990
	// MobilePhoneSignal functional unit
williamr@2
  1991
	//	
williamr@2
  1992
	/***********************************************************************************/
williamr@2
  1993
williamr@2
  1994
/** The mobile phone signal strength capabilities.
williamr@2
  1995
williamr@2
  1996
Modes: Common */
williamr@2
  1997
	enum TMobilePhoneSignalCaps
williamr@2
  1998
		{
williamr@2
  1999
	/** Phone supports requests to get the current signal strength. */
williamr@2
  2000
		KCapsGetSignalStrength=0x00000001,
williamr@2
  2001
	/** Phone supports requests for notification of change in signal strength. */
williamr@2
  2002
		KCapsNotifySignalStrengthChange=0x00000002
williamr@2
  2003
		};
williamr@2
  2004
williamr@2
  2005
	IMPORT_C TInt GetSignalCaps(TUint32& aCaps) const; 
williamr@2
  2006
	IMPORT_C void GetSignalStrength(TRequestStatus& aReqStatus, TInt32& aSignalStrength, TInt8& aBar) const;
williamr@2
  2007
	IMPORT_C void NotifySignalStrengthChange(TRequestStatus& aReqStatus, TInt32& aSignalStrength, TInt8& aBar) const;
williamr@2
  2008
williamr@2
  2009
	/***********************************************************************************/
williamr@2
  2010
	//
williamr@2
  2011
	// MobilePhoneIndicator functional unit
williamr@2
  2012
	//
williamr@2
  2013
	/***********************************************************************************/
williamr@2
  2014
	
williamr@2
  2015
/** The mobile phone indicator capabilities supported.
williamr@2
  2016
williamr@2
  2017
Modes: Common */
williamr@2
  2018
	enum TMobilePhoneIndicatorCaps
williamr@2
  2019
		{
williamr@2
  2020
	/** Phone supports requests to get the current value of all supported indicators. */
williamr@2
  2021
		KCapsGetIndicator=0x00000001,
williamr@2
  2022
	/** Phone supports requests for notification of change in the supported indicators. */
williamr@2
  2023
		KCapsNotifyIndicatorChange=0x00000002
williamr@2
  2024
		};
williamr@2
  2025
williamr@2
  2026
/** The mobile phone indicators.
williamr@2
  2027
williamr@2
  2028
Modes Common */
williamr@2
  2029
	enum TMobilePhoneIndicators
williamr@2
  2030
		{
williamr@2
  2031
	/** If bit-flag is set to '1' indicates that the battery charger is connected to 
williamr@2
  2032
	the phone. If bit-flag is set to '0' indicates that the battery charger is 
williamr@2
  2033
	disconnected. */
williamr@2
  2034
		KIndChargerConnected=0x00000001,
williamr@2
  2035
	/** If bit-flag is set to '1' indicates that network service is available. If bit-flag 
williamr@2
  2036
	is set to '0' indicates that network service is unavailable. */
williamr@2
  2037
		KIndNetworkAvailable=0x00000002,
williamr@2
  2038
	/** If bit-flag is set to '1' indicates that a call is in progress. If set to '0' 
williamr@2
  2039
	indicates that a call is not in progress. */
williamr@2
  2040
		KIndCallInProgress=0x00000004
williamr@2
  2041
		};
williamr@2
  2042
williamr@2
  2043
	IMPORT_C TInt GetIndicatorCaps(TUint32& aActionCaps, TUint32& aIndCaps) const; 
williamr@2
  2044
	IMPORT_C void GetIndicator(TRequestStatus& aReqStatus, TUint32& aIndicator) const;
williamr@2
  2045
	IMPORT_C void NotifyIndicatorChange(TRequestStatus& aReqStatus, TUint32& aIndicator) const;
williamr@2
  2046
williamr@2
  2047
	
williamr@2
  2048
	/***********************************************************************************/
williamr@2
  2049
	//
williamr@2
  2050
	// MobilePhoneIdentity functional unit
williamr@2
  2051
	//
williamr@2
  2052
	/***********************************************************************************/
williamr@2
  2053
	
williamr@2
  2054
/** Defines Identity Capabilities.
williamr@2
  2055
williamr@2
  2056
Modes: Common */
williamr@2
  2057
	enum TMobilePhoneIdentityCaps
williamr@2
  2058
		{
williamr@2
  2059
	/** Phone can return the identity of its manufacturer. */
williamr@2
  2060
		KCapsGetManufacturer=0x00000001,
williamr@2
  2061
	/** Phone can return the identity of its model. */
williamr@2
  2062
		KCapsGetModel=0x00000002,
williamr@2
  2063
	/** Phone can return the identity of its revision. */
williamr@2
  2064
		KCapsGetRevision=0x00000004,
williamr@2
  2065
	/** Phone can return the identity of its serial number. */
williamr@2
  2066
		KCapsGetSerialNumber=0x00000008,
williamr@2
  2067
	/** Phone can return the identity of its subscriber. */
williamr@2
  2068
		KCapsGetSubscriberId=0x00000010
williamr@2
  2069
		};
williamr@2
  2070
williamr@2
  2071
	IMPORT_C TInt GetIdentityCaps(TUint32& aCaps) const;
williamr@2
  2072
williamr@2
  2073
	enum {	KPhoneManufacturerIdSize=50	};
williamr@2
  2074
	enum {	KPhoneModelIdSize=50 };
williamr@2
  2075
	enum {	KPhoneRevisionIdSize=50	};
williamr@2
  2076
	enum {	KPhoneSerialNumberSize=50 };
williamr@2
  2077
	
williamr@2
  2078
	class TMobilePhoneIdentityV1 : public TMultimodeType
williamr@2
  2079
/** Defines the mobile phone identity.
williamr@2
  2080
williamr@2
  2081
@see GetPhoneId() */
williamr@2
  2082
		{
williamr@2
  2083
	public:
williamr@2
  2084
		IMPORT_C TMobilePhoneIdentityV1();
williamr@2
  2085
	public:
williamr@2
  2086
	/** Phone manufacturer identification, in character string format. */
williamr@2
  2087
		TBuf<KPhoneManufacturerIdSize> iManufacturer;
williamr@2
  2088
	/** Phone model identification, in character string format. */
williamr@2
  2089
		TBuf<KPhoneModelIdSize> iModel;
williamr@2
  2090
	/** Phone revision identification, in character string format. */
williamr@2
  2091
		TBuf<KPhoneRevisionIdSize> iRevision;
williamr@2
  2092
	/** Phone serial number (IMEI or ESN), in character string format. */
williamr@2
  2093
		TBuf<KPhoneSerialNumberSize> iSerialNumber;
williamr@2
  2094
		};
williamr@2
  2095
williamr@2
  2096
	IMPORT_C void GetPhoneId(TRequestStatus& aReqStatus, TMobilePhoneIdentityV1& aId) const;
williamr@2
  2097
williamr@2
  2098
	enum {	KIMSISize = 15 };
williamr@2
  2099
williamr@2
  2100
/** A typedef'd buffer to hold the mobile phone subscriber id. */
williamr@2
  2101
	typedef TBuf<KIMSISize> TMobilePhoneSubscriberId;
williamr@2
  2102
williamr@2
  2103
	IMPORT_C void GetSubscriberId(TRequestStatus& aReqStatus, TMobilePhoneSubscriberId& aId) const;
williamr@2
  2104
williamr@2
  2105
	/***********************************************************************************/
williamr@2
  2106
	//
williamr@2
  2107
	// MobilePhoneDTMF functional unit
williamr@2
  2108
	//
williamr@2
  2109
	/***********************************************************************************/
williamr@2
  2110
	
williamr@2
  2111
/** DTMF Capabilities.
williamr@2
  2112
williamr@2
  2113
Modes: Common */
williamr@2
  2114
	enum TMobilePhoneDTMFCaps
williamr@2
  2115
		{
williamr@2
  2116
	/** Capability to send a string of DTMF tones, containing one or more tone(s). */
williamr@2
  2117
		KCapsSendDTMFString=0x00000001,
williamr@2
  2118
	/** Capability to send one DTMF tone, using start and stop DTMF tone function member. */
williamr@2
  2119
		KCapsSendDTMFSingleTone=0x00000002,
williamr@2
  2120
		};
williamr@2
  2121
		
williamr@2
  2122
	/**
williamr@2
  2123
	DTMF tone operation event.
williamr@2
  2124
	*/
williamr@2
  2125
	enum TMobilePhoneDTMFEvent
williamr@2
  2126
		{
williamr@2
  2127
		/**
williamr@2
  2128
		 Start sending of a Dtmf tone operation has been acknowledged from the MSC.
williamr@2
  2129
		*/
williamr@2
  2130
		EStartDtmfTone,
williamr@2
  2131
		/**
williamr@2
  2132
		 Stop sending of a Dtmf tone operation has been acknowledged from the MSC.
williamr@2
  2133
		*/
williamr@2
  2134
		EStopDtmfTone,
williamr@2
  2135
		};
williamr@2
  2136
		
williamr@2
  2137
williamr@2
  2138
	IMPORT_C TInt GetDTMFCaps(TUint32& aCaps) const; 
williamr@2
  2139
	IMPORT_C void NotifyDTMFCapsChange(TRequestStatus& aReqStatus, TUint32& aCaps) const;
williamr@2
  2140
williamr@2
  2141
	IMPORT_C void SendDTMFTones(TRequestStatus& aReqStatus, const TDesC& aTones) const;
williamr@2
  2142
	IMPORT_C void ReadDTMFTones(TRequestStatus& aReqStatus, TDes& aTones) const;
williamr@2
  2143
	IMPORT_C TInt StartDTMFTone(TChar aTone) const;
williamr@2
  2144
	IMPORT_C TInt StopDTMFTone() const;
williamr@2
  2145
williamr@2
  2146
	IMPORT_C void NotifyStopInDTMFString(TRequestStatus& aRequestStatus) const;
williamr@2
  2147
	IMPORT_C TInt ContinueDTMFStringSending(TBool aContinue) const;
williamr@2
  2148
	IMPORT_C void NotifyDTMFEvent(TRequestStatus& aReqStatus, TMobilePhoneDTMFEvent& aEvent) const;
williamr@2
  2149
williamr@2
  2150
	/***********************************************************************************/
williamr@2
  2151
	//
williamr@2
  2152
	// MobilePhoneNetwork functional unit
williamr@2
  2153
	//
williamr@2
  2154
	/***********************************************************************************/
williamr@2
  2155
	
williamr@2
  2156
/** Defines Network Capabilities.
williamr@2
  2157
williamr@2
  2158
Modes: Common */
williamr@2
  2159
	enum TMobilePhoneNetworkCaps
williamr@2
  2160
		{
williamr@2
  2161
	/** The phone supports retrieval of current registration status. */
williamr@2
  2162
		KCapsGetRegistrationStatus=0x00000001,
williamr@2
  2163
	/** The phone supports notifications of change in registration status. */
williamr@2
  2164
		KCapsNotifyRegistrationStatus=0x00000002,
williamr@2
  2165
	/** The phone supports retrieval of current mode. */
williamr@2
  2166
		KCapsGetCurrentMode=0x00000004,
williamr@2
  2167
	/** The phone supports notification of change in mode. */
williamr@2
  2168
		KCapsNotifyMode=0x00000008,
williamr@2
  2169
	/** The phone supports retrieval of current network information. */
williamr@2
  2170
		KCapsGetCurrentNetwork=0x00000010,
williamr@2
  2171
	/** The phone supports notification of change of current network. */
williamr@2
  2172
		KCapsNotifyCurrentNetwork=0x00000020,
williamr@2
  2173
	/** The phone supports retrieval of home network information. */
williamr@2
  2174
		KCapsGetHomeNetwork=0x00000040,
williamr@2
  2175
	/** The phone supports retrieval of a list of detected networks. */
williamr@2
  2176
		KCapsGetDetectedNetworks=0x00000080,
williamr@2
  2177
	/** The phone supports manual network selection mode. */
williamr@2
  2178
		KCapsManualNetworkSelection=0x00000100,
williamr@2
  2179
	/** The phone supports retrieval of time and date information (NITZ) received from 
williamr@2
  2180
	the network. */
williamr@2
  2181
		KCapsGetNITZInfo=0x00000200,
williamr@2
  2182
	/** The phone supports notification of new updates of time & date information (NITZ) 
williamr@2
  2183
	received from the network. */
williamr@2
  2184
		KCapsNotifyNITZInfo=0x00000400
williamr@2
  2185
		};
williamr@2
  2186
williamr@2
  2187
	IMPORT_C TInt GetNetworkCaps(TUint32& aCaps) const;
williamr@2
  2188
williamr@2
  2189
/** Defines Current Network Modes.
williamr@2
  2190
williamr@2
  2191
Modes: Common */
williamr@2
  2192
	enum TMobilePhoneNetworkMode
williamr@2
  2193
		{
williamr@2
  2194
	/** Network mode is unknown.
williamr@2
  2195
	
williamr@2
  2196
	Modes: Common */
williamr@2
  2197
		ENetworkModeUnknown,
williamr@2
  2198
	/** ME is not registered.
williamr@2
  2199
	
williamr@2
  2200
	Modes: Common */
williamr@2
  2201
		ENetworkModeUnregistered,
williamr@2
  2202
	/** GSM/GPRS or DCS1800 network. */
williamr@2
  2203
		ENetworkModeGsm,
williamr@2
  2204
	/** AMPS network.
williamr@2
  2205
	
williamr@2
  2206
	Modes: CDMA */
williamr@2
  2207
		ENetworkModeAmps,
williamr@2
  2208
	/** CDMA (IS-95) network.
williamr@2
  2209
	
williamr@2
  2210
	Modes: CDMA */
williamr@2
  2211
		ENetworkModeCdma95,
williamr@2
  2212
	/** CDMA (cdma2000) network.
williamr@2
  2213
	
williamr@2
  2214
	Modes: CDMA */
williamr@2
  2215
		ENetworkModeCdma2000,
williamr@2
  2216
	/** WCDMA  (UTRA Frequency Division Duplex (FDD)) network.
williamr@2
  2217
	
williamr@2
  2218
	Modes: WCDMA */
williamr@2
  2219
		ENetworkModeWcdma,
williamr@2
  2220
	/** TD-CDMA (UTRA Time Division Duplex (TDD)) network.
williamr@2
  2221
	
williamr@2
  2222
	Modes: WCDMA */	
williamr@2
  2223
		ENetworkModeTdcdma
williamr@2
  2224
		};
williamr@2
  2225
williamr@2
  2226
	IMPORT_C TInt GetCurrentMode(TMobilePhoneNetworkMode& aNetworkMode) const;
williamr@2
  2227
	IMPORT_C void NotifyModeChange(TRequestStatus& aReqStatus, TMobilePhoneNetworkMode& aNetworkMode) const;
williamr@2
  2228
williamr@2
  2229
/** Phone network status.
williamr@2
  2230
williamr@2
  2231
Modes: Common */
williamr@2
  2232
	enum TMobilePhoneNetworkStatus
williamr@2
  2233
		{
williamr@2
  2234
	/** Status is unknown. */
williamr@2
  2235
		ENetworkStatusUnknown,
williamr@2
  2236
	/** A network that the ME is allowed to register to. */
williamr@2
  2237
		ENetworkStatusAvailable,
williamr@2
  2238
	/** The currently registered network. */
williamr@2
  2239
		ENetworkStatusCurrent,
williamr@2
  2240
	/** A network that the ME is not allowed to register to. */
williamr@2
  2241
		ENetworkStatusForbidden
williamr@2
  2242
		};
williamr@2
  2243
williamr@2
  2244
/** Mobile phone network band information.
williamr@2
  2245
williamr@2
  2246
Modes: CDMA */
williamr@2
  2247
	enum TMobilePhoneNetworkBandInfo
williamr@2
  2248
		{
williamr@2
  2249
	/** The current band and band class is unknown. */
williamr@2
  2250
		EBandUnknown,
williamr@2
  2251
	/** The network operates at 800MHz on Band A. */
williamr@2
  2252
		E800BandA,
williamr@2
  2253
	/** The network operates at 800MHz on Band B. */
williamr@2
  2254
		E800BandB,
williamr@2
  2255
	/** The network operates at 800MHz on Band C. */
williamr@2
  2256
		E800BandC,
williamr@2
  2257
	/** The network operates at 1900MHz on Band A. */
williamr@2
  2258
		E1900BandA,
williamr@2
  2259
	/** The network operates at 1900MHz on Band B. */
williamr@2
  2260
		E1900BandB,
williamr@2
  2261
	/** The network operates at 1900MHz on Band C. */
williamr@2
  2262
		E1900BandC,
williamr@2
  2263
	/** The network operates at 1900MHz on Band D. */
williamr@2
  2264
		E1900BandD,
williamr@2
  2265
	/** The network operates at 1900MHz on Band E. */
williamr@2
  2266
		E1900BandE,
williamr@2
  2267
	/** The network operates at 1900MHz on Band F. */
williamr@2
  2268
		E1900BandF
williamr@2
  2269
		};
williamr@2
  2270
williamr@2
  2271
/** A typedef'd buffer to hold the network display tag */
williamr@2
  2272
	typedef TBuf<30> TMobilePhoneNetworkDisplayTag;
williamr@2
  2273
/** A typedef'd buffer to hold the network long name. */
williamr@2
  2274
	typedef TBuf<20> TMobilePhoneNetworkLongName;		
williamr@2
  2275
/** A typedef'd buffer to hold the network short name. */
williamr@2
  2276
	typedef TBuf<10> TMobilePhoneNetworkShortName;
williamr@2
  2277
williamr@2
  2278
/** A typedef'd buffer to hold the network country code. */
williamr@2
  2279
	typedef TBuf<4> TMobilePhoneNetworkCountryCode;		// MCC in GSM and CDMA
williamr@2
  2280
/** A typedef'd buffer to hold the network identity. */
williamr@2
  2281
	typedef TBuf<8> TMobilePhoneNetworkIdentity;		// MNC in GSM and SID or NID in CDMA 
williamr@2
  2282
williamr@2
  2283
	
williamr@2
  2284
williamr@2
  2285
	class TMobilePhoneNetworkInfoV1 : public TMultimodeType
williamr@2
  2286
	/** Defines information related to a mobile phone network.
williamr@2
  2287
williamr@2
  2288
	@see GetCurrentNetwork()
williamr@2
  2289
	@see NotifyCurrentNetworkChange()
williamr@2
  2290
	@see GetHomeNetwork()
williamr@2
  2291
	@publishedPartner
williamr@2
  2292
	@released */
williamr@2
  2293
		{
williamr@2
  2294
	public:
williamr@2
  2295
		IMPORT_C TMobilePhoneNetworkInfoV1();
williamr@2
  2296
	public:
williamr@2
  2297
		void InternalizeL(RReadStream& aStream);
williamr@2
  2298
		void ExternalizeL(RWriteStream& aStream) const;
williamr@2
  2299
	public:
williamr@2
  2300
	/** Mode of the network.
williamr@2
  2301
	
williamr@2
  2302
	Modes: Common
williamr@2
  2303
	
williamr@2
  2304
	@see TMobilePhoneNetworkMode */
williamr@2
  2305
		TMobilePhoneNetworkMode iMode;
williamr@2
  2306
	/** Status of the network
williamr@2
  2307
	
williamr@2
  2308
	Modes: Common
williamr@2
  2309
	
williamr@2
  2310
	@see TMobilePhoneNetworkStatus */
williamr@2
  2311
		TMobilePhoneNetworkStatus iStatus;
williamr@2
  2312
	/** The band and band class of the CDMA network operator.
williamr@2
  2313
williamr@2
  2314
	Modes: CDMA
williamr@2
  2315
	
williamr@2
  2316
	@see TMobilePhoneNetworkBandInfo */
williamr@2
  2317
		TMobilePhoneNetworkBandInfo iBandInfo;
williamr@2
  2318
	/** The MCC of the network.
williamr@2
  2319
	
williamr@2
  2320
	Modes: Common
williamr@2
  2321
	
williamr@2
  2322
	@see TMobilePhoneNetworkCountryCode */
williamr@2
  2323
		TMobilePhoneNetworkCountryCode iCountryCode;
williamr@2
  2324
	/** The system identity (SID) of the CDMA network.
williamr@2
  2325
	
williamr@2
  2326
	Modes: CDMA
williamr@2
  2327
	
williamr@2
  2328
	@see TMobilePhoneNetworkIdentity */
williamr@2
  2329
		TMobilePhoneNetworkIdentity iCdmaSID;
williamr@2
  2330
	/** The system identity (SID) of the AMPS network.
williamr@2
  2331
	
williamr@2
  2332
	Modes: CDMA
williamr@2
  2333
	
williamr@2
  2334
	@see TMobilePhoneNetworkIdentity */
williamr@2
  2335
		TMobilePhoneNetworkIdentity iAnalogSID;
williamr@2
  2336
	/** The network identity (NID in CDMA and MNC in GSM).
williamr@2
  2337
	
williamr@2
  2338
	Modes: Common
williamr@2
  2339
	
williamr@2
  2340
	@see TMobilePhoneNetworkIdentity */
williamr@2
  2341
		TMobilePhoneNetworkIdentity iNetworkId;
williamr@2
  2342
	/** The alpha-tag displayed when this is the serving network.
williamr@2
  2343
	
williamr@2
  2344
	Modes: Common
williamr@2
  2345
	
williamr@2
  2346
	@see TMobilePhoneNetworkDisplayTag */
williamr@2
  2347
		TMobilePhoneNetworkDisplayTag iDisplayTag;
williamr@2
  2348
	/** The short name (up to 10 characters) of the network operator.
williamr@2
  2349
	
williamr@2
  2350
	Modes: GSM/WCDMA
williamr@2
  2351
	
williamr@2
  2352
	@see TMobilePhoneNetworkShortName */
williamr@2
  2353
		TMobilePhoneNetworkShortName iShortName;
williamr@2
  2354
	/** The long name (up to 20 characters) of the network operator.
williamr@2
  2355
	
williamr@2
  2356
	Modes: GSM/WCDMA
williamr@2
  2357
	
williamr@2
  2358
	@see TMobilePhoneNetworkLongName */
williamr@2
  2359
		TMobilePhoneNetworkLongName iLongName;
williamr@2
  2360
		};
williamr@2
  2361
	
williamr@2
  2362
/** A typedef'd packaged TMobilePhoneNetworkInfoV1 for passing through a generic 
williamr@2
  2363
API function member. */
williamr@2
  2364
	typedef TPckg<TMobilePhoneNetworkInfoV1>  TMobilePhoneNetworkInfoV1Pckg;
williamr@2
  2365
	
williamr@2
  2366
/** The access technology that the network is based on.
williamr@2
  2367
williamr@2
  2368
Modes: Common */
williamr@2
  2369
	enum TMobilePhoneNetworkAccess
williamr@2
  2370
		{
williamr@2
  2371
	/** This is used when there is no network activity and therefore no RAT active.
williamr@2
  2372
	
williamr@2
  2373
	Modes: Common */
williamr@2
  2374
		ENetworkAccessUnknown,
williamr@2
  2375
	/** The access technology is GSM.
williamr@2
  2376
	
williamr@2
  2377
	Modes: GSM */
williamr@2
  2378
		ENetworkAccessGsm,
williamr@2
  2379
	/** The access technology is GSM COMPACT. However GSM COMPACT systems which use 
williamr@2
  2380
	GSM frequency bands but with the CBPCCH broadcast channel are considered as 
williamr@2
  2381
	a separate access technology from GSM.
williamr@2
  2382
	
williamr@2
  2383
	Modes: GSM */
williamr@2
  2384
		ENetworkAccessGsmCompact,
williamr@2
  2385
	/** The access technology is UTRAN (UMTS Network).
williamr@2
  2386
	
williamr@2
  2387
	Modes: WCDMA */
williamr@2
  2388
		ENetworkAccessUtran,					
williamr@2
  2389
	/** Analogue Cellular 
williamr@2
  2390
	
williamr@2
  2391
	Modes: CDMA */
williamr@2
  2392
		ENetworkAccessAmpsCellular,
williamr@2
  2393
	/** CDMA Cellular - Standard channels 
williamr@2
  2394
williamr@2
  2395
	Modes: CDMA */
williamr@2
  2396
		 ENetworkAccessCdmaCellularStdChannel,
williamr@2
  2397
	/** CDMA Cellular - Custom channels 
williamr@2
  2398
williamr@2
  2399
	Modes: CDMA */
williamr@2
  2400
		ENetworkAccessCdmaCellularCustomChannel,
williamr@2
  2401
	/** CDMA/Analogue Cellular (cdma first then analogue)
williamr@2
  2402
williamr@2
  2403
	Modes: CDMA */
williamr@2
  2404
		ENetworkAccessCdmaAmpsCellular,
williamr@2
  2405
	/** CDMA PCS - Using blocks 
williamr@2
  2406
	
williamr@2
  2407
	Modes: CDMA */
williamr@2
  2408
		ENetworkAccessCdmaPcsUsingBlocks,
williamr@2
  2409
	/** CDMA PCS - Using channels 
williamr@2
  2410
	
williamr@2
  2411
	Modes: CDMA */
williamr@2
  2412
		ENetworkAccessCdmaPcsUsingNetworkAccessChannels,
williamr@2
  2413
	/** CDMA JTACS - Standard channels 
williamr@2
  2414
	
williamr@2
  2415
	Modes: CDMA */
williamr@2
  2416
		ENetworkAccessJTacsStdChannels,
williamr@2
  2417
	/** CDMA JTACS - Custom channels 
williamr@2
  2418
	
williamr@2
  2419
	Modes: CDMA */
williamr@2
  2420
		ENetworkAccessJTacsCustomChannels,
williamr@2
  2421
	/** CDMA 2GHz band - Using channels 
williamr@2
  2422
	
williamr@2
  2423
	Modes: CDMA */
williamr@2
  2424
		ENetworkAccess2GHzBandUsingChannels,
williamr@2
  2425
	/** Generic Acquisition Record for IS-2000 and IS-95 
williamr@2
  2426
	
williamr@2
  2427
	Modes: CDMA */
williamr@2
  2428
		ENetworkAccessGenericAcqRecord2000and95,
williamr@2
  2429
	/** Generic Acquisition Record for IS-856
williamr@2
  2430
	
williamr@2
  2431
	Modes: CDMA */
williamr@2
  2432
		ENetworkAccessGenericAcqRecord856,
williamr@2
  2433
	/** The access technology is GSM and UTRAN (UMTS Network).
williamr@2
  2434
		
williamr@2
  2435
	Modes: GSM and WCDMA */
williamr@2
  2436
		ENetworkAccessGsmAndUtran
williamr@2
  2437
		};
williamr@2
  2438
williamr@2
  2439
	
williamr@2
  2440
williamr@2
  2441
	class TMobilePhoneNetworkInfoV2 : public TMobilePhoneNetworkInfoV1
williamr@2
  2442
	/** The access technology that the network is based on in version v2.0 of the API. 
williamr@2
  2443
	@publishedPartner
williamr@2
  2444
	@released*/
williamr@2
  2445
		{
williamr@2
  2446
	public:
williamr@2
  2447
	/** Default constructor. Network access is set to ENetworkAccessUnknown and iExtensionId 
williamr@2
  2448
	is set to KETelExtMultimodeV2. */
williamr@2
  2449
		IMPORT_C TMobilePhoneNetworkInfoV2();
williamr@2
  2450
	
williamr@2
  2451
	public:
williamr@2
  2452
		void InternalizeL(RReadStream& aStream);
williamr@2
  2453
		void ExternalizeL(RWriteStream& aStream) const;
williamr@2
  2454
	
williamr@2
  2455
	public:
williamr@2
  2456
	/** The type of network access.
williamr@2
  2457
	
williamr@2
  2458
	@see TMobilePhoneNetworkAccess */
williamr@2
  2459
		TMobilePhoneNetworkAccess iAccess;
williamr@2
  2460
		};
williamr@2
  2461
	
williamr@2
  2462
/** A typedef'd packaged TMobilePhoneNetworkInfoV2 for passing through a generic 
williamr@2
  2463
API function member. */
williamr@2
  2464
	typedef TPckg<TMobilePhoneNetworkInfoV2>  TMobilePhoneNetworkInfoV2Pckg;
williamr@2
  2465
williamr@2
  2466
williamr@2
  2467
	class TMobilePhoneNetworkInfoV5 : public TMobilePhoneNetworkInfoV2
williamr@2
  2468
	/** The access technology that the network is based on in version v2.0 of the API. 
williamr@2
  2469
	@publishedPartner
williamr@2
  2470
	@released*/
williamr@2
  2471
		{
williamr@2
  2472
	public:
williamr@2
  2473
		IMPORT_C TMobilePhoneNetworkInfoV5();
williamr@2
  2474
		
williamr@2
  2475
	public:
williamr@2
  2476
		void InternalizeL(RReadStream& aStream);
williamr@2
  2477
		void ExternalizeL(RWriteStream& aStream) const;
williamr@2
  2478
		
williamr@2
  2479
	public:
williamr@2
  2480
	/** HSDPA availability indicator. This information is for display 
williamr@2
  2481
	indication only and shall not be used for any other purpose.
williamr@2
  2482
		
williamr@2
  2483
	Modes: WCDMA */
williamr@2
  2484
		TBool iHsdpaAvailableIndicator;
williamr@2
  2485
williamr@2
  2486
	/** EGPRS availability indicator. This information is for display
williamr@2
  2487
	indication only and shall not be used for any other purpose.
williamr@2
  2488
		
williamr@2
  2489
	Modes: GPRS */
williamr@2
  2490
		TBool iEgprsAvailableIndicator;
williamr@2
  2491
		};
williamr@2
  2492
williamr@2
  2493
/** A typedef'd packaged TMobilePhoneNetworkInfoV5 for passing through a generic 
williamr@2
  2494
API function member. */		
williamr@2
  2495
	typedef TPckg<TMobilePhoneNetworkInfoV5> TMobilePhoneNetworkInfoV5Pckg;
williamr@2
  2496
	
williamr@2
  2497
		
williamr@2
  2498
	class TMobilePhoneNetworkInfoV8 : public TMobilePhoneNetworkInfoV5
williamr@2
  2499
	/** The access technology that the network is based on in version v8.0 of the API. 
williamr@2
  2500
	@publishedPartner
williamr@2
  2501
	@released*/
williamr@2
  2502
		{
williamr@2
  2503
	public:
williamr@2
  2504
		IMPORT_C TMobilePhoneNetworkInfoV8();
williamr@2
  2505
		
williamr@2
  2506
	public:
williamr@2
  2507
		void InternalizeL(RReadStream& aStream);
williamr@2
  2508
		void ExternalizeL(RWriteStream& aStream) const;
williamr@2
  2509
		
williamr@2
  2510
	public:
williamr@2
  2511
	/** HSUPA availability indicator. This information is for display 
williamr@2
  2512
	indication only and shall not be used for any other purpose.
williamr@2
  2513
		
williamr@2
  2514
	Modes: WCDMA */
williamr@2
  2515
		TBool iHsupaAvailableIndicator;
williamr@2
  2516
williamr@2
  2517
		};
williamr@2
  2518
		
williamr@2
  2519
/** A typedef'd packaged TMobilePhoneNetworkInfoV8 for passing through a generic 
williamr@2
  2520
API function member. */		
williamr@2
  2521
	typedef TPckg<TMobilePhoneNetworkInfoV8> TMobilePhoneNetworkInfoV8Pckg;
williamr@2
  2522
williamr@2
  2523
	class TMobilePhoneLocationAreaV1 : public TMultimodeType
williamr@2
  2524
/** Defines the mobile phone location area.
williamr@2
  2525
williamr@2
  2526
@see GetCurrentNetwork()
williamr@2
  2527
@see NotifyCurrentNetworkChange() */
williamr@2
  2528
		{
williamr@2
  2529
	public:
williamr@2
  2530
	/** Constructor. */
williamr@2
  2531
		IMPORT_C TMobilePhoneLocationAreaV1();
williamr@2
  2532
	public:
williamr@2
  2533
	/** Boolean indicating whether the location area is known.
williamr@2
  2534
	
williamr@2
  2535
	Modes: Common */
williamr@2
  2536
		TBool	iAreaKnown;
williamr@2
  2537
	/** Location area code.
williamr@2
  2538
	
williamr@2
  2539
	Modes: GSM/WCDMA */
williamr@2
  2540
		TUint	iLocationAreaCode;
williamr@2
  2541
	/** Cell identity code.
williamr@2
  2542
	
williamr@2
  2543
	Modes: GSM/WCDMA */
williamr@2
  2544
		TUint	iCellId;
williamr@2
  2545
		};
williamr@2
  2546
williamr@2
  2547
	IMPORT_C void GetCurrentNetwork(TRequestStatus& aReqStatus, TDes8& aNetworkInfo, TMobilePhoneLocationAreaV1& aArea) const;
williamr@2
  2548
	IMPORT_C void NotifyCurrentNetworkChange(TRequestStatus& aReqStatus, TDes8& aNetworkInfo, TMobilePhoneLocationAreaV1& aArea) const;
williamr@2
  2549
	IMPORT_C void GetCurrentNetwork(TRequestStatus& aReqStatus, TDes8& aNetworkInfo) const;
williamr@2
  2550
	IMPORT_C void NotifyCurrentNetworkChange(TRequestStatus& aReqStatus, TDes8& aNetworkInfo) const;
williamr@2
  2551
williamr@2
  2552
	IMPORT_C void GetHomeNetwork(TRequestStatus& aReqStatus, TDes8& aNetworkInfo) const;
williamr@2
  2553
	IMPORT_C void GetHomeNetworkSearchPeriod(TRequestStatus& aReqStatus, TInt& aSearchIntv) const;
williamr@2
  2554
	IMPORT_C void GetLastUsedAccessTechnology(TRequestStatus& aReqStatus, TMobilePhoneNetworkAccess& aAccessTech) const;
williamr@2
  2555
	
williamr@2
  2556
	/** Cell mode */
williamr@2
  2557
	enum TCellMode
williamr@2
  2558
		{
williamr@2
  2559
		/** Unknown mode */
williamr@2
  2560
		ECellModeUnknown,
williamr@2
  2561
		/** GSM mode */
williamr@2
  2562
		ECellModeGsm,
williamr@2
  2563
		/** WCDMA mode */
williamr@2
  2564
		ECellModeWcdma
williamr@2
  2565
		};
williamr@2
  2566
williamr@2
  2567
	/** Cell Information Status 
williamr@2
  2568
	@publishedPartner	
williamr@2
  2569
	@released */
williamr@2
  2570
	enum TCellInfoStatus
williamr@2
  2571
		{
williamr@2
  2572
		/** Unknown status: not known if Cell ID is current or not */
williamr@2
  2573
		ECellInfoStatusUnknown,
williamr@2
  2574
		/** Not current status: the Cell ID value is the ID of the last known cell */
williamr@2
  2575
		ECellInfoStatusNotCurrent,
williamr@2
  2576
		/** Current Status: the Cell ID value is the ID of the present cell */
williamr@2
  2577
		ECellInfoStatusCurrent
williamr@2
  2578
		};
williamr@2
  2579
	
williamr@2
  2580
	/** Defined type to represent the Timing Advance. See 3GPP TS 04.18, section 10.5.2.40. 
williamr@2
  2581
	 * Valid values for the Timing Advance are 0-255. A negative value indicates that
williamr@2
  2582
	 * no Timing Advance information is available. */
williamr@2
  2583
	typedef TInt16 TGsmTimingAdvance;
williamr@2
  2584
	
williamr@2
  2585
	/**	Encapsulates cell specific information.	
williamr@2
  2586
	@publishedPartner	
williamr@2
  2587
	@released */
williamr@2
  2588
	class TMobilePhoneCellInfoV9 : public TMultimodeType
williamr@2
  2589
		{
williamr@2
  2590
	public:
williamr@2
  2591
		IMPORT_C TMobilePhoneCellInfoV9();
williamr@2
  2592
		
williamr@2
  2593
	public:
williamr@2
  2594
		/** The cell mode 
williamr@2
  2595
		@see TCellMode */
williamr@2
  2596
		TCellMode iMode;
williamr@2
  2597
		/** The current cell ID */
williamr@2
  2598
		TUint iCellId;
williamr@2
  2599
		/** The Timing Advance. Relevant only if iMode is ECellModeGsm.
williamr@2
  2600
		 @see TGsmTimingAdvance */
williamr@2
  2601
		TGsmTimingAdvance iTimingAdvance;
williamr@2
  2602
		/** The status of the cell information. Indicates whether the Cell ID is
williamr@2
  2603
		 * up-to-date.
williamr@2
  2604
		 @see TCellInfoStatus */
williamr@2
  2605
		TCellInfoStatus iStatus;
williamr@2
  2606
		};				
williamr@2
  2607
williamr@2
  2608
	/** Packaged TMobilePhoneCellInfoV9 data structure. 
williamr@2
  2609
	@see TMobilePhoneCellInfoV9 */
williamr@2
  2610
	typedef TPckg<TMobilePhoneCellInfoV9> TMobilePhoneCellInfoV9Pckg;
williamr@2
  2611
	
williamr@2
  2612
	IMPORT_C void GetCellInfo(TRequestStatus& aReqStatus, TDes8& aCellInfo) const;
williamr@2
  2613
	IMPORT_C void NotifyCellInfoChange(TRequestStatus& aReqStatus, TDes8& aCellInfo) const;
williamr@2
  2614
williamr@2
  2615
	
williamr@2
  2616
/** The registration status of the mobile phone.
williamr@2
  2617
williamr@2
  2618
Modes: WCDMA */
williamr@2
  2619
	enum TMobilePhoneRegistrationStatus
williamr@2
  2620
		{
williamr@2
  2621
	/** Registration status is unknown. */
williamr@2
  2622
		ERegistrationUnknown,
williamr@2
  2623
	/** Not registered. The ME can not detect any other networks and is not currently 
williamr@2
  2624
	searching a new operator to register to. */
williamr@2
  2625
		ENotRegisteredNoService,
williamr@2
  2626
	/** Not registered. The ME can detect other networks on which it is possible to 
williamr@2
  2627
	make emergency calls only. */
williamr@2
  2628
		ENotRegisteredEmergencyOnly,
williamr@2
  2629
	/** Not registered, but the ME is currently searching a new operator to register to. */
williamr@2
  2630
		ENotRegisteredSearching,
williamr@2
  2631
	/** Registered, network busy.
williamr@2
  2632
	
williamr@2
  2633
	Modes: WCDMA */
williamr@2
  2634
		ERegisteredBusy,
williamr@2
  2635
	/** Registered on home network. */
williamr@2
  2636
		ERegisteredOnHomeNetwork,
williamr@2
  2637
	/** Registration denied. */
williamr@2
  2638
		ERegistrationDenied,
williamr@2
  2639
	/** Registered, roaming. */
williamr@2
  2640
		ERegisteredRoaming
williamr@2
  2641
		};
williamr@2
  2642
williamr@2
  2643
	IMPORT_C void GetNetworkRegistrationStatus(TRequestStatus& aReqStatus, TMobilePhoneRegistrationStatus& aStatus) const;
williamr@2
  2644
	IMPORT_C void NotifyNetworkRegistrationStatusChange(TRequestStatus& aReqStatus, TMobilePhoneRegistrationStatus& aStatus) const;
williamr@2
  2645
williamr@2
  2646
/** The network selection function member.
williamr@2
  2647
williamr@2
  2648
Modes: Common */
williamr@2
  2649
	enum TMobilePhoneSelectionMethod
williamr@2
  2650
		{
williamr@2
  2651
	/** Network selection function member is unknown.
williamr@2
  2652
	
williamr@2
  2653
	Modes: Common */
williamr@2
  2654
		ENetworkSelectionUnknown,
williamr@2
  2655
	/** Network is selected automatically by phone.
williamr@2
  2656
	
williamr@2
  2657
	Modes: Common */
williamr@2
  2658
		ENetworkSelectionAutomatic,
williamr@2
  2659
	/** Network is selected manually by user.
williamr@2
  2660
	
williamr@2
  2661
	Modes: GSM/WCDMA */
williamr@2
  2662
		ENetworkSelectionManual,
williamr@2
  2663
	/** Network selection is restricted to home network only
williamr@2
  2664
	
williamr@2
  2665
	Modes: CDMA */
williamr@2
  2666
		ENetworkSelectionHomeOnly
williamr@2
  2667
		};
williamr@2
  2668
williamr@2
  2669
/** The mobile phone band class preferences.
williamr@2
  2670
williamr@2
  2671
Modes: CDMA */
williamr@2
  2672
	enum TMobilePhoneBandClass
williamr@2
  2673
		{
williamr@2
  2674
	/** Band class selection is unknown. */
williamr@2
  2675
		ENetworkBandClassUnknown,
williamr@2
  2676
	/** Phone will select band class A only. */
williamr@2
  2677
		ENetworkBandClassAOnly,
williamr@2
  2678
	/** Phone will select band class B only. */
williamr@2
  2679
		ENetworkBandClassBOnly,
williamr@2
  2680
	/** Phone will prefer to select band class A. */
williamr@2
  2681
		ENetworkBandClassAPreferred,
williamr@2
  2682
	/** Phone will prefer to select band class B. */
williamr@2
  2683
		ENetworkBandClassBPreferred
williamr@2
  2684
		};
williamr@2
  2685
williamr@2
  2686
/** The mobile phone network operation mode preferences.
williamr@2
  2687
williamr@2
  2688
Modes: CDMA */
williamr@2
  2689
	enum TMobilePhoneOperation
williamr@2
  2690
		{
williamr@2
  2691
	/** Network operation mode is unknown. */
williamr@2
  2692
		ENetworkOperationUnknown,
williamr@2
  2693
	/** Phone will select analog operation only. */
williamr@2
  2694
		ENetworkOperationAnalogOnly,
williamr@2
  2695
	/** Phone will select digital/CDMA operation only. */
williamr@2
  2696
		ENetworkOperationDigitalOnly,
williamr@2
  2697
	/** Phone will prefer to select analog operation. */
williamr@2
  2698
		ENetworkOperationAnalogPreferred,
williamr@2
  2699
	/** Phone will prefer to select digital/CDMA operation. */
williamr@2
  2700
		ENetworkOperationDigitalPreferred
williamr@2
  2701
		};
williamr@2
  2702
williamr@2
  2703
	class TMobilePhoneNetworkSelectionV1 : public TMultimodeType
williamr@2
  2704
/** The mobile phone network selection preferences.
williamr@2
  2705
williamr@2
  2706
@see GetNetworkSelectionSetting()
williamr@2
  2707
@see SetNetworkSelectionSetting()
williamr@2
  2708
@see NotifyNetworkSelectionSettingChange()
williamr@2
  2709
@publishedPartner
williamr@2
  2710
@released */
williamr@2
  2711
		{
williamr@2
  2712
	public:
williamr@2
  2713
		IMPORT_C TMobilePhoneNetworkSelectionV1();
williamr@2
  2714
	public:
williamr@2
  2715
	/** Phone's network selection function member.
williamr@2
  2716
	
williamr@2
  2717
	Modes: Common
williamr@2
  2718
	
williamr@2
  2719
	@see TMobilePhoneSelectionMethod */
williamr@2
  2720
		TMobilePhoneSelectionMethod	iMethod;
williamr@2
  2721
	/** Phone's band class setting.
williamr@2
  2722
	
williamr@2
  2723
	Modes: CDMA
williamr@2
  2724
	
williamr@2
  2725
	@see TMobilePhoneBandClass */
williamr@2
  2726
		TMobilePhoneBandClass		iBandClass;
williamr@2
  2727
	/** Phone's CDMA operation mode.
williamr@2
  2728
	
williamr@2
  2729
	Modes: CDMA
williamr@2
  2730
	
williamr@2
  2731
	@see TMobilePhoneOperation */
williamr@2
  2732
		TMobilePhoneOperation		iOperationMode;
williamr@2
  2733
		};
williamr@2
  2734
williamr@2
  2735
/** A typedef'd packaged TMobilePhoneNetworkSelectionV1 for passing through a generic 
williamr@2
  2736
API function member. */
williamr@2
  2737
	typedef TPckg<TMobilePhoneNetworkSelectionV1>  TMobilePhoneNetworkSelectionV1Pckg;
williamr@2
  2738
williamr@2
  2739
	IMPORT_C TInt GetNetworkSelectionSetting(TDes8& aSetting) const;
williamr@2
  2740
	IMPORT_C void SetNetworkSelectionSetting(TRequestStatus& aReqStatus, const TDes8& aSetting) const;
williamr@2
  2741
	IMPORT_C void NotifyNetworkSelectionSettingChange(TRequestStatus& aReqStatus, TDes8& aSetting) const;
williamr@2
  2742
	
williamr@2
  2743
	struct TMobilePhoneNetworkManualSelection
williamr@2
  2744
/** The mobile phone manual network selection parameters.
williamr@2
  2745
williamr@2
  2746
Modes: GSM/WCDMA
williamr@2
  2747
williamr@2
  2748
@see TMobilePhoneNetworkCountryCode */
williamr@2
  2749
		{
williamr@2
  2750
	/** The MCC of the network
williamr@2
  2751
	
williamr@2
  2752
	@see TMobilePhoneNetworkCountryCode */
williamr@2
  2753
		TMobilePhoneNetworkCountryCode iCountry;
williamr@2
  2754
	/** The MNC of the network
williamr@2
  2755
	
williamr@2
  2756
	@see TMobilePhoneNetworkIdentity */
williamr@2
  2757
		TMobilePhoneNetworkIdentity iNetwork;
williamr@2
  2758
		};
williamr@2
  2759
	
williamr@2
  2760
	IMPORT_C void SelectNetwork(TRequestStatus& aReqStatus, TBool aIsManual, const TMobilePhoneNetworkManualSelection& aManualSelection) const;
williamr@2
  2761
williamr@2
  2762
	
williamr@2
  2763
williamr@2
  2764
	 // Used to indicate which TMobilePhoneNITZ fields are currently available
williamr@2
  2765
/** The Phone Network Time Zone Capabilities. */
williamr@2
  2766
	 enum TMobilePhoneNITZCaps
williamr@2
  2767
		{
williamr@2
  2768
	/** Universal Time is available in the current network mode. */
williamr@2
  2769
		KCapsTimeAvailable      = 0x00000001,
williamr@2
  2770
	/** Local time zone is available in the current network mode. */
williamr@2
  2771
		KCapsTimezoneAvailable  = 0x00000002,
williamr@2
  2772
	/** DST is available in the current network mode. */
williamr@2
  2773
		KCapsDSTAvailable       = 0x00000004,
williamr@2
  2774
	/** Short name is available in the current network mode. */
williamr@2
  2775
		KCapsShortNameAvailable = 0x00000008,
williamr@2
  2776
	/** Long name is available in the current network mode. */
williamr@2
  2777
		KCapsLongNameAvailable  = 0x00000010
williamr@2
  2778
		};
williamr@2
  2779
williamr@2
  2780
	class TMobilePhoneNITZ : public TDateTime
williamr@2
  2781
/** Defines time and date information received from a mobile phone network.
williamr@2
  2782
williamr@2
  2783
@see GetNITZInfo()
williamr@2
  2784
@see NotifyNITZInfoChange()
williamr@2
  2785
@publishedPartner
williamr@2
  2786
@released */
williamr@2
  2787
		{
williamr@2
  2788
	public:
williamr@2
  2789
		IMPORT_C TMobilePhoneNITZ();
williamr@2
  2790
		IMPORT_C TMobilePhoneNITZ(TInt aYear, TMonth aMonth, TInt aDay, TInt aHour, TInt aMinute, TInt aSecond, TInt aMicroSecond);		
williamr@2
  2791
	public:
williamr@2
  2792
	/** Bitwise sum of TMobilePhoneNITZCaps constants used to indicate which NITZ fields 
williamr@2
  2793
	are available.
williamr@2
  2794
	
williamr@2
  2795
	Modes: Common */
williamr@2
  2796
		TInt32	                     iNitzFieldsUsed;
williamr@2
  2797
	/** Time zone, expressed in +/- 15 minute offsets from GMT.
williamr@2
  2798
	
williamr@2
  2799
	Modes: Common */
williamr@2
  2800
		TInt                         iTimeZone;
williamr@2
  2801
	/** Daylight Saving Time adjustment for summer time. The adjustment for DST 
williamr@2
  2802
	can be +1h or +2h.
williamr@2
  2803
	
williamr@2
  2804
	Modes: GSM/WCDMA */
williamr@2
  2805
		TInt	                     iDST;
williamr@2
  2806
	/** Network name in "short" representation.
williamr@2
  2807
	
williamr@2
  2808
	Modes: GSM/WCDMA
williamr@2
  2809
	
williamr@2
  2810
	@see TMobilePhoneNetworkShortName */
williamr@2
  2811
		TMobilePhoneNetworkShortName iShortNetworkId;
williamr@2
  2812
	/** Network name in "long" representation.
williamr@2
  2813
	
williamr@2
  2814
	Modes: GSM/WCDMA
williamr@2
  2815
	
williamr@2
  2816
	@see TMobilePhoneNetworkLongName */
williamr@2
  2817
		TMobilePhoneNetworkLongName	 iLongNetworkId;
williamr@2
  2818
		};
williamr@2
  2819
williamr@2
  2820
	IMPORT_C TInt GetNITZInfo(TMobilePhoneNITZ& aNITZInfo) const;
williamr@2
  2821
	IMPORT_C void NotifyNITZInfoChange(TRequestStatus& aReqStatus, TMobilePhoneNITZ& aNITZInfo) const;
williamr@2
  2822
williamr@2
  2823
	enum { KMaxSPNameSize=16 };
williamr@2
  2824
	enum { KMaxPLMNFieldSize=251 };
williamr@2
  2825
williamr@2
  2826
	enum TDisplayRequirements
williamr@2
  2827
		{
williamr@2
  2828
		KDisplayPLMNNotRequired	= 0x00000001,
williamr@2
  2829
		KDisplayPLMNRequired	= 0x00000002,
williamr@2
  2830
		KDisplaySPNRequired		= 0x00000004,
williamr@2
  2831
		KDisplaySPNNotRequired	= 0x00000008
williamr@2
  2832
		};
williamr@2
  2833
williamr@2
  2834
	typedef TUint32 TDisplayRequirementsFlags;
williamr@2
  2835
williamr@2
  2836
	class TMobilePhoneServiceProviderNameV2 : public TMultimodeType
williamr@2
  2837
/** Used to retrieve the Service Provider Name from the ICC. The 
williamr@2
  2838
SP is actually the entity that provides the service. The SP could have contractual 
williamr@2
  2839
agreements with several home PLMN that the ME can register to. The display 
williamr@2
  2840
preference of the registered PLMN and/or the SPN on the ME can be defined 
williamr@2
  2841
on the UICC.
williamr@2
  2842
@publishedPartner
williamr@2
  2843
@released */
williamr@2
  2844
		{
williamr@2
  2845
	public:
williamr@2
  2846
		IMPORT_C TMobilePhoneServiceProviderNameV2();
williamr@2
  2847
	public:
williamr@2
  2848
	/** This parameter specifies if the display of the registered PLMN is required. 
williamr@2
  2849
	Can contain a number of flags from RMobilePhone::TDisplayRequirements.
williamr@2
  2850
	*/
williamr@2
  2851
		TDisplayRequirementsFlags	iDisplayReq;
williamr@2
  2852
	/** The name of the service provider. */
williamr@2
  2853
		TBuf<KMaxSPNameSize>	iSPName;
williamr@2
  2854
		TBuf<KMaxPLMNFieldSize>	iPLMNField;
williamr@2
  2855
		}; 
williamr@2
  2856
williamr@2
  2857
/** A typedef'd packaged TMobilePhoneServiceProviderNameV2 for passing through 
williamr@2
  2858
a generic API function member. */
williamr@2
  2859
	typedef TPckg<TMobilePhoneServiceProviderNameV2> TMobilePhoneServiceProviderNameV2Pckg;
williamr@2
  2860
williamr@2
  2861
	IMPORT_C void GetServiceProviderName(TRequestStatus& aReqStatus, TDes8& aName) const;
williamr@2
  2862
	
williamr@2
  2863
	/**
williamr@2
  2864
	Network investigation scan settings.
williamr@2
  2865
	*/
williamr@2
  2866
	enum TMobilePhoneInvestigationScan
williamr@2
  2867
		{
williamr@2
  2868
		/**
williamr@2
  2869
		Network investigation setting in limited service mode.
williamr@2
  2870
		*/
williamr@2
  2871
		KNetworkInvLimited = 0x01,
williamr@2
  2872
		/**
williamr@2
  2873
		Network investigation setting after successful PLMN selection.
williamr@2
  2874
		*/
williamr@2
  2875
		KNetworkInvAfterPlmnSelection=0x02		
williamr@2
  2876
		};
williamr@2
  2877
		
williamr@2
  2878
	/**
williamr@2
  2879
	Network investigation scan events.
williamr@2
  2880
	*/
williamr@2
  2881
	enum TMobilePhoneInvestigationScanEvent
williamr@2
  2882
		{
williamr@2
  2883
		/**
williamr@2
  2884
		No investigation scan events available.
williamr@2
  2885
		*/
williamr@2
  2886
		ENetworkInvestigationNoEvent,
williamr@2
  2887
		/**
williamr@2
  2888
		A higher priority network has been detected, but it does not offer CS Voice.
williamr@2
  2889
		*/
williamr@2
  2890
		ENetworkInvestigationHighPriorityPlmn
williamr@2
  2891
		};
williamr@2
  2892
	
williamr@2
  2893
	IMPORT_C TInt GetNetworkInvScanSetting(TMobilePhoneInvestigationScan & aSetting) const;
williamr@2
  2894
	IMPORT_C void NotifyNetworkInvScanChange(TRequestStatus& aReqStatus, TMobilePhoneInvestigationScan& aSetting) const;
williamr@2
  2895
	IMPORT_C void NotifyNetworkInvScanEvent(TRequestStatus& aReqStatus, TMobilePhoneInvestigationScanEvent& aEvent) const;
williamr@2
  2896
williamr@2
  2897
williamr@2
  2898
	/** 251 bytes is the maximum number of octets in an L3 message as defined in3GPP TS 44.006. */
williamr@2
  2899
	enum { KMaxNetworkNameFieldSize = 251 };
williamr@2
  2900
	
williamr@2
  2901
	class TMobilePhoneNetworkNameV3 : public TMultimodeType
williamr@2
  2902
	/**
williamr@2
  2903
	Class containing short, long network names and location information for a PLMN.
williamr@2
  2904
	*/
williamr@2
  2905
		{
williamr@2
  2906
	public:
williamr@2
  2907
		IMPORT_C TMobilePhoneNetworkNameV3();
williamr@2
  2908
	public:
williamr@2
  2909
		/**
williamr@2
  2910
		The long name (up to 20 characters) of the network operator.
williamr@2
  2911
		*/
williamr@2
  2912
		TMobilePhoneNetworkLongName	 iLongName;
williamr@2
  2913
		/**
williamr@2
  2914
		The short name (up to 10 characters) of the network operator.
williamr@2
  2915
		*/
williamr@2
  2916
		TMobilePhoneNetworkShortName	 iShortName;
williamr@2
  2917
		/**
williamr@2
  2918
		This buffer contains other long and short names for the registered PLMN coded as TLV objects.
williamr@2
  2919
		*/
williamr@2
  2920
		TBuf<KMaxNetworkNameFieldSize>	 iOtherNames;
williamr@2
  2921
		};
williamr@2
  2922
		
williamr@2
  2923
	/**
williamr@2
  2924
 	Packaging typedef for TMobilePhoneNetworkNameV3 class.
williamr@2
  2925
 	*/	
williamr@2
  2926
	typedef TPckg<TMobilePhoneNetworkNameV3>  TMobilePhoneNetworkNameV3Pckg;
williamr@2
  2927
	
williamr@2
  2928
	
williamr@2
  2929
	class  TMobilePhoneOPlmnV3 : public TMultimodeType
williamr@2
  2930
	/**
williamr@2
  2931
	Class containing network name information.
williamr@2
  2932
	*/
williamr@2
  2933
		{
williamr@2
  2934
	public:
williamr@2
  2935
		IMPORT_C TMobilePhoneOPlmnV3();
williamr@2
  2936
	public:
williamr@2
  2937
		/**
williamr@2
  2938
		The MCC of the registered PLMN, with "wild" values specified for the particular digits of the code.
williamr@2
  2939
		*/
williamr@2
  2940
		TMobilePhoneNetworkCountryCode iCountryCode;
williamr@2
  2941
		/**
williamr@2
  2942
		The MNC of the registered PLMN, with "wild" values specified for the particular digits of the code.
williamr@2
  2943
		*/
williamr@2
  2944
		TMobilePhoneNetworkIdentity iNetworkId;
williamr@2
  2945
		/**
williamr@2
  2946
		The id of the Network Name to be displayed for the (following) location area codes.
williamr@2
  2947
		*/
williamr@2
  2948
		TUint32 iPNNid;
williamr@2
  2949
		/**
williamr@2
  2950
		First Location area code for defining the entire range of LACs for the registered PLMN.
williamr@2
  2951
		*/
williamr@2
  2952
		TUint iFirstLocationAreaCode;
williamr@2
  2953
		/**
williamr@2
  2954
		Last Location area code defining the entire range of LACs for the registered PLMN.
williamr@2
  2955
		*/
williamr@2
  2956
		TUint iLastLocationAreaCode;
williamr@2
  2957
		
williamr@2
  2958
		};
williamr@2
  2959
		
williamr@2
  2960
	/**
williamr@2
  2961
 	Packaging typedef for TMobilePhoneOPlmnV3 class.
williamr@2
  2962
 	*/	
williamr@2
  2963
	typedef TPckg<TMobilePhoneOPlmnV3>  TMobilePhoneOPlmnV3Pckg;
williamr@2
  2964
	
williamr@2
  2965
	IMPORT_C void GetCurrentNetworkName(TRequestStatus& aReqStatus, TDes8& aNetworkName, TDes8& aLocInfo) const;
williamr@2
  2966
	
williamr@2
  2967
	/**
williamr@2
  2968
	Identifiers for different access technologies.
williamr@2
  2969
	*/
williamr@2
  2970
	enum TMobilePhoneNetworkAccessCaps
williamr@2
  2971
		{
williamr@2
  2972
		/**
williamr@2
  2973
		No network activity.
williamr@2
  2974
		*/
williamr@2
  2975
		KNetworkAccessUnknown=0x0000,
williamr@2
  2976
		/**
williamr@2
  2977
		Access technology is GSM.
williamr@2
  2978
		*/
williamr@2
  2979
		KNetworkAccessGsm=0x8000,
williamr@2
  2980
		/**
williamr@2
  2981
		Access technology is GSM COMPACT.
williamr@2
  2982
		*/
williamr@2
  2983
		KNetworkAccessGsmCompact=0x4000,
williamr@2
  2984
		/**
williamr@2
  2985
		Access technology is UTRAN (UMTS only).
williamr@2
  2986
		*/
williamr@2
  2987
		KNetworkAccessUtran=0x0080,
williamr@2
  2988
		/** 
williamr@2
  2989
		Indicates that a particular PLMN entry is a WLAN entry used for WLAN PLMN selection.
williamr@2
  2990
		*/
williamr@2
  2991
		KNetworkAccessWLAN=0x0040
williamr@2
  2992
		};
williamr@2
  2993
williamr@2
  2994
	typedef TUint32 TMobilePhoneNetworkAccessCapsFlags;
williamr@2
  2995
		
williamr@2
  2996
	class TMobilePreferredNetworkEntryV3 : public TMultimodeType
williamr@2
  2997
	/**
williamr@2
  2998
	Defines information for a preferred network.
williamr@2
  2999
	*/
williamr@2
  3000
		{
williamr@2
  3001
	public:
williamr@2
  3002
		IMPORT_C TMobilePreferredNetworkEntryV3();
williamr@2
  3003
	public:
williamr@2
  3004
		void InternalizeL(RReadStream& aStream);
williamr@2
  3005
		void ExternalizeL(RWriteStream& aStream) const;
williamr@2
  3006
	public:
williamr@2
  3007
		/**
williamr@2
  3008
		Access Technology supported.
williamr@2
  3009
		Can contain a number of flags from RMobilePhone::TMobilePhoneNetworkAccessCaps.
williamr@2
  3010
		*/
williamr@2
  3011
		TMobilePhoneNetworkAccessCapsFlags iAccess;
williamr@2
  3012
		/**
williamr@2
  3013
		Editable preferences in the User-controlled Networks List with Access Technology.
williamr@2
  3014
		*/
williamr@2
  3015
		TBool iUserDefined;
williamr@2
  3016
		/**
williamr@2
  3017
		The MCC of the network.
williamr@2
  3018
		*/
williamr@2
  3019
		TMobilePhoneNetworkCountryCode iCountryCode;
williamr@2
  3020
		/**
williamr@2
  3021
		The MNC of the network.
williamr@2
  3022
		*/
williamr@2
  3023
		TMobilePhoneNetworkIdentity iNetworkId;
williamr@2
  3024
		};
williamr@2
  3025
		
williamr@2
  3026
	IMPORT_C void StorePreferredNetworksListL(TRequestStatus& aReqStatus, CMobilePhoneStoredNetworkList* aList) const;
williamr@2
  3027
	IMPORT_C void NotifyPreferredNetworksListChange(TRequestStatus& aReqStatus) const;
williamr@2
  3028
		
williamr@2
  3029
	/***********************************************************************************/		
williamr@2
  3030
	//
williamr@2
  3031
	// Mobile Multimedia Call Settings functional unit
williamr@2
  3032
	//
williamr@2
  3033
	/***********************************************************************************/
williamr@2
  3034
	
williamr@2
  3035
/** An enumerated list of settings for multimedia calls. */
williamr@2
  3036
	enum TMobilePhoneMultimediaSettings
williamr@2
  3037
		{
williamr@2
  3038
	/** Accept all incoming multimedia calls with the fallback option enabled. (default). */
williamr@2
  3039
		EAcceptMMCallsVoiceFallback,
williamr@2
  3040
	/** Accept all incoming multimedia calls, but do not accept voice fallback. */
williamr@2
  3041
		EAcceptMMCallsNoFallback,
williamr@2
  3042
	/** Reject all incoming multimedia calls. */
williamr@2
  3043
		ERejectMMCalls,
williamr@2
  3044
	/** Reject all incoming multimedia calls, but drop to voice instead. */
williamr@2
  3045
		EAnswerMMCallsAsVoice
williamr@2
  3046
		};
williamr@2
  3047
williamr@2
  3048
	IMPORT_C void SetMultimediaCallPreference(TRequestStatus& aReqStatus, TMobilePhoneMultimediaSettings aMmSettings) const;
williamr@2
  3049
	IMPORT_C TInt GetMultimediaCallPreference(TMobilePhoneMultimediaSettings& aMmSettings) const;
williamr@2
  3050
	IMPORT_C void NotifyMultimediaCallPreferenceChange(TRequestStatus& aReqStatus, TMobilePhoneMultimediaSettings& aMmSettings);
williamr@2
  3051
williamr@2
  3052
	/***********************************************************************************/	
williamr@2
  3053
	//
williamr@2
  3054
	// MobilePrivacy functional unit
williamr@2
  3055
	//
williamr@2
  3056
	/***********************************************************************************/
williamr@2
  3057
	
williamr@2
  3058
/** The mobile phone privacy settings.
williamr@2
  3059
williamr@2
  3060
Modes: CDMA */
williamr@2
  3061
	enum TMobilePhonePrivacy
williamr@2
  3062
		{
williamr@2
  3063
	/** The privacy setting is unspecified. */
williamr@2
  3064
		EPrivacyUnspecified,
williamr@2
  3065
	/** The privacy setting is set to ON. */
williamr@2
  3066
		EPrivacyOn,
williamr@2
  3067
	/** The privacy setting is set to OFF. */
williamr@2
  3068
		EPrivacyOff
williamr@2
  3069
		};
williamr@2
  3070
williamr@2
  3071
	IMPORT_C TInt GetDefaultPrivacy(TMobilePhonePrivacy& aSetting) const;
williamr@2
  3072
	IMPORT_C void SetDefaultPrivacy(TRequestStatus& aReqStatus, TMobilePhonePrivacy aSetting) const;
williamr@2
  3073
	IMPORT_C void NotifyDefaultPrivacyChange(TRequestStatus& aReqStatus, TMobilePhonePrivacy& aSetting) const;
williamr@2
  3074
williamr@2
  3075
	/***********************************************************************************/
williamr@2
  3076
	//
williamr@2
  3077
	// TSY Capabilities for supplementary call services
williamr@2
  3078
	// 
williamr@2
  3079
	/***********************************************************************************/
williamr@2
  3080
	
williamr@2
  3081
/** The call services.
williamr@2
  3082
williamr@2
  3083
Modes: GSM/WCDMA */
williamr@2
  3084
	enum TMobilePhoneCallServiceCaps
williamr@2
  3085
		{
williamr@2
  3086
	/** Phone supports retrieval of call forwarding status from a cache on the phone.
williamr@2
  3087
	
williamr@2
  3088
	Modes: GSM/WCDMA */
williamr@2
  3089
		KCapsGetCFStatusCache				=0x00000001,
williamr@2
  3090
	/** Phone supports retrieval of call forwarding status from the network.
williamr@2
  3091
	
williamr@2
  3092
	Modes: GSM/WCDMA */
williamr@2
  3093
		KCapsGetCFStatusNetwork				=0x00000002,
williamr@2
  3094
	/** Phone supports setting of call forwarding status (and registered information) 
williamr@2
  3095
	in the network. */
williamr@2
  3096
		KCapsSetCFStatus					=0x00000004,
williamr@2
  3097
	/** Phone supports notification of change in status of any call forwarding service.
williamr@2
  3098
	
williamr@2
  3099
	Modes: GSM/WCDMA */
williamr@2
  3100
		KCapsNotifyCFStatus					=0x00000008,
williamr@2
  3101
	/** Phone supports retrieval of CLIP status from either a cache or the network.
williamr@2
  3102
	
williamr@2
  3103
	Modes: GSM/WCDMA */
williamr@2
  3104
		KCapsGetClipStatus					=0x00000010,
williamr@2
  3105
	/** Phone supports retrieval of CLIR status from either a cache or the network.
williamr@2
  3106
	
williamr@2
  3107
	Modes: GSM/WCDMA */
williamr@2
  3108
		KCapsGetClirStatus					=0x00000020,
williamr@2
  3109
	/** Phone supports retrieval of COLP status from either a cache or the network.
williamr@2
  3110
	
williamr@2
  3111
	Modes: GSM/WCDMA */
williamr@2
  3112
		KCapsGetColpStatus					=0x00000040,
williamr@2
  3113
	/** Phone supports retrieval of COLR status from either a cache or the network.
williamr@2
  3114
	
williamr@2
  3115
	Modes: GSM/WCDMA */
williamr@2
  3116
		KCapsGetColrStatus					=0x00000080,
williamr@2
  3117
	/** Phone supports retrieval of CNAP status from either a cache or the network.
williamr@2
  3118
williamr@2
  3119
	Modes: GSM/WCDMA */
williamr@2
  3120
		KCapsGetCnapStatus					=0x00000100,
williamr@2
  3121
	/** Phone supports retrieval of call barring status from a cache on the phone.
williamr@2
  3122
	
williamr@2
  3123
	Modes: Common */
williamr@2
  3124
		KCapsGetCBStatusCache				=0x00000200,
williamr@2
  3125
	/** Phone supports retrieval of call barring status from the network.
williamr@2
  3126
	
williamr@2
  3127
	Modes: GSM/WCDMA */
williamr@2
  3128
		KCapsGetCBStatusNetwork				=0x00000400,
williamr@2
  3129
	/** Phone supports setting of call barring status in the network.
williamr@2
  3130
	
williamr@2
  3131
	Modes: Common */
williamr@2
  3132
		KCapsSetCBStatus					=0x00000800,
williamr@2
  3133
	/** Phone supports notification of change in call barring status for any service.
williamr@2
  3134
	
williamr@2
  3135
	Modes: Common */
williamr@2
  3136
		KCapsNotifyCBStatus					=0x00001000,
williamr@2
  3137
	/** Phone supports setting of a password for call barring service.
williamr@2
  3138
	
williamr@2
  3139
	Modes: Common */
williamr@2
  3140
		KCapsChangeCBPassword				=0x00002000,
williamr@2
  3141
	/** Phone supports BAIC call barring service.
williamr@2
  3142
	
williamr@2
  3143
	Modes: Common */
williamr@2
  3144
		KCapsBarAllIncoming					=0x00004000,
williamr@2
  3145
	/** Phone supports BIC-Roam call barring service.
williamr@2
  3146
	
williamr@2
  3147
	Modes: Common */
williamr@2
  3148
		KCapsBarIncomingRoaming				=0x00008000,
williamr@2
  3149
	/** Phone supports BAOC call barring service.
williamr@2
  3150
	
williamr@2
  3151
	Modes: Common */
williamr@2
  3152
		KCapsBarAllOutgoing					=0x00010000,
williamr@2
  3153
	/** Phone supports BOIC call barring service.
williamr@2
  3154
	
williamr@2
  3155
	Modes: Common */
williamr@2
  3156
		KCapsBarOutgoingInternational		=0x00020000,
williamr@2
  3157
	/** Phone supports BOIC-ExHC call barring service.
williamr@2
  3158
	
williamr@2
  3159
	Modes: Common */
williamr@2
  3160
		KCapsBarOutgoingInternationalExHC	=0x00040000,
williamr@2
  3161
	/** Phone supports barring all cases at once.
williamr@2
  3162
	
williamr@2
  3163
	Modes: Common */
williamr@2
  3164
		KCapsBarAllCases					=0x00080000,
williamr@2
  3165
	/** Phone supports retrieval of call waiting status from a cache on the phone.
williamr@2
  3166
	
williamr@2
  3167
	Modes: GSM/WCDMA */
williamr@2
  3168
		KCapsGetCWStatusCache				=0x00100000,
williamr@2
  3169
	/** Phone supports retrieval of call waiting status from the network.
williamr@2
  3170
	
williamr@2
  3171
	Modes: GSM/WCDMA */
williamr@2
  3172
		KCapsGetCWStatusNetwork				=0x00200000,
williamr@2
  3173
	/** Phone supports setting of call waiting status in the network.
williamr@2
  3174
	
williamr@2
  3175
	Modes: Common */
williamr@2
  3176
		KCapsSetCWStatus					=0x00400000,
williamr@2
  3177
	/** Phone supports notification of change in call waiting status for any service.
williamr@2
  3178
	
williamr@2
  3179
	Modes: GSM/WCDMA */
williamr@2
  3180
		KCapsNotifyCWStatus					=0x00800000,
williamr@2
  3181
	/** Phone supports retrieval of call completion (CCBS) status from a cache on the 
williamr@2
  3182
	phone.
williamr@2
  3183
	
williamr@2
  3184
	Modes: GSM/WCDMA */
williamr@2
  3185
		KCapsGetCCBSStatusCache				=0x01000000,
williamr@2
  3186
	/** Phone supports retrieval of call completion (CCBS) status from the network.
williamr@2
  3187
	
williamr@2
  3188
	Modes: GSM/WCDMA */
williamr@2
  3189
		KCapsGetCCBSStatusNetwork			=0x02000000,
williamr@2
  3190
	/** Phone supports deactivation of all CCBS requests at once.
williamr@2
  3191
	
williamr@2
  3192
	Modes: GSM/WCDMA */
williamr@2
  3193
		KCapsDeactivateAllCCBS				=0x04000000,
williamr@2
  3194
		KCapsDeactivateCCBS					=0x08000000,
williamr@2
  3195
	/** Phone supports retrieval of a list of active CCBS requests.
williamr@2
  3196
	
williamr@2
  3197
	Modes: GSM/WCDMA */
williamr@2
  3198
		KCapsRetrieveActiveCCBS				=0x10000000,
williamr@2
  3199
	/** The phone supports programming and retrieval of feature code against a CDMA 
williamr@2
  3200
	network service.
williamr@2
  3201
	
williamr@2
  3202
	Modes: CDMA */
williamr@2
  3203
		KCapsFeatureCode					=0x20000000,
williamr@2
  3204
	/** The phone supports sending of generic network service request strings.
williamr@2
  3205
	
williamr@2
  3206
	Modes: Common */
williamr@2
  3207
		KCapsNetworkServiceRequest			=0x40000000,
williamr@2
  3208
	/** The phone supports retrieval of called line identification status.
williamr@2
  3209
	
williamr@2
  3210
	Modes: GSM/WCDMA */
williamr@2
  3211
		KCapsGetCdipStatus					=0x80000000
williamr@2
  3212
		};
williamr@2
  3213
williamr@2
  3214
	IMPORT_C TInt GetCallServiceCaps(TUint32& aCaps) const;
williamr@2
  3215
	IMPORT_C void NotifyCallServiceCapsChange(TRequestStatus& aReqStatus, TUint32& aCaps) const;
williamr@2
  3216
williamr@2
  3217
	/***********************************************************************************/
williamr@2
  3218
	//
williamr@2
  3219
	// MobilePhoneUserNetworkAccess functional unit
williamr@2
  3220
	//
williamr@2
  3221
	/***********************************************************************************/
williamr@2
  3222
williamr@2
  3223
/** Mobile Phone network services.
williamr@2
  3224
williamr@2
  3225
Modes: CDMA */
williamr@2
  3226
	enum TMobilePhoneNetworkService
williamr@2
  3227
		{
williamr@2
  3228
	/** Network service is unspecified. */
williamr@2
  3229
		ENetworkServiceUnspecified,
williamr@2
  3230
	/** Feature code applies to call forwarding unconditional service. */
williamr@2
  3231
		ECFUService,
williamr@2
  3232
	/** Feature code applies to call forwarding on busy service. */
williamr@2
  3233
		ECFBService,
williamr@2
  3234
	/** Feature code applies to call forwarding on no reply service. */
williamr@2
  3235
		ECFNRyService,
williamr@2
  3236
	/** Feature code applies to call forwarding on not reachable service. */
williamr@2
  3237
		ECFNRcService,
williamr@2
  3238
	/** Feature code applies to user selective call forwarding service - when the 
williamr@2
  3239
	user wishes to forward incoming call to voicemail. */
williamr@2
  3240
		EDeflectToVoicemail,
williamr@2
  3241
	/** Feature code applies to user selective call forwarding service - when the
williamr@2
  3242
	user wishes to forward incoming call to a number supplied within the deflect 
williamr@2
  3243
	request. */
williamr@2
  3244
		EDeflectToNumber,
williamr@2
  3245
	/** Feature code applies to user selective call forwarding service - when the 
williamr@2
  3246
	user wishes to forward incoming call to a number pre-registered within the 
williamr@2
  3247
	network. */
williamr@2
  3248
		EDeflectToRegisteredNumber,
williamr@2
  3249
	/** Feature code applies to call waiting service. */
williamr@2
  3250
		ECWService,
williamr@2
  3251
		ENextCallShowCLI,
williamr@2
  3252
	/** Feature code applies to caller ID restriction service - when user wishes to 
williamr@2
  3253
	hide their ID for the next call they make. */
williamr@2
  3254
		ENextCallHideCLI
williamr@2
  3255
		};
williamr@2
  3256
williamr@2
  3257
/** Mobile phone service actions.
williamr@2
  3258
williamr@2
  3259
Modes: Common */
williamr@2
  3260
	enum TMobilePhoneServiceAction
williamr@2
  3261
		{
williamr@2
  3262
	/** The action is unspecified. */
williamr@2
  3263
		EServiceActionUnspecified,
williamr@2
  3264
	/** The client is registering new service information. If the service was not active 
williamr@2
  3265
	then this action also activates the service. */
williamr@2
  3266
		EServiceActionRegister,
williamr@2
  3267
	/** The client is activating the service. */
williamr@2
  3268
		EServiceActionActivate,
williamr@2
  3269
	/** The client is invoking the service. */
williamr@2
  3270
		EServiceActionInvoke,
williamr@2
  3271
	/** The client is deactivating the service. */
williamr@2
  3272
		EServiceActionDeactivate,
williamr@2
  3273
	/** The client is erasing the currently registered service information. If the service 
williamr@2
  3274
	was active then this action also deactivates the service. */
williamr@2
  3275
		EServiceActionErase
williamr@2
  3276
		};
williamr@2
  3277
		
williamr@2
  3278
	/**
williamr@2
  3279
	Defines the type of SS operation
williamr@2
  3280
	*/
williamr@2
  3281
	enum TMobilePhoneNotifySendSSOperation
williamr@2
  3282
		{
williamr@2
  3283
		/**
williamr@2
  3284
		SS Invoke operation.
williamr@2
  3285
		*/
williamr@2
  3286
		ESendSSInvoke,
williamr@2
  3287
		/**
williamr@2
  3288
		SS ReturnResult operation.
williamr@2
  3289
		*/
williamr@2
  3290
		ESendSSReturnResult,
williamr@2
  3291
		/**
williamr@2
  3292
		SS ReturnError operation.
williamr@2
  3293
		*/
williamr@2
  3294
		ESendSSReturnError,
williamr@2
  3295
		/**
williamr@2
  3296
		SS Reject operation.
williamr@2
  3297
		*/
williamr@2
  3298
		ESendSSReject		
williamr@2
  3299
		};
williamr@2
  3300
	
williamr@2
  3301
	/** Size of additional info buffer. */	
williamr@2
  3302
	enum{ KAdditionalInfoSize = 244 };
williamr@2
  3303
	
williamr@2
  3304
	class TMobilePhoneSendSSRequestV3 : public TMultimodeType
williamr@2
  3305
	/**
williamr@2
  3306
	Contains the operation code and buffer to hold any additional information when receiving a notification 
williamr@2
  3307
	about a network service request.
williamr@2
  3308
	*/
williamr@2
  3309
		{
williamr@2
  3310
	public:
williamr@2
  3311
		IMPORT_C TMobilePhoneSendSSRequestV3();
williamr@2
  3312
	public:
williamr@2
  3313
		/**
williamr@2
  3314
		This is the Operation Code for a Send SS Invoke or Return result events.
williamr@2
  3315
		This is the Error or Problem Code for a Send SS Return Error or Reject events.
williamr@2
  3316
		*/
williamr@2
  3317
		TUint8	iOpCode;
williamr@2
  3318
		/**
williamr@2
  3319
		The additional information (parameters) for a Send SS Invoke or Return result or Return Error events.
williamr@2
  3320
		This is not used for a Send SS Reject event
williamr@2
  3321
		*/
williamr@2
  3322
		TBuf<KAdditionalInfoSize>	iAdditionalInfo;
williamr@2
  3323
		};
williamr@2
  3324
	
williamr@2
  3325
	/**
williamr@2
  3326
 	Packaging typedef for TMobilePhoneSendSSRequestV3 class.
williamr@2
  3327
 	*/	
williamr@2
  3328
	typedef TPckg<TMobilePhoneSendSSRequestV3> TMobilePhoneSendSSRequestV3Pckg;
williamr@2
  3329
williamr@2
  3330
	// API/TSY internal type
williamr@2
  3331
williamr@2
  3332
	struct TNetworkServiceAndAction
williamr@2
  3333
		{
williamr@2
  3334
		TMobilePhoneNetworkService iService;
williamr@2
  3335
		TMobilePhoneServiceAction iAction;
williamr@2
  3336
		};
williamr@2
  3337
	
williamr@2
  3338
	IMPORT_C void ProgramFeatureCode(TRequestStatus& aReqStatus, const TDesC& aFCString, TMobilePhoneNetworkService aService, TMobilePhoneServiceAction aAction) const;
williamr@2
  3339
	IMPORT_C void GetFeatureCode(TRequestStatus& aReqStatus, TDes& aFCString, TMobilePhoneNetworkService aService, TMobilePhoneServiceAction aAction) const;
williamr@2
  3340
williamr@2
  3341
	IMPORT_C void SendNetworkServiceRequest(TRequestStatus& aReqStatus, const TDesC& aServiceString) const;
williamr@2
  3342
	IMPORT_C void SendNetworkServiceRequestNoFdnCheck(TRequestStatus& aReqStatus, const TDesC& aServiceString) const;
williamr@2
  3343
	IMPORT_C void NotifySendNetworkServiceRequest(TRequestStatus& aReqStatus, const TMobilePhoneNotifySendSSOperation aOperation, TDes8& aRequestComplete) const;
williamr@2
  3344
	IMPORT_C void NotifyAllSendNetworkServiceRequest(TRequestStatus& aReqStatus, TMobilePhoneNotifySendSSOperation& aOperation, TDes8& aRequestComplete) const;
williamr@2
  3345
williamr@2
  3346
	/***********************************************************************************/
williamr@2
  3347
	//
williamr@2
  3348
	// MobilePhoneCallForwarding functional unit
williamr@2
  3349
	// 
williamr@2
  3350
	/***********************************************************************************/
williamr@2
  3351
williamr@2
  3352
/** The Call Forwarding flavours.
williamr@2
  3353
williamr@2
  3354
Modes: GSM/WCDMA */
williamr@2
  3355
	enum TMobilePhoneCFCondition
williamr@2
  3356
		{
williamr@2
  3357
	/** The call forwarding service is unspecified. */
williamr@2
  3358
		ECallForwardingUnspecified,
williamr@2
  3359
	/** All calls to this subscriber are forwarded. */
williamr@2
  3360
		ECallForwardingUnconditional,
williamr@2
  3361
	/** Calls are forwarded when this subscriber is busy. */
williamr@2
  3362
		ECallForwardingBusy,
williamr@2
  3363
	/** Calls are forwarded when this subscriber does not reply within a time-out period. */
williamr@2
  3364
		ECallForwardingNoReply,
williamr@2
  3365
	/** Calls are forwarded when this subscriber is unreachable. */
williamr@2
  3366
		ECallForwardingNotReachable,
williamr@2
  3367
	/** All of above CF services. Can be used to check all 4 call forwarding Fs 
williamr@2
  3368
	at once. */
williamr@2
  3369
		ECallForwardingAllCases,			// combination of all four above cases
williamr@2
  3370
	/** All the conditional (busy, no reply, not reachable) CF services. Can be used 
williamr@2
  3371
	to check all 3 conditional call forwarding conditions at once. */
williamr@2
  3372
		ECallForwardingAllConditionalCases	// combination of CFB, CFNRy and CFNRc
williamr@2
  3373
		};
williamr@2
  3374
williamr@2
  3375
/** The Call Forwarding status
williamr@2
  3376
williamr@2
  3377
Modes: GSM/WCDMA */
williamr@2
  3378
	enum TMobilePhoneCFStatus
williamr@2
  3379
		{
williamr@2
  3380
	/** The CF service is currently active and operative. */
williamr@2
  3381
		ECallForwardingStatusActive,
williamr@2
  3382
	/** The CF service is currently deactivated. */
williamr@2
  3383
		ECallForwardingStatusNotActive,
williamr@2
  3384
	/** The CF service is not registered. */
williamr@2
  3385
		ECallForwardingStatusNotRegistered,
williamr@2
  3386
	/** The CF service is not provisioned. */
williamr@2
  3387
		ECallForwardingStatusNotProvisioned,
williamr@2
  3388
	/** The CF service is not available in the serving network. */
williamr@2
  3389
		ECallForwardingStatusNotAvailable,
williamr@2
  3390
	/** The phone can not determine CF service status. */
williamr@2
  3391
		ECallForwardingStatusUnknown,
williamr@2
  3392
	/** The Call Forwarding service is active and the presentation indicator is set 
williamr@2
  3393
	to allowed */
williamr@2
  3394
		ECallForwardingStatusActivePIAllowed,
williamr@2
  3395
	/** The Call Forwarding service is active and the presentation indicator is set 
williamr@2
  3396
	to not available */
williamr@2
  3397
		ECallForwardingStatusActivePINotAvailable,
williamr@2
  3398
	/** The Call Forwarding service is active and the presentation indicator is set 
williamr@2
  3399
	to restricted
williamr@2
  3400
	
williamr@2
  3401
	The Call Forwarding service is active and the presentation indicator is set 
williamr@2
  3402
	to restricted and screening returns "User provided, verified and passed". */
williamr@2
  3403
		ECallForwardingStatusActivePIClir,
williamr@2
  3404
	/** The Call Forwarding service is active and the presentation indicator is set 
williamr@2
  3405
	to restricted and screening returns "User provided, not screened". */
williamr@2
  3406
		ECallForwardingStatusActivePIClirSIVerified,
williamr@2
  3407
	/** The Call Forwarding service is active and the presentation indicator is set 
williamr@2
  3408
	to "restricted" and screening returns "Network provided". */
williamr@2
  3409
		ECallForwardingStatusActivePIClirSINotScreened,
williamr@2
  3410
	/** The Call Forwarding service is active and the presentation indicator is set 
williamr@2
  3411
	to "restricted" and screening returns "Network provided". */
williamr@2
  3412
		ECallForwardingStatusActivePIClirSINetwork,
williamr@2
  3413
	/** The CF service is currently in the quiescent state. */	
williamr@2
  3414
		ECallForwardingStatusQuiescent
williamr@2
  3415
		};
williamr@2
  3416
		
williamr@2
  3417
	
williamr@2
  3418
williamr@2
  3419
	class TMobilePhoneCFInfoEntryV1 : public TMultimodeType
williamr@2
  3420
/** Defines information about the call forwarding service.
williamr@2
  3421
williamr@2
  3422
Modes: GSM/WCDMA
williamr@2
  3423
williamr@2
  3424
@see CMobilePhoneCFList
williamr@2
  3425
@publishedPartner
williamr@2
  3426
@released 
williamr@2
  3427
*/
williamr@2
  3428
		{
williamr@2
  3429
	public:
williamr@2
  3430
		IMPORT_C TMobilePhoneCFInfoEntryV1();
williamr@2
  3431
	public:
williamr@2
  3432
		void InternalizeL(RReadStream& aStream);
williamr@2
  3433
		void ExternalizeL(RWriteStream& aStream) const;
williamr@2
  3434
	public:
williamr@2
  3435
	/** The CF service of this list entry.
williamr@2
  3436
	
williamr@2
  3437
	@see TMobilePhoneCFCondition */
williamr@2
  3438
		TMobilePhoneCFCondition iCondition;
williamr@2
  3439
	/** The basic service group associated to this CF service list entry.
williamr@2
  3440
	
williamr@2
  3441
	@see TMobileService */
williamr@2
  3442
		TMobileService iServiceGroup;
williamr@2
  3443
	/** The current status of the call forwarding condition.
williamr@2
  3444
	
williamr@2
  3445
	@see TMobilePhoneCFStatus */
williamr@2
  3446
		TMobilePhoneCFStatus iStatus;
williamr@2
  3447
	/** The "forward-to" telephone number registered for the call forwarding condition. 
williamr@2
  3448
	An empty string if CF service is not registered, not provisioned or not available.
williamr@2
  3449
	
williamr@2
  3450
	@see TMobileAddress */
williamr@2
  3451
		TMobileAddress iNumber;
williamr@2
  3452
	/** The "No Reply" time-out (in seconds) registered for the call forwarding no reply 
williamr@2
  3453
	condition.
williamr@2
  3454
	
williamr@2
  3455
	Equals to -1 if this value is not applicable. In GSM mode, will be between 
williamr@2
  3456
	5 and 30 and in steps of 5 if this value is applicable. */
williamr@2
  3457
		TInt iTimeout; // valid for CFRNy only
williamr@2
  3458
		};
williamr@2
  3459
williamr@2
  3460
	IMPORT_C void NotifyCallForwardingStatusChange(TRequestStatus& aReqStatus, TMobilePhoneCFCondition& aCondition) const;
williamr@2
  3461
williamr@2
  3462
	class TMobilePhoneCFChangeV1 : public TMultimodeType
williamr@2
  3463
/** Defines the call forward information.
williamr@2
  3464
williamr@2
  3465
@see SetCallForwardingStatus()
williamr@2
  3466
@publishedPartner
williamr@2
  3467
@released 
williamr@2
  3468
*/
williamr@2
  3469
		{
williamr@2
  3470
	public:
williamr@2
  3471
		IMPORT_C TMobilePhoneCFChangeV1();
williamr@2
  3472
	public:
williamr@2
  3473
	/** The basic service group(s) to apply the CF status change to.
williamr@2
  3474
	
williamr@2
  3475
	@see TMobileService */
williamr@2
  3476
		TMobileService iServiceGroup;
williamr@2
  3477
	/** The service action for call forwarding.
williamr@2
  3478
	
williamr@2
  3479
	@see TMobilePhoneServiceAction */
williamr@2
  3480
		TMobilePhoneServiceAction iAction;
williamr@2
  3481
	/** A new "forward-to" number to be registered against the CF condition. This is 
williamr@2
  3482
	applicable if iAction=EServiceActionRegister. In other cases, it is set to
williamr@2
  3483
	an empty string.
williamr@2
  3484
	
williamr@2
  3485
	@see TMobileAddress */
williamr@2
  3486
		TMobileAddress iNumber;
williamr@2
  3487
	/** The new "No Reply" time-out in seconds to be registered. This is applicable 
williamr@2
  3488
	if the CF condition is CFNRy and iAction=EServiceActionRegister. Equals -1 
williamr@2
  3489
	if this value is not applicable. If applicable, in GSM mode will be between 
williamr@2
  3490
	5 and 30 and in steps of 5. */
williamr@2
  3491
		TInt iTimeout;
williamr@2
  3492
		};
williamr@2
  3493
williamr@2
  3494
	IMPORT_C void SetCallForwardingStatus(TRequestStatus& aReqStatus, TMobilePhoneCFCondition aCondition, const TMobilePhoneCFChangeV1& aInfo) const;
williamr@2
  3495
williamr@2
  3496
/** Call Forwarding Active Notification
williamr@2
  3497
williamr@2
  3498
Modes: Common */
williamr@2
  3499
	enum TMobilePhoneCFActive
williamr@2
  3500
		{
williamr@2
  3501
	/** CF Unconditional is currently active. */
williamr@2
  3502
		ECFUnconditionalActive,
williamr@2
  3503
	/** CF Busy, CF No Reply or CF Not Reachable is currently active. */
williamr@2
  3504
		ECFConditionalActive
williamr@2
  3505
		};
williamr@2
  3506
williamr@2
  3507
	IMPORT_C void NotifyCallForwardingActive(TRequestStatus& aReqStatus, TMobileService& aServiceGroup, TMobilePhoneCFActive& aActiveType) const;
williamr@2
  3508
	
williamr@2
  3509
	/**
williamr@2
  3510
	Current status indicators for unconditional call forwarding.
williamr@2
  3511
	*/
williamr@2
  3512
	enum TCFUIndicatorStatus
williamr@2
  3513
		{
williamr@2
  3514
		/**
williamr@2
  3515
		CFU Indicator status unknown.
williamr@2
  3516
		*/
williamr@2
  3517
		KCFUIndicatorUnknown = 0x0,
williamr@2
  3518
		/**
williamr@2
  3519
		CFU Indicator status for Voice (TMobileServiceGroup EVoice).
williamr@2
  3520
		*/
williamr@2
  3521
		KCFUIndicatorVoice=0x01,
williamr@2
  3522
		/**
williamr@2
  3523
		CFU Indicator status for Fax (TMobileServiceGroup EFax).
williamr@2
  3524
		*/
williamr@2
  3525
		KCFUIndicatorFax=0x02,
williamr@2
  3526
		/**
williamr@2
  3527
		CFU Indicator status for Data Teleservices(TMobileServiceGroup EData).
williamr@2
  3528
		*/
williamr@2
  3529
		KCFUIndicatorData=0x04,
williamr@2
  3530
		/**
williamr@2
  3531
		CFU Indicator status for Sms (TMobileServiceGroup ESms).
williamr@2
  3532
		*/
williamr@2
  3533
		KCFUIndicatorSms=0x08,
williamr@2
  3534
		/**
williamr@2
  3535
		CFU Indicator status for Data Bearer Services(TMobileServiceGroup EDataBearer).
williamr@2
  3536
		*/
williamr@2
  3537
		KCFUIndicatorDataBearer=0x10,
williamr@2
  3538
		/**
williamr@2
  3539
		CFU Indicator status for Auxiliary Voice (TMobileServiceGroup EAuxVoiceService).
williamr@2
  3540
		*/
williamr@2
  3541
		KCFUIndicatorAuxVoice=0x20
williamr@2
  3542
		};
williamr@2
  3543
williamr@2
  3544
	typedef TUint32 TCFUIndicatorStatusFlags;
williamr@2
  3545
		
williamr@2
  3546
	class TMobilePhoneCFUIndicatorV3 : public TMultimodeType
williamr@2
  3547
	/**
williamr@2
  3548
	Contains indicator parameters for unconditional call forwarding.
williamr@2
  3549
	*/
williamr@2
  3550
		{
williamr@2
  3551
	public:
williamr@2
  3552
		IMPORT_C TMobilePhoneCFUIndicatorV3();
williamr@2
  3553
	public:
williamr@2
  3554
		/**
williamr@2
  3555
		Current setting for indicator status.
williamr@2
  3556
		Can contain a number of flags from RMobilePhone::TCFUIndicatorStatus.
williamr@2
  3557
		*/
williamr@2
  3558
		TCFUIndicatorStatusFlags iIndicator;		
williamr@2
  3559
		};
williamr@2
  3560
		
williamr@2
  3561
	typedef TPckg<TMobilePhoneCFUIndicatorV3> TMobilePhoneCFUIndicatorV3Pckg;
williamr@2
  3562
williamr@2
  3563
	/**
williamr@2
  3564
	The MSP number contains the Profile Identity of the subscriber profile.
williamr@2
  3565
	The Profile Identity shall be any of the following enlisted.
williamr@2
  3566
	@see 3GPP TS 31.102 v7.4.1 section 4.2.64
williamr@2
  3567
	@see 3GPP TS 23.097 [36]
williamr@2
  3568
	*/
williamr@2
  3569
	enum TMultipleSubscriberProfileID
williamr@2
  3570
		{
williamr@2
  3571
		/**
williamr@2
  3572
		Profile Identity Unknown
williamr@2
  3573
		*/
williamr@2
  3574
		KProfileIdentityUnknown = 0x0,
williamr@2
  3575
		/**
williamr@2
  3576
		Profile Identity 1
williamr@2
  3577
		*/
williamr@2
  3578
		KProfileIdentityOne = 0x01,
williamr@2
  3579
		/**
williamr@2
  3580
		Profile Identity 2
williamr@2
  3581
		*/
williamr@2
  3582
		KProfileIdentityTwo = 0x02,
williamr@2
  3583
		/**
williamr@2
  3584
		Profile Identity 3
williamr@2
  3585
		*/
williamr@2
  3586
		KProfileIdentityThree = 0x04,
williamr@2
  3587
		/**
williamr@2
  3588
		Profile Identity 4
williamr@2
  3589
		*/
williamr@2
  3590
		KProfileIdentityFour = 0x08
williamr@2
  3591
		};
williamr@2
  3592
williamr@2
  3593
	class TMobilePhoneCFUIndicatorV6 : public TMobilePhoneCFUIndicatorV3
williamr@2
  3594
	/**
williamr@2
  3595
	Contains the indicator parameters for unconditional call forwarding.
williamr@2
  3596
	The TMobilePhoneCFUIndicatorV6 supports MSP number(Multiple Subscriber Profile) and Call Forwarding Number.
williamr@2
  3597
	Upto four different profiles can be provisioned against a subscriber using the MSP feature.
williamr@2
  3598
	@see 3GPP TS 31.102 v7.4.1 section 4.2.64
williamr@2
  3599
	*/
williamr@2
  3600
		{
williamr@2
  3601
	public:
williamr@2
  3602
		IMPORT_C TMobilePhoneCFUIndicatorV6();
williamr@2
  3603
	public:
williamr@2
  3604
		/**
williamr@2
  3605
		@see RMoblie::TMobileAddress
williamr@2
  3606
		*/
williamr@2
  3607
		TMobileAddress iCFNumber;
williamr@2
  3608
		/**
williamr@2
  3609
		The profile IDs allow unambiguous identification of each profile. 
williamr@2
  3610
		This will allow the subscriber to select the preferred profile for outgoing calls and for subscriber actions. 
williamr@2
  3611
		For terminating calls the profile ID shall be part of the notification of the profile.
williamr@2
  3612
		*/
williamr@2
  3613
		TMultipleSubscriberProfileID iMultipleSubscriberProfileID;
williamr@2
  3614
		};
williamr@2
  3615
williamr@2
  3616
	typedef TPckg<TMobilePhoneCFUIndicatorV6> TMobilePhoneCFUIndicatorV6Pckg;
williamr@2
  3617
williamr@2
  3618
	IMPORT_C void GetCallForwardingIndicator(TRequestStatus& aReqStatus, TDes8& aIndicator) const;
williamr@2
  3619
williamr@2
  3620
	/***********************************************************************************/
williamr@2
  3621
	//
williamr@2
  3622
	// Mobile Identity Service functional unit
williamr@2
  3623
	// 
williamr@2
  3624
	/***********************************************************************************/
williamr@2
  3625
williamr@2
  3626
/** Phone ID services (CLIP/CNIP/CLIR).
williamr@2
  3627
williamr@2
  3628
Modes: GSM/WCDMA */
williamr@2
  3629
	enum TMobilePhoneIdService
williamr@2
  3630
		{
williamr@2
  3631
	/** The identity service is unspecified */
williamr@2
  3632
		EIdServiceUnspecified,
williamr@2
  3633
	/** The caller's ID is presented to the called party. */
williamr@2
  3634
		EIdServiceCallerPresentation,
williamr@2
  3635
	/** The caller's ID is restricted to the called party. */
williamr@2
  3636
		EIdServiceCallerRestriction,
williamr@2
  3637
	/** The connected party's ID is presented to the calling party. */
williamr@2
  3638
		EIdServiceConnectedPresentation,
williamr@2
  3639
	/** The connected party's ID is restricted to the calling party. */
williamr@2
  3640
		EIdServiceConnectedRestriction,
williamr@2
  3641
	/** The caller's name is presented to the called party. */
williamr@2
  3642
		EIdServiceCallerName,
williamr@2
  3643
	/** The called party is presented with the caller's ID. This command enables a 
williamr@2
  3644
	called subscriber to get the called line identification of the called party 
williamr@2
  3645
	when receiving a mobile terminated call. - maps to +CDIP. */
williamr@2
  3646
		EIdServiceCalledPresentation
williamr@2
  3647
		};
williamr@2
  3648
williamr@2
  3649
/** Service status of the Phone ID services (CLIP/CLIR/CNIP).
williamr@2
  3650
williamr@2
  3651
Modes: GSM/WCDMA */
williamr@2
  3652
	enum TMobilePhoneIdServiceStatus
williamr@2
  3653
		{
williamr@2
  3654
	/** The interrogated Identity service is provisioned and active. This status is 
williamr@2
  3655
	used for all identity services and in the case of the CLIR service means that 
williamr@2
  3656
	it is permanently active with no subscription option set. */
williamr@2
  3657
		EIdServiceActivePermanent,
williamr@2
  3658
	/** This status is used for the CLIR service only and means that the service is 
williamr@2
  3659
	provisioned and active.
williamr@2
  3660
	
williamr@2
  3661
	The CLIR subscription option is set to "Temporary, default restricted", therefore 
williamr@2
  3662
	identity is always restricted unless over-ridden by the user during a call 
williamr@2
  3663
	set-up. */
williamr@2
  3664
		EIdServiceActiveDefaultRestricted,
williamr@2
  3665
	/** This status is used for the CLIR service only and means that the service is 
williamr@2
  3666
	provisioned and active.
williamr@2
  3667
	
williamr@2
  3668
	The CLIR subscription option is set to "Temporary, default allowed", therefore 
williamr@2
  3669
	identity is always allowed unless over-ridden by the user during a call set-up. */
williamr@2
  3670
		EIdServiceActiveDefaultAllowed,
williamr@2
  3671
	/** The interrogated Identity service is not provisioned. */
williamr@2
  3672
		EIdServiceNotProvisioned,
williamr@2
  3673
	/** The status of the interrogated Identity service is unknown. */
williamr@2
  3674
		EIdServiceUnknown
williamr@2
  3675
		};
williamr@2
  3676
williamr@2
  3677
	// for use by client-side API code and TSY only
williamr@2
  3678
williamr@2
  3679
	struct TIdServiceAndLocation
williamr@2
  3680
		{
williamr@2
  3681
		TMobilePhoneIdService iService;
williamr@2
  3682
		TMobileInfoLocation iLocation;
williamr@2
  3683
		};
williamr@2
  3684
williamr@2
  3685
	/** This function member retrieves the current status of the identity service specified.
williamr@2
  3686
	
williamr@2
  3687
	The phone will retrieve this service status information from the location 
williamr@2
  3688
	specified by the client.
williamr@2
  3689
	
williamr@2
  3690
	If the client has requested EInfoLocationCache but there is no valid status 
williamr@2
  3691
	information in the cache then the request will return KErrNotFound.
williamr@2
  3692
	
williamr@2
  3693
	If the client has requested EInfoLocationCachePreferred, the network will 
williamr@2
  3694
	be interrogated if the cache is empty. Whenever the network is interrogated, 
williamr@2
  3695
	the cache will be refreshed with the information from the network.
williamr@2
  3696
	
williamr@2
  3697
	Use RTelSubSessionBase::CancelAsyncRequest(EMobilePhoneGetIdentityServiceStatus) 
williamr@2
  3698
	to cancel a previously placed asynchronous GetIdentityServiceStatus() request.
williamr@2
  3699
	
williamr@2
  3700
	@param aReqStatus On return, KErrNone if successful.
williamr@2
  3701
	@param aService The identity service to be queried.
williamr@2
  3702
	@param aStatus On return, the service status.
williamr@2
  3703
	@param aLocation The location to use. */
williamr@2
  3704
	IMPORT_C void GetIdentityServiceStatus(TRequestStatus& aReqStatus, TMobilePhoneIdService aService, TMobilePhoneIdServiceStatus& aStatus, TMobileInfoLocation aLocation = EInfoLocationCachePreferred) const;
williamr@2
  3705
	
williamr@2
  3706
	/**
williamr@2
  3707
	Identifies default service status for provisioned identity services.
williamr@2
  3708
	*/
williamr@2
  3709
	enum TMobilePhoneIdServiceSetting
williamr@2
  3710
		{
williamr@2
  3711
		/** Sets the default setting to network default (unknown). */
williamr@2
  3712
		EIdServiceNetworkDefault,
williamr@2
  3713
		/** Sets the default setting to presentation restricted. */
williamr@2
  3714
		EIdServicePresentationRestricted,
williamr@2
  3715
		/** Sets the default setting to presentation allowed. */
williamr@2
  3716
		EIdServicePresentationAllowed
williamr@2
  3717
		};
williamr@2
  3718
		
williamr@2
  3719
	IMPORT_C void SetIdentityServiceStatus(TRequestStatus& aReqStatus, const TMobilePhoneIdService aService, const TMobilePhoneIdServiceSetting aSetting) const;
williamr@2
  3720
	IMPORT_C void NotifyIdentityServiceStatus(TRequestStatus& aReqStatus, const TMobilePhoneIdService aService, TMobilePhoneIdServiceStatus& aStatus) const;
williamr@2
  3721
	IMPORT_C void NotifyIdentitySuppressionRejected(TRequestStatus& aReqStatus) const;
williamr@2
  3722
williamr@2
  3723
	/***********************************************************************************/
williamr@2
  3724
	//
williamr@2
  3725
	// Mobile Call Barring Functional Unit
williamr@2
  3726
	//
williamr@2
  3727
	/***********************************************************************************/
williamr@2
  3728
williamr@2
  3729
/** Mobile Phone Call Baring Conditions.
williamr@2
  3730
williamr@2
  3731
Modes: Common */
williamr@2
  3732
	enum TMobilePhoneCBCondition
williamr@2
  3733
		{
williamr@2
  3734
	/** The barring program is unspecified */
williamr@2
  3735
		EBarUnspecified,
williamr@2
  3736
	/** All incoming calls to this subscriber are barred (BAIC). */
williamr@2
  3737
		EBarAllIncoming,
williamr@2
  3738
	/** All incoming calls to this subscriber are barred when roaming outside the home 
williamr@2
  3739
	PLMN country (BIC-roam). */
williamr@2
  3740
		EBarIncomingRoaming,
williamr@2
  3741
	/** All outgoing calls by this subscriber are barred (BAOC). */
williamr@2
  3742
		EBarAllOutgoing,
williamr@2
  3743
	/** All outgoing international calls by this subscriber are barred (BOIC). */
williamr@2
  3744
		EBarOutgoingInternational,
williamr@2
  3745
	/** All outgoing international calls except those directed to the home PLMN country 
williamr@2
  3746
	by this subscriber are barred (BOIC-ExHC). */
williamr@2
  3747
		EBarOutgoingInternationalExHC,
williamr@2
  3748
	/** All of above CB services. */
williamr@2
  3749
		EBarAllCases,
williamr@2
  3750
		EBarAllOutgoingServices,
williamr@2
  3751
		EBarAllIncomingServices
williamr@2
  3752
		};
williamr@2
  3753
williamr@2
  3754
/** Mobile Phone Call Barring Status and Information.
williamr@2
  3755
williamr@2
  3756
Modes: Common */
williamr@2
  3757
	enum TMobilePhoneCBStatus
williamr@2
  3758
		{
williamr@2
  3759
	/** The CB service is currently active and operative. */
williamr@2
  3760
		ECallBarringStatusActive,
williamr@2
  3761
	/** The CB service is currently deactivated or quiescent. */
williamr@2
  3762
		ECallBarringStatusNotActive,
williamr@2
  3763
	/** In GSM/WCDMA mode, the CB service is not provisioned. In CDMA mode, this value 
williamr@2
  3764
	has no meaning. */
williamr@2
  3765
		ECallBarringStatusNotProvisioned,
williamr@2
  3766
	/** In GSM/WCDMA mode, the CB service is not available in serving network. In CDMA
williamr@2
  3767
	mode, the CB service is not available in the phone. */
williamr@2
  3768
		ECallBarringStatusNotAvailable,
williamr@2
  3769
	/** The phone can not determine CB service status. */
williamr@2
  3770
		ECallBarringStatusUnknown
williamr@2
  3771
		};
williamr@2
  3772
williamr@2
  3773
	
williamr@2
  3774
williamr@2
  3775
	class TMobilePhoneCBInfoEntryV1 : public TMultimodeType
williamr@2
  3776
/** Defines information about the call barring service.
williamr@2
  3777
williamr@2
  3778
@see CMobilePhoneCBList
williamr@2
  3779
@publishedPartner
williamr@2
  3780
@released 
williamr@2
  3781
*/
williamr@2
  3782
		{
williamr@2
  3783
	public:
williamr@2
  3784
		void InternalizeL(RReadStream& aStream);
williamr@2
  3785
		void ExternalizeL(RWriteStream& aStream) const;
williamr@2
  3786
	public:
williamr@2
  3787
		IMPORT_C TMobilePhoneCBInfoEntryV1();
williamr@2
  3788
	public:
williamr@2
  3789
	/** The CB service of this list entry.
williamr@2
  3790
	
williamr@2
  3791
	Modes: Common
williamr@2
  3792
	
williamr@2
  3793
	@see TMobilePhoneCBCondition */
williamr@2
  3794
		TMobilePhoneCBCondition iCondition;
williamr@2
  3795
	/** The service group associated to this list entry.
williamr@2
  3796
	
williamr@2
  3797
	Modes: Common
williamr@2
  3798
	
williamr@2
  3799
	@see TMobileService */
williamr@2
  3800
		TMobileService iServiceGroup;
williamr@2
  3801
	/** The CB service status of this list entry.
williamr@2
  3802
	
williamr@2
  3803
	Modes: Common
williamr@2
  3804
	
williamr@2
  3805
	@see TMobilePhoneCBStatus */
williamr@2
  3806
		TMobilePhoneCBStatus iStatus;
williamr@2
  3807
		};
williamr@2
  3808
		
williamr@2
  3809
	class TMobilePhoneCBInfoEntryV3 : public TMobilePhoneCBInfoEntryV1
williamr@2
  3810
	/**
williamr@2
  3811
	V3 class extending TMobilePhoneCBInfoEntryV1 to add a comparison method parameter.
williamr@2
  3812
	*/
williamr@2
  3813
		{
williamr@2
  3814
	public:
williamr@2
  3815
		void InternalizeL(RReadStream& aStream);
williamr@2
  3816
		void ExternalizeL(RWriteStream& aStream) const;
williamr@2
  3817
	public:
williamr@2
  3818
		IMPORT_C TMobilePhoneCBInfoEntryV3();
williamr@2
  3819
	public:
williamr@2
  3820
		/**
williamr@2
  3821
		The comparison method associated with this CB entry.
williamr@2
  3822
		*/
williamr@2
  3823
		TUint8 iCompMethod;
williamr@2
  3824
		};
williamr@2
  3825
		
williamr@2
  3826
	class TMobilePhoneCBChangeV1 : public TMultimodeType
williamr@2
  3827
/** Mobile Phone Call Barring Change.
williamr@2
  3828
williamr@2
  3829
@see SetCallBarringStatus() 
williamr@2
  3830
*/
williamr@2
  3831
		{
williamr@2
  3832
	public:
williamr@2
  3833
		IMPORT_C TMobilePhoneCBChangeV1();
williamr@2
  3834
	public:
williamr@2
  3835
	/** The basic service group(s) to apply the CB status change to.
williamr@2
  3836
	
williamr@2
  3837
	@see TMobileService */
williamr@2
  3838
		TMobileService iServiceGroup;
williamr@2
  3839
	/** The service action for call barring.
williamr@2
  3840
	
williamr@2
  3841
	@see TMobilePhoneServiceAction */
williamr@2
  3842
		TMobilePhoneServiceAction iAction;
williamr@2
  3843
	/** Password required to perform the call barring service action.
williamr@2
  3844
	
williamr@2
  3845
	@see TMobilePassword */
williamr@2
  3846
		TMobilePassword iPassword;
williamr@2
  3847
		};
williamr@2
  3848
williamr@2
  3849
	IMPORT_C void SetCallBarringStatus(TRequestStatus& aReqStatus, TMobilePhoneCBCondition aCondition, const TMobilePhoneCBChangeV1& aInfo) const;
williamr@2
  3850
	IMPORT_C void NotifyCallBarringStatusChange(TRequestStatus& aReqStatus, TMobilePhoneCBCondition& aCondition) const;
williamr@2
  3851
	
williamr@2
  3852
	class TMobilePhonePasswordChangeV1 : public TMultimodeType
williamr@2
  3853
/** Mobile phone password change.
williamr@2
  3854
williamr@2
  3855
@see SetCallBarringPassword()
williamr@2
  3856
@see ChangeSecurityCode()
williamr@2
  3857
@publishedPartner
williamr@2
  3858
@released 
williamr@2
  3859
*/
williamr@2
  3860
		{
williamr@2
  3861
	public:
williamr@2
  3862
		IMPORT_C TMobilePhonePasswordChangeV1();
williamr@2
  3863
	public:
williamr@2
  3864
	/** Old password.
williamr@2
  3865
	
williamr@2
  3866
	Modes: Common
williamr@2
  3867
	
williamr@2
  3868
	@see TMobilePassword */
williamr@2
  3869
		TMobilePassword iOldPassword;
williamr@2
  3870
	/** New password.
williamr@2
  3871
	
williamr@2
  3872
	Modes: Common
williamr@2
  3873
	
williamr@2
  3874
	@see TMobilePassword */
williamr@2
  3875
		TMobilePassword iNewPassword;
williamr@2
  3876
		};
williamr@2
  3877
williamr@2
  3878
	IMPORT_C void SetCallBarringPassword(TRequestStatus& aReqStatus, const TMobilePhonePasswordChangeV1& aPassword) const;
williamr@2
  3879
williamr@2
  3880
	class TMobilePhonePasswordChangeV2 : public TMobilePhonePasswordChangeV1
williamr@2
  3881
/** Mobile phone password change version 2. 
williamr@2
  3882
*/
williamr@2
  3883
	{
williamr@2
  3884
	public:
williamr@2
  3885
		IMPORT_C TMobilePhonePasswordChangeV2();
williamr@2
  3886
	public:
williamr@2
  3887
	/** Verified password.
williamr@2
  3888
	
williamr@2
  3889
	Modes: Common
williamr@2
  3890
	
williamr@2
  3891
	@see TMobilePassword */
williamr@2
  3892
		TMobilePassword iVerifiedPassword;
williamr@2
  3893
	};
williamr@2
  3894
williamr@2
  3895
/** A typedef'd packaged TMobilePhonePasswordChangeV2 passing through a generic 
williamr@2
  3896
API function member. */
williamr@2
  3897
	typedef TPckg<TMobilePhonePasswordChangeV2> TMobilePhonePasswordChangeV2Pckg;
williamr@2
  3898
williamr@2
  3899
	IMPORT_C void SetSSPassword(TRequestStatus& aReqStatus, const TDesC8& aPassword, const TInt aService) const;
williamr@2
  3900
	
williamr@2
  3901
	IMPORT_C void GetCompMethodName(TRequestStatus& aReqStatus, TDes& aAlphaTag, const TUint8 aCmi) const;
williamr@2
  3902
williamr@2
  3903
	/***********************************************************************************/
williamr@2
  3904
	//
williamr@2
  3905
	// Mobile Call Waiting Functional Unit
williamr@2
  3906
	//
williamr@2
  3907
	/***********************************************************************************/
williamr@2
  3908
williamr@2
  3909
/** The mobile phone call waiting status.
williamr@2
  3910
williamr@2
  3911
Modes: GSM/WCDMA */
williamr@2
  3912
	enum TMobilePhoneCWStatus
williamr@2
  3913
		{
williamr@2
  3914
	/** The CW service is currently active and operative. */
williamr@2
  3915
		ECallWaitingStatusActive,
williamr@2
  3916
	/** The CW service is currently deactivated or quiescent. */
williamr@2
  3917
		ECallWaitingStatusNotActive,
williamr@2
  3918
	/** The CW service is not provisioned. */
williamr@2
  3919
		ECallWaitingStatusNotProvisioned,
williamr@2
  3920
	/** The CW service is not available in the serving network. */
williamr@2
  3921
		ECallWaitingStatusNotAvailable,
williamr@2
  3922
	/** The phone can not determine CW service status. */
williamr@2
  3923
		ECallWaitingStatusUnknown
williamr@2
  3924
		};
williamr@2
  3925
williamr@2
  3926
	
williamr@2
  3927
williamr@2
  3928
	class TMobilePhoneCWInfoEntryV1 : public TMultimodeType
williamr@2
  3929
/** Defines information about the call waiting service.
williamr@2
  3930
williamr@2
  3931
@see CMobilePhoneCWList 
williamr@2
  3932
*/
williamr@2
  3933
		{
williamr@2
  3934
	public:
williamr@2
  3935
		void InternalizeL(RReadStream& aStream);
williamr@2
  3936
		void ExternalizeL(RWriteStream& aStream) const;
williamr@2
  3937
	public:
williamr@2
  3938
		IMPORT_C TMobilePhoneCWInfoEntryV1();
williamr@2
  3939
	public:
williamr@2
  3940
	/** The service group associated to this CW service list entry.
williamr@2
  3941
	
williamr@2
  3942
	Modes: GSM/WCDMA
williamr@2
  3943
	
williamr@2
  3944
	@see TMobileService */
williamr@2
  3945
		TMobileService iServiceGroup;
williamr@2
  3946
	/** The CW service status of this list entry.
williamr@2
  3947
	
williamr@2
  3948
	Modes: GSM/WCDMA
williamr@2
  3949
	
williamr@2
  3950
	@see TMobilePhoneCWStatus */
williamr@2
  3951
		TMobilePhoneCWStatus iStatus;
williamr@2
  3952
		};
williamr@2
  3953
williamr@2
  3954
/** A typedef'd packaged TMobilePhoneCWInfoEntryV1 for passing through a generic 
williamr@2
  3955
API function member. */
williamr@2
  3956
	typedef TPckg<TMobilePhoneCWInfoEntryV1> TMobilePhoneCWInfoEntryV1Pckg;
williamr@2
  3957
williamr@2
  3958
	IMPORT_C void SetCallWaitingStatus(TRequestStatus& aReqStatus, TMobileService aServiceGroup, TMobilePhoneServiceAction aAction) const;
williamr@2
  3959
	IMPORT_C void NotifyCallWaitingStatusChange(TRequestStatus& aReqStatus, TDes8& aCWStatus) const;
williamr@2
  3960
williamr@2
  3961
	/***********************************************************************************/
williamr@2
  3962
	//
williamr@2
  3963
	// Mobile Call Completion Unit
williamr@2
  3964
	//
williamr@2
  3965
	/***********************************************************************************/
williamr@2
  3966
williamr@2
  3967
/** The Call Completion Busy Subscriber status of the phone.
williamr@2
  3968
williamr@2
  3969
Modes: GSM/WCDMA */
williamr@2
  3970
	enum TMobilePhoneCCBSStatus
williamr@2
  3971
		{
williamr@2
  3972
	/** User has CCBS provisioned and there is at least 1 (and up to 5) active CCBS 
williamr@2
  3973
	requests. */
williamr@2
  3974
		ECcbsActive,
williamr@2
  3975
	/** User has CCBS provisioned but there are currently no active CCBS requests. */
williamr@2
  3976
		ECcbsNotActive,
williamr@2
  3977
	/** User has not subscribed to the CCBS service. */
williamr@2
  3978
		ECcbsNotProvisioned,
williamr@2
  3979
	/** The CCBS service is not available in the serving network. */
williamr@2
  3980
		ECcbsNotAvailable,
williamr@2
  3981
	/** MS is unable to determine status of the CCBS service. */
williamr@2
  3982
		ECcbsUnknown
williamr@2
  3983
		};
williamr@2
  3984
williamr@2
  3985
/** CCBS recall events.
williamr@2
  3986
williamr@2
  3987
@see RMobilePhone::TMobilePhoneCCBSEntryV2 */
williamr@2
  3988
	enum TCCBSRecallEvent
williamr@2
  3989
		{
williamr@2
  3990
	/** Recall received. */
williamr@2
  3991
		ECcbsRecallReceived,
williamr@2
  3992
	/** Recall accepted. */
williamr@2
  3993
		ECcbsRecallAccepted,
williamr@2
  3994
	/** Recall refused. */
williamr@2
  3995
		ECcbsRecallRefused,
williamr@2
  3996
	/** Recall reason unspecified. */
williamr@2
  3997
		ECcbsRecallUnspecified
williamr@2
  3998
		};
williamr@2
  3999
williamr@2
  4000
	
williamr@2
  4001
williamr@2
  4002
	class TMobilePhoneCCBSEntryV1 : public TMultimodeType
williamr@2
  4003
/** Defines information about the call completion (CCBS) service.
williamr@2
  4004
williamr@2
  4005
@see CMobilePhoneCcbsList
williamr@2
  4006
@publishedPartner
williamr@2
  4007
@released 
williamr@2
  4008
*/
williamr@2
  4009
		{
williamr@2
  4010
	public:
williamr@2
  4011
		void InternalizeL(RReadStream& aStream);
williamr@2
  4012
		void ExternalizeL(RWriteStream& aStream) const;
williamr@2
  4013
	public:
williamr@2
  4014
		IMPORT_C TMobilePhoneCCBSEntryV1();
williamr@2
  4015
	public:
williamr@2
  4016
	/** The CCBS index - a number allocated by the network.
williamr@2
  4017
	
williamr@2
  4018
	Modes: GSM/WCDMA */
williamr@2
  4019
		TInt			iCcbsIndex;
williamr@2
  4020
	/** The basic service group (voice/data/fax) this CCBS request is applicable to.
williamr@2
  4021
	
williamr@2
  4022
	Modes: GSM/WCDMA
williamr@2
  4023
	
williamr@2
  4024
	@see TMobileService */
williamr@2
  4025
		TMobileService	iServiceGroup;
williamr@2
  4026
	/** The phone number of the remote party to whom the CCBS request is aimed.
williamr@2
  4027
	
williamr@2
  4028
	Modes: GSM/WCDMA
williamr@2
  4029
	
williamr@2
  4030
	@see TMobileAddress */
williamr@2
  4031
		TMobileAddress	iDestination;
williamr@2
  4032
williamr@2
  4033
		};
williamr@2
  4034
williamr@2
  4035
/** A typedef'd packaged TMobilePhoneCCBSEntryV1 for passing through a generic API 
williamr@2
  4036
function member. */
williamr@2
  4037
	typedef TPckg<TMobilePhoneCCBSEntryV1> TMobilePhoneCCBSEntryV1Pckg;
williamr@2
  4038
williamr@2
  4039
williamr@2
  4040
	class TMobilePhoneCCBSEntryV2 : public TMobilePhoneCCBSEntryV1
williamr@2
  4041
/** Defines information about the call completion (CCBS) service version 2. 
williamr@2
  4042
*/
williamr@2
  4043
		{
williamr@2
  4044
	public:
williamr@2
  4045
		IMPORT_C	TMobilePhoneCCBSEntryV2();
williamr@2
  4046
	public:
williamr@2
  4047
		TCCBSRecallEvent	iEvent;
williamr@2
  4048
		}; 
williamr@2
  4049
	
williamr@2
  4050
/** A typedef'd packaged TMobilePhoneCCBSEntryV2 for passing through a generic API 
williamr@2
  4051
function member. */
williamr@2
  4052
	typedef TPckg<TMobilePhoneCCBSEntryV2> TMobilePhoneCCBSEntryV2Pckg;
williamr@2
  4053
	
williamr@2
  4054
	IMPORT_C void GetCCBSStatus(TRequestStatus& aReqStatus, TMobilePhoneCCBSStatus& aCcbsStatus, TMobileInfoLocation aLocation = EInfoLocationCachePreferred) const;
williamr@2
  4055
	IMPORT_C void NotifyCCBSStatusChange(TRequestStatus& aReqStatus, TMobilePhoneCCBSStatus& aCcbsStatus) const;
williamr@2
  4056
	IMPORT_C void DeactivateCCBS(TRequestStatus& aReqStatus, TInt aIndex) const;
williamr@2
  4057
	IMPORT_C void NotifyCCBSRecall(TRequestStatus& aReqStatus, TDes8& aCCBSEntry) const;
williamr@2
  4058
	IMPORT_C void AcceptCCBSRecall(TRequestStatus& aReqStatus, TInt aIndex, TName& aCallName) const;
williamr@2
  4059
	IMPORT_C TInt RefuseCCBSRecall(TInt aIndex) const;
williamr@2
  4060
williamr@2
  4061
	/***********************************************************************************/
williamr@2
  4062
	//
williamr@2
  4063
	// Mobile Alternating Call Function Unit
williamr@2
  4064
	//
williamr@2
  4065
	/***********************************************************************************/
williamr@2
  4066
williamr@2
  4067
/** Alternating Call Capabilities
williamr@2
  4068
williamr@2
  4069
Modes: GSM */
williamr@2
  4070
	enum TMobilePhoneAlternatingCallCaps
williamr@2
  4071
		{
williamr@2
  4072
	/** Phone supports outgoing Voice/Data calls
williamr@2
  4073
	
williamr@2
  4074
	Modes: GSM */
williamr@2
  4075
		KCapsMOVoiceData = 0x00000001,
williamr@2
  4076
	/** Phone supports outgoing Voice Then Data calls.
williamr@2
  4077
	
williamr@2
  4078
	Modes: GSM */
williamr@2
  4079
		KCapsMOVoiceThenData = 0x00000002,
williamr@2
  4080
	/** Phone supports outgoing Voice/Fax calls.
williamr@2
  4081
	
williamr@2
  4082
	Modes: GSM/WCDMA */
williamr@2
  4083
		KCapsMOVoiceFax	= 0x00000004,
williamr@2
  4084
	/** Phone supports incoming Voice/Data calls.
williamr@2
  4085
	
williamr@2
  4086
	Modes: GSM */
williamr@2
  4087
		KCapsMTVoiceData = 0x00000008,
williamr@2
  4088
	/** Phone supports incoming Voice Then Data calls.
williamr@2
  4089
	
williamr@2
  4090
	Modes: GSM */
williamr@2
  4091
		KCapsMTVoiceThenData = 0x00000010,
williamr@2
  4092
	/** Phone supports incoming Voice/Fax calls
williamr@2
  4093
williamr@2
  4094
	Modes: GSM/WCDMA */
williamr@2
  4095
		KCapsMTVoiceFax = 0x00000020
williamr@2
  4096
		};
williamr@2
  4097
williamr@2
  4098
	IMPORT_C TInt GetAlternatingCallCaps(TUint32& aCaps) const;
williamr@2
  4099
	IMPORT_C void NotifyAlternatingCallCapsChange(TRequestStatus& aReqStatus, TUint32& aCaps) const;
williamr@2
  4100
williamr@2
  4101
/** Alternating Call Mode.
williamr@2
  4102
williamr@2
  4103
Modes: Common */
williamr@2
  4104
	enum TMobilePhoneAlternatingCallMode
williamr@2
  4105
		{
williamr@2
  4106
	/** The alternating call mode is unspecified
williamr@2
  4107
	
williamr@2
  4108
	Modes: Common */
williamr@2
  4109
		EAlternatingModeUnspecified,
williamr@2
  4110
	/** Next call will use a single bearer service - default setting
williamr@2
  4111
	
williamr@2
  4112
	Modes: Common */
williamr@2
  4113
		EAlternatingModeSingle,
williamr@2
  4114
	/** Next call will use voice/data alternating bearer service. 
williamr@2
  4115
	
williamr@2
  4116
	Modes: GSM */
williamr@2
  4117
		EAlternatingModeVoiceData,
williamr@2
  4118
	/** Next call will use voice then data alternating bearer service.
williamr@2
  4119
	
williamr@2
  4120
	Modes: GSM */
williamr@2
  4121
		EAlternatingModeVoiceThenData,
williamr@2
  4122
	/** Next call will use voice/fax alternating bearer service. 
williamr@2
  4123
	
williamr@2
  4124
	Modes: GSM/WCDMA */
williamr@2
  4125
		EAlternatingModeVoiceFax
williamr@2
  4126
		};
williamr@2
  4127
williamr@2
  4128
	IMPORT_C TInt GetAlternatingCallMode(TMobilePhoneAlternatingCallMode& aMode, TMobileService& aFirstService) const;
williamr@2
  4129
	IMPORT_C void SetAlternatingCallMode(TRequestStatus& aReqStatus, TMobilePhoneAlternatingCallMode aMode, TMobileService aFirstService) const;
williamr@2
  4130
	IMPORT_C void NotifyAlternatingCallModeChange(TRequestStatus& aReqStatus, TMobilePhoneAlternatingCallMode& aMode,TMobileService& aFirstService) const;
williamr@2
  4131
williamr@2
  4132
	/***********************************************************************************/
williamr@2
  4133
	//
williamr@2
  4134
	// Mobile Alternate Line Service Functional Unit
williamr@2
  4135
	//
williamr@2
  4136
	/***********************************************************************************/
williamr@2
  4137
williamr@2
  4138
/** Alternate Line Primary settings.
williamr@2
  4139
williamr@2
  4140
Modes: GSM */
williamr@2
  4141
	enum TMobilePhoneALSLine
williamr@2
  4142
		{
williamr@2
  4143
	/** Current ALS line selection is the "Primary" voice line. */
williamr@2
  4144
		EAlternateLinePrimary,
williamr@2
  4145
	/** Current ALS line selection is the "Auxiliary" voice line. */
williamr@2
  4146
		EAlternateLineAuxiliary,
williamr@2
  4147
	/** ALS is supported by ME and SIM, but the TSY can not determine which line is 
williamr@2
  4148
	currently selected. */
williamr@2
  4149
		EAlternateLineUnknown,
williamr@2
  4150
	/** The ME, SIM or serving network does not support ALS. */
williamr@2
  4151
		EAlternateLineNotAvailable
williamr@2
  4152
		};
williamr@2
  4153
williamr@2
  4154
	IMPORT_C TInt GetALSLine(TMobilePhoneALSLine& aALSLine) const;
williamr@2
  4155
	IMPORT_C void SetALSLine(TRequestStatus& aReqStatus, TMobilePhoneALSLine aALSLine) const;
williamr@2
  4156
	IMPORT_C void NotifyALSLineChange(TRequestStatus& aReqStatus, TMobilePhoneALSLine& aALSLine) const;
williamr@2
  4157
williamr@2
  4158
	/***********************************************************************************/	
williamr@2
  4159
	//
williamr@2
  4160
	// Mobile Network Security Functional Unit
williamr@2
  4161
	//
williamr@2
  4162
	/***********************************************************************************/
williamr@2
  4163
williamr@2
  4164
/** Enumerated network security types.
williamr@2
  4165
williamr@2
  4166
Mode: Common */
williamr@2
  4167
	enum TMobilePhoneNetworkSecurity
williamr@2
  4168
		{
williamr@2
  4169
	/** The encryption level is NONE.
williamr@2
  4170
	
williamr@2
  4171
	Mode: Common */
williamr@2
  4172
		ECipheringOff,
williamr@2
  4173
	/** The encryption level is GSM.(standard encryption algorithms for 2nd Generation 
williamr@2
  4174
	Mobile networks).
williamr@2
  4175
	
williamr@2
  4176
	Mode: GSM */
williamr@2
  4177
		ECipheringGSM,
williamr@2
  4178
	/** The encryption level is WCDMA.(standard encryption algorithms for 3rd Generation 
williamr@2
  4179
	Mobile networks).
williamr@2
  4180
	
williamr@2
  4181
	Mode: WCDMA */
williamr@2
  4182
		ECipheringWCDMA,
williamr@2
  4183
	/** The encryption level is CDMA.(standard encryption algorithms for 3rd Generation 
williamr@2
  4184
	Mobile networks).
williamr@2
  4185
	
williamr@2
  4186
	Mode: CDMA */
williamr@2
  4187
		ECipheringCDMA
williamr@2
  4188
		};
williamr@2
  4189
williamr@2
  4190
	IMPORT_C void GetNetworkSecurityLevel(TRequestStatus& aReqStatus, TMobilePhoneNetworkSecurity& aSecurity) const;
williamr@2
  4191
	IMPORT_C void NotifyNetworkSecurityLevelChange(TRequestStatus& aReqStatus, TMobilePhoneNetworkSecurity& aSecurity) const;
williamr@2
  4192
	
williamr@2
  4193
	/**
williamr@2
  4194
	Indicators for whether encryption status of the current call should be displayed.
williamr@2
  4195
	*/
williamr@2
  4196
	enum TMobileCallCipheringIndicator
williamr@2
  4197
		{
williamr@2
  4198
		/**
williamr@2
  4199
		The ME indication displaying the encryption status of the current call should be off.
williamr@2
  4200
		*/
williamr@2
  4201
		ECipheringDisplayOff,
williamr@2
  4202
		/**
williamr@2
  4203
		The ME indication displaying the encryption status of the current call should be on.
williamr@2
  4204
		*/
williamr@2
  4205
		ECipheringDisplayOn 
williamr@2
  4206
		};
williamr@2
  4207
		
williamr@2
  4208
    IMPORT_C void GetCipheringIndicatorStatus(TRequestStatus& aReqStatus, TMobileCallCipheringIndicator& aIndicatorStatus) const;
williamr@2
  4209
    IMPORT_C void NotifyCipheringIndicatorStatus(TRequestStatus& aReqStatus, TMobileCallCipheringIndicator& aIndicatorStatus) const;
williamr@2
  4210
williamr@2
  4211
	/***********************************************************************************/
williamr@2
  4212
	//
williamr@2
  4213
	// Mobile Cost Functional Unit
williamr@2
  4214
	//
williamr@2
  4215
	/***********************************************************************************/
williamr@2
  4216
williamr@2
  4217
/** Call Cost Capabilities.
williamr@2
  4218
williamr@2
  4219
Modes: GSM/WCDMA */
williamr@2
  4220
	enum TMobilePhoneCostCaps
williamr@2
  4221
		{
williamr@2
  4222
	/** Indicates that the phone supports calculation and display of current and accumulated 
williamr@2
  4223
	call cost on an information-only basis. (The AoCI service in GSM) 
williamr@2
  4224
	
williamr@2
  4225
	Modes: GSM/WCDMA */
williamr@2
  4226
		KCapsCostInformation = 0x00000001,
williamr@2
  4227
	/** Indicates that the phone supports calculation and display of current and accumulated 
williamr@2
  4228
	call cost in order to support the charging service. (The AoCC service in GSM). 
williamr@2
  4229
williamr@2
  4230
williamr@2
  4231
	Modes: Common */
williamr@2
  4232
		KCapsCostCharging = 0x00000002,
williamr@2
  4233
	/** Indicates that the phone supports clearing of cost meters (ACM or CCM) to zero.
williamr@2
  4234
	
williamr@2
  4235
	Modes: Common */
williamr@2
  4236
		KCapsClearCost = 0x00000004,
williamr@2
  4237
	/** Indicates that the phone supports setting the maximum allowed cost (ACMmax) 
williamr@2
  4238
	to a non-zero value. 
williamr@2
  4239
	
williamr@2
  4240
	Modes: Common */
williamr@2
  4241
		KCapsSetMaxCost = 0x00000008,
williamr@2
  4242
	/** Indicates that the phone supports setting the currency and price per unit.
williamr@2
  4243
	
williamr@2
  4244
	Modes: GSM/WCDMA */
williamr@2
  4245
		KCapsSetPuct = 0x00000010,
williamr@2
  4246
	/** Indicates that the phone currently has call cost information available that 
williamr@2
  4247
	the client can retrieve.
williamr@2
  4248
	
williamr@2
  4249
	Modes: Common */
williamr@2
  4250
		KCapsGetCost = 0x00000020,
williamr@2
  4251
	/** Indicates that the phone can notify the client when the call cost information 
williamr@2
  4252
	changes. 
williamr@2
  4253
	
williamr@2
  4254
	Modes: Common */
williamr@2
  4255
		KCapsNotifyCostChange = 0x00000040
williamr@2
  4256
		};
williamr@2
  4257
williamr@2
  4258
	IMPORT_C TInt GetCostCaps(TUint32& aCaps) const;
williamr@2
  4259
	IMPORT_C void NotifyCostCapsChange(TRequestStatus& aReqStatus, TUint32& aCaps) const;
williamr@2
  4260
williamr@2
  4261
/** Clear Cost Meter.
williamr@2
  4262
williamr@2
  4263
Modes: Common */
williamr@2
  4264
	enum TMobilePhoneCostMeters
williamr@2
  4265
		{
williamr@2
  4266
	/** Clear the Current Call Meter. */
williamr@2
  4267
		EClearCCM,
williamr@2
  4268
	/** Clear the Accumulated Charge Meter. */
williamr@2
  4269
		EClearACM,
williamr@2
  4270
	/** Clear all cost meters */
williamr@2
  4271
		EClearAll
williamr@2
  4272
		};
williamr@2
  4273
williamr@2
  4274
	IMPORT_C void ClearCostMeter(TRequestStatus& aReqStatus, TMobilePhoneCostMeters aMeter) const;
williamr@2
  4275
	IMPORT_C void SetMaxCostMeter(TRequestStatus& aReqStatus, TUint aUnits) const;
williamr@2
  4276
williamr@2
  4277
	
williamr@2
  4278
	
williamr@2
  4279
	class  TMobilePhonePuctV1 : public TMultimodeType
williamr@2
  4280
/** Defines the contents of the price/unit and currency table (PUCT) on the SIM.
williamr@2
  4281
williamr@2
  4282
@see TMobilePhoneCostInfoV1
williamr@2
  4283
@see SetPuct() 
williamr@2
  4284
*/
williamr@2
  4285
		{
williamr@2
  4286
	public:
williamr@2
  4287
		IMPORT_C TMobilePhonePuctV1();
williamr@2
  4288
	public:
williamr@2
  4289
	/** The Price per Unit. This floating point value is used to adjust the pricing 
williamr@2
  4290
	units supplied by the network into real currency values. 
williamr@2
  4291
	
williamr@2
  4292
	Modes: GSM/WCDMA */
williamr@2
  4293
		TReal   iPricePerUnit;
williamr@2
  4294
	/** The three character currency indicator.
williamr@2
  4295
	
williamr@2
  4296
	Modes: GSM/WCDMA */
williamr@2
  4297
		TBuf<4> iCurrencyName;
williamr@2
  4298
		};
williamr@2
  4299
williamr@2
  4300
/** A typedef'd packaged TMobilePhonePuctV1 for passing through a generic API function 
williamr@2
  4301
member. */
williamr@2
  4302
	typedef TPckg<TMobilePhonePuctV1> TMobilePhonePuctV1Pckg;
williamr@2
  4303
	
williamr@2
  4304
	IMPORT_C void SetPuct(TRequestStatus& aReqStatus, const TDesC8& aPuct) const;
williamr@2
  4305
	
williamr@2
  4306
/** Cost Information
williamr@2
  4307
williamr@2
  4308
Modes: GSM/WCDMA */
williamr@2
  4309
	enum TMobilePhoneCostService
williamr@2
  4310
		{
williamr@2
  4311
	/** Phone supports call cost service but no calls are currently in progress so the 
williamr@2
  4312
	network support and user subscription is unknown. */
williamr@2
  4313
		ECostServiceUnknown,
williamr@2
  4314
	/** The network or the phone does not support any of the call cost services. The 
williamr@2
  4315
	call can be either in progress or not. If the user is subscribed to AoCI they 
williamr@2
  4316
	will be able to continue to make calls but will not see any charging information. 
williamr@2
  4317
	If the user is subscribed to AoCC then they will be prevented from making 
williamr@2
  4318
	chargeable calls. */
williamr@2
  4319
		ECostServiceNotAvailable,
williamr@2
  4320
	/** Call is in progress and a call cost service is active but the phone is unable 
williamr@2
  4321
	to determine whether it is an AoCI or AoCC service. */
williamr@2
  4322
		ECostServiceAvailable,
williamr@2
  4323
	/** Call is in progress and the call cost information (AoCI) service is currently 
williamr@2
  4324
	operating.
williamr@2
  4325
	
williamr@2
  4326
	Modes: GSM/WCDMA */
williamr@2
  4327
		ECostServiceInformation,
williamr@2
  4328
	/** Call is in progress and the call cost charging (AoCC) service is currently operating.
williamr@2
  4329
	
williamr@2
  4330
	Modes: GSM/WCDMA */
williamr@2
  4331
		ECostServiceCharging
williamr@2
  4332
		};
williamr@2
  4333
williamr@2
  4334
	
williamr@2
  4335
williamr@2
  4336
	class TMobilePhoneCostInfoV1 : public TMultimodeType
williamr@2
  4337
/** Defines the information related to current billing costs.
williamr@2
  4338
williamr@2
  4339
@see GetCostInfo()
williamr@2
  4340
@see NotifyCostInfoChange() 
williamr@2
  4341
*/
williamr@2
  4342
		{
williamr@2
  4343
	public:
williamr@2
  4344
		IMPORT_C TMobilePhoneCostInfoV1();
williamr@2
  4345
	public:
williamr@2
  4346
	/** The current status and type of call cost service.
williamr@2
  4347
	
williamr@2
  4348
	@see TMobilePhoneCostService */
williamr@2
  4349
		TMobilePhoneCostService iService;
williamr@2
  4350
	/** The current number of charging units in the Current Call Meter. This is set 
williamr@2
  4351
	to zero if reset by the user or at the start of call set-up attempt. */
williamr@2
  4352
		TUint iCCM;
williamr@2
  4353
	/** The current number of charging units in the Accumulated Call Meter. This equals 
williamr@2
  4354
	the accumulation of previous and current calls. */
williamr@2
  4355
		TUint iACM;
williamr@2
  4356
	/** The maximum number of charging units that the ACM can rise to before chargeable 
williamr@2
  4357
	calls are stopped. Equals zero if Service != ECostServiceCharging. */
williamr@2
  4358
		TUint iACMmax;
williamr@2
  4359
	/** The Price per Unit and Currency Table.
williamr@2
  4360
	
williamr@2
  4361
	@see TMobilePhonePuctV1 */
williamr@2
  4362
		TMobilePhonePuctV1 iPuct;
williamr@2
  4363
		};
williamr@2
  4364
williamr@2
  4365
/** A typedef'd packaged TMobilePhoneCostInfoV1 for passing through a generic API
williamr@2
  4366
function member. */
williamr@2
  4367
	typedef TPckg<TMobilePhoneCostInfoV1> TMobilePhoneCostInfoV1Pckg;
williamr@2
  4368
williamr@2
  4369
	IMPORT_C void GetCostInfo(TRequestStatus& aReqStatus, TDes8& aCostInfo) const;
williamr@2
  4370
	IMPORT_C void NotifyCostInfoChange(TRequestStatus& aReqStatus, TDes8& aCostInfo) const;
williamr@2
  4371
williamr@2
  4372
	/***********************************************************************************/
williamr@2
  4373
	//
williamr@2
  4374
	// Mobile Security Functional Unit
williamr@2
  4375
	//
williamr@2
  4376
	/***********************************************************************************/
williamr@2
  4377
williamr@2
  4378
/** Security Capabilities.
williamr@2
  4379
williamr@2
  4380
Modes: Common */
williamr@2
  4381
	enum TMobilePhoneSecurityCaps
williamr@2
  4382
		{
williamr@2
  4383
	/** The phone supports an overall "phone device lock" which can be enabled or disabled. 
williamr@2
  4384
	If enabled, user must enter phone password before the phone can be used. When 
williamr@2
  4385
	this capability is set the phone will support get lock info, notify lock info 
williamr@2
  4386
	change and set lock setting for phone device lock.
williamr@2
  4387
	
williamr@2
  4388
	Modes: Common */
williamr@2
  4389
		KCapsLockPhone = 0x0000001,
williamr@2
  4390
	/** The phone supports locking the ICC (using the PIN1 security code), which can 
williamr@2
  4391
	be enabled or disabled. If enabled, the user must enter PIN1 code before the 
williamr@2
  4392
	ICC can be used. When this capability is set the phone will support get lock 
williamr@2
  4393
	info, notify lock info change and set lock setting for ICC lock. 
williamr@2
  4394
	
williamr@2
  4395
	Modes: Common */
williamr@2
  4396
		KCapsLockICC = 0x00000002,
williamr@2
  4397
	/** The phone supports the "phone to ICC lock" which can be enabled or disabled. 
williamr@2
  4398
	If enabled, at power-up the phone will check whether current ICC is the one 
williamr@2
  4399
	the phone is locked to or not. If not, then the user must enter the phone
williamr@2
  4400
	password before phone can be used with this ICC. When this capability is set 
williamr@2
  4401
	the phone will support get lock info, notify lock info change and set lock 
williamr@2
  4402
	setting for Phone-ICC lock. 
williamr@2
  4403
	
williamr@2
  4404
	Modes: Common */
williamr@2
  4405
		KCapsLockPhoneToICC = 0x00000004,
williamr@2
  4406
	/** The phone supports the "phone to first ICC lock" which can be enabled or disabled. 
williamr@2
  4407
	If enabled, at power-up the phone will check whether current ICC is the one 
williamr@2
  4408
	the phone is first locked to or not. If not, then user must enter the phone 
williamr@2
  4409
	password before the phone can be used with this ICC. When this capability 
williamr@2
  4410
	is set the phone will support get lock info, notify lock info change and set 
williamr@2
  4411
	lock setting for Phone-First ICC lock.
williamr@2
  4412
williamr@2
  4413
	Modes: Common */
williamr@2
  4414
		KCapsLockPhoneToFirstICC = 0x00000008,
williamr@2
  4415
	/** The phone supports the "Over The Air" programming lock which can be enabled 
williamr@2
  4416
	or disabled. If enabled, the phone will prevent OTA programming by the network. 
williamr@2
  4417
	If disabled, the phone will allow OTA programming by the network. When this 
williamr@2
  4418
	capability is set the phone will support get lock info, notify lock info change 
williamr@2
  4419
	and set lock setting for OTA lock. 
williamr@2
  4420
	
williamr@2
  4421
	Modes: CDMA */
williamr@2
  4422
		KCapsLockOTA = 0x00000010,
williamr@2
  4423
	/** The phone supports access to the PIN 1 security code. When this capability is 
williamr@2
  4424
	set the phone will support verification of PIN1, unblocking PIN1, changing 
williamr@2
  4425
	PIN1 and notification of PIN1 required. 
williamr@2
  4426
	
williamr@2
  4427
	Modes: Common */
williamr@2
  4428
		KCapsAccessPin1 = 0x00000020,
williamr@2
  4429
	/** The phone supports access to the PIN 2 security code. When this capability is 
williamr@2
  4430
	set the phone will support verification of PIN2, unblocking PIN2, changing 
williamr@2
  4431
	PIN2 and notification of PIN2 required.
williamr@2
  4432
	
williamr@2
  4433
	Modes: GSM/WCDMA */
williamr@2
  4434
		KCapsAccessPin2 = 0x00000040,
williamr@2
  4435
	/** The phone supports access to the phone password security code. When this capability 
williamr@2
  4436
	is set the phone will support verification of the phone password, changing 
williamr@2
  4437
	the phone password and notification if the phone password is required. 
williamr@2
  4438
	
williamr@2
  4439
	Modes: Common */
williamr@2
  4440
		KCapsAccessPhonePassword = 0x00000080,
williamr@2
  4441
	/** The phone supports access to the SPC (Service Programming Code) security code. 
williamr@2
  4442
	This code may need to be verified before OTA can commence.
williamr@2
  4443
	
williamr@2
  4444
	Modes: CDMA */
williamr@2
  4445
		KCapsAccessSPC = 0x00000100,
williamr@2
  4446
	/** The phone supports access to the hidden key. When this capability is set the
williamr@2
  4447
	phone will support verification of HiddenKey. 
williamr@2
  4448
	
williamr@2
  4449
	Modes: WCDMA */
williamr@2
  4450
		KCapsAccessHiddenKey=0x00000200,
williamr@2
  4451
	/** The phone supports access to the USIM Application PIN. An Application PIN allows 
williamr@2
  4452
	access to any file on the UICC where it is referenced in the access rules.
williamr@2
  4453
	
williamr@2
  4454
	Modes: WCDMA */
williamr@2
  4455
		KCapsAccessUSIMAppPin=0x00000400,
williamr@2
  4456
	/** The phone supports access to the second USIM Application PIN. The second Application 
williamr@2
  4457
	PIN allows access to files (where it is referenced in the access rules) within 
williamr@2
  4458
	one USIM Application on the UICC. This is a local PIN.
williamr@2
  4459
	
williamr@2
  4460
	Modes: WCDMA */
williamr@2
  4461
		KCapsAccessUSIMAppSecondPin =0x00000800,
williamr@2
  4462
	/** The phone supports access to the Universal PIN. A Universal PIN is a PIN that 
williamr@2
  4463
	is used in a multi-application UICC environment to allow several USIM applications 
williamr@2
  4464
	to share one common PIN.
williamr@2
  4465
	
williamr@2
  4466
	Modes: WCDMA */
williamr@2
  4467
		KCapsAccessUniversalPin =0x00001000
williamr@2
  4468
		};
williamr@2
  4469
williamr@2
  4470
	IMPORT_C TInt GetSecurityCaps(TUint32& aCaps) const;
williamr@2
  4471
	IMPORT_C void NotifySecurityCapsChange(TRequestStatus& aReqStatus, TUint32& aCaps) const;
williamr@2
  4472
williamr@2
  4473
/** Lock Information.
williamr@2
  4474
williamr@2
  4475
Modes: Common */
williamr@2
  4476
	enum TMobilePhoneLock
williamr@2
  4477
		{
williamr@2
  4478
	/** Lock the whole device. Phone lock password is required to unlock when this lock 
williamr@2
  4479
	is enabled. 
williamr@2
  4480
williamr@2
  4481
	Modes: Common */
williamr@2
  4482
		ELockPhoneDevice,
williamr@2
  4483
	/** Lock PIN1 on the ICC. PIN1 security code is required to unlock when this lock 
williamr@2
  4484
	is enabled. 
williamr@2
  4485
	
williamr@2
  4486
	Modes: Common */
williamr@2
  4487
		ELockICC,
williamr@2
  4488
	/** Lock the phone to the current ICC inserted in the phone Phone lock password 
williamr@2
  4489
	is required to unlock when this lock is enabled.
williamr@2
  4490
	
williamr@2
  4491
	Modes: Common */
williamr@2
  4492
		ELockPhoneToICC,
williamr@2
  4493
	/** Lock the phone to the first ICC inserted in the phone. Phone lock password is 
williamr@2
  4494
	required to unlock when this lock is enabled.
williamr@2
  4495
	
williamr@2
  4496
	Modes: Common */
williamr@2
  4497
		ELockPhoneToFirstICC,
williamr@2
  4498
	/** Lock the OTA facility on the phone. SPC security code may be required to unlock 
williamr@2
  4499
	when this lock is enabled.
williamr@2
  4500
	
williamr@2
  4501
	Modes: CDMA */
williamr@2
  4502
		ELockOTA,
williamr@2
  4503
	/** Lock PIN2 on the ICC. PIN2 security code is required to unlock when this lock 
williamr@2
  4504
	is enabled.
williamr@2
  4505
	
williamr@2
  4506
	Modes: Common */
williamr@2
  4507
		ELockPin2,
williamr@2
  4508
	/** Lock the phonebook hidden entries on the phone. Hidden key security code may 
williamr@2
  4509
	be required to unlock when this lock is enabled.
williamr@2
  4510
	
williamr@2
  4511
	Modes: WCDMA */
williamr@2
  4512
		ELockHiddenKey,
williamr@2
  4513
	/** Lock the associated USIM Application. USIM Application PIN is required to unlock 
williamr@2
  4514
	when this lock is enabled.
williamr@2
  4515
	
williamr@2
  4516
	Modes: WCDMA */
williamr@2
  4517
		ELockUSimApp,
williamr@2
  4518
	/** Lock the associated USIM Application. The second USIM Application PIN is required 
williamr@2
  4519
	to unlock when this lock is enabled.
williamr@2
  4520
	
williamr@2
  4521
	Modes: WCDMA */
williamr@2
  4522
		ELockSecondUSimApp,
williamr@2
  4523
	/** Lock the associated USIM Application(s) that share this common lock. Universal 
williamr@2
  4524
	Pin is required to unlock when this lock is enabled.
williamr@2
  4525
	
williamr@2
  4526
	Modes: WCDMA */
williamr@2
  4527
		ELockUniversalPin,
williamr@2
  4528
	/** Lock for the NAM.  The SPC is required to unlock.
williamr@2
  4529
	
williamr@2
  4530
	Modes: CDMA */
williamr@2
  4531
		ELockNam
williamr@2
  4532
		};
williamr@2
  4533
williamr@2
  4534
/** Phone lock status.
williamr@2
  4535
williamr@2
  4536
Modes: Common */
williamr@2
  4537
	enum TMobilePhoneLockStatus
williamr@2
  4538
		{
williamr@2
  4539
	/** The status of the lock is unknown. */
williamr@2
  4540
		EStatusLockUnknown,
williamr@2
  4541
	/** Lock is closed - user can not access functionality governed by this lock until 
williamr@2
  4542
	user correctly enters associated security code. */
williamr@2
  4543
		EStatusLocked,
williamr@2
  4544
	/** Lock is open - user can access functionality governed by this lock */
williamr@2
  4545
		EStatusUnlocked,
williamr@2
  4546
		EStatusBlocked
williamr@2
  4547
		};
williamr@2
  4548
williamr@2
  4549
/** The phone lock setting.
williamr@2
  4550
williamr@2
  4551
Modes: Common */
williamr@2
  4552
	enum TMobilePhoneLockSetting
williamr@2
  4553
		{
williamr@2
  4554
	/** The setting of the lock is unknown
williamr@2
  4555
	
williamr@2
  4556
	Modes: Common */
williamr@2
  4557
		ELockSetUnknown,
williamr@2
  4558
	/** Lock is enabled - associated security code will be required to unlock the 
williamr@2
  4559
	lock, the next time the lock's status is EStatusLocked. 
williamr@2
  4560
	
williamr@2
  4561
	Modes: Common */
williamr@2
  4562
		ELockSetEnabled,
williamr@2
  4563
	/** Lock is disabled - so its status is always EStatusUnlocked.
williamr@2
  4564
	
williamr@2
  4565
	Modes: Common */
williamr@2
  4566
		ELockSetDisabled,
williamr@2
  4567
	/** Lock of the current Application is replaced by the Universal PIN. Only the 
williamr@2
  4568
	Universal PIN is allowed as a replacement.
williamr@2
  4569
williamr@2
  4570
	Modes: WCDMA */
williamr@2
  4571
		ELockReplaced
williamr@2
  4572
		};
williamr@2
  4573
williamr@2
  4574
	
williamr@2
  4575
williamr@2
  4576
	class TMobilePhoneLockInfoV1 : public TMultimodeType
williamr@2
  4577
/** Defines the status of a phone lock.
williamr@2
  4578
williamr@2
  4579
@see GetLockInfo()
williamr@2
  4580
@see NotifyLockInfoChange()
williamr@2
  4581
@publishedPartner
williamr@2
  4582
@released
williamr@2
  4583
*/
williamr@2
  4584
		{
williamr@2
  4585
	public:
williamr@2
  4586
		IMPORT_C TMobilePhoneLockInfoV1();
williamr@2
  4587
	public:
williamr@2
  4588
	/** The current status of the lock.
williamr@2
  4589
	
williamr@2
  4590
	Modes: Common
williamr@2
  4591
	
williamr@2
  4592
	@see TMobilePhoneLockStatus */
williamr@2
  4593
		TMobilePhoneLockStatus iStatus;
williamr@2
  4594
	/** The current setting of the lock.
williamr@2
  4595
	
williamr@2
  4596
	Modes: Common
williamr@2
  4597
	
williamr@2
  4598
	@see TMobilePhoneLockSetting */
williamr@2
  4599
		TMobilePhoneLockSetting iSetting;
williamr@2
  4600
		};
williamr@2
  4601
williamr@2
  4602
/** A typedef'd packaged TMobilePhoneLockInfoV1 for passing through a generic API 
williamr@2
  4603
function member. */
williamr@2
  4604
	typedef TPckg<TMobilePhoneLockInfoV1> TMobilePhoneLockInfoV1Pckg;
williamr@2
  4605
williamr@2
  4606
	IMPORT_C void GetLockInfo(TRequestStatus& aReqStatus, TMobilePhoneLock aLock, TDes8& aLockInfo) const;
williamr@2
  4607
	IMPORT_C void NotifyLockInfoChange(TRequestStatus& aReqStatus, TMobilePhoneLock& aLock, TDes8& aLockInfo) const;
williamr@2
  4608
	IMPORT_C void SetLockSetting(TRequestStatus& aReqStatus, TMobilePhoneLock aLock, TMobilePhoneLockSetting aSetting) const;
williamr@2
  4609
williamr@2
  4610
/** Change Security Code.
williamr@2
  4611
williamr@2
  4612
Modes: Common */
williamr@2
  4613
	enum TMobilePhoneSecurityCode
williamr@2
  4614
		{
williamr@2
  4615
	/** PIN 1 code (between 4-8 digits).
williamr@2
  4616
williamr@2
  4617
	Modes: Common */
williamr@2
  4618
		ESecurityCodePin1,
williamr@2
  4619
	/** PIN 2 code (between 4-8 digits)
williamr@2
  4620
	
williamr@2
  4621
	Modes: GSM/WCDMA */
williamr@2
  4622
		ESecurityCodePin2,
williamr@2
  4623
	/** PIN 1 unblocking code (always 8 digits).
williamr@2
  4624
	
williamr@2
  4625
	Modes: Common */
williamr@2
  4626
		ESecurityCodePuk1,
williamr@2
  4627
	/** PIN 2 unblocking code (always 8 digits)
williamr@2
  4628
	
williamr@2
  4629
	Modes: GSM/WCDMA */
williamr@2
  4630
		ESecurityCodePuk2,
williamr@2
  4631
	/** Password used for Phone-SIM Lock and Phone Device Lock (up to 8 digits) 
williamr@2
  4632
	
williamr@2
  4633
	Modes: Common */
williamr@2
  4634
		ESecurityCodePhonePassword,
williamr@2
  4635
	/** Service Programming Code (SPC)
williamr@2
  4636
	
williamr@2
  4637
	Modes: CDMA */
williamr@2
  4638
		ESecurityCodeSPC,
williamr@2
  4639
	/** Phonebook key to display the hidden entries.
williamr@2
  4640
	
williamr@2
  4641
	Modes: WCDMA */
williamr@2
  4642
		ESecurityHiddenKey,
williamr@2
  4643
	/** USIM Application PIN.
williamr@2
  4644
	
williamr@2
  4645
	Modes: WCDMA */
williamr@2
  4646
		ESecurityUSIMAppPin,
williamr@2
  4647
	/** Second USIM Application PIN.
williamr@2
  4648
	
williamr@2
  4649
	Modes: WCDMA */
williamr@2
  4650
		ESecuritySecondUSIMAppPin,
williamr@2
  4651
	/** Universal PIN.
williamr@2
  4652
	
williamr@2
  4653
	Modes: WCDMA */
williamr@2
  4654
		ESecurityUniversalPin,
williamr@2
  4655
	/** Universal PIN unblocking code (always 8 digits).
williamr@2
  4656
	
williamr@2
  4657
	Modes: Common */
williamr@2
  4658
		ESecurityUniversalPuk
williamr@2
  4659
		};
williamr@2
  4660
williamr@2
  4661
	IMPORT_C void ChangeSecurityCode(TRequestStatus& aReqStatus, TMobilePhoneSecurityCode aType, const TMobilePhonePasswordChangeV1& aChange) const;
williamr@2
  4662
williamr@2
  4663
	/** Defines the status of a security code.
williamr@2
  4664
williamr@2
  4665
	@see GetSecurityCodeInfo()
williamr@2
  4666
	@see NotifySecurityCodeInfoChange()
williamr@2
  4667
	@publishedPartner
williamr@2
  4668
	@released
williamr@2
  4669
	*/
williamr@2
  4670
	class TMobilePhoneSecurityCodeInfoV5 : public TMultimodeType
williamr@2
  4671
		{
williamr@2
  4672
	public:
williamr@2
  4673
		IMPORT_C TMobilePhoneSecurityCodeInfoV5();
williamr@2
  4674
	public:
williamr@2
  4675
	/** Number of remaining security code entry attempts before the corresponding lock gets blocked
williamr@2
  4676
	
williamr@2
  4677
	Modes: Common
williamr@2
  4678
	*/
williamr@2
  4679
		TInt iRemainingEntryAttempts;
williamr@2
  4680
		};
williamr@2
  4681
	
williamr@2
  4682
	/** A typedef'd packaged TMobilePhoneSecurityCodeInfoV5 for passing through a generic API
williamr@2
  4683
	function member. */
williamr@2
  4684
	typedef TPckg<TMobilePhoneSecurityCodeInfoV5> TMobilePhoneSecurityCodeInfoV5Pckg;
williamr@2
  4685
	
williamr@2
  4686
	IMPORT_C void GetSecurityCodeInfo(TRequestStatus& aReqStatus, TMobilePhoneSecurityCode aSecurityCode, TDes8& aSecurityCodeInfo) const;
williamr@2
  4687
	IMPORT_C void NotifySecurityCodeInfoChange(TRequestStatus& aReqStatus, TMobilePhoneSecurityCode& aSecurityCode, TDes8& aSecurityCodeInfo) const;
williamr@2
  4688
williamr@2
  4689
/** Notify Security Events.
williamr@2
  4690
williamr@2
  4691
Modes: Common */
williamr@2
  4692
	enum TMobilePhoneSecurityEvent
williamr@2
  4693
		{
williamr@2
  4694
	/** The phone has detected that there is no ICC present. 
williamr@2
  4695
	
williamr@2
  4696
	Modes: Common */
williamr@2
  4697
		ENoICCFound,
williamr@2
  4698
	/** The phone has detected that the ICC is unusable. 
williamr@2
  4699
	
williamr@2
  4700
	Modes: Common */
williamr@2
  4701
		EICCTerminated,
williamr@2
  4702
	/** The phone requires PIN1 to be entered. 
williamr@2
  4703
	
williamr@2
  4704
	Modes: Common */
williamr@2
  4705
		EPin1Required,
williamr@2
  4706
	/** The phone requires PUK1 to be entered.
williamr@2
  4707
	
williamr@2
  4708
	Modes: Common */
williamr@2
  4709
		EPuk1Required,
williamr@2
  4710
	/** The phone requires PIN2 to be entered.
williamr@2
  4711
	
williamr@2
  4712
	Modes: GSM/WCDMA */
williamr@2
  4713
		EPin2Required,
williamr@2
  4714
	/** The phone requires PUK2 to be entered.
williamr@2
  4715
	
williamr@2
  4716
	Modes: GSM/WCDMA */
williamr@2
  4717
		EPuk2Required,
williamr@2
  4718
	/** The phone requires the Phone Password to be entered. 
williamr@2
  4719
	
williamr@2
  4720
	Modes: Common */
williamr@2
  4721
		EPhonePasswordRequired,
williamr@2
  4722
	/** The phone requires the SPC to be entered. 
williamr@2
  4723
	
williamr@2
  4724
	Modes: CDMA */
williamr@2
  4725
		ESPCRequired,
williamr@2
  4726
	/** The PIN1 verification procedure has passed. 
williamr@2
  4727
	
williamr@2
  4728
	Modes: Common */
williamr@2
  4729
		EPin1Verified,
williamr@2
  4730
	/** The PIN2 verification procedure has passed.
williamr@2
  4731
williamr@2
  4732
	Modes: GSM/WCDMA */
williamr@2
  4733
		EPin2Verified,
williamr@2
  4734
	/** The PUK1 unblocking procedure has passed.
williamr@2
  4735
	
williamr@2
  4736
	Modes: Common */
williamr@2
  4737
		EPuk1Verified,
williamr@2
  4738
	/** The PUK2 unblocking procedure has passed. 
williamr@2
  4739
	
williamr@2
  4740
	Modes: GSM/WCDMA */
williamr@2
  4741
		EPuk2Verified,
williamr@2
  4742
	/** The Phone Password has been verified. 
williamr@2
  4743
	
williamr@2
  4744
	Modes: Common */
williamr@2
  4745
		EPhonePasswordVerified,
williamr@2
  4746
	/** The SPC verification procedure has passed.
williamr@2
  4747
	
williamr@2
  4748
	Modes: CDMA */
williamr@2
  4749
		ESPCVerified,
williamr@2
  4750
	/** The phone requires the phonebook hidden key to be entered.
williamr@2
  4751
	
williamr@2
  4752
	Modes: WCDMA */
williamr@2
  4753
		EHiddenKeyRequired,
williamr@2
  4754
	/** The phonebook hidden key procedure has passed.
williamr@2
  4755
	
williamr@2
  4756
	Modes: WCDMA */
williamr@2
  4757
		EHiddenKeyVerified,
williamr@2
  4758
	/** The phone requires the currently active USIM Application PIN to be entered.
williamr@2
  4759
	
williamr@2
  4760
	Modes: WCDMA */
williamr@2
  4761
		EUSIMAppPinRequired,
williamr@2
  4762
	/** The currently active USIM Application PIN procedure has passed.
williamr@2
  4763
	
williamr@2
  4764
	Modes: WCDMA */
williamr@2
  4765
		EUSIMAppPinVerified,
williamr@2
  4766
	/** The phone requires the currently active USIM Application second PIN to be entered.
williamr@2
  4767
	
williamr@2
  4768
	Modes: WCDMA */
williamr@2
  4769
		ESecondUSIMAppPinRequired,
williamr@2
  4770
	/** The currently active USIM Application second PIN procedure has passed.
williamr@2
  4771
	
williamr@2
  4772
	Modes: WCDMA */
williamr@2
  4773
		ESecondUSIMAppPinVerified,
williamr@2
  4774
	/** The phone requires the Universal PIN to be entered.
williamr@2
  4775
	
williamr@2
  4776
	Modes: WCDMA */
williamr@2
  4777
		EUniversalPinRequired,
williamr@2
  4778
	/** The currently active Universal PIN procedure has passed.
williamr@2
  4779
	
williamr@2
  4780
	Modes: WCDMA */
williamr@2
  4781
		EUniversalPinVerified,
williamr@2
  4782
	/** The Service Programming Code has been changed.
williamr@2
  4783
	
williamr@2
  4784
	Modes: CDMA */
williamr@2
  4785
		ESPCChanged,
williamr@2
  4786
	/** The phone requires Universal PUK to be entered.
williamr@2
  4787
	
williamr@2
  4788
	Modes: WCDMA */
williamr@2
  4789
		EUniversalPukRequired,
williamr@2
  4790
	/** The Universal PUK unblocking procedure has passed.
williamr@2
  4791
	
williamr@2
  4792
	Modes: WCDMA */
williamr@2
  4793
		EUniversalPukVerified
williamr@2
  4794
		};
williamr@2
  4795
williamr@2
  4796
	IMPORT_C void NotifySecurityEvent(TRequestStatus& aReqStatus, TMobilePhoneSecurityEvent& aEvent) const;
williamr@2
  4797
williamr@2
  4798
	// for use by client-side API code and TSY only
williamr@2
  4799
williamr@2
  4800
	struct TCodeAndUnblockCode
williamr@2
  4801
		{
williamr@2
  4802
		TMobilePassword iCode;
williamr@2
  4803
		TMobilePassword iUnblockCode;
williamr@2
  4804
		};	
williamr@2
  4805
williamr@2
  4806
	IMPORT_C void VerifySecurityCode(TRequestStatus& aReqStatus, TMobilePhoneSecurityCode aType,
williamr@2
  4807
		const TMobilePassword& aCode, const TMobilePassword& aUnblockCode) const;
williamr@2
  4808
	IMPORT_C TInt AbortSecurityCode(TMobilePhoneSecurityCode aType) const;
williamr@2
  4809
williamr@2
  4810
	/***********************************************************************************/	
williamr@2
  4811
	// 
williamr@2
  4812
	// MobileMessageWaiting
williamr@2
  4813
	//
williamr@2
  4814
	/***********************************************************************************/
williamr@2
  4815
williamr@2
  4816
/** Display indicators. */
williamr@2
  4817
	enum TMobilePhoneIndicatorDisplay
williamr@2
  4818
		{
williamr@2
  4819
	/** Display voicemail active. */
williamr@2
  4820
		KDisplayVoicemailActive = 0x01,
williamr@2
  4821
	/** Display fax active. */
williamr@2
  4822
		KDisplayFaxActive = 0x02,
williamr@2
  4823
	/** Display E-mail active. */
williamr@2
  4824
		KDisplayEmailActive = 0x04,
williamr@2
  4825
	/** Display other active. */
williamr@2
  4826
		KDisplayOtherActive = 0x08,
williamr@2
  4827
	/** Display Aux voicemail active. */
williamr@2
  4828
		KDisplayAuxVoicemailActive = 0x10,
williamr@2
  4829
	/** Display data active. */
williamr@2
  4830
		KDisplayDataActive = 0x20,
williamr@2
  4831
	/** Display Videomail active. */
williamr@2
  4832
		KDisplayVideomailActive = 0x40
williamr@2
  4833
		};
williamr@2
  4834
williamr@2
  4835
	class TMobilePhoneMessageWaitingV1 : public TMultimodeType
williamr@2
  4836
/** Message Waiting Indicators. See 3GPP TS 31 102.
williamr@2
  4837
williamr@2
  4838
@see GetIccMessageWaitingIndicators()
williamr@2
  4839
@see SetIccMessageWaitingIndicators()
williamr@2
  4840
@see NotifyIccMessageWaitingIndicatorsChange() 
williamr@2
  4841
*/
williamr@2
  4842
		{
williamr@2
  4843
	public:
williamr@2
  4844
		IMPORT_C TMobilePhoneMessageWaitingV1();
williamr@2
  4845
	public:
williamr@2
  4846
	/** The flags for each indicator from TMobilePhoneIndicatorDisplay to specify whether 
williamr@2
  4847
	the indicator should be displayed or not. E.g. Messages of the specified type are waiting.
williamr@2
  4848
williamr@2
  4849
	Modes: Common */
williamr@2
  4850
		TUint8	iDisplayStatus;
williamr@2
  4851
	/** The number of voicemail messages waiting for the "main" voice line.
williamr@2
  4852
	
williamr@2
  4853
	Modes: Common */
williamr@2
  4854
		TUint8	iVoiceMsgs;
williamr@2
  4855
	/** The number of voicemail messages waiting for the "auxiliary" voice line.
williamr@2
  4856
	
williamr@2
  4857
	Modes: GSM */
williamr@2
  4858
		TUint8	iAuxVoiceMsgs;
williamr@2
  4859
	/** The number of messages waiting for the data line.
williamr@2
  4860
	
williamr@2
  4861
	Modes: Common */
williamr@2
  4862
		TUint8	iDataMsgs;
williamr@2
  4863
	/** The number of messages waiting for the fax line.
williamr@2
  4864
	
williamr@2
  4865
	Modes: Common */
williamr@2
  4866
		TUint8	iFaxMsgs;
williamr@2
  4867
	/** The number of email messages waiting.
williamr@2
  4868
	
williamr@2
  4869
	Modes: WCDMA */
williamr@2
  4870
		TUint8	iEmailMsgs;
williamr@2
  4871
	/** Contains the number of "unspecified" messages waiting.
williamr@2
  4872
	
williamr@2
  4873
	Modes: WCDMA */
williamr@2
  4874
		TUint8	iOtherMsgs;
williamr@2
  4875
		};
williamr@2
  4876
williamr@2
  4877
/** A typedef'd packaged TMobilePhoneMessageWaitingV1 for passing through a generic 
williamr@2
  4878
API function member. */
williamr@2
  4879
	typedef TPckg<TMobilePhoneMessageWaitingV1> TMobilePhoneMessageWaitingV1Pckg;
williamr@2
  4880
	
williamr@2
  4881
	class TMobilePhoneMessageWaitingV8 : public TMobilePhoneMessageWaitingV1
williamr@2
  4882
/** Message Waiting Indicators. See Section 4.2.63 of 3GPP TS 31 102 V6.18.0 .
williamr@2
  4883
@see GetIccMessageWaitingIndicators()
williamr@2
  4884
@see SetIccMessageWaitingIndicators()
williamr@2
  4885
@see NotifyIccMessageWaitingIndicatorsChange() 
williamr@2
  4886
*/
williamr@2
  4887
		{
williamr@2
  4888
	public:
williamr@2
  4889
		IMPORT_C TMobilePhoneMessageWaitingV8();
williamr@2
  4890
	public:
williamr@2
  4891
	/** 
williamr@2
  4892
	Contains the number of video messages waiting.
williamr@2
  4893
	
williamr@2
  4894
	Modes: Common */
williamr@2
  4895
		TUint8	iVideoMsgs;
williamr@2
  4896
		};
williamr@2
  4897
williamr@2
  4898
/** A typedef'd packaged TMobilePhoneMessageWaitingV8 for passing through a generic 
williamr@2
  4899
API function member. */
williamr@2
  4900
	typedef TPckg<TMobilePhoneMessageWaitingV8> TMobilePhoneMessageWaitingV8Pckg;
williamr@2
  4901
williamr@2
  4902
	IMPORT_C void GetIccMessageWaitingIndicators(TRequestStatus& aReqStatus, TDes8& aMsgIndicators) const;
williamr@2
  4903
	IMPORT_C void SetIccMessageWaitingIndicators(TRequestStatus& aReqStatus, const TDesC8& aMsgIndicators) const;
williamr@2
  4904
	IMPORT_C void NotifyIccMessageWaitingIndicatorsChange(TRequestStatus& aReqStatus, TDes8& aMsgIndicators) const;
williamr@2
  4905
williamr@2
  4906
	IMPORT_C void NotifyMessageWaiting(TRequestStatus& aReqStatus, TInt& aCount) const;
williamr@2
  4907
williamr@2
  4908
	/***********************************************************************************/
williamr@2
  4909
	//
williamr@2
  4910
	// Mobile Fixed Dialling Numbers Functional Unit
williamr@2
  4911
	//
williamr@2
  4912
	/***********************************************************************************/
williamr@2
  4913
williamr@2
  4914
/** Fixed Dialling Numbers Status.
williamr@2
  4915
williamr@2
  4916
Modes: Common */
williamr@2
  4917
	enum TMobilePhoneFdnStatus
williamr@2
  4918
		{
williamr@2
  4919
	/** Fixed Dialling Number mode is supported but is not currently active. */
williamr@2
  4920
		EFdnNotActive,
williamr@2
  4921
	/** Fixed Dialling Number mode is supported and is currently active. Deactivating 
williamr@2
  4922
	FDN mode is supported. */
williamr@2
  4923
		EFdnActive,
williamr@2
  4924
	/** Fixed Dialling Number mode is supported and is permanently active. Deactivating 
williamr@2
  4925
	FDN mode is NOT supported with this SIM. */
williamr@2
  4926
		EFdnPermanentlyActive,
williamr@2
  4927
	/** Fixed Dialling Number mode is not supported by ME and/or SIM. */
williamr@2
  4928
		EFdnNotSupported,
williamr@2
  4929
	/** ME is currently unable to determine the status of FDN mode. */
williamr@2
  4930
		EFdnUnknown
williamr@2
  4931
		};
williamr@2
  4932
williamr@2
  4933
	IMPORT_C TInt GetFdnStatus(TMobilePhoneFdnStatus& aFdnStatus) const;
williamr@2
  4934
	IMPORT_C void GetFdnStatus(TRequestStatus& aReqStatus, TMobilePhoneFdnStatus& aFdnStatus) const;
williamr@2
  4935
williamr@2
  4936
/** Fixed Dialling Numbers Setting
williamr@2
  4937
williamr@2
  4938
Modes: Common */
williamr@2
  4939
	enum TMobilePhoneFdnSetting
williamr@2
  4940
		{
williamr@2
  4941
	/** Activate the FDN service. */
williamr@2
  4942
		EFdnSetOn,
williamr@2
  4943
	/** Deactivate the FDN service. */
williamr@2
  4944
		EFdnSetOff
williamr@2
  4945
		};
williamr@2
  4946
williamr@2
  4947
	IMPORT_C void SetFdnSetting(TRequestStatus& aReqStatus, TMobilePhoneFdnSetting aFdnSetting) const;
williamr@2
  4948
	IMPORT_C void NotifyFdnStatusChange(TRequestStatus& aReqStatus, TMobilePhoneFdnStatus& aFdnStatus) const;
williamr@2
  4949
williamr@2
  4950
	/***********************************************************************************/
williamr@2
  4951
	//
williamr@2
  4952
	// Multicall bearer settings
williamr@2
  4953
	//
williamr@2
  4954
	/***********************************************************************************/
williamr@2
  4955
williamr@2
  4956
	class TMobilePhoneMulticallSettingsV1 : public TMultimodeType
williamr@2
  4957
/** Multi call settings for version v1.0.
williamr@2
  4958
williamr@2
  4959
@see GetMulticallParams()
williamr@2
  4960
@see NotifyMulticallParamsChange() 
williamr@2
  4961
@publishedPartner
williamr@2
  4962
@released*/
williamr@2
  4963
		{
williamr@2
  4964
	public:
williamr@2
  4965
		IMPORT_C TMobilePhoneMulticallSettingsV1();
williamr@2
  4966
	public:
williamr@2
  4967
	/** Maximum number of simultaneous CS bearers allowed - defined by the user. 
williamr@2
  4968
	
williamr@2
  4969
	Modes: WCDMA */
williamr@2
  4970
		TInt iUserMaxBearers;
williamr@2
  4971
	/** Maximum number of simultaneous bearers allowed - defined by the service provider.
williamr@2
  4972
	
williamr@2
  4973
	Modes: WCDMA */
williamr@2
  4974
		TInt iServiceProviderMaxBearers;
williamr@2
  4975
	/** Maximum number of simultaneous CS bearers supported by the network.
williamr@2
  4976
	
williamr@2
  4977
	Modes: WCDMA */
williamr@2
  4978
		TInt iNetworkSupportedMaxBearers;
williamr@2
  4979
	/** Maximum number of simultaneous CS bearers supported by the UE.
williamr@2
  4980
	
williamr@2
  4981
	Modes: WCDMA */
williamr@2
  4982
		TInt iUESupportedMaxBearers;
williamr@2
  4983
		};
williamr@2
  4984
williamr@2
  4985
/** A typedef'd packaged TMobilePhoneMulticallSettingsV1 for passing through a generic 
williamr@2
  4986
API function member. */
williamr@2
  4987
	typedef TPckg<TMobilePhoneMulticallSettingsV1> TMobilePhoneMulticallSettingsV1Pckg;
williamr@2
  4988
williamr@2
  4989
	IMPORT_C void GetMulticallParams(TRequestStatus& aReqStatus, TDes8& aMulticallParams) const;
williamr@2
  4990
	IMPORT_C void SetMulticallParams(TRequestStatus& aReqStatus, TInt aUserMaxBearers) const;
williamr@2
  4991
	IMPORT_C void NotifyMulticallParamsChange(TRequestStatus& aReqStatus, TDes8& aMulticallParams) const;
williamr@2
  4992
	
williamr@2
  4993
	enum TMobilePhoneMulticallIndicator
williamr@2
  4994
	/**
williamr@2
  4995
	Indicators for exceeding allowed multiple active bearers.
williamr@2
  4996
	*/
williamr@2
  4997
		{
williamr@2
  4998
		/** The maximum number of multiple active bearers allowed by the service provider has been exceeded. */
williamr@2
  4999
		EBearerNetworProviderExceeded,
williamr@2
  5000
		/** The maximum number of multiple active bearers allowed by the mobile user  has been exceeded. */
williamr@2
  5001
		EBearerUserExceeded
williamr@2
  5002
		};
williamr@2
  5003
		
williamr@2
  5004
	IMPORT_C void NotifyMulticallIndicatorChange(TRequestStatus& aReqStatus, TMobilePhoneMulticallIndicator& aMulticallIndicator) const;
williamr@2
  5005
williamr@2
  5006
	/***********************************************************************************/
williamr@2
  5007
	//
williamr@2
  5008
	// MobileNextIncomingCall Functional Unit
williamr@2
  5009
	//
williamr@2
  5010
	/***********************************************************************************/
williamr@2
  5011
williamr@2
  5012
/** Incoming Call Types.
williamr@2
  5013
williamr@2
  5014
Modes: Common */
williamr@2
  5015
	enum TMobilePhoneIncomingCallType
williamr@2
  5016
		{
williamr@2
  5017
	/** MS will receive any type of incoming call.
williamr@2
  5018
	
williamr@2
  5019
	Modes: Common */
williamr@2
  5020
		EIncomingTypeNotSpecified,
williamr@2
  5021
	/** MS will request voice bearer for incoming calls.
williamr@2
  5022
	
williamr@2
  5023
	Modes: Common */
williamr@2
  5024
		EIncomingVoice,
williamr@2
  5025
	/** MS will request fax bearer for incoming calls 
williamr@2
  5026
	
williamr@2
  5027
	Modes: Common */
williamr@2
  5028
		EIncomingFax,
williamr@2
  5029
	/** MS will request data bearer for incoming calls
williamr@2
  5030
	
williamr@2
  5031
	Modes: Common */
williamr@2
  5032
		EIncomingData,
williamr@2
  5033
	/** MS will request a data bearer for use by a Multimedia CS call (voice fall back 
williamr@2
  5034
	is acceptable) for incoming calls.
williamr@2
  5035
	
williamr@2
  5036
	Modes: GSM/WCDMA */
williamr@2
  5037
		EIncomingMultimediaVoiceFallback,
williamr@2
  5038
	/** MS will request a data bearer for use by a Multimedia CS call (voice fall back 
williamr@2
  5039
	NOT acceptable) for incoming calls 
williamr@2
  5040
	
williamr@2
  5041
	Modes: GSM/WCDMA */
williamr@2
  5042
		EIncomingMultimediaNoFallback,
williamr@2
  5043
	/** The single numbering scheme call mode is alternating voice to fax.
williamr@2
  5044
	
williamr@2
  5045
	Modes: GSM/WCDMA */
williamr@2
  5046
		EIncomingAlternatingVoiceFax,
williamr@2
  5047
	/** The single numbering scheme call mode is alternating voice to data.
williamr@2
  5048
	
williamr@2
  5049
	Modes: GSM */
williamr@2
  5050
		EIncomingAlternatingVoiceData,
williamr@2
  5051
	/** The single numbering scheme call mode is alternating fax to voice.
williamr@2
  5052
	
williamr@2
  5053
	Modes: GSM */
williamr@2
  5054
		EIncomingAlternatingFaxVoice,
williamr@2
  5055
	/** The single numbering scheme call mode is alternating data to voice.
williamr@2
  5056
	
williamr@2
  5057
	Modes: GSM */
williamr@2
  5058
		EIncomingAlternatingDataVoice,
williamr@2
  5059
	/** The single numbering scheme call mode is alternating voice then data.
williamr@2
  5060
	
williamr@2
  5061
	Modes: GSM */
williamr@2
  5062
		EIncomingAlternatingVoiceThenData
williamr@2
  5063
		};
williamr@2
  5064
williamr@2
  5065
	IMPORT_C void GetIncomingCallType(TRequestStatus& aReqStatus, TMobilePhoneIncomingCallType& aCallType, TDes8& aDataParams) const;
williamr@2
  5066
	IMPORT_C void SetIncomingCallType(TRequestStatus& aReqStatus, TMobilePhoneIncomingCallType aCallType, TDes8& aDataParams) const;
williamr@2
  5067
	IMPORT_C void NotifyIncomingCallTypeChange(TRequestStatus& aReqStatus, TMobilePhoneIncomingCallType& aCallType, TDes8& aDataParams) const;
williamr@2
  5068
williamr@2
  5069
	/***********************************************************************************/
williamr@2
  5070
	//
williamr@2
  5071
	// User-To-User Signalling Functional Unit
williamr@2
  5072
	//
williamr@2
  5073
	/***********************************************************************************/
williamr@2
  5074
williamr@2
  5075
/** UUS Settings Requests.
williamr@2
  5076
williamr@2
  5077
Modes: GSM/WCDMA */
williamr@2
  5078
	enum TMobilePhoneUUSSetting         // UUS settings of the phone
williamr@2
  5079
		{
williamr@2
  5080
	/** UUS is not specified. */
williamr@2
  5081
		EIncomingUUSNotSpecified,
williamr@2
  5082
	/** MS will accept incoming UUS activation request. */
williamr@2
  5083
		EIncomingUUSAccepted,
williamr@2
  5084
	/** MS will reject incoming UUS activation request. */
williamr@2
  5085
		EIncomingUUSRejected
williamr@2
  5086
		};
williamr@2
  5087
williamr@2
  5088
	IMPORT_C void GetUUSSetting(TRequestStatus& aReqStatus, TMobilePhoneUUSSetting& aSetting) const;
williamr@2
  5089
	IMPORT_C void SetUUSSetting(TRequestStatus& aReqStatus, TMobilePhoneUUSSetting aSetting) const;
williamr@2
  5090
	IMPORT_C void NotifyUUSSettingChange(TRequestStatus& aReqStatus, TMobilePhoneUUSSetting& aSetting) const;
williamr@2
  5091
	
williamr@2
  5092
	/***********************************************************************************/
williamr@2
  5093
	//
williamr@2
  5094
	// Mobile Smart Card Applications Functional Unit
williamr@2
  5095
	//
williamr@2
  5096
	/***********************************************************************************/
williamr@2
  5097
	
williamr@2
  5098
	
williamr@2
  5099
	enum { KSmartCardApplicationLabelMaxSize=32 };
williamr@2
  5100
	
williamr@2
  5101
	/** Smart card application info version v5.0. 
williamr@2
  5102
	Modes: Common
williamr@2
  5103
williamr@2
  5104
	@see GetSmartCardApplicationInfo()
williamr@2
  5105
	@publishedPartner
williamr@2
  5106
	@released
williamr@2
  5107
	*/
williamr@2
  5108
	class TSmartCardApplicationInfoV5 : public TMultimodeType
williamr@2
  5109
		{
williamr@2
  5110
	public:
williamr@2
  5111
		IMPORT_C TSmartCardApplicationInfoV5();
williamr@2
  5112
	public:
williamr@2
  5113
		/** 
williamr@2
  5114
		Smart card application identifier.
williamr@2
  5115
		*/
williamr@2
  5116
		TAID iAID;
williamr@2
  5117
		/** 
williamr@2
  5118
		Smart card application label. 16 bit USC2 characters string provided by the application 
williamr@2
  5119
		provider to be shown to the user for information, e.g. operator name. It is 
williamr@2
  5120
		recommended by ETSI/3GPP spec that the application label does not exceed 32 
williamr@2
  5121
		bytes.
williamr@2
  5122
		
williamr@2
  5123
		The application label is optional. If no label is provided, the buffer should 
williamr@2
  5124
		be NULL.
williamr@2
  5125
		 */
williamr@2
  5126
		TBuf8<KSmartCardApplicationLabelMaxSize> iLabel;
williamr@2
  5127
		};
williamr@2
  5128
williamr@2
  5129
	/**
williamr@2
  5130
	A typedef'd packaged TSmartCardApplicationInfoV5 for passing through a generic API 
williamr@2
  5131
	function member. 
williamr@2
  5132
	*/	
williamr@2
  5133
	typedef TPckg<TSmartCardApplicationInfoV5> TSmartCardApplicationInfoV5Pckg;
williamr@2
  5134
williamr@2
  5135
	/**
williamr@2
  5136
	Specifies the max length of the buffer used to retrieve the smart
williamr@2
  5137
	card application's supported EAP method list.  Value 255 since EAP
williamr@2
  5138
	type list length fits into one byte (see table 5.1 of ETSI TS
williamr@2
  5139
	102.310 v6.2.0).
williamr@2
  5140
williamr@2
  5141
	@see RMobilePhone::GetSmartCardApplicationInfo()
williamr@2
  5142
	@see RMobilePhone::TUiccApplicationEapInfoV6::iEapTypeList
williamr@2
  5143
	*/
williamr@2
  5144
	enum { KEapSupportedTypeListSize = 255 };
williamr@2
  5145
williamr@2
  5146
	/**
williamr@2
  5147
	UICC application info version v6.0.  Is a
williamr@2
  5148
	TSmartCardApplicationInfoV5 object, but has an additional buffer
williamr@2
  5149
	(iEapTypeList) for retrieving a list supported EAP methods on the
williamr@2
  5150
	application.
williamr@2
  5151
williamr@2
  5152
	Modes: GSM/WCDMA
williamr@2
  5153
williamr@2
  5154
	@see RMobilePhone::GetSmartCardApplicationInfo()
williamr@2
  5155
	@publishedPartner
williamr@2
  5156
	@released
williamr@2
  5157
	*/
williamr@2
  5158
	class TUiccApplicationEapInfoV6 : public TSmartCardApplicationInfoV5
williamr@2
  5159
		{
williamr@2
  5160
	public:
williamr@2
  5161
		IMPORT_C TUiccApplicationEapInfoV6();
williamr@2
  5162
williamr@2
  5163
	public:
williamr@2
  5164
		/**
williamr@2
  5165
		Application EAP support type list, defining the EAP methods
williamr@2
  5166
		supported by the UICC application (see RFC 3748 and
williamr@2
  5167
		http://www.iana.org/assignments/eap-numbers).
williamr@2
  5168
		
williamr@2
  5169
		As reference, also worth seeing section 5.2 of ETSI TS 102.310
williamr@2
  5170
		v6.2.0 and section 6.2 of RFC3748.
williamr@2
  5171
williamr@2
  5172
		@see KETelSmartCardEapTypeMD5
williamr@2
  5173
		@see KETelSmartCardEapTypeTLS
williamr@2
  5174
		@see KETelSmartCardEapTypeSIM
williamr@2
  5175
		@see KETelSmartCardEapTypeAKA
williamr@2
  5176
		@see KETelSmartCardEapTypeTTLS
williamr@2
  5177
		*/
williamr@2
  5178
		TBuf8<KEapSupportedTypeListSize> iEapTypeList;	
williamr@2
  5179
		};
williamr@2
  5180
williamr@2
  5181
	/**
williamr@2
  5182
	A typedef'd packaged TEapUiccApplicationInfoV6 for passing through
williamr@2
  5183
	a generic API function member.
williamr@2
  5184
williamr@2
  5185
	@see RMobilePhone::GetSmartCardApplicationInfo()
williamr@2
  5186
	*/	
williamr@2
  5187
	typedef TPckg<TUiccApplicationEapInfoV6> TUiccApplicationEapInfoV6Pckg;
williamr@2
  5188
williamr@2
  5189
	/**
williamr@2
  5190
	Smart card application notification events
williamr@2
  5191
	
williamr@2
  5192
	Modes: Common
williamr@2
  5193
	*/	
williamr@2
  5194
	enum TSmartCardApplicationEvent
williamr@2
  5195
		{
williamr@2
  5196
		/**
williamr@2
  5197
		Smart card application has been installed.
williamr@2
  5198
		*/
williamr@2
  5199
		EScApplicationInstalled,
williamr@2
  5200
		/**
williamr@2
  5201
		Smart card application has been removed.
williamr@2
  5202
		*/
williamr@2
  5203
		EScApplicationRemoved,
williamr@2
  5204
		/**
williamr@2
  5205
		Smart card application has been activated.
williamr@2
  5206
		*/
williamr@2
  5207
		EScApplicationActivated,
williamr@2
  5208
		/**
williamr@2
  5209
		Smart card application has been terminated.
williamr@2
  5210
		*/
williamr@2
  5211
		EScApplicationTerminated
williamr@2
  5212
		};
williamr@2
  5213
williamr@2
  5214
	/**
williamr@2
  5215
	Smart card application status.
williamr@2
  5216
williamr@2
  5217
	Modes: Common
williamr@2
  5218
	*/
williamr@2
  5219
	enum TSmartCardApplicationAction
williamr@2
  5220
		{
williamr@2
  5221
		/**
williamr@2
  5222
		Smart card application will be activated.
williamr@2
  5223
		*/
williamr@2
  5224
		EScApplicationActivate,
williamr@2
  5225
		/** 
williamr@2
  5226
		Smart card application will be terminated.
williamr@2
  5227
		*/
williamr@2
  5228
		EScTerminate
williamr@2
  5229
		};
williamr@2
  5230
williamr@2
  5231
	/**
williamr@2
  5232
	Smart card application file types. For definitions see TS 102.221.
williamr@2
  5233
	
williamr@2
  5234
	Modes: Common
williamr@2
  5235
	*/		
williamr@2
  5236
	enum TScFileType
williamr@2
  5237
		{
williamr@2
  5238
		/**
williamr@2
  5239
		Smart card file type is unknown.
williamr@2
  5240
		*/
williamr@2
  5241
		EUnknown,
williamr@2
  5242
		/**
williamr@2
  5243
		Smart card file type is linear fixed. 
williamr@2
  5244
		
williamr@2
  5245
		This is a record-based file.
williamr@2
  5246
		*/
williamr@2
  5247
		ELinearFixed,
williamr@2
  5248
		/**
williamr@2
  5249
		Smart card file type is cyclic. 
williamr@2
  5250
		
williamr@2
  5251
		This is a record-based file.
williamr@2
  5252
		*/
williamr@2
  5253
		ECyclic,
williamr@2
  5254
		/**
williamr@2
  5255
		Smart card file type is transparent. 
williamr@2
  5256
		
williamr@2
  5257
		This is a binary file.
williamr@2
  5258
		*/
williamr@2
  5259
		ETransparent
williamr@2
  5260
		};
williamr@2
  5261
williamr@2
  5262
	/**
williamr@2
  5263
	Typedef to hold a 2-byte file identifier.
williamr@2
  5264
	*/
williamr@2
  5265
	typedef TUint16 TScFileID;
williamr@2
  5266
williamr@2
  5267
	/** Smart card application file info version v5.0.
williamr@2
  5268
	Modes: Common
williamr@2
  5269
williamr@2
  5270
	@see GetScFileInfo()
williamr@2
  5271
	@publishedPartner
williamr@2
  5272
	@released
williamr@2
  5273
	*/
williamr@2
  5274
	class TScFileInfoV5 : public TMultimodeType
williamr@2
  5275
		{
williamr@2
  5276
	public:
williamr@2
  5277
		IMPORT_C TScFileInfoV5();
williamr@2
  5278
	public:
williamr@2
  5279
		/**
williamr@2
  5280
		Smart card file identifier.
williamr@2
  5281
		*/
williamr@2
  5282
		TScFileID iFileID;
williamr@2
  5283
		/**
williamr@2
  5284
		The type of the smart card file. Options are
williamr@2
  5285
		Linear Fixed, Cyclic or Transparent.
williamr@2
  5286
		*/
williamr@2
  5287
		TScFileType iType;
williamr@2
  5288
		/**
williamr@2
  5289
		Total length of the file.  As specified in TS 102.221 the maximum length of an EF is 0xFFF bytes.
williamr@2
  5290
		*/
williamr@2
  5291
		TInt iTotalLength;
williamr@2
  5292
		/**
williamr@2
  5293
		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.
williamr@2
  5294
		If file type is ETransparent then this value is unused and will be set to 0. 
williamr@2
  5295
		
williamr@2
  5296
		From TS 102.221 the maximum length of a record in an EF is 255 bytes.
williamr@2
  5297
		*/
williamr@2
  5298
		TInt iRecordLength;
williamr@2
  5299
		/**
williamr@2
  5300
		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.
williamr@2
  5301
		If file type is ETransparent then this value is unused and will be set to 0. 
williamr@2
  5302
		
williamr@2
  5303
		From TS 102.221 the maximum number of records in an EF is 254.
williamr@2
  5304
		*/
williamr@2
  5305
		TInt iNumberRecords;
williamr@2
  5306
		};
williamr@2
  5307
	
williamr@2
  5308
	
williamr@2
  5309
	/** A typedef'd packaged TScFileInfoV5 for passing through a generic API 
williamr@2
  5310
	function member. 
williamr@2
  5311
	*/
williamr@2
  5312
	typedef TPckg<TScFileInfoV5> TScFileInfoV5Pckg;
williamr@2
  5313
	
williamr@2
  5314
	/**
williamr@2
  5315
	This based on the maximum number of bytes in a command PDU 
williamr@2
  5316
	as defined in TS 102.221 however the actual path string is very unlikely to ever be this big.
williamr@2
  5317
	
williamr@2
  5318
	Modes: Common
williamr@2
  5319
	*/
williamr@2
  5320
	enum{ KMaxScFilePathLength = 256};
williamr@2
  5321
	
williamr@2
  5322
	/**
williamr@2
  5323
	A typedef'd buffer to hold the path to an EF file.  
williamr@2
  5324
	*/
williamr@2
  5325
	typedef TBuf8<KMaxScFilePathLength> TScFilePathReference;
williamr@2
  5326
	
williamr@2
  5327
	
williamr@2
  5328
	 /** 
williamr@2
  5329
	 Class that holds a smart card applications AID and associated file path string.
williamr@2
  5330
williamr@2
  5331
	 Modes: Common
williamr@2
  5332
williamr@2
  5333
	 @see GetScFileInfo()
williamr@2
  5334
	 @publishedPartner
williamr@2
  5335
	 @released
williamr@2
  5336
	 */
williamr@2
  5337
	 class TScFilePath
williamr@2
  5338
		{
williamr@2
  5339
	 public:
williamr@2
  5340
		IMPORT_C TScFilePath();
williamr@2
  5341
     public:
williamr@2
  5342
     	/** 
williamr@2
  5343
     	AID of application. This may be empty implying the iPath is a path reference starting at the master file (MF).
williamr@2
  5344
     	*/
williamr@2
  5345
		TAID iAID;
williamr@2
  5346
		/**
williamr@2
  5347
		Full path reference to file.  
williamr@2
  5348
		
williamr@2
  5349
		The iPath must define the file path using full path referencing. This is because the client does not know 
williamr@2
  5350
		what is the currently selected EF or DF and it is therefore necessary to select the file by full
williamr@2
  5351
		path referencing from the master file.  
williamr@2
  5352
		
williamr@2
  5353
		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.
williamr@2
  5354
		E.g. To reference the EF_DIR - iAID would be empty and iPath would be set to "2F00".
williamr@2
  5355
		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".
williamr@2
  5356
		
williamr@2
  5357
		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,
williamr@2
  5358
		In this situation the path reference may start with the implicit FID of the application DF (7FFF).  
williamr@2
  5359
		E.g.  The path to reference to the EF_SMS file in a USIM application using implicit ADF FID would 
williamr@2
  5360
		be "7FFF6F3C".
williamr@2
  5361
		
williamr@2
  5362
		See TS102.221 section 8.4.2 for more information.  
williamr@2
  5363
		*/
williamr@2
  5364
		TScFilePathReference iPath;
williamr@2
  5365
		};
williamr@2
  5366
		
williamr@2
  5367
	/** Smart card application file identifier and access offsets.  This class is used to identify a file and the 
williamr@2
  5368
	location in a file to either read or write. Inherits attributes from TScFilePath which provide the 
williamr@2
  5369
	parent AID and full path reference.
williamr@2
  5370
	
williamr@2
  5371
	Modes: Common
williamr@2
  5372
williamr@2
  5373
	@see TScFilePath
williamr@2
  5374
	@see ReadScFile()
williamr@2
  5375
	@see UpdateScFile()
williamr@2
  5376
	@publishedPartner
williamr@2
  5377
	@released
williamr@2
  5378
	*/
williamr@2
  5379
	class TScFilePathWithAccessOffsets : public TScFilePath
williamr@2
  5380
		{
williamr@2
  5381
	public:
williamr@2
  5382
		IMPORT_C TScFilePathWithAccessOffsets();
williamr@2
  5383
	public:
williamr@2
  5384
		/**
williamr@2
  5385
		The type of the smart card file. Options are
williamr@2
  5386
		Linear Fixed, Cyclic or Transparent.
williamr@2
  5387
		*/
williamr@2
  5388
		TScFileType iType;
williamr@2
  5389
		/**
williamr@2
  5390
		If file type is ELinearFixed or ECyclic then this is the starting record index to read or update.
williamr@2
  5391
		This must be less than the number of records in the file.
williamr@2
  5392
williamr@2
  5393
		If file type is ETransparent then this is the offset (in bytes) from the start of the transparent file to read or update.
williamr@2
  5394
		This must be less than the total file size.
williamr@2
  5395
		*/
williamr@2
  5396
		TUint iStartOffset;
williamr@2
  5397
		/**
williamr@2
  5398
		If the file type is ELinearFixed or ECyclic then this is unused.
williamr@2
  5399
		NOTE: A call to ReadScFile or UpdateScFile for a record based file type will only read or update
williamr@2
  5400
		one record as described in TS 102.221 READ RECORD and UPDATE RECORD.
williamr@2
  5401
williamr@2
  5402
		If file type is ETransparent then this is the number of bytes to read or update.
williamr@2
  5403
		*/
williamr@2
  5404
		TUint iCount;
williamr@2
  5405
		};
williamr@2
  5406
williamr@2
  5407
	IMPORT_C void EnumerateSmartCardApplications(TRequestStatus& aReqStatus, TUint& aCount) const;
williamr@2
  5408
	IMPORT_C void GetSmartCardApplicationInfo(TRequestStatus& aReqStatus, TUint aAppIndex, TDes8& aInfo) const;
williamr@2
  5409
	IMPORT_C void NotifySmartCardApplicationInfoChange(TRequestStatus& aReqStatus, TAID& aAID, TSmartCardApplicationEvent& aEvent) const;
williamr@2
  5410
	IMPORT_C void SetSmartCardApplicationStatus(TRequestStatus& aReqStatus, const TAID& aAID, TSmartCardApplicationAction aAppAction) const;
williamr@2
  5411
	IMPORT_C void GetScFileInfo(TRequestStatus& aReqStatus, const TScFilePath& aFilePathId, TDes8& aInfo) const;
williamr@2
  5412
	IMPORT_C void ReadScFile(TRequestStatus& aReqStatus, const TScFilePathWithAccessOffsets& aFilePathOffsets, TDes8& aReadBuffer) const;
williamr@2
  5413
	IMPORT_C void UpdateScFile(TRequestStatus& aReqStatus, const TScFilePathWithAccessOffsets& aFilePathOffsets, TDes8& aUpdateBuffer) const;
williamr@2
  5414
	
williamr@2
  5415
	/***********************************************************************************/
williamr@2
  5416
	//
williamr@2
  5417
	// Mobile USIM Applications Functional Unit
williamr@2
  5418
	//
williamr@2
  5419
	/***********************************************************************************/
williamr@2
  5420
williamr@2
  5421
	enum { KUSimApplicationLabelMaxSize=32 };
williamr@2
  5422
williamr@2
  5423
	IMPORT_C void EnumerateUSimApplications(TRequestStatus& aReqStatus, TInt& aCount, TAID& aActiveAID) const; //deprecated 9.1
williamr@2
  5424
williamr@2
  5425
	class TUSimApplicationInfoV2 : public TMultimodeType
williamr@2
  5426
	/** USIM application information for version v2.0. 
williamr@2
  5427
		
williamr@2
  5428
	@deprecated 9.1 Use @see TSmartCardApplicationInfoV5 instead.
williamr@2
  5429
	*/
williamr@2
  5430
		{
williamr@2
  5431
	public:
williamr@2
  5432
		IMPORT_C TUSimApplicationInfoV2();
williamr@2
  5433
	public:
williamr@2
  5434
	/** USIM Application identifier.
williamr@2
  5435
williamr@2
  5436
	Modes: WCDMA */
williamr@2
  5437
		TAID								iAID;
williamr@2
  5438
	/** USIM Application label. 16 bit USC2 characters string provided by the application 
williamr@2
  5439
	provider to be shown to the user for information, e.g. operator name. It is 
williamr@2
  5440
	recommended by ETSI/3GPP spec that the application label does not exceed 32 
williamr@2
  5441
	bytes.
williamr@2
  5442
	
williamr@2
  5443
	The application label is optional. If no label is provided, the buffer should 
williamr@2
  5444
	be NULL.
williamr@2
  5445
	
williamr@2
  5446
	Modes: WCDMA */
williamr@2
  5447
		TBuf8<KUSimApplicationLabelMaxSize> iLabel; 
williamr@2
  5448
	};
williamr@2
  5449
williamr@2
  5450
	/** A typedef'd packaged TUSimApplicationInfoV2 for passing through a generic API 
williamr@2
  5451
	function member. 
williamr@2
  5452
williamr@2
  5453
	@deprecated 9.1 Use @see TSmartCardApplicationInfoV5 instead.
williamr@2
  5454
	*/
williamr@2
  5455
	typedef TPckg<TUSimApplicationInfoV2> TUSimApplicationInfoV2Pckg;
williamr@2
  5456
williamr@2
  5457
	IMPORT_C void GetUSimApplicationInfo(TRequestStatus& aReqStatus, TInt aUSimAppIndex, TDes8& aInfo) const; //deprecated 9.1
williamr@2
  5458
	IMPORT_C void NotifyUSimApplicationsInfoChange(TRequestStatus& aReqStatus, TInt& aCount, TAID& aActiveAID) const; //deprecated 9.1
williamr@2
  5459
williamr@2
  5460
	/** USIM Application Status.
williamr@2
  5461
williamr@2
  5462
	Modes: WCDMA 
williamr@2
  5463
williamr@2
  5464
	@deprecated 9.1 Use @see TSmartCardApplicationAction instead.
williamr@2
  5465
	*/
williamr@2
  5466
	enum TUSimAppAction
williamr@2
  5467
		{
williamr@2
  5468
	/** USIM application will be activated.
williamr@2
  5469
	
williamr@2
  5470
	Modes: WCDMA */
williamr@2
  5471
		EUSimActivate,
williamr@2
  5472
	/** USIM application will be terminated.
williamr@2
  5473
	
williamr@2
  5474
	Modes: WCDMA */
williamr@2
  5475
		EUSimTerminate
williamr@2
  5476
		};
williamr@2
  5477
williamr@2
  5478
	IMPORT_C void SetUSimApplicationStatus(TRequestStatus& aReqStatus, const TAID aAID, TUSimAppAction aUsimAppAction) const; //deprecated 9.1
williamr@2
  5479
williamr@2
  5480
	/** USIM Application selection mode.
williamr@2
  5481
williamr@2
  5482
	Mode: WCDMA */
williamr@2
  5483
	enum TUSimSelectionMode
williamr@2
  5484
		{
williamr@2
  5485
	/** USIM application is selected automatically by phone.
williamr@2
  5486
	
williamr@2
  5487
	Mode: WCDMA */
williamr@2
  5488
		EUSimSelectionAutomatic,
williamr@2
  5489
	/** USIM application is selected manually by user.
williamr@2
  5490
	
williamr@2
  5491
	Mode: WCDMA */
williamr@2
  5492
		EUSimSelectionManual
williamr@2
  5493
		};
williamr@2
  5494
williamr@2
  5495
	IMPORT_C TInt SetUSimAppsSelectionMode(TUSimSelectionMode aUSimSelectionMode) const;
williamr@2
  5496
	IMPORT_C TInt GetUSimAppsSelectionMode(TUSimSelectionMode& aUSimSelectionMode) const;
williamr@2
  5497
	IMPORT_C void NotifyUSimAppsSelectionModeChange(TRequestStatus& aReqStatus, TUSimSelectionMode& aUSimSelectionMode) const;
williamr@2
  5498
	IMPORT_C void GetCurrentActiveUSimApplication(TRequestStatus& aReqStatus, TAID& aAID) const;
williamr@2
  5499
williamr@2
  5500
	/***********************************************************************************/
williamr@2
  5501
	//
williamr@2
  5502
	// Mobile MMS Functional Unit
williamr@2
  5503
	// 
williamr@2
  5504
	/***********************************************************************************/
williamr@2
  5505
	
williamr@2
  5506
	/** max size of MMS notification buffer. */
williamr@2
  5507
	
williamr@2
  5508
	enum{KMaxMmsNotification = 253};
williamr@2
  5509
	
williamr@2
  5510
	/**
williamr@2
  5511
	Identifies current status of MMS.
williamr@2
  5512
	*/
williamr@2
  5513
	enum TMmsStatus
williamr@2
  5514
		{
williamr@2
  5515
		/**
williamr@2
  5516
		The MMS has not been retrieved.
williamr@2
  5517
		*/
williamr@2
  5518
		EMmsNotRetrieved,
williamr@2
  5519
		/**
williamr@2
  5520
	    The MMS has been retrieved.
williamr@2
  5521
	    */
williamr@2
  5522
		EMmsRetrieved,
williamr@2
  5523
		/**
williamr@2
  5524
		The MMS has been rejected.
williamr@2
  5525
		*/
williamr@2
  5526
		EMmsRejected,
williamr@2
  5527
		/**
williamr@2
  5528
		The MMS has been forwarded.
williamr@2
  5529
		*/
williamr@2
  5530
		EMmsforwarded
williamr@2
  5531
		};
williamr@2
  5532
williamr@2
  5533
	/** 
williamr@2
  5534
	MMS Implementation.
williamr@2
  5535
	*/
williamr@2
  5536
	enum TMmsImplementation
williamr@2
  5537
		{
williamr@2
  5538
		/**
williamr@2
  5539
		Unknown implementation for MMS.
williamr@2
  5540
		*/
williamr@2
  5541
		KMmsImplUnknwown=0x00,
williamr@2
  5542
		/**
williamr@2
  5543
		Wap implementation for MMS.
williamr@2
  5544
		*/
williamr@2
  5545
		KWapImplementation=0x01
williamr@2
  5546
		};
williamr@2
  5547
	
williamr@2
  5548
	/**
williamr@2
  5549
	MMS Connectivity settings.
williamr@2
  5550
	*/
williamr@2
  5551
	enum TMmsConnParams
williamr@2
  5552
		{
williamr@2
  5553
		/**
williamr@2
  5554
		MMS User Preferences.
williamr@2
  5555
		*/
williamr@2
  5556
		EUserPreferences,
williamr@2
  5557
		/**
williamr@2
  5558
		MMS Issuer Connectivity Parameters.
williamr@2
  5559
		*/
williamr@2
  5560
		EIssuerConnParams,
williamr@2
  5561
		/**
williamr@2
  5562
		MMS User Connectivity Parameters.
williamr@2
  5563
		*/
williamr@2
  5564
		EUserConnParams
williamr@2
  5565
		};
williamr@2
  5566
williamr@2
  5567
	/**
williamr@2
  5568
	MMS field Id tags.
williamr@2
  5569
	*/
williamr@2
  5570
	enum TMobileMMSFieldTags
williamr@2
  5571
		{
williamr@2
  5572
		/**
williamr@2
  5573
		Tag id for MMS connectivity parameters.
williamr@2
  5574
		*/
williamr@2
  5575
		ETagMmsConnParams=0xAB,
williamr@2
  5576
		/**
williamr@2
  5577
		Tag id for MMS Implementation.
williamr@2
  5578
		*/
williamr@2
  5579
		ETagMmsImpl=0x80,
williamr@2
  5580
		/**
williamr@2
  5581
		Tag id for MMS Relay/Server.
williamr@2
  5582
		*/
williamr@2
  5583
		ETagMmsServer=0x81,
williamr@2
  5584
		/**
williamr@2
  5585
		Tag id for Interface to Core Network and Bearer.
williamr@2
  5586
		*/
williamr@2
  5587
		ETagMmsBearerIE=0x82,
williamr@2
  5588
		/**
williamr@2
  5589
		Tag id for Gateway.
williamr@2
  5590
		*/
williamr@2
  5591
		ETagMmsGateway=0x83 	  
williamr@2
  5592
		};
williamr@2
  5593
		
williamr@2
  5594
	class TMmsNotificationV3 : public TMultimodeType
williamr@2
  5595
	/**
williamr@2
  5596
	Class containing MMS notification paramters.
williamr@2
  5597
	*/
williamr@2
  5598
		{
williamr@2
  5599
		public :
williamr@2
  5600
			IMPORT_C TMmsNotificationV3();
williamr@2
  5601
		public :
williamr@2
  5602
			/**
williamr@2
  5603
			Free/Used space.
williamr@2
  5604
			*/
williamr@2
  5605
			TBool iSpace;
williamr@2
  5606
			/**
williamr@2
  5607
			Notification read/not read.
williamr@2
  5608
			*/
williamr@2
  5609
			TBool iNotification;
williamr@2
  5610
			/**
williamr@2
  5611
			MMS status.
williamr@2
  5612
			*/
williamr@2
  5613
			TMmsStatus iMmsStatus;
williamr@2
  5614
			/**
williamr@2
  5615
			MMS implementation.
williamr@2
  5616
			*/
williamr@2
  5617
			TMmsImplementation iImplementation;
williamr@2
  5618
			/**
williamr@2
  5619
			MMS notification buffer.
williamr@2
  5620
			*/
williamr@2
  5621
			TBuf8<KMaxMmsNotification> iNotify;
williamr@2
  5622
		};
williamr@2
  5623
	
williamr@2
  5624
	typedef TPckg<TMmsNotificationV3> TMmsNotificationV3Pckg;
williamr@2
  5625
williamr@2
  5626
	//	MMS notification 	
williamr@2
  5627
	IMPORT_C void NotifyMmsUpdate(TRequestStatus& aReqStatus, TDes8& aNotification) const;
williamr@2
  5628
	IMPORT_C void SetMmsUserConnParams(TRequestStatus& aReqStatus, TDes8& aConnectivity) const;
williamr@2
  5629
	IMPORT_C void SetMmsUserPreferences(TRequestStatus& aReqStatus, TDes8& aPreferences) const;
williamr@2
  5630
	IMPORT_C void GetMmsConfig(TRequestStatus& aReqStatus, const TMmsConnParams aType, TDes8& aConnectivity) const;
williamr@2
  5631
	IMPORT_C void NotifyMmsConfig(TRequestStatus& aReqStatus, const TMmsConnParams aType, TDes8& aConnectivity) const;
williamr@2
  5632
	
williamr@2
  5633
	/***********************************************************************************/
williamr@2
  5634
	//
williamr@2
  5635
	// Mobile MailBox Numbers Functional Unit 
williamr@2
  5636
	// 
williamr@2
  5637
	/***********************************************************************************/
williamr@2
  5638
williamr@2
  5639
	class TMobilePhoneVoicemailIdsV3 : public TMultimodeType
williamr@2
  5640
	/**
williamr@2
  5641
	Contains mailbox numbers.
williamr@2
  5642
	*/
williamr@2
  5643
		{
williamr@2
  5644
		public :
williamr@2
  5645
			IMPORT_C TMobilePhoneVoicemailIdsV3();
williamr@2
  5646
		public :
williamr@2
  5647
			/**
williamr@2
  5648
			Phonebook entry for "voicemail" mailbox number.
williamr@2
  5649
			*/
williamr@2
  5650
			TUint8	iVoice;
williamr@2
  5651
			/** 
williamr@2
  5652
			Phonebook entry for "data" mailbox number.
williamr@2
  5653
			*/
williamr@2
  5654
			TUint8	iData;
williamr@2
  5655
			/**
williamr@2
  5656
			Phonebook entry for "fax" mailbox number.
williamr@2
  5657
			*/
williamr@2
  5658
			TUint8	iFax;
williamr@2
  5659
			/**
williamr@2
  5660
			Phonebook entry for "other" mailbox number.
williamr@2
  5661
			*/
williamr@2
  5662
			TUint8	iOther;
williamr@2
  5663
		};
williamr@2
  5664
williamr@2
  5665
/** A typedef'd packaged TMobilePhoneVoicemailIdsV3 for passing through a generic 
williamr@2
  5666
	API function member. */
williamr@2
  5667
	typedef TPckg<TMobilePhoneVoicemailIdsV3> TMobilePhoneVoicemailIdsV3Pckg;
williamr@2
  5668
williamr@2
  5669
	class TMobilePhoneVoicemailIdsV8 : public TMobilePhoneVoicemailIdsV3
williamr@2
  5670
	/**
williamr@2
  5671
	Contains mailbox numbers see section 4.2.62 of 3GPP TS 31.102 V6.18.0.
williamr@2
  5672
	*/
williamr@2
  5673
		{
williamr@2
  5674
		public :
williamr@2
  5675
			IMPORT_C TMobilePhoneVoicemailIdsV8();
williamr@2
  5676
		public :
williamr@2
  5677
			/**
williamr@2
  5678
			Phonebook entry for "videomail" mailbox number.
williamr@2
  5679
			*/
williamr@2
  5680
			TUint8	 iVideo;
williamr@2
  5681
		};
williamr@2
  5682
		
williamr@2
  5683
	/** A typedef'd packaged TMobilePhoneVoicemailIdsV8 for passing through a generic 
williamr@2
  5684
	API function member. */
williamr@2
  5685
	typedef TPckg<TMobilePhoneVoicemailIdsV8> TMobilePhoneVoicemailIdsV8Pckg;
williamr@2
  5686
williamr@2
  5687
	IMPORT_C void GetMailboxNumbers(TRequestStatus& aReqStatus, TDes8& aMailBox) const;
williamr@2
  5688
	IMPORT_C void NotifyMailboxNumbersChange(TRequestStatus& aReqStatus, TDes8& aMailBox) const;
williamr@2
  5689
williamr@2
  5690
	/***********************************************************************************/
williamr@2
  5691
	//
williamr@2
  5692
	// Mobile APN Control List Functional Unit
williamr@2
  5693
	// 
williamr@2
  5694
	/***********************************************************************************/	
williamr@2
  5695
	
williamr@2
  5696
	enum { KMaxApnName = 100 };
williamr@2
  5697
	
williamr@2
  5698
	class TAPNEntryV3 : public TMultimodeType
williamr@2
  5699
	/**
williamr@2
  5700
	Contains parameters for an Access Point Name (APN) entry contained 
williamr@2
  5701
	within the Access Control List EFacl file in the UICC.
williamr@2
  5702
	*/
williamr@2
  5703
		{
williamr@2
  5704
	public:
williamr@2
  5705
		IMPORT_C TAPNEntryV3();
williamr@2
  5706
	public:
williamr@2
  5707
		/**
williamr@2
  5708
		GGSN DNS name.
williamr@2
  5709
		*/
williamr@2
  5710
		TBuf8<KMaxApnName> iApn;		
williamr@2
  5711
		};
williamr@2
  5712
		
williamr@2
  5713
	typedef TPckg<TAPNEntryV3> TAPNEntryV3Pckg;
williamr@2
  5714
	
williamr@2
  5715
	IMPORT_C void EnumerateAPNEntries(TRequestStatus& aReqStatus, TUint32 &aIndex) const;
williamr@2
  5716
	IMPORT_C void GetAPNname(TRequestStatus& aReqStatus, const TUint32 aIndex, TDes8& aAPN) const;
williamr@2
  5717
	IMPORT_C void AppendAPNName(TRequestStatus& aReqStatus, const TDes8& aAPN) const;
williamr@2
  5718
	IMPORT_C void DeleteAPNName(TRequestStatus& aReqStatus, TUint32 aIndex) const; 
williamr@2
  5719
	IMPORT_C void NotifyAPNListChanged(TRequestStatus& aReqStatus) const;
williamr@2
  5720
williamr@2
  5721
	enum TAPNControlListServiceStatus {
williamr@2
  5722
		/**
williamr@2
  5723
		The APN control list service is disabled.
williamr@2
  5724
		*/
williamr@2
  5725
		EAPNControlListServiceDisabled,
williamr@2
  5726
		/**
williamr@2
  5727
		The APN control list service is enabled.
williamr@2
  5728
		*/
williamr@2
  5729
		EAPNControlListServiceEnabled
williamr@2
  5730
	};
williamr@2
  5731
williamr@2
  5732
	IMPORT_C void SetAPNControlListServiceStatus(TRequestStatus& aReqStatus, TAPNControlListServiceStatus aAPNControlListServiceStatus) const;
williamr@2
  5733
	IMPORT_C void GetAPNControlListServiceStatus(TRequestStatus& aReqStatus, TAPNControlListServiceStatus& aAPNControlListServiceStatus) const;
williamr@2
  5734
	IMPORT_C void NotifyAPNControlListServiceStatusChange(TRequestStatus& aReqStatus, TAPNControlListServiceStatus& aAPNControlListServiceStatus) const;
williamr@2
  5735
williamr@2
  5736
	/***********************************************************************************/
williamr@2
  5737
	//
williamr@2
  5738
	// Retrieve Total Air Time Duration Functional Unit
williamr@2
  5739
	//
williamr@2
  5740
	/***********************************************************************************/
williamr@2
  5741
	IMPORT_C TInt GetAirTimeDuration(TTimeIntervalSeconds& aTime) const;
williamr@2
  5742
	IMPORT_C void NotifyAirTimeDurationChange(TRequestStatus& aReqStatus,TTimeIntervalSeconds& aTime) const;
williamr@2
  5743
	/***********************************************************************************/
williamr@2
  5744
	//
williamr@2
  5745
	// Terminate All Calls
williamr@2
  5746
	//
williamr@2
  5747
	/***********************************************************************************/
williamr@2
  5748
	IMPORT_C void TerminateAllCalls(TRequestStatus& aReqStatus) const;
williamr@2
  5749
	
williamr@2
  5750
	/***********************************************************************************/
williamr@2
  5751
	//
williamr@2
  5752
	// Auto Redial Functional Unit
williamr@2
  5753
	//
williamr@2
  5754
	/***********************************************************************************/
williamr@2
  5755
	IMPORT_C void ClearBlacklist(TRequestStatus& aReqStatus) const;
williamr@2
  5756
williamr@2
  5757
	/***********************************************************************************/
williamr@2
  5758
	//
williamr@2
  5759
	// Mobile Personalisation Functional Unit
williamr@2
  5760
	//
williamr@2
  5761
	/***********************************************************************************/
williamr@2
  5762
	
williamr@2
  5763
	/**
williamr@2
  5764
	Indentifies the personalisation scheme capabilities of the UICC/ME.
williamr@2
  5765
	*/
williamr@2
  5766
	enum TMobilePhonePersonalisationCaps
williamr@2
  5767
		{
williamr@2
  5768
		/**
williamr@2
  5769
		UICC/ME personalisation based on network (MCC, MNC) information is possible.
williamr@2
  5770
		*/
williamr@2
  5771
		KCapsPersonalisedNetwork=0x01,
williamr@2
  5772
		/**
williamr@2
  5773
		UICC/ME personalisation based on network (MCC, MNC, IMSI network code group) information is possible.
williamr@2
  5774
		*/
williamr@2
  5775
		KCapsPersonalisedNetworkSub=0x02,
williamr@2
  5776
		/**
williamr@2
  5777
		UICC/ME personalisation based on network (MCC, MNC, EFGID1, EFCNL) information is possible.
williamr@2
  5778
		*/
williamr@2
  5779
		KCapsPersonalisedServiceProvider=0x04,
williamr@2
  5780
		/**
williamr@2
  5781
		UICC/ME personalisation based on network (MCC, MNC, EFGID1, EFGID2, EFCNL) information is possible.
williamr@2
  5782
		*/
williamr@2
  5783
		KCapsPersonalisedCorporate=0x08,
williamr@2
  5784
		/**
williamr@2
  5785
		UICC/ME personalisation based on (IMSI SIM/USIM code group) information is possible.
williamr@2
  5786
		*/
williamr@2
  5787
		KCapsPersonalisedUSim=0x10
williamr@2
  5788
		};
williamr@2
  5789
		
williamr@2
  5790
	/**
williamr@2
  5791
	Identifies the current personalisation schemes that are active. 
williamr@2
  5792
	*/
williamr@2
  5793
	enum TMobilePhonePersonalisationScheme
williamr@2
  5794
		{
williamr@2
  5795
		/**
williamr@2
  5796
		The ME is personalised under the network scheme.
williamr@2
  5797
		*/
williamr@2
  5798
		KPersonalisedNetwork=0x01,
williamr@2
  5799
		/**
williamr@2
  5800
		The ME is personalised under the network sub scheme.
williamr@2
  5801
		*/
williamr@2
  5802
		KPersonalisedNetworkSub=0x02,
williamr@2
  5803
		/**
williamr@2
  5804
		The ME is personalised under the service provider scheme.
williamr@2
  5805
		*/
williamr@2
  5806
		KPersonalisedServiceProvider=0x04,
williamr@2
  5807
		/**
williamr@2
  5808
		The ME is personalised under the corprorate scheme.
williamr@2
  5809
		*/
williamr@2
  5810
		KPersonalisedCorporate=0x08,
williamr@2
  5811
		/**
williamr@2
  5812
		The ME is personalised under the  SIM/USIM scheme.
williamr@2
  5813
		*/
williamr@2
  5814
		KPersonalisedUSim=0x10	
williamr@2
  5815
		};
williamr@2
  5816
williamr@2
  5817
	/**
williamr@2
  5818
	Identifies the personalisation scheme to be set.
williamr@2
  5819
	*/
williamr@2
  5820
	enum TMobilePhonePersonalisation
williamr@2
  5821
		{
williamr@2
  5822
		/**
williamr@2
  5823
		Personalise the ME using the network scheme.
williamr@2
  5824
		*/
williamr@2
  5825
		EPersonaliseNetwork,
williamr@2
  5826
		/**
williamr@2
  5827
		Personalise the ME using the network sub scheme.
williamr@2
  5828
		*/
williamr@2
  5829
		EPersonaliseNetworkSub,
williamr@2
  5830
		/**
williamr@2
  5831
		Personalise the ME using the service provider scheme.
williamr@2
  5832
		*/
williamr@2
  5833
		EPersonaliseServiceProvider,
williamr@2
  5834
		/**
williamr@2
  5835
		Personalise the ME using the corporate scheme.
williamr@2
  5836
		*/
williamr@2
  5837
		EPersonaliseCorporate,
williamr@2
  5838
		/**
williamr@2
  5839
		Personalise the ME using the SIM/USIM scheme.
williamr@2
  5840
		*/
williamr@2
  5841
		EPersonaliseUsim
williamr@2
  5842
		};
williamr@2
  5843
		
williamr@2
  5844
	IMPORT_C TInt GetPersonalisationCaps(TUint32& aCaps) const;
williamr@2
  5845
	IMPORT_C void GetPersonalisationStatus(TRequestStatus& aReqStatus, TUint32& aPersSchemes) const;
williamr@2
  5846
	IMPORT_C void SetPersonalisationStatus(TRequestStatus& aReqStatus, const TMobilePhonePersonalisation aPersSchemes, const TDes& aPersCode) const;
williamr@2
  5847
	
williamr@2
  5848
	/***********************************************************************************/
williamr@2
  5849
	//
williamr@2
  5850
	// Etel 3rd Party v1.0 Parameter classes
williamr@2
  5851
	//
williamr@2
  5852
	/***********************************************************************************/
williamr@2
  5853
	
williamr@2
  5854
	class TEtel3rdPartyMobileNetworkInfoV1 : public TMultimodeType
williamr@2
  5855
	/**
williamr@2
  5856
	Defines the parameters used to set-up of a call originated from an ETel 3rd Party client.
williamr@2
  5857
williamr@2
  5858
	TEtel3rdPartyMobileNetworkInfoV1 was used to give an indication to the TSY of where the
williamr@2
  5859
	request was originating from; i.e. if the request is from an application using the ISV
williamr@2
  5860
	API or ETel API, which allowed the TSY to make a decision based on the origin.  This
williamr@2
  5861
	data type also provided further protection by not including any location information
williamr@2
  5862
	parameters.  With PlatSec being introduced in v9.0, there was no need to use this data
williamr@2
  5863
	structure, as each API is policed with the adequate PlatSec capabilities.  Therefore,
williamr@2
  5864
	in v9.0 TEtel3rdPartyMobileNetworkInfoV1 was deprecated and removed from the ETel ISV
williamr@2
  5865
	(ETel3rdParty) implementation.
williamr@2
  5866
williamr@2
  5867
	TEtel3rdPartyMobileNetworkInfoV1 was only used internally by the ETel ISV API when calls
williamr@2
  5868
	are made to RMobilePhone::GetCurrentNetwork or RMobilePhone::NotifyCurrentNetworkChange.
williamr@2
  5869
	The TSY no longer needs to support this as ETel ISV now uses the TMobilePhoneNetworkInfoV2
williamr@2
  5870
	data structure and no distinction is required for ISV Apps.
williamr@2
  5871
williamr@2
  5872
	@publishedPartner
williamr@2
  5873
	@deprecated 9.0 This class has been deprecated from 9.0 and should no longer be used.
williamr@2
  5874
	*/
williamr@2
  5875
		{
williamr@2
  5876
	public:
williamr@2
  5877
		IMPORT_C TEtel3rdPartyMobileNetworkInfoV1();
williamr@2
  5878
	public:
williamr@2
  5879
	/** Mode of the network.
williamr@2
  5880
	Modes: Common
williamr@2
  5881
	
williamr@2
  5882
	@see TMobilePhoneNetworkMode */
williamr@2
  5883
		TMobilePhoneNetworkMode iMode;
williamr@2
  5884
	/** Status of the network
williamr@2
  5885
	
williamr@2
  5886
	Modes: Common
williamr@2
  5887
	
williamr@2
  5888
	@see TMobilePhoneNetworkStatus */
williamr@2
  5889
		TMobilePhoneNetworkStatus iStatus;
williamr@2
  5890
	/** The band and band class of the CDMA network operator.
williamr@2
  5891
	
williamr@2
  5892
	Modes: CDMA
williamr@2
  5893
	
williamr@2
  5894
	@see TMobilePhoneNetworkBandInfo */
williamr@2
  5895
		TMobilePhoneNetworkBandInfo iBandInfo;
williamr@2
  5896
	/** The MCC of the network.
williamr@2
  5897
	
williamr@2
  5898
	Modes: Common
williamr@2
  5899
	
williamr@2
  5900
	@see TMobilePhoneNetworkCountryCode */
williamr@2
  5901
		TMobilePhoneNetworkCountryCode iCountryCode;
williamr@2
  5902
	/** The system identity (SID) of the CDMA network or the system identity (SID) of the AMPS network.
williamr@2
  5903
	
williamr@2
  5904
	Modes: CDMA
williamr@2
  5905
williamr@2
  5906
	@see TMobilePhoneNetworkIdentity */
williamr@2
  5907
		TMobilePhoneNetworkIdentity iCdmaSID;
williamr@2
  5908
	/** The network identity (NID in CDMA and MNC in GSM).
williamr@2
  5909
	
williamr@2
  5910
	Modes: Common
williamr@2
  5911
	
williamr@2
  5912
	@see TMobilePhoneNetworkIdentity */
williamr@2
  5913
		TMobilePhoneNetworkIdentity iNetworkId;
williamr@2
  5914
	/** The alpha-tag displayed when this is the serving network.
williamr@2
  5915
	
williamr@2
  5916
	Modes: Common
williamr@2
  5917
	
williamr@2
  5918
	@see TMobilePhoneNetworkDisplayTag */
williamr@2
  5919
		TMobilePhoneNetworkDisplayTag iDisplayTag;
williamr@2
  5920
	/** The short name (up to 10 characters) of the network operator.
williamr@2
  5921
	
williamr@2
  5922
	Modes: GSM/WCDMA
williamr@2
  5923
	
williamr@2
  5924
	@see TMobilePhoneNetworkShortName */
williamr@2
  5925
		TMobilePhoneNetworkShortName iShortName;
williamr@2
  5926
	/** The long name (up to 20 characters) of the network operator.
williamr@2
  5927
	
williamr@2
  5928
	Modes: GSM/WCDMA
williamr@2
  5929
	
williamr@2
  5930
	@see TMobilePhoneNetworkLongName */
williamr@2
  5931
		TMobilePhoneNetworkLongName iLongName;
williamr@2
  5932
	/** The type of network access.
williamr@2
  5933
	
williamr@2
  5934
	@see TMobilePhoneNetworkAccess */
williamr@2
  5935
		TMobilePhoneNetworkAccess iAccess;
williamr@2
  5936
		};
williamr@2
  5937
williamr@2
  5938
/** A typedef'd packaged TEtel3rdPartyMobileNetworkInfoV1 for passing through a generic
williamr@2
  5939
API function member.
williamr@2
  5940
williamr@2
  5941
@deprecated 9.0
williamr@2
  5942
*/
williamr@2
  5943
	typedef TPckg<TEtel3rdPartyMobileNetworkInfoV1>  TEtel3rdPartyMobileNetworkInfoV1Pckg;
williamr@2
  5944
williamr@2
  5945
	/** IMS Authenticate constants,in accordance to 3GPP TS 33.102,
williamr@2
  5946
	section 6.3.7, and RFC 3310*/
williamr@2
  5947
	enum TMobilePhoneAuthenticate
williamr@2
  5948
		{
williamr@2
  5949
		/** length of autn is 128bits - 16octets*/
williamr@2
  5950
		KAutnLength=16,
williamr@2
  5951
		/** length of RAND is 16 octets */
williamr@2
  5952
		KRandLength=16,
williamr@2
  5953
		/** length of RES is 16 octets*/
williamr@2
  5954
		KResLength=16,
williamr@2
  5955
		/** length of IK is 16 octets*/
williamr@2
  5956
		KIkLength=16,
williamr@2
  5957
		/** length of CK is 16 octets*/
williamr@2
  5958
		KCkLength=16,
williamr@2
  5959
		/** length of Kc (GSM cipher key) is 8 octets*/
williamr@2
  5960
		KKcLength=8,
williamr@2
  5961
		/** length of is 112 bits - 14 octets */
williamr@2
  5962
		KAutsLength=14,
williamr@2
  5963
		};
williamr@2
  5964
williamr@2
  5965
	/** Maximum size of the record in an EF is 0xff( 255 bytes) according to TS 102.221, section 8.2.2.2
williamr@2
  5966
	*/
williamr@2
  5967
	enum TMobilePhoneRelease5EFMaxSize
williamr@2
  5968
	{
williamr@2
  5969
	 KRelease5EFMaxSize=255,
williamr@2
  5970
	};
williamr@2
  5971
	
williamr@2
  5972
	/** typedefs for encapsulation of the buffers that hold authorization data stored on the ISIM/USIM*/
williamr@2
  5973
	/** typedef for Internet Multimedia Public Identity*/	
williamr@2
  5974
	typedef TBuf8<KRelease5EFMaxSize> TIMPU;
williamr@2
  5975
	/** typedef for Internet Multimedia Private Identity*/
williamr@2
  5976
	typedef TBuf8<KRelease5EFMaxSize> TIMPI;
williamr@2
  5977
	/** typedef for Home Network Domain Name*/
williamr@2
  5978
	typedef TBuf8<KRelease5EFMaxSize> THNDN;
williamr@2
  5979
williamr@2
  5980
williamr@2
  5981
	/** IMS Authenticate API*/
williamr@2
  5982
	/** Class encapsulates data needed as an input/output for
williamr@2
  5983
	ISIM/USIM AUTHENTICATE command
williamr@2
  5984
	
williamr@2
  5985
	@publishedPartner
williamr@2
  5986
	@released
williamr@2
  5987
	*/
williamr@2
  5988
	class TImsAuthenticateDataV5: public TMultimodeType
williamr@2
  5989
		{
williamr@2
  5990
	public:
williamr@2
  5991
		IMPORT_C TImsAuthenticateDataV5();
williamr@2
  5992
		/** holds value of network challenge AUTN */
williamr@2
  5993
		TBuf8<KAutnLength> iAUTN;
williamr@2
  5994
		/** holds value of network challenge RAND */
williamr@2
  5995
		TBuf8<KRandLength> iRAND;
williamr@2
  5996
		/** holds result RES of AUTHENTICATE command when it's successfull*/
williamr@2
  5997
		TBuf8<KResLength> iRES;
williamr@2
  5998
		/** holds value of session key Integrity Key */
williamr@2
  5999
		TBuf8<KIkLength> iIK;
williamr@2
  6000
		/** holds value of session key Cipher Key */
williamr@2
  6001
		TBuf8<KCkLength> iCK;
williamr@2
  6002
		/** holds value of Authentication Token when  AUTHENTICATE fails*/
williamr@2
  6003
		TBuf8<KAutsLength> iAUTS;
williamr@2
  6004
		};
williamr@2
  6005
williamr@2
  6006
	/** packaged version of TImsAuthenticateDataV5, used when this structure has to be passeed via IPC*/
williamr@2
  6007
	typedef TPckg<TImsAuthenticateDataV5> TImsAuthenticateDataV5Pckg;
williamr@2
  6008
	friend class CAsyncRetrieveAuthorizationInfo;
williamr@2
  6009
williamr@2
  6010
	/** API that execute ISIM/USIM AUTHENTICATE command*/
williamr@2
  6011
	IMPORT_C void ImsAuthenticate (TRequestStatus& aReqStatus,TDes8& aAuthenticateDataPckgd) const;
williamr@2
  6012
williamr@2
  6013
	IMPORT_C void NotifyImsAuthorizationInfoChange(TRequestStatus& aReqStatus) const;
williamr@2
  6014
williamr@2
  6015
	/**
williamr@2
  6016
	Source location of IMS Authorization data.
williamr@2
  6017
	*/
williamr@2
  6018
	enum TAuthorizationDataSource
williamr@2
  6019
		{
williamr@2
  6020
		/** Authorization data source is USIM. */
williamr@2
  6021
		EFromUSIM,
williamr@2
  6022
		/** Authorization data source is ISIM. */
williamr@2
  6023
		EFromISIM
williamr@2
  6024
		};
williamr@2
  6025
williamr@2
  6026
	/** 
williamr@2
  6027
	Class encapsulates IMS authorization data stored in the ISIM or USIM
williamr@2
  6028
williamr@2
  6029
	@publishedPartner
williamr@2
  6030
	@released
williamr@2
  6031
	*/
williamr@2
  6032
	class CImsAuthorizationInfoV5 : public CBase	
williamr@2
  6033
		{
williamr@2
  6034
	public:
williamr@2
  6035
		IMPORT_C ~CImsAuthorizationInfoV5();
williamr@2
  6036
		IMPORT_C static CImsAuthorizationInfoV5* NewL();
williamr@2
  6037
		IMPORT_C virtual void ExternalizeL(HBufC8*& aBuffer);
williamr@2
  6038
		IMPORT_C virtual void InternalizeL(const TDesC8& aBuffer);
williamr@2
  6039
		IMPORT_C TUint ExtensionId() const;
williamr@2
  6040
	public:
williamr@2
  6041
		/**Internet Multimedia Private Identity stored on the ISIM/USIM*/
williamr@2
  6042
		RMobilePhone::TIMPI iIMPI;
williamr@2
  6043
		/**Internet Multimedia Public Identity(ies) stored on the ISIM/USIM*/
williamr@2
  6044
		RArray<RMobilePhone::TIMPU> iIMPUArray;
williamr@2
  6045
		/**Home Network Domain Name stored on the ISIM/USIM*/
williamr@2
  6046
		RMobilePhone::THNDN iHomeNetworkDomainName;
williamr@2
  6047
		/**indicates whether authorization data has been retrieved from the ISIM*/
williamr@2
  6048
		TAuthorizationDataSource iAuthenticationDataSource;
williamr@2
  6049
	protected:
williamr@2
  6050
		CImsAuthorizationInfoV5();
williamr@2
  6051
		/** version of the data supported*/
williamr@2
  6052
		TUint iExtensionId;
williamr@2
  6053
		};
williamr@2
  6054
		
williamr@2
  6055
	/******************************************************************************************************/
williamr@2
  6056
	//
williamr@2
  6057
	//           UICC Authentication 
williamr@2
  6058
	//
williamr@2
  6059
	/******************************************************************************************************/		
williamr@2
  6060
	
williamr@2
  6061
	/**	
williamr@2
  6062
	Defines the input as well as the ouput parameters used when performing the
williamr@2
  6063
	(U)ICC AUTHENTICATE command.
williamr@2
  6064
williamr@2
  6065
	@publishedPartner
williamr@2
  6066
	@released
williamr@2
  6067
    */
williamr@2
  6068
	class TSmartCardAuthenticateDataV6 : public TImsAuthenticateDataV5
williamr@2
  6069
		{
williamr@2
  6070
	public:
williamr@2
  6071
		IMPORT_C TSmartCardAuthenticateDataV6();
williamr@2
  6072
williamr@2
  6073
	public:
williamr@2
  6074
		TBuf8<KKcLength> iKc;
williamr@2
  6075
		};
williamr@2
  6076
williamr@2
  6077
	/**
williamr@2
  6078
	Packaged version of TSmartCardAuthenticateDataV6, used when this
williamr@2
  6079
	structure has to be passeed via IPC.
williamr@2
  6080
	*/
williamr@2
  6081
	typedef TPckg<TSmartCardAuthenticateDataV6> TSmartCardAuthenticateDataV6Pckg;
williamr@2
  6082
williamr@2
  6083
	IMPORT_C void SmartCardAuthenticate(TRequestStatus& aReqStatus, TDes8& aAuthDataPckgd) const;
williamr@2
  6084
	IMPORT_C void SmartCardAuthenticate(TRequestStatus& aReqStatus, const TAID& aAID, TDes8& aAuthDataPckgd) const;
williamr@2
  6085
	
williamr@2
  6086
	/******************************************************************************************************/
williamr@2
  6087
	//
williamr@2
  6088
	//     Generic Bootstrapping Architecture (GBA_U) Authentication 
williamr@2
  6089
	//
williamr@2
  6090
	/******************************************************************************************************/
williamr@2
  6091
	// used to set iExtensionId 
williamr@2
  6092
	/** The mobile phone GBA and MBMS authentication extension IDs.
williamr@2
  6093
williamr@2
  6094
	Modes: Common */
williamr@2
  6095
	enum TMobilePhoneAuthDataExtId
williamr@2
  6096
  		{
williamr@2
  6097
		/** The iExtensionId contents indicate that the packaged class is a TGbaBootstrapAuthDataV8. */
williamr@2
  6098
		KETelMobileGbaBootstrapAuthDataV8 = KEtelExtMultimodeV8,
williamr@2
  6099
		/** The iExtensionId contents indicate that the packaged class is a TGbaNafAuthDataV8. */
williamr@2
  6100
		KETelMobileGbaNafAuthDataV8,
williamr@2
  6101
		/** The iExtensionId contents indicate that the packaged class is a TMbmsMskUpdateDataV8. */
williamr@2
  6102
		KETelMobileMbmsMskUpdateDataV8,
williamr@2
  6103
		/** The iExtensionId contents indicate that the packaged class is a TMbmsMtkGenerateDataV8. */
williamr@2
  6104
		KETelMobileMbmsMtkGenerateDataV8,
williamr@2
  6105
		/** The iExtensionId contents indicate that the packaged class is a TMbmsMskDeleteDataV8. */
williamr@2
  6106
		KETelMobileMbmsMskDeleteDataV8,
williamr@2
  6107
		/** The iExtensionId contents indicate that the packaged class is a TMbmsMukDeleteDataV8. */
williamr@2
  6108
		KETelMobileMbmsMukDeleteDataV8,
williamr@2
  6109
		/** The iExtensionId contents indicate that the packaged class is a TMbmsUserKeyV8. */
williamr@2
  6110
		KETelMobileMbmsUserKeyV8,
williamr@2
  6111
		/** The iExtensionId contents indicate that the packaged class is a TGbaBootstrapParamsV8. */
williamr@2
  6112
		KETelMobileGbaBootstrapParamsV8
williamr@2
  6113
  		};
williamr@2
  6114
		
williamr@2
  6115
	class TGbaBootstrapAuthDataV8 : public TImsAuthenticateDataV5
williamr@2
  6116
	/**
williamr@2
  6117
	The class is identical to its base class except for its GBA Bootstrapping specific V8 extension id.
williamr@2
  6118
	Contains parameters to hold the input as well as the output parameters for the GBA authentication 
williamr@2
  6119
	in the Bootstrapping mode. The parameters are used as follows: 
williamr@2
  6120
williamr@2
  6121
	Input: RAND,AUTN
williamr@2
  6122
	Output: 
williamr@2
  6123
	RES (if the authentication procedure is successful) 
williamr@2
  6124
	or
williamr@2
  6125
	AUTS (contains the failure response in case of unsuccessful authentication procedure)
williamr@2
  6126
	See section 7.1.1.4 and 7.1.2.3 of 3GPP TS 31.102 v6.18.0
williamr@2
  6127
	 
williamr@2
  6128
	@see TImsAuthenticateDataV5
williamr@2
  6129
	 
williamr@2
  6130
    @see RMobilePhone::SmartCardAuthenticate request
williamr@2
  6131
	 
williamr@2
  6132
    @publishedPartner
williamr@2
  6133
	@released
williamr@2
  6134
	*/
williamr@2
  6135
		{
williamr@2
  6136
	public:
williamr@2
  6137
		IMPORT_C TGbaBootstrapAuthDataV8();
williamr@2
  6138
		};
williamr@2
  6139
	
williamr@2
  6140
	/**
williamr@2
  6141
	Packaged version of TGbaBootstrapAuthDataV8, used when this structure has to be passed via IPC.
williamr@2
  6142
	
williamr@2
  6143
	@publishedPartner
williamr@2
  6144
	@released
williamr@2
  6145
	*/	
williamr@2
  6146
	typedef TPckg<TGbaBootstrapAuthDataV8> TGbaBootstrapAuthDataV8Pckg;
williamr@2
  6147
	
williamr@2
  6148
	
williamr@2
  6149
	enum 
williamr@2
  6150
		{ 
williamr@2
  6151
		/** The Maximum permitted size of Bootstrapping Transaction Identifier(B-TID) of 
williamr@2
  6152
		the GBA_U bootstapped key 
williamr@2
  6153
		see section 4.2.79 of 3GPP TS 31.102 v6.18.0
williamr@2
  6154
		*/
williamr@2
  6155
		KBtidLength = 255,
williamr@2
  6156
		/** The Maximum permitted size of lifetime of the GBA_U bootstrapped keys 
williamr@2
  6157
		see section 4.2.79 of 3GPP TS 31.102 v6.18.0
williamr@2
  6158
		*/
williamr@2
  6159
		KKeyLifetimeLength = 255
williamr@2
  6160
		};
williamr@2
  6161
	
williamr@2
  6162
	class TBsfDataV8 : public TMultimodeType
williamr@2
  6163
	/**
williamr@2
  6164
	 Contains parameters to store B-TID and the Key lifetime that are supplied by the the BSF(EF_GBABP).
williamr@2
  6165
	 See section 4.2.79 of 3GPP TS 31.102 v6.18.0	
williamr@2
  6166
	 
williamr@2
  6167
	 @see RMobilePhone::SetGbaBootstrapParams request
williamr@2
  6168
	 
williamr@2
  6169
	 @publishedPartner
williamr@2
  6170
	 @released
williamr@2
  6171
	*/
williamr@2
  6172
		{
williamr@2
  6173
	 public:
williamr@2
  6174
	    IMPORT_C TBsfDataV8();	
williamr@2
  6175
	 public: 
williamr@2
  6176
	 	/** The Bootstrapping Transaction Identifier (B-TID) of the GBA_U bootstrapped key. */  	
williamr@2
  6177
	 	TBuf8<KBtidLength>			iBtid;
williamr@2
  6178
	 	/** The lifetime of the GBA_U bootstrapped keys. */  		
williamr@2
  6179
	 	TBuf8<KKeyLifetimeLength>	iKeyLifetime;
williamr@2
  6180
		};
williamr@2
  6181
		
williamr@2
  6182
	/**
williamr@2
  6183
	Packaged version of TBsfDataV8, used when this structure has to be passeed via IPC.
williamr@2
  6184
	
williamr@2
  6185
	@publishedPartner
williamr@2
  6186
	@released
williamr@2
  6187
	*/
williamr@2
  6188
	typedef TPckg<TBsfDataV8> TBsfDataV8Pckg;
williamr@2
  6189
	
williamr@2
  6190
	IMPORT_C void SetGbaBootstrapParams(TRequestStatus& aReqStatus, const TAID& aAID, const TDesC8& aParams) const;
williamr@2
  6191
williamr@2
  6192
	enum 
williamr@2
  6193
		{ 
williamr@2
  6194
		/**  The Maximum permitted size of NAF_ID of the Network Application Function(NAF) 
williamr@2
  6195
		used in the GBA_U NAF derivation procedure 
williamr@2
  6196
		see section 7.1.2.4 of 3GPP TS 31.102 v6.18.0
williamr@2
  6197
		*/
williamr@2
  6198
		KNafIdLength = 255,
williamr@2
  6199
		/**  The Maximum permitted size of the private user identity of the GBA_U NAF
williamr@2
  6200
		see section 7.1.2.4 of 3GPP TS 31.102 v6.18.0
williamr@2
  6201
		*/
williamr@2
  6202
		KImpiLength = 255,
williamr@2
  6203
		/**  The The Maximum permitted size of the Ks_ext_Naf key returned by the UICC application 
williamr@2
  6204
		see section 7.1.2.4 of 3GPP TS 31.102 v6.18.0
williamr@2
  6205
		*/
williamr@2
  6206
		KKsExtNafLength = 255
williamr@2
  6207
		};
williamr@2
  6208
	 	
williamr@2
  6209
	class TGbaNafAuthDataV8 : public TMultimodeType
williamr@2
  6210
	/**
williamr@2
  6211
	 Contains parameters to hold the input as well as the output parameters for the GBA authentication 
williamr@2
  6212
	 in the NAF(Network Apllication Function) Derivation mode.
williamr@2
  6213
	 See section 7.1.1.5 and 7.1.2.4 of 3GPP TS 31.102 v6.18.0
williamr@2
  6214
	 
williamr@2
  6215
	 @see RMobilePhone::SmartCardAuthenticate request
williamr@2
  6216
	 
williamr@2
  6217
	 @publishedPartner
williamr@2
  6218
  	 @released
williamr@2
  6219
	*/
williamr@2
  6220
		{
williamr@2
  6221
	 public:
williamr@2
  6222
	 	IMPORT_C TGbaNafAuthDataV8();
williamr@2
  6223
	 public:
williamr@2
  6224
	 	/** Input Parameter: The NAF_ID of the Network Application Function (NAF) used in the 
williamr@2
  6225
	 	GBA_U NAF Derivation procedure. */  	
williamr@2
  6226
	 	TBuf8<KNafIdLength>	iNafId;	
williamr@2
  6227
	  	/** Input Parameter: The Private user identity. */  			
williamr@2
  6228
	 	TBuf8<KImpiLength>	iImpi;
williamr@2
  6229
		/** Output Parameter: The Ks_ext_NAF key returned by the UICC app.  */  		 	
williamr@2
  6230
	 	TBuf8<KKsExtNafLength> iKsExtNaf;
williamr@2
  6231
		};
williamr@2
  6232
		
williamr@2
  6233
	/**
williamr@2
  6234
	Packaged version of TGbaNafAuthDataV8, used when this structure has to be passeed via IPC.
williamr@2
  6235
	
williamr@2
  6236
	@publishedPartner
williamr@2
  6237
	@released
williamr@2
  6238
	*/
williamr@2
  6239
	typedef TPckg <TGbaNafAuthDataV8> TGbaNafAuthDataV8Pckg;
williamr@2
  6240
	
williamr@2
  6241
	class TGbaBootstrapParamsV8 : public TMultimodeType
williamr@2
  6242
	/**
williamr@2
  6243
	 Contains parameters for the GBA Bootstrapping Parametres (EF_GBABP).
williamr@2
  6244
	 See section 4.2.79 of 3GPP TS 31.102 v6.18.0	
williamr@2
  6245
	 
williamr@2
  6246
	 @see RMobilePhone::GetAuthenticationParams request
williamr@2
  6247
	 
williamr@2
  6248
	 @publishedPartner
williamr@2
  6249
	 @released
williamr@2
  6250
	*/
williamr@2
  6251
		{
williamr@2
  6252
	public:
williamr@2
  6253
		IMPORT_C TGbaBootstrapParamsV8();
williamr@2
  6254
	public:
williamr@2
  6255
		/** The RAND (AKA Random challenge) value used in the GBA_U bootstrapping procedure. */  		
williamr@2
  6256
		TBuf8<KRandLength>		iRand;
williamr@2
  6257
		/** The Bootstrapping Transaction Identifier (B-TID) associated with the GBA_U bootstrapped 
williamr@2
  6258
		keys. The client requesting the GBA Bootstrapping procedure receives this value from the network 
williamr@2
  6259
		(i.e. BSF) and it then stores it on the UICC. */  		
williamr@2
  6260
		TBuf8<KBtidLength>		iBtid;
williamr@2
  6261
		/** The lifetime of the GBA_U bootstrapped keys. The client requesting the GBA Bootstrapping
williamr@2
  6262
		 procedure receives this value from the network (i.e. BSF) and it then stores it on the UICC. */  		
williamr@2
  6263
		TBuf8<KKeyLifetimeLength>	iKeyLifetime;
williamr@2
  6264
		};
williamr@2
  6265
	
williamr@2
  6266
	/**
williamr@2
  6267
	Packaged version of TGbaBootstrapParamsV8, used when this structure has to be passeed via IPC.
williamr@2
  6268
	
williamr@2
  6269
	@publishedPartner
williamr@2
  6270
	@released
williamr@2
  6271
	*/
williamr@2
  6272
	typedef TPckg<TGbaBootstrapParamsV8> TGbaBootstrapParamsV8Pckg;
williamr@2
  6273
	
williamr@2
  6274
	enum TAuthData
williamr@2
  6275
	/**
williamr@2
  6276
	The type of the authentication related data that has been modified as a result of the 
williamr@2
  6277
	UICC authentication command.
williamr@2
  6278
	
williamr@2
  6279
	@see RMobilePhone::GetAuthenticationParams
williamr@2
  6280
	
williamr@2
  6281
	@publishedPartner
williamr@2
  6282
	@released
williamr@2
  6283
	*/	
williamr@2
  6284
		{
williamr@2
  6285
		/** The GBA Bootstrapping parameters. 
williamr@2
  6286
		The GBA Bootstrapping parameters are stored under EF_GBABP of the UICC app. */
williamr@2
  6287
		EGbaBootstrapParams,
williamr@2
  6288
		/** The list of the GBA Network Application Function (NAF) IDs and the Bootstrapping
williamr@2
  6289
		Transaction Identifiers (B-TIDs), associated with the previous GBA NAF derivation procedure.
williamr@2
  6290
		The list is stored under EF_GBANL of the UICC app.  */
williamr@2
  6291
		EGbaNafIdList,
williamr@2
  6292
		/** The list of MBMS Service Keys (MSKs) and corresponding time stamp counters, which are 
williamr@2
  6293
		related to an MBMS Key Domain. 
williamr@2
  6294
		This list is stored in the EF_MSK file of the UICC app. */
williamr@2
  6295
		EMbmsMskIdList,
williamr@2
  6296
		/** The identifier of the MBMS User Key (MUK) that is used to protect the transfer of MBMS 
williamr@2
  6297
		Service Keys (MSK). 
williamr@2
  6298
		The MUK ID is stored in the EF_MUK file of the UICC app.*/
williamr@2
  6299
		EMbmsMuk
williamr@2
  6300
		};
williamr@2
  6301
		
williamr@2
  6302
	class TAuthInfoV8 : public TMultimodeType
williamr@2
  6303
	/**
williamr@2
  6304
	 Contains parameters for Authentication related information
williamr@2
  6305
	 */	
williamr@2
  6306
		{
williamr@2
  6307
	public:
williamr@2
  6308
		IMPORT_C TAuthInfoV8();
williamr@2
  6309
	public:
williamr@2
  6310
		/** Application identifier (AID) of the UICC application performing the authentication. */
williamr@2
  6311
		TAID  	iAID;
williamr@2
  6312
		/** The type of the authentication related data that has been modified as a result of the 
williamr@2
  6313
		UICC authentication command*/
williamr@2
  6314
		TAuthData	iData;
williamr@2
  6315
		};
williamr@2
  6316
	
williamr@2
  6317
	/**
williamr@2
  6318
	Packaged version of TAuthInfoV8 
williamr@2
  6319
	*/	
williamr@2
  6320
	typedef TPckg<TAuthInfoV8>  TAuthInfoV8Pckg;
williamr@2
  6321
	
williamr@2
  6322
	IMPORT_C void NotifyAuthenticateDataChange(TRequestStatus& aReqstatus, TDes8& aAuthInfo) const;
williamr@2
  6323
	IMPORT_C void GetAuthenticationParams(TRequestStatus& aReqstatus, const TDesC8& aAuthInfo, TDes8& aParams) const;
williamr@2
  6324
	
williamr@2
  6325
	
williamr@2
  6326
	class TGbaNafEntryV8 : public TMultimodeType
williamr@2
  6327
	/**
williamr@2
  6328
	Contains parameters for the GBA NAF entry(EF_GBANL)
williamr@2
  6329
	See section 4.2.83 of 3GPP TS 31.102 v6.18.0
williamr@2
  6330
		
williamr@2
  6331
	@publishedPartner
williamr@2
  6332
	@released
williamr@2
  6333
	*/	
williamr@2
  6334
		{
williamr@2
  6335
	public:
williamr@2
  6336
		void InternalizeL(RReadStream& aStream);
williamr@2
  6337
		void ExternalizeL(RWriteStream& aStream) const;
williamr@2
  6338
	public:
williamr@2
  6339
		IMPORT_C TGbaNafEntryV8();
williamr@2
  6340
	public:
williamr@2
  6341
		/** The identifier of the Network Application Function (NAF) used in the GBA_U NAF 
williamr@2
  6342
		Derivation procedure. */  	
williamr@2
  6343
		TBuf8<KNafIdLength>		iNafId;
williamr@2
  6344
		/** The Bootstrapping Transaction Identifier (B-TID) associated with the GBA_U 
williamr@2
  6345
		bootstrapped keys. The client requesting the GBA Bootstrapping procedure receives 
williamr@2
  6346
		this value from the network (i.e. BSF) and it then stores it on the UICC.  */  
williamr@2
  6347
		TBuf8<KBtidLength>		iBtid;
williamr@2
  6348
		};
williamr@2
  6349
	
williamr@2
  6350
	/**
williamr@2
  6351
	Packaged version of TGbaNafEntryV8, used when this structure has to be passeed via IPC.
williamr@2
  6352
	
williamr@2
  6353
	@publishedPartner
williamr@2
  6354
	@released
williamr@2
  6355
	*/	
williamr@2
  6356
	typedef TPckg<TGbaNafEntryV8> TGbaNafEntryV8Pckg;
williamr@2
  6357
	
williamr@2
  6358
	/************************************************************************************************/
williamr@2
  6359
    //
williamr@2
  6360
 	//    Multimedia Broadcast Multicast Service (MBMS) Authentication
williamr@2
  6361
 	//  
williamr@2
  6362
	/************************************************************************************************/
williamr@2
  6363
	
williamr@2
  6364
	/** The Maximum permitted size of multimedia internet Keying message 
williamr@2
  6365
	see section 7.1.2.5 of 3GPP TS 31.102 v6.18.0
williamr@2
  6366
	*/
williamr@2
  6367
	enum { KMikeyLength = 255 };
williamr@2
  6368
	typedef TBuf8<KMikeyLength> TMikey;
williamr@2
  6369
	
williamr@2
  6370
	class TMbmsMskUpdateDataV8 : public TMultimodeType
williamr@2
  6371
	/**
williamr@2
  6372
	Contains parameters to hold the input as well as the output parameters for the MBMS 
williamr@2
  6373
	authentication in the MSK Update mode.  
williamr@2
  6374
	See section 7.1.1.6 and 7.1.2.5 of 3GPP TS 31.102 v6.18.0
williamr@2
  6375
	
williamr@2
  6376
	@see RMobilePhone::SmartCardAuthenticate request
williamr@2
  6377
	
williamr@2
  6378
	@publishedPartner
williamr@2
  6379
	@released
williamr@2
  6380
	*/
williamr@2
  6381
		{
williamr@2
  6382
	public:
williamr@2
  6383
		IMPORT_C TMbmsMskUpdateDataV8();
williamr@2
  6384
	public:
williamr@2
  6385
	    /** Input Parameter:MIKEY (Multimedia Internet Keying) message containing the MSK update 
williamr@2
  6386
	    message from the network.  */
williamr@2
  6387
		TMikey  iInputMikey;
williamr@2
  6388
		/** Output Parameter: The output MIKEY (Multimedia Internet Keying) message containing 
williamr@2
  6389
		the MSK Verification message from the UICC as the command response.
williamr@2
  6390
		This is an optional parameter and it is only returned if the V-bit in the HDR field of 
williamr@2
  6391
		the received MIKEY message is set. */
williamr@2
  6392
		TMikey  iOutputMikey;
williamr@2
  6393
		};
williamr@2
  6394
		
williamr@2
  6395
	/**
williamr@2
  6396
	Packaged version of TMbmsMskUpdateDataV8, used when this structure has to be passeed via IPC.
williamr@2
  6397
	
williamr@2
  6398
	@publishedPartner
williamr@2
  6399
	@released
williamr@2
  6400
	*/		
williamr@2
  6401
	typedef TPckg<TMbmsMskUpdateDataV8> TMbmsMskUpdateDataV8Pckg;
williamr@2
  6402
	
williamr@2
  6403
	/**
williamr@2
  6404
	The Maximum permitted size of MTK length.
williamr@2
  6405
	see section 7.1.2.5 of 3GPP TS 31.102 v6.18.0.
williamr@2
  6406
	*/
williamr@2
  6407
	enum {KMtkLength = 255};
williamr@2
  6408
	
williamr@2
  6409
	/**
williamr@2
  6410
	The Salt key length.
williamr@2
  6411
	see section 6.4.5.3 of 3GPP TS 33.246 v6.11.0.
williamr@2
  6412
	*/
williamr@2
  6413
	enum {KSaltLength = 14};
williamr@2
  6414
	
williamr@2
  6415
	class TMbmsMtkGenerateDataV8 : public TMultimodeType
williamr@2
  6416
	/**
williamr@2
  6417
	Contains parameters to hold the input as well as the output parameters for the MBMS 
williamr@2
  6418
	authentication in MTK Generation mode.  
williamr@2
  6419
	See section 7.1.1.7 and 7.1.2.5 of 3GPP TS 31.102 v6.18.0  
williamr@2
  6420
	
williamr@2
  6421
	@see RMobilePhone::SmartCardAuthenticate request
williamr@2
  6422
	
williamr@2
  6423
	@publishedPartner
williamr@2
  6424
	@released 
williamr@2
  6425
	*/
williamr@2
  6426
		{
williamr@2
  6427
	public:
williamr@2
  6428
		IMPORT_C TMbmsMtkGenerateDataV8();
williamr@2
  6429
	public:
williamr@2
  6430
		/** Input Parameter: The input MIKEY message containing an MTK and a Salt key (if Salt key is available). */
williamr@2
  6431
		TMikey	iMikey;
williamr@2
  6432
		/** Output Parameter: The MBMS Traffic Key.  */
williamr@2
  6433
		TBuf8<KMtkLength>	iMtk;
williamr@2
  6434
		/** Output Parameter: A random or pseudo-random string used to protect against some off-line 
williamr@2
  6435
		pre computation attacks on the underlying security protocol.
williamr@2
  6436
		This is an optional parameter. */
williamr@2
  6437
		TBuf8<KSaltLength>	iSaltKey;
williamr@2
  6438
		};
williamr@2
  6439
	
williamr@2
  6440
	/**
williamr@2
  6441
	Packaged version of TMbmsMtkGenerateDataV8, used when this structure has to be passeed via IPC.
williamr@2
  6442
	
williamr@2
  6443
	@publishedPartner
williamr@2
  6444
	@released 
williamr@2
  6445
	*/		
williamr@2
  6446
	typedef TPckg<TMbmsMtkGenerateDataV8> TMbmsMtkGenerateDataV8Pckg;
williamr@2
  6447
	
williamr@2
  6448
	/**
williamr@2
  6449
	The Key domain id length.
williamr@2
  6450
	see section 6.3.2.1. 3GPP TS 33.246 v6.11.0
williamr@2
  6451
	*/
williamr@2
  6452
	enum {KKeyDomainIdLength = 3};
williamr@2
  6453
	
williamr@2
  6454
	/**
williamr@2
  6455
	The Key group length.
williamr@2
  6456
	see section 6.3.2.1. 3GPP TS 33.246 v6.11.0
williamr@2
  6457
	*/
williamr@2
  6458
	enum {KKeyGroupLength = 2};
williamr@2
  6459
	
williamr@2
  6460
	class TMbmsMskDeleteDataV8 : public TMultimodeType
williamr@2
  6461
	/**
williamr@2
  6462
	Contains parameters to hold the input as well as the output parameters for the MBMS authentication
williamr@2
  6463
	in the MSK Deletion mode.  
williamr@2
  6464
	See section 7.1.1.8 and 7.1.2.5 of 3GPP TS 31.102 v6.18.0 
williamr@2
  6465
	
williamr@2
  6466
	@see RMobilePhone::SmartCardAuthenticate request
williamr@2
  6467
	
williamr@2
  6468
	@publishedPartner
williamr@2
  6469
	@released 
williamr@2
  6470
	*/	
williamr@2
  6471
		{
williamr@2
  6472
	public:
williamr@2
  6473
		IMPORT_C TMbmsMskDeleteDataV8();
williamr@2
  6474
	public:
williamr@2
  6475
		/** Input parameter : Every MSK is uniquely identifiable by its Key Domain ID and MSK ID. 
williamr@2
  6476
		Key Domain ID = MCC || MNC and is 3 bytes long. */
williamr@2
  6477
		TBuf8<KKeyDomainIdLength>	iKeyDomainId;
williamr@2
  6478
		/** Input Parameter: The Key Group part is used to group keys together in order to allow
williamr@2
  6479
		redundant MSKs to be deleted. 
williamr@2
  6480
		The Key group part is contained within bytes 0 and 1 of the MSK ID. */
williamr@2
  6481
		TBuf8<KKeyGroupLength>	iMskIdKeyGroup;
williamr@2
  6482
		};
williamr@2
  6483
	
williamr@2
  6484
	/**
williamr@2
  6485
	Packaged version of TMbmsMskDeleteDataV8, used when this structure has to be passeed via IPC.
williamr@2
  6486
	
williamr@2
  6487
	@publishedPartner
williamr@2
  6488
	@released 
williamr@2
  6489
	*/		
williamr@2
  6490
	typedef TPckg<TMbmsMskDeleteDataV8> TMbmsMskDeleteDataV8Pckg;
williamr@2
  6491
	
williamr@2
  6492
	/**
williamr@2
  6493
	The Maximum permitted size of MUK ID TLV length.
williamr@2
  6494
	see section 6.4.5 of 3GPP TS 33.246 v6.11.0
williamr@2
  6495
	*/
williamr@2
  6496
	enum {KMukIdTlvLength = 255};
williamr@2
  6497
	
williamr@2
  6498
	class TMbmsMukDeleteDataV8 : public TMultimodeType
williamr@2
  6499
	/**
williamr@2
  6500
	Contains parameters to hold the input as well as the output parameters for the MBMS 
williamr@2
  6501
	authentication in the MUK Deletion mode.  
williamr@2
  6502
	See section 7.1.1.9 and 7.1.2.5 of 3GPP TS 31.102 v6.18.0  
williamr@2
  6503
	
williamr@2
  6504
	@see RMobilePhone::SmartCardAuthenticate request
williamr@2
  6505
	
williamr@2
  6506
	@publishedPartner
williamr@2
  6507
	@released 
williamr@2
  6508
	*/	
williamr@2
  6509
		{
williamr@2
  6510
	public:
williamr@2
  6511
		IMPORT_C TMbmsMukDeleteDataV8();
williamr@2
  6512
	public:
williamr@2
  6513
		/** Input parameter : The MUK ID TLV containing the MUK IDr and MUK IDi. 
williamr@2
  6514
		This field will contain the MUK ID as a TLV object containing the MUK IDr and MUK IDi.*/
williamr@2
  6515
		TBuf8<KMukIdTlvLength> iMukIdTlv;
williamr@2
  6516
		};
williamr@2
  6517
williamr@2
  6518
	/**
williamr@2
  6519
	Packaged version of TMbmsMukDeleteDataV8, used when this structure has to be passeed via IPC.
williamr@2
  6520
	
williamr@2
  6521
	@publishedPartner
williamr@2
  6522
	@released 
williamr@2
  6523
	*/		
williamr@2
  6524
	typedef TPckg<TMbmsMukDeleteDataV8> TMbmsMukDeleteDataV8Pckg;
williamr@2
  6525
		
williamr@2
  6526
	/**
williamr@2
  6527
	The Maximum permitted size of MUK IDi length.
williamr@2
  6528
	see section 6.4.5 of 3GPP TS 33.246 v6.11.0
williamr@2
  6529
	*/
williamr@2
  6530
	enum { KMukIdiLength = 255 };
williamr@2
  6531
	
williamr@2
  6532
	/**
williamr@2
  6533
	The Maximum permitted size of MUK IDr length.
williamr@2
  6534
	see section 6.4.5 of 3GPP TS 33.246 v6.11.0
williamr@2
  6535
	*/
williamr@2
  6536
	enum { KMukIdrLength = 255 };
williamr@2
  6537
	
williamr@2
  6538
	/**
williamr@2
  6539
	The time stamp counter length.
williamr@2
  6540
	see section 6.4.3 of 3GPP TS 33.246 v6.11.0.
williamr@2
  6541
	*/
williamr@2
  6542
	enum { KTimeStampCounterLength = 4 };
williamr@2
  6543
	
williamr@2
  6544
	class TMbmsUserKeyV8 : public TMultimodeType
williamr@2
  6545
	/**
williamr@2
  6546
	Contains parameters for MBMS User Key(MUK)(EF_MUK).
williamr@2
  6547
	See section 4.2.81 of 3GPP TS 31.102 v6.18.0.  
williamr@2
  6548
	
williamr@2
  6549
	@see RMobilePhone::GetAuthenticationParams
williamr@2
  6550
	
williamr@2
  6551
	@publishedPartner
williamr@2
  6552
	@released  
williamr@2
  6553
	*/	
williamr@2
  6554
		{
williamr@2
  6555
	public:
williamr@2
  6556
		IMPORT_C TMbmsUserKeyV8();
williamr@2
  6557
	public:
williamr@2
  6558
		/** The IDi part of MBMS User Key (MUK). */
williamr@2
  6559
		TBuf8<KMukIdiLength>	iMukIdi;
williamr@2
  6560
		/** The IDr part of MBMS User Key (MUK). */
williamr@2
  6561
		TBuf8<KMukIdrLength>	iMukIdr;
williamr@2
  6562
		/** The counter for MIKEY replay protection in MSK delivery. The counter is associated 
williamr@2
  6563
		with the particular MUK. */
williamr@2
  6564
		TBuf8<KTimeStampCounterLength>	iTimeStampCounter;	
williamr@2
  6565
		};
williamr@2
  6566
		
williamr@2
  6567
	/**
williamr@2
  6568
	Packaged version of TMbmsUserKeyV8, used when this structure has to be passeed via IPC.
williamr@2
  6569
	
williamr@2
  6570
	@publishedPartner
williamr@2
  6571
	@released
williamr@2
  6572
	*/		
williamr@2
  6573
	typedef TPckg<TMbmsUserKeyV8> TMbmsUserKeyV8Pckg;
williamr@2
  6574
	
williamr@2
  6575
	/**
williamr@2
  6576
	The MSK id length.
williamr@2
  6577
	see section 6.3.2.1. TS 33.246 v6.11.0
williamr@2
  6578
	*/
williamr@2
  6579
	enum { KMskIdLength =4 };
williamr@2
  6580
williamr@2
  6581
	class TMskEntryV8 : public TMultimodeType
williamr@2
  6582
	/**
williamr@2
  6583
	contains Parameters for MBMS MSK ID Entry (EF_MSK).
williamr@2
  6584
	See section 4.2.80 of 3GPP TS 31.102 v6.18.0. 
williamr@2
  6585
	 
williamr@2
  6586
    @publishedPartner
williamr@2
  6587
	@released  
williamr@2
  6588
	*/		
williamr@2
  6589
		{
williamr@2
  6590
	public:
williamr@2
  6591
		void InternalizeL(RReadStream& aStream);
williamr@2
  6592
		void ExternalizeL(RWriteStream& aStream) const;
williamr@2
  6593
	public:
williamr@2
  6594
		IMPORT_C TMskEntryV8();
williamr@2
  6595
	public:
williamr@2
  6596
		/** Identifier of the Domain of the BM-SC providing MBMS service */
williamr@2
  6597
		TBuf8<KKeyDomainIdLength>	iKeyDomainId;
williamr@2
  6598
		/** Identifier of MBMS Service Key(MSK) with in a paricular Key Domain */
williamr@2
  6599
		TBuf8<KMskIdLength>		iMskId;
williamr@2
  6600
		/** Counter for MIKEY replay protection in MTK delivery.Each counter is
williamr@2
  6601
		 associated with a particular MSK */
williamr@2
  6602
		TBuf8<KTimeStampCounterLength>	iTimeStampCounter;
williamr@2
  6603
		};
williamr@2
  6604
williamr@2
  6605
	/*************************************************************************************/
williamr@2
  6606
	//
williamr@2
  6607
	//    WLAN Parameters 
williamr@2
  6608
	//
williamr@2
  6609
	/*************************************************************************************/	
williamr@2
  6610
	
williamr@2
  6611
	/**
williamr@2
  6612
	This type indicates which of the following fields, within the WLAN data structure,
williamr@2
  6613
	contain valid data. 
williamr@2
  6614
	*/
williamr@2
  6615
	enum TUsimWlanDataFlags
williamr@2
  6616
		{
williamr@2
  6617
		/** The iPseudonym field is valid in the Wlan data class */
williamr@2
  6618
		KWlanPseudonym  =0x00000001,
williamr@2
  6619
		/** The iReauthenticationId field is valid in the Wlan data class */
williamr@2
  6620
		KWlanReauthenticationId  = 0x00000002,
williamr@2
  6621
		/** The iMasterKey field is valid in the Wlan data class */
williamr@2
  6622
		KWlanMasterKey   = 0x00000004,
williamr@2
  6623
		/** The iCounter field is valid in the Wlan data class */
williamr@2
  6624
		KWlanCounter     = 0x00000008
williamr@2
  6625
		};	
williamr@2
  6626
		
williamr@2
  6627
	/**
williamr@2
  6628
	Holds a Maximum permitted size of the temporary user Identity or 
williamr@2
  6629
	pseudonym stored in EF_Pseudo of the currently active USIM.
williamr@2
  6630
	see section 4.4.5.6 of 3GPP TS 31.102 v6.18.0
williamr@2
  6631
	*/
williamr@2
  6632
	enum {	KWlanUserIdentity = 255 };
williamr@2
  6633
	typedef TBuf8 <KWlanUserIdentity> TWlanUserIdentity;
williamr@2
  6634
williamr@2
  6635
	/**
williamr@2
  6636
	Holds a Maximum permitted size of re-authentication identity stored
williamr@2
  6637
	in EF_WRI of the currently active USIM.
williamr@2
  6638
	see section 4.4.5.6 of 3GPP TS 31.102 v6.18.0.
williamr@2
  6639
	*/
williamr@2
  6640
	enum { KWlanMasterKeyLength = 255 };
williamr@2
  6641
williamr@2
  6642
	/**
williamr@2
  6643
	Holds a Maximum permitted size of master key used in the process of re-authentication. 
williamr@2
  6644
	see section 4.4.5.6 of 3GPP TS 31.102 v6.18.0.
williamr@2
  6645
	*/
williamr@2
  6646
	enum { KCounterLength = 255 };
williamr@2
  6647
williamr@2
  6648
	/**
williamr@2
  6649
	Contains Parameters for Wlan Pseudonym(EF_Pseudo) and Reauthentication Id(EF_WRI).
williamr@2
  6650
	See section 4.4.5.1 and 4.4.5.6 of 3GPP TS 31.102 v6.18.0. 
williamr@2
  6651
	@see RMobilePhone::SetWlanData
williamr@2
  6652
	@see RMobilePhone::GetWlanData
williamr@2
  6653
	@see RMobilePhone::NotifyWlanDataChange
williamr@2
  6654
williamr@2
  6655
	@publishedPartner
williamr@2
  6656
	@released  
williamr@2
  6657
	*/
williamr@2
  6658
	class TUsimWlanDataV8 : public TMultimodeType
williamr@2
  6659
		{
williamr@2
  6660
	public:
williamr@2
  6661
		IMPORT_C TUsimWlanDataV8();
williamr@2
  6662
	public:
williamr@2
  6663
		/** A bit-wise sum of TUsimWlanDataCaps constants indicating which of the following 
williamr@2
  6664
		fields, within the WLAN data structure, contain valid data. */
williamr@2
  6665
		TUint32 	iFieldsUsed;  
williamr@2
  6666
		/** Holds a buffer containing the temporary user Identity or pseudonym stored in EF_Pseudo 
williamr@2
  6667
		of the currently active USIM. */
williamr@2
  6668
		TWlanUserIdentity iPseudonym;
williamr@2
  6669
		/** Holds a buffer containing the re-authentication identity stored in EF_WRI of the 
williamr@2
  6670
		currently active USIM. */
williamr@2
  6671
		TWlanUserIdentity	iReauthenticationId;
williamr@2
  6672
		/** Holds the master key used in the process of re-authentication. */
williamr@2
  6673
		TBuf8<KWlanMasterKeyLength>	iMasterKey;
williamr@2
  6674
		/** A counter value to be used in the fast re-authentication. This value is provided as a 
williamr@2
  6675
		part of a previous authentication sequence. */ 
williamr@2
  6676
		TBuf8<KCounterLength>	iCounter; 
williamr@2
  6677
		};
williamr@2
  6678
			
williamr@2
  6679
	/** Packaged version of TUsimWlanDataV8, used when this structure has to be passeed via IPC.
williamr@2
  6680
	
williamr@2
  6681
	@publishedPartner
williamr@2
  6682
	@released
williamr@2
  6683
	*/	
williamr@2
  6684
	typedef TPckg<TUsimWlanDataV8> TUsimWlanDataV8Pckg;
williamr@2
  6685
williamr@2
  6686
	IMPORT_C void SetWlanData(TRequestStatus& aReqStatus, const TDesC8& aData) const;
williamr@2
  6687
	IMPORT_C void GetWlanData(TRequestStatus& aReqStatus, TDes8& aData) const;
williamr@2
  6688
	IMPORT_C void NotifyWlanDataChange(TRequestStatus& aReqStatus, TDes8& aData) const;
williamr@2
  6689
williamr@2
  6690
	/**
williamr@2
  6691
	Holds a Maximum permitted size of Wlan Specific Identifier.
williamr@2
  6692
	see section 4.4.5.4 of 31.102 v6.18.0. 
williamr@2
  6693
	*/	
williamr@2
  6694
	enum { KWlanSIDLength = 255 };
williamr@2
  6695
williamr@2
  6696
	/**
williamr@2
  6697
	Contains Parameters for User controlled WLAN Specific IDentifier List (EF_UWSIDL) and Operator 
williamr@2
  6698
	controlled WLAN Specific IDentifier List(EF_OWSIDL).
williamr@2
  6699
	See section 4.4.5.4 and 4.4.5.5 of 3GPP TS 31.102 v6.18.0.
williamr@2
  6700
	 
williamr@2
  6701
	@see RMobilePhone::StorePreferredWlanSIDListL
williamr@2
  6702
	@see RMobilePhone::NotifyPreferredWlanSIDListChange
williamr@2
  6703
	
williamr@2
  6704
	@publishedPartner
williamr@2
  6705
	@released 
williamr@2
  6706
	*/
williamr@2
  6707
	class TWlanSIDV8 : public TMultimodeType	
williamr@2
  6708
		{
williamr@2
  6709
	public:
williamr@2
  6710
		IMPORT_C TWlanSIDV8();
williamr@2
  6711
	public:
williamr@2
  6712
		void InternalizeL(RReadStream& aStream);
williamr@2
  6713
		void ExternalizeL(RWriteStream& aStream) const;
williamr@2
  6714
	public:
williamr@2
  6715
		/** Holds a buffer containing WLAN Specific Identifier (SID)*/
williamr@2
  6716
		TBuf8<KWlanSIDLength>	iWSID;
williamr@2
  6717
		/** Editable preferences in the User-controlled WLAN Specific IDentifier List */
williamr@2
  6718
		TBool	iUserDefined;
williamr@2
  6719
		};
williamr@2
  6720
williamr@2
  6721
	/** Packaged version of TWlanSIDV8, used when this structure has to be passeed via IPC.
williamr@2
  6722
	
williamr@2
  6723
	@publishedPartner
williamr@2
  6724
	@released
williamr@2
  6725
	*/	
williamr@2
  6726
	typedef TPckg<TWlanSIDV8> TWlanSIDV8Pckg;
williamr@2
  6727
williamr@2
  6728
	IMPORT_C void StorePreferredWlanSIDListL(TRequestStatus& aReqStatus, CMobilePhoneStoredWlanSIDList* aList) const;
williamr@2
  6729
	IMPORT_C void NotifyPreferredWlanSIDListChange(TRequestStatus& aReqStatus) const;	
williamr@2
  6730
		
williamr@2
  6731
williamr@2
  6732
private:
williamr@2
  6733
	CMobilePhonePtrHolder* iMmPtrHolder;
williamr@2
  6734
	RMobilePhone(const RMobilePhone& aPhone);
williamr@2
  6735
williamr@2
  6736
protected:
williamr@2
  6737
	IMPORT_C void ConstructL();
williamr@2
  6738
	IMPORT_C void Destruct();
williamr@2
  6739
	};
williamr@2
  6740
williamr@2
  6741
/*********************************************************/
williamr@2
  6742
//
williamr@2
  6743
// Phone Storage functionality (RMobilePhoneStore)
williamr@2
  6744
//
williamr@2
  6745
/*********************************************************/
williamr@2
  6746
williamr@2
  6747
williamr@2
  6748
williamr@2
  6749
class CMobilePhoneStorePtrHolder;
williamr@2
  6750
class RMobilePhoneStore : public RTelSubSessionBase
williamr@2
  6751
/**
williamr@2
  6752
Abstract class used to define common phone storage actions and types
williamr@2
  6753
williamr@2
  6754
Clients open one of the specialised phone store classes that are derived from RMobilePhoneStore
williamr@2
  6755
*/
williamr@2
  6756
	{
williamr@2
  6757
public:
williamr@2
  6758
	friend class CAsyncRetrieveStoreList;
williamr@2
  6759
williamr@2
  6760
/** Types of store.
williamr@2
  6761
williamr@2
  6762
Modes: Common */
williamr@2
  6763
	enum TMobilePhoneStoreType
williamr@2
  6764
		{
williamr@2
  6765
	/** Store type is unknown.
williamr@2
  6766
	
williamr@2
  6767
	Modes: Common */
williamr@2
  6768
		EPhoneStoreTypeUnknown,
williamr@2
  6769
	/** Store contains SMS messages.
williamr@2
  6770
	
williamr@2
  6771
	Modes: Common */
williamr@2
  6772
		EShortMessageStore,
williamr@2
  6773
	/** Store contains NAM entries.
williamr@2
  6774
	
williamr@2
  6775
	Modes: CDMA */
williamr@2
  6776
		ENamStore,
williamr@2
  6777
	/** Store contains PhoneBook entries.
williamr@2
  6778
	
williamr@2
  6779
	Modes: Common */
williamr@2
  6780
		EPhoneBookStore,
williamr@2
  6781
	/** Store contains emergency number entries.
williamr@2
  6782
	
williamr@2
  6783
	Modes: Common */
williamr@2
  6784
		EEmergencyNumberStore,
williamr@2
  6785
	/** Store contains own number entries.
williamr@2
  6786
williamr@2
  6787
	Modes: Common */
williamr@2
  6788
		EOwnNumberStore
williamr@2
  6789
		};
williamr@2
  6790
williamr@2
  6791
/** Store capabilities. */
williamr@2
  6792
	enum TMobilePhoneStoreCaps
williamr@2
  6793
		{
williamr@2
  6794
	/** The store can be accessed as a whole using the ReadAll() and StoreAll() member
williamr@2
  6795
	functions. */
williamr@2
  6796
		KCapsWholeStore			= 0x80000000,
williamr@2
  6797
	/** The store can be accessed one entry at a time using the RMobilePhoneStore::Read(), 
williamr@2
  6798
	RMobilePhoneStore::Write() and RMobilePhoneStore::Delete() member functions. */
williamr@2
  6799
		KCapsIndividualEntry	= 0x40000000,
williamr@2
  6800
	/** The store can be accessed in order to read entries. */
williamr@2
  6801
		KCapsReadAccess			= 0x20000000,
williamr@2
  6802
	/** The store can be accessed in order to write or delete entries. */
williamr@2
  6803
		KCapsWriteAccess		= 0x10000000,
williamr@2
  6804
	/** The TSY supports deleting all the store entries at once. */
williamr@2
  6805
		KCapsDeleteAll			= 0x08000000,
williamr@2
  6806
	/** The TSY supports notification of store events such as entries added, deleted
williamr@2
  6807
	or store becoming full. */
williamr@2
  6808
		KCapsNotifyEvent		= 0x04000000
williamr@2
  6809
		};
williamr@2
  6810
williamr@2
  6811
/** The type of store information. As defined in TMobilePhoneStoreInfoV1::iExtensionId
williamr@2
  6812
williamr@2
  6813
Modes: Common
williamr@2
  6814
williamr@2
  6815
@see TMobilePhoneStoreInfoV1
williamr@2
  6816
@see RMobilePhone::TMultimodeType */
williamr@2
  6817
	enum TMobilePhoneStoreInfoExtId
williamr@2
  6818
		{
williamr@2
  6819
	/** The iExtensionId contents indicate that the packaged class is a RMobilePhoneStore::TMobilePhoneStoreInfoV1.
williamr@2
  6820
	Modes: Common */
williamr@2
  6821
		KETelMobilePhoneStoreV1=KETelExtMultimodeV1,
williamr@2
  6822
	/** The iExtensionId contents indicate that the packaged class is a RMobilePhoneBookStore::TMobilePhoneBookInfoV1.
williamr@2
  6823
	Modes: Common */
williamr@2
  6824
		KETelMobilePhonebookStoreV1,
williamr@2
  6825
	/** Reserved for SMS store specific information class.
williamr@2
  6826
	Modes: Common */
williamr@2
  6827
		KETelMobileSmsStoreV1,
williamr@2
  6828
	/** The iExtensionId contents indicate that the packaged class is a RMobileNamStore::TMobileNamStoreInfoV1.
williamr@2
  6829
	Modes: CDMA */
williamr@2
  6830
		KETelMobileNamStoreV1,
williamr@2
  6831
	/** The iExtensionId contents indicate that the packaged class is a RMobileONStore::TMobileONStoreInfoV1.
williamr@2
  6832
	Modes: Common */
williamr@2
  6833
		KETelMobileONStoreV1,
williamr@2
  6834
	/** Reserved for Emergency Number store specific infoprmation class.
williamr@2
  6835
	Modes: Common */
williamr@2
  6836
		KETelMobileENStoreV1,
williamr@2
  6837
	/** The iExtensionId contents indicate that the packaged class is a TMobilePhoneBookInfoV2.
williamr@2
  6838
	Modes: Common */
williamr@2
  6839
		KETelMobilePhonebookStoreV2=KETelExtMultimodeV2,
williamr@2
  6840
		
williamr@2
  6841
	/** The iExtensionId contents indicate that the packaged class is a TMobilePhoneBookInfoV2.
williamr@2
  6842
 	Modes: Common */
williamr@2
  6843
 		KETelMobilePhonebookStoreV5=KEtelExtMultimodeV5
williamr@2
  6844
		};
williamr@2
  6845
williamr@2
  6846
williamr@2
  6847
williamr@2
  6848
	class TMobilePhoneStoreInfoV1 : public RMobilePhone::TMultimodeType
williamr@2
  6849
/** Defines information and capabilities of a phone-side store.
williamr@2
  6850
@publishedPartner
williamr@2
  6851
@released */
williamr@2
  6852
		{
williamr@2
  6853
	public:
williamr@2
  6854
		IMPORT_C TMobilePhoneStoreInfoV1();
williamr@2
  6855
williamr@2
  6856
	/** The type of entry in the phone-side store. 
williamr@2
  6857
	
williamr@2
  6858
	Modes: Common
williamr@2
  6859
williamr@2
  6860
	@see TMobilePhoneStoreType */
williamr@2
  6861
		TMobilePhoneStoreType		iType;
williamr@2
  6862
	/** Indicates the total number of entries that may be held in this store. */
williamr@2
  6863
		TInt						iTotalEntries;
williamr@2
  6864
	/** Indicates the current number of entries held in this store.
williamr@2
  6865
	
williamr@2
  6866
	Is equal to KIndexNotUsed if the TSY is unable to determine current number 
williamr@2
  6867
	of entries.
williamr@2
  6868
	
williamr@2
  6869
	Modes: Common */
williamr@2
  6870
		TInt						iUsedEntries;
williamr@2
  6871
	/** Indicates the capabilities of the store. It is the sum of caps constants defined
williamr@2
  6872
	in TMobilePhoneStoreCaps and those defined for a specialised phone store.
williamr@2
  6873
	
williamr@2
  6874
	Modes: Common */
williamr@2
  6875
		TUint32						iCaps;
williamr@2
  6876
	/** The name of the phone-side store. A valid list of names is given in the description 
williamr@2
  6877
	of each specialised store. 
williamr@2
  6878
	
williamr@2
  6879
	Modes: Common
williamr@2
  6880
williamr@2
  6881
	@see RMobilePhone::TMobileName */
williamr@2
  6882
		RMobilePhone::TMobileName	iName;
williamr@2
  6883
		};
williamr@2
  6884
williamr@2
  6885
/** A typedef'd packaged TMobilePhoneStoreInfoV1 for passing through a generic
williamr@2
  6886
API member function. */
williamr@2
  6887
	typedef TPckg<TMobilePhoneStoreInfoV1> TMobilePhoneStoreInfoV1Pckg;
williamr@2
  6888
williamr@2
  6889
	
williamr@2
  6890
williamr@2
  6891
	class TMobilePhoneStoreEntryV1 : public RMobilePhone::TMultimodeType
williamr@2
  6892
/** Defines common contents of an entry in a phone-side store. 
williamr@2
  6893
*/
williamr@2
  6894
		{
williamr@2
  6895
	public:
williamr@2
  6896
williamr@2
  6897
		enum
williamr@2
  6898
			{
williamr@2
  6899
			KIndexNotUsed = -1
williamr@2
  6900
			};
williamr@2
  6901
williamr@2
  6902
	protected:
williamr@2
  6903
		TMobilePhoneStoreEntryV1();
williamr@2
  6904
	public:
williamr@2
  6905
		void InternalizeL(RReadStream& aStream);
williamr@2
  6906
		void ExternalizeL(RWriteStream& aStream) const;
williamr@2
  6907
	public:
williamr@2
  6908
	/** The slot location of the entry within phone-side storage.
williamr@2
  6909
	
williamr@2
  6910
	Modes: Common */
williamr@2
  6911
		TInt  iIndex;
williamr@2
  6912
		};
williamr@2
  6913
williamr@2
  6914
	IMPORT_C void GetInfo(TRequestStatus& aReqStatus, TDes8& aInfo) const;
williamr@2
  6915
williamr@2
  6916
	IMPORT_C void Read(TRequestStatus& aReqStatus, TDes8& aEntry) const;
williamr@2
  6917
	IMPORT_C void Write(TRequestStatus& aReqStatus, TDes8& aEntry) const;
williamr@2
  6918
williamr@2
  6919
	IMPORT_C void Delete(TRequestStatus& aReqStatus, TInt aIndex) const;
williamr@2
  6920
	IMPORT_C void DeleteAll(TRequestStatus& aReqStatus) const;
williamr@2
  6921
williamr@2
  6922
/** The store events. It is possible for more than one event to occur at the same 
williamr@2
  6923
time, therefore the events are a bitmask and should be tested as a bitmask.
williamr@2
  6924
williamr@2
  6925
Modes: Common
williamr@2
  6926
williamr@2
  6927
@see NotifyStoreEvent() */
williamr@2
  6928
	enum TMobileStoreEvent
williamr@2
  6929
		{
williamr@2
  6930
	/** The store has become full. This event will trigger after the last possible 
williamr@2
  6931
	entry in a store has been written. */
williamr@2
  6932
		KStoreFull =0x00000001,
williamr@2
  6933
	/** The store was full but now has some space. This event will trigger after one 
williamr@2
  6934
	or more entries have been deleted from a full store. */
williamr@2
  6935
		KStoreHasSpace =0x00000002,
williamr@2
  6936
	/** The store is empty. This event will trigger after the last entry in a store 
williamr@2
  6937
	has been deleted or if all entries are deleted at once. */
williamr@2
  6938
		KStoreEmpty =0x00000004,
williamr@2
  6939
	/** The store has a new entry, placed in the slot indicated by the aIndex parameter. */
williamr@2
  6940
		KStoreEntryAdded =0x00000008,
williamr@2
  6941
	/** The store has deleted the entry that was in the slot indicated by the aIndex 
williamr@2
  6942
	parameter. */
williamr@2
  6943
		KStoreEntryDeleted =0x00000010,
williamr@2
  6944
	/** The store has changed the entry that was in the slot indicated by the aIndex 
williamr@2
  6945
	parameter. */
williamr@2
  6946
		KStoreEntryChanged =0x00000020,
williamr@2
  6947
	/** The store contents have substantially changed and the TSY is recommending that 
williamr@2
  6948
	the client performs a refresh by reading all the contents again. */
williamr@2
  6949
		KStoreDoRefresh =0x00000040
williamr@2
  6950
		};
williamr@2
  6951
williamr@2
  6952
	IMPORT_C void NotifyStoreEvent(TRequestStatus& aReqStatus, TUint32& aEvent, TInt& aIndex) const;
williamr@2
  6953
williamr@2
  6954
protected:
williamr@2
  6955
	CMobilePhoneStorePtrHolder* iStorePtrHolder;
williamr@2
  6956
williamr@2
  6957
protected:
williamr@2
  6958
	RMobilePhoneStore();
williamr@2
  6959
	IMPORT_C void BaseConstruct(CMobilePhoneStorePtrHolder* aPtrHolder);
williamr@2
  6960
	IMPORT_C void Destruct();
williamr@2
  6961
	};
williamr@2
  6962
williamr@2
  6963
williamr@2
  6964
/*********************************************************/
williamr@2
  6965
//
williamr@2
  6966
// Call based functionality (RMobileCall)
williamr@2
  6967
// 
williamr@2
  6968
/*********************************************************/
williamr@2
  6969
williamr@2
  6970
williamr@2
  6971
williamr@2
  6972
class CMobileCallPtrHolder;
williamr@2
  6973
williamr@2
  6974
class RMobileCall : public RCall
williamr@2
  6975
/** Provides access to the functionality associated with a specific mobile call.
williamr@2
  6976
williamr@2
  6977
RMobileCall encapsulates access to a mobile phone. The functionality of RMobileCall 
williamr@2
  6978
is divided into a number of functional units, for the purpose of easier documentation 
williamr@2
  6979
and navigation and selectable support by TSY. 
williamr@2
  6980
williamr@2
  6981
Note: Some RMobileCall function members must be supported by the TSY while 
williamr@2
  6982
others are part of optional "functional unit" and only need to be supported
williamr@2
  6983
if the TSY supports that functional unit. When a functional unit is mandatory 
williamr@2
  6984
then the TSY should at least support the Get...Caps() member function to indicate 
williamr@2
  6985
the member functions that are supported for this unit. 
williamr@2
  6986
 */
williamr@2
  6987
	{
williamr@2
  6988
public:
williamr@2
  6989
	IMPORT_C RMobileCall();
williamr@2
  6990
	/***********************************************************************************/
williamr@2
  6991
	//
williamr@2
  6992
	//  Mobile call parameters - used within Dial/Answer API
williamr@2
  6993
	//
williamr@2
  6994
	/***********************************************************************************/
williamr@2
  6995
williamr@2
  6996
	// used to set iExtensionId in RCall::TCallParams
williamr@2
  6997
/** The mobile call parameter extension IDs.
williamr@2
  6998
williamr@2
  6999
Modes: Common */
williamr@2
  7000
	enum TMobileCallParamsExtensionId
williamr@2
  7001
		{
williamr@2
  7002
	/** The iExtensionId contents indicate that the packaged class is a TMobileCallParamsV1. */
williamr@2
  7003
		KETelMobileCallParamsV1=KETelExtMultimodeV1,
williamr@2
  7004
	/** The iExtensionId contents indicate that the packaged class is a TMobileDataCallParamsV1.
williamr@2
  7005
	
williamr@2
  7006
	Modes: Common */
williamr@2
  7007
		KETelMobileDataCallParamsV1,
williamr@2
  7008
	/** The iExtensionId contents indicate that the packaged class is a TMobileHscsdCallParamsV1.
williamr@2
  7009
	
williamr@2
  7010
	Modes: GSM/WCDMA */
williamr@2
  7011
		KETelMobileHscsdCallParamsV1,
williamr@2
  7012
	/** The iExtensionId contents indicate that the packaged class is a TMobileCallParamsV2.
williamr@2
  7013
	
williamr@2
  7014
	Modes: Common */
williamr@2
  7015
		KETelMobileCallParamsV2=KETelExtMultimodeV2,
williamr@2
  7016
	/** The iExtensionId contents indicate that the packaged class is a TMobileDataCallParamsV2.
williamr@2
  7017
	
williamr@2
  7018
	Modes: Common */
williamr@2
  7019
		KETelMobileDataCallParamsV2,
williamr@2
  7020
	/** The iExtensionId contents indicate that the packaged class is a TMobileHscsdCallParamsV2.
williamr@2
  7021
williamr@2
  7022
	Modes: GSM/WCDMA */
williamr@2
  7023
		KETelMobileHscsdCallParamsV2,
williamr@2
  7024
	/** The iExtensionId contents indicate that the packaged class is a TMobileCallParamsV7.
williamr@2
  7025
williamr@2
  7026
	Modes: GSM/WCDMA */ 
williamr@2
  7027
		KETelMobileCallParamsV7=KEtelExtMultimodeV7,
williamr@2
  7028
	/** The iExtensionId contents indicate that the packaged class is a TMobileHscsdCallParamsV7.
williamr@2
  7029
williamr@2
  7030
	Modes: GSM/WCDMA */
williamr@2
  7031
		KETelMobileHscsdCallParamsV7,
williamr@2
  7032
		
williamr@2
  7033
	/** The iExtensionId contents indicate that the packaged class is a TMobileHscsdCallParamsV8.
williamr@2
  7034
williamr@2
  7035
	Modes: GSM/WCDMA */
williamr@2
  7036
		KETelMobileHscsdCallParamsV8 = KEtelExtMultimodeV8,
williamr@2
  7037
williamr@2
  7038
	/** The iExtensionId contents indicate that the packaged class is a TMobileDataCallParamsV8.
williamr@2
  7039
williamr@2
  7040
	Modes: GSM/WCDMA */
williamr@2
  7041
		KETelMobileDataCallParamsV8,
williamr@2
  7042
		
williamr@2
  7043
	/** The iExtensionId contents indicate that the packaged class is a TEtel3rdPartyMobileCallParamsV1. 
williamr@2
  7044
			
williamr@2
  7045
	Modes: Common */	
williamr@2
  7046
	KETel3rdPartyCallParamsV1=KETelExt3rdPartyV1
williamr@2
  7047
		
williamr@2
  7048
		};
williamr@2
  7049
williamr@2
  7050
/** Caller Id restriction settings.
williamr@2
  7051
williamr@2
  7052
Modes: Common
williamr@2
  7053
williamr@2
  7054
@see TMobileCallParamsV1 */
williamr@2
  7055
	enum TMobileCallIdRestriction
williamr@2
  7056
		{
williamr@2
  7057
	/** The default setting should be used if the user has not explicitly requested 
williamr@2
  7058
	their identity to be restricted/allowed. */
williamr@2
  7059
		EIdRestrictDefault,
williamr@2
  7060
	/** The user has explicitly requested their identity to be sent for this call. */
williamr@2
  7061
		ESendMyId,
williamr@2
  7062
	/** The user has explicitly requested their identity not to be sent for this call. */
williamr@2
  7063
		EDontSendMyId
williamr@2
  7064
		};
williamr@2
  7065
williamr@2
  7066
	class TMobileCallCugV1 : public RMobilePhone::TMultimodeType
williamr@2
  7067
/** This class is used to set up a CUG (Closed User Group) call. 
williamr@2
  7068
williamr@2
  7069
TMobileCallCugV1() is valid in GSM/WCDMA mode only. The client application 
williamr@2
  7070
should set the CUG settings for the call depending on the user's choice. If
williamr@2
  7071
the user has not explicitly requested a CUG call then this parameter should 
williamr@2
  7072
indicate that explicit CUG invoke is false. The TSY ignores this parameter 
williamr@2
  7073
if in CDMA mode. 
williamr@2
  7074
*/
williamr@2
  7075
		{
williamr@2
  7076
	public:
williamr@2
  7077
		IMPORT_C TMobileCallCugV1();
williamr@2
  7078
	public:
williamr@2
  7079
	/** A boolean indicating whether Closed User Group is being explicitly invoked by 
williamr@2
  7080
	the client or not. If this parameter is false, the other entries in this structure 
williamr@2
  7081
	will be ignored. */
williamr@2
  7082
		TBool	iExplicitInvoke;
williamr@2
  7083
	/** The Closed User Group index that the user has specified for this call (if no
williamr@2
  7084
	index has been specified then this element will equal -1). */
williamr@2
  7085
		TInt	iCugIndex;
williamr@2
  7086
	/** A boolean indicating whether the user has suppressed their Outgoing Access option 
williamr@2
  7087
	or not. */
williamr@2
  7088
		TBool	iSuppressOA;
williamr@2
  7089
	/** A boolean indicating whether the user has suppressed the use of their preferential 
williamr@2
  7090
	Closed User Group or not. */
williamr@2
  7091
		TBool	iSuppressPrefCug;
williamr@2
  7092
		};
williamr@2
  7093
	
williamr@2
  7094
/** Multicall Operation set-up.
williamr@2
  7095
williamr@2
  7096
Mode: WCDMA */
williamr@2
  7097
	enum TMobileCallMulticallBearerMode
williamr@2
  7098
		{
williamr@2
  7099
	/** Multicall is not supported. */
williamr@2
  7100
		EMulticallNotSupported,
williamr@2
  7101
	/** MS will accept incoming call and establish a connection using an existing bearer. */
williamr@2
  7102
		EMulticallShareBearer,
williamr@2
  7103
	/** MS will accept incoming call and establish a connection by creating a new bearer. */
williamr@2
  7104
		EMulticallNewBearer
williamr@2
  7105
		};
williamr@2
  7106
williamr@2
  7107
	/** 
williamr@2
  7108
	 The originator of a call.
williamr@2
  7109
	 
williamr@2
  7110
	 @see RSat::TCallParamOrigin
williamr@2
  7111
	 */
williamr@2
  7112
	enum TCallParamOrigin
williamr@2
  7113
		{
williamr@2
  7114
		/** The call originator is unknown. */
williamr@2
  7115
		EOriginatorUnknown,
williamr@2
  7116
		/** The call originated/originates from the SIM. */
williamr@2
  7117
		EOriginatorSIM,
williamr@2
  7118
		/** The call originated/originates from an Etel Client. */
williamr@2
  7119
		EOriginatorEtelClient,
williamr@2
  7120
		/** The call originated/originates from an external device connected to the modem. */
williamr@2
  7121
		EOriginatorExternal 
williamr@2
  7122
		}; 
williamr@2
  7123
williamr@2
  7124
	/** The maximum size of a sub-address.
williamr@2
  7125
williamr@2
  7126
	 @see TSubAddress
williamr@2
  7127
williamr@2
  7128
	 @see RSat::KSubAddressMaxSize*/
williamr@2
  7129
	enum {KSubAddressMaxSize=21};
williamr@2
  7130
williamr@2
  7131
	/** A buffer to hold the sub-address of a telephone number. 
williamr@2
  7132
	 
williamr@2
  7133
	 @see KSubAddressMaxSize
williamr@2
  7134
	 
williamr@2
  7135
	 @see RSat::TSubAddress
williamr@2
  7136
	 */
williamr@2
  7137
	typedef TBuf<KSubAddressMaxSize> TSubAddress;	
williamr@2
  7138
williamr@2
  7139
	/** The maximum size of the 8-bit capability configuration parameter buffer.
williamr@2
  7140
	 @see TCcp
williamr@2
  7141
	 
williamr@2
  7142
	 @see RSat::KCcpMaxSize
williamr@2
  7143
	 */
williamr@2
  7144
	enum {KCcpMaxSize=15};
williamr@2
  7145
williamr@2
  7146
	/** TCcp ( Capability configuration parameters ) is an 8-bit data buffer that
williamr@2
  7147
	contains the bearer capabilities as coded in ETSI 24.008(Ver 04.11 2003-06) and 
williamr@2
  7148
	defined in ETSI 31.111. It is 15 bytes long as it does not include the IEI (Information 
williamr@2
  7149
	Element Identity).
williamr@2
  7150
	
williamr@2
  7151
	@see TMobileCallParamsV7
williamr@2
  7152
	
williamr@2
  7153
	@see RSat::TCcp
williamr@2
  7154
	*/
williamr@2
  7155
	typedef TBuf8<KCcpMaxSize> TCcp;
williamr@2
  7156
williamr@2
  7157
	/** Bearer Capability Repeat Indicator.
williamr@2
  7158
	 
williamr@2
  7159
	 @see TMobileCallParamsV7
williamr@2
  7160
	 
williamr@2
  7161
	 @see RSat::TBCRepeatIndicator
williamr@2
  7162
	 */
williamr@2
  7163
	enum TBCRepeatIndicator
williamr@2
  7164
	        {
williamr@2
  7165
	        /** The alternate mode of the Bearer Capability Repeat Indicator. */
williamr@2
  7166
	        EBCAlternateMode,
williamr@2
  7167
	        /** Support of fallback - mode 1 preferred, mode 2 selected if setup of mode 1 fails. */
williamr@2
  7168
	        EBCFallbackMode,
williamr@2
  7169
	        /** Service change and fallback - mode 1 alternate mode 2, mode 1 preferred. */
williamr@2
  7170
	        EBCServiceChangeAndFallbackMode
williamr@2
  7171
	        };
williamr@2
  7172
williamr@2
  7173
	/** Describes the state of the icon.
williamr@2
  7174
	    
williamr@2
  7175
	@see TIconId
williamr@2
  7176
	
williamr@2
  7177
	@see RSat::TIconQualifier
williamr@2
  7178
	*/
williamr@2
  7179
	enum TIconQualifier
williamr@2
  7180
	        {
williamr@2
  7181
	        /** Icon qualifier is not set. */
williamr@2
  7182
	        EIconQualifierNotSet,
williamr@2
  7183
	        /** Icon is not present. */
williamr@2
  7184
	        ENoIconId,
williamr@2
  7185
	        /** Icon is present; It is self explanatory. 
williamr@2
  7186
	         Display instead of the alpha ID or text string. */
williamr@2
  7187
	        ESelfExplanatory,
williamr@2
  7188
	        /** Icon is present; It is not self explanatory. 
williamr@2
  7189
	         Display both the icon and the alpha ID or text string. */
williamr@2
  7190
	        ENotSelfExplanatory
williamr@2
  7191
	        };
williamr@2
  7192
williamr@2
  7193
	/** Holds details about an icon.
williamr@2
  7194
	
williamr@2
  7195
	@see TMobileCallParamsV7
williamr@2
  7196
	@see TMobileCallInfoV7
williamr@2
  7197
	
williamr@2
  7198
	@see RSat::TIconId
williamr@2
  7199
	*/
williamr@2
  7200
	struct TIconId
williamr@2
  7201
	        {
williamr@2
  7202
	        /** Describes the state of the icon. */
williamr@2
  7203
	        TIconQualifier iQualifier;
williamr@2
  7204
	        /** Icon identifier */
williamr@2
  7205
	        TUint8 iIdentifier;
williamr@2
  7206
	        };
williamr@2
  7207
williamr@2
  7208
	/** The maximum size of the alpha ID buffer.
williamr@2
  7209
williamr@2
  7210
	@see TAlphaIdBuf
williamr@2
  7211
	
williamr@2
  7212
	@see RSat::KAlphaIdMaxSize
williamr@2
  7213
	*/
williamr@2
  7214
	enum {KAlphaIdMaxSize=254};
williamr@2
  7215
williamr@2
  7216
	/**
williamr@2
  7217
	A buffer to hold an alpha identifier. 
williamr@2
  7218
	
williamr@2
  7219
	@see TMobileCallParamsV7
williamr@2
  7220
	@see TMobileCallInfoV7
williamr@2
  7221
	
williamr@2
  7222
	@see RSat::TAlphaIdBuf
williamr@2
  7223
	*/
williamr@2
  7224
	typedef TBuf<KAlphaIdMaxSize> TAlphaIdBuf;
williamr@2
  7225
	
williamr@2
  7226
	 
williamr@2
  7227
	class TMobileCallParamsV1 : public RCall::TCallParams
williamr@2
  7228
/** Defines the parameters used for set-up of a call of any type. 
williamr@2
  7229
*/
williamr@2
  7230
		{
williamr@2
  7231
	public:
williamr@2
  7232
		IMPORT_C TMobileCallParamsV1();
williamr@2
  7233
	public:
williamr@2
  7234
	/** Call Id restriction setting to be used for this call.
williamr@2
  7235
williamr@2
  7236
	@see TMobileCallIdRestriction */
williamr@2
  7237
		TMobileCallIdRestriction iIdRestrict;
williamr@2
  7238
	/** Closed User Group setting to be used for this call.
williamr@2
  7239
	
williamr@2
  7240
	@see TMobileCallCugV1 */
williamr@2
  7241
		TMobileCallCugV1 iCug;
williamr@2
  7242
	/** Specifies whether this call attempt is user initiated (EFalse) or a client initiated 
williamr@2
  7243
	redial (ETrue). */
williamr@2
  7244
		TBool iAutoRedial;
williamr@2
  7245
		};
williamr@2
  7246
williamr@2
  7247
	/** A typedef'd packaged TMobileCallParamsV1 for passing through a generic API function 
williamr@2
  7248
	member. */
williamr@2
  7249
	typedef TPckg<TMobileCallParamsV1> TMobileCallParamsV1Pckg;
williamr@2
  7250
williamr@2
  7251
	
williamr@2
  7252
 
williamr@2
  7253
 	class TMobileCallParamsV2 : public TMobileCallParamsV1
williamr@2
  7254
 	/** Defines the parameters used for set-up of a call of any type 
williamr@2
  7255
	for version v2.0 of the API.
williamr@2
  7256
	A new parameter (iBearerMode) is required to support Multicall.
williamr@2
  7257
	
williamr@2
  7258
	@publishedPartner
williamr@2
  7259
	@released 
williamr@2
  7260
 	*/
williamr@2
  7261
 		{
williamr@2
  7262
 	public:
williamr@2
  7263
 		IMPORT_C TMobileCallParamsV2();
williamr@2
  7264
 	public:
williamr@2
  7265
	/** The bearer mode. */
williamr@2
  7266
 		TMobileCallMulticallBearerMode iBearerMode;
williamr@2
  7267
 		};
williamr@2
  7268
 
williamr@2
  7269
 	/** A typedef'd packaged TMobileCallParamsV1 for passing through a generic API 
williamr@2
  7270
	function member. */
williamr@2
  7271
 	typedef TPckg<TMobileCallParamsV2> TMobileCallParamsV2Pckg;
williamr@2
  7272
 
williamr@2
  7273
williamr@2
  7274
 	class TMobileCallParamsV7 : public TMobileCallParamsV2
williamr@2
  7275
 	/** Defines the parameters used for set-up of a call of any type 
williamr@2
  7276
	for version v7.0 of the API.
williamr@2
  7277
williamr@2
  7278
	@publishedPartner
williamr@2
  7279
	@released 
williamr@2
  7280
 	*/
williamr@2
  7281
 		{        
williamr@2
  7282
 	public:
williamr@2
  7283
 		IMPORT_C TMobileCallParamsV7();
williamr@2
  7284
 	public:
williamr@2
  7285
 		/**
williamr@2
  7286
 		 The origin of the call.
williamr@2
  7287
 		 */
williamr@2
  7288
 		TCallParamOrigin iCallParamOrigin;        
williamr@2
  7289
 		/**
williamr@2
  7290
 		 The sub-address of the remote party. 
williamr@2
  7291
 		 */
williamr@2
  7292
 		TSubAddress iSubAddress;
williamr@2
  7293
 		/**
williamr@2
  7294
 		 Capability configuration parameters for the first bearer.
williamr@2
  7295
 		 */
williamr@2
  7296
 		TCcp iBearerCap1;
williamr@2
  7297
 		/**
williamr@2
  7298
 		 Capability configuration parameters for the second bearer. 		  
williamr@2
  7299
 		 */
williamr@2
  7300
 		TCcp iBearerCap2;
williamr@2
  7301
 		/**
williamr@2
  7302
 		 The bearer capability repeat indicator. 
williamr@2
  7303
 		 */
williamr@2
  7304
 		TBCRepeatIndicator iBCRepeatIndicator;
williamr@2
  7305
 		/**
williamr@2
  7306
 		 The icon identifier of the icon to display.  
williamr@2
  7307
 		 This can be used, for example, to provide 
williamr@2
  7308
 		 graphical notification that the call is taking place.
williamr@2
  7309
 		 
williamr@2
  7310
 		 @see TIconQualifier
williamr@2
  7311
 		 */	 	
williamr@2
  7312
 		TIconId iIconId;
williamr@2
  7313
 		/**
williamr@2
  7314
 		 Buffer to hold the alpha identifier.  This is used to describe
williamr@2
  7315
 		 the icon stored in iIconId if iIconId.iQualifier is set to
williamr@2
  7316
 		 RMobileCall::ENotSelfExplanatory, 
williamr@2
  7317
 		 RMobileCall::EIconQualifierNotSet or 
williamr@2
  7318
 		 RMobileCall::ENoIconId.
williamr@2
  7319
 		 */
williamr@2
  7320
	 	TAlphaIdBuf iAlphaId;
williamr@2
  7321
 		};
williamr@2
  7322
 	
williamr@2
  7323
 	/** A typedef'd packaged TMobileCallParamsV7 for passing through a generic API 
williamr@2
  7324
	function member. */
williamr@2
  7325
 	typedef TPckg<TMobileCallParamsV7> TMobileCallParamsV7Pckg;
williamr@2
  7326
 	
williamr@2
  7327
	/***********************************************************************************/
williamr@2
  7328
	//
williamr@2
  7329
	// Mobile Call Data Functional Unit
williamr@2
  7330
	//
williamr@2
  7331
	/***********************************************************************************/
williamr@2
  7332
williamr@2
  7333
/** In GSM mode, maps to list of supported speeds returned in response to AT+CBST=?. 
williamr@2
  7334
In CDMA mode, maps to data rates supported by supported service options.
williamr@2
  7335
williamr@2
  7336
@see TMobileCallDataCapsV1 */
williamr@2
  7337
	enum TMobileCallDataSpeedCaps
williamr@2
  7338
		{
williamr@2
  7339
	/** Call can support autobauding. */
williamr@2
  7340
		KCapsSpeedAutobauding = 0x00000001,
williamr@2
  7341
	/** Call can support a speed of 2400bps. */
williamr@2
  7342
		KCapsSpeed2400  = 0x00000002,
williamr@2
  7343
	/** Call can support a speed of 4800bps. */
williamr@2
  7344
		KCapsSpeed4800  = 0x00000004,
williamr@2
  7345
	/** Call can support a speed of 9600bps. */
williamr@2
  7346
		KCapsSpeed9600  = 0x00000008,
williamr@2
  7347
	/** Call can support a speed of 14400bps. */
williamr@2
  7348
		KCapsSpeed14400 = 0x00000010,
williamr@2
  7349
	/** Call can support a speed of 19200bps. */
williamr@2
  7350
		KCapsSpeed19200 = 0x00000020,
williamr@2
  7351
	/** Call can support a speed of 28800bps. */
williamr@2
  7352
		KCapsSpeed28800 = 0x00000040,
williamr@2
  7353
	/** Call can support a speed of 32000bps. */
williamr@2
  7354
		KCapsSpeed32000 = 0x00000080,
williamr@2
  7355
	/** Call can support a speed of 33600bps. */
williamr@2
  7356
		KCapsSpeed33600 = 0x00000100,
williamr@2
  7357
	/** Call can support a speed of 38400bps. */
williamr@2
  7358
		KCapsSpeed38400 = 0x00000200,
williamr@2
  7359
	/** Call can support a speed of 43200bps. */
williamr@2
  7360
		KCapsSpeed43200 = 0x00000400,
williamr@2
  7361
	/** Call can support a speed of 48000bps. */
williamr@2
  7362
		KCapsSpeed48000 = 0x00000800,
williamr@2
  7363
	/** Call can support a speed of 56000bps. */
williamr@2
  7364
		KCapsSpeed56000 = 0x00001000,
williamr@2
  7365
	/** Call can support a speed of 57600bps. */
williamr@2
  7366
		KCapsSpeed57600 = 0x00002000,
williamr@2
  7367
	/** Call can support a speed of 64000bps. */
williamr@2
  7368
		KCapsSpeed64000 = 0x00004000,
williamr@2
  7369
	/** Call can support extended data speed capabilities. This flag is reserved for 
williamr@2
  7370
	future expansion of API and should always be set to zero. */
williamr@2
  7371
		KCapsSpeedExtended = 0x80000000		
williamr@2
  7372
		};
williamr@2
  7373
williamr@2
  7374
/** List of supported values of the <speed> parameter returned in response to AT+CBST=?
williamr@2
  7375
williamr@2
  7376
Not applicable to CDMA mode
williamr@2
  7377
williamr@2
  7378
@see TMobileDataCallParamsV1 */
williamr@2
  7379
	enum TMobileCallDataProtocolCaps
williamr@2
  7380
		{
williamr@2
  7381
	/** Call can support V.22bis standard
williamr@2
  7382
	
williamr@2
  7383
	Modes: COMMON */
williamr@2
  7384
		KCapsProtocolV22bis = 0x00000001,
williamr@2
  7385
	/** Call can support V.32 standard.
williamr@2
  7386
	
williamr@2
  7387
	Modes: COMMON */
williamr@2
  7388
		KCapsProtocolV32 = 0x00000002,
williamr@2
  7389
	/** Call can support V.34 standard.
williamr@2
  7390
	
williamr@2
  7391
	Modes: COMMON */
williamr@2
  7392
		KCapsProtocolV34 = 0x00000004,
williamr@2
  7393
	/** Call can support V.110 standard.
williamr@2
  7394
	
williamr@2
  7395
	Modes: GSM/WCDMA */
williamr@2
  7396
		KCapsProtocolV110 = 0x00000008,
williamr@2
  7397
	/** Call can support V.120 standard.
williamr@2
  7398
	
williamr@2
  7399
	Modes: GSM/WCDMA */
williamr@2
  7400
		KCapsProtocolV120 = 0x00000010,
williamr@2
  7401
	/** Call can support bit transparent service.
williamr@2
  7402
	
williamr@2
  7403
	Modes: GSM/WCDMA */
williamr@2
  7404
		KCapsProtocolBitTransparent = 0x00000020,
williamr@2
  7405
	/** Call can support X31 flag stuffing standard.
williamr@2
  7406
	
williamr@2
  7407
	Modes: GSM/WCDMA */
williamr@2
  7408
		KCapsProtocolX31FlagStuffing = 0x00000040,
williamr@2
  7409
	/** Call can support both PIAF standards (32000bps and 64000bps).
williamr@2
  7410
	
williamr@2
  7411
	Modes: GSM/WCDMA */
williamr@2
  7412
		KCapsProtocolPIAFS = 0x00000080,
williamr@2
  7413
	/** Call can support request for Multimedia protocol (3G-324M) over a call to PSTN
williamr@2
  7414
	with voice fallback.
williamr@2
  7415
	
williamr@2
  7416
	Modes: WCDMA */
williamr@2
  7417
		KCapsPstnMultimediaVoiceFallback = 0x00000100,
williamr@2
  7418
	/** Call can support request for Multimedia protocol (3G-324M) over a call to PSTN
williamr@2
  7419
	without voice fallback
williamr@2
  7420
	
williamr@2
  7421
	Modes: WCDMA */
williamr@2
  7422
		KCapsPstnMultimedia = 0x00000200,
williamr@2
  7423
	/** Call can support request for Multimedia protocol (3G-324M) over a call to ISDN 
williamr@2
  7424
	(voice fallback not possible).
williamr@2
  7425
	
williamr@2
  7426
	Modes: WCDMA */
williamr@2
  7427
		KCapsIsdnMultimedia = 0x00000400,
williamr@2
  7428
	/** Call can support extended data carrier capabilities. This flag is reserved for 
williamr@2
  7429
	future expansion and should always be set to zero for v1.0 of this API.
williamr@2
  7430
	
williamr@2
  7431
	Modes: COMMON */
williamr@2
  7432
		KCapsProtocolExtended = 0x80000000
williamr@2
  7433
		};
williamr@2
  7434
williamr@2
  7435
/** In GSM mode, maps to list of supported <name> returned in response to AT+CBST=? 
williamr@2
  7436
In CDMA mode, maps to supported service options.
williamr@2
  7437
williamr@2
  7438
Modes: COMMON
williamr@2
  7439
williamr@2
  7440
@see TMobileCallDataCapsV1 */
williamr@2
  7441
	enum TMobileCallDataServiceCaps
williamr@2
  7442
		{
williamr@2
  7443
		KCapsDataCircuitAsynchronous = 0x00000001,
williamr@2
  7444
		KCapsDataCircuitAsynchronousRDI = 0x00000002,
williamr@2
  7445
		KCapsDataCircuitSynchronous = 0x00000004,
williamr@2
  7446
		KCapsDataCircuitSynchronousRDI = 0x00000008,
williamr@2
  7447
	/** Call can support "PAD Access (asynchronous) (UDI)".
williamr@2
  7448
	
williamr@2
  7449
	Modes: GSM/WCDMA */
williamr@2
  7450
		KCapsPADAsyncUDI = 0x00000010,
williamr@2
  7451
	/** Call can support "PAD Access (asynchronous) (RDI)"
williamr@2
  7452
williamr@2
  7453
	Modes: GSM/WCDMA */
williamr@2
  7454
		KCapsPADAsyncRDI = 0x00000020,
williamr@2
  7455
	/** Call can support "Packet Access (synchronous) (UDI)" 
williamr@2
  7456
	
williamr@2
  7457
	Modes: GSM/WCDMA */
williamr@2
  7458
		KCapsPacketAccessSyncUDI = 0x00000040,
williamr@2
  7459
	/** Call can support "Packet Access (synchronous) (RDI)".
williamr@2
  7460
williamr@2
  7461
	Modes: GSM/WCDMA */
williamr@2
  7462
		KCapsPacketAccessSyncRDI = 0x00000080,
williamr@2
  7463
	/** Call can support extended data service capabilities. This flag is reserved for 
williamr@2
  7464
	future expansion of this API and should always be set to zero for v1.0 of 
williamr@2
  7465
	this API.
williamr@2
  7466
	
williamr@2
  7467
	Modes: COMMON */
williamr@2
  7468
		KCapsServiceExtended = 0x80000000
williamr@2
  7469
		};
williamr@2
  7470
williamr@2
  7471
/** Maps to list of supported <ce> returned in response to AT+CBST=?
williamr@2
  7472
williamr@2
  7473
Not applicable to CDMA mode.
williamr@2
  7474
williamr@2
  7475
@see TMobileCallDataCapsV1 */
williamr@2
  7476
	enum TMobileCallDataQoSCaps
williamr@2
  7477
		{
williamr@2
  7478
	/** Call can support a request for "transparent only" connection. */
williamr@2
  7479
		KCapsTransparent = 0x00000001,
williamr@2
  7480
	/** Call can support a request for "non-transparent only" connection. */
williamr@2
  7481
		KCapsNonTransparent = 0x00000002,
williamr@2
  7482
	/** Call can support a request for "transparent preferred" connection. */
williamr@2
  7483
		KCapsTransparentPreferred = 0x00000004,
williamr@2
  7484
	/** Call can support a request for "non-transparent preferred" connection. */
williamr@2
  7485
		KCapsNonTransparentPreferred = 0x00000008
williamr@2
  7486
		};
williamr@2
  7487
williamr@2
  7488
/** Supported Air Interface User Rates. */
williamr@2
  7489
	enum TMobileCallAiurCodingCaps
williamr@2
  7490
		{
williamr@2
  7491
	/** Air interface user rate of 4.8k is supported. */
williamr@2
  7492
		KCapsAiurCoding48 = 0x01,
williamr@2
  7493
	/** Air interface user rate of 9.6k is supported. */
williamr@2
  7494
		KCapsAiurCoding96 = 0x04,
williamr@2
  7495
	/** Air interface user rate of 14.4k is supported. */
williamr@2
  7496
		KCapsAiurCoding144 = 0x08
williamr@2
  7497
		};
williamr@2
  7498
williamr@2
  7499
/** HSCSD coding capabilities.
williamr@2
  7500
williamr@2
  7501
Modes: GSM/WCDMA */
williamr@2
  7502
	enum TMobileCallTchCodingsCaps
williamr@2
  7503
		{
williamr@2
  7504
	/** Call supports HSCSD coding on 4.8K full rate data traffic channel. */
williamr@2
  7505
		KCapsTchCoding48  = 0x00000001,
williamr@2
  7506
	/** Call supports HSCSD coding on 9.6K full rate data traffic channel. */
williamr@2
  7507
		KCapsTchCoding96  = 0x00000004,
williamr@2
  7508
	/** Call supports HSCSD coding on 14.4K full rate data traffic channel. */
williamr@2
  7509
		KCapsTchCoding144 = 0x00000008,
williamr@2
  7510
	/** Call supports HSCSD coding on 28.8K full rate data traffic channel (only possible 
williamr@2
  7511
	when 14.4K is supported). */
williamr@2
  7512
		KCapsTchCoding288 = 0x00000010,
williamr@2
  7513
	/** Call supports HSCSD coding on 32.0K full rate data traffic channel (only possible 
williamr@2
  7514
	in a two-timeslot configuration). */
williamr@2
  7515
		KCapsTchCoding320 = 0x00000020,
williamr@2
  7516
	/** Call supports HSCSD coding on 43.2K full rate data traffic channel (only possible 
williamr@2
  7517
	when 14.4K is supported). */
williamr@2
  7518
		KCapsTchCoding432 = 0x00000040
williamr@2
  7519
		};
williamr@2
  7520
williamr@2
  7521
/** The call asymmetry capabilities.
williamr@2
  7522
williamr@2
  7523
Modes: GSM/WCDMA
williamr@2
  7524
williamr@2
  7525
@see TMobileCallDataCapsV1 */
williamr@2
  7526
	enum TMobileCallAsymmetryCaps
williamr@2
  7527
		{
williamr@2
  7528
	/** Call supports "No Preference" option for asymmetry bias of a Non-Transparent
williamr@2
  7529
	ECSD call. */
williamr@2
  7530
		KCapsAsymmetryNoPreference= 0x00000001,
williamr@2
  7531
	/** Call supports "Downlink bias" option for asymmetry bias of a Non-Transparent 
williamr@2
  7532
	ECSD call. 
williamr@2
  7533
	
williamr@2
  7534
	This means 8-PSK modulation is preferred downlink and GMSK modulation uplink. */
williamr@2
  7535
		KCapsAsymmetryDownlink = 0x00000002,
williamr@2
  7536
	/** Call supports "Uplink bias" option for asymmetry bias of a Non-Transparent ECSD 
williamr@2
  7537
	call. 
williamr@2
  7538
	
williamr@2
  7539
	This means 8-PSK modulation is preferred uplink and GMSK modulation downlink. */
williamr@2
  7540
		KCapsAsymmetryUplink = 0x00000004
williamr@2
  7541
		};
williamr@2
  7542
williamr@2
  7543
/** The supported Call RLP versions.
williamr@2
  7544
williamr@2
  7545
Modes: GSM/WCDMA
williamr@2
  7546
williamr@2
  7547
@see TMobileCallDataCapsV1 */
williamr@2
  7548
	enum TMobileCallRLPVersionCaps
williamr@2
  7549
		{
williamr@2
  7550
	/** Call supports the single link, basic RLP version 0. */
williamr@2
  7551
		KCapsRLPSingleLinkVersion0 = 0x00000001,
williamr@2
  7552
	/** Call supports the single link, extended RLP version 1. */
williamr@2
  7553
		KCapsRLPSingleLinkVersion1 = 0x00000002,
williamr@2
  7554
	/** Call supports the multi link, RLP version 2. */
williamr@2
  7555
		KCapsRLPMultiLinkVersion2  = 0x00000004
williamr@2
  7556
		};
williamr@2
  7557
williamr@2
  7558
/** The supported V42bis options.
williamr@2
  7559
williamr@2
  7560
Modes: GSM/WCDMA
williamr@2
  7561
williamr@2
  7562
@see TMobileCallDataCapsV1 */
williamr@2
  7563
	enum TMobileCallV42bisCaps
williamr@2
  7564
		{
williamr@2
  7565
	/** Call supports V42bis compression in initiator-responder direction. */
williamr@2
  7566
		KCapsV42bisTxDirection = 0x00000001,
williamr@2
  7567
	/** Call supports V42bis compression in responder-initiator direction. */
williamr@2
  7568
		KCapsV42bisRxDirection = 0x00000002,
williamr@2
  7569
	/** Call supports V42bis compression in both directions. */
williamr@2
  7570
		KCapsV42bisBothDirections = 0x00000004
williamr@2
  7571
		};
williamr@2
  7572
williamr@2
  7573
	
williamr@2
  7574
williamr@2
  7575
	class TMobileCallDataCapsV1 : public RMobilePhone::TMultimodeType
williamr@2
  7576
	/** Defines the capabilities of a circuit switched data call. 
williamr@2
  7577
	@publishedPartner
williamr@2
  7578
	@released
williamr@2
  7579
	*/
williamr@2
  7580
		{
williamr@2
  7581
	public:
williamr@2
  7582
		IMPORT_C TMobileCallDataCapsV1();
williamr@2
  7583
	public:
williamr@2
  7584
	/** Data speed capabilities - a bit wise sum of the caps defined in TMobileCallDataSpeedCaps. */
williamr@2
  7585
		TUint32	iSpeedCaps;
williamr@2
  7586
	/** Data protocol capabilities - a bit wise sum of the caps defined in TMobileCallDataProtocolCaps. */
williamr@2
  7587
		TUint32	iProtocolCaps;
williamr@2
  7588
	/** Data service capabilities - a bit wise sum of the caps defined in TMobileCallDataServiceCaps. */
williamr@2
  7589
		TUint32	iServiceCaps;
williamr@2
  7590
	/** Data QoS capabilities - a bit wise sum of the caps defined in TMobileCallDataQoSCaps.
williamr@2
  7591
	
williamr@2
  7592
	Note: Only available in GSM/WCDMA mode. */
williamr@2
  7593
		TUint32	iQoSCaps;
williamr@2
  7594
	/** A boolean indicating whether or not the MS supports HSCSD for this call. If 
williamr@2
  7595
	this attribute equals EFalse all the following attributes are invalid.
williamr@2
  7596
williamr@2
  7597
	Note: Only available in GSM/WCDMA mode. */
williamr@2
  7598
		TBool	iHscsdSupport;
williamr@2
  7599
	/** For HSCSD: The multi-slot class supported. */
williamr@2
  7600
		TInt	iMClass;
williamr@2
  7601
	/** For HSCSD: The maximum supported number of time-slots in the receive (down-link) 
williamr@2
  7602
	direction. */
williamr@2
  7603
		TInt	iMaxRxTimeSlots;
williamr@2
  7604
	/** For HSCSD: The maximum supported number of time-slots in the transmit (up-link) 
williamr@2
  7605
	direction. */
williamr@2
  7606
		TInt	iMaxTxTimeSlots;
williamr@2
  7607
	/** For HSCSD: The maximum supported total number of receive and transmit time-slots 
williamr@2
  7608
	that can be used at same time. */
williamr@2
  7609
		TInt	iTotalRxTxTimeSlots;
williamr@2
  7610
	/** For HSCSD: A bit-wise sum of the supported air interface channel codings defined 
williamr@2
  7611
	in TMobileCallAiurCodingCaps. */
williamr@2
  7612
		TUint32	iCodingCaps;
williamr@2
  7613
	/** For HSCSD: A bit-wise sum of the supported asymmetry bias defined in TMobileCallAsymmetryCaps. */
williamr@2
  7614
		TUint32 iAsymmetryCaps;
williamr@2
  7615
	/** For HSCSD: A boolean indicating whether or not the MS supports automatic user 
williamr@2
  7616
	initiated service level upgrading. */
williamr@2
  7617
		TBool 	iUserInitUpgrade;
williamr@2
  7618
	/** For HSCSD and CSD: A bit-wise sum of the supported Radio Link Protocol versions 
williamr@2
  7619
	defined in TMobileCallRLPVersionCaps. */
williamr@2
  7620
		TUint32	iRLPVersionCaps;
williamr@2
  7621
	/** For HSCSD and CSD: A bit-wise sum of the supported V42bis compression capabilities 
williamr@2
  7622
	defined in TMobileCallV42bisCaps . */
williamr@2
  7623
		TUint32	iV42bisCaps;
williamr@2
  7624
		};
williamr@2
  7625
williamr@2
  7626
/** A typedef'd packaged TMobileCallDataCapsV1 for passing through a generic API 
williamr@2
  7627
function member. */
williamr@2
  7628
	typedef TPckg<TMobileCallDataCapsV1> TMobileCallDataCapsV1Pckg;
williamr@2
  7629
williamr@2
  7630
	IMPORT_C TInt GetMobileDataCallCaps(TDes8& aCaps) const;
williamr@2
  7631
	IMPORT_C void NotifyMobileDataCallCapsChange(TRequestStatus& aReqStatus, TDes8& aCaps) const;
williamr@2
  7632
williamr@2
  7633
/** The call setup requested data speed.
williamr@2
  7634
williamr@2
  7635
@see TMobileDataCallParamsV1 */
williamr@2
  7636
	enum TMobileCallDataSpeed
williamr@2
  7637
		{
williamr@2
  7638
	/** Call set-up will request speed depending on data carrier chosen. */
williamr@2
  7639
		ESpeedUnspecified,
williamr@2
  7640
	/** Call set-up will request autobauding. */
williamr@2
  7641
		ESpeedAutobauding,
williamr@2
  7642
	/** Call set-up will request 2400bps. */
williamr@2
  7643
		ESpeed2400,
williamr@2
  7644
	/** Call set-up will request 4800bps. */
williamr@2
  7645
		ESpeed4800,
williamr@2
  7646
	/** Call set-up will request 9600bps. */
williamr@2
  7647
		ESpeed9600,
williamr@2
  7648
	/** Call set-up will request 14400bps. */
williamr@2
  7649
		ESpeed14400,
williamr@2
  7650
	/** Call set-up will request 19200bps. */
williamr@2
  7651
		ESpeed19200,
williamr@2
  7652
	/** Call set-up will request 28800bps. */
williamr@2
  7653
		ESpeed28800,
williamr@2
  7654
	/** Call set-up will request 32000bps. */
williamr@2
  7655
		ESpeed32000,
williamr@2
  7656
	/** Call set-up will request 33600bps. */
williamr@2
  7657
		ESpeed33600,
williamr@2
  7658
	/** Call set-up will request 38400bps. */
williamr@2
  7659
		ESpeed38400,
williamr@2
  7660
	/** Call set-up will request 43200bps. */
williamr@2
  7661
		ESpeed43200,
williamr@2
  7662
	/** Call set-up will request 48000bps. */
williamr@2
  7663
		ESpeed48000,
williamr@2
  7664
	/** Call set-up will request 56000bps. */
williamr@2
  7665
		ESpeed56000,
williamr@2
  7666
	/** Call set-up will request 57600bps. */
williamr@2
  7667
		ESpeed57600,
williamr@2
  7668
	/** Call set-up will request 64000bps. */
williamr@2
  7669
		ESpeed64000
williamr@2
  7670
		};
williamr@2
  7671
williamr@2
  7672
/** The call set-up requested data protocol.
williamr@2
  7673
williamr@2
  7674
Modes: GSM/WCDMA */
williamr@2
  7675
	enum TMobileCallDataProtocol
williamr@2
  7676
		{
williamr@2
  7677
	/** Call set-up will request carrier depending on data speed chosen. */
williamr@2
  7678
		EProtocolUnspecified,
williamr@2
  7679
	/** Call set-up will request the V.22bis standard. */
williamr@2
  7680
		EProtocolV22bis,
williamr@2
  7681
	/** Call set-up will request the V.32 standard. */
williamr@2
  7682
		EProtocolV32,
williamr@2
  7683
	/** Call set-up will request the V.34 standard. */
williamr@2
  7684
		EProtocolV34,
williamr@2
  7685
	/** Call set-up will request the V.110 standard. */
williamr@2
  7686
		EProtocolV110,
williamr@2
  7687
	/** Call set-up will request the V.120 standard. */
williamr@2
  7688
		EProtocolV120,
williamr@2
  7689
	/** Call set-up will request the X31FlagStuffing standard. */
williamr@2
  7690
		EProtocolX31FlagStuffing,
williamr@2
  7691
	/** Call set-up will request the PIAFS standard. */
williamr@2
  7692
		EProtocolPIAFS,
williamr@2
  7693
	/** Call set-up will request the bit transparent service. */
williamr@2
  7694
		EProtocolBitTransparent,
williamr@2
  7695
	/** Call set-up will request a PSTN multimedia call with voice fallback if multimedia 
williamr@2
  7696
	fails.
williamr@2
  7697
	
williamr@2
  7698
	WCDMA mode only. */
williamr@2
  7699
		EProtocolPstnMultimediaVoiceFallback,
williamr@2
  7700
	/** Call set-up will request a PSTN multimedia call.
williamr@2
  7701
	
williamr@2
  7702
	WCDMA mode only. */
williamr@2
  7703
		EProtocolPstnMultimedia,
williamr@2
  7704
	/** Call set-up will request a ISDN multimedia call.
williamr@2
  7705
	
williamr@2
  7706
	WCDMA mode only. */
williamr@2
  7707
		EProtocolIsdnMultimedia
williamr@2
  7708
		};
williamr@2
  7709
williamr@2
  7710
/** The call setup requested data services.
williamr@2
  7711
williamr@2
  7712
Modes: Common
williamr@2
  7713
williamr@2
  7714
@see TMobileDataCallParamsV1 */
williamr@2
  7715
	enum TMobileCallDataService
williamr@2
  7716
		{
williamr@2
  7717
	/** Call set-up will request its default service type.
williamr@2
  7718
	
williamr@2
  7719
	Modes: Common */
williamr@2
  7720
		EServiceUnspecified,
williamr@2
  7721
	/** Call set-up will request:
williamr@2
  7722
	
williamr@2
  7723
	GSM mode - Data circuit asynchronous (UDI or 3.1 KHz, ex PLMN) service 
williamr@2
  7724
williamr@2
  7725
	In CDMA mode - Async Data service 
williamr@2
  7726
	
williamr@2
  7727
	Modes: Common */
williamr@2
  7728
		EServiceDataCircuitAsync,
williamr@2
  7729
	/** Call set-up will request Data circuit asynchronous (RDI) service.
williamr@2
  7730
	
williamr@2
  7731
	Modes: GSM/WCDMA */
williamr@2
  7732
		EServiceDataCircuitAsyncRdi,
williamr@2
  7733
	/** Call set-up will request Data circuit synchronous (UDI or 3.1 KHz, ex PLMN) 
williamr@2
  7734
	service.
williamr@2
  7735
	
williamr@2
  7736
	Modes: GSM/WCDMA */
williamr@2
  7737
		EServiceDataCircuitSync,
williamr@2
  7738
	/** Call set-up will request Data circuit synchronous (RDI) service.
williamr@2
  7739
	
williamr@2
  7740
	Modes: GSM/WCDMA */
williamr@2
  7741
		EServiceDataCircuitSyncRdi,
williamr@2
  7742
	/** Call set-up will request PAD asynchronous (UDI) service.
williamr@2
  7743
	
williamr@2
  7744
	Modes: GSM/WCDMA */
williamr@2
  7745
		EServicePADAsyncUDI,
williamr@2
  7746
	/** Call set-up will request PAD asynchronous (RDI) service.
williamr@2
  7747
	
williamr@2
  7748
	Modes: GSM/WCDMA */
williamr@2
  7749
		EServicePADAsyncRDI,
williamr@2
  7750
	/** Call set-up will request Packet Access synchronous (UDI) service.
williamr@2
  7751
	
williamr@2
  7752
	Modes: GSM/WCDMA */
williamr@2
  7753
		EServicePacketAccessSyncUDI,
williamr@2
  7754
	/** Call set-up will request Packet Access synchronous (RDI) service.
williamr@2
  7755
	
williamr@2
  7756
	Modes: GSM/WCDMA */
williamr@2
  7757
		EServicePacketAccessSyncRDI
williamr@2
  7758
		};
williamr@2
  7759
williamr@2
  7760
/** The call set-up requested quality of service (QoS).
williamr@2
  7761
williamr@2
  7762
Modes: GSM/WCDMA
williamr@2
  7763
williamr@2
  7764
@see TMobileDataCallParamsV1 */
williamr@2
  7765
	enum TMobileCallDataQoS
williamr@2
  7766
		{
williamr@2
  7767
	/** Call set-up will request its default connection. */
williamr@2
  7768
		EQoSUnspecified,
williamr@2
  7769
	/** Call set-up will request a transparent connection. */
williamr@2
  7770
		EQoSTransparent,
williamr@2
  7771
	/** Call set-up will request a non-transparent connection. */
williamr@2
  7772
		EQoSNonTransparent,
williamr@2
  7773
	/** Call set-up will prefer a transparent connection. */
williamr@2
  7774
		EQosTransparentPreferred,
williamr@2
  7775
	/** Call set-up will prefer a non-transparent connection. */
williamr@2
  7776
		EQosNonTransparentPreferred
williamr@2
  7777
		};
williamr@2
  7778
williamr@2
  7779
/** The call set-up requested RLP version.
williamr@2
  7780
williamr@2
  7781
@see TMobileDataCallParamsV1 */
williamr@2
  7782
	enum TMobileCallDataRLPVersion
williamr@2
  7783
		{
williamr@2
  7784
	/** Call set-up will request no RLP version. */
williamr@2
  7785
		ERLPNotRequested,
williamr@2
  7786
	/** Call set-up will request single link basic RLP (version 0). */
williamr@2
  7787
		ERLPSingleLinkVersion0,
williamr@2
  7788
	/** Call set-up will request single link extended RLP (version 1). */
williamr@2
  7789
		ERLPSingleLinkVersion1,
williamr@2
  7790
	/** Call set-up will prefer multi link RLP (version 2). */
williamr@2
  7791
		ERLPMultiLinkVersion2
williamr@2
  7792
		};
williamr@2
  7793
williamr@2
  7794
/** The V.42bis parameters used in the call set-up of a V.42bis data call.
williamr@2
  7795
williamr@2
  7796
@see TMobileDataCallParamsV1 */
williamr@2
  7797
	enum TMobileCallDataV42bis
williamr@2
  7798
		{
williamr@2
  7799
	/** Call set-up will not request V.42bis compression. */
williamr@2
  7800
		EV42bisNeitherDirection,
williamr@2
  7801
	/** Call set-up will request V.42bis compression in initiator-responder direction 
williamr@2
  7802
	only. */
williamr@2
  7803
		EV42bisTxDirection,
williamr@2
  7804
	/** Call set-up will request V.42bis compression in responder-initiator direction 
williamr@2
  7805
	only. */
williamr@2
  7806
		EV42bisRxDirection,
williamr@2
  7807
	/** Call set-up will request V.42bis compression in both directions. */
williamr@2
  7808
		EV42bisBothDirections
williamr@2
  7809
		};
williamr@2
  7810
williamr@2
  7811
	
williamr@2
  7812
	
williamr@2
  7813
williamr@2
  7814
	class TMobileDataCallParamsV1 : public TMobileCallParamsV1
williamr@2
  7815
/** Defines the parameters used for setup of a circuit switched data call. 
williamr@2
  7816
*/
williamr@2
  7817
		{
williamr@2
  7818
	public:
williamr@2
  7819
		IMPORT_C TMobileDataCallParamsV1();
williamr@2
  7820
	public:
williamr@2
  7821
	/** The type of data service.
williamr@2
  7822
	
williamr@2
  7823
	@see TMobileCallDataService */
williamr@2
  7824
		TMobileCallDataService iService;
williamr@2
  7825
	/** The data transfer rate.
williamr@2
  7826
williamr@2
  7827
	@see TMobileCallDataSpeed */
williamr@2
  7828
		TMobileCallDataSpeed iSpeed;
williamr@2
  7829
	/** The ITU-T standard modulation protocol or higher application protocol. */
williamr@2
  7830
		TMobileCallDataProtocol iProtocol;
williamr@2
  7831
	/** The quality of data service.
williamr@2
  7832
	
williamr@2
  7833
	@see TMobileCallDataQoS */
williamr@2
  7834
		TMobileCallDataQoS iQoS;
williamr@2
  7835
	/** The version of Radio Link Protocol.
williamr@2
  7836
	
williamr@2
  7837
	Modes: GSM/WCDMA
williamr@2
  7838
	
williamr@2
  7839
	@see TMobileCallDataRLPVersion */
williamr@2
  7840
		TMobileCallDataRLPVersion iRLPVersion;
williamr@2
  7841
	/** The IWF to MS windows size.
williamr@2
  7842
	
williamr@2
  7843
	Modes: GSM/WCDMA */
williamr@2
  7844
		TInt iModemToMSWindowSize;
williamr@2
  7845
	/** The MS window to IWF size.
williamr@2
  7846
	
williamr@2
  7847
	Modes: GSM/WCDMA */
williamr@2
  7848
		TInt iMSToModemWindowSize;
williamr@2
  7849
	/** The acknowledgement timer.
williamr@2
  7850
	
williamr@2
  7851
	Modes: GSM/WCDMA */
williamr@2
  7852
		TInt iAckTimer;
williamr@2
  7853
	/** The number of retransmission attempts.
williamr@2
  7854
	
williamr@2
  7855
	Modes: GSM/WCDMA */
williamr@2
  7856
		TInt iRetransmissionAttempts;
williamr@2
  7857
	/** The resequencing period in integer format.
williamr@2
  7858
	
williamr@2
  7859
	Modes: GSM/WCDMA */
williamr@2
  7860
		TInt iResequencingPeriod;
williamr@2
  7861
	/** The V42bis compression request parameter.
williamr@2
  7862
	
williamr@2
  7863
	@see TMobileCallDataV42bis */
williamr@2
  7864
		TMobileCallDataV42bis iV42bisReq;
williamr@2
  7865
	/** The number of codewords in the algorithm. */
williamr@2
  7866
		TInt iV42bisCodewordsNum;
williamr@2
  7867
	/** The maximum encodable data string length. */
williamr@2
  7868
		TInt iV42bisMaxStringLength;
williamr@2
  7869
		TBool iUseEdge; // True for ECSD
williamr@2
  7870
		};
williamr@2
  7871
williamr@2
  7872
/** A typedef'd packaged TMobileDataCallParamsV1 for passing through a generic API 
williamr@2
  7873
function member. */
williamr@2
  7874
	typedef TPckg<TMobileDataCallParamsV1> TMobileDataCallParamsV1Pckg;
williamr@2
  7875
williamr@2
  7876
	class TMobileDataCallParamsV2 : public TMobileDataCallParamsV1
williamr@2
  7877
/** Defines the parameters used for setup of a circuit switched data call for version 
williamr@2
  7878
v2.0 of the API. 
williamr@2
  7879
*/
williamr@2
  7880
		{
williamr@2
  7881
	public:
williamr@2
  7882
		IMPORT_C TMobileDataCallParamsV2();
williamr@2
  7883
	public:
williamr@2
  7884
	/** The bearer mode. */
williamr@2
  7885
		TMobileCallMulticallBearerMode iBearerMode;
williamr@2
  7886
		};
williamr@2
  7887
williamr@2
  7888
/** A typedef'd packaged TMobileDataCallParamsV2 for passing through a generic 
williamr@2
  7889
API function member. */
williamr@2
  7890
	typedef TPckg<TMobileDataCallParamsV2> TMobileDataCallParamsV2Pckg;
williamr@2
  7891
williamr@2
  7892
	class TMobileDataCallParamsV8 : public TMobileDataCallParamsV2
williamr@2
  7893
	/** Defines the parameters used for setup of a circuit switched data call for version 
williamr@2
  7894
	v8.0 of the API. 
williamr@2
  7895
	*/
williamr@2
  7896
		{
williamr@2
  7897
	public:
williamr@2
  7898
		IMPORT_C TMobileDataCallParamsV8();
williamr@2
  7899
	public:
williamr@2
  7900
	/** The origin of the call.
williamr@2
  7901
		
williamr@2
  7902
		@see TCallParamOrigin */
williamr@2
  7903
		TCallParamOrigin iCallParamOrigin;
williamr@2
  7904
	
williamr@2
  7905
	/** The sub-address of the remote party.
williamr@2
  7906
	 	
williamr@2
  7907
	 	@see TSubAddress */
williamr@2
  7908
		TSubAddress iSubAddress;
williamr@2
  7909
	
williamr@2
  7910
	/** Capability configuration parameters for the first bearer. 	 	
williamr@2
  7911
		
williamr@2
  7912
		@see TCcp */
williamr@2
  7913
		TCcp iBearerCap1;
williamr@2
  7914
	
williamr@2
  7915
	/** Capability configuration parameters for the second bearer.
williamr@2
  7916
		
williamr@2
  7917
		@see TCcp */
williamr@2
  7918
		TCcp iBearerCap2;
williamr@2
  7919
	
williamr@2
  7920
	/** The bearer capability repeat indicator. 
williamr@2
  7921
		
williamr@2
  7922
		@see TBCRepeatIndicator */
williamr@2
  7923
		TBCRepeatIndicator iBCRepeatIndicator;
williamr@2
  7924
	
williamr@2
  7925
	/**	The icon identifier of the icon to display.  
williamr@2
  7926
		This can be used, for example, to provide 
williamr@2
  7927
		graphical notification that the call is taking place.
williamr@2
  7928
		 
williamr@2
  7929
		@see TIconQualifier
williamr@2
  7930
		*/	 	
williamr@2
  7931
		TIconId iIconId;
williamr@2
  7932
		
williamr@2
  7933
	/** Buffer to hold the alpha identifier.  This is used to describe
williamr@2
  7934
		the icon stored in iIconId if iIconId.iQualifier is set to
williamr@2
  7935
		RMobileCall::ENotSelfExplanatory, 
williamr@2
  7936
		RMobileCall::EIconQualifierNotSet or 
williamr@2
  7937
		*/
williamr@2
  7938
	 	TAlphaIdBuf iAlphaId;
williamr@2
  7939
		};
williamr@2
  7940
williamr@2
  7941
/** A typedef'd packaged TMobileDataCallParamsV8 for passing through a generic 
williamr@2
  7942
API function member. */
williamr@2
  7943
	typedef TPckg<TMobileDataCallParamsV8> TMobileDataCallParamsV8Pckg;
williamr@2
  7944
	
williamr@2
  7945
/** The Air interface user rate.
williamr@2
  7946
williamr@2
  7947
Modes: GSM/WCDMA. */
williamr@2
  7948
	enum TMobileCallAiur
williamr@2
  7949
		{
williamr@2
  7950
	/** Air interface user rate is not set. */
williamr@2
  7951
		EAiurBpsUnspecified,
williamr@2
  7952
	/** Air interface user rate of 9.6Kbps. */
williamr@2
  7953
		EAiurBps9600,
williamr@2
  7954
	/** Air interface user rate of 14.4Kbps. */
williamr@2
  7955
		EAiurBps14400,
williamr@2
  7956
	/** Air interface user rate of 19.2Kbps. */
williamr@2
  7957
		EAiurBps19200,
williamr@2
  7958
	/** Air interface user rate of 28.8Kbps. */
williamr@2
  7959
		EAiurBps28800,
williamr@2
  7960
	/** Air interface user rate of 38.4Kbps. */
williamr@2
  7961
		EAiurBps38400,
williamr@2
  7962
	/** Air interface user rate of 43.2Kbps. */
williamr@2
  7963
		EAiurBps43200,
williamr@2
  7964
	/** Air interface user rate of 57.6Kbps. */
williamr@2
  7965
		EAiurBps57600
williamr@2
  7966
		};
williamr@2
  7967
williamr@2
  7968
/** Call Asymmetry preferences.
williamr@2
  7969
williamr@2
  7970
Modes: GSM/WCDMA
williamr@2
  7971
williamr@2
  7972
@see TMobileHscsdCallParamsV1 */
williamr@2
  7973
	enum TMobileCallAsymmetry
williamr@2
  7974
		{
williamr@2
  7975
	/** There is no preference for Asymmetry Bias. */
williamr@2
  7976
		EAsymmetryNoPreference,
williamr@2
  7977
	/** Downlink Bias is preferred. */
williamr@2
  7978
		EAsymmetryDownlink,
williamr@2
  7979
	/** Uplink Bias is preferred. */
williamr@2
  7980
		EAsymmetryUplink
williamr@2
  7981
		};
williamr@2
  7982
williamr@2
  7983
/** The call channel coding used.
williamr@2
  7984
williamr@2
  7985
Modes: GSM/WCDMA */
williamr@2
  7986
	enum TMobileCallTchCoding
williamr@2
  7987
		{
williamr@2
  7988
	/** Channel coding is unspecified. */
williamr@2
  7989
		ETchCodingUnspecified,
williamr@2
  7990
	/** 4.8K full rate data traffic channel is used. */
williamr@2
  7991
		ETchCoding48,
williamr@2
  7992
	/** 9.6K full rate data traffic channel is used. */
williamr@2
  7993
		ETchCoding96,
williamr@2
  7994
	/** 14.4K full rate data traffic channel is used. */
williamr@2
  7995
		ETchCoding144,
williamr@2
  7996
	/** 28.8K full rate data traffic channel is used. */
williamr@2
  7997
		ETchCoding288,
williamr@2
  7998
	/** 32.0K full rate data traffic channel is used. */
williamr@2
  7999
		ETchCoding320,
williamr@2
  8000
	/** 43.2K full rate data traffic channel is used. */
williamr@2
  8001
		ETchCoding432
williamr@2
  8002
		};
williamr@2
  8003
williamr@2
  8004
	
williamr@2
  8005
williamr@2
  8006
	class TMobileDataRLPRangesV1 : public RMobilePhone::TMultimodeType
williamr@2
  8007
/** Defines the parameters for minimum and maximum RLP parameter ranges.
williamr@2
  8008
williamr@2
  8009
Modes: GSM/WCDMA 
williamr@2
  8010
williamr@2
  8011
*/
williamr@2
  8012
		{
williamr@2
  8013
	public:
williamr@2
  8014
		IMPORT_C TMobileDataRLPRangesV1();
williamr@2
  8015
	public:
williamr@2
  8016
	/** Maximum modem to MS window size value. */
williamr@2
  8017
		TInt  iIWSMax;
williamr@2
  8018
	/** Minimum modem to MS window size value. */
williamr@2
  8019
		TInt  iIWSMin;
williamr@2
  8020
	/** Maximum MS to modem window size value. */
williamr@2
  8021
		TInt  iMWSMax;
williamr@2
  8022
	/** Minimum MS to modem window size value. */
williamr@2
  8023
		TInt  iMWSMin;
williamr@2
  8024
	/** Maximum acknowledgement timer value. */
williamr@2
  8025
		TInt  iT1Max;
williamr@2
  8026
	/** Minimum acknowledgement timer value. */
williamr@2
  8027
		TInt  iT1Min;
williamr@2
  8028
	/** Maximum retransmission attempts value. */
williamr@2
  8029
		TInt  iN2Max;
williamr@2
  8030
	/** Minimum retransmission attempts value. */
williamr@2
  8031
		TInt  iN2Min;
williamr@2
  8032
	/** Maximum resequencing period value. */
williamr@2
  8033
		TInt  iT4Max;
williamr@2
  8034
	/** Minimum resequencing period value. */
williamr@2
  8035
		TInt  iT4Min;
williamr@2
  8036
		};
williamr@2
  8037
williamr@2
  8038
/** A typedef'd packaged TMobileDataRLPRangesV1 for passing through a generic API 
williamr@2
  8039
function member. */
williamr@2
  8040
	typedef TPckg<TMobileDataRLPRangesV1> TMobileDataRLPRangesV1Pckg;
williamr@2
  8041
williamr@2
  8042
	IMPORT_C void GetMobileDataCallRLPRange(TRequestStatus& aReqStatus, TInt aRLPVersion, TDes8& aRLPRange) const;
williamr@2
  8043
	
williamr@2
  8044
	class TMobileHscsdCallParamsV1 : public TMobileDataCallParamsV1
williamr@2
  8045
/** The High Speed Circuit Switched Data parameters. 
williamr@2
  8046
*/
williamr@2
  8047
		{
williamr@2
  8048
	public:
williamr@2
  8049
		IMPORT_C TMobileHscsdCallParamsV1();
williamr@2
  8050
	public:
williamr@2
  8051
	/** The wanted Air Interface Rate for the HSCSD call being set-up.
williamr@2
  8052
	
williamr@2
  8053
	Modes: GSM/WCDMA
williamr@2
  8054
williamr@2
  8055
	@see TMobileCallAiur */
williamr@2
  8056
		TMobileCallAiur	iWantedAiur;
williamr@2
  8057
	/** The wanted number of receive timeslots for the HSCSD call being set-up.
williamr@2
  8058
	
williamr@2
  8059
	Modes: GSM/WCDMA */
williamr@2
  8060
		TInt iWantedRxTimeSlots;
williamr@2
  8061
		TInt iMaxTimeSlots;
williamr@2
  8062
	/** Bit-wise sum of acceptable air interface channel codings TMobileCallAiurCodingCaps 
williamr@2
  8063
	for the HSCSD call being set-up.
williamr@2
  8064
	
williamr@2
  8065
	Modes: GSM/WCDMA */
williamr@2
  8066
		TUint iCodings;
williamr@2
  8067
	/** The wanted asymmetry bias for the HSCSD call being set-up.
williamr@2
  8068
	
williamr@2
  8069
	Modes: GSM/WCDMA
williamr@2
  8070
	
williamr@2
  8071
	@see TMobileCallAsymmetry */
williamr@2
  8072
		TMobileCallAsymmetry  iAsymmetry;
williamr@2
  8073
	/** A boolean indicating whether or not automatic user initiated service level upgrading 
williamr@2
  8074
	is active for the HSCSD call being set-up. ETrue means enabled, EFalse means 
williamr@2
  8075
	disabled.
williamr@2
  8076
	
williamr@2
  8077
	Modes: GSM/WCDMA */
williamr@2
  8078
		TBool iUserInitUpgrade;
williamr@2
  8079
		};
williamr@2
  8080
williamr@2
  8081
/** A typedef'd packaged TMobileHscsdCallParamsV1 for passing through a generic 
williamr@2
  8082
API function member. */
williamr@2
  8083
	typedef TPckg<TMobileHscsdCallParamsV1> TMobileHscsdCallParamsV1Pckg;
williamr@2
  8084
williamr@2
  8085
	class TMobileHscsdCallParamsV2 : public TMobileHscsdCallParamsV1
williamr@2
  8086
/** Call parameters for High Speed Circuit Switched Data (HSCSD) for version v2.0 
williamr@2
  8087
of the API. 
williamr@2
  8088
williamr@2
  8089
*/
williamr@2
  8090
		{
williamr@2
  8091
	public:
williamr@2
  8092
		IMPORT_C TMobileHscsdCallParamsV2();
williamr@2
  8093
	public:
williamr@2
  8094
	/** The bearer mode. */
williamr@2
  8095
		TMobileCallMulticallBearerMode iBearerMode;
williamr@2
  8096
		};
williamr@2
  8097
williamr@2
  8098
/** A typedef'd packaged TMobileHscsdCallParamsV2 for passing through a generic 
williamr@2
  8099
API function member. */
williamr@2
  8100
	typedef TPckg<TMobileHscsdCallParamsV2> TMobileHscsdCallParamsV2Pckg;
williamr@2
  8101
williamr@2
  8102
	
williamr@2
  8103
	class TMobileHscsdCallParamsV7 : public TMobileHscsdCallParamsV2
williamr@2
  8104
	/** Call parameters for High Speed Circuit Switched Data (HSCSD) for version v7.0
williamr@2
  8105
	of the API. 
williamr@2
  8106
	*/
williamr@2
  8107
			{
williamr@2
  8108
		public:
williamr@2
  8109
			IMPORT_C TMobileHscsdCallParamsV7();
williamr@2
  8110
		public:
williamr@2
  8111
			/** The originator of the call. */
williamr@2
  8112
			TCallParamOrigin iCallParamOrigin;
williamr@2
  8113
	 		/**
williamr@2
  8114
	 		 The icon identifier of the icon to display.  
williamr@2
  8115
	 		 This can be used, for example, to provide 
williamr@2
  8116
	 		 graphical notification that the call is taking place.
williamr@2
  8117
	 		 
williamr@2
  8118
	 		 @see TIconQualifier
williamr@2
  8119
	 		 */	 	
williamr@2
  8120
	 		TIconId iIconId;
williamr@2
  8121
	 		/**
williamr@2
  8122
	 		 Buffer to hold the alpha identifier.  This is used to describe
williamr@2
  8123
	 		 the icon stored in iIconId if iIconId.iQualifier is set to
williamr@2
  8124
	 		 RMobileCall::ENotSelfExplanatory, 
williamr@2
  8125
	 		 RMobileCall::EIconQualifierNotSet or 
williamr@2
  8126
	 		 RMobileCall::ENoIconId.
williamr@2
  8127
	 		 */
williamr@2
  8128
		 	TAlphaIdBuf iAlphaId;
williamr@2
  8129
			};
williamr@2
  8130
williamr@2
  8131
	/** A typedef'd packaged TMobileHscsdCallParamsV7 for passing through a generic 
williamr@2
  8132
	API function member. */
williamr@2
  8133
	typedef TPckg<TMobileHscsdCallParamsV7> TMobileHscsdCallParamsV7Pckg;
williamr@2
  8134
	
williamr@2
  8135
	class TMobileHscsdCallParamsV8 : public TMobileHscsdCallParamsV7
williamr@2
  8136
		/** Call parameters for High Speed Circuit Switched Data (HSCSD) for version v8.0
williamr@2
  8137
		of the API. 
williamr@2
  8138
		*/
williamr@2
  8139
			{
williamr@2
  8140
		public:
williamr@2
  8141
			IMPORT_C TMobileHscsdCallParamsV8();
williamr@2
  8142
		public:
williamr@2
  8143
		
williamr@2
  8144
			/** The sub-address of the remote party.
williamr@2
  8145
				
williamr@2
  8146
			@see TSubAddress */
williamr@2
  8147
			TSubAddress iSubAddress;
williamr@2
  8148
			
williamr@2
  8149
	 		/** Capability configuration parameters for the first bearer. 
williamr@2
  8150
			
williamr@2
  8151
			@see TCcp */
williamr@2
  8152
	 		TCcp iBearerCap1;
williamr@2
  8153
	 		
williamr@2
  8154
	 		/** Capability configuration parameters for the second bearer. 	
williamr@2
  8155
	 		
williamr@2
  8156
	 		@see TCcp */
williamr@2
  8157
	 		TCcp iBearerCap2;
williamr@2
  8158
	 		
williamr@2
  8159
	 		/** The bearer capability repeat indicator. 
williamr@2
  8160
	 		
williamr@2
  8161
	 		@see TBCRepeatIndicator */
williamr@2
  8162
		 	TBCRepeatIndicator iBCRepeatIndicator;
williamr@2
  8163
			};
williamr@2
  8164
williamr@2
  8165
	/** A typedef'd packaged TMobileHscsdCallParamsV8 for passing through a generic 
williamr@2
  8166
	API function member. */
williamr@2
  8167
	typedef TPckg<TMobileHscsdCallParamsV8> TMobileHscsdCallParamsV8Pckg;
williamr@2
  8168
	
williamr@2
  8169
	IMPORT_C void SetDynamicHscsdParams(TRequestStatus& aReqStatus, TMobileCallAiur aAiur, TInt aRxTimeslots) const;
williamr@2
  8170
williamr@2
  8171
	class TMobileCallHscsdInfoV1 : public RMobilePhone::TMultimodeType
williamr@2
  8172
/** The HSCSD settings.
williamr@2
  8173
williamr@2
  8174
Modes: GSM/WCDMA 
williamr@2
  8175
williamr@2
  8176
*/
williamr@2
  8177
		{
williamr@2
  8178
	public:
williamr@2
  8179
		IMPORT_C TMobileCallHscsdInfoV1();
williamr@2
  8180
	public:
williamr@2
  8181
	/** Current AIUR for the HSCSD call.
williamr@2
  8182
	
williamr@2
  8183
	@see TMobileCallAiur */
williamr@2
  8184
		TMobileCallAiur	iAiur;
williamr@2
  8185
	/** Current number of receive timeslots for the HSCSD call. */
williamr@2
  8186
		TInt iRxTimeSlots;
williamr@2
  8187
	/** Current number of transmit time slots for the HSCSD call. */
williamr@2
  8188
		TInt iTxTimeSlots;
williamr@2
  8189
	/** Current channel coding for the HSCSD call. */
williamr@2
  8190
		TMobileCallTchCoding iCodings;
williamr@2
  8191
		};
williamr@2
  8192
williamr@2
  8193
/** A typedef'd packaged TMobileCallHscsdInfoV1 for passing through a generic API 
williamr@2
  8194
function member. */
williamr@2
  8195
	typedef TPckg<TMobileCallHscsdInfoV1> TMobileCallHscsdInfoV1Pckg;
williamr@2
  8196
williamr@2
  8197
	class TMobileCallHscsdInfoV7 : public TMobileCallHscsdInfoV1
williamr@2
  8198
	/** Version 7 of the HSCSD settings.
williamr@2
  8199
williamr@2
  8200
	Modes: GSM/WCDMA 
williamr@2
  8201
	*/
williamr@2
  8202
			{
williamr@2
  8203
		public:
williamr@2
  8204
			IMPORT_C TMobileCallHscsdInfoV7();
williamr@2
  8205
		public:
williamr@2
  8206
			/** The originator of the call. */
williamr@2
  8207
			TCallParamOrigin iCallParamOrigin;
williamr@2
  8208
	    	/**
williamr@2
  8209
	    	The icon identifier which can be used for indication that the 
williamr@2
  8210
	    	call is being made.
williamr@2
  8211
	     	*/
williamr@2
  8212
	    	TIconId iIconId;
williamr@2
  8213
	    	/**
williamr@2
  8214
	    	The alpha identifier to describe the icon.
williamr@2
  8215
	     	*/
williamr@2
  8216
	    	TAlphaIdBuf iAlphaId;
williamr@2
  8217
	    	/**
williamr@2
  8218
	    	An indication of whether the call parameters have been modified.  
williamr@2
  8219
	    	Set to ETrue if they have been modified, EFalse otherwise.
williamr@2
  8220
	     	*/
williamr@2
  8221
	    	TBool iParamsCallControlModified;
williamr@2
  8222
			};
williamr@2
  8223
williamr@2
  8224
	/** A typedef'd packaged TMobileCallHscsdInfoV7 for passing through a generic API 
williamr@2
  8225
function member. */
williamr@2
  8226
	typedef TPckg<TMobileCallHscsdInfoV7> TMobileCallHscsdInfoV7Pckg;		
williamr@2
  8227
	
williamr@2
  8228
	class TMobileCallHscsdInfoV8 : public TMobileCallHscsdInfoV7
williamr@2
  8229
	/** Version 8 of the HSCSD settings.
williamr@2
  8230
williamr@2
  8231
	Modes: GSM/WCDMA 
williamr@2
  8232
	*/
williamr@2
  8233
			{
williamr@2
  8234
		public:
williamr@2
  8235
			IMPORT_C TMobileCallHscsdInfoV8();
williamr@2
  8236
		public:
williamr@2
  8237
		
williamr@2
  8238
			/** The sub-address of the remote party.
williamr@2
  8239
				
williamr@2
  8240
			@see TSubAddress */
williamr@2
  8241
			TSubAddress iSubAddress;
williamr@2
  8242
			
williamr@2
  8243
	 		/** Capability configuration parameters for the first bearer. 
williamr@2
  8244
			
williamr@2
  8245
			@see TCcp */
williamr@2
  8246
	 		TCcp iBearerCap1;
williamr@2
  8247
	 		
williamr@2
  8248
	 		/** Capability configuration parameters for the second bearer. 	
williamr@2
  8249
	 		
williamr@2
  8250
	 		@see TCcp */
williamr@2
  8251
	 		TCcp iBearerCap2;
williamr@2
  8252
	 		
williamr@2
  8253
	 		/** The bearer capability repeat indicator. 
williamr@2
  8254
	 		
williamr@2
  8255
	 		@see TBCRepeatIndicator */
williamr@2
  8256
		 	TBCRepeatIndicator iBCRepeatIndicator;
williamr@2
  8257
			};
williamr@2
  8258
williamr@2
  8259
	/** A typedef'd packaged TMobileCallHscsdInfoV8 for passing through a generic 
williamr@2
  8260
	API function member. */
williamr@2
  8261
	typedef TPckg<TMobileCallHscsdInfoV8> TMobileCallHscsdInfoV8Pckg;	
williamr@2
  8262
	
williamr@2
  8263
	
williamr@2
  8264
	IMPORT_C TInt GetCurrentHscsdInfo(TDes8& aHSCSDInfo) const;
williamr@2
  8265
	IMPORT_C void NotifyHscsdInfoChange(TRequestStatus& aReqStatus, TDes8& aHSCSDInfo) const;
williamr@2
  8266
williamr@2
  8267
	/***********************************************************************************/
williamr@2
  8268
	//
williamr@2
  8269
	// Multimedia Calls
williamr@2
  8270
	//
williamr@2
  8271
	/***********************************************************************************/
williamr@2
  8272
williamr@2
  8273
	IMPORT_C void AnswerMultimediaCallAsVoice(TRequestStatus& aReqStatus, const TDesC8& aCallParams, TName& aCallName) const;
williamr@2
  8274
	IMPORT_C void NotifyVoiceFallback(TRequestStatus& aReqStatus, TName& aCallName) const;
williamr@2
  8275
williamr@2
  8276
	//
williamr@2
  8277
	// Mobile Alternating Call Functional Unit
williamr@2
  8278
	//
williamr@2
  8279
williamr@2
  8280
	IMPORT_C void SwitchAlternatingCall(TRequestStatus& aReqStatus) const;
williamr@2
  8281
	IMPORT_C void NotifyAlternatingCallSwitch(TRequestStatus& aReqStatus) const;
williamr@2
  8282
williamr@2
  8283
	/***********************************************************************************/
williamr@2
  8284
	//
williamr@2
  8285
	// MobileCallControl functional unit
williamr@2
  8286
	//
williamr@2
  8287
	/***********************************************************************************/
williamr@2
  8288
williamr@2
  8289
/** Mobile call control capabilites.
williamr@2
  8290
williamr@2
  8291
Modes: Common */
williamr@2
  8292
	enum TMobileCallControlCaps 
williamr@2
  8293
		{
williamr@2
  8294
		//KCapsData=0x00000001, // taken from etel.h
williamr@2
  8295
		//KCapsFax=0x00000002,
williamr@2
  8296
		//KCapsVoice=0x00000004,
williamr@2
  8297
		//KCapsDial=0x00000008,
williamr@2
  8298
		//KCapsConnect=0x00000010,
williamr@2
  8299
		//KCapsHangUp=0x00000020,
williamr@2
  8300
		//KCapsAnswer=0x00000040,
williamr@2
  8301
		//KCapsLoanDataPort=0x00000080, 
williamr@2
  8302
		//KCapsRecoverDataPort=0x00000100
williamr@2
  8303
	/** Indicates that this call can be put on hold. This implies that the call is currently 
williamr@2
  8304
	active and that there is no other held call. */
williamr@2
  8305
		KCapsHold = 0x00000200,
williamr@2
  8306
	/** Indicates that this call can be resumed. This implies that the call is currently 
williamr@2
  8307
	on hold and that there is no other active call. 
williamr@2
  8308
	
williamr@2
  8309
	Modes: Common */
williamr@2
  8310
		KCapsResume = 0x00000400,
williamr@2
  8311
	/** Indicates that this call's state can be swapped to the opposite state. This
williamr@2
  8312
	implies that this call is either active or held. There may be another call 
williamr@2
  8313
	in the opposite state and if this is the case then both calls will be simultaneously 
williamr@2
  8314
	swapped to their opposite state. 
williamr@2
  8315
	
williamr@2
  8316
	Modes: Common */
williamr@2
  8317
		KCapsSwap = 0x00000800,
williamr@2
  8318
	/** Indicates that this incoming call can be deflected to another destination. 
williamr@2
  8319
	
williamr@2
  8320
	Modes: GSM/WCDMA */
williamr@2
  8321
		KCapsDeflect = 0x00001000,
williamr@2
  8322
	/** Indicates that this call can be transferred to the remote party of another call. 
williamr@2
  8323
	For this capability to be set there must be one active call and one held or 
williamr@2
  8324
	dialing call.
williamr@2
  8325
	
williamr@2
  8326
	Modes: GSM/WCDMA */
williamr@2
  8327
		KCapsTransfer = 0x00002000,
williamr@2
  8328
	/** Indicates that this call can be joined either to another single call to form 
williamr@2
  8329
	a conference call or to an existing conference call.
williamr@2
  8330
	
williamr@2
  8331
	Modes: Common */
williamr@2
  8332
		KCapsJoin = 0x00004000,
williamr@2
  8333
	/** Indicates that this call (within a conference call) can go into One to One mode. 
williamr@2
  8334
	This action would put the rest of the conference call on hold. 
williamr@2
  8335
	
williamr@2
  8336
	Modes: GSM/WCDMA */
williamr@2
  8337
		KCapsOneToOne = 0x00008000,
williamr@2
  8338
	/** Indicates that the user can activate a CCBS request on this failed call set-up. 
williamr@2
  8339
	
williamr@2
  8340
	Modes: GSM/WCDMA */
williamr@2
  8341
		KCapsActivateCCBS = 0x00010000,
williamr@2
  8342
	/** Indicates that this call is part of an alternating call and the client can call 
williamr@2
  8343
	SwitchAlternatingCall() on this call in order to switch it to its other mode.
williamr@2
  8344
	
williamr@2
  8345
	Modes: GSM/WCDMA */
williamr@2
  8346
		KCapsSwitchAlternatingCall = 0x00020000,
williamr@2
  8347
	/** Indicates that this call can use/create a new bearer. This means that multiple 
williamr@2
  8348
	calls (multicall) can be active at the same time using no more that 7 bearers 
williamr@2
  8349
	simultaneously. The other option is to swap with an active call, therefore 
williamr@2
  8350
	it becomes held and shares the same bearer.
williamr@2
  8351
	
williamr@2
  8352
	Modes: WCDMA */
williamr@2
  8353
		KCapsMulticall = 0x00040000
williamr@2
  8354
		};
williamr@2
  8355
williamr@2
  8356
williamr@2
  8357
/** Mobile call events capabilities.
williamr@2
  8358
williamr@2
  8359
Modes: Common */
williamr@2
  8360
	enum TMobileCallEventCaps
williamr@2
  8361
		{
williamr@2
  8362
	/** Indicates that local hold notifications are supported.
williamr@2
  8363
	
williamr@2
  8364
	Modes: Common */
williamr@2
  8365
		KCapsLocalHold = 0x00000001,
williamr@2
  8366
	/** Indicates that local resume notifications are supported. 
williamr@2
  8367
	
williamr@2
  8368
	Modes: Common */
williamr@2
  8369
		KCapsLocalResume = 0x00000002,
williamr@2
  8370
	/** Indicates that local deflect transfer notifications are supported. 
williamr@2
  8371
	
williamr@2
  8372
	Modes: GSM/WCDMA */
williamr@2
  8373
		KCapsLocalDeflectCall = 0x00000004,
williamr@2
  8374
	/** Indicates that local explicit transfer notifications are supported. 
williamr@2
  8375
	
williamr@2
  8376
	Modes: GSM/WCDMA */
williamr@2
  8377
		KCapsLocalTransfer = 0x00000008,
williamr@2
  8378
	/** Indicates that remote hold notifications are supported. 
williamr@2
  8379
williamr@2
  8380
	Modes: GSM/WCDMA */
williamr@2
  8381
		KCapsRemoteHold = 0x00000010,
williamr@2
  8382
	/** Indicates that remote resume notifications are supported. 
williamr@2
  8383
	
williamr@2
  8384
	Modes: GSM/WCDMA */
williamr@2
  8385
		KCapsRemoteResume = 0x00000020,
williamr@2
  8386
	/** Indicates that remote termination notifications are supported. 
williamr@2
  8387
	
williamr@2
  8388
	Modes: Common */
williamr@2
  8389
		KCapsRemoteTerminate = 0x00000040,
williamr@2
  8390
	/** Indicates that remote conference invocation notifications are supported.
williamr@2
  8391
	
williamr@2
  8392
	Modes: GSM/WCDMA */
williamr@2
  8393
		KCapsRemoteConferenceCreate = 0x00000080
williamr@2
  8394
		};
williamr@2
  8395
williamr@2
  8396
	
williamr@2
  8397
williamr@2
  8398
	class TMobileCallCapsV1 : public RMobilePhone::TMultimodeType
williamr@2
  8399
/** Defines the dynamic capabilities of a mobile call. 
williamr@2
  8400
*/
williamr@2
  8401
		{
williamr@2
  8402
	public:
williamr@2
  8403
		IMPORT_C TMobileCallCapsV1();
williamr@2
  8404
	public:
williamr@2
  8405
	/** Call control capability information - a bit wise sum of TMobileCallControlCaps 
williamr@2
  8406
	constants */
williamr@2
  8407
		TUint32 iCallControlCaps;
williamr@2
  8408
	/** Call event capability information - a bit wise sum of TMobileCallEventCaps constants. */
williamr@2
  8409
		TUint32 iCallEventCaps;
williamr@2
  8410
		};
williamr@2
  8411
williamr@2
  8412
/** A typedef'd packaged TMobileCallCapsV1 for passing through a generic API function 
williamr@2
  8413
member. */
williamr@2
  8414
	typedef TPckg<TMobileCallCapsV1> TMobileCallCapsV1Pckg;
williamr@2
  8415
williamr@2
  8416
	IMPORT_C TInt GetMobileCallCaps(TDes8& aCaps) const;
williamr@2
  8417
	IMPORT_C void NotifyMobileCallCapsChange(TRequestStatus& aReqStatus, TDes8& aCaps) const;
williamr@2
  8418
williamr@2
  8419
	IMPORT_C void Hold(TRequestStatus& aReqStatus) const;
williamr@2
  8420
	IMPORT_C void Resume(TRequestStatus& aReqStatus) const;
williamr@2
  8421
	IMPORT_C void Swap(TRequestStatus& aReqStatus) const;
williamr@2
  8422
	IMPORT_C void DialISV(TRequestStatus& aStatus,const TDesC8& aCallParams,const TTelNumberC& aTelNumber);
williamr@2
  8423
	IMPORT_C void AnswerIncomingCallISV(TRequestStatus& aStatus,const TDesC8& aCallParams);
williamr@2
  8424
williamr@2
  8425
/** The type of call deflection requested.
williamr@2
  8426
williamr@2
  8427
@see Deflect() */
williamr@2
  8428
	enum TMobileCallDeflect
williamr@2
  8429
		{
williamr@2
  8430
	/** Destination is not specified. */
williamr@2
  8431
		EDeflectUnspecified,
williamr@2
  8432
	/** Call will be deflected to voicemail. */
williamr@2
  8433
		EDeflectVoicemail,
williamr@2
  8434
	/** Call will be deflected to the pre-registered number for the call forwarding 
williamr@2
  8435
	service. */
williamr@2
  8436
		EDeflectRegisteredNumber,
williamr@2
  8437
	/** Call will be deflected to the number supplied in the aDestination parameter. */
williamr@2
  8438
		EDeflectSuppliedNumber
williamr@2
  8439
		};
williamr@2
  8440
williamr@2
  8441
	IMPORT_C void Deflect(TRequestStatus& aReqStatus, TMobileCallDeflect aDeflectType, const RMobilePhone::TMobileAddress& aDestination) const;
williamr@2
  8442
	IMPORT_C void Transfer(TRequestStatus& aReqStatus) const;
williamr@2
  8443
	IMPORT_C void GoOneToOne(TRequestStatus& aReqStatus) const;
williamr@2
  8444
williamr@2
  8445
/** The mobile call events.
williamr@2
  8446
williamr@2
  8447
Modes: Common */
williamr@2
  8448
	enum TMobileCallEvent
williamr@2
  8449
		{
williamr@2
  8450
	/** The call has been placed on hold as a result of a local action. 
williamr@2
  8451
	
williamr@2
  8452
	Modes: Common */
williamr@2
  8453
		ELocalHold,
williamr@2
  8454
	/** The call has been resumed as a result of a local action. 
williamr@2
  8455
	
williamr@2
  8456
	Modes: Common */
williamr@2
  8457
		ELocalResume,
williamr@2
  8458
	/** The call has been deflected to another remote party as a result of a local action. 
williamr@2
  8459
	
williamr@2
  8460
	
williamr@2
  8461
	Modes: GSM/WCDMA */
williamr@2
  8462
		ELocalDeflectCall,
williamr@2
  8463
	/** The call has been transferred to another remote party as a result of a local 
williamr@2
  8464
	action. 
williamr@2
  8465
	
williamr@2
  8466
	Modes: Common */
williamr@2
  8467
		ELocalTransfer,
williamr@2
  8468
	/** The call has been placed on hold by the remote connected party. 
williamr@2
  8469
	
williamr@2
  8470
	Modes: GSM/WCDMA */
williamr@2
  8471
		ERemoteHold,
williamr@2
  8472
	/** The call has been resumed by the remote connected party. 
williamr@2
  8473
	
williamr@2
  8474
	Modes: GSM/WCDMA */
williamr@2
  8475
		ERemoteResume,
williamr@2
  8476
	/** The call has been terminated by the remote party. 
williamr@2
  8477
	
williamr@2
  8478
	Modes: Common */
williamr@2
  8479
		ERemoteTerminated,
williamr@2
  8480
	/** The call has been joined by the remote connected party to other call(s) to create/add 
williamr@2
  8481
	to a conference call. 
williamr@2
  8482
	
williamr@2
  8483
	Modes: GSM/WCDMA */
williamr@2
  8484
		ERemoteConferenceCreate,
williamr@2
  8485
		ERemoteTransferring,
williamr@2
  8486
		ERemoteTransferAlerting,
williamr@2
  8487
	/** The outgoing call has been barred by the remote party. 
williamr@2
  8488
	
williamr@2
  8489
	Modes: GSM/WCDMA */
williamr@2
  8490
		ERemoteBarred,
williamr@2
  8491
	/** The call is being forwarded by the remote party. 
williamr@2
  8492
	
williamr@2
  8493
	Modes: GSM/WCDMA */
williamr@2
  8494
		ERemoteForwarding,
williamr@2
  8495
	/** The call is waiting at the remote end. 
williamr@2
  8496
	
williamr@2
  8497
	Modes: GSM/WCDMA */
williamr@2
  8498
		ERemoteWaiting,
williamr@2
  8499
	/** The outgoing call has been barred by the local party. 
williamr@2
  8500
	
williamr@2
  8501
	Modes: GSM/WCDMA */
williamr@2
  8502
		ELocalBarred
williamr@2
  8503
		};
williamr@2
  8504
williamr@2
  8505
	IMPORT_C void NotifyCallEvent(TRequestStatus& aReqStatus, TMobileCallEvent& aEvent) const;
williamr@2
  8506
williamr@2
  8507
/** Describes the possible call states. */
williamr@2
  8508
	enum TMobileCallStatus
williamr@2
  8509
		{
williamr@2
  8510
	/** Indicates that the call status is unknown. */
williamr@2
  8511
		EStatusUnknown,			// same as RCall::EStatusUnknown
williamr@2
  8512
	/** Indicates that the call is idle. */
williamr@2
  8513
		EStatusIdle,			// same as RCall::EStatusIdle
williamr@2
  8514
		EStatusDialling,		// same as RCall::EStatusDialling
williamr@2
  8515
	/** Indicates that the MT call is ringing but not answered yet by the local user. */
williamr@2
  8516
		EStatusRinging,			// same as RCall::EStatusRinging
williamr@2
  8517
	/** Indicates that the local user has answered the MT call but the network has not 
williamr@2
  8518
	acknowledged the call connection yet. */
williamr@2
  8519
		EStatusAnswering,		// same as RCall::EStatusAnswering
williamr@2
  8520
	/** MO Call: the network notifies to the MS that the remote party is now ringing. */
williamr@2
  8521
		EStatusConnecting,		// same as RCall::EStatusConnecting
williamr@2
  8522
	/** Indicates that call is connected and active. */
williamr@2
  8523
		EStatusConnected,		// same as RCall::EStatusConnected
williamr@2
  8524
	/** Indicates that call is disconnecting. */
williamr@2
  8525
		EStatusDisconnecting,	// same as RCall::EStatusHangingUp
williamr@2
  8526
	/** Indicates that the call is disconnecting with inband data (to enable the network 
williamr@2
  8527
	to send an audio tone), signifying that the call is not to be released until 
williamr@2
  8528
	the user terminates the call. */
williamr@2
  8529
		EStatusDisconnectingWithInband,
williamr@2
  8530
	/** Indicates that call is undergoing temporary channel loss and it may or may not 
williamr@2
  8531
	be reconnected. */
williamr@2
  8532
		EStatusReconnectPending,
williamr@2
  8533
	/** Indicates that the call is connected but on hold. */
williamr@2
  8534
		EStatusHold,
williamr@2
  8535
	/** Indicates that the call is the non-active half of an alternating call. This 
williamr@2
  8536
	call is waiting for its active half or the remote end to switch alternating 
williamr@2
  8537
	call mode. */
williamr@2
  8538
		EStatusWaitingAlternatingCallSwitch,
williamr@2
  8539
		EStatusTransferring,
williamr@2
  8540
		EStatusTransferAlerting
williamr@2
  8541
		};
williamr@2
  8542
williamr@2
  8543
	IMPORT_C TInt GetMobileCallStatus(TMobileCallStatus& aStatus) const;
williamr@2
  8544
	IMPORT_C void NotifyMobileCallStatusChange(TRequestStatus& aReqStatus, TMobileCallStatus& aStatus) const;
williamr@2
  8545
williamr@2
  8546
	IMPORT_C void DialNoFdnCheck(TRequestStatus& aStatus,const TDesC& aTelNumber) const;
williamr@2
  8547
	IMPORT_C void DialNoFdnCheck(TRequestStatus& aStatus,const TDesC8& aCallParams,const TDesC& aTelNumber) const;
williamr@2
  8548
	
williamr@2
  8549
	IMPORT_C void DialCallControl(TRequestStatus& aStatus, const TDesC8& aCallParams, const TTelNumberC& aTelNumber) const;
williamr@2
  8550
	
williamr@2
  8551
	/**
williamr@2
  8552
	Contains audio tone events.
williamr@2
  8553
	*/
williamr@2
  8554
	enum TMobileCallAudioToneEvent
williamr@2
  8555
		{
williamr@2
  8556
		/**
williamr@2
  8557
		Stop audio tone.
williamr@2
  8558
		*/
williamr@2
  8559
		EAudioStop,
williamr@2
  8560
		/**
williamr@2
  8561
		Start audio tone.
williamr@2
  8562
		*/
williamr@2
  8563
		EAudioStart		
williamr@2
  8564
		};
williamr@2
  8565
		
williamr@2
  8566
	/**
williamr@2
  8567
	List of 3GPP defined supervisory audio tones taken from technical specification 3GPP TS 22.001 v4.0.0 Annex F.
williamr@2
  8568
williamr@2
  8569
	This enumeration is based on the signal information element specified in Table 10.5.130/3GPP TS 24.008 v5.15.0
williamr@2
  8570
	*/
williamr@2
  8571
	enum TMobileCallAudioTones	
williamr@2
  8572
		{
williamr@2
  8573
		/** 
williamr@2
  8574
		No tone.  Not defined in specification used for initialisation of 
williamr@2
  8575
		iTone class member variable during TAudioToneV3 construction.
williamr@2
  8576
		*/
williamr@2
  8577
		ENoTone,
williamr@2
  8578
		/**
williamr@2
  8579
		Dial tone.
williamr@2
  8580
		*/
williamr@2
  8581
		EDialTone,
williamr@2
  8582
		/**
williamr@2
  8583
		Subscriber busy tone.
williamr@2
  8584
		*/
williamr@2
  8585
		ESubscriberBusyTone,
williamr@2
  8586
		/**
williamr@2
  8587
		Congestion tone.
williamr@2
  8588
		*/
williamr@2
  8589
		ECongestionTone,
williamr@2
  8590
		/**
williamr@2
  8591
		Radio path acknowledgement tone.
williamr@2
  8592
		*/
williamr@2
  8593
		ERadioPathAcknowledgement,
williamr@2
  8594
		/**
williamr@2
  8595
		Radio path not available tone.
williamr@2
  8596
		*/
williamr@2
  8597
		ERadioPathNotAvailable,
williamr@2
  8598
		/**
williamr@2
  8599
		Call dropped (Mobile Originated only).
williamr@2
  8600
		*/
williamr@2
  8601
 		EMOCallDropped,
williamr@2
  8602
 		/**
williamr@2
  8603
		Error special information.
williamr@2
  8604
		*/
williamr@2
  8605
 		EErrorSpecialInformation,
williamr@2
  8606
 		/**
williamr@2
  8607
		Number unobtainable.
williamr@2
  8608
		*/
williamr@2
  8609
 		ENumberUnobtainable,
williamr@2
  8610
 		/**
williamr@2
  8611
		Authentication failure.
williamr@2
  8612
		*/
williamr@2
  8613
 		EAuthenticationFailure,
williamr@2
  8614
 		/**
williamr@2
  8615
		Call waiting.
williamr@2
  8616
		*/
williamr@2
  8617
 		ECallWaiting,
williamr@2
  8618
 		/**
williamr@2
  8619
		Ringback tone.
williamr@2
  8620
		*/
williamr@2
  8621
		ERingback
williamr@2
  8622
		};
williamr@2
  8623
williamr@2
  8624
	class TAudioToneV3 :  public RMobilePhone::TMultimodeType
williamr@2
  8625
	/**
williamr@2
  8626
	Audio tone version 1 class. Contains information relating to the  call control playing of audio tones. 
williamr@2
  8627
	Tones maybe generated by the network (in-band) or signalled to be played locally by the ME.
williamr@2
  8628
	@publishedPartner
williamr@2
  8629
	@released
williamr@2
  8630
	*/
williamr@2
  8631
		{
williamr@2
  8632
	public:
williamr@2
  8633
		IMPORT_C TAudioToneV3();
williamr@2
  8634
		
williamr@2
  8635
	public:
williamr@2
  8636
		/**
williamr@2
  8637
		Indicates whether the tone is starting or stopping playing.
williamr@2
  8638
		
williamr@2
  8639
		@see TMobileCallAudioToneEvent
williamr@2
  8640
		*/
williamr@2
  8641
		TMobileCallAudioToneEvent iEvent;
williamr@2
  8642
		/**
williamr@2
  8643
		Indicates which tone is to be played.
williamr@2
  8644
		
williamr@2
  8645
		@see TMobileCallAudioTones
williamr@2
  8646
		*/
williamr@2
  8647
		TMobileCallAudioTones	iTone;
williamr@2
  8648
		/**
williamr@2
  8649
		Indicates whether the tone is played by the network or is to be played locally by the ME.
williamr@2
  8650
		*/
williamr@2
  8651
		TBool iPlayedLocally; 
williamr@2
  8652
		};
williamr@2
  8653
williamr@2
  8654
	/**
williamr@2
  8655
	Packaging typedef for TAudioToneV3 class.
williamr@2
  8656
	*/
williamr@2
  8657
	typedef TPckg<TAudioToneV3> TAudioToneV3Pckg;
williamr@2
  8658
	
williamr@2
  8659
	IMPORT_C void NotifyAudioToneEvent(TRequestStatus& aReqStatus, TDes8& aToneInfo) const;
williamr@2
  8660
williamr@2
  8661
	/***********************************************************************************/
williamr@2
  8662
	//
williamr@2
  8663
	// MobilePrivacy functional unit
williamr@2
  8664
	//
williamr@2
  8665
	/***********************************************************************************/
williamr@2
  8666
williamr@2
  8667
	IMPORT_C TInt SetPrivacy(RMobilePhone::TMobilePhonePrivacy aPrivacySetting) const;
williamr@2
  8668
	IMPORT_C void NotifyPrivacyConfirmation(TRequestStatus& aReqStatus, RMobilePhone::TMobilePhonePrivacy& aPrivacySetting) const;
williamr@2
  8669
williamr@2
  8670
	/***********************************************************************************/
williamr@2
  8671
	//
williamr@2
  8672
	// MobileTrafficChannel function unit
williamr@2
  8673
	//
williamr@2
  8674
	/***********************************************************************************/
williamr@2
  8675
williamr@2
  8676
/** Call traffic channels.
williamr@2
  8677
williamr@2
  8678
Modes: CDMA */
williamr@2
  8679
	enum TMobileCallTch
williamr@2
  8680
		{
williamr@2
  8681
	/** The traffic channel of the call is unknown. */
williamr@2
  8682
		ETchUnknown,
williamr@2
  8683
	/** The call has a digital traffic channel */
williamr@2
  8684
		ETchDigital,
williamr@2
  8685
	/** The call has an analog traffic channel */
williamr@2
  8686
		ETchAnalog
williamr@2
  8687
		};
williamr@2
  8688
williamr@2
  8689
	IMPORT_C TInt SetTrafficChannel(TMobileCallTch aTchRequest) const;
williamr@2
  8690
	IMPORT_C void NotifyTrafficChannelConfirmation(TRequestStatus& aReqStatus, TMobileCallTch& aTchType) const;
williamr@2
  8691
williamr@2
  8692
	/***********************************************************************************/
williamr@2
  8693
	//
williamr@2
  8694
	// MobileCallInformation functional unit
williamr@2
  8695
	//
williamr@2
  8696
	/***********************************************************************************/
williamr@2
  8697
williamr@2
  8698
	/**
williamr@2
  8699
	Remote party Identity status.
williamr@2
  8700
williamr@2
  8701
	Modes: Common
williamr@2
  8702
williamr@2
  8703
	@see TMobileCallRemotePartyInfoV1
williamr@2
  8704
	*/
williamr@2
  8705
	enum TMobileCallRemoteIdentityStatus
williamr@2
  8706
		{
williamr@2
  8707
		/**
williamr@2
  8708
		The remote party's identity can not be determined.  Calling
williamr@2
  8709
		party's Binary Coded Decimal (BCD) number is not available.
williamr@2
  8710
		Cause of No CLI is "unavailable".
williamr@2
  8711
		*/
williamr@2
  8712
		ERemoteIdentityUnknown,
williamr@2
  8713
williamr@2
  8714
		/**
williamr@2
  8715
		The remote party's identity, or BCD number, is available.
williamr@2
  8716
		However, cause of No CLI has not been set.
williamr@2
  8717
		*/
williamr@2
  8718
		ERemoteIdentityAvailable,
williamr@2
  8719
williamr@2
  8720
		/**
williamr@2
  8721
		The remote party has suppressed the transmission of its
williamr@2
  8722
		identity; i.e. their BCD number is not available.  Cause of No
williamr@2
  8723
		CLI is "reject by user".
williamr@2
  8724
		*/
williamr@2
  8725
		ERemoteIdentitySuppressed,
williamr@2
  8726
		/**
williamr@2
  8727
		The remote party's identity, or BCD number, is available.  The
williamr@2
  8728
		cause of No CLI is "reject by user".
williamr@2
  8729
williamr@2
  8730
		To be used where the network has specified that displaying of
williamr@2
  8731
		CLI information of the remote party has been rejected by the
williamr@2
  8732
		caller but the TMobileCallRemotePartyInfoV1::iRemoteNumber
williamr@2
  8733
		parameter has been populated with some other string which may
williamr@2
  8734
		be of use to the client.
williamr@2
  8735
		*/
williamr@2
  8736
		ERemoteIdentityAvailableNoCliRejectedByUser,
williamr@2
  8737
williamr@2
  8738
		/**
williamr@2
  8739
		The remote party's identity is available; a BCD number is
williamr@2
  8740
		available.  The cause of No CLI is "Interaction with other
williamr@2
  8741
		service".
williamr@2
  8742
williamr@2
  8743
		To be used where the network has specified that CLI information
williamr@2
  8744
		of the remote party is not available due to ineraction with
williamr@2
  8745
		another service.  However, the
williamr@2
  8746
		TMobileCallRemotePartyInfoV1::iRemoteNumber parameter has been
williamr@2
  8747
		populated with some other string which may be of use to the
williamr@2
  8748
		client.
williamr@2
  8749
		*/
williamr@2
  8750
		ERemoteIdentityAvailableNoCliInteractionWithOtherService,
williamr@2
  8751
		/**
williamr@2
  8752
		The remote party's identity, or BCD number, is unavailable.
williamr@2
  8753
		Cause of No CLI is "interaction with other service".
williamr@2
  8754
		*/
williamr@2
  8755
		ERemoteIdentityUnavailableNoCliInteractionWithOtherService,
williamr@2
  8756
williamr@2
  8757
		/**
williamr@2
  8758
		The remote party's identity, or BCD number, is available.
williamr@2
  8759
		Cause of No CLI is "Coin Line/ Payphone".
williamr@2
  8760
williamr@2
  8761
		To be used where the network has specified that CLI information
williamr@2
  8762
		of the remote party is not available as the caller is calling
williamr@2
  8763
		from a coin/ payphone.  However, the
williamr@2
  8764
		TMobileCallRemotePartyInfoV1::iRemoteNumber parameter has been
williamr@2
  8765
		populated with some other string which may be of use to the
williamr@2
  8766
		client.
williamr@2
  8767
		*/
williamr@2
  8768
		ERemoteIdentityAvailableNoCliCoinOrPayphone,
williamr@2
  8769
		/**
williamr@2
  8770
		The remote party's identity, or BCD number, is not available.
williamr@2
  8771
		Cause of No CLI is "Coin Line/ Payphone".
williamr@2
  8772
		*/
williamr@2
  8773
		ERemoteIdentityUnavailableNoCliCoinOrPayphone,
williamr@2
  8774
williamr@2
  8775
		/**
williamr@2
  8776
		The remote party's identity, or BCD number, is available.
williamr@2
  8777
		Cause of No CLI is "unavailable".
williamr@2
  8778
williamr@2
  8779
		To be used where the network has specified that the CLI
williamr@2
  8780
		information of the remote party is not available but the
williamr@2
  8781
		TMobileCallRemotePartyInfoV1::iRemoteNumber parameter has been
williamr@2
  8782
		populated with some other string which may be of use to the
williamr@2
  8783
		client.
williamr@2
  8784
		*/
williamr@2
  8785
		ERemoteIdentityAvailableNoCliUnavailable
williamr@2
  8786
		};
williamr@2
  8787
williamr@2
  8788
williamr@2
  8789
	/**
williamr@2
  8790
	The direction of the mobile call.
williamr@2
  8791
williamr@2
  8792
	Modes: Common
williamr@2
  8793
williamr@2
  8794
	@see TMobileCallRemotePartyInfoV1
williamr@2
  8795
	*/
williamr@2
  8796
	enum TMobileCallDirection
williamr@2
  8797
		{
williamr@2
  8798
	/** The direction of the call is unknown. */
williamr@2
  8799
		EDirectionUnknown,
williamr@2
  8800
	/** The call was originated by this phone, i.e. it is an outgoing call. */
williamr@2
  8801
		EMobileOriginated,
williamr@2
  8802
	/** The call was terminated by this phone, i.e. it is an incoming call. */
williamr@2
  8803
		EMobileTerminated
williamr@2
  8804
		};
williamr@2
  8805
williamr@2
  8806
	enum { KCallingNameSize=80 };
williamr@2
  8807
williamr@2
  8808
	
williamr@2
  8809
williamr@2
  8810
	class TMobileCallRemotePartyInfoV1 : public RMobilePhone::TMultimodeType
williamr@2
  8811
/** Defines information about the remote party of a mobile call. 
williamr@2
  8812
*/
williamr@2
  8813
		{
williamr@2
  8814
	public:
williamr@2
  8815
		IMPORT_C TMobileCallRemotePartyInfoV1();
williamr@2
  8816
	public:
williamr@2
  8817
	/** Indicates whether the remote party information in the rest of this structure 
williamr@2
  8818
	is valid or not.
williamr@2
  8819
	
williamr@2
  8820
	Modes: Common
williamr@2
  8821
	
williamr@2
  8822
	@see TMobileCallRemoteIdentityStatus */
williamr@2
  8823
		TMobileCallRemoteIdentityStatus iRemoteIdStatus;
williamr@2
  8824
	/** The direction of the call and hence the role of the remote party, i.e. if the 
williamr@2
  8825
	call is mobile originated then the remote party is the called party whereas 
williamr@2
  8826
	if the call is mobile terminated then the remote party is the calling party.
williamr@2
  8827
	
williamr@2
  8828
	Modes: Common
williamr@2
  8829
	
williamr@2
  8830
	@see TMobileCallDirection */
williamr@2
  8831
		TMobileCallDirection iDirection;
williamr@2
  8832
	/** The phone number of the remote party if available.
williamr@2
  8833
	
williamr@2
  8834
	Modes: Common
williamr@2
  8835
	
williamr@2
  8836
	@see RMobilePhone::TMobileAddress */
williamr@2
  8837
		RMobilePhone::TMobileAddress iRemoteNumber;
williamr@2
  8838
	/** Calling party name available through the CNAP supplementary service (if provisioned). 
williamr@2
  8839
	
williamr@2
  8840
	
williamr@2
  8841
	Modes: Common */
williamr@2
  8842
		TBuf<KCallingNameSize> iCallingName;
williamr@2
  8843
		};
williamr@2
  8844
williamr@2
  8845
/** A typedef'd packaged TMobileCallRemotePartyInfoV1 for passing through a generic 
williamr@2
  8846
API function member. */
williamr@2
  8847
	typedef TPckg<TMobileCallRemotePartyInfoV1> TMobileCallRemotePartyInfoV1Pckg;
williamr@2
  8848
williamr@2
  8849
	IMPORT_C void NotifyRemotePartyInfoChange(TRequestStatus& aReqStatus, TDes8& aRemotePartyInfo) const;
williamr@2
  8850
williamr@2
  8851
/** Determines which fields in the class are valid.
williamr@2
  8852
williamr@2
  8853
@see TMobileCallInfoV1 */
williamr@2
  8854
	enum TMobileCallInfoFlags
williamr@2
  8855
		{
williamr@2
  8856
	/** The iStartTime field is valid in the call info class.
williamr@2
  8857
	
williamr@2
  8858
	Modes: COMMON */
williamr@2
  8859
		KCallStartTime		= 0x00000001,
williamr@2
  8860
	/** The iDuration field is valid in the call info class.
williamr@2
  8861
	
williamr@2
  8862
	Modes: COMMON */
williamr@2
  8863
		KCallDuration		= 0x00000002,
williamr@2
  8864
	/** The iCallId field is valid in the call info class.
williamr@2
  8865
	
williamr@2
  8866
	Modes: COMMON */
williamr@2
  8867
		KCallId				= 0x00000004,
williamr@2
  8868
	/** The iRemoteParty field is valid in the call info class.
williamr@2
  8869
	
williamr@2
  8870
	Modes: COMMON */
williamr@2
  8871
		KCallRemoteParty	= 0x00000008,
williamr@2
  8872
	/** The iDialledParty field is valid in the call info class.
williamr@2
  8873
	
williamr@2
  8874
	Modes: COMMON */
williamr@2
  8875
		KCallDialledParty	= 0x00000010,
williamr@2
  8876
	/** The iExitCode field is valid in the call info class.
williamr@2
  8877
	
williamr@2
  8878
	Modes: COMMON */
williamr@2
  8879
		KCallExitCode		= 0x00000020,
williamr@2
  8880
	/** The iEmergency field is valid in the call info class.
williamr@2
  8881
	
williamr@2
  8882
	Modes: COMMON */
williamr@2
  8883
		KCallEmergency		= 0x00000040,
williamr@2
  8884
	/** The iForwarded field is valid in the call info class.
williamr@2
  8885
	
williamr@2
  8886
	Modes: COMMON */
williamr@2
  8887
		KCallForwarded		= 0x00000080,
williamr@2
  8888
	/** The iPrivacy field is valid in the call info class.
williamr@2
  8889
	
williamr@2
  8890
	Modes: CDMA */
williamr@2
  8891
		KCallPrivacy		= 0x00000100,
williamr@2
  8892
	/** The iTch field is valid in the call info class.
williamr@2
  8893
	
williamr@2
  8894
	Modes: CDMA */
williamr@2
  8895
		KCallTch			= 0x00000200,
williamr@2
  8896
	/** The iAlternatingCall field is valid in the call info class.
williamr@2
  8897
	
williamr@2
  8898
	Modes: GSM/WCDMA */
williamr@2
  8899
		KCallAlternating	= 0x00000400,
williamr@2
  8900
	/** The iSecurity field is valid in the call info class.
williamr@2
  8901
	
williamr@2
  8902
	Modes: GSM/WCDMA */		
williamr@2
  8903
		KCallSecurity		= 0x00000800,
williamr@2
  8904
	/** The iCallParamOrigin field is valid in the call info class.
williamr@2
  8905
	
williamr@2
  8906
	Modes: GSM/WCDMA */		
williamr@2
  8907
		KCallParamOrigin	= 0x00001000,
williamr@2
  8908
	/** The iIconId field is valid in the call info class.
williamr@2
  8909
	
williamr@2
  8910
	Modes: GSM/WCDMA */		
williamr@2
  8911
		KCallIconId			= 0x00002000,
williamr@2
  8912
	/** The iAlphaId field is valid in the call info class.
williamr@2
  8913
	
williamr@2
  8914
	Modes: GSM/WCDMA */		
williamr@2
  8915
		KCallAlphaId		= 0x00004000,
williamr@2
  8916
	/** The iParamsCallControlModified field is valid in the call 
williamr@2
  8917
	info class.
williamr@2
  8918
	
williamr@2
  8919
	Modes: GSM/WCDMA */		
williamr@2
  8920
		KCallParamsCallControlModified	= 0x00008000,	
williamr@2
  8921
		
williamr@2
  8922
	/** The iSubAddress field is valid in the call 
williamr@2
  8923
	info class.
williamr@2
  8924
					
williamr@2
  8925
	Modes: GSM/WCDMA */		
williamr@2
  8926
		KCallSubAddress	= 0x0010000,	
williamr@2
  8927
				
williamr@2
  8928
	/** The iBearerCap1 field is valid in the call 
williamr@2
  8929
	info class.
williamr@2
  8930
							
williamr@2
  8931
	Modes: GSM/WCDMA */		
williamr@2
  8932
		KCallBearerCap1	= 0x0020000,	
williamr@2
  8933
			
williamr@2
  8934
	/** The iBearerCap2 field is valid in the call 
williamr@2
  8935
	info class.
williamr@2
  8936
									
williamr@2
  8937
	Modes: GSM/WCDMA */		
williamr@2
  8938
		KCallBearerCap2	= 0x0040000,	
williamr@2
  8939
			
williamr@2
  8940
	/** The iBCRepeatIndicator field is valid in the call 
williamr@2
  8941
	info class.
williamr@2
  8942
										
williamr@2
  8943
	Modes: GSM/WCDMA */		
williamr@2
  8944
		KCallBCRepeatIndicator	= 0x0080000,
williamr@2
  8945
				
williamr@2
  8946
		};
williamr@2
  8947
	
williamr@2
  8948
williamr@2
  8949
	class TMobileCallInfoV1 : public RMobilePhone::TMultimodeType
williamr@2
  8950
/** Defines general information about a mobile call. 
williamr@2
  8951
*/
williamr@2
  8952
		{
williamr@2
  8953
	public:
williamr@2
  8954
		IMPORT_C TMobileCallInfoV1();
williamr@2
  8955
	public:
williamr@2
  8956
	/** A bit-wise sum of TMobileCallInfoFlags indicating which of the following optional 
williamr@2
  8957
	fields contain valid data. */
williamr@2
  8958
		TUint32 iValid;
williamr@2
  8959
	/** The call service (voice, data, fax, aux. voice) that this call provides.
williamr@2
  8960
	
williamr@2
  8961
	@see RMobilePhone::TMobileService */
williamr@2
  8962
		RMobilePhone::TMobileService iService;
williamr@2
  8963
	/** The mobile call status.
williamr@2
  8964
	
williamr@2
  8965
	@see TMobileCallStatus */
williamr@2
  8966
		TMobileCallStatus iStatus;
williamr@2
  8967
	/** The call ID number assigned to an ongoing call. Will equal -1 if the call does 
williamr@2
  8968
	not have an allocated ID. */
williamr@2
  8969
		TInt iCallId;
williamr@2
  8970
	/** The reason for termination of a finished call. Will equal KErrNone if the call 
williamr@2
  8971
	ended normally and KErrNotFound if the call has not ended. */
williamr@2
  8972
		TInt iExitCode;
williamr@2
  8973
	/** ETrue if the call is an emergency call or EFalse if it is not. */
williamr@2
  8974
		TBool iEmergency;
williamr@2
  8975
	/** For a MT call, this attribute equals ETrue if the call has been forwarded to 
williamr@2
  8976
	this phone or EFalse if it has not. For a MO call, this attribute equals ETrue 
williamr@2
  8977
	if the call has been forwarded to another destination or EFalse if it has 
williamr@2
  8978
	not. If the phone can not determine whether the call has been forwarded or 
williamr@2
  8979
	not then the attribute will return EFalse. */
williamr@2
  8980
		TBool iForwarded;
williamr@2
  8981
	/** This attribute indicates whether privacy is on or off for this call.
williamr@2
  8982
	
williamr@2
  8983
	@see RMobilePhone::TMobilePhonePrivacy */
williamr@2
  8984
		RMobilePhone::TMobilePhonePrivacy iPrivacy;
williamr@2
  8985
	/** This attribute indicates whether this call is an alternating call or not.
williamr@2
  8986
	
williamr@2
  8987
	@see RMobilePhone::TMobilePhoneAlternatingCallMode */
williamr@2
  8988
		RMobilePhone::TMobilePhoneAlternatingCallMode iAlternatingCall;
williamr@2
  8989
	/** The current duration of the call.
williamr@2
  8990
	
williamr@2
  8991
	@see TTimeIntervalSeconds */
williamr@2
  8992
		TTimeIntervalSeconds iDuration;
williamr@2
  8993
	/** This attribute indicates whether a digital or analog traffic channel is being 
williamr@2
  8994
	used for this call.
williamr@2
  8995
	
williamr@2
  8996
	@see TMobileCallTch */
williamr@2
  8997
		TMobileCallTch iTch;
williamr@2
  8998
	/** Information about remote party of a connected call.
williamr@2
  8999
	
williamr@2
  9000
	@see TMobileCallRemotePartyInfoV1 */
williamr@2
  9001
		TMobileCallRemotePartyInfoV1 iRemoteParty;
williamr@2
  9002
	/** The original number (including DTMF) dialled for an outgoing call.
williamr@2
  9003
	
williamr@2
  9004
	@see RMobilePhone::TMobileAddress */
williamr@2
  9005
		RMobilePhone::TMobileAddress iDialledParty;
williamr@2
  9006
	/** The time and date the call started.
williamr@2
  9007
	
williamr@2
  9008
	@see TDateTime */
williamr@2
  9009
		TDateTime iStartTime;
williamr@2
  9010
	/** The name of the call.
williamr@2
  9011
	
williamr@2
  9012
	@see TName */
williamr@2
  9013
		TName iCallName;
williamr@2
  9014
	/** The name of the line on which the call is open.
williamr@2
  9015
	
williamr@2
  9016
	@see TName */
williamr@2
  9017
		TName iLineName;
williamr@2
  9018
		};
williamr@2
  9019
williamr@2
  9020
/** A typedef'd packaged TMobileCallInfoV1 for passing through a generic API function 
williamr@2
  9021
member. */
williamr@2
  9022
	typedef TPckg<TMobileCallInfoV1> TMobileCallInfoV1Pckg;
williamr@2
  9023
	
williamr@2
  9024
	class TMobileCallInfoV3 : public TMobileCallInfoV1
williamr@2
  9025
	/**
williamr@2
  9026
	Extends the TMobileCallInfoV1 claass to include extra call info parameter relating to network security.
williamr@2
  9027
	@publishedPartner
williamr@2
  9028
	@released
williamr@2
  9029
	*/
williamr@2
  9030
		{
williamr@2
  9031
	public:
williamr@2
  9032
		IMPORT_C TMobileCallInfoV3();
williamr@2
  9033
	public:
williamr@2
  9034
		/**
williamr@2
  9035
		Indicates whether Ciphering Status of a call is enabled or disabled. 
williamr@2
  9036
		*/
williamr@2
  9037
		RMobilePhone::TMobilePhoneNetworkSecurity  iSecurity;
williamr@2
  9038
		};
williamr@2
  9039
		
williamr@2
  9040
	typedef TPckg<TMobileCallInfoV3> TMobileCallInfoV3Pckg; ///< Package descriptor to hold a TMobileCallInfoV3.
williamr@2
  9041
williamr@2
  9042
	
williamr@2
  9043
	class TMobileCallInfoV7 : public TMobileCallInfoV3
williamr@2
  9044
	/**
williamr@2
  9045
	Extends the TMobileCallInfoV3 claass to include extra parameters
williamr@2
  9046
	to indicate the origin of the call, an icon and identifier to 
williamr@2
  9047
	describe the call and an indication of whether the call parameters
williamr@2
  9048
	have been modified.
williamr@2
  9049
	
williamr@2
  9050
	@publishedPartner
williamr@2
  9051
	@released
williamr@2
  9052
	*/
williamr@2
  9053
    	{        
williamr@2
  9054
    public:
williamr@2
  9055
    	IMPORT_C TMobileCallInfoV7();
williamr@2
  9056
    public:
williamr@2
  9057
    	/**
williamr@2
  9058
    	The origin of the call.
williamr@2
  9059
    	*/
williamr@2
  9060
    	TCallParamOrigin iCallParamOrigin;
williamr@2
  9061
    	/**
williamr@2
  9062
    	The icon identifier which can be used for indication that the 
williamr@2
  9063
    	call is being made.
williamr@2
  9064
     	*/
williamr@2
  9065
    	TIconId iIconId;
williamr@2
  9066
    	/**
williamr@2
  9067
    	The alpha identifier to describe the icon.
williamr@2
  9068
     	*/
williamr@2
  9069
    	TAlphaIdBuf iAlphaId;
williamr@2
  9070
    	/**
williamr@2
  9071
    	An indication of whether the call parameters have been modified.  
williamr@2
  9072
    	Set to ETrue if they have been modified, EFalse otherwise.
williamr@2
  9073
     	*/
williamr@2
  9074
    	TBool iParamsCallControlModified;
williamr@2
  9075
    };
williamr@2
  9076
	
williamr@2
  9077
    typedef TPckg<TMobileCallInfoV7> TMobileCallInfoV7Pckg; ///< Package descriptor to hold a TMobileCallInfoV7.
williamr@2
  9078
	
williamr@2
  9079
    class TMobileCallInfoV8 : public TMobileCallInfoV7
williamr@2
  9080
    	/**
williamr@2
  9081
    	Extends the TMobileCallInfoV7 claass to include extra parameters
williamr@2
  9082
    	to indicate the bearer capabilities, repeat indicator and sub address. 
williamr@2
  9083
        	
williamr@2
  9084
    	@publishedPartner
williamr@2
  9085
    	@released
williamr@2
  9086
    	*/
williamr@2
  9087
        {        
williamr@2
  9088
    public:
williamr@2
  9089
       	IMPORT_C TMobileCallInfoV8();
williamr@2
  9090
    public:
williamr@2
  9091
        /** The sub-address of the remote party. 
williamr@2
  9092
    	
williamr@2
  9093
    	@see TSubAddress */
williamr@2
  9094
        TSubAddress iSubAddress;
williamr@2
  9095
        
williamr@2
  9096
        /** Capability configuration parameters for the first bearer. 
williamr@2
  9097
        
williamr@2
  9098
        @see TCcp */
williamr@2
  9099
       	TCcp iBearerCap1;
williamr@2
  9100
        
williamr@2
  9101
        /** Capability configuration parameters for the second bearer. 	 	
williamr@2
  9102
       	
williamr@2
  9103
        @see TCcp */
williamr@2
  9104
       	TCcp iBearerCap2;
williamr@2
  9105
       	
williamr@2
  9106
        /** The bearer capability repeat indicator. 
williamr@2
  9107
       	
williamr@2
  9108
        @see TBCRepeatIndicator */
williamr@2
  9109
        TBCRepeatIndicator iBCRepeatIndicator;
williamr@2
  9110
        };
williamr@2
  9111
    	
williamr@2
  9112
    typedef TPckg<TMobileCallInfoV8> TMobileCallInfoV8Pckg; ///< Package descriptor to hold a TMobileCallInfoV8.
williamr@2
  9113
      
williamr@2
  9114
	IMPORT_C TInt GetMobileCallInfo(TDes8& aCallInfo) const;
williamr@2
  9115
williamr@2
  9116
	/***********************************************************************************/
williamr@2
  9117
	//
williamr@2
  9118
	// MobileCallEmergency functional unit
williamr@2
  9119
	//
williamr@2
  9120
	/***********************************************************************************/
williamr@2
  9121
williamr@2
  9122
	IMPORT_C void DialEmergencyCall(TRequestStatus& aReqStatus, const TDesC& aNumber) const;
williamr@2
  9123
williamr@2
  9124
	/***********************************************************************************/
williamr@2
  9125
	//
williamr@2
  9126
	// MobileCallCompletion
williamr@2
  9127
	//
williamr@2
  9128
	/***********************************************************************************/
williamr@2
  9129
williamr@2
  9130
	IMPORT_C void ActivateCCBS(TRequestStatus& aReqStatus, TInt& aIndex) const;
williamr@2
  9131
	IMPORT_C TInt RejectCCBS() const;
williamr@2
  9132
		//
williamr@2
  9133
	// User-To-User Signalling Functional Unit
williamr@2
  9134
	//
williamr@2
  9135
	/***********************************************************************************/
williamr@2
  9136
williamr@2
  9137
/** The UUS capabilities of the call.
williamr@2
  9138
williamr@2
  9139
Modes: GSM/WCDMA. */
williamr@2
  9140
	enum TMobileCallUUSCaps			// UUS capabilities of the call
williamr@2
  9141
		{
williamr@2
  9142
	/** Indicates that MS supports UUS1 implicit request. */
williamr@2
  9143
		KCapsSetupUUS1Implicit=0x00000001,
williamr@2
  9144
	/** Indicates that MS supports UUS1 explicit request. */
williamr@2
  9145
		KCapsSetupUUS1Explicit=0x00000002,
williamr@2
  9146
	/** Indicates that MS supports UUS2 request. */
williamr@2
  9147
		KCapsSetupUUS2=0x00000004,
williamr@2
  9148
	/** Indicates that MS supports UUS3 request. */
williamr@2
  9149
		KCapsSetupUUS3=0x00000008,
williamr@2
  9150
	/** Indicates that MS supports activating more than one UUS request at a time. */
williamr@2
  9151
		KCapsSetupMultipleUUS=0x00000010,
williamr@2
  9152
	/** Indicates that UUS1 is active for this call. */
williamr@2
  9153
		KCapsActiveUUS1=0x00000020,
williamr@2
  9154
	/** Indicates that UUS2 is active for this call. */
williamr@2
  9155
		KCapsActiveUUS2=0x00000040,
williamr@2
  9156
	/** Indicates that UUS3 is active for this call. */
williamr@2
  9157
		KCapsActiveUUS3=0x00000080
williamr@2
  9158
		};
williamr@2
  9159
williamr@2
  9160
	IMPORT_C TInt GetUUSCaps(TUint32& aCaps) const;
williamr@2
  9161
	IMPORT_C void NotifyUUSCapsChange(TRequestStatus& aReqStatus, TUint32& aCaps) const;
williamr@2
  9162
williamr@2
  9163
/** UUS Service requests.
williamr@2
  9164
williamr@2
  9165
Modes: GSM/WCDMA */
williamr@2
  9166
	enum TMobileCallUUSReqs			// UUS Service requests
williamr@2
  9167
		{
williamr@2
  9168
	/** UUS1 is implicitly requested. */
williamr@2
  9169
		KUUS1Implicit=0x00000001,
williamr@2
  9170
	/** UUS1 is explicitly requested, but it is not mandatory for this call to proceed. */
williamr@2
  9171
		KUUS1ExplicitRequested=0x00000002,
williamr@2
  9172
	/** UUS1 is explicitly requested and it is mandatory for this call to proceed. */
williamr@2
  9173
		KUUS1ExplicitRequired=0x00000004,
williamr@2
  9174
	/** UUS2 is (explicitly) requested, but it is not mandatory for this call to proceed. */
williamr@2
  9175
		KUUS2Requested=0x00000008,
williamr@2
  9176
	/** UUS2 is (explicitly) requested and it is mandatory for this call to proceed. */
williamr@2
  9177
		KUUS2Required=0x00000010,
williamr@2
  9178
	/** UUS3 is (explicitly) requested, but it is not mandatory for this call to proceed. */
williamr@2
  9179
		KUUS3Requested=0x00000020,
williamr@2
  9180
	/** UUS3 is (explicitly) requested and it is mandatory for this call to proceed. */
williamr@2
  9181
		KUUS3Required=0x00000040
williamr@2
  9182
		};
williamr@2
  9183
williamr@2
  9184
	enum 
williamr@2
  9185
		{
williamr@2
  9186
		KMaxUUISize = 129,
williamr@2
  9187
		};
williamr@2
  9188
williamr@2
  9189
/** Buffer for the UUI element. */
williamr@2
  9190
	typedef TBuf<KMaxUUISize> TMobileCallUUI;
williamr@2
  9191
williamr@2
  9192
	class  TMobileCallUUSRequestV1 : public RMobilePhone::TMultimodeType
williamr@2
  9193
/** The mobile Call User-to-User Signaling request. 
williamr@2
  9194
*/
williamr@2
  9195
		{
williamr@2
  9196
	public:
williamr@2
  9197
		IMPORT_C  TMobileCallUUSRequestV1();
williamr@2
  9198
	public:
williamr@2
  9199
	/** This field indicates whether the specified service is requested or required 
williamr@2
  9200
	for the call. */
williamr@2
  9201
		TUint             iServiceReq;
williamr@2
  9202
	/** The UUI element. This field only contains data if iServiceReq indicates UUS1.
williamr@2
  9203
	
williamr@2
  9204
	@see TMobileCallUUI */
williamr@2
  9205
		TMobileCallUUI	  iUUI;
williamr@2
  9206
		};
williamr@2
  9207
	
williamr@2
  9208
/** A typedef'd packaged TMobileCallUUSRequestV1 for passing through a generic API 
williamr@2
  9209
function member. */
williamr@2
  9210
	typedef TPckg<TMobileCallUUSRequestV1> TMobileCallUUSRequestV1Pckg;
williamr@2
  9211
williamr@2
  9212
	IMPORT_C void ActivateUUS(TRequestStatus& aReqStatus, const TDesC8& aUUSRequest) const;
williamr@2
  9213
	IMPORT_C void SendUUI(TRequestStatus& aReqStatus, TBool aMore, const TMobileCallUUI& aUUI) const;
williamr@2
  9214
	IMPORT_C void ReceiveUUI(TRequestStatus& aReqStatus, TMobileCallUUI& aUUI) const;
williamr@2
  9215
	IMPORT_C void HangupWithUUI(TRequestStatus& aReqStatus, const TMobileCallUUI& aUUI) const;
williamr@2
  9216
	IMPORT_C void AnswerIncomingCallWithUUI(TRequestStatus& aReqStatus, const TDesC8& aCallParams, const TMobileCallUUI& aUUI) const;
williamr@2
  9217
	
williamr@2
  9218
	/***********************************************************************************/
williamr@2
  9219
	//
williamr@2
  9220
	// Etel 3rd Party v1.0 Parameter classes
williamr@2
  9221
	//
williamr@2
  9222
	/***********************************************************************************/
williamr@2
  9223
	
williamr@2
  9224
	class TEtel3rdPartyMobileCallParamsV1 : public RCall::TCallParams
williamr@2
  9225
/** Defines the parameters used to set-up of a call originated from an ETel 3rd Party client. 
williamr@2
  9226
@publishedPartner
williamr@2
  9227
@released
williamr@2
  9228
*/
williamr@2
  9229
		{
williamr@2
  9230
	public:
williamr@2
  9231
		IMPORT_C TEtel3rdPartyMobileCallParamsV1();
williamr@2
  9232
	public:
williamr@2
  9233
	/** Call Id restriction setting to be used for this call.
williamr@2
  9234
	
williamr@2
  9235
	@see TMobileCallIdRestriction */
williamr@2
  9236
		TMobileCallIdRestriction iIdRestrict;
williamr@2
  9237
	/** Specifies whether this call attempt is user initiated (EFalse) or a client initiated 
williamr@2
  9238
	redial (ETrue). */
williamr@2
  9239
		TBool iAutoRedial;		
williamr@2
  9240
		};
williamr@2
  9241
		
williamr@2
  9242
/** A typedef'd packaged TEtel3rdPartyMobileCallParamsV1 for passing through a generic API 
williamr@2
  9243
function member. */
williamr@2
  9244
	typedef TPckg<TEtel3rdPartyMobileCallParamsV1>TEtel3rdPartyMobileCallParamsV1Pckg;	
williamr@2
  9245
	
williamr@2
  9246
private:
williamr@2
  9247
	RMobileCall(const RMobileCall& aCall);
williamr@2
  9248
	CMobileCallPtrHolder* iMmPtrHolder;
williamr@2
  9249
protected:
williamr@2
  9250
	IMPORT_C void ConstructL();
williamr@2
  9251
	IMPORT_C void Destruct();
williamr@2
  9252
	};
williamr@2
  9253
williamr@2
  9254
williamr@2
  9255
/*********************************************************/
williamr@2
  9256
//
williamr@2
  9257
// Line based functionality (RMobileLine)
williamr@2
  9258
// 
williamr@2
  9259
/*********************************************************/
williamr@2
  9260
williamr@2
  9261
williamr@2
  9262
williamr@2
  9263
class CMobileLinePtrHolder;
williamr@2
  9264
williamr@2
  9265
class RMobileLine : public RLine
williamr@2
  9266
/** Provides access to the functionality associated with a specific mobile line. 
williamr@2
  9267
*/
williamr@2
  9268
	{
williamr@2
  9269
public:
williamr@2
  9270
	IMPORT_C RMobileLine();
williamr@2
  9271
williamr@2
  9272
	/***********************************************************************************/
williamr@2
  9273
	//
williamr@2
  9274
	// MobileLineStatus functional unit
williamr@2
  9275
	// 
williamr@2
  9276
	/***********************************************************************************/
williamr@2
  9277
williamr@2
  9278
	IMPORT_C TInt GetMobileLineStatus(RMobileCall::TMobileCallStatus& aStatus) const;
williamr@2
  9279
	IMPORT_C void NotifyMobileLineStatusChange(TRequestStatus& aReqStatus, RMobileCall::TMobileCallStatus& aStatus) const;
williamr@2
  9280
williamr@2
  9281
	//
williamr@2
  9282
	// Additional Caps
williamr@2
  9283
	//
williamr@2
  9284
/** Enumerated auxiliary capabilities. */
williamr@2
  9285
	enum TMobileLineAdditionalCaps
williamr@2
  9286
		{
williamr@2
  9287
	/** Indicates whether the line is a Primary or Auxiliary voice line offset added 
williamr@2
  9288
	so that core Etel and additional line caps can be returned in one TUint. */
williamr@2
  9289
		KCapsAuxVoice=0x00000008	
williamr@2
  9290
		};
williamr@2
  9291
williamr@2
  9292
private:
williamr@2
  9293
	RMobileLine(const RMobileLine& aLine);
williamr@2
  9294
	CMobileLinePtrHolder* iMmPtrHolder;
williamr@2
  9295
protected:
williamr@2
  9296
	IMPORT_C void ConstructL();
williamr@2
  9297
	IMPORT_C void Destruct();
williamr@2
  9298
	};
williamr@2
  9299
williamr@2
  9300
williamr@2
  9301
/*********************************************************/
williamr@2
  9302
//
williamr@2
  9303
// SMS Messaging (RMobileSmsMessaging)
williamr@2
  9304
// 
williamr@2
  9305
/*********************************************************/
williamr@2
  9306
williamr@2
  9307
williamr@2
  9308
williamr@2
  9309
class CMobilePhoneSmspList;
williamr@2
  9310
class CSmsMessagingPtrHolder;
williamr@2
  9311
williamr@2
  9312
class RMobileSmsMessaging : public RTelSubSessionBase
williamr@2
  9313
/** Provides client access to SMS messaging functionality provided by TSY.
williamr@2
  9314
@publishedPartner
williamr@2
  9315
@released 
williamr@2
  9316
*/
williamr@2
  9317
	{
williamr@2
  9318
public:
williamr@2
  9319
williamr@2
  9320
	friend class CRetrieveMobilePhoneSmspList;
williamr@2
  9321
williamr@2
  9322
	IMPORT_C RMobileSmsMessaging();
williamr@2
  9323
williamr@2
  9324
	IMPORT_C TInt Open(RMobilePhone& aPhone);
williamr@2
  9325
	IMPORT_C void Close();
williamr@2
  9326
williamr@2
  9327
/** Defines capabilities of SMS messaging.
williamr@2
  9328
williamr@2
  9329
Modes: GSM/WCDMA */
williamr@2
  9330
	enum TMobileSmsModeCaps
williamr@2
  9331
		{
williamr@2
  9332
	/** SMS is supported in GSM and WCDMA modes. SMS are sent across MM ETel API in 
williamr@2
  9333
	a GSM 03.40 TPDU format.
williamr@2
  9334
	
williamr@2
  9335
	Modes: GSM/WCDMA */
williamr@2
  9336
		KCapsGsmSms=0x00000001,
williamr@2
  9337
	/** SMS is supported in CDMA mode. SMS are sent across MM ETel API in a IS-637 
williamr@2
  9338
	Teleservice message PDU format. 
williamr@2
  9339
	
williamr@2
  9340
	Modes: CDMA */
williamr@2
  9341
		KCapsCdmaSms=0x00000002
williamr@2
  9342
		};
williamr@2
  9343
williamr@2
  9344
/** Defines SMS control capabilities.
williamr@2
  9345
williamr@2
  9346
Modes: Common */
williamr@2
  9347
	enum TMobileSmsControlCaps
williamr@2
  9348
		{
williamr@2
  9349
	/** TSY supports receiving incoming SMS that have been stored and acknowledged 
williamr@2
  9350
	by the phone prior to forwarding to the TSY. If this flag is set then KCapsReceiveEither 
williamr@2
  9351
	will not be set and the client can receive stored messages only while the 
williamr@2
  9352
	TSY-phone link is in "receive stored" mode.
williamr@2
  9353
	
williamr@2
  9354
	Modes: Common */
williamr@2
  9355
		KCapsReceiveStored=0x00000001,
williamr@2
  9356
	/** TSY supports receiving incoming SMS that have been acknowledged by the phone 
williamr@2
  9357
	but have NOT already been stored. It is the client's responsibility to do 
williamr@2
  9358
	the storage. If this flag is set then KCapsReceiveEither will not be set and 
williamr@2
  9359
	the client can receive unstored messages only while the TSY-phone link is 
williamr@2
  9360
	in "receive unstored with phone ack" mode.
williamr@2
  9361
	
williamr@2
  9362
	Modes: Common */
williamr@2
  9363
		KCapsReceiveUnstoredPhoneAck=0x00000002,
williamr@2
  9364
	/** TSY supports receiving incoming SMS that have NOT already been stored and acknowledged
williamr@2
  9365
	by the phone. It is the client's responsibility to do both the storage and 
williamr@2
  9366
	the acknowledgment or rejection. If this flag is set then KCapsReceiveEither 
williamr@2
  9367
	will not be set and the client can receive unstored messages only while the 
williamr@2
  9368
	TSY-phone link is in "receive unstored with client ack" mode.
williamr@2
  9369
	
williamr@2
  9370
	Modes: Common */
williamr@2
  9371
		KCapsReceiveUnstoredClientAck=0x00000004,
williamr@2
  9372
	/** TSY supports receiving either stored or unstored incoming SMS at any time. 
williamr@2
  9373
	If this flag is set then any other KCapsReceive... flags will not be set and 
williamr@2
  9374
	the client can receive stored or unstored messages while the TSY-phone link 
williamr@2
  9375
	is in "receive either" mode.
williamr@2
  9376
	
williamr@2
  9377
	Modes: Common */
williamr@2
  9378
		KCapsReceiveEither=0x00000008,
williamr@2
  9379
	/** TSY supports creating a default acknowledgment or rejection TPDU using only 
williamr@2
  9380
	a "cause code" supplied by the client. If this flag is not set then the client 
williamr@2
  9381
	must supply the full ack or nack TPDU if it calls RMobileSmsMessaging::AckSmsStored() 
williamr@2
  9382
	or RMobileSmsMessaging::NackSmsStored().
williamr@2
  9383
	
williamr@2
  9384
	Modes: Common */
williamr@2
  9385
		KCapsCreateAck=0x00000010,
williamr@2
  9386
	/** TSY supports sending SMS messages but does not support returning the service 
williamr@2
  9387
	centre's acknowledgment of the submitted message to the client.
williamr@2
  9388
	
williamr@2
  9389
	Modes: Common */
williamr@2
  9390
		KCapsSendNoAck=0x00000020,
williamr@2
  9391
	/** TSY supports sending SMS messages and also supports returning the service centre's 
williamr@2
  9392
	acknowledgment of the submitted message to the client.
williamr@2
  9393
	
williamr@2
  9394
	Modes: GSM/WCDMA */
williamr@2
  9395
		KCapsSendWithAck=0x00000040,
williamr@2
  9396
	/** TSY supports retrieval of the SMS parameter list.
williamr@2
  9397
	
williamr@2
  9398
	Modes: GSM/WCDMA */
williamr@2
  9399
		KCapsGetSmspList=0x00000080,
williamr@2
  9400
	/** TSY supports storage of the SMS parameter list
williamr@2
  9401
	
williamr@2
  9402
	Modes: GSM/WCDMA */
williamr@2
  9403
		KCapsSetSmspList=0x00000100
williamr@2
  9404
		};
williamr@2
  9405
williamr@2
  9406
	class TMobileSmsCapsV1 : public RMobilePhone::TMultimodeType
williamr@2
  9407
/** Defines capabilities of SMS messaging.
williamr@2
  9408
*/
williamr@2
  9409
		{
williamr@2
  9410
	public:
williamr@2
  9411
		IMPORT_C TMobileSmsCapsV1();
williamr@2
  9412
williamr@2
  9413
	/** Sum of TMobileSmsModeCaps constants.
williamr@2
  9414
	
williamr@2
  9415
	Modes: Common */
williamr@2
  9416
		TUint32 iSmsMode;
williamr@2
  9417
	/** Sum of TMobileSmsControlCaps constants.
williamr@2
  9418
	
williamr@2
  9419
	Modes: Common */
williamr@2
  9420
		TUint32 iSmsControl;
williamr@2
  9421
		};
williamr@2
  9422
williamr@2
  9423
/** A typedef'd packaged TMobileSmsCapsV1 for passing through a generic API member 
williamr@2
  9424
function. */
williamr@2
  9425
	typedef TPckg<TMobileSmsCapsV1> TMobileSmsCapsV1Pckg;
williamr@2
  9426
williamr@2
  9427
	IMPORT_C TInt GetCaps(TDes8& aCaps) const;
williamr@2
  9428
williamr@2
  9429
	// Definitions for sizes of TPDU and User Data fields
williamr@2
  9430
	enum 
williamr@2
  9431
		{ 
williamr@2
  9432
		KGsmTpduSize = 165,		// 140 bytes user data + 25 bytes TPDU header
williamr@2
  9433
		KCdmaTpduSize  = 256	// Max size of Bearer Data in Transport Layer message
williamr@2
  9434
		};
williamr@2
  9435
williamr@2
  9436
/** A typedef'd buffer for GSM or WCDMA message data. */
williamr@2
  9437
	typedef TBuf8<KGsmTpduSize>			TMobileSmsGsmTpdu;
williamr@2
  9438
/** A typedef'd buffer for CDMA message data. */
williamr@2
  9439
	typedef TBuf8<KCdmaTpduSize>		TMobileSmsCdmaTpdu;
williamr@2
  9440
williamr@2
  9441
	/***********************************************************************************/
williamr@2
  9442
	//
williamr@2
  9443
	// Enum used by TSY to distinguish which SMS attribute class is used by client
williamr@2
  9444
	//
williamr@2
  9445
	/***********************************************************************************/
williamr@2
  9446
williamr@2
  9447
/** Used by TSY to distinguish which SMS attribute class is used by client.
williamr@2
  9448
williamr@2
  9449
Modes: Common
williamr@2
  9450
williamr@2
  9451
@see RMobileSmsMessaging::TMobileSmsSendAttributesV1 */
williamr@2
  9452
	enum TMobileSmsAttributeExtensionId
williamr@2
  9453
		{
williamr@2
  9454
	/** The iExtensionId contents indicate that the packaged class is a TMobileSmsAttributesV1. */
williamr@2
  9455
		KETelMobileSmsAttributesV1=KETelExtMultimodeV1,
williamr@2
  9456
	/** The iExtensionId contents indicate that the packaged class is a TMobileSmsReceiveAttributesV1. */
williamr@2
  9457
		KETelMobileSmsReceiveAttributesV1,
williamr@2
  9458
	/** The iExtensionId contents indicate that the packaged class is a TMobileSmsSendAttributesV1. */
williamr@2
  9459
		KETelMobileSmsSendAttributesV1,
williamr@2
  9460
	/** The iExtensionId contents indicate that the packaged class is a TMobileSmsCdmaSendAttributesV4. */
williamr@2
  9461
		KETelMobileSmsCdmaSendAttributesV4=KETelExtMultimodeV4
williamr@2
  9462
		};
williamr@2
  9463
williamr@2
  9464
/** Defines common attributes of all SMS messages.
williamr@2
  9465
williamr@2
  9466
Modes: CDMA
williamr@2
  9467
williamr@2
  9468
@see TMobileSmsAttributesV1 */
williamr@2
  9469
	enum TMobileSmsAttributeFlags
williamr@2
  9470
		{
williamr@2
  9471
	/** The iCdmaTeleservice field is valid in the attribute class.
williamr@2
  9472
	
williamr@2
  9473
	Modes: CDMA */
williamr@2
  9474
		KCdmaTeleservice = 0x00000001,
williamr@2
  9475
	/** The iCdmaServiceCategory field is valid in the attribute class.
williamr@2
  9476
	
williamr@2
  9477
	Modes: CDMA */
williamr@2
  9478
		KCdmaServiceCategory = 0x00000002,
williamr@2
  9479
	/** The iGsmServiceCentre field is valid in the attribute class.
williamr@2
  9480
	
williamr@2
  9481
	Modes: GSM/WCDMA */
williamr@2
  9482
		KGsmServiceCentre = 0x00000004,
williamr@2
  9483
	/** The iDataFormat field is valid in the attribute class.
williamr@2
  9484
	
williamr@2
  9485
	Modes: Common */
williamr@2
  9486
		KSmsDataFormat = 0x00000008,	
williamr@2
  9487
	/** The iOriginator or iDestination field is valid in the attribute class.
williamr@2
  9488
	
williamr@2
  9489
	Modes: Common */
williamr@2
  9490
		KRemotePartyInfo = 0x00000010,
williamr@2
  9491
	/** The iStatus field is valid in the attribute class.
williamr@2
  9492
	
williamr@2
  9493
	Modes: Common */
williamr@2
  9494
		KIncomingStatus = 0x00000020,
williamr@2
  9495
	/** The iStore and iStoreIndex fields are valid in the attribute class.
williamr@2
  9496
	
williamr@2
  9497
	Modes: Common */
williamr@2
  9498
		KStorageLocation = 0x00000040,
williamr@2
  9499
	/** The iMsgRef field is valid in the attribute class.
williamr@2
  9500
williamr@2
  9501
	Modes: Common */
williamr@2
  9502
		KMessageReference = 0x00000080,
williamr@2
  9503
	/** The iSubmitReport field is valid in the attribute class.
williamr@2
  9504
	
williamr@2
  9505
	Modes: GSM/WCDMA */
williamr@2
  9506
		KGsmSubmitReport = 0x00000100,
williamr@2
  9507
	/** The iMore field is valid in the attribute class.
williamr@2
  9508
	
williamr@2
  9509
	Modes: Common */
williamr@2
  9510
		KMoreToSend = 0x00000200,
williamr@2
  9511
	/** Indicates to the TSY that it should keep the traffic channel open since there is
williamr@2
  9512
	    another message ready to be sent immediately after this one (typically used when
williamr@2
  9513
	    sending messages to multiple recipients). TSY should then keep the channel open 
williamr@2
  9514
	    until a message is sent with this bit cleared.
williamr@2
  9515
	
williamr@2
  9516
	Modes: CDMA */
williamr@2
  9517
		KCdmaKeepChannelOpen = 0x00000400,
williamr@2
  9518
	/** Indicates to the TSY that it must wait for the Transport Layer Acknowledgement from the network
williamr@2
  9519
	
williamr@2
  9520
	Modes: CDMA */
williamr@2
  9521
		KCdmaTLAckRequired = 0x00000800,
williamr@2
  9522
	/** The iAddressAuthentication field is valid in the attribute class.
williamr@2
  9523
	
williamr@2
  9524
	Modes: CDMA */
williamr@2
  9525
		KCdmaAddressAuthentication = 0x00001000
williamr@2
  9526
		};
williamr@2
  9527
williamr@2
  9528
/** Defines the SMS data format.
williamr@2
  9529
williamr@2
  9530
Modes: Common */
williamr@2
  9531
	enum TMobileSmsDataFormat
williamr@2
  9532
		{
williamr@2
  9533
	/** The format is not specified.
williamr@2
  9534
williamr@2
  9535
	Modes: Common */
williamr@2
  9536
		EFormatUnspecified,
williamr@2
  9537
	/** The message data format complies to a SMS TPDU coded as octets according to 
williamr@2
  9538
	GSM 03.40.
williamr@2
  9539
	
williamr@2
  9540
	Modes: GSM/WCDMA */
williamr@2
  9541
		EFormatGsmTpdu,
williamr@2
  9542
	/** The message data format complies to a SMS Teleservice PDU coded as octets according 
williamr@2
  9543
	to IS-637.
williamr@2
  9544
	
williamr@2
  9545
	Modes: CDMA */
williamr@2
  9546
		EFormatCdmaTpdu
williamr@2
  9547
		};
williamr@2
  9548
williamr@2
  9549
	class TMobileSmsAttributesV1 : public RMobilePhone::TMultimodeType
williamr@2
  9550
	/** Defines common attributes of all SMS messages. 
williamr@2
  9551
	@publishedPartner
williamr@2
  9552
	@released
williamr@2
  9553
	*/
williamr@2
  9554
		{
williamr@2
  9555
	protected:
williamr@2
  9556
		TMobileSmsAttributesV1();
williamr@2
  9557
	public:
williamr@2
  9558
	/** The bit-mask flags from TMobileSmsAttributeFlags indicating which attributes 
williamr@2
  9559
	are present in this instance.
williamr@2
  9560
	
williamr@2
  9561
	Modes: Common */
williamr@2
  9562
		TUint32 iFlags;
williamr@2
  9563
	/** The format of the message data buffer .
williamr@2
  9564
	
williamr@2
  9565
	Modes: Common
williamr@2
  9566
	
williamr@2
  9567
	@see TMobileSmsDataFormat */
williamr@2
  9568
		TMobileSmsDataFormat iDataFormat;
williamr@2
  9569
	/** The teleservice this message belongs to, coded according to SMS teleservice 
williamr@2
  9570
	identifier values table in TIA/EIA-41-D.
williamr@2
  9571
	
williamr@2
  9572
	Modes: CDMA */
williamr@2
  9573
		TInt iCdmaTeleservice;
williamr@2
  9574
	/** The service category this message belongs to.
williamr@2
  9575
	
williamr@2
  9576
	Modes: CDMA */
williamr@2
  9577
		TInt iCdmaServiceCategory;
williamr@2
  9578
	/** The GSM service centre used for this SMS.
williamr@2
  9579
	
williamr@2
  9580
	Modes: GSM/WCDMA
williamr@2
  9581
	
williamr@2
  9582
	@see RMobilePhone::TMobileAddress */
williamr@2
  9583
		RMobilePhone::TMobileAddress iGsmServiceCentre;
williamr@2
  9584
		};
williamr@2
  9585
williamr@2
  9586
/** A typedef'd packaged TMobileSmsAttributesV1 for passing through a generic 
williamr@2
  9587
API member function. */
williamr@2
  9588
	typedef TPckg<TMobileSmsAttributesV1> TMobileSmsAttributesV1Pckg;
williamr@2
  9589
williamr@2
  9590
/** Defines attributes of incoming SMS messages.
williamr@2
  9591
williamr@2
  9592
Modes: Common */
williamr@2
  9593
	enum TMobileSmsIncomingStatus
williamr@2
  9594
		{
williamr@2
  9595
	/** The status of the incoming SMS is unknown. */
williamr@2
  9596
		EMtMessageUnknownStatus,
williamr@2
  9597
	/** The incoming SMS is not stored phone-side but has already been acknowledged 
williamr@2
  9598
	by the phone. */
williamr@2
  9599
		EMtMessageUnstoredPhoneAck,
williamr@2
  9600
	/** The incoming SMS is not stored phone-side and needs to be acknowledged by the 
williamr@2
  9601
	client. */
williamr@2
  9602
		EMtMessageUnstoredClientAck,
williamr@2
  9603
	/** The incoming SMS is stored phone-side. */
williamr@2
  9604
		EMtMessageStored
williamr@2
  9605
		};
williamr@2
  9606
williamr@2
  9607
	class TMobileSmsReceiveAttributesV1 : public TMobileSmsAttributesV1
williamr@2
  9608
	/** Defines attributes of incoming SMS messages. 
williamr@2
  9609
	@publishedPartner
williamr@2
  9610
	@released
williamr@2
  9611
	*/
williamr@2
  9612
		{
williamr@2
  9613
	public:
williamr@2
  9614
		IMPORT_C TMobileSmsReceiveAttributesV1();
williamr@2
  9615
	public:
williamr@2
  9616
	/** Indicates the status of the incoming message -whether it is stored phone-side 
williamr@2
  9617
	or has been acknowledged by the phone.
williamr@2
  9618
	
williamr@2
  9619
	Modes: Common
williamr@2
  9620
	
williamr@2
  9621
	@see TMobileSmsIncomingStatus */
williamr@2
  9622
		TMobileSmsIncomingStatus	 iStatus;	// indicates if MT message is stored phone-side
williamr@2
  9623
	/** If the message is stored phone-side, indicates the index (within the phone-side 
williamr@2
  9624
	store) where the message is stored.
williamr@2
  9625
	
williamr@2
  9626
	Modes: Common */
williamr@2
  9627
		TInt						 iStoreIndex;// used if MT message is stored phone-side
williamr@2
  9628
	/** If the message is stored phone-side, indicates the name of the appropriate 
williamr@2
  9629
	phone-side store.
williamr@2
  9630
	
williamr@2
  9631
	Modes: Common
williamr@2
  9632
	
williamr@2
  9633
	@see RMobilePhone::TMobileName */
williamr@2
  9634
		RMobilePhone::TMobileName	 iStore;		// used if MT message is stored phone-side
williamr@2
  9635
	/** The address of the originator of the SMS.
williamr@2
  9636
williamr@2
  9637
	Modes: Common
williamr@2
  9638
	
williamr@2
  9639
	@see RMobilePhone::TMobileAddress */
williamr@2
  9640
		RMobilePhone::TMobileAddress iOriginator;
williamr@2
  9641
		};
williamr@2
  9642
williamr@2
  9643
/** A typedef'd packaged TMobileSmsReceiveAttributesV1 for passing through a generic 
williamr@2
  9644
API member function. */
williamr@2
  9645
	typedef TPckg<TMobileSmsReceiveAttributesV1> TMobileSmsReceiveAttributesV1Pckg;
williamr@2
  9646
williamr@2
  9647
	
williamr@2
  9648
williamr@2
  9649
	class TMobileSmsSendAttributesV1 : public TMobileSmsAttributesV1
williamr@2
  9650
	/** Defines attributes of sent SMS messages.
williamr@2
  9651
	@publishedPartner
williamr@2
  9652
	@released */
williamr@2
  9653
		{
williamr@2
  9654
	public:
williamr@2
  9655
		IMPORT_C TMobileSmsSendAttributesV1();
williamr@2
  9656
	public:
williamr@2
  9657
	/** The message reference assigned to a sent message.
williamr@2
  9658
	
williamr@2
  9659
	Modes: Common */
williamr@2
  9660
		TUint16						 iMsgRef;
williamr@2
  9661
	/** A boolean indicating whether the client is going to send another SMS immediately 
williamr@2
  9662
	after this one. Equals ETrue if this is the case, EFalse if it is not.
williamr@2
  9663
	
williamr@2
  9664
	Modes: Common */
williamr@2
  9665
		TBool						 iMore;
williamr@2
  9666
	/** The SMS-SUBMIT-REPORT TPDU received from network in response to a sent message.
williamr@2
  9667
	
williamr@2
  9668
	Modes: GSM/WCDMA
williamr@2
  9669
	
williamr@2
  9670
	@see TMobileSmsGsmTpdu */
williamr@2
  9671
		TMobileSmsGsmTpdu			 iSubmitReport;
williamr@2
  9672
	/** The address of the destination of the SMS.
williamr@2
  9673
	
williamr@2
  9674
	Modes: Common
williamr@2
  9675
	
williamr@2
  9676
	@see RMobilePhone::TMobileAddress */
williamr@2
  9677
		RMobilePhone::TMobileAddress iDestination;
williamr@2
  9678
		};
williamr@2
  9679
	
williamr@2
  9680
/** A typedef'd packaged TMobileSmsSendAttributesV1 for passing through a generic 
williamr@2
  9681
API member function. */
williamr@2
  9682
	typedef TPckg<TMobileSmsSendAttributesV1> TMobileSmsSendAttributesV1Pckg;
williamr@2
  9683
williamr@2
  9684
	class TMobileSmsCdmaSendAttributesV4 : public TMobileSmsAttributesV1
williamr@2
  9685
	/**
williamr@2
  9686
	Defines attributes of sent SMS messages (CDMA only).
williamr@2
  9687
williamr@2
  9688
	@publishedPartner
williamr@2
  9689
	@released
williamr@2
  9690
	*/
williamr@2
  9691
		{
williamr@2
  9692
	public:
williamr@2
  9693
		IMPORT_C TMobileSmsCdmaSendAttributesV4();
williamr@2
  9694
	public:
williamr@2
  9695
		/** 
williamr@2
  9696
		The message id allocated by the SMS stack. The TSY should
williamr@2
  9697
		retrieve the value from iCdmaTeleserviceId to determine
williamr@2
  9698
		which teleservice this message id corresponds to. 
williamr@2
  9699
		*/
williamr@2
  9700
		TUint16 iMsgRef;
williamr@2
  9701
		/** Indicates whether the client is going to send another 
williamr@2
  9702
		PDU immediately after this one (typically used when sending
williamr@2
  9703
		messages of more than one PDU). Equals ETrue if at least 
williamr@2
  9704
		one more PDU is needed to complete the message and EFalse
williamr@2
  9705
		otherwise.
williamr@2
  9706
		*/
williamr@2
  9707
		TBool iMore;
williamr@2
  9708
		/** TPDU received from network in response to a sent message */
williamr@2
  9709
		TMobileSmsCdmaTpdu iTLAck;
williamr@2
  9710
		/** The address of the destination of the SMS. */
williamr@2
  9711
		RMobilePhone::TMobileAddress iDestination;
williamr@2
  9712
		/** Transport layer authentication parameter */
williamr@2
  9713
		TUint32 iAddressAuthentication;
williamr@2
  9714
		};
williamr@2
  9715
williamr@2
  9716
/** A typedef'd packaged TMobileSmsCdmaSendAttributesV4 for passing through a generic 
williamr@2
  9717
API member function. */
williamr@2
  9718
	typedef TPckg<TMobileSmsCdmaSendAttributesV4> TMobileSmsCdmaSendAttributesV4Pckg;
williamr@2
  9719
williamr@2
  9720
	//
williamr@2
  9721
	// Setting up the storage & acknowledgement mode
williamr@2
  9722
	//
williamr@2
  9723
williamr@2
  9724
/** Defines the SMS receive modes.
williamr@2
  9725
williamr@2
  9726
Modes: Common */
williamr@2
  9727
	enum TMobileSmsReceiveMode
williamr@2
  9728
		{
williamr@2
  9729
	/** Receive mode is unspecified and phone will use its default. */
williamr@2
  9730
		EReceiveModeUnspecified,
williamr@2
  9731
	/** Phone will acknowledge but NOT store all incoming messages before passing them 
williamr@2
  9732
	onto TSY. It is client's responsibility to store the message. */
williamr@2
  9733
		EReceiveUnstoredPhoneAck,	// client stores but phone acknowledges message
williamr@2
  9734
	/** Phone will NOT acknowledge or store any incoming messages before passing them 
williamr@2
  9735
	onto TSY. It is client's responsibility to attempt storage and then either
williamr@2
  9736
	acknowledge or reject the message. */
williamr@2
  9737
		EReceiveUnstoredClientAck,	// client acknowledges and stores message
williamr@2
  9738
	/** Phone will store and acknowledge all incoming messages before passing them 
williamr@2
  9739
	onto TSY. */
williamr@2
  9740
		EReceiveStored,				// phone acknowledges and store message
williamr@2
  9741
	/** Phone may pass on either stored or unstored messages to TSY. It is client's 
williamr@2
  9742
	responsibility to check RMobileSmsMessaging::TMobileSmsReceiveAttributesV1::iStatus 
williamr@2
  9743
	to determine what action(s) the client needs to take for a message. */
williamr@2
  9744
		EReceiveEither				// client deals with stored & unstored messages
williamr@2
  9745
		};
williamr@2
  9746
		
williamr@2
  9747
	IMPORT_C void SetReceiveMode(TRequestStatus& aReqStatus, TMobileSmsReceiveMode aReceiveMode) const;
williamr@2
  9748
	IMPORT_C TInt GetReceiveMode(TMobileSmsReceiveMode& aReceiveMode) const;
williamr@2
  9749
	IMPORT_C void NotifyReceiveModeChange(TRequestStatus& aStatus, TMobileSmsReceiveMode& aReceiveMode);
williamr@2
  9750
williamr@2
  9751
	/***********************************************************************************/
williamr@2
  9752
	//
williamr@2
  9753
	// Incoming SMS
williamr@2
  9754
	//
williamr@2
  9755
	/***********************************************************************************/
williamr@2
  9756
williamr@2
  9757
	IMPORT_C void ReceiveMessage(TRequestStatus& aReqStatus, TDes8& aMsgData, TDes8& aMsgAttributes) const;
williamr@2
  9758
williamr@2
  9759
	/***********************************************************************************/
williamr@2
  9760
	//
williamr@2
  9761
	// Responding to incoming SMS
williamr@2
  9762
	//
williamr@2
  9763
	/***********************************************************************************/
williamr@2
  9764
williamr@2
  9765
	IMPORT_C void AckSmsStored(TRequestStatus& aReqStatus, const TDesC8& aMsgData, TBool aFull=EFalse) const;
williamr@2
  9766
	IMPORT_C void NackSmsStored(TRequestStatus& aReqStatus, const TDesC8& aMsgData, TInt aRpCause) const;
williamr@2
  9767
	IMPORT_C void ResumeSmsReception(TRequestStatus& aReqStatus) const;
williamr@2
  9768
williamr@2
  9769
	/***********************************************************************************/
williamr@2
  9770
	//
williamr@2
  9771
	// Outgoing SMS
williamr@2
  9772
	//
williamr@2
  9773
	/***********************************************************************************/
williamr@2
  9774
williamr@2
  9775
	IMPORT_C void SendMessage(TRequestStatus& aReqStatus, const TDesC8& aMsgData, TDes8& aMsgAttributes) const;
williamr@2
  9776
	IMPORT_C void SendMessageNoFdnCheck(TRequestStatus& aReqStatus, const TDesC8& aMsgData, TDes8& aMsgAttributes) const;
williamr@2
  9777
williamr@2
  9778
/** Defines the SMS bearer.
williamr@2
  9779
williamr@2
  9780
Modes: GSM */
williamr@2
  9781
	enum TMobileSmsBearer
williamr@2
  9782
		{
williamr@2
  9783
	/** SMS messages will only be sent over a packet-switched (GPRS) network. */
williamr@2
  9784
		ESmsBearerPacketOnly,
williamr@2
  9785
	/** SMS messages will only be sent over a circuit-switched (GSM) network. */
williamr@2
  9786
		ESmsBearerCircuitOnly,
williamr@2
  9787
	/** SMS messages will be sent over the packet-switched (GPRS) network if possible, 
williamr@2
  9788
	otherwise over circuit-switched (GSM) network. */
williamr@2
  9789
		ESmsBearerPacketPreferred,
williamr@2
  9790
	/** SMS messages will be sent over the circuit-switched (GSM) network if possible, 
williamr@2
  9791
	otherwise over packet-switched (GPRS) network. */
williamr@2
  9792
		ESmsBearerCircuitPreferred
williamr@2
  9793
		};
williamr@2
  9794
williamr@2
  9795
	IMPORT_C void SetMoSmsBearer(TRequestStatus& aReqStatus, TMobileSmsBearer aBearer) const;
williamr@2
  9796
	IMPORT_C TInt GetMoSmsBearer(TMobileSmsBearer& aBearer) const;
williamr@2
  9797
	IMPORT_C void NotifyMoSmsBearerChange(TRequestStatus& aReqStatus, TMobileSmsBearer& aBearer);
williamr@2
  9798
williamr@2
  9799
	/***********************************************************************************/
williamr@2
  9800
	//
williamr@2
  9801
	// Get information on phone-side SMS storage
williamr@2
  9802
	//
williamr@2
  9803
	/***********************************************************************************/
williamr@2
  9804
williamr@2
  9805
	IMPORT_C TInt EnumerateMessageStores(TInt& aCount) const;
williamr@2
  9806
	IMPORT_C void GetMessageStoreInfo(TRequestStatus& aReqStatus, TInt aIndex, TDes8& aInfo) const;
williamr@2
  9807
williamr@2
  9808
	/***********************************************************************************/
williamr@2
  9809
	//
williamr@2
  9810
	// Read/Write SMS parameters to phone-side storage
williamr@2
  9811
	//
williamr@2
  9812
	/***********************************************************************************/
williamr@2
  9813
williamr@2
  9814
	enum { KMaxSmspTextSize=30 };
williamr@2
  9815
williamr@2
  9816
/** Defines the valid SMS parameters store.
williamr@2
  9817
williamr@2
  9818
Modes: GSM/WCDMA
williamr@2
  9819
williamr@2
  9820
@see TMobileSmspEntryV1 */
williamr@2
  9821
	enum TMobileSmspStoreValidParams
williamr@2
  9822
		{
williamr@2
  9823
	/** The entry includes a valid iDestination field. */
williamr@2
  9824
		KDestinationIncluded=0x00000001,
williamr@2
  9825
	/** The entry includes a valid iServiceCentre field. */
williamr@2
  9826
		KSCAIncluded=0x00000002,
williamr@2
  9827
	/** The entry includes a valid iProtocolId field. */
williamr@2
  9828
		KProtocolIdIncluded=0x00000004,
williamr@2
  9829
	/** The entry includes a valid iDcs field. */
williamr@2
  9830
		KDcsIncluded=0x00000008,
williamr@2
  9831
	/** The entry includes a valid iValidityPeriod field. */
williamr@2
  9832
		KValidityPeriodIncluded=0x00000010
williamr@2
  9833
 		};
williamr@2
  9834
williamr@2
  9835
	class TMobileSmspEntryV1 : public RMobilePhone::TMultimodeType
williamr@2
  9836
williamr@2
  9837
	/** Defines a set of SMS parameters. 
williamr@2
  9838
	@publishedPartner
williamr@2
  9839
	@released
williamr@2
  9840
	*/
williamr@2
  9841
		{
williamr@2
  9842
	public:
williamr@2
  9843
		IMPORT_C TMobileSmspEntryV1();
williamr@2
  9844
	public:
williamr@2
  9845
		void InternalizeL(RReadStream& aStream);
williamr@2
  9846
		void ExternalizeL(RWriteStream& aStream) const;
williamr@2
  9847
	public:
williamr@2
  9848
	/** The slot index where this SMSP entry is stored in the SIM's SMSP file. */
williamr@2
  9849
		TInt iIndex;
williamr@2
  9850
	/** A bit-wise sum of the constants defined in TMobileSmspStoreValidParams, that 
williamr@2
  9851
	specifies which parameters are valid within this entry. */
williamr@2
  9852
		TUint32	iValidParams;
williamr@2
  9853
	/** Default protocol ID. Coded according to GSM 03.40. */
williamr@2
  9854
		TUint8 iProtocolId;
williamr@2
  9855
	/** Default data coding scheme. Coded according to GSM 03.40. */
williamr@2
  9856
		TUint8 iDcs;
williamr@2
  9857
	/** Default validity period, in relative format and coded on 8 bits as defined 
williamr@2
  9858
	by GSM 03.40. */
williamr@2
  9859
		TUint8 iValidityPeriod;
williamr@2
  9860
	/** Reserved for future use. */
williamr@2
  9861
		TUint8 iReservedFiller;
williamr@2
  9862
	/** Default destination for outgoing SMS.
williamr@2
  9863
	
williamr@2
  9864
	@see RMobilePhone::TMobileAddress */
williamr@2
  9865
		RMobilePhone::TMobileAddress iDestination;
williamr@2
  9866
	/** Default service centre for outgoing SMS.
williamr@2
  9867
	
williamr@2
  9868
	@see RMobilePhone::TMobileAddress */
williamr@2
  9869
		RMobilePhone::TMobileAddress iServiceCentre;
williamr@2
  9870
	/** The alpha-tag associated with this SMSP entry, expressed as Unicode characters. */
williamr@2
  9871
		TBuf<KMaxSmspTextSize> iText;
williamr@2
  9872
		};
williamr@2
  9873
williamr@2
  9874
/** A typedef'd packaged TMobileSmspEntryV1 for passing through a generic API member
williamr@2
  9875
function. */
williamr@2
  9876
	typedef TPckg<TMobileSmspEntryV1> TMobileSmspEntryV1Pckg;
williamr@2
  9877
	IMPORT_C void StoreSmspListL(TRequestStatus& aReqStatus, CMobilePhoneSmspList* aSmspList) const;
williamr@2
  9878
	IMPORT_C void NotifySmspListChange(TRequestStatus& aReqStatus) const;
williamr@2
  9879
williamr@2
  9880
private:
williamr@2
  9881
	RMobileSmsMessaging(const RMobileSmsMessaging&);
williamr@2
  9882
	CSmsMessagingPtrHolder* iSmsMessagingPtrHolder;
williamr@2
  9883
protected:
williamr@2
  9884
	IMPORT_C void ConstructL();
williamr@2
  9885
	IMPORT_C void Destruct();
williamr@2
  9886
	};
williamr@2
  9887
williamr@2
  9888
williamr@2
  9889
/*********************************************************/
williamr@2
  9890
//
williamr@2
  9891
// Broadcast Messaging (RMobileBroadcastMessaging)
williamr@2
  9892
// 
williamr@2
  9893
/*********************************************************/
williamr@2
  9894
williamr@2
  9895
williamr@2
  9896
williamr@2
  9897
class CMobilePhoneBroadcastIdList;
williamr@2
  9898
williamr@2
  9899
class CCbsMessagingPtrHolder;
williamr@2
  9900
class RMobileBroadcastMessaging : public RTelSubSessionBase
williamr@2
  9901
/** This sub-session provides access to the broadcast message services provided 
williamr@2
  9902
by GSM/WCDMA and CDMA networks.
williamr@2
  9903
williamr@2
  9904
Clients will open a RMobileBroadcastMessaging sub-session and then wait for 
williamr@2
  9905
incoming broadcast messages. The broadcast messages received can depend upon 
williamr@2
  9906
a "message filter" which defines the languages and/or identifiers of acceptable 
williamr@2
  9907
(or unacceptable) messages. This sub-session and the function members within 
williamr@2
  9908
this section must be supported if the TSY indicates that it supports the MobileBroadcastMessaging
williamr@2
  9909
functional unit. 
williamr@2
  9910
williamr@2
  9911
@publishedPartner
williamr@2
  9912
@released*/
williamr@2
  9913
	{
williamr@2
  9914
public:
williamr@2
  9915
	
williamr@2
  9916
	friend class CRetrieveMobilePhoneBroadcastIdList;
williamr@2
  9917
williamr@2
  9918
	IMPORT_C RMobileBroadcastMessaging();
williamr@2
  9919
williamr@2
  9920
	IMPORT_C TInt Open(RMobilePhone& aPhone);
williamr@2
  9921
	IMPORT_C void Close();
williamr@2
  9922
williamr@2
  9923
	/***********************************************************************************/
williamr@2
  9924
	//
williamr@2
  9925
	// Broadcast messaging capabilities
williamr@2
  9926
	//
williamr@2
  9927
	/***********************************************************************************/
williamr@2
  9928
williamr@2
  9929
/** Broadcast capabilities.
williamr@2
  9930
williamr@2
  9931
Modes:GSM/WCDMA */
williamr@2
  9932
	enum TMobileBroadcastModeCaps
williamr@2
  9933
		{
williamr@2
  9934
	/** GSM 03.41 cell broadcast messages are supported.
williamr@2
  9935
	
williamr@2
  9936
	Modes:GSM/WCDMA */
williamr@2
  9937
		KCapsGsmTpduFormat = 0x00000001,
williamr@2
  9938
	/** IS-637-A broadcast messages are supported.
williamr@2
  9939
	
williamr@2
  9940
	Modes:CDMA */
williamr@2
  9941
		KCapsCdmaTpduFormat = 0x00000002,
williamr@2
  9942
	/** 3GPP 25.324 Release 4 cell broadcast messages are supported.
williamr@2
  9943
	
williamr@2
  9944
	Modes: WCDMA */
williamr@2
  9945
		KCapsWcdmaTpduFormat = 0x00000004
williamr@2
  9946
		};
williamr@2
  9947
williamr@2
  9948
/** Broadcast message filter capabilities.
williamr@2
  9949
williamr@2
  9950
Modes: Common
williamr@2
  9951
williamr@2
  9952
@see RMobileBroadcastMessaging::GetLanguageFilter() */
williamr@2
  9953
	enum TBroadcastMessagingFilterCaps
williamr@2
  9954
		{
williamr@2
  9955
	/** Phone supports switching broadcast messages on or off. This means the EbroadcastAcceptNone 
williamr@2
  9956
	and EBroadcastAcceptAll settings of TMobilePhoneBroadcastFilter are supported.
williamr@2
  9957
	
williamr@2
  9958
	Modes: Common */
williamr@2
  9959
		KCapsSimpleFilter = 0x00000001,
williamr@2
  9960
	/** Phone supports filtering of broadcast messages depending upon their language. 
williamr@2
  9961
	The language filter is a list of languages used only for broadcast filtering.
williamr@2
  9962
	
williamr@2
  9963
	Modes: Common
williamr@2
  9964
	
williamr@2
  9965
	@see RMobileBroadcastMessaging::GetLanguageFilter() */
williamr@2
  9966
		KCapsLangFilter = 0x00000002,
williamr@2
  9967
	/** Phone supports filtering of broadcast messages depending upon their subject. 
williamr@2
  9968
	The subject of a message is identified in GSM/WCDMA mode by the Cell Broadcast 
williamr@2
  9969
	Message Identifier (CBMI) and in CDMA mode by the Service Category.
williamr@2
  9970
	
williamr@2
  9971
	Modes: Common */
williamr@2
  9972
		KCapsIdFilter = 0x00000004
williamr@2
  9973
		};
williamr@2
  9974
williamr@2
  9975
	
williamr@2
  9976
williamr@2
  9977
	class TMobileBroadcastCapsV1 : public RMobilePhone::TMultimodeType
williamr@2
  9978
	/** Defines capabilities of Broadcast messaging. 
williamr@2
  9979
	@publishedPartner
williamr@2
  9980
	@released
williamr@2
  9981
	*/
williamr@2
  9982
		{
williamr@2
  9983
	public:
williamr@2
  9984
		IMPORT_C TMobileBroadcastCapsV1();
williamr@2
  9985
	public:
williamr@2
  9986
	/** Sum of TMobileBroadcastModeCaps constants.
williamr@2
  9987
	
williamr@2
  9988
	Modes: GSM/WCDMA */
williamr@2
  9989
		TUint32 iModeCaps;
williamr@2
  9990
	/** Sum of TBroadcastMessagingFilterCaps constants.
williamr@2
  9991
	
williamr@2
  9992
	Modes: GSM/WCDMA */
williamr@2
  9993
		TUint32 iFilterCaps;
williamr@2
  9994
		};
williamr@2
  9995
williamr@2
  9996
/** A typedef'd packaged TMobileBroadcastCapsV1 for passing through a generic API 
williamr@2
  9997
function member. */
williamr@2
  9998
	typedef TPckg<TMobileBroadcastCapsV1> TMobileBroadcastCapsV1Pckg;
williamr@2
  9999
williamr@2
 10000
	IMPORT_C TInt GetCaps(TDes8& aCaps) const;
williamr@2
 10001
williamr@2
 10002
/** Defines the broadcast attributes.
williamr@2
 10003
williamr@2
 10004
Modes: Common */
williamr@2
 10005
	enum TMobileBroadcastAttributeFlags
williamr@2
 10006
		{
williamr@2
 10007
	/** The iFormat field is valid in the attribute class.
williamr@2
 10008
	
williamr@2
 10009
	Modes: Common */
williamr@2
 10010
		KBroadcastDataFormat = 0x00000001,
williamr@2
 10011
	/** The iServiceCategory field is valid in the attribute class.
williamr@2
 10012
	
williamr@2
 10013
	Modes: CDMA */
williamr@2
 10014
		KCdmaServiceCategory = 0x00000002
williamr@2
 10015
		};
williamr@2
 10016
williamr@2
 10017
/** The mobile broadcast data format, used byTMobileBroadcastAttributesV1.
williamr@2
 10018
williamr@2
 10019
Modes: Common */
williamr@2
 10020
	enum TMobileBroadcastDataFormat
williamr@2
 10021
		{
williamr@2
 10022
	/** The message data format is not specified.
williamr@2
 10023
	
williamr@2
 10024
	Modes: Common */
williamr@2
 10025
		EFormatUnspecified,
williamr@2
 10026
	/** The message data format complies to a Cell Broadcast TPDU coded as 88 octets 
williamr@2
 10027
	(6 for header and 82 for message data) according to GSM 03.41.
williamr@2
 10028
	
williamr@2
 10029
	Modes: GSM/WCDMA */
williamr@2
 10030
		EFormatGsmTpdu,
williamr@2
 10031
	/** The message data format complies to IS-637-A encoding of the Bearer Data parameter 
williamr@2
 10032
	within the Transport Layer's SMS-Broadcast message.
williamr@2
 10033
	
williamr@2
 10034
	Modes: CDMA */
williamr@2
 10035
		EFormatCdmaTpdu,
williamr@2
 10036
	/** The message data format complies to a Cell Broadcast TPDU coded as 1252 octets 
williamr@2
 10037
	(6 for header and a maximum of 1246 for message data) according to 3GPP 25.324.
williamr@2
 10038
	
williamr@2
 10039
	Modes: WCDMA */
williamr@2
 10040
		EFormatWcdmaTpdu
williamr@2
 10041
		};
williamr@2
 10042
williamr@2
 10043
	
williamr@2
 10044
williamr@2
 10045
	class TMobileBroadcastAttributesV1 : public RMobilePhone::TMultimodeType
williamr@2
 10046
	/** Defines attributes of a Broadcast message.
williamr@2
 10047
	@publishedPartner
williamr@2
 10048
	@released
williamr@2
 10049
	*/
williamr@2
 10050
		{
williamr@2
 10051
	public:
williamr@2
 10052
		IMPORT_C TMobileBroadcastAttributesV1();
williamr@2
 10053
	public:
williamr@2
 10054
	/** The bit-mask flags indicating which attributes are present in this instance.
williamr@2
 10055
	
williamr@2
 10056
	Modes: Common
williamr@2
 10057
	
williamr@2
 10058
	@see TMobileBroadcastAttributeFlags */
williamr@2
 10059
		TUint32	iFlags;
williamr@2
 10060
	/** Format of the message data buffer.
williamr@2
 10061
	
williamr@2
 10062
	Modes: Common
williamr@2
 10063
	
williamr@2
 10064
	@see TMobileBroadcastDataFormat */
williamr@2
 10065
		TMobileBroadcastDataFormat	iFormat;
williamr@2
 10066
	/** Service category of the message.
williamr@2
 10067
	
williamr@2
 10068
	Modes: CDMA */
williamr@2
 10069
		TInt iServiceCategory;
williamr@2
 10070
		};
williamr@2
 10071
williamr@2
 10072
/** A typedef'd packaged TMobileBroadcastAttributesV1 for passing through a generic 
williamr@2
 10073
API function member. */
williamr@2
 10074
	typedef TPckg<TMobileBroadcastAttributesV1> TMobileBroadcastAttributesV1Pckg;
williamr@2
 10075
williamr@2
 10076
williamr@2
 10077
	
williamr@2
 10078
williamr@2
 10079
	class TMobileBroadcastAttributesV2 : public TMobileBroadcastAttributesV1
williamr@2
 10080
	/** Defines attributes of a UMTS Broadcast message for version v2.0 of the API. 
williamr@2
 10081
	@publishedPartner
williamr@2
 10082
	@released
williamr@2
 10083
	*/
williamr@2
 10084
		{
williamr@2
 10085
	public:
williamr@2
 10086
		IMPORT_C TMobileBroadcastAttributesV2();
williamr@2
 10087
	public:
williamr@2
 10088
	/** The number of pages that the current broadcast message consists of. The maximum 
williamr@2
 10089
	number of pages for WCDMA Broadcast messages is 15. */
williamr@2
 10090
		TInt	 iNumberOfPages;
williamr@2
 10091
	/** This parameter is used to store the message type for this broadcast message. */
williamr@2
 10092
		TUint8	 iMessageType;
williamr@2
 10093
	/** This parameter is used to store the message id for this broadcast message.
williamr@2
 10094
	
williamr@2
 10095
	This parameter is used to store the serial number for this broadcast message.
williamr@2
 10096
	
williamr@2
 10097
	This parameter is used to store the data coding scheme for this broadcast 
williamr@2
 10098
	message. */
williamr@2
 10099
		TUint16	 iMessageId;
williamr@2
 10100
	/** This parameter is used to store the serial number for this broadcast message. */
williamr@2
 10101
		TUint16	 iSerialNum;
williamr@2
 10102
	/** This parameter is used to store the data coding scheme for this broadcast message. */
williamr@2
 10103
		TUint8	 iDCS;
williamr@2
 10104
		};
williamr@2
 10105
williamr@2
 10106
/** A typedef'd packaged TMobileBroadcastAttributesV1 for passing through a generic 
williamr@2
 10107
API function member. */
williamr@2
 10108
	typedef TPckg<TMobileBroadcastAttributesV2> TMobileBroadcastAttributesV2Pckg;
williamr@2
 10109
williamr@2
 10110
	/***********************************************************************************/
williamr@2
 10111
	//
williamr@2
 10112
	// Receiving broadcast messages
williamr@2
 10113
 	//
williamr@2
 10114
	/***********************************************************************************/
williamr@2
 10115
williamr@2
 10116
	/** A constant which defines the length of the buffer to be passed to ReceiveMessage.	
williamr@2
 10117
	
williamr@2
 10118
	This constant should be used for all message types: GSM, CDMA and WCDMA.*/
williamr@2
 10119
	enum
williamr@2
 10120
		{
williamr@2
 10121
		KBroadcastPageSize = 88	
williamr@2
 10122
		};
williamr@2
 10123
	
williamr@2
 10124
	/** Buffer for received messages. 
williamr@2
 10125
	
williamr@2
 10126
	This buffer should be used for all message types: GSM, CDMA and WCDMA.*/
williamr@2
 10127
	typedef TBuf8<KBroadcastPageSize> TBroadcastPageData;
williamr@2
 10128
williamr@2
 10129
	/** Old buffer sizes.  KBroadcastPageSize should be used instead. */
williamr@2
 10130
	enum 
williamr@2
 10131
		{
williamr@2
 10132
		KGsmBroadcastDataSize = KBroadcastPageSize,
williamr@2
 10133
		KCdmaBroadcastDataSize = KBroadcastPageSize,
williamr@2
 10134
		KWCdmaBroadcastPageSize = KBroadcastPageSize
williamr@2
 10135
		};
williamr@2
 10136
williamr@2
 10137
	/** Buffer for GSM messages.  TBroadcastPageData should be used instead. */
williamr@2
 10138
	typedef TBuf8<KGsmBroadcastDataSize>  TGsmBroadcastMessageData;
williamr@2
 10139
	/** Buffer for CDMA messages.  TBroadcastPageData should be used instead.  */
williamr@2
 10140
	typedef TBuf8<KCdmaBroadcastDataSize> TCdmaBroadcastMessageData;
williamr@2
 10141
	/** Buffer for WCDMA messages.  TBroadcastPageData should be used instead. */
williamr@2
 10142
	typedef TBuf8<KWCdmaBroadcastPageSize> TWCdmaBroadcastPageData;
williamr@2
 10143
williamr@2
 10144
	IMPORT_C void ReceiveMessage(TRequestStatus& aReqStatus, TDes8& aMsgData, TDes8& aMsgAttributes) const;
williamr@2
 10145
williamr@2
 10146
	/***********************************************************************************/
williamr@2
 10147
	//
williamr@2
 10148
	// Filters
williamr@2
 10149
	//
williamr@2
 10150
	/***********************************************************************************/
williamr@2
 10151
williamr@2
 10152
/** The filter settings of the mobile phone.
williamr@2
 10153
williamr@2
 10154
Modes: Common */
williamr@2
 10155
	enum TMobilePhoneBroadcastFilter
williamr@2
 10156
		{
williamr@2
 10157
	/** The phone does not have a filter setting. */
williamr@2
 10158
		EBroadcastFilterUnspecified,
williamr@2
 10159
	/** The phone is not accepting any broadcast messages. */
williamr@2
 10160
		EBroadcastAcceptNone,
williamr@2
 10161
	/** The phone is accepting all broadcast messages. */
williamr@2
 10162
		EBroadcastAcceptAll,
williamr@2
 10163
	/** The phone is accepting those broadcast messages included within the language 
williamr@2
 10164
	and identifier filters. */
williamr@2
 10165
		EBroadcastAcceptFilter,
williamr@2
 10166
	/** The phone is rejecting those broadcast messages included within the language 
williamr@2
 10167
	or identifier filters. */
williamr@2
 10168
		EBroadcastRejectFilter
williamr@2
 10169
		};
williamr@2
 10170
williamr@2
 10171
	IMPORT_C TInt GetFilterSetting(TMobilePhoneBroadcastFilter& aSetting) const;
williamr@2
 10172
	IMPORT_C void SetFilterSetting(TRequestStatus& aReqStatus, TMobilePhoneBroadcastFilter aSetting) const;
williamr@2
 10173
	IMPORT_C void NotifyFilterSettingChange(TRequestStatus& aReqStatus, TMobilePhoneBroadcastFilter& aSetting) const;
williamr@2
 10174
williamr@2
 10175
	IMPORT_C void GetLanguageFilter(TRequestStatus& aReqStatus, TDes16& aLangFilter) const;
williamr@2
 10176
	IMPORT_C void SetLanguageFilter(TRequestStatus& aReqStatus, const TDesC16& aLangFilter) const;
williamr@2
 10177
	IMPORT_C void NotifyLanguageFilterChange(TRequestStatus& aReqStatus, TDes16& aLangFilter) const;
williamr@2
 10178
williamr@2
 10179
	class TMobileBroadcastIdEntryV1 : public RMobilePhone::TMultimodeType
williamr@2
 10180
	/** In GSM - defines a Cell Broadcast Message Identifier (CBMI) list entry. In 
williamr@2
 10181
	CDMA - defines a Service Category list entry. 
williamr@2
 10182
	@publishedPartner
williamr@2
 10183
	@released
williamr@2
 10184
	*/
williamr@2
 10185
		{
williamr@2
 10186
	public:
williamr@2
 10187
		void InternalizeL(RReadStream& aStream);
williamr@2
 10188
		void ExternalizeL(RWriteStream& aStream) const;
williamr@2
 10189
		IMPORT_C TMobileBroadcastIdEntryV1();
williamr@2
 10190
	public:
williamr@2
 10191
	/** The value of the message identifier. */
williamr@2
 10192
		TUint16	iId;
williamr@2
 10193
		};
williamr@2
 10194
williamr@2
 10195
/** Defines the broadcast types. */
williamr@2
 10196
	enum TMobileBroadcastIdType
williamr@2
 10197
		{
williamr@2
 10198
	/** GSM broadcast. */
williamr@2
 10199
		EGsmBroadcastId,
williamr@2
 10200
	/** CDMA broadcast. */
williamr@2
 10201
		ECdmaBroadcastId
williamr@2
 10202
		};
williamr@2
 10203
williamr@2
 10204
	IMPORT_C void StoreBroadcastIdListL(TRequestStatus& aReqStatus, CMobilePhoneBroadcastIdList* aIdList, TMobileBroadcastIdType aIdType);
williamr@2
 10205
	IMPORT_C void NotifyBroadcastIdListChange(TRequestStatus& aReqStatus) const;
williamr@2
 10206
williamr@2
 10207
private:
williamr@2
 10208
	RMobileBroadcastMessaging(const RMobileBroadcastMessaging&);
williamr@2
 10209
	CCbsMessagingPtrHolder* iCbsMessagingPtrHolder;
williamr@2
 10210
protected:
williamr@2
 10211
	IMPORT_C void ConstructL();
williamr@2
 10212
	IMPORT_C void Destruct();
williamr@2
 10213
	};
williamr@2
 10214
williamr@2
 10215
/*********************************************************/
williamr@2
 10216
//
williamr@2
 10217
// USSD Messaging (RMobileUssdMessaging)
williamr@2
 10218
// 
williamr@2
 10219
/*********************************************************/
williamr@2
 10220
williamr@2
 10221
williamr@2
 10222
williamr@2
 10223
class CUssdMessagingPtrHolder;
williamr@2
 10224
class RMobileUssdMessaging : public RTelSubSessionBase
williamr@2
 10225
/** Provides client access to USSD functionality provided by TSY. 
williamr@2
 10226
*/
williamr@2
 10227
	{
williamr@2
 10228
public:
williamr@2
 10229
	IMPORT_C RMobileUssdMessaging();
williamr@2
 10230
williamr@2
 10231
	IMPORT_C TInt Open(RMobilePhone& aPhone);
williamr@2
 10232
	IMPORT_C void Close();
williamr@2
 10233
williamr@2
 10234
/** Defines the USSD Messaging Format Capabilities.
williamr@2
 10235
williamr@2
 10236
Modes: GSM/WCDMA */
williamr@2
 10237
	enum TMobileUssdFormatCaps
williamr@2
 10238
		{
williamr@2
 10239
	/** USSD messages coded as a packed string within 160 octets, as defined for a 
williamr@2
 10240
	ussd-String within GSM 04.80 and GSM 03.38.
williamr@2
 10241
	
williamr@2
 10242
	Modes: GSM/WCDMA */
williamr@2
 10243
		KCapsPackedString=0x00000001
williamr@2
 10244
		};
williamr@2
 10245
williamr@2
 10246
/** Defines the USSD Messaging Type Capabilities.
williamr@2
 10247
williamr@2
 10248
Modes: GSM/WCDMA */
williamr@2
 10249
	enum TMobileUssdTypeCaps
williamr@2
 10250
		{
williamr@2
 10251
	/** Outgoing USSD messages are supported.
williamr@2
 10252
	
williamr@2
 10253
	Modes: GSM/WCDMA */
williamr@2
 10254
		KCapsMOUssd=0x00000001,
williamr@2
 10255
	/** Incoming USSD messages are supported.
williamr@2
 10256
	
williamr@2
 10257
	Modes: GSM/WCDMA */
williamr@2
 10258
		KCapsMTUssd=0x00000002
williamr@2
 10259
		};
williamr@2
 10260
williamr@2
 10261
	
williamr@2
 10262
williamr@2
 10263
	class TMobileUssdCapsV1 : public RMobilePhone::TMultimodeType
williamr@2
 10264
	/** Defines capabilities of USSD messaging. 
williamr@2
 10265
	@publishedPartner
williamr@2
 10266
	@released
williamr@2
 10267
	*/
williamr@2
 10268
		{
williamr@2
 10269
	public:
williamr@2
 10270
		IMPORT_C TMobileUssdCapsV1();
williamr@2
 10271
	/** Sum of TMobileUssdFormatCaps constants.
williamr@2
 10272
	
williamr@2
 10273
	Modes: GSM/WCDMA
williamr@2
 10274
williamr@2
 10275
	@see TMobileUssdFormatCaps */
williamr@2
 10276
		TUint32 iUssdFormat;
williamr@2
 10277
	/** Sum of TMobileUssdTypeCaps constants.
williamr@2
 10278
	
williamr@2
 10279
	Modes: GSM/WCDMA
williamr@2
 10280
williamr@2
 10281
	@see TMobileUssdTypeCaps */
williamr@2
 10282
		TUint32 iUssdTypes;
williamr@2
 10283
		};
williamr@2
 10284
williamr@2
 10285
/** A typedef'd packaged TMobileUssdCapsV1 for passing through a generic API member 
williamr@2
 10286
function. */
williamr@2
 10287
	typedef TPckg<TMobileUssdCapsV1> TMobileUssdCapsV1Pckg;
williamr@2
 10288
williamr@2
 10289
	IMPORT_C TInt GetCaps(TDes8& aCaps) const;
williamr@2
 10290
williamr@2
 10291
/** Defines the USSD Messaging Attributes.
williamr@2
 10292
williamr@2
 10293
Modes: GSM/WCDMA
williamr@2
 10294
williamr@2
 10295
@see TMobileUssdAttributesV1 */
williamr@2
 10296
	enum TMobileUssdAttributeFlags
williamr@2
 10297
		{
williamr@2
 10298
	/** The iFormat field is valid in the attribute class. */
williamr@2
 10299
		KUssdDataFormat = 0x00000001,
williamr@2
 10300
	/** The iType field is valid in the attribute class. */
williamr@2
 10301
		KUssdMessageType = 0x00000002,
williamr@2
 10302
	/** The iDcs field is valid in the attribute class. */
williamr@2
 10303
		KUssdMessageDcs = 0x00000004
williamr@2
 10304
		};
williamr@2
 10305
williamr@2
 10306
/** Defines the USSD Data Formats.
williamr@2
 10307
williamr@2
 10308
Modes: Common */
williamr@2
 10309
	enum TMobileUssdDataFormat
williamr@2
 10310
		{
williamr@2
 10311
	/** The message data format is unspecified.
williamr@2
 10312
	
williamr@2
 10313
	Modes: Common */
williamr@2
 10314
		EFormatUnspecified,
williamr@2
 10315
	/** The message data format complies to a USSD coded as 160 octets as defined for 
williamr@2
 10316
	a ussd-String within GSM 04.80 and GSM 03.38.
williamr@2
 10317
	
williamr@2
 10318
	Modes: GSM/WCDMA */
williamr@2
 10319
		EFormatPackedString
williamr@2
 10320
		};
williamr@2
 10321
williamr@2
 10322
/** Defines the USSD Message Types.
williamr@2
 10323
williamr@2
 10324
Modes: GSM/WCDMA */
williamr@2
 10325
	enum TMobileUssdMessageType
williamr@2
 10326
		{
williamr@2
 10327
	/** Message is an unknown type. */
williamr@2
 10328
		EUssdUnknown,
williamr@2
 10329
	/** Message is a mobile originated USSD request. The MS expects the network to 
williamr@2
 10330
	send a USSD MT reply. */
williamr@2
 10331
		EUssdMORequest,
williamr@2
 10332
	/** Message is a reply to a previously received network initiated USSD request. 
williamr@2
 10333
	It is a USSD MO reply. */
williamr@2
 10334
		EUssdMOReply,
williamr@2
 10335
	/** Message is a one-off network initiated USSD notification. The network expects the MS to
williamr@2
 10336
	send a USSD MO acknowledgement with empty message content. */
williamr@2
 10337
		EUssdMTNotify,
williamr@2
 10338
	/** Message is a network initiated USSD request. The network expects
williamr@2
 10339
	the MS to send a USSD MO reply. */
williamr@2
 10340
		EUssdMTRequest,
williamr@2
 10341
	/** Message is a network initiated reply to a previously sent MO USSD request. */
williamr@2
 10342
		EUssdMTReply,
williamr@2
 10343
	/** For acknowledging MT USSD notifications (empty message content). */
williamr@2
 10344
		EUssdMOAcknowledgement
williamr@2
 10345
		};
williamr@2
 10346
williamr@2
 10347
	
williamr@2
 10348
williamr@2
 10349
	class TMobileUssdAttributesV1 : public RMobilePhone::TMultimodeType
williamr@2
 10350
	/** Defines attributes of a USSD message. 
williamr@2
 10351
	@publishedPartner
williamr@2
 10352
	@released
williamr@2
 10353
	*/
williamr@2
 10354
		{
williamr@2
 10355
	public:
williamr@2
 10356
		IMPORT_C TMobileUssdAttributesV1();
williamr@2
 10357
	public:
williamr@2
 10358
	/** The TMobileUssdAttributeFlags bit-mask flags indicating which attributes are
williamr@2
 10359
	present in this instance.
williamr@2
 10360
	
williamr@2
 10361
	Modes: GSM/WCDMA
williamr@2
 10362
williamr@2
 10363
	@see TMobileUssdAttributeFlags */
williamr@2
 10364
		TUint32 iFlags;
williamr@2
 10365
	/** Format of the message data buffer.
williamr@2
 10366
	
williamr@2
 10367
	Modes: GSM/WCDMA
williamr@2
 10368
	
williamr@2
 10369
	@see TMobileUssdDataFormat */
williamr@2
 10370
		TMobileUssdDataFormat iFormat;
williamr@2
 10371
	/** The type of USSD message.
williamr@2
 10372
	
williamr@2
 10373
	Modes: GSM/WCDMA
williamr@2
 10374
	
williamr@2
 10375
	@see TMobileUssdMessageType */
williamr@2
 10376
		TMobileUssdMessageType iType;
williamr@2
 10377
	/** The Data Coding Scheme of the USSD message.
williamr@2
 10378
	
williamr@2
 10379
	Modes: GSM/WCDMA */
williamr@2
 10380
		TUint8 iDcs;
williamr@2
 10381
		};
williamr@2
 10382
	
williamr@2
 10383
/** A typedef'd packaged TMobileUssdAttributesV1 for passing through a generic 
williamr@2
 10384
API member function. */
williamr@2
 10385
	typedef TPckg<TMobileUssdAttributesV1> TMobileUssdAttributesV1Pckg;
williamr@2
 10386
williamr@2
 10387
	/***********************************************************************************/
williamr@2
 10388
	//
williamr@2
 10389
	// Receiving USSD messages
williamr@2
 10390
 	//
williamr@2
 10391
	/***********************************************************************************/
williamr@2
 10392
williamr@2
 10393
	enum 
williamr@2
 10394
		{
williamr@2
 10395
		KGsmUssdDataSize = 160
williamr@2
 10396
		};
williamr@2
 10397
williamr@2
 10398
/** A typedef'd buffer to hold the message data. */
williamr@2
 10399
	typedef TBuf8<KGsmUssdDataSize> TGsmUssdMessageData;
williamr@2
 10400
williamr@2
 10401
	IMPORT_C void ReceiveMessage(TRequestStatus& aReqStatus, TDes8& aMsgData, TDes8& aMsgAttributes) const;
williamr@2
 10402
williamr@2
 10403
	/***********************************************************************************/
williamr@2
 10404
	//
williamr@2
 10405
	// Sending USSD messages
williamr@2
 10406
	//
williamr@2
 10407
	/***********************************************************************************/
williamr@2
 10408
williamr@2
 10409
	IMPORT_C void SendMessage(TRequestStatus& aReqStatus, const TDesC8& aMsgData, const TDesC8& aMsgAttributes) const;
williamr@2
 10410
	IMPORT_C void SendMessageNoFdnCheck(TRequestStatus& aReqStatus, const TDesC8& aMsgData, const TDesC8& aMsgAttributes) const;
williamr@2
 10411
	
williamr@2
 10412
	IMPORT_C void SendRelease(TRequestStatus& aReqStatus, TDes8& aReturnResult) const;
williamr@2
 10413
	IMPORT_C void NotifyNetworkRelease(TRequestStatus& aReqStatus, TDes8& aReturnResult) const;
williamr@2
 10414
	IMPORT_C void NotifyNetworkRelease(TRequestStatus& aReqStatus, TDes8& aMsgData, TDes8& aMsgAttributes) const;
williamr@2
 10415
williamr@2
 10416
private:
williamr@2
 10417
	RMobileUssdMessaging(const RMobileUssdMessaging&);
williamr@2
 10418
	CUssdMessagingPtrHolder* iUssdMessagingPtrHolder;
williamr@2
 10419
protected:
williamr@2
 10420
	IMPORT_C void ConstructL();
williamr@2
 10421
	IMPORT_C void Destruct();
williamr@2
 10422
	};
williamr@2
 10423
williamr@2
 10424
williamr@2
 10425
williamr@2
 10426
/*********************************************************/
williamr@2
 10427
//
williamr@2
 10428
// SMS Message Storage (RMobileSmsStore)
williamr@2
 10429
//
williamr@2
 10430
/*********************************************************/
williamr@2
 10431
williamr@2
 10432
williamr@2
 10433
williamr@2
 10434
class CSmsStorePtrHolder;
williamr@2
 10435
class CMobilePhoneSmsList;
williamr@2
 10436
class RMobileSmsStore : public RMobilePhoneStore
williamr@2
 10437
/** Provides client access to SMS storage functionality provided by TSY.
williamr@2
 10438
@publishedPartner
williamr@2
 10439
@released
williamr@2
 10440
*/
williamr@2
 10441
	{
williamr@2
 10442
public:
williamr@2
 10443
williamr@2
 10444
	IMPORT_C RMobileSmsStore();
williamr@2
 10445
	IMPORT_C TInt Open(RMobileSmsMessaging& aMessaging, const TDesC& aStoreName);
williamr@2
 10446
	IMPORT_C void Close();
williamr@2
 10447
williamr@2
 10448
/** Defines the SMS Store Capabilities.
williamr@2
 10449
williamr@2
 10450
Modes: Common */
williamr@2
 10451
	enum TMobileSmsStoreCaps
williamr@2
 10452
		{
williamr@2
 10453
	/** The store contains unread, incoming SMS entries.
williamr@2
 10454
	
williamr@2
 10455
	Modes: Common */
williamr@2
 10456
		KCapsUnreadMessages = 0x00000001,
williamr@2
 10457
	/** The store contains read, incoming SMS entries.
williamr@2
 10458
	
williamr@2
 10459
	Modes: Common */
williamr@2
 10460
		KCapsReadMessages = 0x00000002,
williamr@2
 10461
	/** The store contains sent SMS entries.
williamr@2
 10462
	
williamr@2
 10463
	Modes: Common */
williamr@2
 10464
		KCapsSentMessages = 0x00000004,
williamr@2
 10465
	/** The store contains un sent SMS entries. */
williamr@2
 10466
		KCapsUnsentMessages = 0x00000008,
williamr@2
 10467
	/** The store contains GSM SMS message entries – so TMobileGsmSmsEntryV1 class 
williamr@2
 10468
	should be used.
williamr@2
 10469
	
williamr@2
 10470
	Modes: GSM/WCDMA */
williamr@2
 10471
		KCapsGsmMessages = 0x00000010,
williamr@2
 10472
	/** The store contains CDMA SMS message entries – so TMobileCdmaSmsEntryV1 class 
williamr@2
 10473
	should be used.
williamr@2
 10474
	
williamr@2
 10475
	Modes: CDMA */
williamr@2
 10476
		KCapsCdmaMessages = 0x00000020
williamr@2
 10477
		};
williamr@2
 10478
williamr@2
 10479
/** Defines contents of a fixed-size, stored SMS entry.
williamr@2
 10480
williamr@2
 10481
Modes: Common */
williamr@2
 10482
	enum TMobileSmsStoreStatus
williamr@2
 10483
		{
williamr@2
 10484
	/** The status of the SMS is unknown. */
williamr@2
 10485
		EStoredMessageUnknownStatus,
williamr@2
 10486
	/** The SMS is stored phone-side. It is an incoming message that has not been read 
williamr@2
 10487
	yet. */
williamr@2
 10488
		EStoredMessageUnread,
williamr@2
 10489
	/** The SMS is stored phone-side. It is an incoming message that has already been 
williamr@2
 10490
	read. */
williamr@2
 10491
		EStoredMessageRead,
williamr@2
 10492
	/** The SMS is stored phone-side. It is an outgoing message that has not been sent 
williamr@2
 10493
	yet. */
williamr@2
 10494
		EStoredMessageUnsent,
williamr@2
 10495
	/** The SMS is stored phone-side. It is an outgoing message that has already been 
williamr@2
 10496
	sent but a delivery/status report has either not been received yet or was 
williamr@2
 10497
	not requested in the first place. */
williamr@2
 10498
		EStoredMessageSent,
williamr@2
 10499
	/** The SMS is stored phone-side. It is an outgoing message that has already been 
williamr@2
 10500
	sent and a delivery/status report has been received */
williamr@2
 10501
		EStoredMessageDelivered
williamr@2
 10502
		};
williamr@2
 10503
williamr@2
 10504
	//
williamr@2
 10505
	// Enum used by TSY to distinguish which SMS entry class is used by client
williamr@2
 10506
	//
williamr@2
 10507
williamr@2
 10508
/** Used by TSY to distinguish which SMS entry class is used by client. */
williamr@2
 10509
	enum TMobileSmsEntryExtensionId
williamr@2
 10510
		{
williamr@2
 10511
	/** Type is unknown. */
williamr@2
 10512
		KETelMobileSmsEntryV1=KETelExtMultimodeV1,
williamr@2
 10513
	/** The iExtensionId contents indicate that the packaged class is a TMobileGsmSmsEntryV1.
williamr@2
 10514
	
williamr@2
 10515
	Also used to indicate that GSM SMS entries will be retrieved by CRetrieveMobilePhoneSmsList. */
williamr@2
 10516
		KETelMobileGsmSmsEntryV1,
williamr@2
 10517
	/** The iExtensionId contents indicate that the packaged class is a TMobileCdmaSmsEntryV1.
williamr@2
 10518
	
williamr@2
 10519
	Also used to indicate that CDMA SMS entries will be retrieved by CRetrieveMobilePhoneSmsList. */
williamr@2
 10520
		KETelMobileCdmaSmsEntryV1
williamr@2
 10521
		};
williamr@2
 10522
williamr@2
 10523
	class TMobileSmsEntryV1 : public RMobilePhoneStore::TMobilePhoneStoreEntryV1
williamr@2
 10524
	/** Defines contents of a fixed-size, stored SMS entry.
williamr@2
 10525
	@publishedPartner
williamr@2
 10526
	@released 
williamr@2
 10527
	*/
williamr@2
 10528
		{
williamr@2
 10529
	public:
williamr@2
 10530
		void InternalizeL(RReadStream& aStream);
williamr@2
 10531
		void ExternalizeL(RWriteStream& aStream) const;
williamr@2
 10532
	protected:
williamr@2
 10533
		TMobileSmsEntryV1();
williamr@2
 10534
	public:
williamr@2
 10535
	/** The status of the stored message.
williamr@2
 10536
	
williamr@2
 10537
	Modes: Common
williamr@2
 10538
	
williamr@2
 10539
	@see TMobileSmsStoreStatus */
williamr@2
 10540
		TMobileSmsStoreStatus	iMsgStatus;	
williamr@2
 10541
		};
williamr@2
 10542
williamr@2
 10543
/** A typedef'd packaged TMobileSmsEntryV1 for passing through a generic API 
williamr@2
 10544
member function. */
williamr@2
 10545
	typedef TPckg<TMobileSmsEntryV1> TMobileSmsEntryV1Pckg;
williamr@2
 10546
	
williamr@2
 10547
	class TMobileGsmSmsEntryV1 : public TMobileSmsEntryV1
williamr@2
 10548
/** Defines contents of a fixed-size, stored GSM SMS entry.
williamr@2
 10549
@publishedPartner
williamr@2
 10550
@released */
williamr@2
 10551
		{
williamr@2
 10552
	public:
williamr@2
 10553
		void InternalizeL(RReadStream& aStream);
williamr@2
 10554
		void ExternalizeL(RWriteStream& aStream) const;
williamr@2
 10555
	public:
williamr@2
 10556
		IMPORT_C TMobileGsmSmsEntryV1();
williamr@2
 10557
	public:
williamr@2
 10558
	/** The service centre to use (or used) for the message.
williamr@2
 10559
	
williamr@2
 10560
	Modes: GSM/WCDMA
williamr@2
 10561
	
williamr@2
 10562
	@see RMobilePhone::TMobileAddress */
williamr@2
 10563
		RMobilePhone::TMobileAddress iServiceCentre;
williamr@2
 10564
	/** The GSM 03.40 TPDU.
williamr@2
 10565
	
williamr@2
 10566
	Modes: GSM/WCDMA
williamr@2
 10567
	
williamr@2
 10568
	@see RMobileSmsMessaging::TMobileSmsGsmTpdu */
williamr@2
 10569
		RMobileSmsMessaging::TMobileSmsGsmTpdu	iMsgData;	
williamr@2
 10570
		};
williamr@2
 10571
williamr@2
 10572
/** A typedef'd packaged TMobileGsmSmsEntryV1 for passing through a generic API 
williamr@2
 10573
member function. */
williamr@2
 10574
	typedef TPckg<TMobileGsmSmsEntryV1> TMobileGsmSmsEntryV1Pckg;
williamr@2
 10575
williamr@2
 10576
	class TMobileCdmaSmsEntryV1 : public TMobileSmsEntryV1
williamr@2
 10577
	/** Defines contents of a fixed-size, stored CDMA SMS entry. 
williamr@2
 10578
	@publishedPartner
williamr@2
 10579
	@released
williamr@2
 10580
	*/
williamr@2
 10581
		{
williamr@2
 10582
	public:
williamr@2
 10583
		void InternalizeL(RReadStream& aStream);
williamr@2
 10584
		void ExternalizeL(RWriteStream& aStream) const;
williamr@2
 10585
	public:
williamr@2
 10586
		IMPORT_C TMobileCdmaSmsEntryV1();
williamr@2
 10587
	public:
williamr@2
 10588
	/** The teleservice identifier of the stored message.
williamr@2
 10589
	
williamr@2
 10590
	Modes: CDMA */
williamr@2
 10591
		TInt iTeleservice;
williamr@2
 10592
	/** The service category of the stored message.
williamr@2
 10593
	
williamr@2
 10594
	Modes: CDMA */
williamr@2
 10595
		TInt iServiceCategory;
williamr@2
 10596
	/** The remote party (destination or originator) of the stored message.
williamr@2
 10597
	
williamr@2
 10598
	Modes: CDMA
williamr@2
 10599
	
williamr@2
 10600
	@see RMobilePhone::TMobileAddress */
williamr@2
 10601
		RMobilePhone::TMobileAddress iRemoteParty;
williamr@2
 10602
	/** The teleservice layer bearer data of the stored message.
williamr@2
 10603
	
williamr@2
 10604
	Modes: CDMA
williamr@2
 10605
	
williamr@2
 10606
	@see RMobileSmsMessaging::TMobileSmsCdmaTpdu */
williamr@2
 10607
		RMobileSmsMessaging::TMobileSmsCdmaTpdu iMsgData;	
williamr@2
 10608
		};
williamr@2
 10609
williamr@2
 10610
/** A typedef'd packaged TMobileCdmaSmsEntryV1 for passing through a generic API 
williamr@2
 10611
member function. */
williamr@2
 10612
	typedef TPckg<TMobileCdmaSmsEntryV1> TMobileCdmaSmsEntryV1Pckg;
williamr@2
 10613
williamr@2
 10614
protected:
williamr@2
 10615
	IMPORT_C void ConstructL();
williamr@2
 10616
private:
williamr@2
 10617
	RMobileSmsStore(const RMobileSmsStore&);
williamr@2
 10618
	};
williamr@2
 10619
williamr@2
 10620
/*********************************************************/
williamr@2
 10621
//
williamr@2
 10622
// NAM Storage (RMobileNamStore)
williamr@2
 10623
//
williamr@2
 10624
/*********************************************************/
williamr@2
 10625
williamr@2
 10626
williamr@2
 10627
williamr@2
 10628
class CNamStorePtrHolder;
williamr@2
 10629
class CMobilePhoneNamList;
williamr@2
 10630
class CMobilePhoneNamListV4;
williamr@2
 10631
williamr@2
 10632
class RMobileNamStore : public RMobilePhoneStore
williamr@2
 10633
/**
williamr@2
 10634
Provides client access to NAM storage functionality provided by TSY
williamr@2
 10635
williamr@2
 10636
*/
williamr@2
 10637
	{
williamr@2
 10638
public:
williamr@2
 10639
	IMPORT_C RMobileNamStore();
williamr@2
 10640
	IMPORT_C TInt Open(RMobilePhone& aPhone);
williamr@2
 10641
	IMPORT_C void Close();
williamr@2
 10642
williamr@2
 10643
williamr@2
 10644
williamr@2
 10645
	class TMobileNamStoreInfoV1 : public RMobilePhoneStore::TMobilePhoneStoreInfoV1
williamr@2
 10646
	/**
williamr@2
 10647
	Defines information about a NAM store
williamr@2
 10648
	
williamr@2
 10649
	@publishedPartner
williamr@2
 10650
    @released
williamr@2
 10651
	*/
williamr@2
 10652
		{
williamr@2
 10653
	public:
williamr@2
 10654
		IMPORT_C TMobileNamStoreInfoV1();
williamr@2
 10655
	public:
williamr@2
 10656
	/** The number of enabled NAMs within the NAM store.
williamr@2
 10657
	
williamr@2
 10658
	Modes: CDMA */
williamr@2
 10659
		TInt iNamCount;
williamr@2
 10660
	/** The index of the NAM that is currently the active NAM, will be between 0 and 
williamr@2
 10661
	iNamCount-1.
williamr@2
 10662
	
williamr@2
 10663
	Modes: CDMA */
williamr@2
 10664
		TInt iActiveNam;
williamr@2
 10665
		};
williamr@2
 10666
williamr@2
 10667
/** A typedef'd packaged TMobileNamStoreInfoV1 for passing through a generic API 
williamr@2
 10668
member function. */
williamr@2
 10669
	typedef TPckg<TMobileNamStoreInfoV1> TMobileNamStoreInfoV1Pckg;
williamr@2
 10670
williamr@2
 10671
	IMPORT_C void SetActiveNam(TRequestStatus& aReqStatus, TInt aNamId) const;
williamr@2
 10672
williamr@2
 10673
	enum
williamr@2
 10674
		{
williamr@2
 10675
		/* The original maximum NAM parameter size for a TMobileNamEntryV1 */
williamr@2
 10676
		KMaxNamParamSize = 64,
williamr@2
 10677
		/* Updated maximum NAM parameter size for TMobileNamEntryV4 */
williamr@2
 10678
		KMaxNamParamSizeV4 = 256
williamr@2
 10679
		};
williamr@2
 10680
williamr@2
 10681
	class TMobileNamEntryV1 : public RMobilePhoneStore::TMobilePhoneStoreEntryV1
williamr@2
 10682
	/**
williamr@2
 10683
	Defines contents of a NAM store entry
williamr@2
 10684
	
williamr@2
 10685
	@publishedPartner
williamr@2
 10686
	@released
williamr@2
 10687
	*/
williamr@2
 10688
		{
williamr@2
 10689
	public:
williamr@2
 10690
		IMPORT_C TMobileNamEntryV1();
williamr@2
 10691
	public:
williamr@2
 10692
		void InternalizeL(RReadStream& aStream);
williamr@2
 10693
		void ExternalizeL(RWriteStream& aStream) const;
williamr@2
 10694
	public:
williamr@2
 10695
	/** The NAM that is to be accessed, will be between 0 and TMobileNamStoreInfoV1::iNamCount-1.
williamr@2
 10696
	
williamr@2
 10697
	Modes: CDMA */
williamr@2
 10698
		TInt iNamId;
williamr@2
 10699
	/** The identifier of the NAM parameter to be accessed.
williamr@2
 10700
	
williamr@2
 10701
	TSY must define values of parameter identifiers.
williamr@2
 10702
	
williamr@2
 10703
	Modes: CDMA */
williamr@2
 10704
		TInt iParamIdentifier;
williamr@2
 10705
	/** The data contents of the selected parameter.
williamr@2
 10706
	
williamr@2
 10707
	Modes: CDMA
williamr@2
 10708
	
williamr@2
 10709
	@see KMaxNamParamSize */
williamr@2
 10710
		TBuf8<KMaxNamParamSize> iData;
williamr@2
 10711
		};
williamr@2
 10712
williamr@2
 10713
	/** A typedef'd packaged TMobileNamEntryV1 for passing through a generic API member 
williamr@2
 10714
	function. */
williamr@2
 10715
	typedef TPckg<TMobileNamEntryV1> TMobileNamEntryV1Pckg;
williamr@2
 10716
williamr@2
 10717
	/** Enumeration for the standard NAM parameters (see 3GPP2 C.S0005-A appendix F.3)
williamr@2
 10718
	Modes: CDMA */
williamr@2
 10719
	enum TStandardNamParameters
williamr@2
 10720
		{
williamr@2
 10721
		/** The 64-bit pattern stored in the Mobile Station and 
williamr@2
 10722
			Home Location Register/Authentication Centre used to generate/update the 
williamr@2
 10723
			mobile station’s Shared Secret Data
williamr@2
 10724
			Corresponds to NAM Indicator 'A_KEY' */
williamr@2
 10725
		EAKey,
williamr@2
 10726
		/** 64-bit key used for authentication
williamr@2
 10727
			Corresponds to NAM Indicator 'SSD_A(s-p)' */
williamr@2
 10728
		ESharedSecretDataA,
williamr@2
 10729
		/** 64-bit key used as input to generate encryption mask and long code
williamr@2
 10730
			Corresponds to NAM Indicator 'SSD_B(s-p)' */
williamr@2
 10731
		ESharedSecretDataB,
williamr@2
 10732
		/** Modulo-64 event counter maintained by the mobile station and Authentication Center 
williamr@2
 10733
			used for clone detection
williamr@2
 10734
			Corresponds to NAM Indicator 'COUNT(s-p)' */
williamr@2
 10735
		EParameterUpdateReceivedCount,
williamr@2
 10736
		/** Class of the International Mobile Station Identity (IMSI) containing a MIN as 
williamr@2
 10737
			the lower 10 digits 
williamr@2
 10738
			Corresponds to NAM Indicator 'IMSI_M_CLASS(p)' */
williamr@2
 10739
		EMinBasedImsiClass,
williamr@2
 10740
		/** The class of the International Mobile Station Identity (IMSI) not containing a MIN as 
williamr@2
 10741
			the lower 10 digits 
williamr@2
 10742
			Corresponds to NAM Indicator 'IMSI_T_CLASS(p)' */
williamr@2
 10743
		ETrueImsiClass,
williamr@2
 10744
		/** 34-bit number derived from the IMSI M used as input for authentication
williamr@2
 10745
			Corresponds to NAM Indicator 'IMSI_M_S(p)' */
williamr@2
 10746
		EMinBasedImsiS,
williamr@2
 10747
		/** 34-bit number derived from the IMSI T used as input for authentication
williamr@2
 10748
			Corresponds to NAM Indicator 'IMSI_T_S(p)' */
williamr@2
 10749
		ETrueImsiS,
williamr@2
 10750
		/** Number of digits in the IMSI M minus 4
williamr@2
 10751
			Corresponds to NAM Indicator 'IMSI_M_ADDR_NUM(p)' */
williamr@2
 10752
		EMinBasedImsiAddressNum,
williamr@2
 10753
		/** The number of digits in the IMSI T minus 4
williamr@2
 10754
			Corresponds to NAM Indicator 'IMSI_T_ADDR_NUM(p)' */
williamr@2
 10755
		ETrueImsiAddressNum,
williamr@2
 10756
		/** The 11th and 12th digits in the IMSI M
williamr@2
 10757
			Corresponds to NAM Indicator 'IMSI_M_11_12(p)' */
williamr@2
 10758
		EMinBasedImsiDigits11and12,
williamr@2
 10759
		/** The 11th and 12th digits in the IMSI T
williamr@2
 10760
			Corresponds to NAM Indicator 'IMSI_T_11_12(p)' */
williamr@2
 10761
		ETrueImsiDigits11and12,
williamr@2
 10762
		/** The country code for the IMSI M
williamr@2
 10763
			Corresponds to NAM Indicator 'MCC_M(p)' */
williamr@2
 10764
		EMinBasedMobileCountryCode,
williamr@2
 10765
		/** The country code for the IMSI T
williamr@2
 10766
			Corresponds to NAM Indicator 'MCC_T(p)' */
williamr@2
 10767
		ETrueMobileCountryCode,
williamr@2
 10768
		/** Up to 15 digit dialable number associated with the mobile station through a service 
williamr@2
 10769
			subscription
williamr@2
 10770
			Corresponds to NAM Indicator 'MDN(p)' */
williamr@2
 10771
		EMobileDirectoryNumber,
williamr@2
 10772
		/** 4-bit number giving the length of the assigning Temporary Mobile Station Identity (TMSI) zone 
williamr@2
 10773
			(can range from 1 to 8 octets)
williamr@2
 10774
			Corresponds to NAM Indicator 'ASSIGNING_TMSI_ZONE_LEN(s-p)' */
williamr@2
 10775
		EAssigningTmsiZoneLen,
williamr@2
 10776
		/** Temporary Mobile Station Identity (TMSI) zone is an arbitrary set of base stations 
williamr@2
 10777
			for the administrative assignment of TMSI
williamr@2
 10778
			Corresponds to NAM Indicator 'ASSIGNING_TMSI_ZONE(s-p)' */
williamr@2
 10779
		EAssigningTmsiZone,
williamr@2
 10780
		/** The uniquely assigned number to a mobile station inside a TMSI zone
williamr@2
 10781
			Corresponds to NAM Indicator 'TMSI_CODE(s-p)' */
williamr@2
 10782
		ETmsiCode,
williamr@2
 10783
		/** The expiration time used to automatically delete the assigned TMSI
williamr@2
 10784
			Corresponds to NAM Indicator 'TMSI_EXP_TIME(s-p)' */
williamr@2
 10785
		ETmsiExpTime,
williamr@2
 10786
		/** Mobile station's home System Id for 800MHz analog operation
williamr@2
 10787
			Corresponds to NAM Indicator 'HOME_SID(p)' */
williamr@2
 10788
		EHomeSystemIdAnalog,
williamr@2
 10789
		/** Mobile station's home System Id
williamr@2
 10790
			Corresponds to NAM Indicator 'SID(p)' */
williamr@2
 10791
		EHomeSystemId,
williamr@2
 10792
		/** Mobile station's home Network Id
williamr@2
 10793
			Corresponds to NAM Indicator 'NID(p)' */
williamr@2
 10794
		EHomeNetworkId,
williamr@2
 10795
		/** Mobile station is configured to receive mobile station terminated calls when 
williamr@2
 10796
			using a home (SID, NID) pair
williamr@2
 10797
			Corresponds to NAM Indicator 'MOB_TERM_HOME(p)' */
williamr@2
 10798
		EReceiveCallsHome,
williamr@2
 10799
		/** The mobile station is configured to receive mobile station terminated calls when 
williamr@2
 10800
			it is a foreign SID roamer
williamr@2
 10801
			Corresponds to NAM Indicator 'MOB_TERM_FOR_SID(p)' */
williamr@2
 10802
		EReceiveCallsForeignSystem,
williamr@2
 10803
		/** The mobile station is configured to receive mobile station terminated calls when 
williamr@2
 10804
			it is a foreign NID roamer
williamr@2
 10805
			Corresponds to NAM Indicator 'MOB_TERM_FOR_NID(p)' */
williamr@2
 10806
		EReceiveCallsForeignNetwork,
williamr@2
 10807
		/**	A TSY may use this as the first TSY-defined non-standard NAM parameter */
williamr@2
 10808
		ENumStandardNamParameters
williamr@2
 10809
		};
williamr@2
 10810
williamr@2
 10811
	class TMobileNamEntryV4 : public RMobilePhoneStore::TMobilePhoneStoreEntryV1
williamr@2
 10812
	/**
williamr@2
 10813
	Defines contents of a NAM store entry
williamr@2
 10814
williamr@2
 10815
	The differences between the original TMobileNamEntryV1, and updated TMobileNamEntryV4 are:
williamr@2
 10816
	- the maximum mobile NAM parameter size is KMaxNamParamSize(64) for TMobileNamEntryV1
williamr@2
 10817
	  and KMaxNamParamSizeV4(256) for TMobileNamEntryV4
williamr@2
 10818
	- TMobileNamEntryV4 defines a set of standard NAM parameters for the iParamIdentifier as
williamr@2
 10819
	  described in 3GPP2 C.S0005-A appendix F.3
williamr@2
 10820
	
williamr@2
 10821
	@publishedPartner
williamr@2
 10822
	@released
williamr@2
 10823
	*/
williamr@2
 10824
		{
williamr@2
 10825
	public:
williamr@2
 10826
		IMPORT_C TMobileNamEntryV4();
williamr@2
 10827
	public:
williamr@2
 10828
		void InternalizeL(RReadStream& aStream);
williamr@2
 10829
		void ExternalizeL(RWriteStream& aStream) const;
williamr@2
 10830
	public:
williamr@2
 10831
	/** The NAM that is to be accessed, will be between 0 and TMobileNamStoreInfo::iNamCount-1.
williamr@2
 10832
	
williamr@2
 10833
	Modes: CDMA */
williamr@2
 10834
		TInt iNamId;
williamr@2
 10835
williamr@2
 10836
	/** The identifier of the NAM parameter to be accessed.
williamr@2
 10837
	iParamIdentifier will be a TStandardNamParameters value if a standard NAM parameter is being accessed, 
williamr@2
 10838
	however a TSY may support and define NAM parameters in addition to those given by TStandardNamParameters	
williamr@2
 10839
	Modes: CDMA */
williamr@2
 10840
		TInt iParamIdentifier;
williamr@2
 10841
williamr@2
 10842
	/** The data contents of the selected parameter.
williamr@2
 10843
	
williamr@2
 10844
	Modes: CDMA
williamr@2
 10845
	
williamr@2
 10846
	@see KMaxNamParamSizeV4 */
williamr@2
 10847
		TBuf8<KMaxNamParamSizeV4> iData;
williamr@2
 10848
		};
williamr@2
 10849
williamr@2
 10850
	/** A typedef'd packaged TMobileNamEntryV4 for passing through a generic API member 
williamr@2
 10851
	function. */
williamr@2
 10852
	typedef TPckg<TMobileNamEntryV4> TMobileNamEntryV4Pckg;
williamr@2
 10853
williamr@2
 10854
	IMPORT_C void StoreAllL(TRequestStatus& aReqStatus, TInt aNamId, CMobilePhoneNamList* aNamList) const;
williamr@2
 10855
	IMPORT_C void StoreAllL(TRequestStatus& aReqStatus, TInt aNamId, CMobilePhoneNamListV4* aNamList) const;
williamr@2
 10856
williamr@2
 10857
protected:
williamr@2
 10858
	IMPORT_C void ConstructL();
williamr@2
 10859
private:
williamr@2
 10860
	RMobileNamStore(const RMobileNamStore&);
williamr@2
 10861
	};
williamr@2
 10862
williamr@2
 10863
williamr@2
 10864
/*********************************************************/
williamr@2
 10865
//
williamr@2
 10866
// Own Number Storage (RMobileONStore)
williamr@2
 10867
//
williamr@2
 10868
/*********************************************************/
williamr@2
 10869
williamr@2
 10870
williamr@2
 10871
williamr@2
 10872
class CONStorePtrHolder;
williamr@2
 10873
class CMobilePhoneONList;
williamr@2
 10874
	
williamr@2
 10875
class RMobileONStore : public RMobilePhoneStore
williamr@2
 10876
/**
williamr@2
 10877
Provides client access to Own Number storage functionality provided by TSY
williamr@2
 10878
williamr@2
 10879
*/
williamr@2
 10880
	{
williamr@2
 10881
public:
williamr@2
 10882
	IMPORT_C RMobileONStore();
williamr@2
 10883
	IMPORT_C TInt Open(RMobilePhone& aPhone);
williamr@2
 10884
	IMPORT_C void Close();
williamr@2
 10885
williamr@2
 10886
	
williamr@2
 10887
williamr@2
 10888
	class TMobileONStoreInfoV1 : public RMobilePhoneStore::TMobilePhoneStoreInfoV1
williamr@2
 10889
	/**
williamr@2
 10890
	Defines information about an Own Number store
williamr@2
 10891
	
williamr@2
 10892
	@publishedPartner
williamr@2
 10893
	@released
williamr@2
 10894
	*/
williamr@2
 10895
		{
williamr@2
 10896
	public:
williamr@2
 10897
		IMPORT_C TMobileONStoreInfoV1();
williamr@2
 10898
	public:
williamr@2
 10899
	/** The maximum length of the own phone number can be. */
williamr@2
 10900
		TInt iNumberLen;
williamr@2
 10901
	/** The maximum length the text field can be. */
williamr@2
 10902
		TInt iTextLen;
williamr@2
 10903
		};
williamr@2
 10904
williamr@2
 10905
/** A typedef'd packaged TMobileONStoreInfoV1 for passing through a generic API 
williamr@2
 10906
member function. */
williamr@2
 10907
	typedef TPckg<TMobileONStoreInfoV1> TMobileONStoreInfoV1Pckg;
williamr@2
 10908
williamr@2
 10909
	enum
williamr@2
 10910
		{
williamr@2
 10911
		KOwnNumberTextSize = 20
williamr@2
 10912
		};
williamr@2
 10913
williamr@2
 10914
	
williamr@2
 10915
williamr@2
 10916
	class TMobileONEntryV1 : public RMobilePhoneStore::TMobilePhoneStoreEntryV1
williamr@2
 10917
	/**
williamr@2
 10918
	Defines contents of a Own Number store entry
williamr@2
 10919
	
williamr@2
 10920
	@publishedPartner
williamr@2
 10921
	@released
williamr@2
 10922
	*/
williamr@2
 10923
		{
williamr@2
 10924
	public:
williamr@2
 10925
		IMPORT_C TMobileONEntryV1();
williamr@2
 10926
	public:
williamr@2
 10927
		void InternalizeL(RReadStream& aStream);
williamr@2
 10928
		void ExternalizeL(RWriteStream& aStream) const;
williamr@2
 10929
	public:
williamr@2
 10930
	/** Network mode. */
williamr@2
 10931
		RMobilePhone::TMobilePhoneNetworkMode iMode;
williamr@2
 10932
	/** Mobile call service type.
williamr@2
 10933
	
williamr@2
 10934
	@see RMobilePhone::TMobileService */
williamr@2
 10935
		RMobilePhone::TMobileService iService;
williamr@2
 10936
	/** Own number.
williamr@2
 10937
	
williamr@2
 10938
	@see RMobilePhone::TMobileAddress */
williamr@2
 10939
		RMobilePhone::TMobileAddress iNumber;
williamr@2
 10940
	/** The name-tag associated with own number (e.g. "Voice Number"). */
williamr@2
 10941
		TBuf<KOwnNumberTextSize> iText;
williamr@2
 10942
		};
williamr@2
 10943
williamr@2
 10944
/** A typedef'd packaged TMobileONEntryV1 for passing through a generic API member 
williamr@2
 10945
function. */
williamr@2
 10946
	typedef TPckg<TMobileONEntryV1> TMobileONEntryV1Pckg;
williamr@2
 10947
williamr@2
 10948
	IMPORT_C void StoreAllL(TRequestStatus& aReqStatus, CMobilePhoneONList* aONList) const;
williamr@2
 10949
williamr@2
 10950
protected:
williamr@2
 10951
	IMPORT_C void ConstructL();
williamr@2
 10952
private:
williamr@2
 10953
	RMobileONStore(const RMobileONStore&);
williamr@2
 10954
	};
williamr@2
 10955
williamr@2
 10956
/*********************************************************/
williamr@2
 10957
//
williamr@2
 10958
// Emergency Number Storage (RMobileENStore)
williamr@2
 10959
//
williamr@2
 10960
/*********************************************************/
williamr@2
 10961
williamr@2
 10962
williamr@2
 10963
williamr@2
 10964
class CMobilePhoneENList;
williamr@2
 10965
williamr@2
 10966
class RMobileENStore : public RMobilePhoneStore
williamr@2
 10967
/**
williamr@2
 10968
Provides client access to Emergency Number storage functionality provided by TSY
williamr@2
 10969
williamr@2
 10970
*/
williamr@2
 10971
	{
williamr@2
 10972
public:
williamr@2
 10973
	IMPORT_C RMobileENStore();
williamr@2
 10974
	IMPORT_C TInt Open(RMobilePhone& aPhone);
williamr@2
 10975
	IMPORT_C void Close();
williamr@2
 10976
williamr@2
 10977
	enum 
williamr@2
 10978
		{
williamr@2
 10979
		KEmergencyNumberSize  = 6,
williamr@2
 10980
		KEmergencyAlphaTagSize = 20
williamr@2
 10981
		};
williamr@2
 10982
williamr@2
 10983
/** Enumerated list of Emergency Number entries.
williamr@2
 10984
williamr@2
 10985
Mode: WCDMA */
williamr@2
 10986
	enum TMobilePhoneENServiceCategory
williamr@2
 10987
		{
williamr@2
 10988
	/** This number provides emergency care by the police department. */
williamr@2
 10989
		KServiceCatPolice =0x0001,
williamr@2
 10990
	/** This number provides emergency care by the ambulance department. */
williamr@2
 10991
		KServiceCatAmbulance =0x0002,
williamr@2
 10992
	/** This number provides emergency care by the fire brigade department. */
williamr@2
 10993
		KServiceCatFireBrigade =0x0004,
williamr@2
 10994
	/** This number provides emergency care by the marine guard department. */
williamr@2
 10995
		KServiceCatMarineGuard =0x0008,
williamr@2
 10996
	/** This number provides emergency care by the mountain rescue department. */
williamr@2
 10997
		KServiceCatMountainRescue =0x0010
williamr@2
 10998
		// Reserved types: 0x0020,0x0040,
williamr@2
 10999
		};
williamr@2
 11000
williamr@2
 11001
	
williamr@2
 11002
williamr@2
 11003
/** Buffer to hold the emergency number in. */
williamr@2
 11004
	typedef TBuf<KEmergencyNumberSize> TEmergencyNumber;
williamr@2
 11005
williamr@2
 11006
	class TMobileENEntryV1 : public RMobilePhoneStore::TMobilePhoneStoreEntryV1
williamr@2
 11007
	/**
williamr@2
 11008
	Defines contents of a Emergency Number store entry
williamr@2
 11009
	@publishedPartner
williamr@2
 11010
	@released
williamr@2
 11011
	*/
williamr@2
 11012
		{
williamr@2
 11013
	public:
williamr@2
 11014
		IMPORT_C TMobileENEntryV1();
williamr@2
 11015
	public:
williamr@2
 11016
		void InternalizeL(RReadStream& aStream);
williamr@2
 11017
		void ExternalizeL(RWriteStream& aStream) const;
williamr@2
 11018
	public:
williamr@2
 11019
	/** Indicates whether the emergency number is applicable in all situations (=EFalse) 
williamr@2
 11020
	or only when the MS is registered to a specific GSM or CDMA network (=ETrue). */
williamr@2
 11021
		TBool iNetworkSpecific;
williamr@2
 11022
	/** The network mode. Only applicable if iNetworkSpecific equals ETrue.
williamr@2
 11023
williamr@2
 11024
	Modes: Common
williamr@2
 11025
	
williamr@2
 11026
	@see RMobilePhone::TMobilePhoneNetworkMode */
williamr@2
 11027
		RMobilePhone::TMobilePhoneNetworkMode iMode;
williamr@2
 11028
	/** Country code. Only applicable if iNetworkSpecific equals ETrue.
williamr@2
 11029
	
williamr@2
 11030
	Modes: Common
williamr@2
 11031
	
williamr@2
 11032
	@see RMobilePhone::TMobilePhoneNetworkCountryCode */
williamr@2
 11033
		RMobilePhone::TMobilePhoneNetworkCountryCode iCountryCode;
williamr@2
 11034
	/** Network identity. Only applicable if iNetworkSpecific equals ETrue.
williamr@2
 11035
	
williamr@2
 11036
	Modes: Common
williamr@2
 11037
	
williamr@2
 11038
	@see RMobilePhone::TMobilePhoneNetworkIdentity */
williamr@2
 11039
		RMobilePhone::TMobilePhoneNetworkIdentity iIdentity;
williamr@2
 11040
	/** Emergency number.
williamr@2
 11041
	
williamr@2
 11042
	Modes: Common
williamr@2
 11043
	
williamr@2
 11044
	@see TEmergencyNumber */
williamr@2
 11045
		TEmergencyNumber             iNumber;
williamr@2
 11046
	/** Emergency call number type. It is used to display information about the dialed 
williamr@2
 11047
	emergency number (e.g. "Police", "Ambulance", "Fire brigade", etc.)
williamr@2
 11048
	
williamr@2
 11049
	Modes: WCDMA */
williamr@2
 11050
		TBuf<KEmergencyAlphaTagSize> iAlphaId;
williamr@2
 11051
		//TInt should map to TMobilePhoneENServiceCategory.
williamr@2
 11052
		//It was not changed to maintain source compatibility
williamr@2
 11053
		
williamr@2
 11054
	/** Emergency call type indicator, which contains information to be sent to the 
williamr@2
 11055
	network indicating the type of emergency call.
williamr@2
 11056
	
williamr@2
 11057
	The field is for future reference only and it is set to RFU (Reserved for
williamr@2
 11058
	Future Use) as it is currently not being used, as specified in section 4.2.21 
williamr@2
 11059
	TS 31.102 v3.3.0 Rel 99.
williamr@2
 11060
	
williamr@2
 11061
	Modes: WCDMA */
williamr@2
 11062
		TInt	                     iCallType; 
williamr@2
 11063
		};
williamr@2
 11064
williamr@2
 11065
	typedef TPckg<TMobileENEntryV1> TMobileENEntryV1Pckg;
williamr@2
 11066
williamr@2
 11067
protected:
williamr@2
 11068
	IMPORT_C void ConstructL();
williamr@2
 11069
private:
williamr@2
 11070
	RMobileENStore(const RMobileENStore&);
williamr@2
 11071
	};
williamr@2
 11072
williamr@2
 11073
williamr@2
 11074
/*********************************************************/
williamr@2
 11075
//
williamr@2
 11076
// RMobilePhoneBookStore 
williamr@2
 11077
//
williamr@2
 11078
/*********************************************************/
williamr@2
 11079
williamr@2
 11080
williamr@2
 11081
williamr@2
 11082
class CPhoneBookStorePtrHolder;
williamr@2
 11083
class CMobilePhoneBookList;
williamr@2
 11084
williamr@2
 11085
class RMobilePhoneBookStore : public RMobilePhoneStore
williamr@2
 11086
/** Provides member functions for clients to access phone 
williamr@2
 11087
books that are stored in ICC memory or in non-volatile memory on the phone 
williamr@2
 11088
itself. This sub-session and the member functions within this section must 
williamr@2
 11089
be supported if the TSY indicates that it supports the MobilePhonebookStore 
williamr@2
 11090
functional unit.
williamr@2
 11091
@publishedPartner
williamr@2
 11092
@released 
williamr@2
 11093
*/
williamr@2
 11094
	{
williamr@2
 11095
public:
williamr@2
 11096
	IMPORT_C RMobilePhoneBookStore();
williamr@2
 11097
	IMPORT_C TInt Open(RMobilePhone& aPhone, const TDesC& aStore);
williamr@2
 11098
	IMPORT_C TInt Open(RMobilePhone& aPhone, const TDesC& aStore, const TDesC& aMode);
williamr@2
 11099
	IMPORT_C void Close();
williamr@2
 11100
williamr@2
 11101
/** Describes the specialized phone book capabilities.
williamr@2
 11102
williamr@2
 11103
Modes: Common */
williamr@2
 11104
	enum TMobilePhoneBookCaps
williamr@2
 11105
		{
williamr@2
 11106
	/** New entries can only be written to (or deleted from) the phone book with the 
williamr@2
 11107
	PIN2 password or equivalent.
williamr@2
 11108
	
williamr@2
 11109
	Modes: Common */
williamr@2
 11110
		KCapsRestrictedWriteAccess = 0x00000001,
williamr@2
 11111
	/** The phonebook supports the second name field.
williamr@2
 11112
	
williamr@2
 11113
	Modes: WCDMA */
williamr@2
 11114
		KCapsSecondNameUsed        = 0x00000002,
williamr@2
 11115
	/** The phonebook supports the additional number (with optional Text, TON, NPI 
williamr@2
 11116
	and Bearer Capability) field.
williamr@2
 11117
	
williamr@2
 11118
	Modes: WCDMA */
williamr@2
 11119
		KCapsAdditionalNumUsed     = 0x00000004,
williamr@2
 11120
	/** The phonebook supports the group name field.
williamr@2
 11121
	
williamr@2
 11122
	Modes: WCDMA */
williamr@2
 11123
		KCapsGroupingUsed		   = 0x00000008,
williamr@2
 11124
	/** The phonebook supports entry control and hidden flag fields.
williamr@2
 11125
williamr@2
 11126
	Modes: WCDMA */
williamr@2
 11127
		KCapsEntryControlUsed      = 0x00000010,
williamr@2
 11128
	/** The phonebook supports the email address field.
williamr@2
 11129
	
williamr@2
 11130
	Modes: WCDMA */
williamr@2
 11131
		KCapsEmailAddressUsed      = 0x00000020,
williamr@2
 11132
	/** The phonebook supports the bearer capability IE field.
williamr@2
 11133
	
williamr@2
 11134
	Modes: WCDMA */
williamr@2
 11135
		KCapsBearerCapUsed		   = 0x00000040,
williamr@2
 11136
	/** The phonebook supports retrieval of the phonebook's PBID and Change Counter 
williamr@2
 11137
	- and for each entry its UID field.
williamr@2
 11138
	
williamr@2
 11139
	Modes: WCDMA */
williamr@2
 11140
		KCapsSynchronisationUsed   = 0x00000080
williamr@2
 11141
		};
williamr@2
 11142
williamr@2
 11143
/** Described the location of the phone book.
williamr@2
 11144
williamr@2
 11145
Modes: Common for all */
williamr@2
 11146
	enum TMobilePhoneBookLocation
williamr@2
 11147
		{
williamr@2
 11148
	/** The phonebook's location is unknown. */
williamr@2
 11149
		ELocationUnknown,
williamr@2
 11150
	/** The phonebook is located in ICC (SIM/R-UIM) memory. */
williamr@2
 11151
		ELocationIccMemory,
williamr@2
 11152
	/** The phonebook is located in Phone (ME) memory. */
williamr@2
 11153
		ELocationPhoneMemory,
williamr@2
 11154
	/** The phonebook is located in an external memory. */
williamr@2
 11155
		ELocationExternalMemory,
williamr@2
 11156
	/** The phonebook entries are dispersed over a combination of memory locations. */
williamr@2
 11157
		ELocationCombinedMemory
williamr@2
 11158
		};
williamr@2
 11159
williamr@2
 11160
	enum
williamr@2
 11161
		{
williamr@2
 11162
		KMaxPBIDSize=15
williamr@2
 11163
		};
williamr@2
 11164
williamr@2
 11165
/** Defines a modifiable buffer descriptor to contain the phone book identity. 
williamr@2
 11166
Used in TMobilePhoneBookInfoV1. */
williamr@2
 11167
	typedef TBuf8<KMaxPBIDSize> TMobilePhoneBookIdentity;
williamr@2
 11168
williamr@2
 11169
	
williamr@2
 11170
williamr@2
 11171
	class TMobilePhoneBookInfoV1 : public RMobilePhoneStore::TMobilePhoneStoreInfoV1
williamr@2
 11172
	/**
williamr@2
 11173
	Defines information about a Phonebook store.
williamr@2
 11174
	@publishedPartner
williamr@2
 11175
	@released
williamr@2
 11176
	*/
williamr@2
 11177
		{
williamr@2
 11178
	public:
williamr@2
 11179
	/** Trivial constructor. Initializes iMaxNumLength=-1; iMaxTextLength=-1; iLocation=ELocationUnknown; 
williamr@2
 11180
	iChangeCounter=0; iExtensionId=KETelMobilePhonebookStoreV1; */
williamr@2
 11181
		IMPORT_C TMobilePhoneBookInfoV1();
williamr@2
 11182
	public:
williamr@2
 11183
	/** The maximum number of characters for the number in a phonebook entry.
williamr@2
 11184
	
williamr@2
 11185
	Modes: Common */
williamr@2
 11186
		TInt    iMaxNumLength;
williamr@2
 11187
	/** The maximum number of characters for the text tag in a phonebook entry.
williamr@2
 11188
	
williamr@2
 11189
	Modes: Common */
williamr@2
 11190
		TInt    iMaxTextLength;
williamr@2
 11191
	/** The memory location of this phonebook.
williamr@2
 11192
	
williamr@2
 11193
	Modes: Common
williamr@2
 11194
	
williamr@2
 11195
	@see TMobilePhoneBookLocation */
williamr@2
 11196
		TMobilePhoneBookLocation iLocation;
williamr@2
 11197
	/** The contents of the Change Counter file in a USIM phonebook.
williamr@2
 11198
	
williamr@2
 11199
	Modes: WCDMA */
williamr@2
 11200
		TUint16 iChangeCounter;
williamr@2
 11201
	/** A unique identity for this type of phonebook.
williamr@2
 11202
	
williamr@2
 11203
	If this is a SIM or R-UIM phonebook then it will equal the ICCID of the card.
williamr@2
 11204
	
williamr@2
 11205
	If this is a USIM phonebook then it will equal the PBID of the phonebook. 
williamr@2
 11206
	
williamr@2
 11207
	Modes: Common
williamr@2
 11208
	
williamr@2
 11209
	@see TMobilePhoneBookIdentity */
williamr@2
 11210
		TMobilePhoneBookIdentity iIdentity; 
williamr@2
 11211
		};
williamr@2
 11212
williamr@2
 11213
/** Packages the TMobilePhoneBookInfoV1 into a TMobilePhoneBookInfoV1Pckg. */
williamr@2
 11214
	typedef TPckg<TMobilePhoneBookInfoV1> TMobilePhoneBookInfoV1Pckg;
williamr@2
 11215
williamr@2
 11216
	
williamr@2
 11217
	class TMobilePhoneBookInfoV2 : public TMobilePhoneBookInfoV1
williamr@2
 11218
/** Defines information about a Phonebook store for version v2.0 of the API.
williamr@2
 11219
@publishedPartner
williamr@2
 11220
@released */
williamr@2
 11221
		{
williamr@2
 11222
	public:
williamr@2
 11223
		IMPORT_C TMobilePhoneBookInfoV2();
williamr@2
 11224
	public:
williamr@2
 11225
	/** The type of the phonebook which relates to its location (ICC/UICC/CDMA).
williamr@2
 11226
	
williamr@2
 11227
	Mode: Common */
williamr@2
 11228
		TName iPhBkMode; 
williamr@2
 11229
		};
williamr@2
 11230
williamr@2
 11231
/** Packages the TMobilePhoneBookInfoV2 into a TMobilePhoneBookInfoV1Pckg. */
williamr@2
 11232
	typedef TPckg<TMobilePhoneBookInfoV2> TMobilePhoneBookInfoV2Pckg;
williamr@2
 11233
williamr@2
 11234
williamr@2
 11235
	/** Defines information about a Phonebook store for version v5.0 of the API.
williamr@2
 11236
williamr@2
 11237
	Extends the v2.0 API to allow additional information about the phonebook
williamr@2
 11238
	(Maximum number of second name fields, Maximum number of additional number fields,
williamr@2
 11239
	Maximum number of additional group name fields, Maximum number of email address fields)
williamr@2
 11240
	to be retieved where available. 
williamr@2
 11241
williamr@2
 11242
	@publishedPartner
williamr@2
 11243
	@released*/
williamr@2
 11244
	class TMobilePhoneBookInfoV5 : public TMobilePhoneBookInfoV2
williamr@2
 11245
		{
williamr@2
 11246
	public:
williamr@2
 11247
		IMPORT_C TMobilePhoneBookInfoV5();
williamr@2
 11248
	public:
williamr@2
 11249
		/** The maximum number of Second Name fields that can be used. */
williamr@2
 11250
		TInt iMaxSecondNames;
williamr@2
 11251
		
williamr@2
 11252
		/** The maximum text length for Second Name fields. */
williamr@2
 11253
		TInt iMaxTextLengthSecondName;
williamr@2
 11254
williamr@2
 11255
		/** The maximum number of additional number fields that can be used. */
williamr@2
 11256
		TInt iMaxAdditionalNumbers;
williamr@2
 11257
		
williamr@2
 11258
		/** The maximum number length for Additional Number fields. */
williamr@2
 11259
		TInt iMaxNumLengthAdditionalNumber;
williamr@2
 11260
		
williamr@2
 11261
		/** The maximum text length for Additonal Number fields. */
williamr@2
 11262
		TInt iMaxTextLengthAdditionalNumber;
williamr@2
 11263
williamr@2
 11264
		/** The maximum number of additional Group Name fields that can be used. */
williamr@2
 11265
		TInt iMaxGroupNames;
williamr@2
 11266
		
williamr@2
 11267
		/** The maximum text length for Group Name fields. */
williamr@2
 11268
		TInt iMaxTextLengthGroupName;
williamr@2
 11269
		
williamr@2
 11270
		/** The maximum number of additional E-Mail address fields that can be used. */
williamr@2
 11271
		TInt iMaxEmailAddr;
williamr@2
 11272
		
williamr@2
 11273
		/** The maximum text length for Email Address fields. */
williamr@2
 11274
		TInt iMaxTextLengthEmailAddr;
williamr@2
 11275
		};
williamr@2
 11276
williamr@2
 11277
	/** Packages the TMobilePhoneBookInfoV5 into a TMobilePhoneBookInfoV5Pckg. */
williamr@2
 11278
	typedef TPckg<TMobilePhoneBookInfoV5> TMobilePhoneBookInfoV5Pckg;
williamr@2
 11279
williamr@2
 11280
williamr@2
 11281
	// check these fields - not sure all are correct
williamr@2
 11282
/** The following Tag IDs are used to encode/decode the phonebook entries to/from 
williamr@2
 11283
the TLV format. Each field will have a unique identifier and will be followed 
williamr@2
 11284
by the field length. The type of data associated with the field is also specified 
williamr@2
 11285
below. 
williamr@2
 11286
williamr@2
 11287
Some fields do not have any data and just serve as separators within the buffer 
williamr@2
 11288
- in these cases the Data Type column is set to not applicable (n/a).
williamr@2
 11289
williamr@2
 11290
Modes: Common */
williamr@2
 11291
	enum TMobilePBFieldTags
williamr@2
 11292
		{
williamr@2
 11293
	/** Tag id for the beginning of a new phonebook entry.
williamr@2
 11294
	
williamr@2
 11295
	Data type: n/a.
williamr@2
 11296
	
williamr@2
 11297
	Modes: Common */
williamr@2
 11298
		ETagPBNewEntry		=0xA0,
williamr@2
 11299
	/** Tag id for the Unique ID field.
williamr@2
 11300
	
williamr@2
 11301
	Data type: TUint16
williamr@2
 11302
williamr@2
 11303
	Modes: WCDMA */
williamr@2
 11304
		ETagPBUniqueId		=0xB0,
williamr@2
 11305
	/** Tag id for the Index within the ADN record.
williamr@2
 11306
	
williamr@2
 11307
	Data type: TUint16
williamr@2
 11308
williamr@2
 11309
	Modes: Common */
williamr@2
 11310
		ETagPBAdnIndex		=0xC0,
williamr@2
 11311
	/** Tag id for a Text field within the ADN/ANR record.
williamr@2
 11312
	
williamr@2
 11313
	Data type: TDes16
williamr@2
 11314
	
williamr@2
 11315
	Modes: Common */
williamr@2
 11316
		ETagPBText			=0xC1,
williamr@2
 11317
	/** Tag id for a Number field within the ADN/ANR record.
williamr@2
 11318
	
williamr@2
 11319
	Data type: TDes16
williamr@2
 11320
	
williamr@2
 11321
	Modes: Common */
williamr@2
 11322
		ETagPBNumber		=0xC2,
williamr@2
 11323
	/** Tag id for a TON/NPI byte within the ADN/ANR record.
williamr@2
 11324
	
williamr@2
 11325
	Data type: TUint8
williamr@2
 11326
	
williamr@2
 11327
	Modes: Common */
williamr@2
 11328
		ETagPBTonNpi		=0xC3,
williamr@2
 11329
	/** Tag id for a Bearer Capability IE associated to the ADN/ANR record.
williamr@2
 11330
	
williamr@2
 11331
	Data type: TDes8
williamr@2
 11332
	
williamr@2
 11333
	Modes: GSM/WCDMA */
williamr@2
 11334
		ETagPBBearerCap		=0xC4,
williamr@2
 11335
	/** Tag id for the beginning of an Additional Number entry within the phonebook 
williamr@2
 11336
	entry.
williamr@2
 11337
	
williamr@2
 11338
	Data type: n/a
williamr@2
 11339
	
williamr@2
 11340
	Modes: WCDMA */
williamr@2
 11341
		ETagPBAnrStart		=0xC5,
williamr@2
 11342
	/** Tag id for the Second Name associated to the ADN record.
williamr@2
 11343
	
williamr@2
 11344
	Data type: TDes16
williamr@2
 11345
	
williamr@2
 11346
	Modes: WCDMA */
williamr@2
 11347
		ETagPBSecondName	=0xC6,
williamr@2
 11348
	/** Tag id for a Group Name associated to the ADN record.
williamr@2
 11349
	
williamr@2
 11350
	Data type:TDes16
williamr@2
 11351
	
williamr@2
 11352
	Modes: WCDMA */
williamr@2
 11353
		ETagPBGroupName		=0xC7,
williamr@2
 11354
	/** Tag id for an Email Address associated to the ADN record.
williamr@2
 11355
	
williamr@2
 11356
	Data type: TDes16
williamr@2
 11357
	
williamr@2
 11358
	Modes: WCDMA */
williamr@2
 11359
		ETagPBEmailAddress	=0xC8,
williamr@2
 11360
	/** Tag id for the Entry Control byte associated to the ADN record.
williamr@2
 11361
	
williamr@2
 11362
	Data type: TUint8
williamr@2
 11363
	
williamr@2
 11364
	Modes: WCDMA */
williamr@2
 11365
		ETagPBEntryControl	=0xC9,
williamr@2
 11366
	/** Tag id for the Hidden Information byte associated to the ADN record.
williamr@2
 11367
	
williamr@2
 11368
	Data type: TUint8
williamr@2
 11369
	
williamr@2
 11370
	Modes: WCDMA */
williamr@2
 11371
		ETagPBHiddenInfo	=0xCA,
williamr@2
 11372
		ETagPBDateTime		=0xCB,
williamr@2
 11373
		ETagPBDuration		=0xCC,
williamr@2
 11374
		ETagPBCallStatus	=0xCD,
williamr@2
 11375
		ETagPBEntryStatus	=0xCE
williamr@2
 11376
		};
williamr@2
 11377
williamr@2
 11378
williamr@2
 11379
	// API/TSY internal type
williamr@2
 11380
	struct TPBIndexAndNumEntries
williamr@2
 11381
/** A structure to hold the phone book index and number of entries. */
williamr@2
 11382
		{
williamr@2
 11383
	/** Index for the phone book. */
williamr@2
 11384
		TInt iIndex;
williamr@2
 11385
		TInt iNumSlots;
williamr@2
 11386
		};
williamr@2
 11387
williamr@2
 11388
	IMPORT_C void Read(TRequestStatus& aReqStatus, TInt aIndex, TInt aNumSlots, TDes8& aPBData) const;
williamr@2
 11389
	IMPORT_C void Write(TRequestStatus& aReqStatus, const TDesC8& aPBData, TInt& aIndex) const;
williamr@2
 11390
williamr@2
 11391
protected:
williamr@2
 11392
	IMPORT_C void ConstructL();
williamr@2
 11393
private:
williamr@2
 11394
	RMobilePhoneBookStore(const RMobilePhoneBookStore&);
williamr@2
 11395
	};
williamr@2
 11396
williamr@2
 11397
/*********************************************************/
williamr@2
 11398
//
williamr@2
 11399
// RMobileConferenceCall
williamr@2
 11400
//
williamr@2
 11401
/*********************************************************/
williamr@2
 11402
williamr@2
 11403
williamr@2
 11404
williamr@2
 11405
class CMobileConferenceCallPtrHolder;
williamr@2
 11406
williamr@2
 11407
class RMobileConferenceCall : public RTelSubSessionBase
williamr@2
 11408
/** Provides access to conference call functionality provided by TSY.
williamr@2
 11409
williamr@2
 11410
Conference calls allow users to conduct multi-connection voice calls, for example
williamr@2
 11411
simultaneous communication to more than one remote party. All participants 
williamr@2
 11412
within a conference call can hear and speak to each other. There is a controlling 
williamr@2
 11413
party that initiates and manages the conference.
williamr@2
 11414
williamr@2
 11415
Conference calling is possible in both GSM and CDMA mode and the actions to 
williamr@2
 11416
initiate a 3-way conference are the same in either mode. However, GSM conference 
williamr@2
 11417
calls offer more functionality and the number of remote parties is limited 
williamr@2
 11418
in CDMA mode to 2 and in GSM mode to 5.
williamr@2
 11419
williamr@2
 11420
The Multimode ETel API uses a new sub-session called RMobileConferenceCall 
williamr@2
 11421
as a model for a conference call. The conference call object will be an aggregation 
williamr@2
 11422
of all the RMobileCall objects that are part of the conference call. It will 
williamr@2
 11423
be possible for clients to manipulate both the conference call as a whole 
williamr@2
 11424
and individual calls within a conference call depending on the dynamic capabilities 
williamr@2
 11425
of each of these objects.
williamr@2
 11426
williamr@2
 11427
Please note that RMobileConferenceCall is replacing the RCallGroup abstraction 
williamr@2
 11428
used in the GSM API. This was an optimisation decision. The call group abstraction 
williamr@2
 11429
placed a large burden on a TSY to create call groups, monitor the calls in 
williamr@2
 11430
each group and trigger notification when calls were added or moved, probably 
williamr@2
 11431
even when a conference call was not ongoing. Clients will probably only open 
williamr@2
 11432
a RMobileConferenceCall when the user has decided to make a conference call 
williamr@2
 11433
and by having just one object replace three call groups it will also reduce 
williamr@2
 11434
the number of notifications that would trigger in response to conference call 
williamr@2
 11435
events. With a view to the future, without call groups there are also no longer 
williamr@2
 11436
any restrictions to the allowed types of active calls (simultaneous, separate 
williamr@2
 11437
voice and data calls are possible).
williamr@2
 11438
williamr@2
 11439
The methods within this section must be supported if the TSY supports MobileConferenceCall 
williamr@2
 11440
functional unit. 
williamr@2
 11441
williamr@2
 11442
*/
williamr@2
 11443
	{
williamr@2
 11444
public:
williamr@2
 11445
	IMPORT_C RMobileConferenceCall();
williamr@2
 11446
	IMPORT_C TInt Open(RMobilePhone& aPhone);
williamr@2
 11447
	IMPORT_C void Close();
williamr@2
 11448
williamr@2
 11449
/** Conference call capabilities. */
williamr@2
 11450
	enum TMobileConferenceCallCaps
williamr@2
 11451
		{
williamr@2
 11452
	/** Indicates that a conference call can be created. */
williamr@2
 11453
		KCapsCreate = 0x00000001,
williamr@2
 11454
	/** Indicates that a conference call can be terminated. */
williamr@2
 11455
		KCapsHangUp = 0x00000002,
williamr@2
 11456
	/** Indicates that a conference call exists and can be swapped to the opposite 
williamr@2
 11457
	state (active or hold). */
williamr@2
 11458
		KCapsSwap = 0x00000004
williamr@2
 11459
		};
williamr@2
 11460
williamr@2
 11461
	IMPORT_C TInt GetCaps(TUint32& aCaps) const;
williamr@2
 11462
	IMPORT_C void NotifyCapsChange(TRequestStatus& aReqStatus, TUint32& aCaps) const;
williamr@2
 11463
williamr@2
 11464
	IMPORT_C void CreateConference(TRequestStatus& aReqStatus) const;
williamr@2
 11465
	IMPORT_C void AddCall(TRequestStatus& aReqStatus, const TName& aCallName) const;
williamr@2
 11466
	IMPORT_C void Swap(TRequestStatus& aReqStatus) const;
williamr@2
 11467
	IMPORT_C void HangUp(TRequestStatus& aReqStatus) const;
williamr@2
 11468
	IMPORT_C TInt EnumerateCalls(TInt& aCount) const;
williamr@2
 11469
	IMPORT_C TInt GetMobileCallInfo(TInt aIndex, TDes8& aCallInfo) const;
williamr@2
 11470
williamr@2
 11471
/** Conference call status. */
williamr@2
 11472
	enum TMobileConferenceStatus
williamr@2
 11473
		{
williamr@2
 11474
	/** The conference call is in the idle state. */
williamr@2
 11475
		EConferenceIdle,
williamr@2
 11476
	/** The conference call is in the active, connected state. */
williamr@2
 11477
		EConferenceActive,
williamr@2
 11478
	/** The conference call is in the held, connected state. */
williamr@2
 11479
		EConferenceHold
williamr@2
 11480
		};
williamr@2
 11481
	
williamr@2
 11482
	IMPORT_C TInt GetConferenceStatus(TMobileConferenceStatus& aStatus) const;
williamr@2
 11483
	IMPORT_C void NotifyConferenceStatusChange(TRequestStatus& aReqStatus, TMobileConferenceStatus& aStatus) const;
williamr@2
 11484
williamr@2
 11485
/** Conference events. */
williamr@2
 11486
	enum TMobileConferenceEvent
williamr@2
 11487
		{
williamr@2
 11488
	/** A call has been added to the conference. */
williamr@2
 11489
		EConferenceCallAdded,		// Name of the call added returned in aCallName
williamr@2
 11490
	/** A call has been removed from the conference. */
williamr@2
 11491
		EConferenceCallRemoved,		// Name of the call terminated returned in aCallName
williamr@2
 11492
	/** Names of the two calls used to build the conference call returned in aCallName. */
williamr@2
 11493
		EConferenceBuilt,		// Names of the two calls used to build the conference call returned in aCallName
williamr@2
 11494
	/** No name provided */
williamr@2
 11495
		EConferenceTerminated,	// No name provided
williamr@2
 11496
	/** No name provided. */
williamr@2
 11497
		EConferenceSwapped,		// No name provided
williamr@2
 11498
	/** Name of the call being seperated. */
williamr@2
 11499
		EConferenceSplit		// Name of the call being seperated
williamr@2
 11500
		};
williamr@2
 11501
williamr@2
 11502
	IMPORT_C void NotifyConferenceEvent(TRequestStatus& aReqStatus, TMobileConferenceEvent& aEvent, TName& aCallName) const;
williamr@2
 11503
williamr@2
 11504
private:
williamr@2
 11505
	CMobileConferenceCallPtrHolder* iMmPtrHolder;
williamr@2
 11506
	RMobileConferenceCall(const RMobileConferenceCall&);
williamr@2
 11507
protected:
williamr@2
 11508
	IMPORT_C void ConstructL();
williamr@2
 11509
	IMPORT_C void Destruct();
williamr@2
 11510
	};
williamr@2
 11511
williamr@2
 11512
williamr@2
 11513
/////////////////////////////////////////////////////////////////////////////////////
williamr@2
 11514
//
williamr@2
 11515
// EAP-SIM Authentication functional unit
williamr@2
 11516
//
williamr@2
 11517
/////////////////////////////////////////////////////////////////////////////////////
williamr@2
 11518
williamr@2
 11519
class CMobileSmartCardEapPtrHolder;
williamr@2
 11520
williamr@2
 11521
/**
williamr@2
 11522
This sub-session opens under RMobilePhone.
williamr@2
 11523
williamr@2
 11524
RMobileSmartCardEap provides the client with access to a Smart Card
williamr@2
 11525
Application's EAP-capability (if one exists).
williamr@2
 11526
williamr@2
 11527
(See ETSI TS 102.310 v6.2.0 and RFC3748)
williamr@2
 11528
williamr@2
 11529
To submit authentication challenges or requests, a client must use
williamr@2
 11530
CAsyncSmartCardEapAuthentication in conjunction with this sub-session.
williamr@2
 11531
williamr@2
 11532
@see CAsyncSmartCardEapAuthentication
williamr@2
 11533
@publishedPartner
williamr@2
 11534
@released
williamr@2
 11535
*/
williamr@2
 11536
class RMobileSmartCardEap : public RTelSubSessionBase
williamr@2
 11537
	{
williamr@2
 11538
	friend class CAsyncSmartCardEapAuthentication;
williamr@2
 11539
williamr@2
 11540
public:
williamr@2
 11541
	/**
williamr@2
 11542
	Class encapsulates EAP request packet data for authentication.
williamr@2
 11543
williamr@2
 11544
	@see CAsyncSmartCardEapAuthentication
williamr@2
 11545
williamr@2
 11546
	@publishedPartner
williamr@2
 11547
	@released
williamr@2
 11548
	*/
williamr@2
 11549
	class CEapAuthenticateRequestDataV6 : public CBase
williamr@2
 11550
		{
williamr@2
 11551
	public:
williamr@2
 11552
		IMPORT_C static CEapAuthenticateRequestDataV6* NewL();
williamr@2
 11553
		IMPORT_C virtual void ExternalizeL(TPtr8& aBuffer);
williamr@2
 11554
		IMPORT_C virtual void InternalizeL(const TDesC8& aBuffer);
williamr@2
 11555
		IMPORT_C TUint VersionId() const;
williamr@2
 11556
		IMPORT_C TPtr8 GetEapReqPacket() const;
williamr@2
 11557
		IMPORT_C void SetEapReqPacketL(const TDesC8& aData);
williamr@2
 11558
		IMPORT_C ~CEapAuthenticateRequestDataV6();
williamr@2
 11559
williamr@2
 11560
	private:
williamr@2
 11561
		CEapAuthenticateRequestDataV6();
williamr@2
 11562
		void ConstructL();
williamr@2
 11563
williamr@2
 11564
	protected:
williamr@2
 11565
		/**
williamr@2
 11566
		ETelMM's supported version.
williamr@2
 11567
		*/
williamr@2
 11568
		TUint iVersionId;
williamr@2
 11569
williamr@2
 11570
	public:
williamr@2
 11571
		/**
williamr@2
 11572
		EAP-request packet in a flat buffer.
williamr@2
 11573
		*/
williamr@2
 11574
		CBufFlat* iEapReqPacket;
williamr@2
 11575
		};
williamr@2
 11576
williamr@2
 11577
	IMPORT_C RMobileSmartCardEap();
williamr@2
 11578
williamr@2
 11579
	/**
williamr@2
 11580
	EAP types are represented by one byte for standard EAP methods, and
williamr@2
 11581
	eight bytes for extended methods.  Each byte specified in the
williamr@2
 11582
	TEapType buffer should represent one semi-octet.  Therefore, a
williamr@2
 11583
	maximum of 16-chars are needed for representing any possible EAP
williamr@2
 11584
	type.  (See section 5.2 of ETSI TS 102.310 v6.2.0.)
williamr@2
 11585
williamr@2
 11586
	@see RMobileSmartCardEap::TEapType
williamr@2
 11587
williamr@2
 11588
	@publishedPartner
williamr@2
 11589
	@released
williamr@2
 11590
	*/
williamr@2
 11591
	enum { KEapTypeSize = 16 };
williamr@2
 11592
williamr@2
 11593
	/**
williamr@2
 11594
	A typedef'd buffer to hold the EAP type for the subsequent
williamr@2
 11595
	authentication that will be carried out on the Smart Card
williamr@2
 11596
	Application.
williamr@2
 11597
williamr@2
 11598
	The value specified must correspond to the pre-allocated type
williamr@2
 11599
	identifiers for various EAPs (see
williamr@2
 11600
	http://www.iana.org/assignments/eap-numbers).  Some known values
williamr@2
 11601
	are given in etelmm.h.
williamr@2
 11602
williamr@2
 11603
	The type must be specified in hexadecimal format, where each
williamr@2
 11604
	character represents one semi-octet.
williamr@2
 11605
williamr@2
 11606
	@see KETelSmartCardEapTypeMD5
williamr@2
 11607
	@see KETelSmartCardEapTypeTLS
williamr@2
 11608
	@see KETelSmartCardEapTypeSIM
williamr@2
 11609
	@see KETelSmartCardEapTypeAKA
williamr@2
 11610
	@see KETelSmartCardEapTypeTTLS
williamr@2
 11611
	@see RMobileSmartCardEap::Open()
williamr@2
 11612
williamr@2
 11613
	@publishedPartner
williamr@2
 11614
	@released
williamr@2
 11615
	*/
williamr@2
 11616
	typedef TBuf8<KEapTypeSize> TEapType;
williamr@2
 11617
williamr@2
 11618
	IMPORT_C TInt Open(RMobilePhone& aPhone, const RMobilePhone::TAID& aAID, const TEapType& aEapType);
williamr@2
 11619
	IMPORT_C void InitialiseEapMethod(TRequestStatus& aReqStatus);
williamr@2
 11620
	IMPORT_C void Close();
williamr@2
 11621
williamr@2
 11622
	/**
williamr@2
 11623
	Authentication status of the EAP supporting UICC application (See
williamr@2
 11624
	section 7.2 of ETSI TS 102.310 v6.2.0).  One of these values is
williamr@2
 11625
	returned on completion of an
williamr@2
 11626
	RMobileSmartCardEap::GetAuthenticationStatus() request.
williamr@2
 11627
williamr@2
 11628
	@see RMobileSmartCardEap::GetAuthenticationStatus()
williamr@2
 11629
williamr@2
 11630
	@publishedPartner
williamr@2
 11631
	@released
williamr@2
 11632
	*/
williamr@2
 11633
	enum TEapAuthStatus
williamr@2
 11634
		{
williamr@2
 11635
		/**
williamr@2
 11636
		No authentication started
williamr@2
 11637
		*/
williamr@2
 11638
		ENoAuthStarted,    // 0
williamr@2
 11639
		/**
williamr@2
 11640
		Authenticating
williamr@2
 11641
		*/
williamr@2
 11642
		EAuthenticating,   // 1
williamr@2
 11643
		/**
williamr@2
 11644
		Authentication complete
williamr@2
 11645
		*/
williamr@2
 11646
		EAuthenticated,    // 2
williamr@2
 11647
		/**
williamr@2
 11648
		Held (authentication failure)
williamr@2
 11649
		*/
williamr@2
 11650
		EHeld              // 3
williamr@2
 11651
		};
williamr@2
 11652
williamr@2
 11653
	IMPORT_C void GetAuthenticationStatus(TRequestStatus& aReqStatus, TEapAuthStatus& aAuthStatus);
williamr@2
 11654
williamr@2
 11655
	/**
williamr@2
 11656
	TEapUserIdType should be used to request an identity from EF_PUId
williamr@2
 11657
	or EF_Ps, when making an RMobileSmartCardEap::GetUserIdentity()
williamr@2
 11658
	request.
williamr@2
 11659
	(See sections 7.3 and 7.4, respectively, of ETSI TS	102.310 v6.2.0,
williamr@2
 11660
	and RFC2486 - The Network Access Identifier).
williamr@2
 11661
williamr@2
 11662
	@see RMobileSmartCardEap::GetUserIdentity()
williamr@2
 11663
	@see RMobileSmartCardEap::TEapUserIdentityV6
williamr@2
 11664
williamr@2
 11665
	@publishedPartner
williamr@2
 11666
	@released
williamr@2
 11667
	*/
williamr@2
 11668
	enum TEapUserIdType
williamr@2
 11669
		{
williamr@2
 11670
		/** Identity is permanent type */
williamr@2
 11671
		EPermanentIdentity,   // 0
williamr@2
 11672
		/** Identity is pseudonym type */
williamr@2
 11673
		EPseudonymIdentity    // 1
williamr@2
 11674
		};
williamr@2
 11675
williamr@2
 11676
	/**
williamr@2
 11677
	Maximum permitted size of identity data.
williamr@2
 11678
	*/
williamr@2
 11679
	enum { KEapIdentityMaxSize = 255 };
williamr@2
 11680
williamr@2
 11681
	/**
williamr@2
 11682
	EAP User Identity data.  Ids are stored in EF_PUId or EF_Ps
williamr@2
 11683
	(specified in sections 7.3 and 7.4, respectively, of ETSI TS
williamr@2
 11684
	102.310 v6.2.0).
williamr@2
 11685
williamr@2
 11686
	@see RMobileSmartCardEap::GetUserIdentity()
williamr@2
 11687
williamr@2
 11688
	@publishedPartner
williamr@2
 11689
	@released
williamr@2
 11690
	*/
williamr@2
 11691
	class TEapUserIdentityV6 : public RMobilePhone::TMultimodeType
williamr@2
 11692
		{
williamr@2
 11693
	public:
williamr@2
 11694
		IMPORT_C TEapUserIdentityV6();
williamr@2
 11695
	public:
williamr@2
 11696
		/**
williamr@2
 11697
		EAP-IDENTITY Data.
williamr@2
 11698
		*/
williamr@2
 11699
		TBuf8<KEapIdentityMaxSize> iEapId;
williamr@2
 11700
		};
williamr@2
 11701
williamr@2
 11702
	/**
williamr@2
 11703
	A typedef'd packaged TEapUserIdentityV6 for passing through a
williamr@2
 11704
	generic API method.
williamr@2
 11705
williamr@2
 11706
	@publishedPartner
williamr@2
 11707
	@released
williamr@2
 11708
	*/
williamr@2
 11709
	typedef TPckg<TEapUserIdentityV6> TEapUserIdentityV6Pckg;
williamr@2
 11710
williamr@2
 11711
	IMPORT_C void GetUserIdentity(TRequestStatus& aReqStatus,
williamr@2
 11712
	                              TEapUserIdType aRequestedIdType,
williamr@2
 11713
	                              TDes8& aUserId);
williamr@2
 11714
williamr@2
 11715
	/**
williamr@2
 11716
	TEapKeyV6 should be used to request one of (currently) two keys
williamr@2
 11717
	available on the EF_EAPKEYS of the UICC application (see section
williamr@2
 11718
	7.1 of ETSI TS 102.310 v6.2.0).  This enumeration type should be
williamr@2
 11719
	used in RMobileSmartCardEap::GetEapKey() to specify the key to be
williamr@2
 11720
	retrieved.
williamr@2
 11721
williamr@2
 11722
	@see RMobileSmartCardEap::TEapKeyV6
williamr@2
 11723
	@see RMobileSmartCardEap::GetEapKey()
williamr@2
 11724
williamr@2
 11725
	@publishedPartner
williamr@2
 11726
	@released
williamr@2
 11727
	*/
williamr@2
 11728
	enum TEapKeyTag
williamr@2
 11729
		{
williamr@2
 11730
		/**
williamr@2
 11731
		Used to request Master Session Key.
williamr@2
 11732
		*/
williamr@2
 11733
		EEapKeyMSK =  0x80,
williamr@2
 11734
		/**
williamr@2
 11735
		Used to request Extended Master Session Key.
williamr@2
 11736
		*/
williamr@2
 11737
		EEapKeyEMSK = 0x81
williamr@2
 11738
		};
williamr@2
 11739
williamr@2
 11740
	/**
williamr@2
 11741
	Maximum size of an EAP Key stored on the DF_EAP's EF_EAPKEYS.
williamr@2
 11742
	255 as each key has a length that can be specified by exactly one
williamr@2
 11743
	byte (see section 7.1 of ETSI TS 102.310 v6.2.0).
williamr@2
 11744
williamr@2
 11745
	@publishedPartner
williamr@2
 11746
	@released
williamr@2
 11747
	*/
williamr@2
 11748
	enum { KEapKeyMaxSize = 255 };
williamr@2
 11749
williamr@2
 11750
	/** 
williamr@2
 11751
	EAP authentication key data.
williamr@2
 11752
williamr@2
 11753
	@see RMobileSmartCardEap::GetEapKey()
williamr@2
 11754
williamr@2
 11755
	@publishedPartner
williamr@2
 11756
	@released
williamr@2
 11757
	*/
williamr@2
 11758
	class TEapKeyV6 : public RMobilePhone::TMultimodeType
williamr@2
 11759
		{
williamr@2
 11760
	public:
williamr@2
 11761
		IMPORT_C TEapKeyV6();
williamr@2
 11762
	public:
williamr@2
 11763
		/**
williamr@2
 11764
		EAP-KEY Data.
williamr@2
 11765
		*/
williamr@2
 11766
		TBuf8<KEapKeyMaxSize> iEapKey;
williamr@2
 11767
		};
williamr@2
 11768
williamr@2
 11769
	/**
williamr@2
 11770
	A typedef'd packaged TEapKeyV6 for passing through a generic API
williamr@2
 11771
	method.
williamr@2
 11772
williamr@2
 11773
	@publishedPartner
williamr@2
 11774
	@released
williamr@2
 11775
	*/
williamr@2
 11776
	typedef TPckg<TEapKeyV6> TEapKeyV6Pckg;
williamr@2
 11777
williamr@2
 11778
	IMPORT_C void GetEapKey(TRequestStatus& aReqStatus, const TEapKeyTag aRequestedKey, TDes8& aKey);
williamr@2
 11779
williamr@2
 11780
	/**
williamr@2
 11781
	Status of the DF_EAP this subsession refers to.  The status is
williamr@2
 11782
	basically an indication of whether the DF is in use by another sub-
williamr@2
 11783
	session client instance.
williamr@2
 11784
williamr@2
 11785
	NotifyEapMethodAccessStatusChange() will give a notification when
williamr@2
 11786
	the status changes.
williamr@2
 11787
williamr@2
 11788
	Status will change when the first client calls
williamr@2
 11789
	InitialiseEapMethod() on this sub-session.  When the same client
williamr@2
 11790
	calls ReleaseEapMethod() (or Close()), the status will change
williamr@2
 11791
	again.  This allows mutually exclusive access to the DF_EAP.  All
williamr@2
 11792
	other RMobileSmartCardEap hanles will get an error if they attempt
williamr@2
 11793
	to make requests that access the same DF_EAP.
williamr@2
 11794
williamr@2
 11795
	@see RMobileSmartCardEap::NotifyEapMethodAccessStatusChange()
williamr@2
 11796
	@see RMobileSmartCardEap::ReleaseEapMethod()
williamr@2
 11797
	@see RMobileSmartCardEap::InitialiseEapMethod()
williamr@2
 11798
williamr@2
 11799
	@publishedPartner
williamr@2
 11800
	@released
williamr@2
 11801
	*/
williamr@2
 11802
	enum TEapMethodAccessStatus
williamr@2
 11803
		{
williamr@2
 11804
		/**
williamr@2
 11805
		AID/DF_EAP has been reset, and the DF_EAP has not been
williamr@2
 11806
		initialised by any other instance of RMobileSmartCardEap.
williamr@2
 11807
		*/
williamr@2
 11808
		EEapMethodAvailable,
williamr@2
 11809
		/**
williamr@2
 11810
		Another instance of RMobileSmartCardEap has initialised first
williamr@2
 11811
		and taken ownership of the DF_EAP.  The DF_EAP is currently
williamr@2
 11812
		active and EAP requests can be made.
williamr@2
 11813
		*/
williamr@2
 11814
		EEapMethodInUseApplicationActive,
williamr@2
 11815
		/**
williamr@2
 11816
		This instance of RMobileSmartCardEap still owns the lock on the
williamr@2
 11817
		DF_EAP, but the application has been deactivated elsewhere.
williamr@2
 11818
		The client should re-initialise before making further EAP
williamr@2
 11819
		requests.
williamr@2
 11820
williamr@2
 11821
		@see RMobileSmartCardEap::InitialiseEapMethod()
williamr@2
 11822
		*/
williamr@2
 11823
		EEapMethodInUseApplicationInactive,
williamr@2
 11824
		/**
williamr@2
 11825
		Lock on the DF_EAP has been released, but another DF_EAP method
williamr@2
 11826
		is in use under the same AID, thus, cannot reset/initialise
williamr@2
 11827
		this subsessions EAP method.  Client can only post a
williamr@2
 11828
		notification and wait till status changes to
williamr@2
 11829
		EEapMethodAvailable.
williamr@2
 11830
williamr@2
 11831
		@see RMobileSmartCardEap::NotifyEapMethodAccessStatusChange()
williamr@2
 11832
		*/
williamr@2
 11833
		EEapMethodUnableToInitialise
williamr@2
 11834
		};
williamr@2
 11835
williamr@2
 11836
	IMPORT_C TInt ReleaseEapMethod();
williamr@2
 11837
	IMPORT_C TInt GetEapMethodAccessStatus(TEapMethodAccessStatus& aEapMethodStatus);
williamr@2
 11838
	IMPORT_C void NotifyEapMethodAccessStatusChange(TRequestStatus& aReqStatus, TEapMethodAccessStatus& aEapMethodStatus);
williamr@2
 11839
	IMPORT_C TBool IsEapMethodOwner() const;
williamr@2
 11840
williamr@2
 11841
protected:
williamr@2
 11842
	IMPORT_C void ConstructL();
williamr@2
 11843
	IMPORT_C void Destruct();
williamr@2
 11844
williamr@2
 11845
private:
williamr@2
 11846
	RMobileSmartCardEap(const RMobileSmartCardEap&);
williamr@2
 11847
williamr@2
 11848
	TChar SeptChar(TInt aDigit);
williamr@2
 11849
	void ConvertBinToText(const TDesC8& aBinData, TDes& aText);
williamr@2
 11850
williamr@2
 11851
private:
williamr@2
 11852
	/**
williamr@2
 11853
	Pointer Holder for the RMobileSmartCardEap sub-session requests.
williamr@2
 11854
	*/
williamr@2
 11855
	CMobileSmartCardEapPtrHolder* iMmPtrHolder;
williamr@2
 11856
	/**
williamr@2
 11857
	True if this object is the first to request	InitialiseEapMethod()
williamr@2
 11858
	on its <AID,EAPType> when the status is EEapMethodAvailable.
williamr@2
 11859
	I.e. True only for the instance of RMobileSmartCardEap that
williamr@2
 11860
	successfully passes the Wait() on iSemaphore.
williamr@2
 11861
	*/
williamr@2
 11862
	TBool iOwnsEapMethodLock;
williamr@2
 11863
	/**
williamr@2
 11864
	Semaphore is actually owned by TSY, and used by all instances of
williamr@2
 11865
	RMobileSmartCardEap	to stop multiple access to the same EAP method
williamr@2
 11866
	on any one application.
williamr@2
 11867
	*/
williamr@2
 11868
	RSemaphore iSemaphore;
williamr@2
 11869
williamr@2
 11870
	};	// RMobileSmartCardEap
williamr@2
 11871
williamr@2
 11872
/////////////////////////////////////////////////////////////////////////////////////
williamr@2
 11873
//
williamr@2
 11874
// LCS-MO-LR AND LCS-MT-LR
williamr@2
 11875
//
williamr@2
 11876
/////////////////////////////////////////////////////////////////////////////////////
williamr@2
 11877
class CMobileLocationServicesPtrHolder;
williamr@2
 11878
williamr@2
 11879
/**
williamr@2
 11880
This sub-session opens under RMobilePhone.
williamr@2
 11881
williamr@2
 11882
A new RMobileLocationServices class is used to add the ETelMM Support for Mobile Terminating Location Request,
williamr@2
 11883
Mobile Originating Location Requests, A-Gps assistance data for the LBS Framework.
williamr@2
 11884
williamr@2
 11885
RMobileLocationServices is derived from RTelSubSessionBase.RMobileLocationServices lists the 
williamr@2
 11886
APIs,which provided the support for Mtlr, Molr, A-Gps assistance data requests.
williamr@2
 11887
*/
williamr@2
 11888
class RMobileLocationServices : public RTelSubSessionBase
williamr@2
 11889
	{
williamr@2
 11890
public:
williamr@2
 11891
	
williamr@2
 11892
	IMPORT_C RMobileLocationServices();
williamr@2
 11893
    IMPORT_C TInt Open(RMobilePhone& aPhone);
williamr@2
 11894
    IMPORT_C void Close();
williamr@2
 11895
 	/** 
williamr@2
 11896
 	Maximum length of the array used for TLcsRequestorIdString.
williamr@2
 11897
 	*/
williamr@2
 11898
	enum { KLcsMaxRequestorIdStringSize = 256 };
williamr@2
 11899
	/** 
williamr@2
 11900
	Maximum length of the array used for TLcsClientBufferName.
williamr@2
 11901
 	*/
williamr@2
 11902
	enum { KLcsMaxClientNameBufferSize = 256 };
williamr@2
 11903
	/** 
williamr@2
 11904
	Maximum length of the array used for TLcsClientExternalID.
williamr@2
 11905
	*/
williamr@2
 11906
	enum { KLcsMaxClientExternalIdSize = 64 };
williamr@2
 11907
	/** 
williamr@2
 11908
	Maximum length of the array used for TLcsLocationEstimate.
williamr@2
 11909
	*/
williamr@2
 11910
	enum { KLcsMaxLocationEstimateSize = 64 };
williamr@2
 11911
	/** 
williamr@2
 11912
	Maximum length of the array used for TLcsVelocityEstimate.
williamr@2
 11913
	*/
williamr@2
 11914
	enum { KLcsMaxVelocityEstimateSize = 64 };
williamr@2
 11915
	/** 
williamr@2
 11916
	Maximum length of the array used for TLcsGpsAssistanceData.
williamr@2
 11917
	*/
williamr@2
 11918
	enum { KLcsMaxGpsAssistanceDataSize = 64 };
williamr@2
 11919
	/** 
williamr@2
 11920
	A typedef'd buffer which holds the External ClientName Buffer.
williamr@2
 11921
	@see KLcsMaxClientNameBufferSize
williamr@2
 11922
	*/
williamr@2
 11923
	typedef TBuf8<KLcsMaxClientNameBufferSize> TLcsClientNameBuffer;
williamr@2
 11924
	/** 
williamr@2
 11925
	A typedef'd buffer which holds the RequestorId String.
williamr@2
 11926
	@see KLcsMaxRequestorIdStringSize
williamr@2
 11927
	*/
williamr@2
 11928
	typedef TBuf8<KLcsMaxRequestorIdStringSize> TLcsRequestorIdString;
williamr@2
 11929
	/**
williamr@2
 11930
	A typedef'd buffer which holds the Gps Assistance Data.
williamr@2
 11931
	@see KLcsMaxGpsAssistanceDataSize
williamr@2
 11932
	*/
williamr@2
 11933
	typedef TBuf8<KLcsMaxGpsAssistanceDataSize> TGpsAssistanceData;
williamr@2
 11934
	/**
williamr@2
 11935
	A typedef'd buffer which holds the External ClientId.
williamr@2
 11936
	@see KLcsMaxClientExternalIdSize
williamr@2
 11937
	*/
williamr@2
 11938
	typedef TBuf8<KLcsMaxClientExternalIdSize> TLcsClientExternalID;
williamr@2
 11939
	/**
williamr@2
 11940
	A typedef'd TUint8 which holds the Data Coding Scheme information.
williamr@2
 11941
	*/
williamr@2
 11942
	typedef TUint8 TLcsDataCodingScheme;
williamr@2
 11943
	/**
williamr@2
 11944
	A typedef'd buffer which holds the Location Estimate.
williamr@2
 11945
	@see KLcsMaxLocationEstimateSize
williamr@2
 11946
 	*/
williamr@2
 11947
	typedef TBuf8<KLcsMaxLocationEstimateSize> TLcsLocationEstimate;
williamr@2
 11948
	/**
williamr@2
 11949
	A typedef'd buffer which holds the Velocity Estimate.
williamr@2
 11950
	@see KLcsMaxVelocityEstimateSize
williamr@2
 11951
	*/
williamr@2
 11952
	typedef TBuf8<KLcsMaxVelocityEstimateSize> TLcsVelocityEstimate;
williamr@2
 11953
williamr@2
 11954
	typedef TUint8 TTransactionIdentifier;
williamr@2
 11955
	typedef TUint8 TGPSI;
williamr@2
 11956
 	 /**
williamr@2
 11957
     Note:Refer to 3GPP TS 23.271(Functional stage 2 description of Location Services (LCS)),
williamr@2
 11958
     3GPP TS 24.030(Location Services (LCS); Supplementary service operations - Stage 3) and
williamr@2
 11959
     3GPP TS 24.080(Mobile radio interface layer 3 supplementary services specification; Formats and coding)
williamr@2
 11960
     for further details of MTLR and MOLR member data.
williamr@2
 11961
     */
williamr@2
 11962
 /*********************************************************************/ 
williamr@2
 11963
 //                  MTLR                                             //
williamr@2
 11964
 /*********************************************************************/   
williamr@2
 11965
    /**
williamr@2
 11966
    TNotificationType lists the various types of Notification
williamr@2
 11967
    that can be expected from any MTLR-Location Notification coming from the Network,
williamr@2
 11968
    These types depend on the Subscription Profile of the UE. 
williamr@2
 11969
    
williamr@2
 11970
    One of the TNotificationType is expected to be retrieved from the Network,
williamr@2
 11971
    when a UE places a RMobileLocationServices::NotifyMtlr() request on the TSY.
williamr@2
 11972
    @internalAll
williamr@2
 11973
    */
williamr@2
 11974
    enum TNotificationType
williamr@2
 11975
		{
williamr@2
 11976
		/**
williamr@2
 11977
		Notification Type Unknown
williamr@2
 11978
		*/
williamr@2
 11979
		ENotificationTypeUnknown,
williamr@2
 11980
		/**
williamr@2
 11981
		The Location Request is accepted by default
williamr@2
 11982
		*/
williamr@2
 11983
		ENotifyLocationAllowed,
williamr@2
 11984
		/**
williamr@2
 11985
        This enum is used to indicate to the client, that the user should be notified of the incoming MTLR request, 
williamr@2
 11986
        and that the user is expected to respond by granting/denying the request. By defualt, if the user 
williamr@2
 11987
        does not provide a response, the request is granted
williamr@2
 11988
		*/
williamr@2
 11989
		ENotifyAndVerify_LocationAllowedIfNoResponse,
williamr@2
 11990
		/**
williamr@2
 11991
        This enum is used to indicate to the client, that the user should be notified of the incoming MTLR request, 
williamr@2
 11992
        and that the user is expected to respond by granting/denying the request. By defualt, if the 
williamr@2
 11993
        user does not provide a response, the request is denied.
williamr@2
 11994
		*/
williamr@2
 11995
		ENotifyAndVerify_LocationNotAllowedIfNoResponse,
williamr@2
 11996
        /**
williamr@2
 11997
        The network sends the information to the UE that the external client has privacy overide capability,
williamr@2
 11998
        This indicator is received when an authenticated or emergency client had sent the request.
williamr@2
 11999
		*/     
williamr@2
 12000
        ELocationPrivacyOverride,  
williamr@2
 12001
        /**
williamr@2
 12002
        This enum is used to notify the UE that an incoming MTLR request was denied by the network for any of various 
williamr@2
 12003
        reasons.
williamr@2
 12004
		*/
williamr@2
 12005
		ELocationNotAllowed                                      
williamr@2
 12006
        };
williamr@2
 12007
williamr@2
 12008
    
williamr@2
 12009
    /**
williamr@2
 12010
    TLocationEstimateType lists the various types of LocationEstimate
williamr@2
 12011
    that can be expected from any MTLR-Location Notification request coming from the Network,
williamr@2
 12012
    These types depend on the Subscription Profile of the UE.
williamr@2
 12013
    
williamr@2
 12014
    One of the TLocationEstimateType is expected to be retrieved from the Network,
williamr@2
 12015
    when a UE places a RMobileLocationServices::NotifyMtlr() request on the TSY.
williamr@2
 12016
    @internalAll
williamr@2
 12017
    */
williamr@2
 12018
    enum TLocationEstimateType
williamr@2
 12019
		{
williamr@2
 12020
		/**
williamr@2
 12021
		Location Estimate Type Unknown.
williamr@2
 12022
		*/
williamr@2
 12023
		ELocationEstimateTypeUnknown,
williamr@2
 12024
		/**
williamr@2
 12025
		The External Client has requested for the Current Location of
williamr@2
 12026
		the UE.
williamr@2
 12027
		*/
williamr@2
 12028
		ECurrentLocation,
williamr@2
 12029
		/**
williamr@2
 12030
		The External Client has requested for the Current Location of
williamr@2
 12031
		the UE.Incase,if the request is accepted,But still it fails to
williamr@2
 12032
		generate the Location report because of Measurement Control Failure.
williamr@2
 12033
		The Client receives the Last Known Location.
williamr@2
 12034
		*/
williamr@2
 12035
		ECurrentOrLastKnownLocation,
williamr@2
 12036
		/**
williamr@2
 12037
		The External Client has requested for the initial location of the UE. The current 
williamr@2
 12038
		location of the UE may or may not be the initial location.
williamr@2
 12039
		*/
williamr@2
 12040
		EInitialLocation
williamr@2
 12041
		};	
williamr@2
 12042
    
williamr@2
 12043
    /**
williamr@2
 12044
    TLcsClientNameV1 holds the details of the name of the External client, 
williamr@2
 12045
    who is making the request via Network.
williamr@2
 12046
    TLcsClientNameV1 is used by RMobileLocationServices::NotifyMtlr() request.
williamr@2
 12047
    @see TLcsDataCodingScheme
williamr@2
 12048
    @see TLcsClientNameBuffer
williamr@2
 12049
    @internalAll
williamr@2
 12050
    */
williamr@2
 12051
    class TLcsClientNameV1
williamr@2
 12052
    	{
williamr@2
 12053
    public:
williamr@2
 12054
    	/**
williamr@2
 12055
    	TLcsDataCodingScheme holds the Data Coding Scheme information which is used
williamr@2
 12056
    	to extract the ExternalClient name.
williamr@2
 12057
    	*/
williamr@2
 12058
    	TLcsDataCodingScheme iLcsDataCodingScheme;
williamr@2
 12059
    	/**
williamr@2
 12060
    	TLcsClientNameBuffer holds the Client name 		
williamr@2
 12061
    	*/
williamr@2
 12062
    	TLcsClientNameBuffer       iLcsClientNameBuffer;	
williamr@2
 12063
    	};
williamr@2
 12064
    
williamr@2
 12065
    /**
williamr@2
 12066
    TLcsRequestorIDV1 holds the details of the RequestorId i.e the details of the 
williamr@2
 12067
    Network,Which is carrying the request of External Client to UE
williamr@2
 12068
    TLcsRequestorIDV1 is used by RMobileLocationServices::NotifyMtlr() request.
williamr@2
 12069
    @see TLcsDataCodingScheme
williamr@2
 12070
    @see TLcsRequestorIdString 
williamr@2
 12071
    @internalAll
williamr@2
 12072
    */
williamr@2
 12073
    class TLcsRequestorIDV1
williamr@2
 12074
    	{
williamr@2
 12075
    public:
williamr@2
 12076
        /**
williamr@2
 12077
    	TLcsDataCodingScheme holds the Data Coding Scheme information which is used
williamr@2
 12078
    	to extract the RequestorId String.
williamr@2
 12079
    	*/
williamr@2
 12080
    	TLcsDataCodingScheme        iLcsDataCodingScheme;
williamr@2
 12081
    	/**
williamr@2
 12082
    	TLcsRequestorIdString holds the RequestorId String 		
williamr@2
 12083
    	*/
williamr@2
 12084
    	TLcsRequestorIdString       iLcsRequestorIdString;	
williamr@2
 12085
    	};
williamr@2
 12086
    
williamr@2
 12087
    /**
williamr@2
 12088
    TLocationExternalInfoV1 holds the details of the External client and the Requestor
williamr@2
 12089
    TLocationExternalInfoV1 is used by RMobileLocationServices::NotifyMtlr() request
williamr@2
 12090
    @see TLcsClientExternalID
williamr@2
 12091
    @see TLcsClientNameV1
williamr@2
 12092
    @see TLcsRequestorIDV1
williamr@2
 12093
    @internalAll
williamr@2
 12094
    */
williamr@2
 12095
    class TLocationExternalInfoV1
williamr@2
 12096
		{
williamr@2
 12097
	public:
williamr@2
 12098
		/**
williamr@2
 12099
		TLcsClientExternalID gives the id of the External client.
williamr@2
 12100
		*/
williamr@2
 12101
		TLcsClientExternalID     iLcsClientID;
williamr@2
 12102
		/**
williamr@2
 12103
		TLcsClientNameV1 holds the name of the External Client.
williamr@2
 12104
		*/
williamr@2
 12105
		TLcsClientNameV1           iLcsClientName;
williamr@2
 12106
		/**
williamr@2
 12107
		TLcsRequestorIDV1 gives the details of requestor id
williamr@2
 12108
		*/
williamr@2
 12109
		TLcsRequestorIDV1          iLcsRequestorID;
williamr@2
 12110
		};
williamr@2
 12111
	
williamr@2
 12112
	/**
williamr@2
 12113
	TNotifyMtlrV7 holds the details of the MTLR request made by the External client.
williamr@2
 12114
	TNotifyMtlrV7 is used by RMobileLocationServices::NotifyMtlr() request
williamr@2
 12115
	@see TNotificationType
williamr@2
 12116
	@see TLocationEstimateType
williamr@2
 12117
	@see TLocationExternalInfoV1
williamr@2
 12118
	@internalAll
williamr@2
 12119
	*/
williamr@2
 12120
	class TNotifyMtlrV7: public RMobilePhone::TMultimodeType 
williamr@2
 12121
		{
williamr@2
 12122
	public:
williamr@2
 12123
		IMPORT_C TNotifyMtlrV7();
williamr@2
 12124
	public:
williamr@2
 12125
		/**
williamr@2
 12126
		TNotificationType holds the type of notification request being made
williamr@2
 12127
		*/
williamr@2
 12128
		TNotificationType          iNotificationType;
williamr@2
 12129
		/**
williamr@2
 12130
		TLocationEstimateType holds the type of LocationEstimate is requested 
williamr@2
 12131
		*/
williamr@2
 12132
		TLocationEstimateType      iMtlrLocationEstimateType;
williamr@2
 12133
		/**
williamr@2
 12134
		TLocationExternalInfoV7  holds the details of the External client. 
williamr@2
 12135
		*/
williamr@2
 12136
		TLocationExternalInfoV1      iLocationInfo;
williamr@2
 12137
        };
williamr@2
 12138
	
williamr@2
 12139
   	/**
williamr@2
 12140
	A typedef'd packaged TNotifyMtlrV7 for passing through a
williamr@2
 12141
	generic API method.
williamr@2
 12142
williamr@2
 12143
	@internalAll
williamr@2
 12144
	*/
williamr@2
 12145
	typedef TPckg<TNotifyMtlrV7> TNotifyMtlrV7Pckg;
williamr@2
 12146
	
williamr@2
 12147
 //MTLR-RESPONSE
williamr@2
 12148
 	/**
williamr@2
 12149
 	TMtlrResponse is used by the OverLoaded RMobileLocationServices::SendMtlrResponse() API
williamr@2
 12150
 	It holds the type of response being sent back for the MTLR request made.
williamr@2
 12151
 	@internalAll
williamr@2
 12152
 	*/
williamr@2
 12153
	
williamr@2
 12154
	enum TMtlrResponse
williamr@2
 12155
		{
williamr@2
 12156
		/**
williamr@2
 12157
		Mtlr Response Unknown.
williamr@2
 12158
		*/
williamr@2
 12159
		EMtlrResponseUnknown,
williamr@2
 12160
		/**
williamr@2
 12161
		The UE has denied the Location Request  of the External client.
williamr@2
 12162
		@see RMobileLocationServices::SendMtlrResponse()
williamr@2
 12163
		*/
williamr@2
 12164
		EPermissionDenied ,
williamr@2
 12165
		/**
williamr@2
 12166
		The UE has granted  the Location Request  of the External client.
williamr@2
 12167
		@see RMobileLocationServices::SendMtlrResponse()
williamr@2
 12168
		*/
williamr@2
 12169
		EPermissionGranted
williamr@2
 12170
		};
williamr@2
 12171
	
williamr@2
 12172
	/**
williamr@2
 12173
 	TMtlrError is used by the Overloaded RMobileLocationServices::SendMtlrResponse() API
williamr@2
 12174
 	It holds the type of Error response being sent back for the MTLR request made.
williamr@2
 12175
 	@internalAll
williamr@2
 12176
 	*/
williamr@2
 12177
 	enum TMtlrError
williamr@2
 12178
		{
williamr@2
 12179
		/**
williamr@2
 12180
		Mtlr Error Unknown.
williamr@2
 12181
		*/
williamr@2
 12182
		EMtlrErrorUnknown,
williamr@2
 12183
		/**
williamr@2
 12184
		This response is sent back to the network when System has failed to 
williamr@2
 12185
		do the privacy check due to some Miscellaneous reasons
williamr@2
 12186
		*/
williamr@2
 12187
		ESystemFailure ,
williamr@2
 12188
		/**
williamr@2
 12189
		The response is sent when the privacy verification has failed because of Unexpected data 
williamr@2
 12190
		values retrieved from the Location Notification request generated by the Network.
williamr@2
 12191
		This generates an Error-Prone response from UE
williamr@2
 12192
		*/
williamr@2
 12193
		EUnexpectedDataValue	
williamr@2
 12194
		};
williamr@2
 12195
	
williamr@2
 12196
	/**
williamr@2
 12197
 	TMtlrReject is used by the Overloaded RMobileLocationServices::SendMtlrResponse() API
williamr@2
 12198
 	It holds the details of the Response being rejected due to one of the problems reported to the UE
williamr@2
 12199
 	for the MTLR request being made.
williamr@2
 12200
 	@internalAll
williamr@2
 12201
 	*/
williamr@2
 12202
 	enum TMtlrReject
williamr@2
 12203
		{
williamr@2
 12204
		/**
williamr@2
 12205
		Mtlr Reject Unknown.
williamr@2
 12206
		*/
williamr@2
 12207
		EMtlrRejectUnknown,
williamr@2
 12208
		/**
williamr@2
 12209
		This indication is given under a scenario where the UE wants to reject a request,
williamr@2
 12210
		It is done by invoking Duplicate ID's.
williamr@2
 12211
		*/
williamr@2
 12212
		EDuplicateInvokeID,
williamr@2
 12213
		/**
williamr@2
 12214
		This indication is given under a scenario where the UE wants to reject a request, 
williamr@2
 12215
		It is done by saying the operation is not recognized
williamr@2
 12216
		*/
williamr@2
 12217
		EUnrecognizedOperation,
williamr@2
 12218
		/**
williamr@2
 12219
		This invokes a problem indicating Resource Limitation.
williamr@2
 12220
		*/
williamr@2
 12221
		EResourceLimitation,
williamr@2
 12222
		/**
williamr@2
 12223
		This Invokes a problem initiating release.
williamr@2
 12224
		*/
williamr@2
 12225
		EInitiatingRelease,
williamr@2
 12226
		/**
williamr@2
 12227
		This invokes a problem indicating that  the ID linked with the Client information 
williamr@2
 12228
		is unrecognized
williamr@2
 12229
		*/
williamr@2
 12230
		EUnrecognizedLinkedID,
williamr@2
 12231
		/**
williamr@2
 12232
		This invokes a problem of Linked Response Unexpected
williamr@2
 12233
		*/
williamr@2
 12234
		ELinkedResponseUnexpected,
williamr@2
 12235
		/**
williamr@2
 12236
		This invokes a problem of Unexpected Linked Operation
williamr@2
 12237
		*/
williamr@2
 12238
		EUnexpectedLinkedOperation,
williamr@2
 12239
		/**
williamr@2
 12240
		This invokes a problem of Mistyped Parameter.
williamr@2
 12241
		*/
williamr@2
 12242
		EMistypedParameter	
williamr@2
 12243
		};
williamr@2
 12244
	
williamr@2
 12245
   /**************************************************************/
williamr@2
 12246
   //                  MOLR                                      //
williamr@2
 12247
   /**************************************************************/
williamr@2
 12248
 
williamr@2
 12249
 	/**
williamr@2
 12250
 	TMolrType is used by the SendMolr() API.
williamr@2
 12251
 	This gives an indication of type of Molr request the UE wants to invoke
williamr@2
 12252
 	@internalAll
williamr@2
 12253
 	*/
williamr@2
 12254
 	enum TMolrType
williamr@2
 12255
		{
williamr@2
 12256
		/**
williamr@2
 12257
		MolrType UnKnown
williamr@2
 12258
		*/
williamr@2
 12259
		EMolrTypeUnknown,
williamr@2
 12260
		/**
williamr@2
 12261
		UE is requesting the Network for its Location Estimate  
williamr@2
 12262
		*/
williamr@2
 12263
		ELocationEstimate,
williamr@2
 12264
		/**
williamr@2
 12265
		UE is requesting the Network for  GPS Assistance data
williamr@2
 12266
		*/
williamr@2
 12267
		EAssistanceData,
williamr@2
 12268
		/**
williamr@2
 12269
		UE is requesting the Network for  DecipheringKeys
williamr@2
 12270
		*/
williamr@2
 12271
		EDecipheringKeys
williamr@2
 12272
		};
williamr@2
 12273
williamr@2
 12274
 	/**
williamr@2
 12275
 	TResponseTime is used by SendMolr() API
williamr@2
 12276
 	This enum holds the various types of delay that an UE is expecting.
williamr@2
 12277
 	@internalAll
williamr@2
 12278
 	*/
williamr@2
 12279
 	enum TResponseTime
williamr@2
 12280
  		{
williamr@2
 12281
  		/**
williamr@2
 12282
  		Response Time Unknown.
williamr@2
 12283
		*/
williamr@2
 12284
  		EResponseTimeunknown,
williamr@2
 12285
  		/**
williamr@2
 12286
  		This enum value indicates that the UE expects a Less Time Delay
williamr@2
 12287
  		from Network in responding to its request
williamr@2
 12288
  		*/
williamr@2
 12289
  		ELowDelay,
williamr@2
 12290
  		/**
williamr@2
 12291
  		This enum value indicates that the UE expects a Long Time Delay
williamr@2
 12292
  		from Network in responding to its request and is tolerant to it.
williamr@2
 12293
  		*/
williamr@2
 12294
  		EDelayTolerant		
williamr@2
 12295
  		};
williamr@2
 12296
 	
williamr@2
 12297
 	/**
williamr@2
 12298
 	TLocationMethod is used by SendMolr() API
williamr@2
 12299
 	This is an enum which lists out all different types of Location methods that an UE can request
williamr@2
 12300
 	@internalAll
williamr@2
 12301
 	*/
williamr@2
 12302
 	enum TLocationMethod
williamr@2
 12303
  		{
williamr@2
 12304
  		/**
williamr@2
 12305
  		Location Method Unknown
williamr@2
 12306
		*/
williamr@2
 12307
  		ELocationMethodunknown,
williamr@2
 12308
  		/**
williamr@2
 12309
  		This indication is given under a scenario where the UE wants a MS (Mobile Station) Based Location Fix.
williamr@2
 12310
  		This can be termed as UE Assisted Location Fix(EOTD-Enhanced observed time difference).
williamr@2
 12311
  		*/
williamr@2
 12312
  		EMSBasedEOTD,
williamr@2
 12313
  		/**
williamr@2
 12314
  		This indication is given under a scenario where the UE wants a MS (Mobile Station) Assisted Location Fix.
williamr@2
 12315
  		This can be termed out as UE based location fix.
williamr@2
 12316
  		*/
williamr@2
 12317
  		EMSAssistedEOTD,
williamr@2
 12318
  		/**
williamr@2
 12319
  		This indication is given under a scenario where the UE wants a MS (Mobile Station) Assisted GPS data.
williamr@2
 12320
  		*/
williamr@2
 12321
  		EMSAssistedGPS,
williamr@2
 12322
  		/**
williamr@2
 12323
  		This indication is given under a scenario where the UE wants a MS (Mobile Station) based location fix 
williamr@2
 12324
  		(OTDOA-Observed time difference of arrival).
williamr@2
 12325
  		*/
williamr@2
 12326
  		EMSBasedOTDOA
williamr@2
 12327
  		}; 
williamr@2
 12328
   
williamr@2
 12329
    /**
williamr@2
 12330
    TQosV1 is used by SendMolr() API
williamr@2
 12331
    This is a class with details of accuracy of Position information, Response Time, 
williamr@2
 12332
    expected to be received from the network.
williamr@2
 12333
    @see TResponseTime
williamr@2
 12334
    @internalAll
williamr@2
 12335
    */
williamr@2
 12336
 	class TQosV1
williamr@2
 12337
   		{
williamr@2
 12338
   	public:
williamr@2
 12339
    	/**
williamr@2
 12340
    	This gives an information of the amount of Horizontal accuracy that the UE is expecting.
williamr@2
 12341
    	*/
williamr@2
 12342
    	TUint8 iHorizontalAccuracy;
williamr@2
 12343
    	/**
williamr@2
 12344
    	This gives an information of the amount of Vertical accuracy that the UE is expecting. 
williamr@2
 12345
    	*/
williamr@2
 12346
    	TUint8 iVerticalAccuracy;
williamr@2
 12347
    	/**
williamr@2
 12348
    	This enum indicates the Response Time expected by the UE to receive a response for its MOlr request.
williamr@2
 12349
    	*/
williamr@2
 12350
    	TResponseTime iResponseTime;
williamr@2
 12351
    	};
williamr@2
 12352
    
williamr@2
 12353
    /**
williamr@2
 12354
    TMolrErrors is used by SendMolr() API
williamr@2
 12355
    This is an enum which lists out all the possible errors that can be 
williamr@2
 12356
    reported to UE by an External Client or the Network.
williamr@2
 12357
    @internalAll
williamr@2
 12358
    */
williamr@2
 12359
   	enum TMolrErrors
williamr@2
 12360
    	{
williamr@2
 12361
    	/**
williamr@2
 12362
    	Molr Error Unknown
williamr@2
 12363
		*/
williamr@2
 12364
    	EMolrErrorUnknown,
williamr@2
 12365
    	/**
williamr@2
 12366
    	This indication is given to the UE when the Location Report is unable to reach the 
williamr@2
 12367
    	External Client due to some failure in the Network Connections.
williamr@2
 12368
    	*/
williamr@2
 12369
        EMolrSystemFailure, 
williamr@2
 12370
        /**
williamr@2
 12371
        This indication is given back to the UE by the Network to the UE or by the 
williamr@2
 12372
        External Client to the UE,where the UE generated MOLR has some unexpected values. 
williamr@2
 12373
        */
williamr@2
 12374
        EMolrUnexpectedDataValue,  
williamr@2
 12375
        /**
williamr@2
 12376
        This indication is given back to the UE by the Network to the UE or by the 
williamr@2
 12377
        External Client to the UE,where the UE generated MOLR had a data discrepancy
williamr@2
 12378
        */
williamr@2
 12379
        EMolrDataMissing, 
williamr@2
 12380
        /**
williamr@2
 12381
        This indication is given by the Network to the UE, 
williamr@2
 12382
        when the UE is not given a facility to make a MOLR request
williamr@2
 12383
        */
williamr@2
 12384
        EMolrFacilityNotSupported, 
williamr@2
 12385
        /**
williamr@2
 12386
        This indication is given by the Network to the UE, 
williamr@2
 12387
        when the subscription profile of the UE doesn't match with the requests made by it.
williamr@2
 12388
        */
williamr@2
 12389
        EMolrSS_SubscriptionViolation, 
williamr@2
 12390
        /**
williamr@2
 12391
        This indication is given by the Network to the UE, 
williamr@2
 12392
        when the UE or the Network failed to generate the Location estimate
williamr@2
 12393
        */ 
williamr@2
 12394
        EMolrPositionMethodFailure 
williamr@2
 12395
        };
williamr@2
 12396
williamr@2
 12397
	/**
williamr@2
 12398
	TStartMolrV7 is used by SendMolr() API
williamr@2
 12399
	This class lists the details send by UE to Network when a Molr request is being made.
williamr@2
 12400
	@see TMolrType
williamr@2
 12401
	@see TQosV1
williamr@2
 12402
	@see TLocationEstimateType
williamr@2
 12403
	@see TLcsClientExternalID
williamr@2
 12404
	@see TGpsAssistanceData
williamr@2
 12405
	@see TLocationMethod
williamr@2
 12406
	@internalAll
williamr@2
 12407
	*/
williamr@2
 12408
	class TStartMolrV7: public RMobilePhone::TMultimodeType
williamr@2
 12409
		{
williamr@2
 12410
	public:
williamr@2
 12411
		IMPORT_C TStartMolrV7();
williamr@2
 12412
	public:
williamr@2
 12413
		/**
williamr@2
 12414
		TMolrType holds the type of Molr request being made
williamr@2
 12415
		*/
williamr@2
 12416
		TMolrType             iMolrType;
williamr@2
 12417
		/**
williamr@2
 12418
		TQosV1 lists out the Quality of Service expected by UE
williamr@2
 12419
		*/
williamr@2
 12420
		TQosV1                iQos;
williamr@2
 12421
		/**
williamr@2
 12422
		Type of Location Estimate requested
williamr@2
 12423
		*/
williamr@2
 12424
		TLocationEstimateType iMolrLocationEstimateType;
williamr@2
 12425
		/**
williamr@2
 12426
		Id of the External client
williamr@2
 12427
		*/
williamr@2
 12428
		TLcsClientExternalID  iLcsClientExternalID;
williamr@2
 12429
		/**
williamr@2
 12430
		Type of GpsAssistanceData
williamr@2
 12431
		*/
williamr@2
 12432
		TGpsAssistanceData    iGpsAssistanceData;
williamr@2
 12433
		/**
williamr@2
 12434
		Type of Location method requested
williamr@2
 12435
		*/
williamr@2
 12436
		TLocationMethod       iLocationMethod ;
williamr@2
 12437
		/**
williamr@2
 12438
		Type of Service requested
williamr@2
 12439
		*/
williamr@2
 12440
		TUint8                 iLcsServiceTypeID;
williamr@2
 12441
		};
williamr@2
 12442
	/**
williamr@2
 12443
	A typedef'd packaged TStartMolrV7 for passing through a
williamr@2
 12444
	generic API method.
williamr@2
 12445
williamr@2
 12446
	@internalAll
williamr@2
 12447
	*/
williamr@2
 12448
	typedef TPckg<TStartMolrV7> TStartMolrV7Pckg;
williamr@2
 12449
	
williamr@2
 12450
	/**
williamr@2
 12451
	TMolrReturnResultV7 is used by SendMolr() API
williamr@2
 12452
	This class lists all the Molr return results that can be expected for the Molr request
williamr@2
 12453
	being made.
williamr@2
 12454
	@see TLcsLocationEstimate 
williamr@2
 12455
	@see TLcsVelocityEstimate
williamr@2
 12456
	@see TMolrErrors
williamr@2
 12457
	@internalAll
williamr@2
 12458
	*/
williamr@2
 12459
    class TMolrReturnResultV7: public RMobilePhone::TMultimodeType
williamr@2
 12460
    	{
williamr@2
 12461
    public:
williamr@2
 12462
		IMPORT_C TMolrReturnResultV7();
williamr@2
 12463
    public:
williamr@2
 12464
    	/**
williamr@2
 12465
    	This gives the Location Estimate of the UE
williamr@2
 12466
    	*/
williamr@2
 12467
    	TLcsLocationEstimate    iLocationEstimate;
williamr@2
 12468
    	/**
williamr@2
 12469
    	This gives the Velocity Estimate of the UE
williamr@2
 12470
    	*/
williamr@2
 12471
    	TLcsVelocityEstimate	iVelocityEstimate;
williamr@2
 12472
    	/**
williamr@2
 12473
    	This gives the indication of the type of error occured
williamr@2
 12474
    	*/
williamr@2
 12475
    	TMolrErrors             iMolrErrors;
williamr@2
 12476
    	};
williamr@2
 12477
williamr@2
 12478
	/**
williamr@2
 12479
	A typedef'd packaged TMolrReturnResultV7 for passing through a
williamr@2
 12480
	generic API method.
williamr@2
 12481
williamr@2
 12482
	@internalAll
williamr@2
 12483
	*/
williamr@2
 12484
	typedef TPckg<TMolrReturnResultV7> TMolrReturnResultV7Pckg;
williamr@2
 12485
	
williamr@2
 12486
	//**************************************//
williamr@2
 12487
	// Measurement Control Data structures	//
williamr@2
 12488
	//**************************************//
williamr@2
 12489
williamr@2
 12490
	enum 
williamr@2
 12491
		{
williamr@2
 12492
		/**Maximum number of monitored cells RACH*/
williamr@2
 12493
		KMaxMonitoredCells = 8,
williamr@2
 12494
		/**Maximum number of satellites*/
williamr@2
 12495
		KMaxSat = 16,
williamr@2
 12496
		/**GlobalHealth size. 364 bits =46 bytes (Rounded) */
williamr@2
 12497
		KGlobalHealthSize	= 46
williamr@2
 12498
		};
williamr@2
 12499
williamr@2
 12500
	/**This enum contains the possible types of measurement commands.*/
williamr@2
 12501
	enum TMeasurementCmd
williamr@2
 12502
		{
williamr@2
 12503
		/**Measurement Command Unknown*/
williamr@2
 12504
		EMeasCommandUnknown,
williamr@2
 12505
		/**Setup a new measurement*/
williamr@2
 12506
		ESetup,
williamr@2
 12507
		/**Modify a previously defined measurement, e.g. to change the reporting criteria*/
williamr@2
 12508
		EModify,
williamr@2
 12509
		/**Indicates to stop a measurement and clear all information in the UE that are related to that measurement */
williamr@2
 12510
		ERelease,
williamr@2
 12511
		};
williamr@2
 12512
williamr@2
 12513
	/**This enum contains the possible positioning method types*/
williamr@2
 12514
	enum TUePosMethodType
williamr@2
 12515
		{
williamr@2
 12516
		/**Positioning Method Type unknown*/
williamr@2
 12517
		EPosMethodTypeUnknown,
williamr@2
 12518
		/**UE Assisted : The network computes the location of the UE.*/
williamr@2
 12519
		EUeAssisted,
williamr@2
 12520
		/**UE Based : The UE computes the location of itself*/
williamr@2
 12521
		EUeBased,
williamr@2
 12522
		};
williamr@2
 12523
williamr@2
 12524
	/**This enum contains the possible positioning methods*/
williamr@2
 12525
	enum TPosMethod
williamr@2
 12526
		{
williamr@2
 12527
		/**Positioning Method unknown*/
williamr@2
 12528
		EPosMethodUnknown,
williamr@2
 12529
		/**OTDOA may be selected by the SRNC as the method to be used on receipt of an LCS positioning request from the CN */
williamr@2
 12530
		EOtdoa,
williamr@2
 12531
		/**These methods make use of UEs, which are equipped with radio receivers capable of receiving GPS signals*/
williamr@2
 12532
		EGps,
williamr@2
 12533
		/**Use either OTDOA or GPS positioning method.*/
williamr@2
 12534
		EOtdoaOrGps,
williamr@2
 12535
		/**
williamr@2
 12536
		In the cell ID based (i.e. cell coverage) method, the position of an UE is 
williamr@2
 12537
		estimated with the knowledge of its serving Node B. The information about the serving 
williamr@2
 12538
		Node B and cell may be obtained by paging,locating area update, cell update, URA update, or routing area update.
williamr@2
 12539
		*/
williamr@2
 12540
		ECellID
williamr@2
 12541
		};
williamr@2
 12542
williamr@2
 12543
	/**
williamr@2
 12544
	This class contains the information which is part of the Navigation Model.
williamr@2
 12545
	This can be requested by the UE as part of additional request.
williamr@2
 12546
	*/
williamr@2
 12547
	class TSatDataV1
williamr@2
 12548
		{
williamr@2
 12549
	public:
williamr@2
 12550
		/**Satellite identity*/
williamr@2
 12551
		TUint8		iSatID;
williamr@2
 12552
		/**Issue of Data Ephemeris for SatID*/
williamr@2
 12553
		TUint8		iIode;
williamr@2
 12554
		};
williamr@2
 12555
	
williamr@2
 12556
	/**
williamr@2
 12557
	This class contains the additional information that can be requested by the UE.
williamr@2
 12558
	*/
williamr@2
 12559
	class TNavModelAddlDataReqV1	
williamr@2
 12560
		{
williamr@2
 12561
	public:
williamr@2
 12562
		/**GPS time in weeks*/
williamr@2
 12563
		TUint16		iGpsWeek;
williamr@2
 12564
		/**GPS time of ephemeris in hours of the latest ephemeris set contained by the UE.*/
williamr@2
 12565
		TUint8		iGpsToe;
williamr@2
 12566
		/**Ephemeris age tolerance of the UE to UTRAN in hours.*/
williamr@2
 12567
		TUint8		iTToeLimit;
williamr@2
 12568
		/**Satellite Identities
williamr@2
 12569
		@see TSatDataV1*/
williamr@2
 12570
		TSatDataV1	iSatData[KMaxSat];
williamr@2
 12571
		};
williamr@2
 12572
williamr@2
 12573
	/**This class contains the indicators to request for additional assistance data from the network.*/
williamr@2
 12574
	class TGpsAddlAssistDataReqV1
williamr@2
 12575
		{
williamr@2
 12576
	public:
williamr@2
 12577
		/**ETrue indicates Almanac Data is requested
williamr@2
 12578
		@see	TAlmanacV1*/
williamr@2
 12579
		TBool	iAlmanacRequest;
williamr@2
 12580
		/**ETrue indicates UTC model Data is requested
williamr@2
 12581
		@see	TUtcModelV1*/
williamr@2
 12582
		TBool	iUtcModelRequest;
williamr@2
 12583
		/**ETrue indicates Ionospheric Model Data is requested
williamr@2
 12584
		@see	TUtcModelV1*/
williamr@2
 12585
		TBool	iIonosphericModelRequest;
williamr@2
 12586
		/**ETrue indicates Navigation model Data is requested
williamr@2
 12587
		@see	TIonosphericModelV1*/
williamr@2
 12588
		TBool	iNavigationModelRequest;
williamr@2
 12589
		/**ETrue indicates DGPS corrections Data is requested
williamr@2
 12590
		@see	TNavigationModelSatInfoV1*/
williamr@2
 12591
		TBool	iDgpsCorrectionsRequest;
williamr@2
 12592
		/**ETrue indicates Reference location Data is requested
williamr@2
 12593
		@see	TDgpsCorrectionsV1*/
williamr@2
 12594
		TBool	iReferenceLocationRequest;
williamr@2
 12595
		/**ETrue indicates Reference time Data is requested
williamr@2
 12596
		@see	TReferenceLocationV1*/
williamr@2
 12597
		TBool	iReferenceTimeRequest;
williamr@2
 12598
		/**ETrue indicates Acquisition assistance Data is requested
williamr@2
 12599
		@see	TReferenceTimeV1*/
williamr@2
 12600
		TBool	iAcquisitionAssistanceReq;
williamr@2
 12601
		/**ETrue indicates Realtime integrity Data is requested
williamr@2
 12602
		@see	TAcquisitionAssistanceV1*/
williamr@2
 12603
		TBool	iRealTimeIntegrityRequest;
williamr@2
 12604
		/**This member is included only if Navigagion Model Data is requested (iNavigationModelRequest is ETrue).
williamr@2
 12605
		@see	TNavModelAddlDataReqV1*/
williamr@2
 12606
		TNavModelAddlDataReqV1	iNavModelAddlDataReq;
williamr@2
 12607
		};
williamr@2
 12608
williamr@2
 12609
	/**This class contains the UE positioning reporting quantity*/
williamr@2
 12610
	class TUePosReportingQuantityV1
williamr@2
 12611
		{
williamr@2
 12612
	public:
williamr@2
 12613
		/**Holds the positioning method type*/
williamr@2
 12614
		TUePosMethodType	 iUePosMethodType;
williamr@2
 12615
		/**Holds the positioning method*/
williamr@2
 12616
		TPosMethod 	iPosMethod;
williamr@2
 12617
		/**Holds the horizontal accuracy*/
williamr@2
 12618
		TInt8	iHorzAccuracy;
williamr@2
 12619
		/**Holds the vertical accuracy*/
williamr@2
 12620
		TInt8	iVertAccuracy;
williamr@2
 12621
		/**If true the SRNC wants the UE to report the SFN-GPS timing of the reference cell.*/ 
williamr@2
 12622
		TBool 	iGpsTimingOfCellWanted;
williamr@2
 12623
		/**ETrue indicates that the UE is requested to send the IE "Additional assistance Data Request" 
williamr@2
 12624
		when the IE "UE positioning Error" is present in the UE positioning measured results.
williamr@2
 12625
		EFalse indicates that the UE shall use the assistance data available.
williamr@2
 12626
		*/
williamr@2
 12627
		TBool	iAddlAssistanceDataReq;
williamr@2
 12628
		};
williamr@2
 12629
williamr@2
 12630
	/**This enum contains the states in which measurements are valid*/
williamr@2
 12631
	enum TMeasurementValidity
williamr@2
 12632
		{
williamr@2
 12633
		/**Measurement Validity Unknown*/
williamr@2
 12634
		EMeasValidityUnknown,
williamr@2
 12635
		/**Indicates measurement is valid in CellDCH state*/
williamr@2
 12636
		ECellDCH,
williamr@2
 12637
		/**Indicates measurement is valid except in CellDCH state*/
williamr@2
 12638
		EAllButCellDCH,
williamr@2
 12639
		/**Indicates measurement is valid in all state*/
williamr@2
 12640
		EAllStates
williamr@2
 12641
		};
williamr@2
 12642
williamr@2
 12643
	/**This enum list the SfnTow uncertainity*/
williamr@2
 12644
	enum TSfnTowUncertainity
williamr@2
 12645
		{
williamr@2
 12646
		/**Sfn Tow Uncertainity unknown*/
williamr@2
 12647
		ESfnTowUncertainityUnknown,
williamr@2
 12648
		/**SfnTowUncertainity < 10*/
williamr@2
 12649
		ELessThan10,
williamr@2
 12650
		/**SfnTowUncertainity > 10*/
williamr@2
 12651
		EMoreThan10
williamr@2
 12652
		};
williamr@2
 12653
	
williamr@2
 12654
	/**This enum lists the different GPS drift rates*/
williamr@2
 12655
	enum TUtranGpsDriftRate
williamr@2
 12656
		{
williamr@2
 12657
		/**GPS Drift rate unknown*/
williamr@2
 12658
		EDriftRateUnknown,
williamr@2
 12659
		/**Drift = 0*/
williamr@2
 12660
		EUtranGpsDrift0,
williamr@2
 12661
		/**Drift = 1*/
williamr@2
 12662
		EUtranGpsDrift1,
williamr@2
 12663
		/**Drift = 2*/
williamr@2
 12664
		EUtranGpsDrift2,
williamr@2
 12665
		/**Drift = 5*/
williamr@2
 12666
		EUtranGpsDrift5,
williamr@2
 12667
		/**Drift = 10*/
williamr@2
 12668
		EUtranGpsDrift10,
williamr@2
 12669
		/**Drift = 15*/
williamr@2
 12670
		EUtranGpsDrift15,
williamr@2
 12671
		/**Drift = 25*/
williamr@2
 12672
		EUtranGpsDrift25,
williamr@2
 12673
		/**Drift = 50*/
williamr@2
 12674
		EUtranGpsDrift50,
williamr@2
 12675
		/**Drift = -1*/
williamr@2
 12676
		EUtranGpsDriftMinus1,
williamr@2
 12677
		/**Drift = -2*/
williamr@2
 12678
		EUtranGpsDriftMinus2,
williamr@2
 12679
		/**Drift = -5*/
williamr@2
 12680
		EUtranGpsDriftMinus5,
williamr@2
 12681
		/**Drift = -10*/
williamr@2
 12682
		EUtranGpsDriftMinus10,
williamr@2
 12683
		/**Drift = -15*/
williamr@2
 12684
		EUtranGpsDriftMinus15,
williamr@2
 12685
		/**Drift = -25*/
williamr@2
 12686
		EUtranGpsDriftMinus25,
williamr@2
 12687
		/**Drift = -50*/
williamr@2
 12688
		EUtranGpsDriftMinus50,
williamr@2
 12689
		};
williamr@2
 12690
williamr@2
 12691
	/**This enum lists the different Udre values*/
williamr@2
 12692
	enum TDiffCorrectionsStatus
williamr@2
 12693
		{
williamr@2
 12694
		/**Diff Corrections Status unknown*/
williamr@2
 12695
		ECorrectionStatusUnknown,
williamr@2
 12696
		/**UDRE 1.0 */
williamr@2
 12697
		EUdre1Point0,
williamr@2
 12698
		/**UDRE 0.75 */
williamr@2
 12699
		EUdre0Point75,
williamr@2
 12700
		/**UDRE 0.5 */
williamr@2
 12701
		EUdre0Point5,
williamr@2
 12702
		/**UDRE 0.3 */
williamr@2
 12703
		EUdre0Point3,
williamr@2
 12704
		/**UDRE 0.2 */
williamr@2
 12705
		EUdre0Point2,
williamr@2
 12706
		/**UDRE 0.1 */
williamr@2
 12707
		EUdre0Point1,
williamr@2
 12708
		/**UDRE No Data */
williamr@2
 12709
		ENoData,
williamr@2
 12710
		/**UDRE Invalid Data */
williamr@2
 12711
		EInvalidData
williamr@2
 12712
		};
williamr@2
 12713
	
williamr@2
 12714
	/**This class reserves members for future use*/
williamr@2
 12715
	class TSubFrame1ReservedV1
williamr@2
 12716
		{
williamr@2
 12717
	public:
williamr@2
 12718
		/**Reserve member 1*/
williamr@2
 12719
		TUint	iReserved1;
williamr@2
 12720
		/**Reserve member 2*/
williamr@2
 12721
		TUint	iReserved2;
williamr@2
 12722
		/**Reserve member 3*/
williamr@2
 12723
		TUint	iReserved3;
williamr@2
 12724
		/**Reserve member 4*/
williamr@2
 12725
		TUint	iReserved4;
williamr@2
 12726
		};
williamr@2
 12727
williamr@2
 12728
	/**This class contains information for GPS ephemeris and clock correction.*/
williamr@2
 12729
	class TEphemerisParameterV1
williamr@2
 12730
		{
williamr@2
 12731
	public:
williamr@2
 12732
		/**Code(s) on L2 Channel */
williamr@2
 12733
		TUint8	iCodeOnL2;
williamr@2
 12734
		/**User Range Accuracy */
williamr@2
 12735
		TUint8	iUraIndex;
williamr@2
 12736
		/**Health of Satellite*/
williamr@2
 12737
		TUint8	iSatHealth;
williamr@2
 12738
		/**Issue of Data, Clock */
williamr@2
 12739
		TUint16	iIodc;
williamr@2
 12740
		/**L2 channel flag*/
williamr@2
 12741
		TUint8	iL2Flag;
williamr@2
 12742
		TSubFrame1ReservedV1	iSubFrame1Reserved;
williamr@2
 12743
		/**Estimated group delay differential */
williamr@2
 12744
		TUint8	iTGd;
williamr@2
 12745
		/**Apparent clock correction*/
williamr@2
 12746
		TUint16	iTOc;
williamr@2
 12747
		/**Apparent clock correction*/
williamr@2
 12748
		TUint8	iAf2;
williamr@2
 12749
		/**Apparent clock correction*/
williamr@2
 12750
		TUint16	iAf1;
williamr@2
 12751
		/**Apparent clock correction*/
williamr@2
 12752
		TUint	iAf0;
williamr@2
 12753
		/**Amplitude of the Sine Harmonic Correction Term to the Orbit Radius (meters)*/
williamr@2
 12754
		TUint16	iCRs;
williamr@2
 12755
		/**Mean Motion Difference From Computed Value (semi-circles/sec)*/
williamr@2
 12756
		TUint16	iDeltaN;
williamr@2
 12757
		/**Mean Anomaly at Reference Time (semi-circles)*/
williamr@2
 12758
		TUint	iM0;
williamr@2
 12759
		/**Amplitude of the Cosine Harmonic Correction Term To The Argument Of Latitude (radians)*/
williamr@2
 12760
		TUint16	iCUc;
williamr@2
 12761
		/**Eccentricity*/
williamr@2
 12762
		TUint	iE;
williamr@2
 12763
		/**Amplitude of the Sine Harmonic Correction Term To The Argument Of Latitude (radians)*/
williamr@2
 12764
		TUint16	iCUs;
williamr@2
 12765
		/**Semi-Major Axis in squareroot(meters) */
williamr@2
 12766
		TUint	iASqrt;
williamr@2
 12767
		/**Reference Time Ephemeris */
williamr@2
 12768
		TUint16	iTOe;
williamr@2
 12769
		/**
williamr@2
 12770
		Fit interval flag
williamr@2
 12771
		@see ICD-GPS-200
williamr@2
 12772
		*/
williamr@2
 12773
		TUint8	iFitInterval;
williamr@2
 12774
		/**Age Of Data Offset */
williamr@2
 12775
		TUint8	iAodo;
williamr@2
 12776
		/**Amplitude of the Cosine Harmonic Correction Term To The Angle Of Inclination (radians)*/
williamr@2
 12777
		TUint16	iCIc;
williamr@2
 12778
		/**Longitude of Ascending Node of Orbit Plane at Weekly Epoch (semi-circles) */
williamr@2
 12779
		TUint	iOmega0;
williamr@2
 12780
		/**Amplitude of the Sine Harmonic Correction Term To The Angle Of Inclination (radians) */
williamr@2
 12781
		TUint16	iCIs;
williamr@2
 12782
		/**Inclination Angle at Reference Time (semi-circles) */
williamr@2
 12783
		TUint	i0;
williamr@2
 12784
		/**Amplitude of the Cosine Harmonic Correction Term to the Orbit Radius (meters) */
williamr@2
 12785
		TUint16	iCRc;
williamr@2
 12786
		/**Argument of Perigee (semi-circles) */
williamr@2
 12787
		TUint	iOmega;
williamr@2
 12788
		/**Longitude of Ascending Node of Orbit Plane at Weekly Epoch (semi-circles/sec) */
williamr@2
 12789
		TUint	iOmegaDot;
williamr@2
 12790
		/**Rate of Inclination Angle (semi-circles/sec) */
williamr@2
 12791
		TUint16	iDot;
williamr@2
 12792
		};
williamr@2
 12793
williamr@2
 12794
	/**This enum specifies the possible status of a satellite*/
williamr@2
 12795
	enum TSatelliteStatus
williamr@2
 12796
		{
williamr@2
 12797
		/**Satellite Status unknown*/
williamr@2
 12798
		ESatStatusUnknown,
williamr@2
 12799
		/**New satellite, new Navigation Model*/
williamr@2
 12800
		ENsNnU,
williamr@2
 12801
		/**Existing satellite, same Navigation Model*/
williamr@2
 12802
		EEsSn,
williamr@2
 12803
		/**Existing satellite, new Navigation Model*/
williamr@2
 12804
		EEsNnU,
williamr@2
 12805
		/**Reserved*/
williamr@2
 12806
		ERev2,
williamr@2
 12807
		/**Reserved*/
williamr@2
 12808
		ERev
williamr@2
 12809
		};
williamr@2
 12810
williamr@2
 12811
	/**This class contains the navigation model satellite information*/
williamr@2
 12812
	class TNavigationModelSatInfoV1
williamr@2
 12813
		{
williamr@2
 12814
	public:
williamr@2
 12815
		/**Satellite identification*/
williamr@2
 12816
		TUint8				iSatID;
williamr@2
 12817
		/**Status of the satellite*/
williamr@2
 12818
		TSatelliteStatus	iSatelliteStatus;
williamr@2
 12819
		/**Contains information for GPS ephemeris and clock correction.*/
williamr@2
 12820
		TEphemerisParameterV1	iEphemerisParameter;
williamr@2
 12821
		};
williamr@2
 12822
williamr@2
 12823
	/**
williamr@2
 12824
	This class contains the ionospheric model information needed to model
williamr@2
 12825
	the propagation delays of the GPS signals through the ionosphere
williamr@2
 12826
	*/
williamr@2
 12827
	class TIonosphericModelV1
williamr@2
 12828
		{
williamr@2
 12829
	public:
williamr@2
 12830
		/**
williamr@2
 12831
		The parameters *n are the coefficients of a cubic equation 
williamr@2
 12832
		representing the amplitude of the vertical delay.
williamr@2
 12833
		@see ICD-GPS-200
williamr@2
 12834
		*/
williamr@2
 12835
		/**Alfa = 0*/
williamr@2
 12836
		TUint8	iAlfa0;
williamr@2
 12837
		/**Alfa = 1*/
williamr@2
 12838
		TUint8	iAlfa1;
williamr@2
 12839
		/**Alfa = 2*/
williamr@2
 12840
		TUint8	iAlfa2;
williamr@2
 12841
		/**Alfa = 3*/
williamr@2
 12842
		TUint8	iAlfa3;
williamr@2
 12843
		/**
williamr@2
 12844
		The parameters *n are the coefficients of a cubic equation 
williamr@2
 12845
		representing the period of the ionospheric model 
williamr@2
 12846
		@see ICD-GPS-200
williamr@2
 12847
		*/
williamr@2
 12848
		/**Beta = 0*/
williamr@2
 12849
		TUint8	iBeta0;
williamr@2
 12850
		/**Beta = 1*/
williamr@2
 12851
		TUint8	iBeta1;
williamr@2
 12852
		/**Beta = 2*/
williamr@2
 12853
		TUint8	iBeta2;
williamr@2
 12854
		/**Beta = 3*/
williamr@2
 12855
		TUint8	iBeta3;
williamr@2
 12856
		};
williamr@2
 12857
		
williamr@2
 12858
	/**
williamr@2
 12859
	This class contains the UTC model information needed to relate GPS time to Universal Time Coordinate (UTC)
williamr@2
 12860
	@see ICD-GPS-200
williamr@2
 12861
	*/
williamr@2
 12862
	class TUtcModelV1
williamr@2
 12863
		{
williamr@2
 12864
	public:
williamr@2
 12865
		/**
williamr@2
 12866
		Time in seconds. 
williamr@2
 12867
		@see ICD-GPS-200.
williamr@2
 12868
		*/
williamr@2
 12869
		TUint	iA1;
williamr@2
 12870
		/**
williamr@2
 12871
		Time in seconds. 
williamr@2
 12872
		@see ICD-GPS-200.
williamr@2
 12873
		*/
williamr@2
 12874
		TUint	iA2;
williamr@2
 12875
		/**Time in seconds
williamr@2
 12876
		@see ICD-GPS-200
williamr@2
 12877
		*/
williamr@2
 12878
		TUint8	iTOt;
williamr@2
 12879
		/**weeks
williamr@2
 12880
		@see ICD-GPS-200
williamr@2
 12881
		*/
williamr@2
 12882
		TUint8	iWnT;
williamr@2
 12883
		/**Time in seconds
williamr@2
 12884
		@see ICD-GPS-200
williamr@2
 12885
		*/
williamr@2
 12886
		TUint8	iDeltaTLs;
williamr@2
 12887
		/**Weeks
williamr@2
 12888
		@see ICD-GPS-200
williamr@2
 12889
		*/
williamr@2
 12890
		TUint8	iWnLsf;
williamr@2
 12891
		/**Days
williamr@2
 12892
		@see ICD-GPS-200
williamr@2
 12893
		*/
williamr@2
 12894
		TUint8	iDn;
williamr@2
 12895
		/**Seconds
williamr@2
 12896
		@see ICD-GPS-200
williamr@2
 12897
		*/
williamr@2
 12898
		TUint8	iDeltaTLsf;
williamr@2
 12899
		};
williamr@2
 12900
williamr@2
 12901
	/**This class contains a reduced-precision subset of the ephemeris and clock correction parameters.*/
williamr@2
 12902
	class TAlmanacSatInfoV1
williamr@2
 12903
		{
williamr@2
 12904
	public:
williamr@2
 12905
		/**Data identification*/
williamr@2
 12906
		TUint8	iDataID;
williamr@2
 12907
		/**Eccentricity*/
williamr@2
 12908
		TUint16	iE;
williamr@2
 12909
		/**Reference Time of Almanac */
williamr@2
 12910
		TUint8 	iTOa;
williamr@2
 12911
		/**@see ICD-GPS-200*/
williamr@2
 12912
		TUint16	iDeltaI;
williamr@2
 12913
		/**Longitude of Ascending Node of Orbit Plane at Weekly Epoch (semi-circles/sec) */
williamr@2
 12914
		TUint16	iOmegaDot;
williamr@2
 12915
		/**Satellite health*/
williamr@2
 12916
		TUint8	iSatHealth;
williamr@2
 12917
		/**Semi-Major Axis in squareroot(meters)*/
williamr@2
 12918
		TUint	iASqrt;
williamr@2
 12919
		/**Longitude of Ascending Node of Orbit Plane at Weekly Epoch (semi-circles) */
williamr@2
 12920
		TUint	iOmega0;
williamr@2
 12921
		/**Mean Anomaly at Reference Time (semi-circles) */
williamr@2
 12922
		TUint	iM0;
williamr@2
 12923
		/**Argument of Perigee (semi-circles) */
williamr@2
 12924
		TUint	iOmega;
williamr@2
 12925
		/**Apparent clock correction */
williamr@2
 12926
		TUint16	iAf0;
williamr@2
 12927
		/**Apparent clock correction */
williamr@2
 12928
		TUint16	iAf1;
williamr@2
 12929
		};
williamr@2
 12930
williamr@2
 12931
	/**This class holds the coarse, long-term model of the satellite positions and clocks.*/
williamr@2
 12932
	class TAlmanacV1
williamr@2
 12933
		{
williamr@2
 12934
	public:
williamr@2
 12935
		/**Almanac Reference Week */
williamr@2
 12936
		TUint8	iWnA;
williamr@2
 12937
		TAlmanacSatInfoV1	iAlmanacSatInfoList[KMaxSat]; 
williamr@2
 12938
		/**This enables GPS time recovery and possibly extended GPS correlation intervals.*/
williamr@2
 12939
		TUint16	iSvGlobalHealth[KGlobalHealthSize]; 
williamr@2
 12940
		};
williamr@2
 12941
williamr@2
 12942
	/**This union contains the information specific to mode - FDD/TDD*/
williamr@2
 12943
	union TModeSpecificInfoV1
williamr@2
 12944
		{
williamr@2
 12945
		/**Used in FDD mode*/
williamr@2
 12946
		TUint16	iPrimaryScramblingCode;
williamr@2
 12947
		/**Used in TDD mode*/
williamr@2
 12948
		TUint16	iCellParametersID;
williamr@2
 12949
		};
williamr@2
 12950
williamr@2
 12951
	/**This class contains parameters that enable fast acquisition of the GPS 
williamr@2
 12952
	   signals in UE-assisted GPS positioning.*/
williamr@2
 12953
	class TAcquisitionAssistanceV1
williamr@2
 12954
		{
williamr@2
 12955
	public:
williamr@2
 12956
		/**Specifies GPS reference time*/
williamr@2
 12957
		TUint				iGpsReferenceTime;
williamr@2
 12958
		/**Specifies GPS reference time specific to mode - FDD/TDD*/
williamr@2
 12959
		TModeSpecificInfoV1	iUtranGpsReferenceTime;
williamr@2
 12960
		/**ETrue indicates iUtranGpsReferenceTime is iPrimaryScramblingCode. 
williamr@2
 12961
		EFalse indicates iUtranGpsReferenceTime is iCellParametersID*/
williamr@2
 12962
		TBool	iUtranGpsRefTimeStatus;
williamr@2
 12963
		};
williamr@2
 12964
williamr@2
 12965
	/**
williamr@2
 12966
	The UDRE provides an estimate of the uncertainty (1-*) in the corrections for 
williamr@2
 12967
	the particular satellite. The value in this field shall be multiplied by the 
williamr@2
 12968
	UDRE Scale Factor in the common Corrections Status/Health field to determine the 
williamr@2
 12969
	final UDRE estimate for the particular satellite. 
williamr@2
 12970
	@see 3GPP TS 25.305
williamr@2
 12971
	*/
williamr@2
 12972
	enum TUdre
williamr@2
 12973
		{
williamr@2
 12974
		/**Udre unknown*/
williamr@2
 12975
		EUdreUnknown,
williamr@2
 12976
		/** UDRE < 1*/
williamr@2
 12977
		ELessThan1,
williamr@2
 12978
		/** 1> UDRE < 4*/
williamr@2
 12979
		EBtw1And4,
williamr@2
 12980
		/** 1> UDRE < 8*/
williamr@2
 12981
		EBtw1And8,
williamr@2
 12982
		/** UDRE > 8*/
williamr@2
 12983
		EOver8
williamr@2
 12984
		};
williamr@2
 12985
williamr@2
 12986
	/**This class contains DGPS corrections to be used by the UE*/
williamr@2
 12987
	class TDgpsCorrectionSatInfoV1
williamr@2
 12988
		{
williamr@2
 12989
	public:
williamr@2
 12990
		/**Satellite identification*/
williamr@2
 12991
		TUint8	iSatID;
williamr@2
 12992
		/**Issue of Data Ephemeris for SatID.*/
williamr@2
 12993
		TUint8	iIode;
williamr@2
 12994
		/**
williamr@2
 12995
		The UDRE provides an estimate of the uncertainty (1-*) in the corrections for 
williamr@2
 12996
		the particular satellite. The value in this field shall be multiplied by the 
williamr@2
 12997
		UDRE Scale Factor in the common Corrections Status/Health field to determine the 
williamr@2
 12998
		final UDRE estimate for the particular satellite. 
williamr@2
 12999
		@see 3GPP TS 25.305
williamr@2
 13000
		*/
williamr@2
 13001
		TUdre	iUdre;
williamr@2
 13002
		/**The PRC indicates the correction to the pseudorange for the particular satellite at the GPS Reference Time*/
williamr@2
 13003
		TInt16	iPrc;
williamr@2
 13004
		/**
williamr@2
 13005
		This information indicates the rate-of-change of the pseudorange correction for the particular satellite,
williamr@2
 13006
		using the satellite ephemeris identified by the IODE IE
williamr@2
 13007
		*/
williamr@2
 13008
		TInt8	iRrc;
williamr@2
 13009
		/**For future use*/
williamr@2
 13010
		TInt8	iDummy1;
williamr@2
 13011
		/**For future use*/
williamr@2
 13012
		TInt8	iDummy2;
williamr@2
 13013
		};
williamr@2
 13014
williamr@2
 13015
	/**This class contains the DGPS corrections information*/
williamr@2
 13016
	class TDgpsCorrectionsV1
williamr@2
 13017
		{
williamr@2
 13018
	public:
williamr@2
 13019
		/**GPS time of week*/
williamr@2
 13020
		TUint16				iGpsTow;
williamr@2
 13021
		/**This information indicates the status of the differential corrections contained in the message.*/
williamr@2
 13022
		TDiffCorrectionsStatus	iStatusHealth;
williamr@2
 13023
		/**This member data contains DGPS corrections of the satellites to be used by the UE*/
williamr@2
 13024
		TDgpsCorrectionSatInfoV1	iDgpsCorrectionSatInfoList[KMaxSat];
williamr@2
 13025
		};
williamr@2
 13026
williamr@2
 13027
	/**This enum containst the possible signs of latitude*/
williamr@2
 13028
	enum TLatitudeSign
williamr@2
 13029
		{
williamr@2
 13030
		/**Latitude Sign Unknown*/
williamr@2
 13031
		ELatitudeSignUnknown,
williamr@2
 13032
		/**Latitude sign is north*/
williamr@2
 13033
		ENorth,
williamr@2
 13034
		/**Latitude sign is south*/
williamr@2
 13035
		ESouth
williamr@2
 13036
		};
williamr@2
 13037
	
williamr@2
 13038
	/**This enum contains the possible directions of altitudes for reference location*/
williamr@2
 13039
	enum TAltDirection
williamr@2
 13040
		{
williamr@2
 13041
		/**Altitude Direction Unknown*/
williamr@2
 13042
		EAltDirectionUnknown,
williamr@2
 13043
		/**Indicates Altitude direction is height-wise*/
williamr@2
 13044
		EHeight,
williamr@2
 13045
		/**Indicates Altitude direction is depth-wise*/
williamr@2
 13046
		EDepth
williamr@2
 13047
		};
williamr@2
 13048
williamr@2
 13049
	/**This class contains a 3-D location (with uncertainty)*/
williamr@2
 13050
	class TReferenceLocationV1
williamr@2
 13051
		{
williamr@2
 13052
	public:
williamr@2
 13053
		/**Specifies the sign - North/South*/
williamr@2
 13054
		TLatitudeSign	iLatitudeSign;
williamr@2
 13055
		/**Degree of latitude*/
williamr@2
 13056
		TUint16			iLatitude;
williamr@2
 13057
		/**Degree of longitude*/
williamr@2
 13058
		TInt16			iLongitude;
williamr@2
 13059
		/**Direction of altitude*/
williamr@2
 13060
		TAltDirection	iAltDirection;
williamr@2
 13061
		/**Degree of altitude*/
williamr@2
 13062
		TUint16			iAltitude;
williamr@2
 13063
		/**Uncertainty semi major axis*/
williamr@2
 13064
		TUint8			iUncertainitySemiMajor;
williamr@2
 13065
		/**Uncertainty semi minor axis*/
williamr@2
 13066
		TUint8			iUncertainitySemiMinor;
williamr@2
 13067
		/**Orientation of major axis*/
williamr@2
 13068
		TUint8			iOrientationMajorAxis;
williamr@2
 13069
		/**The uncertainty in altitude, h, expressed in metres*/
williamr@2
 13070
		TUint8			iUncertainityAltitude;
williamr@2
 13071
		/**The confidence by which the position of a target entity is known to be within the shape description*/
williamr@2
 13072
		TUint8			iConfidence;
williamr@2
 13073
		};
williamr@2
 13074
williamr@2
 13075
	/**
williamr@2
 13076
	Contains several fields in the Telemetry (TLM) Word and Handover Word (HOW) 
williamr@2
 13077
	that are currently being broadcast by the respective GPS satellites. Combining this information 
williamr@2
 13078
	with GPS TOW helps the UE with time-recovery needed to predict satellite signal.
williamr@2
 13079
	*/
williamr@2
 13080
	class TGpsTowAssistV1
williamr@2
 13081
		{
williamr@2
 13082
	public:
williamr@2
 13083
		/**Satellite identification*/
williamr@2
 13084
		TUint8				iSatID;
williamr@2
 13085
		/**
williamr@2
 13086
		Contains a 14-bit value representing the Telemetry Message (TLM) 
williamr@2
 13087
		being broadcast by the GPS satellite identified by the particular SatID, 
williamr@2
 13088
		with the MSB occurring first in the satellite transmission.
williamr@2
 13089
		*/
williamr@2
 13090
		TUint16				iTlmMsg;
williamr@2
 13091
		/**
williamr@2
 13092
		Contains the two reserved bits in the TLM Word 
williamr@2
 13093
		being broadcast by the GPS satellite identified by SatID, 
williamr@2
 13094
		with the MSB occurring first in the satellite transmission.
williamr@2
 13095
		*/
williamr@2
 13096
		TUint8				iTlmReserved;
williamr@2
 13097
		/**Contain the Alert flags that are being broadcast by the GPS satellite identified by SatID.*/
williamr@2
 13098
		TBool				iAlert;
williamr@2
 13099
		/**Contain the Anti-Spoof that are being broadcast by the GPS satellite identified by SatID.*/
williamr@2
 13100
		TBool				iAntiSpoof;
williamr@2
 13101
		};
williamr@2
 13102
williamr@2
 13103
	/**This class contains information that may be used to provide a mapping between UTRAN and GPS time*/
williamr@2
 13104
	class TUtranGpsRefTimeV1
williamr@2
 13105
		{
williamr@2
 13106
	public:
williamr@2
 13107
		/**UE-GPS timing of cell ms-part*/
williamr@2
 13108
		TUint16 			iMsPart;
williamr@2
 13109
		/**UE-GPS timing of cell ls-part*/
williamr@2
 13110
		TUint16				iLsPart;
williamr@2
 13111
		/**System frame number*/
williamr@2
 13112
		TUint16				iSfn;
williamr@2
 13113
		/**Specifies GPS reference time specific to mode - FDD/TDD*/
williamr@2
 13114
		TModeSpecificInfoV1	iModeSpecificInfo;
williamr@2
 13115
		/**ETrue indicates iUtranGpsReferenceTime is iPrimaryScramblingCode. 
williamr@2
 13116
		EFalse indicates iUtranGpsReferenceTime is iCellParametersID*/
williamr@2
 13117
		TBool	iModeSpecificInfoStatus;
williamr@2
 13118
		};
williamr@2
 13119
williamr@2
 13120
	/**
williamr@2
 13121
	This class contains several fields in the Telemetry (TLM) Word and Handover Word (HOW) 
williamr@2
 13122
	that are currently being broadcast by the respective GPS satellites. Combining this information 
williamr@2
 13123
	with GPS TOW helps the UE with time-recovery needed to predict satellite signal.
williamr@2
 13124
	*/
williamr@2
 13125
	class TReferenceTimeV1
williamr@2
 13126
		{
williamr@2
 13127
	public:
williamr@2
 13128
		/**GPS time in weeks*/
williamr@2
 13129
		TUint16				iGpsWeek;
williamr@2
 13130
		/**GPS Time of Week in milliseconds */
williamr@2
 13131
		TUint16				iGpsTowOneMsec;
williamr@2
 13132
		/**GPS reference time may be used to provide a mapping between UTRAN and GPS time*/
williamr@2
 13133
		TUtranGpsRefTimeV1	iUtranGpsRefTime;
williamr@2
 13134
		/**
williamr@2
 13135
		This field indicates the uncertainty of the relation GPS TOW/SFN. 
williamr@2
 13136
		ELessThan10 means the relation is accurate to at least 10 ms.
williamr@2
 13137
		*/
williamr@2
 13138
		TSfnTowUncertainity	iSfnTowUncertainity;
williamr@2
 13139
		/**Drift rate of the NODE B clock relative to GPS time.*/
williamr@2
 13140
		TUtranGpsDriftRate	iUtranGpsDriftRate;
williamr@2
 13141
		/**
williamr@2
 13142
		Contains several fields in the Telemetry (TLM) Word and Handover Word (HOW) 
williamr@2
 13143
		that are currently being broadcast by the respective GPS satellites. Combining this information 
williamr@2
 13144
		with GPS TOW helps the UE with time-recovery needed to predict satellite signal.
williamr@2
 13145
		*/
williamr@2
 13146
		TGpsTowAssistV1		iGpsTowAssistList[KMaxSat];
williamr@2
 13147
		};
williamr@2
 13148
williamr@2
 13149
	/**This class contains the GPS Assistance Data received from network*/
williamr@2
 13150
	class TUePosGpsAssistanceDataV1
williamr@2
 13151
		{
williamr@2
 13152
	public:
williamr@2
 13153
		/**GPS reference time may be used to provide a mapping between UTRAN and GPS time.*/
williamr@2
 13154
		TReferenceTimeV1 			iReferencTime;
williamr@2
 13155
		/**The Reference Location contains a 3-D location (with uncertainty)*/
williamr@2
 13156
		TReferenceLocationV1		iReferenceLocation;
williamr@2
 13157
		/**
williamr@2
 13158
		Holds information to allow a UE to estimate its position more accurate,
williamr@2
 13159
		biases in the pseudorange measurements may be provided to the UE.
williamr@2
 13160
		*/
williamr@2
 13161
		TDgpsCorrectionsV1			iDgpsCorrections;
williamr@2
 13162
		/**Holds navigation model satellite information*/
williamr@2
 13163
		TNavigationModelSatInfoV1	iNavigationModel;
williamr@2
 13164
		/**
williamr@2
 13165
		The Ionospheric Model contains information needed to model
williamr@2
 13166
		the propagation delays of the GPS signals through the ionosphere.
williamr@2
 13167
		*/
williamr@2
 13168
		TIonosphericModelV1			iIonosphericModel;
williamr@2
 13169
		/**UTC parameters may be used to provide Coordinated Universal Time to the UE.*/
williamr@2
 13170
		TUtcModelV1					iUtcModel;
williamr@2
 13171
		/**Holds the coarse, long-term model of the satellite positions and clocks.*/
williamr@2
 13172
		TAlmanacV1					iAlmanac;
williamr@2
 13173
		/**Holds the acquistions assistance information of the UE*/
williamr@2
 13174
		TAcquisitionAssistanceV1	iAcquisitionAssistance;
williamr@2
 13175
		/**Holds the list of bad satellites*/
williamr@2
 13176
		TUint8						iBadSatList[KMaxSat];
williamr@2
 13177
		/**
williamr@2
 13178
		This member specifies which of the above additional data structures are populated.
williamr@2
 13179
		*/
williamr@2
 13180
		TGpsAddlAssistDataReqV1 iGpsAddlDataStatus;
williamr@2
 13181
		};
williamr@2
 13182
williamr@2
 13183
	/**This class contains the GPS assistance data required to compute the UE Postioning information*/
williamr@2
 13184
	class TUePosMeasurementV1
williamr@2
 13185
		{
williamr@2
 13186
	public:
williamr@2
 13187
		/**
williamr@2
 13188
		The purpose of the element is to express the allowed/required location method(s), 
williamr@2
 13189
		and to provide information desired QoS.
williamr@2
 13190
		*/
williamr@2
 13191
		TUePosReportingQuantityV1	iUePosReportingQuantity;
williamr@2
 13192
		/**This member data defines in which UE states the measurement is valid.*/
williamr@2
 13193
		TMeasurementValidity		iMeasurementValidity;
williamr@2
 13194
		/**This member data holds the GPS Assistance Data sent by the network*/
williamr@2
 13195
		TUePosGpsAssistanceDataV1	iUePosGpsAssistanceData;
williamr@2
 13196
		};
williamr@2
 13197
williamr@2
 13198
	/**This holds the possible types of measurement commands that can be specified*/
williamr@2
 13199
	union TMeasurementCommandV1
williamr@2
 13200
		{
williamr@2
 13201
		/**Setup a new measurement*/
williamr@2
 13202
		TUePosMeasurementV1	iSetup;
williamr@2
 13203
		/**Modify a previously defined measurement*/
williamr@2
 13204
		TUePosMeasurementV1	iModify;
williamr@2
 13205
		/**Stop the measurement and clear all information in the UE that are related to that measurement.*/
williamr@2
 13206
		TBool	iRelease;
williamr@2
 13207
		};
williamr@2
 13208
williamr@2
 13209
	/**This enum specifies the mode the UE shall use to transmit the measurement report*/
williamr@2
 13210
	enum TMeasReportTransferMode
williamr@2
 13211
		{
williamr@2
 13212
		/**Transfer mode unknown*/
williamr@2
 13213
		ETransferModeUnknown,
williamr@2
 13214
		/**The UE shall transmit the measurement report using Acknowledged RLC mode*/
williamr@2
 13215
		EAckModeRlc,
williamr@2
 13216
		/**The UE shall transmit the measurement report using Unacknowledged RLC mode*/
williamr@2
 13217
		EUnAckModeRlc
williamr@2
 13218
		};
williamr@2
 13219
williamr@2
 13220
	/**
williamr@2
 13221
	This class contains the GPS assistance data needed by the UE to compute the location 
williamr@2
 13222
	of the UE. The UE computes the location once it receives all required information.
williamr@2
 13223
	*/
williamr@2
 13224
	class TMeasurementControlV7 : public RMobilePhone::TMultimodeType
williamr@2
 13225
		{
williamr@2
 13226
	public:
williamr@2
 13227
		IMPORT_C TMeasurementControlV7();
williamr@2
 13228
	public:
williamr@2
 13229
		/**
williamr@2
 13230
		A reference number that should be used by the UTRAN when setting up, 
williamr@2
 13231
		modifying or releasing the measurement and by the UE in the measurement report.
williamr@2
 13232
		*/
williamr@2
 13233
		TUint8	iMeasurementIdentity;
williamr@2
 13234
		/**Specifies the Measurement Setup / Modify / Release*/
williamr@2
 13235
		TMeasurementCommandV1	iMeasurementCommand;
williamr@2
 13236
		/**This specifies whether the UE shall transmit the measurement report using AM or UM RLC.*/
williamr@2
 13237
		TMeasReportTransferMode iMeasReportTransferMode;
williamr@2
 13238
		/**ETrue indicates velocity estimate is requested. EFalse indicates velocity estimate is not requested*/
williamr@2
 13239
		TBool	iVelocityRequested;
williamr@2
 13240
		/**Holds the type of measurement command being used*/
williamr@2
 13241
		TMeasurementCmd	iMeasurementCmdStatus;
williamr@2
 13242
		};
williamr@2
 13243
   	/**
williamr@2
 13244
	A typedef'd packaged TMeasurementControlV7 for passing through a
williamr@2
 13245
	generic API method.
williamr@2
 13246
williamr@2
 13247
	@internalAll
williamr@2
 13248
	*/
williamr@2
 13249
	typedef TPckg<TMeasurementControlV7> TMeasurementControlV7Pckg;
williamr@2
 13250
	
williamr@2
 13251
	//**************************************//
williamr@2
 13252
	// Measurement Report Data structures	//
williamr@2
 13253
	//**************************************//
williamr@2
 13254
williamr@2
 13255
	
williamr@2
 13256
	/**
williamr@2
 13257
	This enum contains the indicators thta specify which 
williamr@2
 13258
	union members of TMeasurementQuantityV1 are included
williamr@2
 13259
	*/
williamr@2
 13260
	enum TMeasQnty
williamr@2
 13261
		{
williamr@2
 13262
		/**Measurement Quantity unknown*/
williamr@2
 13263
		EMeasQntyUnknown,
williamr@2
 13264
		/**Indicates that CpichEcN0 is present*/
williamr@2
 13265
		EMeasQntyCpichEcN0Present,
williamr@2
 13266
		/**Indicates that CpichRscp is present*/
williamr@2
 13267
		EMeasQntyCpichRscpPresent,
williamr@2
 13268
		/**Indicates that path loss is present*/
williamr@2
 13269
		EMeasQntyPathLossPresent,
williamr@2
 13270
		};
williamr@2
 13271
williamr@2
 13272
	/**
williamr@2
 13273
	This enum contains the indicators that specify which 
williamr@2
 13274
	union members of TPosEstimateRefTime and  TPositionEstimateV1 are included
williamr@2
 13275
	*/
williamr@2
 13276
	enum TPosEstimateInfo
williamr@2
 13277
		{
williamr@2
 13278
		/**Position Estimate Info Unknown*/
williamr@2
 13279
		EPosEstimateInfoUnknown,
williamr@2
 13280
		/**
williamr@2
 13281
		NOTE: The following states correspond to TUePosPositionEstimateInfoV1/TPosEstimateRefTime
williamr@2
 13282
		Indicates that UE positioning estimate reference time is populated
williamr@2
 13283
		*/
williamr@2
 13284
		EUtranGpsRefTimeResultPresent,
williamr@2
 13285
		/**Indicates that GPS reference time is populated*/
williamr@2
 13286
		EGpsRefTimeOnlyPresent,
williamr@2
 13287
		/**Indicates that cell timing is populated*/
williamr@2
 13288
		ECellTimingPresent,
williamr@2
 13289
		/**
williamr@2
 13290
		NOTE: The following states correspond to TUePosPositionEstimateInfoV1/TPositionEstimateV1.
williamr@2
 13291
		Indicates EllipsoidPoint is populated
williamr@2
 13292
		*/
williamr@2
 13293
		EEllipsoidPointPresent,
williamr@2
 13294
		/**Indicates EllipsoidPoint with uncertainty circle is populated*/
williamr@2
 13295
		EEllipsoidPointUncertCirclePresent,
williamr@2
 13296
		/**Indicates EllipsoidPoint with uncertainty ellipse is populated*/
williamr@2
 13297
		EEllipsoidPointUncertEllipsePresent,
williamr@2
 13298
		/**Indicates EllipsoidPoint with altitude is populated*/
williamr@2
 13299
		EEllipsoidPointAltitudePresent,
williamr@2
 13300
		/**Indicates EllipsoidPoint with altitude and ellipse is populated*/
williamr@2
 13301
		EEllipsoidPointAltEllipsePresent,
williamr@2
 13302
		};
williamr@2
 13303
williamr@2
 13304
	/**This enum contains the possible types of velocity estimates*/
williamr@2
 13305
	enum TVelEstimate
williamr@2
 13306
		{
williamr@2
 13307
		/**Velocity Estimate Unknown*/
williamr@2
 13308
		EVelEstimateUnknown,
williamr@2
 13309
		/**Velocity Estimate is not present*/
williamr@2
 13310
		EVelEstimateNotPresent,
williamr@2
 13311
		/**Horizontal velocity is included*/
williamr@2
 13312
		EHorzVelPresent,
williamr@2
 13313
		/**Horizontal and vertical velocity is included*/
williamr@2
 13314
		EHorzWithVertVelPresent,
williamr@2
 13315
		/**Horizontal velocity with uncertainty is included*/
williamr@2
 13316
		EHorzVelWithUncertPresent,
williamr@2
 13317
		/**Horizontal and vertical velocity with uncertainty is included*/
williamr@2
 13318
		EHorzWithVertVelAndUncertPresent,
williamr@2
 13319
		};
williamr@2
 13320
williamr@2
 13321
	/**This contains the measurement quantities of the UE*/
williamr@2
 13322
	union TMeasurementQuantityV1
williamr@2
 13323
		{
williamr@2
 13324
	public:
williamr@2
 13325
		/**
williamr@2
 13326
		@see 3GPP TS 25.133.
williamr@2
 13327
		@see 3GPP TS 25.123.
williamr@2
 13328
		*/
williamr@2
 13329
		TUint8	iCpichEcN0;
williamr@2
 13330
		/**
williamr@2
 13331
		@see 3GPP TS 25.133.
williamr@2
 13332
		@see 3GPP TS 25.123.
williamr@2
 13333
		*/
williamr@2
 13334
		TUint8	iCpichRscp;
williamr@2
 13335
		/**Measurement path loss in dB.*/
williamr@2
 13336
		TUint8	iPathLoss;
williamr@2
 13337
		/**Extra for future use*/
williamr@2
 13338
		TBool	iSpare;
williamr@2
 13339
		};
williamr@2
 13340
williamr@2
 13341
	/**This class contains the current cell informations in TDD mode*/
williamr@2
 13342
	class TTddV1
williamr@2
 13343
		{
williamr@2
 13344
	public:
williamr@2
 13345
		/**
williamr@2
 13346
		Time slot Interference on Signal Code Power
williamr@2
 13347
		@see 3GPP TS 25.123
williamr@2
 13348
		*/
williamr@2
 13349
		TUint8	iTimeSlotIscp;
williamr@2
 13350
		/**Primary Common Control Physical CHannel received signal code power*/
williamr@2
 13351
		TUint8	iPrimaryCcpchRscp;
williamr@2
 13352
		};
williamr@2
 13353
williamr@2
 13354
	/**This class contains the information in FDD mode*/
williamr@2
 13355
	class TFddV1
williamr@2
 13356
		{
williamr@2
 13357
	public:
williamr@2
 13358
		/**Holds the measurement quantities of the UE*/
williamr@2
 13359
		TMeasurementQuantityV1	iMeasurementQuantity;
williamr@2
 13360
		/**Holds the field that would be populated in iMeasurementQuantity*/
williamr@2
 13361
		TMeasQnty	iMeasQntyStatus;
williamr@2
 13362
		};
williamr@2
 13363
williamr@2
 13364
	/**This contains the current cell information in specific modes - FDD/TDD*/
williamr@2
 13365
	union TCurrentCellV1 
williamr@2
 13366
		{
williamr@2
 13367
		/**Current cell information in FDD mode*/
williamr@2
 13368
		TFddV1	iFdd;
williamr@2
 13369
		/**Current cell information in TDD mode*/
williamr@2
 13370
		TTddV1	iTdd;
williamr@2
 13371
		};
williamr@2
 13372
williamr@2
 13373
	/**This contains the type of sfn-sfn observed time difference*/
williamr@2
 13374
	union TSfnSfnObsTimeDifferenceV1
williamr@2
 13375
		{
williamr@2
 13376
		/**Sfn-Sfn observed time difference -type1*/
williamr@2
 13377
		TUint16	iSfnSfnObsTimeDiff1;
williamr@2
 13378
		/**Sfn-Sfn observed time difference -type2*/
williamr@2
 13379
		TUint16	iSfnSfnObsTimeDiff2;
williamr@2
 13380
		};
williamr@2
 13381
williamr@2
 13382
	/**This class contains the FDD mode information of monitored cells*/
williamr@2
 13383
	class TMonitoredCellFddV1
williamr@2
 13384
		{
williamr@2
 13385
	public:
williamr@2
 13386
		/**Primary Common Control Physical CHannel information*/
williamr@2
 13387
		TUint16		iPrimaryCpichInfo;
williamr@2
 13388
		/**Holds the measurement quantities of the UE*/
williamr@2
 13389
		TMeasurementQuantityV1 iMeasurementQuantity;
williamr@2
 13390
		/**Holds the field that would be populated in iMeasurementQuantity*/
williamr@2
 13391
		TMeasQnty	iMeasQntyStatus;
williamr@2
 13392
		};
williamr@2
 13393
williamr@2
 13394
	/**This class contains the TDD mode information of monitored cells*/
williamr@2
 13395
	class TMonitoredCellTddV1
williamr@2
 13396
		{
williamr@2
 13397
	public:
williamr@2
 13398
		/**Cell identification*/
williamr@2
 13399
		TUint8	iCellParametersID;
williamr@2
 13400
		/**Primary Common Control Physical CHannel received signal code power*/
williamr@2
 13401
		TUint8	iPrimaryCcpchRscp;
williamr@2
 13402
		};
williamr@2
 13403
williamr@2
 13404
	/**This contains the monitored cells information in specific mode -  FDD/TDD*/
williamr@2
 13405
	union TMonitoredCellModeSpecificInfoV1
williamr@2
 13406
		{
williamr@2
 13407
		/**Monitored Cell information in FDD mode*/
williamr@2
 13408
		TMonitoredCellFddV1	iMonitoredCellFdd;
williamr@2
 13409
		/**Monitored Cell information in TDD mode*/
williamr@2
 13410
		TMonitoredCellTddV1	iMonitoredCellTdd;
williamr@2
 13411
		};
williamr@2
 13412
williamr@2
 13413
	/**This class contains the measured results for monitored cells on Random Access Channel*/
williamr@2
 13414
	class TMonitoredCellRachResultV1
williamr@2
 13415
		{
williamr@2
 13416
	public:
williamr@2
 13417
		/**Holds the sfn-sfn observed time difference*/
williamr@2
 13418
		TSfnSfnObsTimeDifferenceV1 iSfnSfnObsTimeDiff;
williamr@2
 13419
		/**Holds the monitored cells specific info mode - FDD/TDD*/
williamr@2
 13420
		TMonitoredCellModeSpecificInfoV1 iMonitoredCellModeSpecificInfo;
williamr@2
 13421
		/**ETrue indicates iMonitoredCellModeSpecificInfo is iMonitoredCellFdd.
williamr@2
 13422
		EFalse indicates iMonitoredCellModeSpecificInfo is iMonitoredCellTdd*/
williamr@2
 13423
		TBool	iSfnSfnObsTimeDiffStatus;
williamr@2
 13424
		};
williamr@2
 13425
	/**
williamr@2
 13426
	Horizontal velocity is characterised by the horizontal speed and bearing. 
williamr@2
 13427
	The horizontal speed gives the magnitude of the horizontal component of the velocity of a UE. 
williamr@2
 13428
	The bearing provides the direction of the horizontal component of velocity taken clockwise from North.
williamr@2
 13429
	@see 3GPP TS 23.032
williamr@2
 13430
	*/
williamr@2
 13431
	class THorzVelocityV1
williamr@2
 13432
		{
williamr@2
 13433
	public:
williamr@2
 13434
		/**The direction of movement is given in degrees where '0' represents North, '90' represents East, etc.*/
williamr@2
 13435
		TUint16		iBearing;
williamr@2
 13436
		/**The horizontal speed gives the magnitude of the horizontal component of the velocity of a UE*/
williamr@2
 13437
		TUint16		iHorzSpeed;
williamr@2
 13438
		};
williamr@2
 13439
williamr@2
 13440
	/**This enum holds vertical speed direction*/
williamr@2
 13441
	enum TVertSpeedDirection
williamr@2
 13442
		{
williamr@2
 13443
		/**Speed direction unknown*/
williamr@2
 13444
		ESpeedDirectionUnknown,
williamr@2
 13445
		/**Upward direction*/
williamr@2
 13446
		EUpward,
williamr@2
 13447
		/**Downward direction*/
williamr@2
 13448
		EDownward
williamr@2
 13449
		};
williamr@2
 13450
williamr@2
 13451
	/**
williamr@2
 13452
	Horizontal velocity is characterised by the horizontal speed and bearing. 
williamr@2
 13453
	The horizontal speed gives the magnitude of the horizontal component of the velocity of a UE. 
williamr@2
 13454
	The vertical speed and direction provides the component of velocity of a UE in a vertical direction.
williamr@2
 13455
	The bearing provides the direction of the horizontal component of velocity taken clockwise from North.
williamr@2
 13456
	@see 3GPP TS 23.032
williamr@2
 13457
	*/
williamr@2
 13458
	class THorzWithVertVelocityV1
williamr@2
 13459
		{
williamr@2
 13460
	public:
williamr@2
 13461
		/**Direction of vertical speed*/
williamr@2
 13462
		TVertSpeedDirection	iVertSpeedDirection;
williamr@2
 13463
		/**The direction of movement is given in degrees where '0' represents North, '90' represents East, etc.*/
williamr@2
 13464
		TUint16		iBearing;
williamr@2
 13465
		/**The horizontal speed gives the magnitude of the horizontal component of the velocity of a UE*/
williamr@2
 13466
		TUint16		iHorzSpeed;
williamr@2
 13467
		/**The vertical speed and direction provides the component of velocity of a UE in a vertical direction.*/
williamr@2
 13468
		TUint8		iVertSpeed;
williamr@2
 13469
		};
williamr@2
 13470
williamr@2
 13471
	/**
williamr@2
 13472
	Horizontal velocity with uncertainty is characterised by a horizontal speed and bearing,
williamr@2
 13473
	giving a horizontal velocity vector V, and an uncertainty speed s.
williamr@2
 13474
	@see 3GPP TS 23.032
williamr@2
 13475
	*/
williamr@2
 13476
	class THorzVelocityWithUncertaintyV1
williamr@2
 13477
		{
williamr@2
 13478
	public:
williamr@2
 13479
		/**	The direction of movement is given in degrees where '0' represents North, '90' represents East, etc.*/
williamr@2
 13480
		TUint16		iBearing;
williamr@2
 13481
		/**The horizontal speed gives the magnitude of the horizontal component of the velocity of a UE*/
williamr@2
 13482
		TUint16		iHorzSpeed;
williamr@2
 13483
		/**
williamr@2
 13484
		Horizontal speed uncertainty.
williamr@2
 13485
		*/
williamr@2
 13486
		TUint8		iHorzSpeedUncertainty;
williamr@2
 13487
		};
williamr@2
 13488
williamr@2
 13489
	/**
williamr@2
 13490
	Horizontal and vertical velocity with uncertainty is characterised by a horizontal speed and bearing, 
williamr@2
 13491
	giving a horizontal velocity vector Vx,y, a vertical speed and direction giving a vertical velocity component Vz,
williamr@2
 13492
	and uncertainty speeds s1 and s2. 
williamr@2
 13493
	@see 3GPP TS 23.032
williamr@2
 13494
	*/
williamr@2
 13495
	class THorzWithVertVelocityAndUncertaintyV1
williamr@2
 13496
		{	
williamr@2
 13497
	public:
williamr@2
 13498
		/**
williamr@2
 13499
		The direction of movement is given in degrees where '0' represents North, '90' represents East, etc.
williamr@2
 13500
		*/
williamr@2
 13501
		TUint16		iBearing;
williamr@2
 13502
		/**The horizontal speed gives the magnitude of the horizontal component of the velocity of a UE*/
williamr@2
 13503
		TUint16		iHorzSpeed;
williamr@2
 13504
		/**The vertical speed and direction provides the component of velocity of a UE in a vertical direction.*/
williamr@2
 13505
		TUint8		iVertSpeed;
williamr@2
 13506
		/**Horizontal speed uncertainty.*/
williamr@2
 13507
		TUint8		iHorzSpeedUncertainty;
williamr@2
 13508
		};
williamr@2
 13509
williamr@2
 13510
	/**
williamr@2
 13511
	This class contains the possible ways of velocity estimates
williamr@2
 13512
	@see 3GPP TS 23.032
williamr@2
 13513
	*/
williamr@2
 13514
	union TVelocityEstimateV1
williamr@2
 13515
		{
williamr@2
 13516
		/**Horizontal velocity*/
williamr@2
 13517
		THorzVelocityV1					iHorzVelocity;
williamr@2
 13518
		/**Horizontal velockity and vertical velocity*/
williamr@2
 13519
		THorzWithVertVelocityV1			iHorzWithVertVelocity;
williamr@2
 13520
		/**Horizontal velocity with uncertainty*/
williamr@2
 13521
		THorzVelocityWithUncertaintyV1	iHorzVelocityWithUncertainty;
williamr@2
 13522
		/**Horizontal and vertical velocity with uncertainty*/
williamr@2
 13523
		THorzWithVertVelocityAndUncertaintyV1	iHorzWithVertVelocityAndUncertainty;
williamr@2
 13524
		};
williamr@2
 13525
williamr@2
 13526
	/**This class contains the measured results on Random Access Channel*/
williamr@2
 13527
	class TMeasuredResultsOnRachV1
williamr@2
 13528
		{
williamr@2
 13529
	public:
williamr@2
 13530
		/**Current cell information*/
williamr@2
 13531
		TCurrentCellV1	iCurrentCell;
williamr@2
 13532
		/**Monitored Cell information*/
williamr@2
 13533
		TMonitoredCellRachResultV1	iMonitoredCellsRachList[KMaxMonitoredCells];
williamr@2
 13534
		/**ETrue indicates iCurrentCell is iFdd.
williamr@2
 13535
		EFalse indicates iCurrentCell is iTdd*/
williamr@2
 13536
		TBool	iCurrentCellStatus;
williamr@2
 13537
		};
williamr@2
 13538
williamr@2
 13539
	/**
williamr@2
 13540
	Identifies the channel in combination with the Midamble shift and slot number.
williamr@2
 13541
	It is not used in 1.28 Mcps TDD and may be set to either value and should be ignored by the receiver.
williamr@2
 13542
	*/
williamr@2
 13543
	enum TBurstType
williamr@2
 13544
		{
williamr@2
 13545
		/**Burst type 1*/
williamr@2
 13546
		EType1,
williamr@2
 13547
		/**Burst type 2*/
williamr@2
 13548
		EType2
williamr@2
 13549
		};
williamr@2
 13550
williamr@2
 13551
	/**This class contains UE positioning estimates specific to TDD*/
williamr@2
 13552
	class TPosEstimateTddV1
williamr@2
 13553
		{
williamr@2
 13554
	public:
williamr@2
 13555
		/**Identifies the channel in combination with the Midamble shift and slot number.*/
williamr@2
 13556
		TBurstType	iBurstType;
williamr@2
 13557
		/**Midamble shift*/
williamr@2
 13558
		TUint8	iMidambleShift;
williamr@2
 13559
		/**
williamr@2
 13560
		This member data is present only if no IPDL scheme is configured in the reference cell.
williamr@2
 13561
		Otherwise the slot is defined by the IPDL configuration.
williamr@2
 13562
		*/
williamr@2
 13563
		TUint8	iTimeSlotNumber;
williamr@2
 13564
		/**
williamr@2
 13565
		Cell identification
williamr@2
 13566
		*/
williamr@2
 13567
		TUint8	iCellParametersID;
williamr@2
 13568
		};
williamr@2
 13569
williamr@2
 13570
	/**This class contains UE positioning estimates specific to FDD/TDD*/
williamr@2
 13571
	union TPosEstimateModeSpecificInfoV1
williamr@2
 13572
		{
williamr@2
 13573
		/**Identifies the reference cell for the GPS TOW-SFN relationship.*/
williamr@2
 13574
		TUint16		iPrimaryCpichInfo;
williamr@2
 13575
		/**Holds the cell and channel identification*/
williamr@2
 13576
		TPosEstimateTddV1	iCellAndChannelID;
williamr@2
 13577
		};
williamr@2
 13578
williamr@2
 13579
	/**This class contains the cell timing information*/
williamr@2
 13580
	class TCellTimingV1
williamr@2
 13581
		{
williamr@2
 13582
	public:
williamr@2
 13583
		/**
williamr@2
 13584
		SFN during which the position was calculated.
williamr@2
 13585
		*/
williamr@2
 13586
		TUint16		iSfn;
williamr@2
 13587
		/**Holds the UE positioning estimates specific to mode - FDD or TDD*/
williamr@2
 13588
		TPosEstimateModeSpecificInfoV1	iPosEstimateModeSpecificInfo;
williamr@2
 13589
		/**ETrue indicates iPosEstimateModeSpecificInfo is iPrimaryCpichInfo.
williamr@2
 13590
		EFalse indicates iPosEstimateModeSpecificInfo is iCellAndChannelID.*/
williamr@2
 13591
		TBool	iPosEstimateModeStatus;
williamr@2
 13592
		};
williamr@2
 13593
williamr@2
 13594
	/**This class captures the GPS measurement specific to FDD or TDD*/
williamr@2
 13595
	union TGpsMeasModeSpecificInfoV1
williamr@2
 13596
		{
williamr@2
 13597
		/**Frequency Division Duplex identification*/
williamr@2
 13598
		TUint16	iFddRefID;
williamr@2
 13599
		/**Time Division Duplex identification*/
williamr@2
 13600
		TUint8	iTddRefID;
williamr@2
 13601
		};
williamr@2
 13602
williamr@2
 13603
	/**This class contains results of the GPS reference time*/
williamr@2
 13604
	class TUtranGpsRefTimeResultV1
williamr@2
 13605
		{
williamr@2
 13606
	public:
williamr@2
 13607
		/**UE-GPS timing of cell ms-part*/
williamr@2
 13608
		TUint16		iMsPart;
williamr@2
 13609
		/**UE-GPS timing of cell ls-part*/
williamr@2
 13610
		TUint16		iLsPart;
williamr@2
 13611
		/**Holds the GPS measurement specific to FDD or TDD*/
williamr@2
 13612
		TGpsMeasModeSpecificInfoV1	iGpsMeasModeSpecificInfo;
williamr@2
 13613
		/**Cell System Frame Number*/
williamr@2
 13614
		TUint16		iSfn;
williamr@2
 13615
		/**ETrue indicates iGpsMeasModeSpecificInfo is iFddRefID. 
williamr@2
 13616
		 EFalse indicates iGpsMeasModeSpecificInfo is iTddRefID*/
williamr@2
 13617
		TBool	iGpsMeasModeStatus;
williamr@2
 13618
		};
williamr@2
 13619
williamr@2
 13620
	/**This union contains the UE positioning reference time*/
williamr@2
 13621
	union TPosReferenceTimeV1
williamr@2
 13622
		{
williamr@2
 13623
		/**Contains the results of GPS reference time*/
williamr@2
 13624
		TUtranGpsRefTimeResultV1	iUtranGpsRefTimeResult;
williamr@2
 13625
		/**Contains the GPS reference time*/
williamr@2
 13626
		TUint16		iGpsRefTimeOnly;
williamr@2
 13627
		};
williamr@2
 13628
	
williamr@2
 13629
	/**
williamr@2
 13630
	This class contains the information of ellipsoid.
williamr@2
 13631
	It consists of a latitude and a longitude.
williamr@2
 13632
	@see 3GPP TS 23.032
williamr@2
 13633
	*/
williamr@2
 13634
	class TEllipsoidPointV1
williamr@2
 13635
		{
williamr@2
 13636
	public:
williamr@2
 13637
		/**Specifies the sign - North/South*/
williamr@2
 13638
		TLatitudeSign	iLatitudeSign;
williamr@2
 13639
		/**
williamr@2
 13640
		A north/south angular measurement of position relative to the equator, 
williamr@2
 13641
		in the meridian plane which contains the earth's rotation axis
williamr@2
 13642
		*/
williamr@2
 13643
		TUint16	iLatitude;
williamr@2
 13644
		/**
williamr@2
 13645
		An east/west angular measurement of position in relation to the Prime Meridian. 
williamr@2
 13646
		The angle between the two great circles, one being the Prime (or Greenwich) Meridian 
williamr@2
 13647
		and the other a meridian passing through the point of interest.
williamr@2
 13648
		*/
williamr@2
 13649
		TInt16	iLongitude;
williamr@2
 13650
		};
williamr@2
 13651
williamr@2
 13652
	/**
williamr@2
 13653
	It is characterised by the co-ordinates of an ellipsoid point (the origin) and a distance r
williamr@2
 13654
	@see 3GPP TS 23.032
williamr@2
 13655
	*/
williamr@2
 13656
	class TEllipsoidPointUncertCircleV1
williamr@2
 13657
		{
williamr@2
 13658
	public:
williamr@2
 13659
		/**Specifies the sign - North/South*/
williamr@2
 13660
		TLatitudeSign	iLatitudeSign;
williamr@2
 13661
		/**
williamr@2
 13662
		A north/south angular measurement of position relative to the equator, 
williamr@2
 13663
		in the meridian plane which contains the earth's rotation axis
williamr@2
 13664
		*/
williamr@2
 13665
		TUint16	iLatitude;
williamr@2
 13666
		/**
williamr@2
 13667
		An east/west angular measurement of position in relation to the Prime Meridian. 
williamr@2
 13668
		The angle between the two great circles, one being the Prime (or Greenwich) Meridian 
williamr@2
 13669
		and the other a meridian passing through the point of interest.
williamr@2
 13670
		*/
williamr@2
 13671
		TInt16	iLongitude;
williamr@2
 13672
		/**Uncertainty code*/
williamr@2
 13673
		TUint8	iUncertaintyCode;
williamr@2
 13674
		};
williamr@2
 13675
williamr@2
 13676
	/**
williamr@2
 13677
	It is characterised by the co-ordinates of an ellipsoid point (the origin), 
williamr@2
 13678
	distances r1 and r2 and an angle of orientation A
williamr@2
 13679
	@see 3GPP TS 23.032
williamr@2
 13680
	*/
williamr@2
 13681
	class TEllipsoidPointUncertEllipseV1
williamr@2
 13682
		{
williamr@2
 13683
	public:
williamr@2
 13684
		/**Specifies the sign - North/South*/
williamr@2
 13685
		TLatitudeSign	iLatitudeSign;
williamr@2
 13686
		/**
williamr@2
 13687
		A north/south angular measurement of position relative to the equator, 
williamr@2
 13688
		in the meridian plane which contains the earth's rotation axis
williamr@2
 13689
		*/
williamr@2
 13690
		TUint16	iLatitude;
williamr@2
 13691
		/**
williamr@2
 13692
		An east/west angular measurement of position in relation to the Prime Meridian. 
williamr@2
 13693
		The angle between the two great circles, one being the Prime (or Greenwich) Meridian 
williamr@2
 13694
		and the other a meridian passing through the point of interest.
williamr@2
 13695
		*/
williamr@2
 13696
		TInt16	iLongitude;
williamr@2
 13697
		/**Uncertainty semi major axis*/
williamr@2
 13698
		TUint8	iUncertaintySemiMajor;
williamr@2
 13699
		/**Uncertainty semi minor axis*/
williamr@2
 13700
		TUint8	iUncertaintySemiMinor;
williamr@2
 13701
		/**Orientation of major axis*/
williamr@2
 13702
		TUint8	iOrientationMajorAxis;
williamr@2
 13703
		/**The confidence by which the position of a target entity is known to be within the shape description*/
williamr@2
 13704
		TUint8	iConfidence;
williamr@2
 13705
		};
williamr@2
 13706
williamr@2
 13707
	/**
williamr@2
 13708
	The description of an ellipsoid point with altitude is that of a point at a specified distance 
williamr@2
 13709
	above or below a point on the earth's surface. This is defined by an ellipsoid point 
williamr@2
 13710
	with the given longitude and latitude and the altitude above or below the ellipsoid point.
williamr@2
 13711
	@see 3GPP TS 23.032
williamr@2
 13712
	*/
williamr@2
 13713
	class TEllipsoidPointAltitudeV1
williamr@2
 13714
		{
williamr@2
 13715
	public:
williamr@2
 13716
		/**Specifies the sign - North/South*/
williamr@2
 13717
		TLatitudeSign	iLatitudeSign;
williamr@2
 13718
		/**
williamr@2
 13719
		A north/south angular measurement of position relative to the equator, 
williamr@2
 13720
		in the meridian plane which contains the earth's rotation axis
williamr@2
 13721
		*/
williamr@2
 13722
		TUint16	iLatitude;
williamr@2
 13723
		/**
williamr@2
 13724
		An east/west angular measurement of position in relation to the Prime Meridian. 
williamr@2
 13725
		The angle between the two great circles, one being the Prime (or Greenwich) Meridian 
williamr@2
 13726
		and the other a meridian passing through the point of interest.
williamr@2
 13727
		*/
williamr@2
 13728
		TInt16	iLongitude;
williamr@2
 13729
		/**Direction of altitude*/
williamr@2
 13730
		TAltDirection	iAltDirection;
williamr@2
 13731
		/**Degree of altitude*/
williamr@2
 13732
		TUint16	iAltitude;
williamr@2
 13733
		};
williamr@2
 13734
	
williamr@2
 13735
	/**
williamr@2
 13736
	characterised by the co-ordinates of an ellipsoid point with altitude, distances r1 (the "semi-major uncertainty"),
williamr@2
 13737
	r2 (the "semi-minor uncertainty") and r3 (the "vertical uncertainty") and an angle of orientation A 
williamr@2
 13738
	(the "angle of the major axis")
williamr@2
 13739
	@see 3GPP TS 23.032
williamr@2
 13740
	*/
williamr@2
 13741
	class TEllipsoidPointAltitudeEllipseV1
williamr@2
 13742
		{
williamr@2
 13743
	public:
williamr@2
 13744
		/**Specifies the sign - North/South*/
williamr@2
 13745
		TLatitudeSign	iLatitudeSign;
williamr@2
 13746
		/**
williamr@2
 13747
		A north/south angular measurement of position relative to the equator, 
williamr@2
 13748
		in the meridian plane which contains the earth's rotation axis
williamr@2
 13749
		*/
williamr@2
 13750
		TUint16	iLatitude;
williamr@2
 13751
		/**
williamr@2
 13752
		An east/west angular measurement of position in relation to the Prime Meridian. 
williamr@2
 13753
		The angle between the two great circles, one being the Prime (or Greenwich) Meridian 
williamr@2
 13754
		and the other a meridian passing through the point of interest.
williamr@2
 13755
		*/
williamr@2
 13756
		TInt16	iLongitude;
williamr@2
 13757
		/**Direction of altitude*/
williamr@2
 13758
		TAltDirection	iAltDirection;
williamr@2
 13759
		/**Degree of latitude*/
williamr@2
 13760
		TUint16	iAltitude;
williamr@2
 13761
		/**Uncertainty semi major axis*/
williamr@2
 13762
		TUint8	iUncertaintySemiMajor;
williamr@2
 13763
		/**Uncertainty semi minor axis*/
williamr@2
 13764
		TUint8	iUncertaintySemiMinor;
williamr@2
 13765
		/**Orientation of major axis*/
williamr@2
 13766
		TUint8	iOrientationMajorAxis;
williamr@2
 13767
		/**The confidence by which the position of a target entity is known to be within the shape description*/
williamr@2
 13768
		TUint8	iConfidence;
williamr@2
 13769
		};
williamr@2
 13770
williamr@2
 13771
	/**This union holds the possible forms of position estimate of the UE that can be captured.*/
williamr@2
 13772
	union TPositionEstimateV1
williamr@2
 13773
		{
williamr@2
 13774
		/**
williamr@2
 13775
		The description of an ellipsoid point is that of a point
williamr@2
 13776
		on the surface of the ellipsoid, and consists of a latitude and a longitude.
williamr@2
 13777
		@see 3GPP TS 23.032
williamr@2
 13778
		*/
williamr@2
 13779
		TEllipsoidPointV1					iEllipsoidPoint;
williamr@2
 13780
		/**
williamr@2
 13781
		It is characterised by the co-ordinates of an ellipsoid point (the origin) and a distance r
williamr@2
 13782
		@see 3GPP TS 23.032
williamr@2
 13783
		*/
williamr@2
 13784
		TEllipsoidPointUncertCircleV1		iEllipsoidPointUncertCircle;
williamr@2
 13785
		/**
williamr@2
 13786
		It is characterised by the co-ordinates of an ellipsoid point (the origin), 
williamr@2
 13787
		distances r1 and r2 and an angle of orientation A
williamr@2
 13788
		@see 3GPP TS 23.032
williamr@2
 13789
		*/
williamr@2
 13790
		TEllipsoidPointUncertEllipseV1		iEllipsoidPointUncertEllipse;
williamr@2
 13791
		/**
williamr@2
 13792
		The description of an ellipsoid point with altitude is that of a point at a specified distance 
williamr@2
 13793
		above or below a point on the earth's surface. This is defined by an ellipsoid point 
williamr@2
 13794
		with the given longitude and latitude and the altitude above or below the ellipsoid point.
williamr@2
 13795
		@see 3GPP TS 23.032
williamr@2
 13796
		*/
williamr@2
 13797
		TEllipsoidPointAltitudeV1			iEllipsoidPointAltitude;
williamr@2
 13798
		/**
williamr@2
 13799
		characterised by the co-ordinates of an ellipsoid point with altitude, distances r1 (the "semi-major uncertainty"),
williamr@2
 13800
		r2 (the "semi-minor uncertainty") and r3 (the "vertical uncertainty") and an angle of orientation A 
williamr@2
 13801
		(the "angle of the major axis")
williamr@2
 13802
		@see 3GPP TS 23.032
williamr@2
 13803
		*/
williamr@2
 13804
		TEllipsoidPointAltitudeEllipseV1	iEllipsoidPointAltitudeEllipsoide;
williamr@2
 13805
		};
williamr@2
 13806
williamr@2
 13807
	/**This contains the positioning estimate reference time*/
williamr@2
 13808
	union TPosEstimateRefTime
williamr@2
 13809
		{
williamr@2
 13810
		/**Contains results of the GPS reference time*/
williamr@2
 13811
		TUtranGpsRefTimeResultV1	iUtranGpsRefTimeResult;
williamr@2
 13812
		/**Contains the GPS reference time */
williamr@2
 13813
		TUint16		iGpsRefTimeOnly;
williamr@2
 13814
		/**Contains the cell timing*/
williamr@2
 13815
		TCellTimingV1	iCellTiming;
williamr@2
 13816
		};
williamr@2
 13817
williamr@2
 13818
	/**
williamr@2
 13819
	Provides the position estimate from the UE to the network, 
williamr@2
 13820
	if the UE is capable of determining its own position.
williamr@2
 13821
	*/
williamr@2
 13822
	class TUePosPositionEstimateInfoV1
williamr@2
 13823
		{
williamr@2
 13824
	public:
williamr@2
 13825
		/**UE positioning estimate reference time*/
williamr@2
 13826
		TPosEstimateRefTime	iPosEstimateRefTime;
williamr@2
 13827
		/**Holds the UE's position estimate
williamr@2
 13828
		@see TPositionEstimateV1
williamr@2
 13829
		*/
williamr@2
 13830
		TPositionEstimateV1	iPostionEstimate;
williamr@2
 13831
		/**Holds the field that would be populated in iPosEstimateRefTime*/
williamr@2
 13832
		TPosEstimateInfo	iPosEstimateRefTimeStatus;
williamr@2
 13833
		/**Holds the field that would be populated in iPosEstimate*/
williamr@2
 13834
		TPosEstimateInfo	iPosEstimateStatus;
williamr@2
 13835
		};
williamr@2
 13836
	
williamr@2
 13837
	/**This enum contains the multipath indicators*/
williamr@2
 13838
	enum TMultipathIndicator
williamr@2
 13839
		{
williamr@2
 13840
		/**
williamr@2
 13841
		Multipath indicator unknown
williamr@2
 13842
		This is an invalid indicator. 
williamr@2
 13843
		*/
williamr@2
 13844
		EMPUnknown,
williamr@2
 13845
		/**Not measured*/
williamr@2
 13846
		ENm,
williamr@2
 13847
		/**MP error < 5m*/
williamr@2
 13848
		ELow,
williamr@2
 13849
		/**5m < MP error < 43m*/
williamr@2
 13850
		EMedium,
williamr@2
 13851
		/**MP error > 43m*/
williamr@2
 13852
		EHigh
williamr@2
 13853
		};
williamr@2
 13854
williamr@2
 13855
	/**This class contains the GPS measurement parameters of the UE*/
williamr@2
 13856
	class TGpsMeasMeasurementParamV1
williamr@2
 13857
		{
williamr@2
 13858
	public:
williamr@2
 13859
		/**Satellite Identification*/
williamr@2
 13860
		TUint8		iSatID;
williamr@2
 13861
		/**
williamr@2
 13862
		The estimate of the carrier-to-noise ratio of the received signal from the particular 
williamr@2
 13863
		satellite used in the measurement. It is given in units of dB-Hz (typical levels will 
williamr@2
 13864
		be in the range of 20 - 50 dB-Hz).
williamr@2
 13865
		*/
williamr@2
 13866
		TUint8		iCN0;
williamr@2
 13867
		/**
williamr@2
 13868
		It is the instantaneous frequency difference between the receiver's internal oscillator 
williamr@2
 13869
		and the received carrier from the satellite. Hz, scale factor 0.2.
williamr@2
 13870
		*/
williamr@2
 13871
		TInt16		iDoppler;
williamr@2
 13872
		/**
williamr@2
 13873
		Unit in GPS chips.
williamr@2
 13874
		Whole value of the UE GPS code-phase measurement, where increasing binary values of the field 
williamr@2
 13875
		signify increasing measured pseudoranges.
williamr@2
 13876
		*/
williamr@2
 13877
		TUint16		iWholeGpsChips;
williamr@2
 13878
		/**
williamr@2
 13879
		The UE GPS code-phase measurement is divided into the fields "Whole GPS Chips" and "Fractional GPS Chips".
williamr@2
 13880
		Scale factor 2-10 Fractional value of the UE GPS code-phase measurement.
williamr@2
 13881
		*/
williamr@2
 13882
		TUint16		iFractionalGpsChips;
williamr@2
 13883
		/**
williamr@2
 13884
		Contains the possible multipath indicators. Multipath error is usually caused by one path being bounced or 
williamr@2
 13885
		reflected. The impact on a pseudo-range measurement may be up to a few metres. In the case of carrier phase,
williamr@2
 13886
		this is of the order of a few centimetres.
williamr@2
 13887
		*/
williamr@2
 13888
		TMultipathIndicator	iMultipathIndicator;
williamr@2
 13889
		/**
williamr@2
 13890
		A distance measurement based on the correlation of a satellite's transmitted code (may be the C/A-Code or 
williamr@2
 13891
		the encrypted P-Code) and the local receiver's reference code (for that PRN satellite number), 
williamr@2
 13892
		that has not been corrected for errors in synchronisation between the transmitter's clock and the receiver's clock.
williamr@2
 13893
		Hence a pseudo-range measurement is a time-error biased distance measurement.
williamr@2
 13894
		*/
williamr@2
 13895
		TUint8		iPseudorangeRmsError;
williamr@2
 13896
		};
williamr@2
 13897
williamr@2
 13898
	/**This class contains the GPS measurement parameters and the positioning reference time*/
williamr@2
 13899
	class TUePosGpsMeasurementResultsV1
williamr@2
 13900
		{
williamr@2
 13901
	public:
williamr@2
 13902
		/**UE positioning reference time*/
williamr@2
 13903
		TPosReferenceTimeV1	iPosGpsMeasRefTime;
williamr@2
 13904
		/**Holds the GPS measurement parameters from all the active satellites*/
williamr@2
 13905
		TGpsMeasMeasurementParamV1	iGpsMeasurementParamList[KMaxSat];
williamr@2
 13906
		/**ETrue indicates TPosReferenceTimeV1::iUtranGpsRefTimeResult is populated. 
williamr@2
 13907
		 EFalse indicates TPosReferenceTimeV1::iGpsRefTimeOnly is populated*/
williamr@2
 13908
		TBool	iPosGpsMeasRefTimeStatus;
williamr@2
 13909
		};
williamr@2
 13910
williamr@2
 13911
	/**
williamr@2
 13912
	This enum lists all the possible errors that UE can report to the network
williamr@2
 13913
	*/
williamr@2
 13914
	enum TPosErrorCause
williamr@2
 13915
		{
williamr@2
 13916
		/**
williamr@2
 13917
		Error Cause Unknown. This is an invalid error cause and is set if the UE does not set with 
williamr@2
 13918
		any of the underlying valid error causes
williamr@2
 13919
		*/
williamr@2
 13920
		EErrorCauseUnknown,
williamr@2
 13921
		/**Indicates that enought number of GPS satellites are healthy and active.*/
williamr@2
 13922
		ENotEnoughGpsSatellites,
williamr@2
 13923
		/**Assistance data required to compute location of the UE is missing in the measurement control.
williamr@2
 13924
		If the Additional data request flag is true in the measurement control only then additional assistance
williamr@2
 13925
		data can be requested otherwise measurements need to be done using the existing assistance data
williamr@2
 13926
		@see TGpsAddlAssistDataReqV1
williamr@2
 13927
		@see TUePosReportingQuantityV1
williamr@2
 13928
		 */
williamr@2
 13929
		EAssistanceDataMissing,
williamr@2
 13930
		/**
williamr@2
 13931
		Cell Frames Timings are not accomplished
williamr@2
 13932
		*/
williamr@2
 13933
		ENotAccomplishedGpsTimingOfCellFrames,
williamr@2
 13934
		/**
williamr@2
 13935
		UE can set this error in case other than the above mentioned is encountered 
williamr@2
 13936
		*/
williamr@2
 13937
		EUndefinedError,
williamr@2
 13938
		/**
williamr@2
 13939
		UE denies Location information
williamr@2
 13940
		*/
williamr@2
 13941
		ERequestDeniedByUser,
williamr@2
 13942
		};
williamr@2
 13943
williamr@2
 13944
	/**
williamr@2
 13945
	This class contains the positioning errors that might have encountered during 
williamr@2
 13946
	measurement of location of the UE.
williamr@2
 13947
	*/
williamr@2
 13948
	class TUePosError
williamr@2
 13949
		{
williamr@2
 13950
	public:
williamr@2
 13951
		/**Indicates the error cause encountered while computing GPS Assistance data*/
williamr@2
 13952
		TPosErrorCause		iPosErrorCause;
williamr@2
 13953
		/**If error cause is "Assistance Data Missing" and iAddlAssistanceDataReq is set to ETrue then
williamr@2
 13954
		then this member shall indicate what additional assistance data is needed.
williamr@2
 13955
		If iAddlAssistanceDataReq is set to EFalse then existing assistance data is used to compute location
williamr@2
 13956
		information of the UE.
williamr@2
 13957
		@see TUePosReportingQuantityV1::iAddlAssistanceDataReq*/
williamr@2
 13958
		TGpsAddlAssistDataReqV1	iGpsAddlAssistDataReq;
williamr@2
 13959
		};
williamr@2
 13960
williamr@2
 13961
	/**
williamr@2
 13962
	This class contains the measurement results computed by the UE.
williamr@2
 13963
	*/
williamr@2
 13964
	class TUePosMeasuredResultsV1
williamr@2
 13965
		{
williamr@2
 13966
	public:
williamr@2
 13967
		/**The purpose of this is to provide the position estimate from the UE to the network, 
williamr@2
 13968
		if the UE is capable of determining its own position.*/
williamr@2
 13969
		TUePosPositionEstimateInfoV1	iUePosPositionEstimateInfo;
williamr@2
 13970
		/**Contains the GPS measurement parameters and the positioning reference time*/
williamr@2
 13971
		TUePosGpsMeasurementResultsV1	iUePosGpsMeasurement;
williamr@2
 13972
		/**Indicates the error cause and/or additional assistance data is required*/
williamr@2
 13973
		TUePosError						iUePosError;
williamr@2
 13974
		/**
williamr@2
 13975
		ETrue indicates some error has encountered. iUePosError will be populated.
williamr@2
 13976
		EFalse indicates Gps Assistance Data is received and no error has encountered while processing.
williamr@2
 13977
		Hence iUePosPositionEstimateInfo and iUePosGpsMeasurement will be populated
williamr@2
 13978
		*/
williamr@2
 13979
		TBool	iPosErrorStatus;
williamr@2
 13980
		};
williamr@2
 13981
williamr@2
 13982
	/**Contains the measured location information of the UE*/
williamr@2
 13983
	union TMeasuredResultsV1
williamr@2
 13984
		{
williamr@2
 13985
		/**
williamr@2
 13986
		This member either contains the measurement results or the error that might have 
williamr@2
 13987
		encountered during measurements.
williamr@2
 13988
		*/
williamr@2
 13989
		TUePosMeasuredResultsV1		iTUePosMeasuredResults;
williamr@2
 13990
		/**
williamr@2
 13991
		A spare member for future use.
williamr@2
 13992
		*/
williamr@2
 13993
		TBool						iSpare;
williamr@2
 13994
		};
williamr@2
 13995
williamr@2
 13996
	/**
williamr@2
 13997
	This class contains the measurement report expected as response to the measurement control sent by the 
williamr@2
 13998
	network. Veloctiy estimates are included if requested in measurement control.
williamr@2
 13999
	*/
williamr@2
 14000
	class TMeasurementReportV7 : public RMobilePhone::TMultimodeType
williamr@2
 14001
		{
williamr@2
 14002
	public:
williamr@2
 14003
		IMPORT_C TMeasurementReportV7();
williamr@2
 14004
	public:
williamr@2
 14005
		/**A reference number that should be used by the UTRAN when setting up, 
williamr@2
 14006
		modifying or releasing the measurement and by the UE in the measurement report.
williamr@2
 14007
		*/
williamr@2
 14008
		TUint8 iMeasurementIdentity;
williamr@2
 14009
		/**Contains the measured location information of the UE*/
williamr@2
 14010
		TMeasuredResultsV1 iMeasuredResults;
williamr@2
 14011
		/**Contains the measured results on Random Access Channel*/
williamr@2
 14012
		TMeasuredResultsOnRachV1	iMeasuredResultsOnRach;
williamr@2
 14013
		/**Contains the velocity estimates of the UE*/
williamr@2
 14014
		TVelocityEstimateV1		iVelocityEstimate;
williamr@2
 14015
		/**
williamr@2
 14016
		Indicates the populated member in iVelocityEstimate if velocity estimate is computed.
williamr@2
 14017
		Otherwise indicates that velocity estimate is not computed.
williamr@2
 14018
		*/
williamr@2
 14019
		TVelEstimate	iVelEstimateStatus;
williamr@2
 14020
		};
williamr@2
 14021
	/**
williamr@2
 14022
	A typedef'd packaged TMeasurementReportV7 for passing through a
williamr@2
 14023
	generic API method.
williamr@2
 14024
williamr@2
 14025
	@internalAll
williamr@2
 14026
	*/
williamr@2
 14027
	typedef TPckg<TMeasurementReportV7> TMeasurementReportV7Pckg;
williamr@2
 14028
	
williamr@2
 14029
	//*********************************************//	
williamr@2
 14030
	//  Measurement Control Failure data structure //
williamr@2
 14031
	//*********************************************//
williamr@2
 14032
williamr@2
 14033
	/**
williamr@2
 14034
	This enum contains the list of errors that the UE can specify.
williamr@2
 14035
	The Measurement control failure is caused only when the the UE 
williamr@2
 14036
	cannot initiate a measurement as instructed by the network.
williamr@2
 14037
	*/
williamr@2
 14038
	enum TMeasurementControlFailure
williamr@2
 14039
		{
williamr@2
 14040
		/**
williamr@2
 14041
		Unknown Measurement Control Failure.
williamr@2
 14042
		This is an invalid failure state whic will be set if the UE does not set with the 
williamr@2
 14043
		underlying valid error reasons.
williamr@2
 14044
		*/
williamr@2
 14045
		EControlFailureUnknown,
williamr@2
 14046
		/**Indicates ASN1.0 encoding is incorrect*/
williamr@2
 14047
		EAsn1ViolationOrEncoding,
williamr@2
 14048
		/**Messsgae type specified is not existent*/
williamr@2
 14049
		EMsgTypeNonExistent,
williamr@2
 14050
		/**Message is not compatible*/
williamr@2
 14051
		EMsgNotCompatibleWithReceiverState,
williamr@2
 14052
		/**Information sent cannot be understood*/
williamr@2
 14053
		EIeValueNotComprehend,
williamr@2
 14054
		/**Information expected is not present*/
williamr@2
 14055
		EInformationElementMissing,
williamr@2
 14056
		/*Message extension cannot be understood*/
williamr@2
 14057
		EMsgExtnNotComprehend
williamr@2
 14058
		}; 
williamr@2
 14059
		
williamr@2
 14060
	/**
williamr@2
 14061
	This enum contains the possible domains used by MOLR 
williamr@2
 14062
	*/
williamr@2
 14063
	enum TDomain
williamr@2
 14064
   		{
williamr@2
 14065
		/**Packet switch domain is the default domain that will be used by Molr*/
williamr@2
 14066
   		EPacketSwitchedDomain,
williamr@2
 14067
		/**UE shall set the domain to Circuit switch whenever Molr is intended to use it*/
williamr@2
 14068
  	 	ECircuitSwitchedDomain
williamr@2
 14069
   		};
williamr@2
 14070
williamr@2
 14071
	/**
williamr@2
 14072
	The UE Positioning Technology value, as defined in 3GPP TS 34.109 V7.2.0 Section 6.10
williamr@2
 14073
	@publishedPartner
williamr@2
 14074
	@released
williamr@2
 14075
	*/
williamr@2
 14076
	enum TUePosTechnology
williamr@2
 14077
		{
williamr@2
 14078
		/** A-GPS */
williamr@2
 14079
		KUePosTechnologyAGPS = 0
williamr@2
 14080
		};
williamr@2
 14081
williamr@2
 14082
	IMPORT_C void NotifyMtlr(TRequestStatus& aReqStatus,TDes8& aNotifyMtlr);
williamr@2
 14083
	IMPORT_C void SendMtlrResponse(TRequestStatus& aReqStatus,const TMtlrResponse aMtlrResponse);
williamr@2
 14084
	IMPORT_C void SendMtlrResponse(TRequestStatus& aReqStatus,const TMtlrError aMtlrResponse);
williamr@2
 14085
	IMPORT_C void SendMtlrResponse(TRequestStatus& aReqStatus,const TMtlrReject aMtlrResponse);
williamr@2
 14086
    IMPORT_C void SendMolr(TRequestStatus& aReqStatus,const TDesC8& aStartMolr,TDes8& aMolrReturnResult);
williamr@2
 14087
	IMPORT_C void NotifyMeasurementControl(TRequestStatus& aReqStatus,TDes8& aMeasurementControl);
williamr@2
 14088
	IMPORT_C void SendMeasurementReport(TRequestStatus& aReqStatus,const TDesC8& aMeasurementReport);
williamr@2
 14089
	IMPORT_C void SendMeasurementReport(TRequestStatus& aReqStatus,const TMeasurementControlFailure aMeasurementControlFailure);
williamr@2
 14090
	IMPORT_C TInt SetLcsDomain(const TDomain aDomain);	
williamr@2
 14091
	IMPORT_C void NotifyResetUePositioningInformation(TRequestStatus& aReqStatus, TUePosTechnology& aUePosTechnology) const;
williamr@2
 14092
williamr@2
 14093
private:
williamr@2
 14094
	void ConstructL();
williamr@2
 14095
	void Destruct();
williamr@2
 14096
private:
williamr@2
 14097
	/**
williamr@2
 14098
	Pointer Holder for the RMobileLocationServices sub-session requests.
williamr@2
 14099
	*/
williamr@2
 14100
	CMobileLocationServicesPtrHolder* iMmPtrHolder;
williamr@2
 14101
	};
williamr@2
 14102
williamr@2
 14103
#endif // __ETELMM_H__