telephonyserverplugins/common_tsy/customapi/inc/RMmCustomAPI.h
changeset 0 3553901f7fa8
child 21 4814c5a49428
equal deleted inserted replaced
-1:000000000000 0:3553901f7fa8
       
     1 /*
       
     2 * Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 
       
    21 /**
       
    22  @file
       
    23  @publishedPartner
       
    24  @deprecated
       
    25 */
       
    26 #ifndef RMMCUSTOMAPI_H
       
    27 #define RMMCUSTOMAPI_H
       
    28 
       
    29 //  INCLUDES
       
    30 #include <etelmm.h>
       
    31 #include <et_clsvr.h>
       
    32 #include <etelpckt.h>
       
    33 
       
    34 // CONSTANTS
       
    35 const TInt KIpcCustomExt = 1000000;
       
    36 const TInt KIpcCustomMaxLimi = 1000299;
       
    37 const TInt KIpcCustomAPIExtensionExt = 1000450;
       
    38 
       
    39 _LIT(KCustomAPIName,"CUSTOMAPI");
       
    40 _LIT(KTerminateAllCalls,"ALL_CALLS");
       
    41 const TInt KSimLockMaxPasswordSize = 15;
       
    42 const TInt KSimCbTopicNameLength = 20;
       
    43 const TInt KSubAddressSize = 20;
       
    44 const TInt KBearerCapabilitySize = 14;
       
    45 
       
    46 // alpha tag length is 124
       
    47 const TInt KMaxOperatorNameLength = 124;
       
    48 // max length of operator length
       
    49 const TInt KMaxOperatorLogoLength = 6405;
       
    50 
       
    51 const TUint16 KFlexibleNameSeparator = 0x007C;  // '|'
       
    52 const TUint8 KFlexibleLongNameMaxLength = 30;
       
    53 const TUint8 KFlexibleShortNameMaxLength = 20;
       
    54 
       
    55 // Sim file definitions
       
    56 const TUint8 KSimFilePathLength = 8;
       
    57 const TUint16 KSimFileMaxLength = 0xFFFF;
       
    58 
       
    59 // Viag HomeZone setting flags
       
    60 const TUint8 KUHziUeActive = 0x00001;
       
    61 const TUint8 HCbHziUeActive = 0x00002;
       
    62 
       
    63 // ADPU buffer maximum length 258 according to
       
    64 // ISI ADPU server description
       
    65 typedef TBuf8<258> TApduBuffer;
       
    66 
       
    67 // PDP context activation failure in case of APN not in EFACL
       
    68 const TInt KErrPacketDataTsyInvalidAPN = -6001;
       
    69 
       
    70 // Cell info constant
       
    71 const TInt KMaxTimeSlotIscpAmount = 1; //14; Changed from 14 to 1. Memory problem!!
       
    72 const TInt KMaxCellMeasuredResults = 32;
       
    73 const TInt KMaxNetworkMeasureReports = 8;
       
    74 const TInt KMaxNmrAmount = 15;
       
    75 
       
    76 // DATA TYPES
       
    77 /** Enumerates IPC values used by Custom API. */
       
    78 enum TCustomIPC
       
    79     {
       
    80     /** Notify ss additional info */
       
    81     ECustomSsAdditionalInfoNotificationIPC = KIpcCustomExt,		//1000000
       
    82     /** Notify ss request complete */
       
    83     ECustomNotifySsRequestCompleteIPC,		//1000001
       
    84     /** Cancel USSD session */
       
    85     ECustomCancelUssdSessionIPC,			//1000002
       
    86     /** Start SIM CB topic browsing */
       
    87     ECustomStartSimCbTopicBrowsingIPC,		//1000003
       
    88     /** Get next SIM CB topic */
       
    89 	ECustomGetNextSimCbTopicIPC,			//1000004
       
    90     /** Delete SIM DB topic */
       
    91     ECustomDeleteSimCbTopicIPC,				//1000005
       
    92     /** Read SIM File */
       
    93     ECustomReadSimFileIPC,					//1000006
       
    94     /** Get wlan sim authentication data */
       
    95     ECustomGetSimAuthenticationDataIPC,		//1000007
       
    96     /** Set SIM SMS to "read" */
       
    97     ECustomSetSimMessageStatusReadIPC,		//1000008
       
    98     /** Notify Dtmf event */
       
    99     ECustomNotifyDtmfEventIPC,				//1000009
       
   100     /** Get Diagnostic Octets */
       
   101     ECustomGetDiagnosticOctetsIPC,			//1000010
       
   102     /** Set Als Blocked */
       
   103     ECustomSetAlsBlockedIPC,				//1000011
       
   104     /** Get Als Blocked */
       
   105     ECustomGetAlsBlockedIPC,				//1000012
       
   106     /** Check Als Pp Support */
       
   107     ECustomCheckAlsPpSupportIPC,			//1000013
       
   108     /** Remote Alerting Tone Status */
       
   109     ECustomGetRemoteAlertingToneStatusIPC,	//1000014
       
   110     /** Call Origin */
       
   111     ECustomCallOriginIPC,					//1000015
       
   112     /** Notify Als Blocked Change */
       
   113     ECustomNotifyAlsBlockedChangedIPC,		//1000016
       
   114     /** Terminate a Call */
       
   115     ECustomTerminateCallIPC,				//1000017
       
   116     /** Clear call blacklist */
       
   117     ECustomClearCallBlackListIPC,			//1000018
       
   118     /** Read HSxPA Status */
       
   119     ECustomReadHSxPAStatusIPC,				//1000019
       
   120     /** Write HSxPA Status */    
       
   121     ECustomWriteHSxPAStatusIPC,				//1000020
       
   122     /** Notify HSxPA Status change */    
       
   123     ECustomNotifyHSxPAStatusIPC,			//1000021
       
   124     /** Get cell(s) info */
       
   125     ECustomGetCellInfoIPC,					//1000022
       
   126     /** Notify cell(s) info change */
       
   127     ECustomNotifyCellInfoChangeIPC,			//1000023
       
   128     /** Activate SIM Lock */
       
   129     ECustomSimLockActivateIPC,				//1000024
       
   130     /** Deactivate SIM Lock */
       
   131     ECustomSimLockDeActivateIPC,			//1000025
       
   132     /** Read VIAG Home Zone Parameters */
       
   133     EReadViagHomeZoneParamsIPC,				//1000026
       
   134     /** Read VIAG Home Zone Cache */
       
   135     EReadViagHomeZoneCacheIPC,				//1000027
       
   136     /** Write VIAG Home Zone Cache */
       
   137     EWriteViagHomeZoneCacheIPC,				//1000028
       
   138     /** Get ciphering information */
       
   139     ECustomGetCipheringInfoIPC,				//1000029
       
   140     /** Notify ciphering information */
       
   141     ECustomNotifyCipheringInfoChangeIPC,	//1000030
       
   142     /** Notify NSPS status */
       
   143     ECustomNotifyNSPSStatusIPC,				//1000031
       
   144     /** Wake net from NSPS */
       
   145     ECustomNetWakeupIPC,					//1000032
       
   146     /** Get network provider name */
       
   147     ECustomGetNetworkProviderNameIPC,		//1000033
       
   148     /** Get operator name */
       
   149     ECustomGetOperatorNameIPC,				//1000034
       
   150     /** Get programmable operator logo */
       
   151     ECustomGetProgrammableOperatorLogoIPC,	//1000035
       
   152     /** Reset the net server */
       
   153     ECustomResetNetServerIPC,				//1000036
       
   154     /** Notify programmable operator logo change */
       
   155     ECustomNotifyProgrammableOperatorLogoChangeIPC,		//1000037
       
   156     /** Notify network connection failure */
       
   157     ECustomNotifyNetworkConnectionFailureIPC,			//1000038
       
   158     /** Get Air time duration */
       
   159     ECustomGetAirTimeDurationIPC,			//1000039
       
   160     /** Notify phonebook cache ready */
       
   161     ECustomNotifyPndCacheReadyIPC,			//1000040
       
   162     /** Get phonebook cache status */
       
   163     ECustomGetPndCacheStatusIPC,			//1000041
       
   164     /** Notify SS network event */
       
   165     ECustomNotifySsNetworkEventIPC,			//1000042
       
   166     /** Check two digit dial support */
       
   167     ECustomCheckTwoDigitDialSupportIPC,		//1000043
       
   168     /** Send APDU request */
       
   169     ECustomSendAPDUReqIPC,					//1000044
       
   170     /** Get the life timer's info */
       
   171     ECustomGetLifeTimeIPC,					//1000045
       
   172     /** Power SIM on */
       
   173     ECustomPowerSimOnIPC,					//1000046
       
   174     /** Power SIM off */
       
   175     ECustomPowerSimOffIPC,					//1000047
       
   176     /** Perform SIM warm reset */
       
   177     ECustomSimWarmResetIPC,					//1000048
       
   178     /** Get Answer To Reset */
       
   179     ECustomGetATRIPC,						//1000049
       
   180     /** Send APDU */
       
   181     ECustomSendAPDUReqV2IPC,				//1000050
       
   182     /** Get SIM card reader status */
       
   183     ECustomGetSimCardReaderStatusIPC,		//1000051
       
   184     /** Notify SIM card status */
       
   185     ECustomNotifySimCardStatusIPC,			//1000052
       
   186     /** Set Drive Mode status */
       
   187     ECustomSetDriveModeIPC,					//1000053
       
   188     /** Check if security code is blocked or not */
       
   189     ECustomIsBlockedIPC,					//1000054
       
   190     /** Check security code */
       
   191     ECustomCheckSecurityCodeIPC,			//1000055
       
   192     /** Check emergency number */
       
   193     ECustomCheckEmergencyNumberIPC,			//1000056
       
   194     /** SAT refresh complete notification */
       
   195     ECustomSatRefreshCompleteNotificationIPC,	//1000057
       
   196     /** Disable phone lock */
       
   197     ECustomDisablePhoneLockIPC,					//1000058
       
   198     /** Get currently active PIN */
       
   199     ECustomGetActivePinIPC,						//1000059
       
   200     /** Release CommDB file */
       
   201     ECustomReleaseFileIPC,						//1000060
       
   202     /** Restart reading CommDB */
       
   203     ECustomRestartFileIPC,						//1000061
       
   204     /** Notify GPRS connection change */
       
   205     ECustomNotifyEGprsInfoChange,				//1000062
       
   206     /** Get GPRS connection information */
       
   207     ECustomGetEGprsInfo,						//1000063
       
   208     /** Get phonebook 3G info */
       
   209     EGet3GPBInfoIPC,							//1000064
       
   210     /** Get system network modes */
       
   211     ECustomGetSystemNetworkModesIPC,			//1000065
       
   212     /** Set system network mode */
       
   213     ECustomSetSystemNetworkModeIPC,				//1000066
       
   214     /** Get current system network modes */
       
   215     ECustomGetCurrentSystemNetworkModesIPC,		//1000067
       
   216     /** Write WCDMA HomeZone */
       
   217     EWriteViagHomeZoneUHZIUESettingsIPC,		//1000068
       
   218     /** SetAlwaysOn Mode */
       
   219     ECustomSetAlwaysOnMode,						//1000069
       
   220     /** Notify Rau event */
       
   221     ECustomNotifyRauEventIPC,					//1000070
       
   222     /** Get Call forwarding info */
       
   223     ECustomGetIccCallForwardingStatusIPC,		//1000071
       
   224     /** Notify call forwarding info change */
       
   225     ECustomNotifyIccCallForwardingStatusChangeIPC,	//1000072
       
   226     /** Get 3G radio frequency band*/
       
   227     ECustomGetBandSelectionIPC,						//1000073
       
   228     /** Set 3G radio frequency band*/
       
   229     ECustomSetBandSelectionIPC,						//1000074
       
   230     /** Set 3G radio frequency band*/    
       
   231     ECustomGetServiceTableSupportbyApplicationIPC,	//1000075
       
   232     /* Notify remote alerting tone status change IPC */
       
   233     ECustomNotifyRemoteAlertingToneStatusChangeIPC, //1000076
       
   234     /** Maximum IPC enumeration value */
       
   235     ECustomMaxIpcLimit = KIpcCustomMaxLimi
       
   236     };
       
   237 
       
   238 // FORWARD DECLARATIONS
       
   239 class CMmCustomPtrHolder;
       
   240 
       
   241 // CLASS DECLARATION
       
   242 
       
   243 /**
       
   244  * RMmCustomAPI contains multimode API's vendor specific functionality.
       
   245  * RMmCustomAPI is a subsession extension i.e. it derives
       
   246  * from RtelSubSessionBase class.
       
   247  *
       
   248  * Notice that Custom TSY is able to handle only one instance of each
       
   249  * Custom API Set-method call at a time. Overlapping Set-method calls occurs
       
   250  * if same Set-method is called from an other instance of  RMmCustomAPI
       
   251  * object. Through one RMmCustomAPI object overlapping calls are not allowed
       
   252  * - trying this will panic Etel Server. For each overlapping request to the
       
   253  * client is returned error code KErrServerBusy either as a return value in
       
   254  * case of synchronous call or in a variable of type TRequestStatus in case of
       
   255  * an asynchronous call. This rule applies also in a situation where previous
       
   256  * identical request has been cancelled by client but the triggered operation
       
   257  * on DOS side has not been completed yet.
       
   258  *
       
   259  * On the other hand Custom TSY is able to handle several instances of each
       
   260  * Get-method call at a time. Again overlapping Get-method call can be
       
   261  * activated only from an other instance of  RMmCustomAPI object.
       
   262  *
       
   263  * Consider carefully consequences and implications of request cancellations.
       
   264  * If a request has triggered an operation on DOS side, the subsequent
       
   265  * calcellation of the request will not undo the operation on DOS side. It is
       
   266  * the responsibility of the Custom API's client to undo the operation if
       
   267  * necessary. Cancel request completes only when awaited DOS side response
       
   268  * arrives. Then if it is an OK-response, the request is completed normally
       
   269  * with error code KErrNone. . Or if the response is a FAILURE, the request is
       
   270  * completed with error code KErrCancel.
       
   271  *
       
   272  * APDU functionality:
       
   273  * Etel Server and Custom TSY are able to handle multiple SendAPDUReq calls
       
   274  * simultaneously.
       
   275  * However each RMmCustoAPI instance can have only one request active at
       
   276  * a time.
       
   277  *
       
   278  * Packet data related functionality:
       
   279  * Custom TSY implements functionality that is not supported by the packetAPI.
       
   280  *
       
   281  * Call realted functionality:
       
   282  * Custom TSY implements functionality that is not supported by the
       
   283  * MM ETEL API.
       
   284  *
       
   285  * @publishedPartner
       
   286  * @deprecated
       
   287  */
       
   288 class RMmCustomAPI : public RTelSubSessionBase
       
   289     {
       
   290     public:
       
   291 
       
   292     /** Enumerates the Custom API version number.*/
       
   293     enum TMultimodeETelCustomV1Api
       
   294         {
       
   295         /** Version of Custom API extension */
       
   296         KETelCustomExtMultimodeV1=10000,
       
   297         /** Version of TTCustomCallParams */
       
   298         KETelCustomExtCustomCallParamsV3
       
   299         };
       
   300 
       
   301     /** Defines SS statuses to be used */
       
   302     enum TSsStatus
       
   303         {
       
   304         /** Active status */
       
   305         KSsStatusGsmActive = 0x01,
       
   306         /** Registered status */
       
   307         KSsStatusGsmRegistered = 0x02,
       
   308         /** Provisioned status */
       
   309         KSsStatusGsmProvisioned = 0x04,
       
   310         /** Quiescent status */
       
   311         KSsStatusGsmQuiescent = 0x08,
       
   312         /** Error status */
       
   313         KSsStatusReturnError = 0xFFFF,
       
   314         /** Network failure */
       
   315         KSsStatusNetworkFailure = 0xFFFE
       
   316         };
       
   317 
       
   318 
       
   319     /**
       
   320      * Maximum length of parameter data is 16 for Random parameter, SRES, AUTN,
       
   321      * CK, IK and AUTS
       
   322      */
       
   323     enum { KMaxParametersLength = 16 };
       
   324     /** Max length of ChipheringKey is 3 */
       
   325     enum { KMaxKCLength = 3 };
       
   326     /** Max length of RES is 4 */
       
   327     enum { KMaxRESLength = 4 };
       
   328     
       
   329     //Max length of iBTid, iKeyLifeTime, iNafId, iImpi, iMikey, iMtkSalt
       
   330     enum { KMaxAuthenticationParameterLength = 255 };
       
   331    
       
   332     // KMaxMikeyLength enum for maximum MIKEY protocol data length
       
   333 	enum { KMaxMikeyLength = 255 };
       
   334 
       
   335 	// KMaxKeyDomainIdLength enum for maximum key domain id length
       
   336 	enum{ KMaxKeyDomainIdLength = 3 };
       
   337 
       
   338 	// KMaxKeyGroupIdLength enum for maximum key group id length
       
   339 	enum { KMaxKeyGroupIdLength = 2 };
       
   340 	
       
   341 	
       
   342     /** Parameter buffer */
       
   343     typedef TBuf8< KMaxParametersLength > TParameter;
       
   344 	
       
   345 	// GBA
       
   346     typedef TBuf8< KMaxAuthenticationParameterLength > TAuthenticationParameter;
       
   347     
       
   348 	// TMikey datatype to be used for MIKEY data
       
   349     typedef TBuf8< KMaxMikeyLength > TMikey;
       
   350 	
       
   351 	// TKeyDomainId datatype to be used for key domain id information	
       
   352     typedef TBuf8< KMaxKeyDomainIdLength > TKeyDomainId;
       
   353 	
       
   354 	// TKeyGroupId datatype to be used for key group id information
       
   355     typedef TBuf8< KMaxKeyGroupIdLength > TKeyGroupId;
       
   356 
       
   357     // Datatype for parental rating data information
       
   358     typedef TBuf8< KMaxKeyGroupIdLength > TParentalRating;
       
   359 
       
   360     // Datatype for parental control operation information
       
   361     typedef TBuf8< KMaxKeyDomainIdLength > TParentalControl; 
       
   362     /**
       
   363      * Base class for TSimAuthenticationEapSim and
       
   364      * TSimAuthenticationEapAka 
       
   365      */
       
   366     class TSimAuthenticationBase
       
   367     {
       
   368     public:
       
   369 
       
   370     /** Possible values for the authentication method */
       
   371     enum
       
   372         {
       
   373         /** EAP-SIM authentication method */
       
   374         EEapSim = 0x01,
       
   375         /** EAP-AKA authentication method */
       
   376         EEapAka = 0x02,
       
   377         EGbaBootstrap = 0x03,
       
   378         EGbaBootstrapUpdate = 0x04, 
       
   379         EGbaBootstrapNafDerivation = 0x05, 
       
   380         EMgvMtkGeneration = 0x06, 
       
   381         EMgvMskDeletion = 0x07, 
       
   382         EMgvMskUpdate = 0x08 
       
   383         };
       
   384 
       
   385     /** Gets the value of iExtensionId 
       
   386      * @return iExtensionId */
       
   387     inline TInt ExtensionId() { return iExtensionId; };
       
   388     protected:
       
   389         TInt iExtensionId;
       
   390     };
       
   391 
       
   392 // Class for holding GBA Bootstrap parameters
       
   393     class TSimAuthenticationGbaBootstrap : public TSimAuthenticationBase
       
   394         {
       
   395         public:
       
   396 
       
   397             IMPORT_C TSimAuthenticationGbaBootstrap ();
       
   398 
       
   399         public:
       
   400 
       
   401             // Random parameters from client
       
   402             TParameter iRandomParameters;
       
   403             // AUTN parameters from client
       
   404             TParameter iAUTN;
       
   405             // RES to client
       
   406             TParameter iRES;
       
   407             // AUTS to client
       
   408             TParameter iAUTS;
       
   409         };
       
   410     typedef TPckg< TSimAuthenticationGbaBootstrap > TGbaBootstrapDataPckg;
       
   411 
       
   412 
       
   413 // Class for holding GBA Bootstrap updating parameters
       
   414     class TSimAuthenticationGbaBootstrapUpdate : public TSimAuthenticationBase
       
   415         {
       
   416         public:
       
   417 
       
   418             IMPORT_C TSimAuthenticationGbaBootstrapUpdate ();
       
   419 
       
   420         public:
       
   421 
       
   422             // B-TID from client 
       
   423             TAuthenticationParameter iBTid;
       
   424             // Key lifetime from client
       
   425             TAuthenticationParameter iKeyLifeTime;
       
   426             // Random parameters to client
       
   427             TParameter iRandomParameters;
       
   428         };
       
   429     typedef TPckg< TSimAuthenticationGbaBootstrapUpdate > TGbaBootstrapUpdateDataPckg;
       
   430 
       
   431 
       
   432 // Class for holding GBA NAF Derivation parameters
       
   433     class TSimAuthenticationGbaNafDerivation : public TSimAuthenticationBase
       
   434         {
       
   435         public:
       
   436 
       
   437             IMPORT_C TSimAuthenticationGbaNafDerivation ();
       
   438 
       
   439         public:
       
   440 
       
   441             // Naf_id from client 
       
   442             TAuthenticationParameter iNafId;
       
   443             // Impi from client 
       
   444             TAuthenticationParameter iImpi;
       
   445             // Ks_ext_NAF to client 
       
   446             TBuf8 < 32 > iKsExtNaf;
       
   447         
       
   448         };
       
   449     typedef TPckg< TSimAuthenticationGbaNafDerivation > TGbaNafDerivationDataPckg;
       
   450 
       
   451       
       
   452 // Class for holding MGV MSK update parameters
       
   453     class TSimAuthenticationMgvMskUpdate : public TSimAuthenticationBase
       
   454         {
       
   455         public:
       
   456 
       
   457             IMPORT_C TSimAuthenticationMgvMskUpdate ();
       
   458 
       
   459         public:
       
   460 
       
   461             // MIKEY to client 
       
   462             TMikey iMikey;
       
   463             // OMA BCAST management data object to client
       
   464             TParameter iBCASTManagement;
       
   465             // OMA BCAST SPE parental rating data operation to client
       
   466             TParentalRating iParentalRating;
       
   467             // Security Policy Extension to client
       
   468             TParameter iSecurityPolicyExt;
       
   469         
       
   470         };
       
   471      typedef TPckg< TSimAuthenticationMgvMskUpdate > TSimAuthenticationMgvMskUpdatePckg;
       
   472            
       
   473       
       
   474 // Class for holding MGV MTK generation parameters
       
   475     class TSimAuthenticationMgvMtkGeneration : public TSimAuthenticationBase
       
   476         {
       
   477         public:
       
   478 
       
   479             IMPORT_C TSimAuthenticationMgvMtkGeneration ();
       
   480 
       
   481         public:
       
   482 
       
   483             // MIKEY from client 
       
   484             TMikey iMikey;
       
   485             // MTK salt to client 
       
   486             TMikey iMtkSalt;
       
   487         
       
   488             // Smartcard support for MobileTV
       
   489             // OMA BCAST management data object to client
       
   490             TParameter iBCASTManagement;
       
   491             // OMA BCAST SPE parental control operation to client
       
   492             TParentalControl iParentalControl;
       
   493             // TEK (Traffic Encryption Key) to client
       
   494             TParameter iTrafficEncryptionKey;   
       
   495         };
       
   496      typedef TPckg< TSimAuthenticationMgvMtkGeneration > TMgvMtkGenerationDataPckg;
       
   497 
       
   498 
       
   499 // Class for holding MGV MSK deletion parameters
       
   500     class TSimAuthenticationMgvMskDeletion : public TSimAuthenticationBase
       
   501         {
       
   502         public:
       
   503 
       
   504             IMPORT_C TSimAuthenticationMgvMskDeletion ();
       
   505 
       
   506         public:
       
   507 
       
   508             // Key domain Id from client  
       
   509             TKeyDomainId iKeyDomainId;
       
   510             // Key Group Id from client 
       
   511             TKeyGroupId iKeyGroupIdPart;
       
   512         
       
   513         };
       
   514       typedef TPckg< TSimAuthenticationMgvMskDeletion > TMgvMskDeletionDataPckg;
       
   515 
       
   516       
       
   517     /**
       
   518     * Possible values for Multiple Subscriber Profile IDs
       
   519     */
       
   520     enum TMultipleSubscriberProfileID
       
   521         {
       
   522         /** Multiple Subscriber Profile ID 1 */
       
   523         KProfileIdentityOne = 0x01,
       
   524         /** Multiple Subscriber Profile ID 2 */
       
   525         KProfileIdentityTwo = 0x02,
       
   526         /** Multiple Subscriber Profile ID 3 */        
       
   527         KProfileIdentityThree = 0x03,
       
   528         /** Multiple Subscriber Profile ID 4 */        
       
   529         KProfileIdentityFour = 0x04,
       
   530         };
       
   531 
       
   532     /** Class for holding Call Forwarding parameters */
       
   533     class TCFIndicators: public RMobilePhone::TMobilePhoneCFUIndicatorV3
       
   534         {
       
   535         public:
       
   536         	/** Default constructor */
       
   537             IMPORT_C TCFIndicators();
       
   538 
       
   539         public:
       
   540 
       
   541 	        /** CFU number . */ 
       
   542 		    RMobilePhone::TMobileAddress iCFNumber; 
       
   543 		 
       
   544 		    /** MSP Profile ID */
       
   545        	    TMultipleSubscriberProfileID iMultipleSubscriberProfileID;
       
   546         };
       
   547 
       
   548     /** Package buffer to hold TCFIndicators objects */
       
   549     typedef TPckg<TCFIndicators> TCFIndicatorsPckg;
       
   550 
       
   551     /** Class for holding EAP SIM authentication parameters  */
       
   552     class TSimAuthenticationEapSim : public TSimAuthenticationBase
       
   553         {
       
   554     public:
       
   555     	/** Default constructor */
       
   556         IMPORT_C TSimAuthenticationEapSim();
       
   557 
       
   558     public:
       
   559 
       
   560         /** Random parameters from client */
       
   561         TParameter iRandomParameters;
       
   562         /** SRES to client */
       
   563         TParameter iSRES;
       
   564         /** Ciphering Key to Client */
       
   565         TParameter iKC;
       
   566         };
       
   567 
       
   568     /** Package buffer to hold TSimAuthenticationEapSim objects */
       
   569     typedef TPckg<TSimAuthenticationEapSim> TSimDataPckg;
       
   570 
       
   571     /** Class for holding EAP AKA authentication parameters */
       
   572     class TSimAuthenticationEapAka : public TSimAuthenticationBase
       
   573         {
       
   574     public:
       
   575     	/** Default constructor */
       
   576         IMPORT_C TSimAuthenticationEapAka();
       
   577 
       
   578     public:
       
   579 
       
   580         /** Random parameters from client */
       
   581         TParameter iRandomParameters;
       
   582         /** AUTN parameters from client */
       
   583         TParameter iAUTN;
       
   584         /** RES to client */
       
   585         TParameter iRES;
       
   586         /** UMTS Ciphering Key to client */
       
   587         TParameter iCK;
       
   588         /** UMTS Integrity Key to client */
       
   589         TParameter iIK;
       
   590         /** AUTS to client */
       
   591         TParameter iAUTS;
       
   592         };
       
   593 
       
   594     /** Package buffer to hold TSimAuthenticationEapAka objects */
       
   595     typedef TPckg<TSimAuthenticationEapAka> TAkaDataPckg;
       
   596 
       
   597     /**
       
   598      * TTApdu defines the pointers to the Send APDU request details
       
   599      */
       
   600     class TApdu
       
   601         {
       
   602     public:
       
   603 
       
   604         TApdu()
       
   605             {
       
   606             iInfo = 0;
       
   607             iData = 0;
       
   608             }
       
   609 
       
   610         TApdu
       
   611             (
       
   612             TDes8& aInfo,
       
   613             TDes8& aData
       
   614             )
       
   615             {
       
   616             iInfo = &aInfo;
       
   617             iData = &aData;
       
   618             }
       
   619 
       
   620     public:
       
   621 
       
   622         TDes8* iInfo; // Servicetype, Card Reader number, Application
       
   623                       // Type, Padding Byte
       
   624         TDes8* iData; // Transparent data
       
   625         };
       
   626 
       
   627     /**
       
   628      * TApduParameters 
       
   629      */
       
   630     class TApduParameters
       
   631         {
       
   632     public:
       
   633 
       
   634       TApduParameters()
       
   635             {
       
   636             iCardReaderId = 0;
       
   637             }
       
   638 
       
   639     public:  // Data
       
   640     	/** Card Reader ID */
       
   641         TUint8 iCardReaderId;
       
   642         /** Cmd Data */
       
   643         TApduBuffer iCmdData;
       
   644         /** RSP data */
       
   645         TApduBuffer iRspData;
       
   646         };
       
   647 
       
   648     /**
       
   649      * TSimCardReaderStatus
       
   650      */
       
   651     class TSimCardReaderStatus
       
   652         {
       
   653     public:
       
   654 
       
   655         /**
       
   656          * Default constructor
       
   657          */
       
   658         TSimCardReaderStatus() { iSimCardReaderStatus = 0; }
       
   659 
       
   660         /**
       
   661          * Constructor
       
   662          *
       
   663          * @param status Reader status
       
   664          * @return None
       
   665          */
       
   666         TSimCardReaderStatus( TUint8 aStatus )
       
   667             {
       
   668             iSimCardReaderStatus = aStatus;
       
   669             }
       
   670 
       
   671         /**
       
   672          * Set Card Status
       
   673          *
       
   674          * @param newStatus new reader status
       
   675          */
       
   676         IMPORT_C void SetStatus( TUint8 aNewStatus );
       
   677 
       
   678         /**
       
   679          * Get Card Status
       
   680          *
       
   681          * @return Reader status
       
   682          */
       
   683         IMPORT_C TUint8 GetStatus();
       
   684 
       
   685         /**
       
   686          * Get Card Reader ID.
       
   687          *
       
   688          * @return Reader ID
       
   689          */
       
   690         IMPORT_C TUint8 GetCardReaderID();
       
   691 
       
   692         /**
       
   693          * Is Card Reader Removable
       
   694          *
       
   695          * @return Is Card Reader Removable
       
   696          */
       
   697         IMPORT_C TBool IsCardReaderRemovable();
       
   698 
       
   699         /**
       
   700          * Is Card Reader Present
       
   701          *
       
   702          * @return Is Card Reader Present
       
   703          */
       
   704         IMPORT_C TBool IsCardReaderPresent();
       
   705 
       
   706         /**
       
   707          * Is Card Present
       
   708          *
       
   709          * @return Is Card Present
       
   710          */
       
   711         IMPORT_C TBool IsCardPresent();
       
   712 
       
   713         /**
       
   714          * Is Card Powered
       
   715          *
       
   716          * @return Is Card Powered
       
   717          */
       
   718         IMPORT_C TBool IsCardPowered();
       
   719         
       
   720     private:
       
   721     	TUint8 iSimCardReaderStatus; // Reader status
       
   722         };
       
   723 
       
   724     /** TLockNumber defines SIMLock types to be used */
       
   725     enum TLockNumber
       
   726         {
       
   727         /** Operator */
       
   728         EOperator = 1,
       
   729         /** GID1 */
       
   730         EGid1,
       
   731         /** GID2 */
       
   732         EGid2,
       
   733         /** IMSI */
       
   734         EImsi,
       
   735         /** Operator GID1 */
       
   736         EOperator_Gid1,
       
   737         /** Operator GID2 */
       
   738         EOperator_Gid2,
       
   739         /** Global unlock */
       
   740         EGlobalUnlock
       
   741         };
       
   742 
       
   743     /** Package buffer to hold TSimLockPassword objects */
       
   744     typedef TBuf<KSimLockMaxPasswordSize> TSimLockPassword;
       
   745 
       
   746     /** Constants for VIAG Home Zone data */
       
   747     enum TViagDataType
       
   748         {
       
   749         /** NBR size */
       
   750         KViagParamNbrSize = 15,
       
   751         /** Name size */
       
   752         KViagElemNameSize = 13,
       
   753         /** Element count */
       
   754         KViagElementCount = 4
       
   755         };
       
   756 
       
   757     /** VIAG parameter data structure */
       
   758     struct TViagParams
       
   759         {
       
   760         TBuf<KViagParamNbrSize> iSmsC;
       
   761         TBuf<KViagParamNbrSize> iScp;
       
   762         TUint8 iSubscribedZoneAndVersion;
       
   763         };
       
   764 
       
   765     /** Coordinates */
       
   766     struct TCoordinates
       
   767         {
       
   768         /** X */
       
   769         TUint32 iX;
       
   770         /** Y */
       
   771         TUint32 iY;
       
   772         /** R2 */
       
   773         TUint32 iR2;
       
   774         /** Zone ID */
       
   775         TUint iZoneId;
       
   776         };
       
   777 
       
   778     /** Active Flag values */
       
   779     enum TActiveFlag
       
   780         {
       
   781         /** Not active */
       
   782         ENotActive,
       
   783         /** Home Zone */
       
   784         EHomeZone,
       
   785         /** City Zone */
       
   786         ECityZone
       
   787         };
       
   788 
       
   789     /** VIAG Element data structure */
       
   790     struct TViagElement
       
   791         {
       
   792         /** Coordinates */
       
   793         TCoordinates iCoordinates;
       
   794         /** Name */
       
   795         TBuf<KViagElemNameSize> iName;
       
   796         /** Active flag */
       
   797         TActiveFlag iActiveFlag;
       
   798         };
       
   799 
       
   800     /** Array of TViagElement objects */
       
   801     typedef CArrayFixFlat <TViagElement> TViagElements;
       
   802 
       
   803     /** VIAG Cache Record ID data structure */
       
   804     struct TViagCacheRecordId
       
   805         {
       
   806         /** Cache ID */
       
   807         TInt iCacheId;
       
   808         /** Record ID */
       
   809         TInt iRecordId;
       
   810         };
       
   811 
       
   812     /** VIAG Cache Record Content data structure */ 
       
   813     struct TViagCacheRecordContent
       
   814         {
       
   815         /** LAC */
       
   816         TUint16 iLac;
       
   817         /** Cell ID */
       
   818         TUint16 iCellId;
       
   819         };
       
   820 
       
   821     /** VIAG UHZIUE settings data structure */
       
   822     struct TViagUHZIUESettings
       
   823         {
       
   824         /** Settings */
       
   825         TUint8 iSettings;
       
   826         /** Version */
       
   827         TUint8 iVersion;
       
   828         };
       
   829 
       
   830     /** Security code types */
       
   831     enum TSecurityCodeType
       
   832         {
       
   833         /** PIN1 code */
       
   834         ESecurityCodePin1,
       
   835         /** PIN2 code */
       
   836         ESecurityCodePin2,
       
   837         /** Universal PIN code */
       
   838         ESecurityUniversalPin,
       
   839         /** PUK1 code */
       
   840         ESecurityCodePuk1,
       
   841         /** PUK2 code */
       
   842         ESecurityCodePuk2,
       
   843         /** Phone SIM lock and phone device lock codes */
       
   844         ESecurityCodePassPhrase
       
   845         };
       
   846 
       
   847     /** Emergency number check modes */
       
   848     enum TCheckMode
       
   849         {
       
   850         /** Normal */
       
   851         EEmerNumberCheckNormal,
       
   852         /** Advanced */
       
   853         EEmerNumberCheckAdvanced
       
   854         };
       
   855 
       
   856     /** Caching status */
       
   857     enum TPndCacheStatus
       
   858         {
       
   859         /** Not ready */
       
   860         ECacheNotReady,
       
   861         /** Ready */
       
   862         ECacheReady,
       
   863         /** Not used */
       
   864         ECacheNotUsed,
       
   865         /** Failed */
       
   866         ECacheFailed
       
   867         };
       
   868 
       
   869     /** CB SIM Topics data type */
       
   870     struct TSimCbTopic
       
   871         {
       
   872         /** Number */
       
   873         TUint iNumber;
       
   874         /** Name */
       
   875         TBuf<KSimCbTopicNameLength> iName;
       
   876         };
       
   877 
       
   878     /** Buffer for telephone number */
       
   879     typedef TBuf<RMobilePhone::KMaxMobileTelNumberSize> TMobileTelNumber;
       
   880 
       
   881     /** Emergency number check mode data structure */
       
   882     struct TEmerNumberCheckMode
       
   883         {
       
   884         /** Check mode */
       
   885         TCheckMode iCheckMode;
       
   886         /** Telephone number */
       
   887         TMobileTelNumber iNumber;
       
   888         };
       
   889 
       
   890 	// Service availability on service table on USIM 		
       
   891 	struct TAppSupport
       
   892 		{
       
   893 		TInt iAppNum;	
       
   894 		TBool iSupported;
       
   895 		};
       
   896 
       
   897     public:
       
   898     	/** Default constructor */
       
   899         IMPORT_C RMmCustomAPI();
       
   900 
       
   901     public:
       
   902 
       
   903         /** DTMF Event types */
       
   904         enum TDtmfEventType
       
   905             {
       
   906             /** Manual */
       
   907             EDtmfManual,
       
   908             /** Sequence */
       
   909             EDtmfSequence
       
   910             };
       
   911 
       
   912         /** DTMF events */
       
   913         enum TDtmfEvent
       
   914             {
       
   915             /** Start */
       
   916             EDtmfStart,
       
   917             /** Stop */
       
   918             EDtmfStop,
       
   919             /** Abort */
       
   920             EDtmfAbort
       
   921             };
       
   922 
       
   923         /** DTMF information data structure */
       
   924         struct TDtmfInfo
       
   925             {
       
   926             /** Event type */
       
   927             TDtmfEventType iType;
       
   928             /** Event */
       
   929             TDtmfEvent iEvent;
       
   930             /** Tone */
       
   931             TChar iTone;
       
   932             };
       
   933 
       
   934         /** ALS block status values */
       
   935         enum TSetAlsBlock
       
   936             {
       
   937             /** Deactivate */
       
   938             EDeactivateBlock,
       
   939             /** Activate */
       
   940             EActivateBlock
       
   941             };
       
   942 
       
   943         /** Always On modes */
       
   944         enum TSetAlwaysOnMode
       
   945             {
       
   946             /** HPLMN */
       
   947             EAlwaysModeHPLMN,
       
   948             /** VPLMN */
       
   949             EAlwaysModeVPLMN,
       
   950             /** Both modes (HPLMN/VPLMN) */
       
   951             EAlwaysModeBoth,
       
   952             /** Neither mode */
       
   953             EAlwaysModeNeither
       
   954             };
       
   955 
       
   956         /** RAU event status values */
       
   957         enum TRauEventStatus
       
   958             {
       
   959             /** Active */
       
   960             ERauEventActive,
       
   961             /** Resumed */
       
   962             ERauEventResumed,
       
   963             };
       
   964 
       
   965         /** ALS block status values */
       
   966         enum TGetAlsBlockStatus
       
   967             {
       
   968             /** Not supported */
       
   969             EBlockStatusNotSupported,
       
   970             /** Active */
       
   971             EBlockStatusActive,
       
   972             /** Inactive */
       
   973             EBlockStatusInactive,
       
   974             /** Unknown */
       
   975             EBlockStatusUnknown
       
   976             };
       
   977 
       
   978         /** ALS Support values */
       
   979         enum TAlsSupport
       
   980             {
       
   981             /** ALS Support is On */
       
   982             EAlsSupportOn,
       
   983             /** ALS Support if Off */
       
   984             EAlsSupportOff
       
   985             };
       
   986 
       
   987         /** Remote alerting tone status */
       
   988         enum TRemoteAlertingToneStatus
       
   989             {
       
   990             /** No Tone */
       
   991             EUiNoTone,
       
   992             /** RBT Tone */
       
   993             EUiRbtTone,
       
   994             /** Stop Tone */
       
   995             EUiStopTone
       
   996             };
       
   997 
       
   998         /** Origin of the call */
       
   999         enum TCallOrigin
       
  1000             {
       
  1001             /** Unknown */
       
  1002             EUnknown,
       
  1003             /** ETel call */
       
  1004             EETelCall,
       
  1005             /** Outside */
       
  1006             EOutsider
       
  1007             };
       
  1008 
       
  1009         /** Status of the No Service Power Save state */
       
  1010         enum TNspsStatus
       
  1011             {
       
  1012             /** No Service Power Save is ON */
       
  1013             ENspsOn,
       
  1014             /** No Service Power Save is OFF */
       
  1015             ENspsOff
       
  1016             };
       
  1017 
       
  1018         /** Ciphering Information data structure */
       
  1019         struct TCipheringInfo
       
  1020             {
       
  1021             /** ciphering Indicator status */
       
  1022             TBool   iIndStatus;
       
  1023             /** ciphering status */
       
  1024             TBool   iCiphStatus;
       
  1025             };
       
  1026 
       
  1027         /** Additional info size */
       
  1028         enum { KAdditionalInfoSize = 255 };
       
  1029 
       
  1030         /** Additional information data structure */
       
  1031         struct TSsAdditionalInfo
       
  1032             {
       
  1033             /** Operation code */
       
  1034             TUint8 iOperationCode;
       
  1035             /** Additional information */
       
  1036             TBuf8<KAdditionalInfoSize> iAdditionalInfo;
       
  1037             };
       
  1038 
       
  1039         /** Operator name types */
       
  1040         enum TOperatorNameType
       
  1041             {
       
  1042             /** NITZ Full */
       
  1043             EOperatorNameNitzFull,
       
  1044             /** NITZ Short */
       
  1045             EOperatorNameNitzShort,
       
  1046             /** Programmable UCS2 */
       
  1047             EOperatorNameProgrammableUcs2,
       
  1048             /** Programmable Latin */
       
  1049             EOperatorNameProgrammableLatin,
       
  1050             /** Hardcoded UCS2 */
       
  1051             EOperatorNameHardcodedUcs2,
       
  1052             /** Hardcoded Latin */
       
  1053             EOperatorNameHardcodedLatin,
       
  1054             /** Country MNC */
       
  1055             EOperatorNameCountryMcn,
       
  1056             /** MCC MNC */
       
  1057             EOperatorNameMccMnc,
       
  1058             /** Flexible PLMN */
       
  1059             EOperatorNameFlexiblePlmn,
       
  1060             /** Highest Priority */
       
  1061             EOperatorNameHighestPriority
       
  1062             };
       
  1063 
       
  1064         /** Operator name info structure */
       
  1065         struct TOperatorNameInfo
       
  1066             {
       
  1067             /** Name type */
       
  1068             TOperatorNameType iType;
       
  1069             /** Name */
       
  1070             TBuf<KMaxOperatorNameLength> iName;
       
  1071             };
       
  1072 
       
  1073         /** Programmable operator Id */
       
  1074         struct TOperatorId
       
  1075             {
       
  1076             /** MCC */
       
  1077             TInt iMcc;
       
  1078             /** MNC */
       
  1079             TInt iMnc;
       
  1080             };
       
  1081 
       
  1082         /** Programmable operator logo depth */
       
  1083         enum TProgrammableOperatorLogoDepth
       
  1084             {
       
  1085             /** 1 bit per pixel */
       
  1086             EBitPerPixel1,
       
  1087             /** 2 bits per pixel */
       
  1088             EBitPerPixel2,
       
  1089             /** 4 bits per pixel */
       
  1090             EBitPerPixel4,
       
  1091             /** 8 bits per pixel */
       
  1092             EBitPerPixel8
       
  1093             };
       
  1094 
       
  1095         /** Programmable operator logo info */
       
  1096         struct TProgrammableOperatorLogoInfo
       
  1097             {
       
  1098             /** Operator logo width */
       
  1099             TInt iLogoWidth;
       
  1100             /** Operator logo height */
       
  1101             TInt iLogoHeight;
       
  1102             /** Compression (yes/no) */
       
  1103             TBool iCompression;
       
  1104             /** Operator logo depth (bits per pixel) */
       
  1105             TProgrammableOperatorLogoDepth iDepth;
       
  1106             };
       
  1107 
       
  1108         /** Programmable operator logo structure */
       
  1109         struct TOperatorLogo
       
  1110             {
       
  1111             /** Operator logo information */
       
  1112             TProgrammableOperatorLogoInfo iLogoInfo;
       
  1113             /** Operator logo buffer */
       
  1114             TDes8* iOperatorLogo;
       
  1115             };
       
  1116 
       
  1117         /** Two Digit Dial Support values */
       
  1118         enum TTwoDigitDialSupport
       
  1119             {
       
  1120             /** On */
       
  1121             ETwoDigitDialSupportOn,
       
  1122             /** Off */
       
  1123             ETwoDigitDialSupportOff
       
  1124             };
       
  1125 
       
  1126         /** Custom call parameter class for calling party subaddress delivering */
       
  1127         class TCustomCallParams : public RMobileCall::TMobileCallParamsV2
       
  1128             {
       
  1129         public:
       
  1130         	/** Default constructor */
       
  1131             IMPORT_C TCustomCallParams();
       
  1132 
       
  1133         public:
       
  1134 
       
  1135         	/** SubAddress */
       
  1136             TBuf<KSubAddressSize> iSubAddress;
       
  1137             /** Bearer */
       
  1138             TBuf8<KBearerCapabilitySize> iBearer;
       
  1139             };
       
  1140 
       
  1141         /** Package buffer for TCustomCallParams objects */
       
  1142         typedef TPckg<TCustomCallParams> TCustomCallParamsPckg;
       
  1143 
       
  1144         /** Type of SS */
       
  1145         enum TSsType
       
  1146             {
       
  1147             ESsAllSs = 0,
       
  1148             ESsAllForwardings = 2,
       
  1149             ESsForwUncond = 21,
       
  1150             ESsForwBusy = 67,
       
  1151             ESsForwNoReply = 61,
       
  1152             ESsForwNoReach = 62,
       
  1153             ESsAllBarrings = 330,
       
  1154             ESsBarrAllOut = 33,
       
  1155             ESsBarrOutInter = 331,
       
  1156             ESsBarrOutInterExcHome = 332,
       
  1157             ESsBarrAllIn = 35,
       
  1158             ESsBarrAllInRoam = 351,
       
  1159             ESsOutgoingBarrServ = 333,
       
  1160             ESsIncomingBarrServ = 353,
       
  1161             ESsCallWaiting = 43,
       
  1162             ESsClip = 30,
       
  1163             ESsClir = 31,
       
  1164             ESsColp = 76,
       
  1165             ESsColr = 77,
       
  1166             ESsCnap = 300,
       
  1167             ESsAllCondForwardings = 4,
       
  1168             ESsRegPassword = 3
       
  1169             };
       
  1170 
       
  1171         /** State of the SS feature */
       
  1172         enum TSsMode
       
  1173             {
       
  1174             /** Active */
       
  1175             ESsModeActive,
       
  1176             /** Not active */
       
  1177             ESsModeNotActive,
       
  1178             /** Not registered */
       
  1179             ESsModeNotRegistered,
       
  1180             /** Not provisioned */
       
  1181             ESsModeNotProvisioned,
       
  1182             /** Not available */
       
  1183             ESsModeNotAvailable,
       
  1184             /** Unknown state */
       
  1185             ESsModeUnknown
       
  1186             };
       
  1187 
       
  1188         /** Forwarding mode */
       
  1189         enum TSsForwMode
       
  1190             {
       
  1191             /** Incoming call is forwarded */
       
  1192             ESsIncCallIsForw,
       
  1193             ESsIncCallForwToC,
       
  1194             ESsOutCallForwToC,
       
  1195             /** Not Active */
       
  1196             EForwNotActive
       
  1197             };
       
  1198 
       
  1199         /** Hold mode */
       
  1200         enum TSsHoldMode
       
  1201             {
       
  1202             /** Active */
       
  1203             ESsHoldActive,
       
  1204             /** Resume */
       
  1205             ESsHoldResume,
       
  1206             /** Not active */
       
  1207             ESsHoldNotActive
       
  1208             };
       
  1209 
       
  1210         /** Explicit call transfer (ECT) state */
       
  1211         enum TSsEctState
       
  1212             {
       
  1213             /** ECT active */
       
  1214             ESsEctActive,
       
  1215             /** ECT alerting */
       
  1216             ESsEctAlerting,
       
  1217             /** ECT not active */
       
  1218             ESsEctNotActive
       
  1219             };
       
  1220 
       
  1221         /** Call Name Presentation choice */
       
  1222         enum TSsChoice
       
  1223             {
       
  1224             /** Presentation allowed */
       
  1225             ESsPresAllowed,
       
  1226             /** Presentation restricted */
       
  1227             ESsPresRestricted,
       
  1228             /** Number not available */
       
  1229             ESsNumberNotAvailable,
       
  1230             /** Restricted address */
       
  1231             ESsPresRestrictedAddress,
       
  1232             /** Choice unknown */
       
  1233             ESsChoiceUnknown
       
  1234             };
       
  1235 
       
  1236         /** Remote Address Size */
       
  1237         enum
       
  1238         	{ 
       
  1239             /** Remote Address Size */
       
  1240         	KRemoteAddressSize = 64 
       
  1241         	};
       
  1242 
       
  1243         /** SS type and mode */
       
  1244         struct TSsTypeAndMode
       
  1245             {
       
  1246             /** SS Type */
       
  1247             TSsType iSsType;
       
  1248             /** SS Mode */
       
  1249             TSsMode iSsMode;
       
  1250             };
       
  1251 
       
  1252         /** SS info */
       
  1253         struct TSsInfo
       
  1254             {
       
  1255             /** Forwarding mode */
       
  1256             TSsForwMode iForwMode;
       
  1257             TBool iCallWait;
       
  1258             /** Hold mode */
       
  1259             TSsHoldMode iCallHold;
       
  1260             TBool iConfInd;
       
  1261             /** CUG index */
       
  1262             TUint16 iCugIndex;
       
  1263             TBool iClirSuppReject;
       
  1264             /** Explicit call transfer state */
       
  1265             TSsEctState iEctCallState;
       
  1266             /** Call name presentation choice */
       
  1267             TSsChoice iChoice;
       
  1268             /** Remote address */
       
  1269             TBuf<KRemoteAddressSize> iRemoteAddress;
       
  1270             };
       
  1271 
       
  1272         /** Gprs type info */
       
  1273         enum TGprsInformationType
       
  1274             {
       
  1275             /** GPRS */
       
  1276             EGprs = 0,
       
  1277             /** EDGE GPRS */
       
  1278             EEdgeGprs = 1
       
  1279             };
       
  1280 
       
  1281         /** System network mode */
       
  1282         enum TNetworkModeCaps
       
  1283             {
       
  1284             /** Unknown mode */
       
  1285             KCapsNetworkModeUnknown = 0x00,
       
  1286             /** GSM mode */
       
  1287             KCapsNetworkModeGsm = 0x01,
       
  1288             /** UMTS mode */
       
  1289             KCapsNetworkModeUmts = 0x02,
       
  1290             /** Dual mode (GPRS/UMTS) */
       
  1291             KCapsNetworkModeDual = 0x04
       
  1292             };
       
  1293 
       
  1294         /** Band Selection */
       
  1295         enum TBandSelection
       
  1296             {
       
  1297             /** UMTS 850 */
       
  1298             ENetworkBandUmts850 = 0x01,
       
  1299             /** UMTS 2100 */
       
  1300 	        ENetworkBandUmts2100 = 0x02,
       
  1301 	        /** Any band */
       
  1302 	        ENetworkBandAny = 0x03
       
  1303 	        };
       
  1304         
       
  1305 	    /** SIM Card status */
       
  1306         enum TSIMCardStatus
       
  1307             {
       
  1308             /** Error */
       
  1309             SimCardUnknowError = 0x00,
       
  1310             /** Reset */
       
  1311             SimCardResetPerformed,
       
  1312             /** Not Accessible */
       
  1313             SimCardNotAccessible,
       
  1314             /** Removed */
       
  1315             SimCardRemoved,
       
  1316             /** Inserted */
       
  1317             SimCardInserted,
       
  1318             /** Recovered */
       
  1319             SimCardRecovered
       
  1320             };
       
  1321 
       
  1322         /** Drive mode status */
       
  1323         enum TSetDriveMode
       
  1324             {
       
  1325             /** Drive Mode active */
       
  1326             EDeactivateDriveMode,
       
  1327             /** Drive Mode inactive */
       
  1328             EActivateDriveMode
       
  1329             };
       
  1330 
       
  1331         /** High speed channel status */
       
  1332         enum THSxPAStatus
       
  1333             {
       
  1334             /** Disabled HSxPA */
       
  1335             EHSxPADisabled,
       
  1336             /** Enabled HSxPA */
       
  1337             EHSxPAEnabled
       
  1338             };
       
  1339 
       
  1340         /** Class to hold information about the EGPRS support in cell */
       
  1341         class TGprsInformation
       
  1342             {
       
  1343         public:
       
  1344         	/** Default constructor **/
       
  1345             IMPORT_C TGprsInformation();
       
  1346 
       
  1347         public:
       
  1348         	/** Type of GPRS network (GPRS or EDGE/GPRS)*/
       
  1349             TGprsInformationType iGprsInfo;
       
  1350             };
       
  1351 
       
  1352         /** Package buffer for TGprsInformation objects */
       
  1353         typedef TPckg<TGprsInformation> TGprsInformationPckg;
       
  1354 
       
  1355         /** Package buffer for SIM File paths */
       
  1356         typedef TBuf8<KSimFilePathLength> TSimFilePath;
       
  1357 
       
  1358         /** Holds SIM File Information */
       
  1359         class TSimFileInfo
       
  1360             {
       
  1361         public:
       
  1362         	/** Default constructor */
       
  1363             IMPORT_C TSimFileInfo();
       
  1364 
       
  1365         public:
       
  1366         	/** File path in SIM where file is read */
       
  1367             TSimFilePath iPath;
       
  1368             /** Offset from beginning of the file */
       
  1369             TUint16 iOffSet;
       
  1370             /** Amount of data to read */
       
  1371             TUint16 iSize;
       
  1372             };
       
  1373 
       
  1374         /** Package buffer for TSimFileInfo objects */
       
  1375         typedef TPckg<TSimFileInfo> TSimFileInfoPckg;
       
  1376 
       
  1377         /** Holds lifetime information */
       
  1378         class TLifeTimeData
       
  1379             {
       
  1380         public: // definitions
       
  1381 
       
  1382         	/** Lifetime data capability values */
       
  1383             enum TLifeTimeDataCaps
       
  1384                 {
       
  1385                 /** Unknown */
       
  1386                 ELifeTimeDataCapsUnknown = 0x00000000,
       
  1387                 /** Lifetime */
       
  1388                 ELifeTimeDataCapsLifeTime = 0x00000001,
       
  1389                 /** Manufacturer Date */
       
  1390                 ELifeTimeDataCapsManufacturerDate = 0x00000002
       
  1391                 };
       
  1392 
       
  1393         public: // methods
       
  1394         		
       
  1395         	/** Default constructor */
       
  1396             IMPORT_C TLifeTimeData();
       
  1397 
       
  1398         public: // internal attributes
       
  1399         	/** Capabilities */
       
  1400             TUint32 iCaps;
       
  1401             /** Hours (range 0-999999) */
       
  1402             TUint32 iHours;
       
  1403             /** Minutes (range 0-59) */
       
  1404             TUint8 iMinutes;
       
  1405             /** Manufacturing date */
       
  1406             TDateTime iManufacturingDate;
       
  1407             };
       
  1408 
       
  1409         /** Package buffer for TLifeTimeData objects */
       
  1410         typedef  TPckg<TLifeTimeData> TLifeTimeDataPckg;
       
  1411 
       
  1412         /** 3G Phonebook Information */
       
  1413         struct T3GPBInfo
       
  1414             {
       
  1415             /** Max length of email */
       
  1416             TInt16 iMaxLenEmail;
       
  1417             /** Max length of Second Name */
       
  1418             TInt16 iMaxLenSne;
       
  1419             /** Max length of Additional Number */
       
  1420             TInt16 iMaxLenAnr;
       
  1421             /* Max length of Group Name */
       
  1422             TInt16 iMaxLenGroupName;
       
  1423             /* Max number of email fileds per entry */
       
  1424             TInt8 iMaxNumEmail;
       
  1425             /* Max number of Second Name fields per entry */
       
  1426             TInt8 iMaxNumSne;
       
  1427             /* Max number of Group Name fields per entry */
       
  1428             TInt8 iMaxNumGroupName;
       
  1429             // Max number of Additional Number fields per entry
       
  1430             TInt8 iMaxNumAnr;
       
  1431          };
       
  1432 
       
  1433         /** Cell Information */
       
  1434         class TMmCellInfo
       
  1435             {
       
  1436             public: // definitions
       
  1437 
       
  1438             	/** Network modes */
       
  1439                 enum TNwMode
       
  1440                     {
       
  1441                     /** Unknown */
       
  1442                     EUnknown,
       
  1443                     /** GSM */
       
  1444                     EGSM,
       
  1445                     /** WCDMA */
       
  1446                     EWCDMA
       
  1447                     };
       
  1448 
       
  1449         /** WCDMA cell info */
       
  1450         struct TFrequencyInfo
       
  1451             {
       
  1452             /** FDD: 0..16383 O */
       
  1453             TInt iFddUL;
       
  1454             /** FDD: 0..16383 M */
       
  1455             TInt iFddDL;
       
  1456             /** TDD: 0..16383 */
       
  1457             TInt iTddNt;
       
  1458             };
       
  1459 
       
  1460         /** FDD Information */
       
  1461         struct TFddInfo
       
  1462             {
       
  1463             /** Primary CPICH (0..511) */
       
  1464             TInt16 iPrimaryCPICH;
       
  1465             /** CPICH ECN0 (0..63), max=49 */
       
  1466             TInt8 iCpichEcN0;
       
  1467             /** CPICH RSCP ((0..127), max=91 */
       
  1468             TInt8 iCpichRscp;
       
  1469             /** Path Loss (46..173), max=158 */
       
  1470             TInt iPathloss;
       
  1471             };
       
  1472 
       
  1473         /** TDD Information */
       
  1474         struct TTddInfo
       
  1475             {
       
  1476             /** Cell Param ID (0..127) */
       
  1477             TInt8 iCellParamID;
       
  1478             /** Proposed TGSN (0..14) */
       
  1479             TInt8 iProposedTGSN;
       
  1480             /** Primary CCPCH RSCP (0..127) */
       
  1481             TInt8 iPrimaryCcpchRscp;
       
  1482             /** Pathloss (46..173), max=158 */
       
  1483             TInt iPathloss;
       
  1484             /** Timeslot ISCP (0..127), max.91 */
       
  1485             TInt8 iTimeslotISCP[ KMaxTimeSlotIscpAmount ];
       
  1486             };
       
  1487 
       
  1488         /** Cell Measured Result */
       
  1489         struct TCellMeasuredResult
       
  1490             {
       
  1491             /** Cell Identity (0..268435455) */
       
  1492             TInt32 iCID;
       
  1493             /** FDD Information */
       
  1494             TFddInfo iFddInfo;
       
  1495             /** TDD Information */
       
  1496             TTddInfo iTddInfo;
       
  1497             };
       
  1498 
       
  1499         /** Network Measure Report */
       
  1500         struct TNetworkMeasureReport
       
  1501             {
       
  1502             /** Frequency Information */
       
  1503             TFrequencyInfo iFrequencyInfo;
       
  1504             /** UTRA-CarrierRSSI (0..127), max=76 */
       
  1505             TInt8 iCarrierRSSI;
       
  1506             /** Cell measured result (1..32) */
       
  1507             TCellMeasuredResult iCellMeasuredResult[
       
  1508                 KMaxCellMeasuredResults ];
       
  1509             };
       
  1510 
       
  1511         /** WCDMA Cell Information */
       
  1512         struct TWCDMACellInfo
       
  1513             {
       
  1514             /** Frequency information for current cell */
       
  1515             TFrequencyInfo iFrequencyInfo;
       
  1516             /** Scrambling Code for current cell (0..511) */
       
  1517             TInt iPrimaryScrambilingCode;
       
  1518             /** Network measure report (1..8) */
       
  1519             TNetworkMeasureReport iNwkMeasureReport[
       
  1520                 KMaxNetworkMeasureReports ];
       
  1521             };
       
  1522 
       
  1523         /** NMR Information */
       
  1524         struct TNmr
       
  1525             {
       
  1526             /** ARFCN (initialised -1) */
       
  1527             TInt iARFCN;
       
  1528             /** BSIC (initialised -1) */
       
  1529             TInt iBSIC;
       
  1530             /** RxLEV (initialised -1) */
       
  1531             TInt iRxLEV;
       
  1532             };
       
  1533 
       
  1534         /** GSM cell information */
       
  1535         struct TGSMCellInfo
       
  1536             {
       
  1537             /** NMR information on the cell */
       
  1538             TNmr iNmr[ KMaxNmrAmount ];
       
  1539             /** Timing advance (0.255) */
       
  1540             TInt16 iTA;
       
  1541             };
       
  1542 
       
  1543             public: //Methods
       
  1544 
       
  1545                 /** Default constructor */
       
  1546                 IMPORT_C TMmCellInfo();
       
  1547 
       
  1548             public:  // Data
       
  1549 
       
  1550                /**
       
  1551                 * Network mode
       
  1552                 */
       
  1553                 TNwMode iMode; // used for identifying mode.
       
  1554 
       
  1555                /**
       
  1556                 * GSM cell info
       
  1557                 */
       
  1558                 TGSMCellInfo iGsmCellInfo;
       
  1559 
       
  1560                /**
       
  1561                 * WCDMA cell info
       
  1562                 */
       
  1563                 TWCDMACellInfo iWcdmaCellInfo;
       
  1564             };
       
  1565 
       
  1566         /** Package buffer to hold TMmCellInfo objects */
       
  1567 		typedef TPckg<TMmCellInfo> TMmCellInfoPckg;
       
  1568 
       
  1569         public: // New functions
       
  1570 
       
  1571        /**
       
  1572         * Opens a subsession.
       
  1573         * @param aPhone reference to a Mobile Phone object
       
  1574         * @return KErrNone if successful
       
  1575         */
       
  1576         IMPORT_C TInt Open(RMobilePhone& aPhone);
       
  1577 
       
  1578         /**
       
  1579          * Closes the subsession.
       
  1580          *
       
  1581          */
       
  1582         IMPORT_C void Close();
       
  1583 
       
  1584         /**
       
  1585          * Sets Drive Mode status using the aModeStatus variable
       
  1586          *
       
  1587          * @param aStatus Request status
       
  1588          * @param aModeStatus Drive mode status
       
  1589          */
       
  1590         IMPORT_C void SetDriveMode( TRequestStatus& aStatus,
       
  1591             const TSetDriveMode aModeStatus );
       
  1592 
       
  1593         /**
       
  1594          * Activate SIMLock synchronously
       
  1595          *
       
  1596          * @param aPassWord Lock specific password used to activate the SIMLock
       
  1597          * @param aNumber Number of lock to be activated
       
  1598          * @return Error value
       
  1599          */
       
  1600         IMPORT_C TInt ActivateSimLock( const TSimLockPassword& aPassWord,
       
  1601             const TLockNumber aNumber ) const;
       
  1602 
       
  1603         /**
       
  1604          * Activate SIMLock asynchronously
       
  1605          *
       
  1606          * @param aStatus Request status
       
  1607          * @param aPassWord Lock specific password used to activate the SIMLock
       
  1608          * @param aNumber Number of lock to be activated
       
  1609          */
       
  1610         IMPORT_C void ActivateSimLock( TRequestStatus& aStatus,
       
  1611             const TSimLockPassword& aPassWord,
       
  1612             const TLockNumber aNumber ) const;
       
  1613 
       
  1614         /**
       
  1615          * Deactivate SIMLock synchronously
       
  1616          *
       
  1617          * @param aPassWord Lock specific password used to
       
  1618          *        Deactivate the SIMLock
       
  1619          * @param aNumber Number of lock to be activated
       
  1620          * @return Error value
       
  1621          */
       
  1622         IMPORT_C TInt DeActivateSimLock( const TSimLockPassword& aPassWord,
       
  1623             const TLockNumber aNumber ) const;
       
  1624 
       
  1625         /**
       
  1626          * Deactivate SIMLock asynchronously
       
  1627          *
       
  1628          * @param aStatus Request status
       
  1629          * @param aPassWord Lock specific password used
       
  1630          *        to Deactivate the SIMLock
       
  1631          * @param aNumber Number of lock to be activated
       
  1632          */
       
  1633         IMPORT_C void DeActivateSimLock( TRequestStatus& aStatus,
       
  1634             const TSimLockPassword& aPassWord,
       
  1635             const TLockNumber aNumber ) const;
       
  1636 
       
  1637         /**
       
  1638          * Read VIAG Parameters synchronously
       
  1639          *
       
  1640          * @param aParam VIAG Home Zone Pararmeters
       
  1641          * @param aElems VIAG Home Zone Elements
       
  1642          * @return Error value
       
  1643          */
       
  1644         IMPORT_C TInt ReadViagHomeZoneParams( TViagParams& aParam,
       
  1645             TViagElements& aElems ) const;
       
  1646 
       
  1647         /**
       
  1648          * Read VIAG Parameters asynchronously
       
  1649          *
       
  1650          * @param aStatus Request status KErrNone if successful
       
  1651          * @param aParam: VIAG Home Zone Pararmeters
       
  1652          * @param aElems: VIAG Home Zone Elements
       
  1653          */
       
  1654         IMPORT_C void ReadViagHomeZoneParams( TRequestStatus& aStatus,
       
  1655             TViagParams& aParam,
       
  1656             TViagElements& aElems );
       
  1657 
       
  1658         /**
       
  1659          * Read VIAG Cache asynchronously
       
  1660          *
       
  1661          * @param aId VIAG Home Zone Record Id to read from
       
  1662          * @param aElems VIAG Home Zone Reacord Content
       
  1663          * @return Error value
       
  1664          */
       
  1665         IMPORT_C TInt ReadViagHomeZoneCache( TViagCacheRecordId& aId,
       
  1666             TViagCacheRecordContent& aRecord ) const;
       
  1667 
       
  1668         /**
       
  1669          * Read VIAG Cache asynchronously
       
  1670          *
       
  1671          * @param aStatus Request status KErrNone if successful
       
  1672          * @param aId VIAG Home Zone Record Id to read from
       
  1673          * @param aElems VIAG Home Zone Reacord Content
       
  1674          */
       
  1675         IMPORT_C void ReadViagHomeZoneCache( TRequestStatus& aStatus,
       
  1676             TViagCacheRecordId& aId,
       
  1677             TViagCacheRecordContent& aRecord );
       
  1678 
       
  1679         /**
       
  1680          * Write VIAG Cache asynchronously
       
  1681          *
       
  1682          * @param aId VIAG Home Zone Record Id to write to
       
  1683          * @param aElems VIAG Home Zone Reacord Content
       
  1684          * @return Error value
       
  1685          */
       
  1686         IMPORT_C TInt WriteViagHomeZoneCache( const TViagCacheRecordId& aId,
       
  1687             const TViagCacheRecordContent& aRecord ) const;
       
  1688 
       
  1689 
       
  1690         /**
       
  1691         * Set the "always on" mode
       
  1692         *
       
  1693         * @param aMode Desired "always on" mode
       
  1694         */
       
  1695         IMPORT_C void SetAlwaysOn( TRequestStatus& aStatus,
       
  1696                 TSetAlwaysOnMode& aMode ) const;
       
  1697 
       
  1698         /**
       
  1699         * Request notification of RAU event
       
  1700         * @param aStatus reuquest status
       
  1701         * @param aEventStatus RAU event status
       
  1702         */
       
  1703         IMPORT_C void NotifyRauEvent( TRequestStatus& aStatus,
       
  1704                 TRauEventStatus& aEventStatus );
       
  1705 
       
  1706         /**
       
  1707          * Write VIAG Cache asynchronously
       
  1708          *
       
  1709          * @param aStatus: Request status KErrNone if successful
       
  1710          * @param aId VIAG Home Zone Record Id to write to
       
  1711          * @param aElems VIAG Home Zone Reacord Content
       
  1712          */
       
  1713         IMPORT_C void WriteViagHomeZoneCache( TRequestStatus& aStatus,
       
  1714             const TViagCacheRecordId& aId,
       
  1715             const TViagCacheRecordContent& aRecord );
       
  1716 
       
  1717         /**
       
  1718          * Notify a DTMF event
       
  1719          *
       
  1720          * @param aStatus Request status
       
  1721          * @param aInfo DTMF Info
       
  1722          */
       
  1723         IMPORT_C void NotifyDtmfEvent( TRequestStatus& aStatus,
       
  1724             TDtmfInfo& aInfo );
       
  1725 
       
  1726         /**
       
  1727          * Return diagnostics info
       
  1728          *
       
  1729          * @param aCallName call name
       
  1730          * @return Error value
       
  1731          */
       
  1732         IMPORT_C TInt GetDiagnosticInfo( TName& aCallName ) const;
       
  1733 
       
  1734         /**
       
  1735          * Sets the alternating line service block status using the
       
  1736          * aBlockStatus variable
       
  1737          *
       
  1738          * @param aBlockStatus als block status
       
  1739          * @return Error value
       
  1740          */
       
  1741         IMPORT_C TInt SetAlsBlocked( const TSetAlsBlock aBlockStatus ) const;
       
  1742 
       
  1743         /**
       
  1744          * Sets the alternating line service block status using the aBlockStatus
       
  1745          * variable
       
  1746          *
       
  1747          * @param aStatus Request status
       
  1748          * @param aBlockStatus als block status
       
  1749          */
       
  1750         IMPORT_C void SetAlsBlocked( TRequestStatus& aStatus,
       
  1751             const TSetAlsBlock aBlockStatus );
       
  1752 
       
  1753         /**
       
  1754          * Gets the alternating line service block status
       
  1755          *
       
  1756          * @param aBlockStatus als block status
       
  1757          * @return Error value
       
  1758          */
       
  1759         IMPORT_C TInt GetAlsBlocked( TGetAlsBlockStatus& aBlockStatus ) const;
       
  1760 
       
  1761         /**
       
  1762          * Gets the alternating line service block status
       
  1763          *
       
  1764          * @param aStatus Request status
       
  1765          * @param aBlockStatus als block status
       
  1766          */
       
  1767         IMPORT_C void GetAlsBlocked( TRequestStatus& aStatus,
       
  1768             TGetAlsBlockStatus& aBlockStatus );
       
  1769 
       
  1770         /**
       
  1771          * Reads the remote alerting tone status
       
  1772          *
       
  1773          * @param aToneStatus alerting tone status
       
  1774          * @return Error value
       
  1775          */
       
  1776         IMPORT_C TInt GetRemoteAlertingToneStatus(
       
  1777             TRemoteAlertingToneStatus& aToneStatus ) const;
       
  1778 
       
  1779         /**
       
  1780          * Returns the origin of the call, defined by aCallName parameter
       
  1781          *
       
  1782          * @param aCallName call name
       
  1783          * @param aOrigin call origin
       
  1784          * @return Error value
       
  1785          */
       
  1786         IMPORT_C TInt CallOrigin( TName& aCallName,
       
  1787             TCallOrigin& aOrigin ) const;
       
  1788 
       
  1789         /**
       
  1790          * Terminates a call synchronously
       
  1791          *
       
  1792          * @param aCallName call name
       
  1793          * @return Error value
       
  1794          */
       
  1795         IMPORT_C TInt TerminateCall( TName& aCallName ) const;
       
  1796 
       
  1797         /**
       
  1798          * Terminates a call asynchronously
       
  1799          *
       
  1800          * @param aStatus Request status
       
  1801          * @param aCallName call name
       
  1802          */
       
  1803         IMPORT_C void TerminateCall( TRequestStatus& aStatus,
       
  1804             TName& aCallName );
       
  1805 
       
  1806         /**
       
  1807          * Notifies a client of changed Als blocked status
       
  1808          *
       
  1809          * @param aStatus Request status
       
  1810          * @param aBlockStatus ALS block status
       
  1811          */
       
  1812         IMPORT_C void NotifyAlsBlockedChanged( TRequestStatus& aStatus,
       
  1813             TGetAlsBlockStatus& aBlockStatus );
       
  1814 
       
  1815         /**
       
  1816          * Gets the ciphering information synchronously
       
  1817          *
       
  1818          * @param aInfo: Ciphering information
       
  1819          * @return Error value
       
  1820          */
       
  1821         IMPORT_C TInt GetCipheringInfo( TCipheringInfo& aInfo );
       
  1822 
       
  1823         /**
       
  1824          * Gets the ciphering info asynchronously
       
  1825          *
       
  1826          * @param aStatus Request status
       
  1827          * @param aInfo Ciphering information
       
  1828          */
       
  1829         IMPORT_C void GetCipheringInfo( TRequestStatus& aStatus,
       
  1830             TCipheringInfo& aInfo );
       
  1831 
       
  1832         /**
       
  1833          * This function notifies a client of ciphering info change
       
  1834          *
       
  1835          * @param aStatus Request status
       
  1836          * @param aInfo Ciphering information
       
  1837          */
       
  1838         IMPORT_C void NotifyCipheringInfoChange( TRequestStatus& aStatus,
       
  1839             TCipheringInfo& aInfo );
       
  1840 
       
  1841         /**
       
  1842          * Notifies a client of a change in NSPS (No Service Power Save)
       
  1843          *
       
  1844          * @param aStatus Request status
       
  1845          * @param aNspsStatus status of the NSPS (on/off)
       
  1846          */
       
  1847         IMPORT_C void NotifyNSPSStatus( TRequestStatus& aStatus,
       
  1848             TNspsStatus& aNspsStatus );
       
  1849 
       
  1850         /**
       
  1851          * This function wake ups the net server from the NSPS state
       
  1852          *
       
  1853          * @param aStatus Request status
       
  1854          */
       
  1855         IMPORT_C void NetWakeup( TRequestStatus& aStatus );
       
  1856 
       
  1857         /**
       
  1858          * Checks the status of the ALS in the product profile synchronously
       
  1859          *
       
  1860          * @param aSupport Als support Status
       
  1861          * @return Error value
       
  1862          */
       
  1863         IMPORT_C TInt CheckAlsPpSupport( TAlsSupport& aSupport ) const;
       
  1864 
       
  1865         /**
       
  1866          * Checks the status of the ALS in the product profile asynchronously
       
  1867          *
       
  1868          * @param aStatus Request status
       
  1869          * @param aSupport Als support Status
       
  1870          */
       
  1871         IMPORT_C void CheckAlsPpSupport( TRequestStatus& aStatus,
       
  1872             TAlsSupport& aSupport );
       
  1873 
       
  1874         /**
       
  1875          * Gets network provider name synchronously
       
  1876          *
       
  1877          * @param aNetworkProviderName Network provider name
       
  1878          * @return Error value
       
  1879          */
       
  1880         IMPORT_C TInt GetNetworkProviderName(
       
  1881             TDes& aNetworkProviderName ) const;
       
  1882 
       
  1883         /**
       
  1884          * Gets network provider name asynchronously
       
  1885          *
       
  1886          * @param aStatus Request status
       
  1887          * @param aNetworkProviderName Network provider name
       
  1888          */
       
  1889         IMPORT_C void GetNetworkProviderName( TRequestStatus& aStatus,
       
  1890             TDes& aNetworkProviderName );
       
  1891 
       
  1892         /**
       
  1893          * This function retrieves syncronously the information
       
  1894          * if the security code is blocked or not.
       
  1895          *
       
  1896          * @param aType Security code type
       
  1897          * @param aIsBlocked Code blocking status
       
  1898          * @return Error value
       
  1899          */
       
  1900         IMPORT_C TInt IsBlocked( TSecurityCodeType& aType,
       
  1901             TBool& aIsBlocked );
       
  1902 
       
  1903         /**
       
  1904          * This method activates syncronously the security code request and
       
  1905          * triggers the security server to prompt PIN-code from client.
       
  1906          *
       
  1907          * @param aCode Security code type
       
  1908          * @return Error value
       
  1909          */
       
  1910         IMPORT_C TInt CheckSecurityCode ( const TSecurityCodeType aCode );
       
  1911 
       
  1912         /**
       
  1913          * This method activates asyncronously the security code request and
       
  1914          * triggers the security server to prompt PIN-code from client.
       
  1915          *
       
  1916          * @param aStatus Request status
       
  1917          * @param aCode Security code type
       
  1918          */
       
  1919         IMPORT_C void CheckSecurityCode ( TRequestStatus& aStatus,
       
  1920             const TSecurityCodeType aCode );
       
  1921 
       
  1922         /**
       
  1923          * This function retrieves syncronously the currently active PIN code
       
  1924          *
       
  1925          * @param aActivePin Currently active PIN
       
  1926          */
       
  1927         IMPORT_C void GetActivePin(
       
  1928             RMobilePhone::TMobilePhoneSecurityCode& aActivePin );
       
  1929 
       
  1930         /**
       
  1931          * Get the air time use duration synchronously
       
  1932          *
       
  1933          * @param aTime air time duration in seconds.
       
  1934          * @return KErrNone
       
  1935          */
       
  1936         IMPORT_C TInt GetAirTimeDuration( TTimeIntervalSeconds& aTime ) const;
       
  1937 
       
  1938         /**
       
  1939          * Checks the given number against emergency number list sychronously
       
  1940          *
       
  1941          * @param aNumMode Number and check mode
       
  1942          * @param aResult Result of query
       
  1943          * @return Error value
       
  1944          */
       
  1945         IMPORT_C TInt CheckEmergencyNumber( TEmerNumberCheckMode& aNumMode,
       
  1946             TBool& aResult ) const;
       
  1947 
       
  1948         /**
       
  1949          * Checks the given number against emergency number list asychronously
       
  1950          *
       
  1951          * @param aStatus Request status
       
  1952          * @param aNumMode Number and check mode
       
  1953          * @param aResult Result of query
       
  1954          */
       
  1955         IMPORT_C void CheckEmergencyNumber( TRequestStatus& aStatus,
       
  1956             TEmerNumberCheckMode& aNumMode,
       
  1957             TBool& aResult );
       
  1958 
       
  1959         /**
       
  1960          * Clears Call Blacklist asynchronously
       
  1961          *
       
  1962          * @param aStatus Request status
       
  1963          */
       
  1964         IMPORT_C void ClearCallBlackList( TRequestStatus& aStatus );
       
  1965 
       
  1966         /**
       
  1967          * Clears Call Blacklist synchronously
       
  1968          *
       
  1969          * @return Error value
       
  1970          */
       
  1971         IMPORT_C TInt ClearCallBlackList() const;
       
  1972 
       
  1973         /**
       
  1974          * Notification request for additionalinfo message
       
  1975          *
       
  1976          * @param aStatus Request status
       
  1977          * @param aSsAdditionalInfo SS additional information
       
  1978          */
       
  1979         IMPORT_C void SsAdditionalInfoNotification( TRequestStatus& aStatus,
       
  1980             TSsAdditionalInfo& aSsAdditionalInfo );
       
  1981 
       
  1982         /**
       
  1983          * Notify a client of the success of the sent SS command
       
  1984          *
       
  1985          * @param aStatus Request status
       
  1986          * @param aSsStatus SS status
       
  1987          */
       
  1988         IMPORT_C void SsRequestCompleteNotification( TRequestStatus& aStatus,
       
  1989             TInt& aSsStatus );
       
  1990 
       
  1991         /**
       
  1992          * Notify a client when phonebook caching is ready
       
  1993          *
       
  1994          * @param aStatus Request status
       
  1995          * @param aPndName Returns the name of phonebook having ready cache
       
  1996          */
       
  1997         IMPORT_C void NotifyPndCacheReady( TRequestStatus& aStatus,
       
  1998             TName& aPndName );
       
  1999 
       
  2000         /**
       
  2001          * Gets current cache status
       
  2002          *
       
  2003          * @param aStatus Request status
       
  2004          * @param aPndStatus cache status
       
  2005          * @param aPndName phonebook name
       
  2006          */
       
  2007         IMPORT_C void GetPndCacheStatus( TRequestStatus& aStatus,
       
  2008             RMmCustomAPI::TPndCacheStatus& aPndStatus,
       
  2009             const TName& aPndName ) const;
       
  2010 
       
  2011         /**
       
  2012          * Gets the operator name of the current network
       
  2013          *
       
  2014          * @param aStatus Request status
       
  2015          * @param aOperatorNameInfo Operator name info
       
  2016          */
       
  2017         IMPORT_C void GetOperatorName( TRequestStatus& aStatus,
       
  2018             TOperatorNameInfo& aOperatorNameInfo );
       
  2019 
       
  2020         /**
       
  2021          * Gets the programmable operator logo of the current network
       
  2022          *
       
  2023 		 * This API is no longer supported!
       
  2024 		 *
       
  2025          * @param aStatus Request status
       
  2026          * @param aOperatorId operator Id
       
  2027          * @param aLogo operator logo
       
  2028          */
       
  2029         IMPORT_C void GetProgrammableOperatorLogo( TRequestStatus& aStatus,
       
  2030             TOperatorId& aOperatorId, TOperatorLogo& aLogo );
       
  2031 
       
  2032         /**
       
  2033          * Notifies of the change in the operator logo of the current network
       
  2034          *
       
  2035          * @param aStatus Request status
       
  2036          * @param aOperatorId Id of the operator
       
  2037          */
       
  2038         IMPORT_C void NotifyProgrammableOperatorLogoChange(
       
  2039             TRequestStatus& aStatus,
       
  2040             TOperatorId& aOperatorId );
       
  2041 
       
  2042         /**
       
  2043          * Notifies a client of SAT refresh
       
  2044          *
       
  2045          * @param aStatus: Request status
       
  2046          */
       
  2047         IMPORT_C void SatRefreshCompleteNotification(
       
  2048             TRequestStatus& aStatus );
       
  2049 
       
  2050         /**
       
  2051          * Notifies the client about a network generated SS event
       
  2052          *
       
  2053          * @param aStatus Request status
       
  2054          * @param aSsTypeAndMode Type and mode
       
  2055          * @param aSsInfo SS info
       
  2056          */
       
  2057         IMPORT_C void NotifySsNetworkEvent( TRequestStatus& aStatus,
       
  2058             TSsTypeAndMode& aSsTypeAndMode, TSsInfo& aSsInfo );
       
  2059 
       
  2060         /**
       
  2061          * Cancels active ussd session synchronously
       
  2062          *
       
  2063          * @return Error value
       
  2064          */
       
  2065         IMPORT_C TInt CancelUssdSession() const;
       
  2066 
       
  2067         /**
       
  2068          * Cancels active ussd session asynchronously
       
  2069          *
       
  2070          * @param aStatus Request status
       
  2071          */
       
  2072         IMPORT_C void CancelUssdSession( TRequestStatus& aStatus );
       
  2073 
       
  2074         /**
       
  2075          * Checks two digit dial support synchronously
       
  2076          *
       
  2077          * @param aSupport two digit dial support status
       
  2078          * @return Error value
       
  2079          */
       
  2080         IMPORT_C TInt CheckTwoDigitDialSupport(
       
  2081             TTwoDigitDialSupport& aSupport ) const;
       
  2082 
       
  2083         /**
       
  2084          * Checks two digit dial support asynchronously
       
  2085          *
       
  2086          * @param aStatus Request status
       
  2087          * @param aSupport two digit dial support status
       
  2088          */
       
  2089         IMPORT_C void CheckTwoDigitDialSupport( TRequestStatus& aStatus,
       
  2090             TTwoDigitDialSupport& aSupport );
       
  2091 
       
  2092         /**
       
  2093          * This function resets the net server
       
  2094          *
       
  2095          */
       
  2096         IMPORT_C void ResetNetServer() const;
       
  2097 
       
  2098         /**
       
  2099          * This function resets the net server
       
  2100          *
       
  2101          * @param aStatus Request status
       
  2102          */
       
  2103         IMPORT_C void ResetNetServer( TRequestStatus& aStatus );
       
  2104 
       
  2105         /**
       
  2106          * Releases CommDB file
       
  2107          *
       
  2108          * @param aStatus Request status
       
  2109          * @param aFileName File to be released
       
  2110          */
       
  2111         IMPORT_C void ReleaseFile( TRequestStatus& aStatus,
       
  2112             const TDesC& aFileName );
       
  2113 
       
  2114         /**
       
  2115          * Restarts reading CommDB file
       
  2116          *
       
  2117          * @param aStatus Request status
       
  2118          * @param aFileName File to be restarted
       
  2119          */
       
  2120         IMPORT_C void RestartFile( TRequestStatus& aStatus,
       
  2121             const TDesC& aFileName );
       
  2122 
       
  2123         /**
       
  2124          * Start Sim CB Topic Browsing
       
  2125          *
       
  2126          * @return TInt KErrNone if successful
       
  2127          */
       
  2128         IMPORT_C TInt StartSimCbTopicBrowsing();
       
  2129 
       
  2130         /**
       
  2131          * Get next SIM CB Topic synchronously
       
  2132          *
       
  2133          * @param aSimCbTopic requested topic
       
  2134          * @return KErrNone if successful
       
  2135          */
       
  2136         IMPORT_C TInt GetNextSimCbTopic( TSimCbTopic& aSimCbTopic );
       
  2137 
       
  2138         /**
       
  2139          * Get next SIM CB Topic asynchronously
       
  2140          *
       
  2141          * @param aStatus request status
       
  2142          * @param aSimCbTopic requested topic
       
  2143          */
       
  2144         IMPORT_C void GetNextSimCbTopic( TRequestStatus& aStatus,
       
  2145             TSimCbTopic& aSimCbTopic );
       
  2146 
       
  2147         /**
       
  2148          * Delete SIM CB Topic synchronously
       
  2149          *
       
  2150          * @param aSimCbTopicNumber topic to be deleted
       
  2151          * @return Error value
       
  2152          */
       
  2153         IMPORT_C TInt DeleteSimCbTopic( const TUint &aSimCbTopicNumber );
       
  2154 
       
  2155         /**
       
  2156          * Delete SIM CB Topic asynchronously. This asynchronous request can not be cancelled.
       
  2157          *
       
  2158          * @param aStatus request status
       
  2159          * @param aSimCbTopic topic to be deleted
       
  2160          */
       
  2161         IMPORT_C void DeleteSimCbTopic( TRequestStatus& aStatus,
       
  2162             const TUint &aSimCbTopicNumber );
       
  2163 
       
  2164         /**
       
  2165          * Notifies of a network connection failure. This failure is so sever
       
  2166          * that the only way to recover is to restart the phone.
       
  2167          *
       
  2168          * @param aStatus Request status
       
  2169          */
       
  2170         IMPORT_C void NotifyNetworkConnectionFailure(
       
  2171             TRequestStatus& aStatus );
       
  2172 
       
  2173         /**
       
  2174          * Send APDU request and wait for response synchronously
       
  2175          *
       
  2176          * @param anAPDUReq reference to structure containing APDU request's
       
  2177          *        details
       
  2178          * @return Error value
       
  2179          */
       
  2180         IMPORT_C TInt SendAPDUReq( TApdu& anAPDUReq );
       
  2181 
       
  2182         /**
       
  2183          * Send APDU request asynchronously
       
  2184          *
       
  2185          * @param aStatus Request status
       
  2186          * @param anAPDUReq reference to structure containing APDU request's
       
  2187          *        details
       
  2188          */
       
  2189         IMPORT_C void SendAPDUReq( TRequestStatus& aStatus,
       
  2190             TApdu& anAPDUReq );
       
  2191 
       
  2192         /**
       
  2193          * Disables phone lock
       
  2194          *
       
  2195          * @param aStatus Request status
       
  2196          * @param aVerifyCode Password for verification
       
  2197          */
       
  2198         IMPORT_C void DisablePhoneLock( TRequestStatus& aStatus,
       
  2199                 RMobilePhone::TMobilePassword& aVerifyCode ) const;
       
  2200 
       
  2201         /**
       
  2202          * Notifies an EGPRS information change
       
  2203          *
       
  2204          * @param aStatus Request status
       
  2205          * @param aGprsInfo is a reference to a TGprsInformation class
       
  2206          *        packaged inside a TPckg<> class.
       
  2207          */
       
  2208         IMPORT_C void NotifyEGprsInfoChange( TRequestStatus& aStatus,
       
  2209             TDes8& aGprsInfo ) const;
       
  2210 
       
  2211         /**
       
  2212          * Gets EGPRS information
       
  2213          *
       
  2214          * @param aStatus Request status
       
  2215          * @param aGprsInfo is a reference to a TGprsInformation class
       
  2216          *        packaged inside a TPckg<> class.
       
  2217          */
       
  2218         IMPORT_C void GetEGprsInfo ( TRequestStatus& aStatus,
       
  2219             TDes8& aGprsInfo ) const;
       
  2220 
       
  2221         /**
       
  2222          * Reads information from a SIM file asynchronously
       
  2223          *
       
  2224          * @param aStatus Request status
       
  2225          * @param aSimFileInfo reference to class containing SIM File's info
       
  2226          * @param aResponseBytes reference to buffer in which store
       
  2227          *        SIM File's data
       
  2228          */
       
  2229         IMPORT_C void ReadSimFile ( TRequestStatus& aStatus,
       
  2230             TDes8& aSimFileInfo, TDes8& aResponseBytes ) const;
       
  2231 
       
  2232         /**
       
  2233          * Gets the life time synchronously
       
  2234          *
       
  2235          * @param aLifeTimeInfo reference to class containing Life
       
  2236          *          time information
       
  2237          * @return TInt
       
  2238          */
       
  2239         IMPORT_C TInt GetLifeTime( TDes8& aLifeTimeInfo ) const;
       
  2240 
       
  2241         /**
       
  2242          * Gets the life time asynchronously
       
  2243          *
       
  2244          * @param aStatus Request status
       
  2245          * @param aLifeTimeInfo reference to class containing Life
       
  2246          *          time information
       
  2247          */
       
  2248         IMPORT_C void GetLifeTime( TRequestStatus& aStatus,
       
  2249             TDes8& aLifeTimeInfo ) const;
       
  2250 
       
  2251         /**
       
  2252          * Gets phonebook 3G information
       
  2253          *
       
  2254          * @param aStatus Request status
       
  2255          * @param aInfo reference to class containing phonebook 3G information
       
  2256          */
       
  2257         IMPORT_C void Get3GPBInfo( TRequestStatus& aStatus,
       
  2258             T3GPBInfo& aInfo ) const;
       
  2259 
       
  2260         /**
       
  2261          * This method reads all network system modes synchronously.
       
  2262          *
       
  2263          * @param aSupportedNetworkModes supported networkmodes
       
  2264          * @return Error value
       
  2265          */
       
  2266         IMPORT_C TInt GetSystemNetworkModes(
       
  2267             TUint32& aSupportedNetworkModes ) const;
       
  2268 
       
  2269         /**
       
  2270          * This method reads all network system modes asynchronously.
       
  2271          *
       
  2272          * @param aStatus Request status
       
  2273          * @param aSupportedNetworkModes supported networkmodes
       
  2274          */
       
  2275         IMPORT_C void GetSystemNetworkModes( TRequestStatus& aStatus,
       
  2276             TUint32& aSupportedNetworkModes ) const;
       
  2277 
       
  2278         /**
       
  2279          * This method sets network system mode synchronously.
       
  2280          *
       
  2281          * @param aNetworkMode system networkmode
       
  2282          * @return KErrNone if successful
       
  2283          */
       
  2284         IMPORT_C TInt SetSystemNetworkMode(
       
  2285             const TNetworkModeCaps aNetworkMode );
       
  2286 
       
  2287         /**
       
  2288          * This method sets network system mode asynchronously.
       
  2289          *
       
  2290          * @param aStatus Request status
       
  2291          * @param aSupportedNetworkModes supported networkmodes
       
  2292          */
       
  2293         IMPORT_C void SetSystemNetworkMode( TRequestStatus& aStatus,
       
  2294             const TNetworkModeCaps aNetworkMode );
       
  2295 
       
  2296         /**
       
  2297          * This method gets current network system mode synchronously.
       
  2298          *
       
  2299          * @param aCurrentNetworkModes Current networkmodes
       
  2300          * @return Error value
       
  2301          */
       
  2302         IMPORT_C TInt GetCurrentSystemNetworkModes(
       
  2303             TUint32& aCurrentNetworkModes ) const;
       
  2304 
       
  2305         /**
       
  2306          * This method gets current system mode asynchronously.
       
  2307          *
       
  2308          * @param aStatus Request status
       
  2309          * @param aCurrentNetworkModes Current networkmodes
       
  2310          */
       
  2311         IMPORT_C void GetCurrentSystemNetworkModes( TRequestStatus& aStatus,
       
  2312             TUint32& aCurrentNetworkModes ) const;
       
  2313 
       
  2314         /**
       
  2315 	     * This method reads network system band synchronously.
       
  2316 	     *
       
  2317 	     * @param aSupportedNetworkBand supported networkband
       
  2318 	     * @return Error value
       
  2319 	     */
       
  2320 	    IMPORT_C TInt GetSystemNetworkBand(
       
  2321 	        TBandSelection& aSupportedNetworkBand,
       
  2322 	        TNetworkModeCaps& aNetworkMode ) const;
       
  2323 	        
       
  2324 	    /**
       
  2325 	     * This method reads network system band asynchronously.
       
  2326 	     *
       
  2327 	     * @param aStatus Request status
       
  2328 	     * @param aSupportedNetworkBands supported networkband
       
  2329 	     */
       
  2330 	    IMPORT_C void GetSystemNetworkBand( TRequestStatus& aStatus,
       
  2331 	        TBandSelection& aSupportedNetworkBand,
       
  2332 	        TNetworkModeCaps& aNetworkMode ) const;
       
  2333 
       
  2334 	    /**
       
  2335 	     * This method sets network system band synchronously.
       
  2336 	     *
       
  2337 	     * @param aNetworkBand system networkband
       
  2338 	     * @return KErrNone if successful
       
  2339 	     */
       
  2340 	    IMPORT_C TInt SetSystemNetworkBand(
       
  2341 	        const TBandSelection aNetworkBand,
       
  2342 	        const TNetworkModeCaps aNetworkMode );
       
  2343 	    
       
  2344 	    /**
       
  2345 	     * This method sets network system band asynchronously.
       
  2346 	     *
       
  2347 	     * @param aStatus Request status
       
  2348 	     * @param aSupportedNetworkBand supported networkbands
       
  2349          * @param aNetworkMode used network mode
       
  2350 	     */
       
  2351 	    IMPORT_C void SetSystemNetworkBand( TRequestStatus& aStatus,
       
  2352 	        const TBandSelection aNetworkBand,
       
  2353 	        const TNetworkModeCaps aNetworkMode );
       
  2354         
       
  2355         /**
       
  2356          * Power SIM ON.
       
  2357          *
       
  2358          * @param aStatus Request status
       
  2359          */
       
  2360         IMPORT_C void PowerSimOn( TRequestStatus& aStatus );
       
  2361 
       
  2362         /**
       
  2363          * Power SIM OFF.
       
  2364          *
       
  2365          * @param aStatus Request status
       
  2366          */
       
  2367         IMPORT_C void PowerSimOff( TRequestStatus& aStatus );
       
  2368 
       
  2369         /**
       
  2370          * Perform Warm Reset to SIM.
       
  2371          *
       
  2372          * @param aStatus Request status
       
  2373          */
       
  2374         IMPORT_C void SimWarmReset( TRequestStatus& aStatus );
       
  2375 
       
  2376         /**
       
  2377          * Send APDU Request to APDU server
       
  2378          *
       
  2379          * @param aStatus Request status
       
  2380          * @param aParam Parameters for Apdu ( cardreaderid, commandApdu,
       
  2381                  responseApdu )
       
  2382          */
       
  2383         IMPORT_C void SendAPDUReq( TRequestStatus& aStatus,
       
  2384             TApduParameters& aParams );
       
  2385 
       
  2386         /**
       
  2387          * Get Answer To Reset
       
  2388          *
       
  2389          * @param aStatus Request status
       
  2390          * @param aATR reference containing Answer To Reset bytes from ICC
       
  2391          */
       
  2392         IMPORT_C void GetATR( TRequestStatus& aStatus, TDes8& aATR );
       
  2393 
       
  2394         /**
       
  2395          * Get Card Reader Status
       
  2396          *
       
  2397          * @param aStatus Request status
       
  2398          * @param aCardReaderStatus
       
  2399          */
       
  2400         IMPORT_C void GetSimCardReaderStatus( TRequestStatus& aStatus,
       
  2401             TSimCardReaderStatus &aCardReaderStatus );
       
  2402 
       
  2403         /**
       
  2404          * Notify SIM Card Status
       
  2405          *
       
  2406          * @param aStatus Request status
       
  2407          * @param aCardStatus Card status
       
  2408          */
       
  2409         IMPORT_C void NotifySimCardStatus( TRequestStatus& aStatus,
       
  2410             TSIMCardStatus& aCardStatus );
       
  2411 
       
  2412         /**
       
  2413          * Get WLAN SIM Authentication Data
       
  2414          *
       
  2415          * @param aStatus Request status
       
  2416          * @param aAuthenticationData Authentication Data
       
  2417          */
       
  2418         IMPORT_C void GetWlanSimAuthenticationData(
       
  2419             TRequestStatus& aReqStatus,
       
  2420             TDes8& aAuthenticationData ) const;
       
  2421 
       
  2422         /**
       
  2423          * Sets "storage status" byte of a SIM-stored SMS message to "read".
       
  2424          * Parameters are SM service center timestamp (as of 3GPP TS 23.040).
       
  2425          *
       
  2426          * @param aTime time
       
  2427          * @param aTimezoneDiff timezone (difference to GMT, in quarters of
       
  2428          *        an hour)
       
  2429          */
       
  2430         IMPORT_C void SetSimMessageStatusRead( TTime& aTime,
       
  2431             TInt& aTimezoneDiff ) const;
       
  2432 
       
  2433         /**
       
  2434          * This method writes specified VIAG Home Zone UHZIUE settings synchronously.
       
  2435          *
       
  2436          *
       
  2437          * U-HZI-UE settings field is coded as follow:
       
  2438          *
       
  2439          *    -------------------------
       
  2440          *    |b8|b7|b6|b5|b4|b3|b2|b1|
       
  2441          *    -------------------------
       
  2442          *                           <-0:The U-HZI-UE is deactivated
       
  2443          *                            1:The U-HZI-UE is activated
       
  2444          *
       
  2445          *                        <----0:The CB-HZI-UE is deactivated
       
  2446          *                             1:The CB-HZI-UE is activated
       
  2447          *
       
  2448          *    Constants RMmCustomAPI::KUHziUeActive and RMmCustomAPI::HCbHziUeActive
       
  2449          *    can be used to determine and modificate states of different activation bits.
       
  2450          *
       
  2451          *    For example:
       
  2452          *
       
  2453          *    if ( iEfUHziUeSettings.settings & KUHziUeActive )
       
  2454          *     then U-HZI-UE is activated
       
  2455          *
       
  2456          *    Activate:
       
  2457          *    iEfUHziUeSettings.settings |= KUHziUeActive;
       
  2458          *
       
  2459          *    Deactivate:
       
  2460          *    iEfUHziUeSettings.settings &= ~KUHziUeActive;
       
  2461          *
       
  2462          *
       
  2463          * @param aSettings Settings
       
  2464          * @return Error value
       
  2465          */
       
  2466         IMPORT_C TInt WriteViagHomeZoneUHZIUESettings(
       
  2467             TViagUHZIUESettings& aSettings) const;
       
  2468 
       
  2469         /**
       
  2470          * This method writes specified VIAG Home Zone UHZIUE settings
       
  2471          * asynchronously.
       
  2472          *
       
  2473          * @param aStatus Request status
       
  2474          * @param aSettings Settings
       
  2475          */
       
  2476         IMPORT_C void WriteViagHomeZoneUHZIUESettings (
       
  2477             TRequestStatus& aStatus, TViagUHZIUESettings& aSettings) const;
       
  2478 
       
  2479         /**
       
  2480          * Read HSxPA Status
       
  2481          *
       
  2482          * @param aStatus Request status
       
  2483          * @param aHSxPAStatus
       
  2484          */
       
  2485         IMPORT_C void ReadHSxPAStatus( TRequestStatus& aStatus,
       
  2486             THSxPAStatus& aHSxPAStatus );
       
  2487 
       
  2488         /**
       
  2489          * Write HSxPA Status
       
  2490          *
       
  2491          * @param aStatus Request status
       
  2492          * @param aHSxPAStatus
       
  2493          */
       
  2494         IMPORT_C void WriteHSxPAStatus( TRequestStatus& aStatus,
       
  2495             THSxPAStatus& aHSxPAStatus );
       
  2496 
       
  2497         /**
       
  2498          * Notify HSxPA Status change
       
  2499          *
       
  2500          * @param aStatus Request status
       
  2501          * @param aHSxPAStatus
       
  2502          */
       
  2503         IMPORT_C void NotifyHSxPAStatus( TRequestStatus& aStatus,
       
  2504             THSxPAStatus& aHSxPAStatus );
       
  2505 
       
  2506         /**
       
  2507          * Get ICC call forwarding status
       
  2508          *
       
  2509          * @param aReqStatus Request status
       
  2510          * @param aCFIndicators refrence to class CFIndicators
       
  2511          */
       
  2512         IMPORT_C void GetIccCallForwardingIndicatorStatus(
       
  2513         	TRequestStatus& aReqStatus, //TUint8 aMspId,
       
  2514         	TDes8& aCFIndicators ) const;
       
  2515 
       
  2516         /**
       
  2517          * Notify ICC call forwarding status change
       
  2518          *
       
  2519          * @param aReqStatus Request status
       
  2520          * @param aCFIndicators refrence to class CFIndicators
       
  2521          */
       
  2522         IMPORT_C void NotifyIccCallForwardingStatusChange(
       
  2523             TRequestStatus& aReqStatus,
       
  2524             TDes8& aCFIndicators );
       
  2525 
       
  2526         /**
       
  2527          * Get GSM/WCDMA cell(s) info
       
  2528          *
       
  2529          * @param aStatus Request status
       
  2530          * @param aCellInfo
       
  2531          */
       
  2532         IMPORT_C void GetCellInfo( TRequestStatus& aStatus,
       
  2533             TDes8& aCellInfo ) const;
       
  2534 
       
  2535         /**
       
  2536          * Notify Cell info change
       
  2537          *
       
  2538          * @param aStatus Request status
       
  2539          * @param aCellInfo
       
  2540          */
       
  2541         IMPORT_C void NotifyCellInfoChange( TRequestStatus& aStatus,
       
  2542             TDes8& aCellInfo ) const;
       
  2543 
       
  2544 
       
  2545 		/**
       
  2546          * Get service table availability on USIM
       
  2547          *
       
  2548          * @since S60 v3.2
       
  2549          * @param aStatus Request status
       
  2550          * @param aParams aServiceNum. A service support in service table
       
  2551          * specified by the client
       
  2552          */
       
  2553 		IMPORT_C void GetUSIMServiceSupport( 
       
  2554 		    TRequestStatus& aStatus, TAppSupport& aParams ) const;
       
  2555 		
       
  2556 		/**
       
  2557          * This function notifies a client of RemoteAlertingToneStatus change
       
  2558          *
       
  2559          * @param aStatus Request status
       
  2560          * @param aToneStatus RemoteAlertingTone status
       
  2561          */
       
  2562         IMPORT_C void NotifyRemoteAlertingToneStatusChange( 
       
  2563             TRequestStatus& aStatus, TRemoteAlertingToneStatus& aToneStatus );
       
  2564 	
       
  2565     private:
       
  2566 
       
  2567         /**
       
  2568          * Copy constructor
       
  2569          *
       
  2570          * @param aCustomAPI Custom API handle
       
  2571          */
       
  2572         RMmCustomAPI( const RMmCustomAPI& aCustomAPI );
       
  2573 
       
  2574     protected:
       
  2575 
       
  2576         /**
       
  2577          * 2nd phase constructor.
       
  2578          */
       
  2579         IMPORT_C void ConstructL();
       
  2580 
       
  2581         /**
       
  2582          * Destructor
       
  2583          */
       
  2584         IMPORT_C void Destruct();
       
  2585 
       
  2586     private:    // Data
       
  2587 
       
  2588         /*
       
  2589          * Pointer to he Custom pointer holder
       
  2590          * Own.
       
  2591          */
       
  2592         CMmCustomPtrHolder*  iCustomPtrHolder;
       
  2593     };
       
  2594 
       
  2595 /**
       
  2596  * CMmCustomPtrHolder contains Custom Pointer Holder related functionality 
       
  2597  *  @publishedPartner
       
  2598  */
       
  2599  class CMmCustomPtrHolder : public CBase
       
  2600     {
       
  2601     public: // Constructors and destructor
       
  2602 
       
  2603         static CMmCustomPtrHolder* NewL( const TInt aSizeOfPtrArray,
       
  2604             const TInt aSizeOfPtrCArray=0 );
       
  2605 
       
  2606         ~CMmCustomPtrHolder();
       
  2607 
       
  2608         template <typename T> inline TPtr8& Set( TInt aSlot, T& aObject )
       
  2609             {
       
  2610             TPtr8& ptr=Ptr( aSlot );
       
  2611             ptr.Set( REINTERPRET_CAST( TText8*, ( &aObject ) ), sizeof( T ),
       
  2612                 sizeof( T ) );
       
  2613 
       
  2614             return ptr;
       
  2615             };
       
  2616 
       
  2617         template <typename T> inline TPtrC8& SetC(
       
  2618             TInt aSlot, const T& aObject)
       
  2619             {
       
  2620             TPtrC8& ptr=PtrC( aSlot );
       
  2621             ptr.Set( REINTERPRET_CAST( const TText8*, ( &aObject ) ),
       
  2622                 sizeof( T ) );
       
  2623 
       
  2624             return ptr;
       
  2625             };
       
  2626 
       
  2627     protected:
       
  2628 
       
  2629         void ConstructL( const TInt aSizeOfPtrArray,
       
  2630             const TInt aSizeOfPtrCArray );
       
  2631         CMmCustomPtrHolder();
       
  2632 
       
  2633     public: // Data
       
  2634 
       
  2635         /*
       
  2636          * Sim Topic
       
  2637          */
       
  2638         RMmCustomAPI::TSimCbTopic iSimCbTopic;
       
  2639 
       
  2640         /*
       
  2641          * SimTopic number
       
  2642          */
       
  2643         TUint iSimCbTopicNumber;
       
  2644 
       
  2645         /*
       
  2646          * Als block status for set
       
  2647          */
       
  2648         RMmCustomAPI::TSetAlsBlock iSetAlsBlock;
       
  2649 
       
  2650         /*
       
  2651          * Drive Mode
       
  2652          */
       
  2653         RMmCustomAPI::TSetDriveMode iSetDriveMode;
       
  2654 
       
  2655         /*
       
  2656          * Sim lock number
       
  2657          */
       
  2658         RMmCustomAPI::TLockNumber iSimLockNumber;
       
  2659 
       
  2660         /*
       
  2661          * Sim lock password
       
  2662          */
       
  2663         RMmCustomAPI::TSimLockPassword iSimLockPassword;
       
  2664 
       
  2665         /*
       
  2666          * Viag cache id
       
  2667          */
       
  2668         RMmCustomAPI::TViagCacheRecordId iViagCacheId;
       
  2669 
       
  2670         /*
       
  2671          * Viag cache record
       
  2672          */
       
  2673         RMmCustomAPI::TViagCacheRecordContent iViagCacheRecord;
       
  2674 
       
  2675         /*
       
  2676          * Security code typeiSecurityCodeType;
       
  2677          */
       
  2678         RMmCustomAPI::TSecurityCodeType iSecurityCodeType;
       
  2679 
       
  2680         /*
       
  2681          * Operator name type
       
  2682          */
       
  2683         RMmCustomAPI::TOperatorNameType iOperatorNameType;
       
  2684 
       
  2685         /*
       
  2686          * Phonebook 3G info
       
  2687          */
       
  2688         RMmCustomAPI::T3GPBInfo i3GPBInfo;
       
  2689 
       
  2690         /*
       
  2691          * Supported network modes
       
  2692          */
       
  2693         TUint32 iSupportedNetworkModes;
       
  2694 
       
  2695         /*
       
  2696          * System network mode
       
  2697          */
       
  2698         RMmCustomAPI::TNetworkModeCaps iNetworkModeCaps;
       
  2699 
       
  2700         /*
       
  2701          * Current network modes
       
  2702          */
       
  2703         TUint32 iCurrentNetworkModes;
       
  2704         
       
  2705         /**
       
  2706          * Network UMTS rf band
       
  2707          */
       
  2708         RMmCustomAPI::TBandSelection iNetworkBand;
       
  2709     
       
  2710 	    /**
       
  2711 	     * Supported network band
       
  2712 	     */
       
  2713 	    RMmCustomAPI::TBandSelection iSupportedNetworkBand;
       
  2714 
       
  2715         /**
       
  2716          * HSxPA Status
       
  2717          */
       
  2718         RMmCustomAPI::THSxPAStatus iHSxPAStatus;
       
  2719 
       
  2720     protected: // Data
       
  2721 
       
  2722         RArray<TPtr8> iPtrArray;
       
  2723         RArray<TPtrC8> iPtrCArray;
       
  2724 
       
  2725     private: // Data
       
  2726 
       
  2727         TPtr8& Ptr( TInt aIndex );
       
  2728         TPtrC8& PtrC( TInt aIndex );
       
  2729 
       
  2730     };
       
  2731 
       
  2732 #endif      // RMMCUSTOMAPI_H
       
  2733 
       
  2734 //  End of File