--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/adaptationlayer/tsy/nokiatsy_dll/internal/test/nokiatsy_test_tool/uicc/src/uiccblocks.cpp Fri Nov 06 17:28:23 2009 +0000
@@ -0,0 +1,3713 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Specific class for UICC tests
+*
+*/
+
+
+
+// INCLUDE FILES
+#include <e32svr.h>
+#include <stifparser.h>
+#include <stiftestinterface.h>
+#include <etelmm.h>
+#include <ctsy/serviceapi/gsmerror.h>
+#include "uicc.h"
+
+
+// CONSTANTS
+_LIT8( KLine, "---------------------------------" );
+_LIT8( KAdnPhoneBook, "AdnPhoneBook" );
+_LIT8( KBdnPhoneBook, "BdnPhoneBook" );
+_LIT8( KSdnPhoneBook, "SdnPhoneBook" );
+_LIT8( KFdnPhoneBook, "FdnPhoneBook" );
+_LIT8( KMBDN, "MBDN" );
+_LIT8( KVoiceMailBox, "VoiceMailBox" );
+
+_LIT( KViagInactive, "Inactive" );
+_LIT( KViagCZActive, "CZActive" );
+_LIT( KViagHZActive, "HZActive" );
+
+
+// ============================ LOCAL FUNCTIONS ===============================
+// -----------------------------------------------------------------------------
+// GetSecurityCode
+// -----------------------------------------------------------------------------
+//
+static TInt GetSecurityCode(
+ CStifItemParser& aItem,
+ RMobilePhone::TMobilePhoneSecurityCode &aSecurityCode )
+ {
+ // security code enum
+ TPtrC string;
+ TInt ret( aItem.GetNextString( string ) );
+
+ if ( KErrNone == ret )
+ {
+ if ( string == _L("ESecurityCodePin1") )
+ {
+ aSecurityCode = RMobilePhone::ESecurityCodePin1;
+ }
+ else if ( string == _L("ESecurityCodePin2") )
+ {
+ aSecurityCode = RMobilePhone::ESecurityCodePin2;
+ }
+ else if ( string == _L("ESecurityCodePuk1") )
+ {
+ aSecurityCode = RMobilePhone::ESecurityCodePuk1;
+ }
+ else if ( string == _L("ESecurityCodePuk2") )
+ {
+ aSecurityCode = RMobilePhone::ESecurityCodePuk2;
+ }
+ else if ( string == _L("ESecurityCodePhonePassword") )
+ {
+ aSecurityCode = RMobilePhone::ESecurityCodePhonePassword;
+ }
+ else if ( string == _L("ESecurityCodeSPC") )
+ {
+ aSecurityCode = RMobilePhone::ESecurityCodeSPC;
+ }
+ else if ( string == _L("ESecurityHiddenKey") )
+ {
+ aSecurityCode = RMobilePhone::ESecurityHiddenKey;
+ }
+ else if ( string == _L("ESecurityUSIMAppPin") )
+ {
+ aSecurityCode = RMobilePhone::ESecurityUSIMAppPin;
+ }
+ else if ( string == _L("ESecuritySecondUSIMAppPin") )
+ {
+ aSecurityCode = RMobilePhone::ESecuritySecondUSIMAppPin;
+ }
+ else if ( string == _L("ESecurityUniversalPin") )
+ {
+ aSecurityCode = RMobilePhone::ESecurityUniversalPin;
+ }
+ else if ( string == _L("ESecurityUniversalPuk") )
+ {
+ aSecurityCode = RMobilePhone::ESecurityUniversalPuk;
+ }
+ else
+ {
+ ret = KErrArgument;
+ }
+ }
+ //no else
+
+ return ret;
+ }
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CUICC::Delete
+// Delete here all resources allocated and opened from test methods.
+// Called from destructor.
+// -----------------------------------------------------------------------------
+//
+void CUICC::Delete()
+ {
+ if(iRefPBStoreInfoData)
+ {
+ delete iRefPBStoreInfoData;
+ iRefPBStoreInfoData = NULL;
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::RunMethodL
+// Run specified method. Contains also table of test methods and their names.
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::RunMethodL(
+ CStifItemParser& aItem )
+ {
+ _LIT8 (KLog, "UICC: RunMethodL" );
+ iUICCLog->Log((TDesC8)KLog);
+
+ static TStifFunctionInfo const KFunctions[] =
+ {
+ // Copy this line for every implemented function.
+ // First string is the function name used in TestScripter script file.
+ // Second is the actual implementation member function.
+ ENTRY( "PoweringSimOn", CUICC::PoweringSimOn ),
+ ENTRY( "GetLifeTimer", CUICC::GetLifeTimer),
+ ENTRY( "RunIscTestCase", CCore::RunIscTestCase),
+ ENTRY( "SyncIscTestCase", CCore::SyncIscTestCase),
+ ENTRY( "RunIscTestCaseStartNTSYAfterTestToolStart",
+ CCore::RunIscTestCaseStartNTSYAfterTestToolStart),
+ ENTRY( "SyncIscTestCaseStartNTSYAfterTestToolStart",
+ CCore::SyncIscTestCaseStartNTSYAfterTestToolStart),
+ ENTRY( "HandleSpecifiedRequests", CCore::HandleSpecifiedRequests),
+ ENTRY( "InitializeIPCRequestTable", CCore::InitializeIPCRequestTable),
+ ENTRY( "SetExpectedCompleteIPC", CCore::SetExpectedCompleteIPC),
+ ENTRY( "GetSubscriberId", CUICC::GetSubscriberId ),
+ ENTRY( "GetCiStatus", CUICC::GetCiStatus),
+ ENTRY( "SetCallFwdStatus", CUICC::SetCallFwdStatus),
+ ENTRY( "GetEhplmn", CUICC::GetEhplmn),
+ ENTRY( "PbInit", CUICC::PbInitL ),
+ ENTRY( "GetServiceProviderName", CUICC::GetServiceProviderName ),
+ ENTRY( "GetCustomerServiceProfile", CUICC::GetCustomerServiceProfile ),
+ ENTRY( "ReadSimFile", CUICC::ReadSimFile ),
+ ENTRY( "GetMailboxIdentifier", CUICC::GetMailboxIdentifier ),
+ ENTRY( "ReadCBSSimTopics", CUICC::ReadCBSSimTopics ),
+ ENTRY( "DeleteCBSSimTopic", CUICC::DeleteCBSSimTopic ),
+ ENTRY( "GetCiStatusCustom", CUICC::GetCiStatusCustom ),
+ ENTRY( "GetNetworkProviderName", CUICC::GetNetworkProviderName ),
+ ENTRY( "ViagHomeZoneReadParam", CUICC::ViagHomeZoneReadParamL),
+ ENTRY( "ViagHomeZoneReadCache", CUICC::ViagHomeZoneReadCacheL),
+ ENTRY( "ViagHomeZoneWriteSettings", CUICC::ViagHomeZoneWriteSettingsL),
+ ENTRY( "ViagHomeZoneWriteCache", CUICC::ViagHomeZoneWriteCacheL),
+ ENTRY( "ReadVoiceMsgFlagsRel4", CUICC::ReadVoiceMsgFlagsRel4),
+ ENTRY( "WriteVoiceMsgFlagsRel4", CUICC::WriteVoiceMsgFlagsRel4),
+ ENTRY( "ReadVoiceMsgFlagsCphs", CUICC::ReadVoiceMsgFlagsCphs),
+ ENTRY( "WriteVoiceMsgFlagsCphs", CUICC::WriteVoiceMsgFlagsCphs),
+ ENTRY( "ReadDynamicFlags", CUICC::ReadDynamicFlags),
+ ENTRY( "WriteDynamicFlags", CUICC::WriteDynamicFlags),
+ ENTRY( "ReadDynamic2Flags", CUICC::ReadDynamic2Flags),
+ ENTRY( "WriteDynamic2Flags", CUICC::WriteDynamic2Flags),
+ ENTRY( "GetUiccStatus", CUICC::GetUiccStatus),
+ ENTRY( "PowerOffSim", CUICC::PowerOffSim ),
+ ENTRY( "SimWarmReset", CUICC::SimWarmReset ),
+ ENTRY( "SimGetATR", CUICC::SimGetATR ),
+ ENTRY( "PowerOnSim", CUICC::PowerOnSim ),
+ ENTRY( "GetRfStatus", CUICC::GetRfStatus),
+ ENTRY( "SendAPDUv2", CUICC::SendAPDUv2 ),
+ ENTRY( "GetCardReaderStatus", CUICC::GetCardReaderStatus ),
+ ENTRY( "SIMCardInd", CUICC::UiccCardInd ),
+ ENTRY( "SendAPDU", CUICC::SendAPDU ),
+ ENTRY( "NotifySecurityEvent", CUICC::NotifySecurityEvent ),
+ ENTRY( "VerifySecurityCode", CUICC::VerifySecurityCode ),
+ ENTRY( "GetPinInfo", CUICC::GetPinInfo ),
+ ENTRY( "ChangePinCode", CUICC::ChangePinCode ),
+ ENTRY( "SetLockSetting", CUICC::SetLockSetting ),
+ ENTRY( "GetPinAttemptsLeft", CUICC::GetPinAttemptsLeft ),
+ ENTRY( "GetIccType", CUICC::GetIccType ),
+ ENTRY( "GetCurrentActiveUSIMApplication", CUICC::GetCurrentActiveUSIMApplication ),
+ ENTRY( "GetActivePin", CUICC::GetActivePin ),
+ };
+
+ const TInt count = sizeof( KFunctions ) / sizeof( TStifFunctionInfo );
+
+ return RunInternalL( KFunctions, count, aItem );
+
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::PoweringSIMOn
+// Powering SIM on
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::PoweringSimOn( CStifItemParser& /*aItem*/ )
+ {
+ _LIT8(KPbInit, "CUICC::PoweringSimOn");
+ iUICCLog->Log((TDesC8)KPbInit);
+
+ TInt ret( KErrNotFound );
+
+ ret = HandleRequestL( ECustomPowerSimOnIPC );
+
+ if ( KErrNone == ret )
+ {
+ _LIT8( KSendOk, "PoweringSimOn request send ok" );
+ iUICCLog->Log((TDesC8)KSendOk );
+ }
+ else
+ {
+ _LIT8( KSendFailed, "PoweringSimOn request send failed: %d" );
+ iUICCLog->Log((TDesC8)KSendFailed, ret );
+ }
+
+ return ret;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CUICC::CompletePoweringSIMOn
+// Complete PoweringSIMOn method function.
+// -----------------------------------------------------------------------------
+//
+void CUICC::CompletePoweringSimOn( TInt aResult )
+ {
+ _LIT8( KResult, "CompletePoweringSimOn result: %d" );
+ iUICCLog->Log((TDesC8)KResult, aResult );
+
+ if( KErrNone != aResult )
+ {
+ _LIT8( KFail, "CompletePoweringSimOn Failed: %d" );
+ iUICCLog->Log((TDesC8)KFail, aResult );
+ }
+
+ Signal( aResult );
+ }
+
+// -----------------------------------------------------------------------------
+// CVoice::GetLifeTimer
+// Request Get Call Life Timer value.
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::GetLifeTimer( CStifItemParser& aItem )
+ {
+ TInt ret( KErrNone );
+ _LIT8(KGetLifeTimer, "CVoice::GetLifeTimer");
+ iUICCLog->Log((TDesC8)KGetLifeTimer);
+
+ TUint hours( 0 );
+ TUint minutes( 0 );
+
+ aItem.GetNextInt( hours );
+ aItem.GetNextInt( minutes );
+
+ iLifeTimerForComparison.iHours = hours;
+ iLifeTimerForComparison.iMinutes = static_cast<TUint8>( minutes );
+
+ ret = HandleRequestL( ECustomGetLifeTimeIPC );
+
+ if ( KErrNone != ret )
+ {
+ // Signal ( ret );
+ ret = KErrNone;
+ }
+
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CVoice::CompleteGetLifeTimer
+// -----------------------------------------------------------------------------
+//
+void CUICC::CompleteGetLifeTimer( TInt aResult, CMmDataPackage* aDataPackage )
+ {
+ RMmCustomAPI::TLifeTimeData timeInfo;
+
+ _LIT8( KCompleteGetLifeTimer, "CVoice::CompleteGetLifeTimer: %d" );
+ iUICCLog->Log((TDesC8)KCompleteGetLifeTimer, aResult );
+
+ aDataPackage->UnPackData( timeInfo );
+
+ if ( ( ( iLifeTimerForComparison.iHours != timeInfo.iHours ) ||
+ ( iLifeTimerForComparison.iMinutes != timeInfo.iMinutes ) ) &&
+ ( KErrNone == aResult ) )
+ {
+ aResult = KErrGeneral;
+ }
+
+ Signal( aResult );
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::GetSubscriberId
+// Get Subscriber Id (IMSI)
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::GetSubscriberId( CStifItemParser& aItem )
+ {
+ _LIT8(KIMSI, "UICC::GetSubscriberId");
+ iUICCLog->Log((TDesC8)KIMSI);
+
+ TInt ret( KErrNotFound );
+
+ // store given parameters for validity checking
+ if ( iHandleSpecifiedRequests )
+ {
+ TPtrC temp;
+ aItem.GetNextString( temp );
+ iImsi.Append(temp);
+ }
+
+ ret = HandleRequestL( EMobilePhoneGetSubscriberId );
+
+ if ( KErrNone == ret )
+ {
+ _LIT8( KSendOk, "GetSubscriberId request send ok" );
+ iUICCLog->Log((TDesC8)KSendOk );
+ }
+ else
+ {
+ _LIT8( KSendFailed, "GetSubscriberId request send failed: %d" );
+ iUICCLog->Log((TDesC8)KSendFailed, ret );
+ }
+
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::CompleteGetSubscriberId
+// Complete GetSubscriberId method function.
+// -----------------------------------------------------------------------------
+//
+void CUICC::CompleteGetSubscriberId( TInt aResult, CMmDataPackage* aDataPackage )
+ {
+ _LIT8( KResult, "CompleteGetSubscriberId result: %d" );
+ iUICCLog->Log((TDesC8)KResult, aResult );
+
+ if( KErrNone == aResult )
+ {
+ TBuf8<RMobilePhone::KIMSISize> imsi;
+ aDataPackage->UnPackData( imsi );
+ iUICCLog->Log((TDesC8)KLine );
+ _LIT8( KIMSI, "IMSI:" );
+ for( TInt i( 0 ); i < RMobilePhone::KIMSISize; i++)
+ {
+ iUICCLog->Log((TDesC8)KIMSI );
+ _LIT8( KIMSI2, " %d" );
+ iUICCLog->Log((TDesC8)KIMSI2, imsi[i] );
+ }
+ iUICCLog->Log((TDesC8)KLine );
+
+ // Validity checking
+ if ( iHandleSpecifiedRequests )
+ {
+ if( imsi != iImsi )
+ {
+ aResult = KErrGeneral;
+ }
+ }
+ }
+ else
+ {
+ _LIT8( KFail, "CompleteGetSubscriberId Failed: %d" );
+ iUICCLog->Log((TDesC8)KFail, aResult );
+ }
+
+ Signal( aResult );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CUICC::GetCiStatus
+// Get ciphering indicator status
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::GetCiStatus( CStifItemParser& aItem )
+ {
+ _LIT8(KCI, "UICC::GetCiStatus");
+ iUICCLog->Log((TDesC8)KCI);
+
+ TInt ret( KErrNone );
+
+ TInt ciStatus( 0 );
+ aItem.GetNextInt( ciStatus );
+ iCipherIndicatorStatus =
+ static_cast<RMobilePhone::TMobileCallCipheringIndicator>( ciStatus );
+
+ ret = HandleRequestL( EMobilePhoneGetCipheringIndicatorStatus );
+
+ if ( KErrNone == ret )
+ {
+ _LIT8( KSendOk, "GetCiStatus request send ok" );
+ iUICCLog->Log((TDesC8)KSendOk );
+ }
+ else
+ {
+ _LIT8( KSendFailed, "GetCiStatus request send failed: %d" );
+ iUICCLog->Log((TDesC8)KSendFailed, ret );
+ }
+
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::GetCiStatus
+// Get ciphering indicator status
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::GetCiStatusCustom( CStifItemParser& aItem )
+ {
+ _LIT8(KCI, "UICC::GetCiStatusCustom");
+ iUICCLog->Log((TDesC8)KCI);
+
+ TInt ret( KErrNone );
+
+ TInt ciStatus( 0 );
+ aItem.GetNextInt( ciStatus );
+ iCipherIndicatorStatus =
+ static_cast<RMobilePhone::TMobileCallCipheringIndicator>( ciStatus );
+
+ ret = HandleRequestL( ECustomGetCipheringInfoIPC );
+
+ if ( KErrNone == ret )
+ {
+ _LIT8( KSendOk, "GetCiStatus request send ok" );
+ iUICCLog->Log((TDesC8)KSendOk );
+ }
+ else
+ {
+ _LIT8( KSendFailed, "GetCiStatus request send failed: %d" );
+ iUICCLog->Log((TDesC8)KSendFailed, ret );
+ }
+
+ return ret;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CUICC::CompleteGetCiStatus
+// Complete CompleteGetCiStatus method function.
+// -----------------------------------------------------------------------------
+//
+void CUICC::CompleteGetCiStatus( TInt aResult, CMmDataPackage* aDataPackage )
+ {
+ _LIT8( KResult, "CompleteGetCiStatus result: %d" );
+ iUICCLog->Log((TDesC8)KResult, aResult );
+
+ if( KErrNone == aResult )
+ {
+ RMobilePhone::TMobileCallCipheringIndicator cipherIndicatorStatus;
+ aDataPackage->UnPackData( cipherIndicatorStatus );
+
+ if ( iCipherIndicatorStatus != cipherIndicatorStatus )
+ {
+ aResult = KErrGeneral;
+ }
+
+ Signal( aResult );
+ }
+ else
+ {
+ _LIT8( KFail, "CompleteGetCiStatus failed: %d" );
+ iUICCLog->Log((TDesC8)KFail, aResult );
+ }
+
+ Signal( aResult );
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::SetCallFwdStatus
+// Set call forwarding status
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::SetCallFwdStatus( CStifItemParser& aItem )
+ {
+ _LIT8(KCallFwd, "CUICC::SetCallForwardingStatus");
+ iUICCLog->Log((TDesC8)KCallFwd);
+
+ TInt ret( KErrNotFound );
+ TBool supported( ETrue );
+ TPtrC string;
+ TPtrC groupstring;
+ TPtrC actionstring;
+ TPtrC numberstring;
+ TPtrC timestring;
+ TPtrC typestring;
+ TPtrC planstring;
+
+ aItem.GetNextString( string );
+ aItem.GetNextString( groupstring );
+ aItem.GetNextString( actionstring );
+ aItem.GetNextString( typestring );
+ aItem.GetNextString( planstring );
+ aItem.GetNextString( numberstring );
+ aItem.GetNextString( timestring );
+
+ RMobilePhone::TMobilePhoneCFCondition condition;
+
+ // Save CF indicators for parameter checking
+ aItem.GetNextInt( iIndicator );
+
+ if ( _L("CallForwardingUnspecified") == string )
+ {
+ condition = RMobilePhone::ECallForwardingUnspecified;
+ }
+ else if ( _L("CallForwardingUnconditional") == string )
+ {
+ condition = RMobilePhone::ECallForwardingUnconditional;
+ }
+ else if ( _L("CallForwardingBusy") == string )
+ {
+ condition = RMobilePhone::ECallForwardingBusy;
+ }
+ else if ( _L("CallForwardingNoReply") == string )
+ {
+ condition = RMobilePhone::ECallForwardingNoReply;
+ }
+ else if ( _L("CallForwardingNotReachable") == string )
+ {
+ condition = RMobilePhone::ECallForwardingNotReachable;
+ }
+ else if ( _L("CallForwardingAllCases") == string )
+ {
+ condition = RMobilePhone::ECallForwardingAllCases;
+ }
+ else if ( _L("CallForwardingAllConditionalCases") == string )
+ {
+ condition = RMobilePhone::ECallForwardingAllConditionalCases;
+ }
+ else
+ {
+ _LIT8(KNotSupp, "SS::Selected condition for call forwarding not supported");
+ iUICCLog->Log((TDesC8)KNotSupp);
+ supported = EFalse;
+ }
+
+ if ( supported && iHandleSpecifiedRequests )
+ {
+ iCFCondition = condition;
+ }
+
+ RMobilePhone::TMobilePhoneCFChangeV1 group;
+
+ if ( _L("ServiceUnspecified") == groupstring )
+ {
+ group.iServiceGroup = RMobilePhone::EServiceUnspecified;
+ }
+ else if ( _L("VoiceService") == groupstring )
+ {
+ group.iServiceGroup = RMobilePhone::EVoiceService;
+ }
+ else if ( _L("AuxVoiceService") == groupstring )
+ {
+ group.iServiceGroup = RMobilePhone::EAuxVoiceService;
+ }
+ else if ( _L("CircuitDataService") == groupstring )
+ {
+ group.iServiceGroup = RMobilePhone::ECircuitDataService;
+ }
+ else if ( _L("PacketDataService") == groupstring )
+ {
+ group.iServiceGroup = RMobilePhone::EPacketDataService;
+ }
+ else if ( _L("FaxService") == groupstring )
+ {
+ group.iServiceGroup = RMobilePhone::EFaxService;
+ }
+ else if ( _L("ShortMessageService") == groupstring )
+ {
+ group.iServiceGroup = RMobilePhone::EShortMessageService;
+ }
+ else if ( _L("AllServices") == groupstring )
+ {
+ group.iServiceGroup = RMobilePhone::EAllServices;
+ }
+ else if ( _L("AllTele") == groupstring )
+ {
+ group.iServiceGroup = RMobilePhone::EAllTele;
+ }
+ else if ( _L("Telephony") == groupstring )
+ {
+ group.iServiceGroup = RMobilePhone::ETelephony;
+ }
+ else if ( _L("AllDataTele") == groupstring )
+ {
+ group.iServiceGroup = RMobilePhone::EAllDataTele;
+ }
+ else if ( _L("AllDataExSms") == groupstring )
+ {
+ group.iServiceGroup = RMobilePhone::EAllDataExSms;
+ }
+ else if ( _L("AllTeleExcSms") == groupstring )
+ {
+ group.iServiceGroup = RMobilePhone::EAllTeleExcSms;
+ }
+ else
+ {
+ _LIT8(KNotSupp, "UICC::Selected set call forwarding servicegroup not supported");
+ iUICCLog->Log((TDesC8)KNotSupp);
+ supported = EFalse;
+ }
+
+ if ( _L("ServiceActionRegister") == actionstring )
+ {
+ group.iAction = RMobilePhone::EServiceActionRegister;
+ }
+ else if ( _L("ServiceActionActivate") == actionstring )
+ {
+ group.iAction = RMobilePhone::EServiceActionActivate;
+ }
+ else if ( _L("ServiceActionDeactivate") == actionstring )
+ {
+ group.iAction = RMobilePhone::EServiceActionDeactivate;
+ }
+ else if ( _L("ServiceActionErase") == actionstring )
+ {
+ group.iAction = RMobilePhone::EServiceActionErase;
+ }
+ else
+ {
+ _LIT8(KNotSupp, "UICC::Selected set call forwarding action not supported");
+ iUICCLog->Log((TDesC8)KNotSupp);
+ supported = EFalse;
+ }
+
+ if ( _L("UnknownNumber") == typestring )
+ {
+ group.iNumber.iTypeOfNumber = RMobilePhone::EUnknownNumber;
+ }
+ else if ( _L("InternationalNumber") == typestring )
+ {
+ group.iNumber.iTypeOfNumber = RMobilePhone::EInternationalNumber;
+ }
+ else if ( _L("NationalNumber") == typestring )
+ {
+ group.iNumber.iTypeOfNumber = RMobilePhone::ENationalNumber;
+ }
+ else if ( _L("NetworkSpecificNumber") == typestring )
+ {
+ group.iNumber.iTypeOfNumber = RMobilePhone::ENetworkSpecificNumber;
+ }
+ else if ( _L("SubscriberNumber") == typestring )
+ {
+ group.iNumber.iTypeOfNumber = RMobilePhone::ESubscriberNumber;
+ }
+ else if ( _L("AlphanumericNumber") == typestring )
+ {
+ group.iNumber.iTypeOfNumber = RMobilePhone::EAlphanumericNumber;
+ }
+ else if ( _L("AbbreviatedNumber") == typestring )
+ {
+ group.iNumber.iTypeOfNumber = RMobilePhone::EAbbreviatedNumber;
+ }
+ else
+ {
+ _LIT8(KNotSupp, "UICC::Selected set call forwarding type of number not supported");
+ iUICCLog->Log((TDesC8)KNotSupp);
+ supported = EFalse;
+ }
+
+ if ( _L("UnknownNumberingPlan") == planstring )
+ {
+ group.iNumber.iNumberPlan = RMobilePhone::EUnknownNumberingPlan;
+ }
+ else if ( _L("IsdnNumberPlan") == planstring )
+ {
+ group.iNumber.iNumberPlan = RMobilePhone::EIsdnNumberPlan;
+ }
+ else if ( _L("DataNumberPlan") == planstring )
+ {
+ group.iNumber.iNumberPlan = RMobilePhone::EDataNumberPlan;
+ }
+ else if ( _L("TelexNumberPlan") == planstring )
+ {
+ group.iNumber.iNumberPlan = RMobilePhone::ETelexNumberPlan;
+ }
+ else if ( _L("ServiceCentreSpecificPlan1") == planstring )
+ {
+ group.iNumber.iNumberPlan = RMobilePhone::EServiceCentreSpecificPlan1;
+ }
+ else if ( _L("ServiceCentreSpecificPlan2") == planstring )
+ {
+ group.iNumber.iNumberPlan = RMobilePhone::EServiceCentreSpecificPlan2;
+ }
+ else if ( _L("NationalNumberPlan") == planstring )
+ {
+ group.iNumber.iNumberPlan = RMobilePhone::ENationalNumberPlan;
+ }
+ else if ( _L("PrivateNumberPlan") == planstring )
+ {
+ group.iNumber.iNumberPlan = RMobilePhone::EPrivateNumberPlan;
+ }
+ else if ( _L("ERMESNumberPlan") == planstring )
+ {
+ group.iNumber.iNumberPlan = RMobilePhone::EERMESNumberPlan;
+ }
+ else
+ {
+ _LIT8(KNotSupp, "UICC::Selected set call forwarding number plan not supported");
+ iUICCLog->Log((TDesC8)KNotSupp);
+ supported = EFalse;
+ }
+
+ group.iNumber.iTelNumber.Copy(numberstring);
+
+ if ( _L("CallForwardingNoReply") == string && _L("ServiceActionRegister") == actionstring)
+ {
+
+ TLex lex(timestring);
+
+ TInt dataValue = 0;
+ lex.Val(dataValue);
+
+ for(TInt i = 5; i < 30; i = i+5)
+ {
+ if( dataValue == i )
+ {
+ group.iTimeout = i;
+ }
+
+ if( dataValue != i && i == 30 )
+ {
+ _LIT8(KNotSupp, "UICC::Selected timeout is not supported");
+ iUICCLog->Log((TDesC8)KNotSupp);
+ supported = EFalse;
+ }
+ }
+ }
+ else
+ {
+ group.iTimeout = -1;
+ }
+
+ if( supported )
+ {
+ RMobilePhone::TMobilePhoneCFChangeV1* groupPtr = &group;
+
+ //Create package
+ CMmDataPackage package;
+ // Set package data
+ package.PackData( &condition, &groupPtr);
+
+ ret = HandleRequestL( EMobilePhoneSetCallForwardingStatus, &package );
+
+ if ( KErrNone == ret )
+ {
+ _LIT8( KSendOk, "SetCallForwardingStatus request send ok" );
+ iUICCLog->Log((TDesC8)KSendOk );
+ }
+ else
+ {
+ _LIT8( KSendFailed, "SetCallForwardingStatus request send failed: %d" );
+ iUICCLog->Log((TDesC8)KSendFailed, ret );
+ }
+ }
+ else
+ {
+ ret = KErrNotSupported;
+ }
+
+ return ret;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CUICC::CompleteSetCallFwdStatus
+// Complete CompleteSetCallFwdStatus method function.
+// -----------------------------------------------------------------------------
+//
+void CUICC::CompleteSetCallFwdStatus(
+ TInt aResult, CMmDataPackage* /*aDataPackage*/ )
+ {
+ _LIT8( KResult, "CompleteSetCallFwdStatus result: %d" );
+ iUICCLog->Log((TDesC8)KResult, aResult );
+
+ if( KErrNone == aResult )
+ {
+ Signal( aResult );
+ }
+ else
+ {
+ _LIT8( KFail, "CompleteSetCallFwdStatus failed: %d" );
+ iUICCLog->Log((TDesC8)KFail, aResult );
+ }
+
+ Signal( aResult );
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::CompleteNotifyIccCallForwardingStatusChange
+// Complete CompleteNotifyIccCallForwardingStatusChange method function.
+// -----------------------------------------------------------------------------
+//
+void CUICC::CompleteNotifyIccCallForwardingStatusChange(
+ TInt aResult,
+ CMmDataPackage* aDataPackage )
+ {
+ _LIT8( KResult, "CompleteNotifyIccCallForwardingStatusChange result: %d" );
+ iUICCLog->Log((TDesC8)KResult, aResult );
+
+ RMmCustomAPI::TCFIndicators iTCFIndicators;
+ aDataPackage->UnPackData( iTCFIndicators );
+
+ if( KErrNone == aResult )
+ {
+ if( iIndicator != iTCFIndicators.iIndicator )
+ {
+ aResult = KErrGeneral;
+ }
+ Signal( aResult );
+ }
+ else
+ {
+ _LIT8( KFail, "CompleteNotifyIccCallForwardingStatusChange failed: %d" );
+ iUICCLog->Log((TDesC8)KFail, aResult );
+ }
+
+ Signal( aResult );
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::GetEhplmn
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::GetEhplmn( CStifItemParser& /*aItem*/ )
+ {
+ _LIT8(KLog, "UICC::GetEhplmn");
+ iUICCLog->Log((TDesC8)KLog);
+
+ TInt ret( KErrNone );
+ ret = HandleRequestL( EMobilePhoneGetHomeNetwork );
+
+ if ( KErrNone == ret )
+ {
+ _LIT8( KSendOk, "GetEhplmn request send ok" );
+ iUICCLog->Log((TDesC8)KSendOk );
+ }
+ else
+ {
+ _LIT8( KSendFailed, "GetEhplmn request send failed: %d" );
+ iUICCLog->Log((TDesC8)KSendFailed, ret );
+ }
+
+ return ret;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CUICC::CompleteGetGetEhplmn
+// -----------------------------------------------------------------------------
+//
+void CUICC::CompleteGetEhplmn( TInt aResult, CMmDataPackage* /*aDataPackage*/ )
+ {
+ _LIT8( KResult, "CompleteGetGetEhplmn result: %d" );
+ iUICCLog->Log((TDesC8)KResult, aResult );
+
+ if( KErrNone == aResult )
+ {
+ Signal( aResult );
+ }
+ else
+ {
+ _LIT8( KFail, "CompleteGetCiStatus failed: %d" );
+ iUICCLog->Log((TDesC8)KFail, aResult );
+ }
+
+ Signal( aResult );
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::PbInitL
+// Phonebook initialization
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::PbInitL( CStifItemParser& aItem )
+ {
+ _LIT8(KPbInit, "UICC::PbInit");
+ iUICCLog->Log((TDesC8)KPbInit);
+ TInt ret( KErrNotFound );
+ TBool supported( ETrue );
+ TPtrC string;
+ aItem.GetNextString( string );
+ if ( _L("Adn") == string )
+ {
+ iUICCLog->Log((TDesC8)KAdnPhoneBook);
+ iPhoneBookName = KETelIccAdnPhoneBook;
+ if ( iHandleSpecifiedRequests )
+ {
+ TInt value;
+ aItem.GetNextInt( value );
+ iRefPBStoreInfoData->iIsPhonebookInitialized = ( TBool )value;
+ aItem.GetNextInt( value );
+ iRefPBStoreInfoData->iIsPhonebookInitializeFailed = ( TBool )value;
+ aItem.GetNextInt( value );
+ iRefPBStoreInfoData->iADNNumOfEntries = value;
+ aItem.GetNextInt( value );
+ iRefPBStoreInfoData->iADNTextLengthMax = value;
+ aItem.GetNextInt( value );
+ iRefPBStoreInfoData->iADNNumberLengthMax = value;
+ aItem.GetNextInt( value );
+ iRefPBStoreInfoData->iSNENumOfEntries = value;
+ aItem.GetNextInt( value );
+ iRefPBStoreInfoData->iSNENumOfEntriesPerEntry = value;
+ aItem.GetNextInt( value );
+ iRefPBStoreInfoData->iSNETextLengthMax = value;
+ aItem.GetNextInt( value );
+ iRefPBStoreInfoData->iEmailNumOfEntries = value;
+ aItem.GetNextInt( value );
+ iRefPBStoreInfoData->iEmailNumOfEntriesPerEntry = value;
+ aItem.GetNextInt( value );
+ iRefPBStoreInfoData->iEmailTextLengthMax = value;
+ aItem.GetNextInt( value );
+ iRefPBStoreInfoData->iGRPNumOfEntriesPerEntry = value;
+ aItem.GetNextInt( value );
+ iRefPBStoreInfoData->iANRNumOfEntries = value;
+ aItem.GetNextInt( value );
+ iRefPBStoreInfoData->iANRNumOfEntriesPerEntry = value;
+ aItem.GetNextInt( value );
+ iRefPBStoreInfoData->iANRNumLengthMax = value;
+ aItem.GetNextInt( value );
+ iPbType[value] = TPhoneBookTypeAdn;
+ }
+ }
+ else if ( _L("Bdn") == string )
+ {
+ iUICCLog->Log((TDesC8)KBdnPhoneBook);
+ iPhoneBookName = KETelIccBdnPhoneBook;
+ }
+ else if ( _L("Sdn") == string )
+ {
+ iUICCLog->Log((TDesC8)KSdnPhoneBook);
+ iPhoneBookName = KETelIccSdnPhoneBook;
+ if ( iHandleSpecifiedRequests )
+ {
+ TInt value;
+ aItem.GetNextInt( value );
+ iPbStorageDataSdn.iIsPhonebookInitialized = ( TBool )value;
+ aItem.GetNextInt( value );
+ iPbStorageDataSdn.iIsPhonebookInitializeFailed = ( TBool )value;
+ aItem.GetNextInt( value );
+ iPbStorageDataSdn.iXXXNumOfEntries = value;
+ aItem.GetNextInt( value );
+ iPbStorageDataSdn.iXXXTextLengthMax = value;
+ aItem.GetNextInt( value );
+ iPbStorageDataSdn.iXXXNumberLengthMax = value;
+ aItem.GetNextInt( value );
+ iPbType[value] = TPhoneBookTypeSdn;
+ }
+ }
+ else if ( _L("Fdn") == string )
+ {
+ iUICCLog->Log((TDesC8)KFdnPhoneBook);
+ iPhoneBookName = KETelIccFdnPhoneBook;
+ if ( iHandleSpecifiedRequests )
+ {
+ TInt value;
+ aItem.GetNextInt( value );
+ iPbStorageDataFdn.iIsPhonebookInitialized = ( TBool )value;
+ aItem.GetNextInt( value );
+ iPbStorageDataFdn.iIsPhonebookInitializeFailed = ( TBool )value;
+ aItem.GetNextInt( value );
+ iPbStorageDataFdn.iXXXNumOfEntries = value;
+ aItem.GetNextInt( value );
+ iPbStorageDataFdn.iXXXTextLengthMax = value;
+ aItem.GetNextInt( value );
+ iPbStorageDataFdn.iXXXNumberLengthMax = value;
+ aItem.GetNextInt( value );
+ iPbType[value] = TPhoneBookTypeFdn;
+ }
+ }
+ else if ( _L("VoiceMailBox") == string )
+ {
+ iUICCLog->Log((TDesC8)KVoiceMailBox);
+ iPhoneBookName = KETelIccVoiceMailBox;
+ }
+ else
+ {
+ _LIT8(KNotSupp, "UICC::Selected PB not supported");
+ iUICCLog->Log((TDesC8)KNotSupp);
+ supported = EFalse;
+ }
+ if ( supported )
+ {
+ CPhoneBookDataPackage package;
+ package.SetPhoneBookName( iPhoneBookName );
+ ret = HandleRequestL( EMmTsyPhoneBookStoreInitIPC, &package );
+ if ( KErrNone == ret )
+ {
+ _LIT8( KSendOk, "PbInit request send ok" );
+ iUICCLog->Log((TDesC8)KSendOk );
+ }
+ else
+ {
+ _LIT8( KSendFailed, "PbInit request send failed: %d" );
+ iUICCLog->Log((TDesC8)KSendFailed, ret );
+ }
+ }
+ else
+ {
+ ret = KErrNotSupported;
+ }
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::CompletePbInit
+// Complete PbInit method function.
+// -----------------------------------------------------------------------------
+//
+void CUICC::CompletePbInit
+ (
+ TInt aResult,
+ CMmDataPackage* aDataPackage
+ )
+ {
+ _LIT8( KResult, "CompletePbInit result: %d" );
+ iUICCLog->Log((TDesC8)KResult, aResult );
+ // Response information
+ CStorageInfoData* pbInitResp;
+ TInt i;
+
+ if ( KErrNone == aResult )
+ {
+ aDataPackage->UnPackData ( &pbInitResp );
+ PrintPbInitInfo( pbInitResp );
+
+ if ( iHandleSpecifiedRequests )
+ {
+ // select used phonebook type for data validation
+ TPhoneBookType pbType( TPhoneBookTypeUnknown );
+ for ( i = 0; i < 2; i++)
+ {
+ if ( iPbType[i] != TPhoneBookTypeUnknown )
+ {
+ pbType = iPbType[i];
+ break;
+ }
+ }
+ aResult = CheckPbData( pbInitResp, pbType );
+ // reset phonebook type
+ iPbType[i] = TPhoneBookTypeUnknown;
+ }
+ }
+ else
+ {
+ _LIT8( KFail, "CompletePbInit Failed: %d" );
+ iUICCLog->Log((TDesC8)KFail, aResult );
+ }
+
+ // in case of failure, send result immediately
+ if( KErrNone != aResult )
+ {
+ Signal( aResult );
+ }
+
+ // in successful case, send result if test is not ongoing
+ else if( ! iTestOngoing )
+ {
+ Signal( aResult );
+ }
+
+ iTestOngoing = EFalse;
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::CheckPbData
+// Check that phonebook data is as expected
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::CheckPbData( CStorageInfoData* aPbData, TPhoneBookType aPbType )
+ {
+ TInt error( KErrNone );
+
+ if ( TPhoneBookTypeAdn == aPbType )
+ {
+/* if ( aPbData->iIsPhonebookInitialized != iPbStorageDataAdn.iIsPhonebookInitialized ||
+ aPbData->iIsPhonebookInitializeFailed != iPbStorageDataAdn.iIsPhonebookInitializeFailed ||
+ aPbData->iADNNumOfEntries != iPbStorageDataAdn.iXXXNumOfEntries ||
+ aPbData->iADNTextLengthMax != iPbStorageDataAdn.iXXXTextLengthMax ||
+ aPbData->iADNNumberLengthMax != iPbStorageDataAdn.iXXXNumberLengthMax )
+ {
+ error = KErrGeneral;
+ }*/
+ if ( aPbData->iIsPhonebookInitialized != iRefPBStoreInfoData->iIsPhonebookInitialized ||
+ aPbData->iIsPhonebookInitializeFailed != iRefPBStoreInfoData->iIsPhonebookInitializeFailed ||
+ aPbData->iADNNumOfEntries != iRefPBStoreInfoData->iADNNumOfEntries ||
+ aPbData->iADNTextLengthMax != iRefPBStoreInfoData->iADNTextLengthMax ||
+ aPbData->iADNNumberLengthMax != iRefPBStoreInfoData->iADNNumberLengthMax ||
+ aPbData->iSNENumOfEntries != iRefPBStoreInfoData->iSNENumOfEntries ||
+ aPbData->iSNENumOfEntriesPerEntry != iRefPBStoreInfoData->iSNENumOfEntriesPerEntry ||
+ aPbData->iSNETextLengthMax != iRefPBStoreInfoData->iSNETextLengthMax ||
+ aPbData->iEmailNumOfEntries != iRefPBStoreInfoData->iEmailNumOfEntries ||
+ aPbData->iEmailNumOfEntriesPerEntry != iRefPBStoreInfoData->iEmailNumOfEntriesPerEntry ||
+ aPbData->iEmailTextLengthMax != iRefPBStoreInfoData->iEmailTextLengthMax ||
+ aPbData->iGRPNumOfEntriesPerEntry != iRefPBStoreInfoData->iGRPNumOfEntriesPerEntry ||
+ aPbData->iANRNumOfEntries != iRefPBStoreInfoData->iANRNumOfEntries ||
+ aPbData->iANRNumOfEntriesPerEntry != iRefPBStoreInfoData->iANRNumOfEntriesPerEntry ||
+ aPbData->iANRNumLengthMax != iRefPBStoreInfoData->iANRNumLengthMax )
+ {
+ error = KErrGeneral;
+ }
+ }
+ else if ( TPhoneBookTypeFdn == aPbType )
+ {
+ if ( aPbData->iIsPhonebookInitialized != iPbStorageDataFdn.iIsPhonebookInitialized ||
+ aPbData->iIsPhonebookInitializeFailed != iPbStorageDataFdn.iIsPhonebookInitializeFailed ||
+ aPbData->iFDNNumOfEntries != iPbStorageDataFdn.iXXXNumOfEntries ||
+ aPbData->iFDNTextLengthMax != iPbStorageDataFdn.iXXXTextLengthMax ||
+ aPbData->iFDNNumberLengthMax != iPbStorageDataFdn.iXXXNumberLengthMax )
+ {
+ error = KErrGeneral;
+ }
+ }
+ else if ( TPhoneBookTypeSdn == aPbType )
+ {
+ if ( aPbData->iIsPhonebookInitialized != iPbStorageDataSdn.iIsPhonebookInitialized ||
+ aPbData->iIsPhonebookInitializeFailed != iPbStorageDataSdn.iIsPhonebookInitializeFailed ||
+ aPbData->iFDNNumOfEntries != iPbStorageDataSdn.iXXXNumOfEntries ||
+ aPbData->iFDNTextLengthMax != iPbStorageDataSdn.iXXXTextLengthMax ||
+ aPbData->iFDNNumberLengthMax != iPbStorageDataSdn.iXXXNumberLengthMax )
+ {
+ error = KErrGeneral;
+ }
+ }
+ else if ( TPhoneBookTypeMbdn == aPbType )
+ {
+ if ( aPbData->iIsPhonebookInitialized != iPbStorageDataMbdn.iIsPhonebookInitialized ||
+ aPbData->iIsPhonebookInitializeFailed != iPbStorageDataMbdn.iIsPhonebookInitializeFailed ||
+ aPbData->iFDNNumOfEntries != iPbStorageDataMbdn.iXXXNumOfEntries ||
+ aPbData->iFDNTextLengthMax != iPbStorageDataMbdn.iXXXTextLengthMax ||
+ aPbData->iFDNNumberLengthMax != iPbStorageDataMbdn.iXXXNumberLengthMax )
+ {
+ error = KErrGeneral;
+ }
+ }
+
+ return error;
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::PrintPbInitInfo
+// Prints Pb info
+// -----------------------------------------------------------------------------
+//
+void CUICC::PrintPbInitInfo
+ (
+ CStorageInfoData* aPbInitInfo
+ )
+ {
+ iUICCLog->Log((TDesC8)KLine );
+ _LIT8( KText, "Pb Init Info" );
+ iUICCLog->Log((TDesC8)KText );
+
+ _LIT8( KADNNumOfEntries, "ADNNumOfEntries: %d" );
+ iUICCLog->Log((TDesC8)KADNNumOfEntries, aPbInitInfo->iADNNumOfEntries );
+
+ _LIT8( KADNTextLengthMax, "ADNTextLengthMax: %d" );
+ iUICCLog->Log((TDesC8)KADNTextLengthMax, aPbInitInfo->iADNTextLengthMax );
+
+ _LIT8( KADNNumberLengthMax, "ADNNumberLengthMax: %d" );
+ iUICCLog->Log((TDesC8)KADNNumberLengthMax, aPbInitInfo->iADNNumberLengthMax );
+
+ _LIT8( KSNENumOfEntries, "SNENumOfEntries: %d" );
+ iUICCLog->Log((TDesC8)KSNENumOfEntries, aPbInitInfo->iSNENumOfEntries );
+
+ _LIT8( KSNENumOfEntriesPerEntry, "SNENumOfEntriesPerEntry: %d" );
+ iUICCLog->Log((TDesC8)KSNENumOfEntriesPerEntry, aPbInitInfo->iSNENumOfEntriesPerEntry );
+
+ _LIT8( KSNENumLengthMax, "SNETextLengthMax: %d" );
+ iUICCLog->Log((TDesC8)KSNENumLengthMax, aPbInitInfo->iSNETextLengthMax );
+
+ _LIT8( KEmailNumOfEntries, "EmailNumOfEntries: %d" );
+ iUICCLog->Log((TDesC8)KEmailNumOfEntries, aPbInitInfo->iEmailNumOfEntries );
+
+ _LIT8( KEMailNumOfEntriesPerEntry, "EmailNumOfEntriesPerEntry: %d" );
+ iUICCLog->Log((TDesC8)KEMailNumOfEntriesPerEntry, aPbInitInfo->iEmailNumOfEntriesPerEntry );
+
+ _LIT8( KEmailNumLengthMax, "EmailTextLengthMax: %d" );
+ iUICCLog->Log((TDesC8)KEmailNumLengthMax, aPbInitInfo->iEmailTextLengthMax );
+
+ _LIT8( KGRPNumOfEntriesPerEntry, "GRPNumOfEntriesPerEntry: %d" );
+ iUICCLog->Log((TDesC8)KGRPNumOfEntriesPerEntry, aPbInitInfo->iGRPNumOfEntriesPerEntry );
+
+ _LIT8( KANRNumOfEntries, "ANRNumOfEntries: %d" );
+ iUICCLog->Log((TDesC8)KANRNumOfEntries, aPbInitInfo->iANRNumOfEntries );
+
+ _LIT8( KANRNumOfEntriesPerEntry, "ANRNumOfEntriesPerEntry: %d" );
+ iUICCLog->Log((TDesC8)KANRNumOfEntriesPerEntry, aPbInitInfo->iANRNumOfEntriesPerEntry );
+
+ _LIT8( KANRNumLengthMax, "ANRNumLengthMax: %d" );
+ iUICCLog->Log((TDesC8)KANRNumLengthMax, aPbInitInfo->iANRNumLengthMax );
+
+ _LIT8( KFDNNumOfEntries, "FDNNumOfEntries: %d" );
+ iUICCLog->Log((TDesC8)KFDNNumOfEntries, aPbInitInfo->iFDNNumOfEntries );
+
+ _LIT8( KFDNTextLengthMax, "FDNTextLengthMax: %d" );
+ iUICCLog->Log((TDesC8)KFDNTextLengthMax, aPbInitInfo->iFDNTextLengthMax );
+
+ _LIT8( KFDNNumberLengthMax, "FDNNumberLengthMax: %d" );
+ iUICCLog->Log((TDesC8)KFDNNumberLengthMax, aPbInitInfo->iFDNNumberLengthMax );
+
+ _LIT8( KSDNNumOfEntries, "SDNNumOfEntries: %d" );
+ iUICCLog->Log((TDesC8)KSDNNumOfEntries, aPbInitInfo->iSDNNumOfEntries );
+
+ _LIT8( KSDNTextLengthMax, "SDNTextLengthMax: %d" );
+ iUICCLog->Log((TDesC8)KSDNTextLengthMax, aPbInitInfo->iSDNTextLengthMax );
+
+ _LIT8( KSDNNumberLengthMax, "SDNNumberLengthMax: %d" );
+ iUICCLog->Log((TDesC8)KSDNNumberLengthMax, aPbInitInfo->iSDNNumberLengthMax );
+
+ _LIT8( KVMBXNumOfEntries, "VMBXNumOfEntries: %d" );
+ iUICCLog->Log((TDesC8)KVMBXNumOfEntries, aPbInitInfo->iVMBXNumOfEntries );
+
+ _LIT8( KVMBXTextLengthMax, "VMBXTextLengthMax: %d" );
+ iUICCLog->Log((TDesC8)KVMBXTextLengthMax, aPbInitInfo->iVMBXTextLengthMax );
+
+ _LIT8( KVMBXNumberLengthMax, "VMBXNumberLengthMax: %d" );
+ iUICCLog->Log((TDesC8)KVMBXNumberLengthMax, aPbInitInfo->iVMBXNumberLengthMax );
+
+#ifdef INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS
+ _LIT8( KANRTextLengthMax, "ANRTextLengthMax (AAS): %d" );
+ iUICCLog->Log((TDesC8)KANRTextLengthMax, aPbInitInfo->iANRTextLengthMax );
+
+ _LIT8( KNumOfAasMax, "NumOfAasMax: %d" );
+ iUICCLog->Log((TDesC8)KNumOfAasMax, aPbInitInfo->iNumOfAasMax );
+
+ _LIT8( KGRPTextLengthMax, "GRPTextLengthMax: %d" );
+ iUICCLog->Log((TDesC8)KGRPTextLengthMax, aPbInitInfo->iGRPTextLengthMax );
+
+ _LIT8( KNumOfGasMax, "NumOfGasMax: %d" );
+ iUICCLog->Log((TDesC8)KNumOfGasMax, aPbInitInfo->iNumOfGasMax );
+#endif // INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::GetServiceProviderName
+// GetServiceProviderName
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::GetServiceProviderName( CStifItemParser& aItem )
+ {
+ _LIT8(KSPN, "UICC::GetServiceProviderName");
+ iUICCLog->Log((TDesC8)KSPN);
+
+ TInt ret( KErrNotFound );
+
+ if( iHandleSpecifiedRequests )
+ {
+ TInt temp;
+ aItem.GetNextInt( temp );
+ iServiceProviderName.iDisplayReq = temp;
+ TPtrC string;
+ aItem.GetNextString( string );
+ iServiceProviderName.iSPName = string;
+ aItem.GetNextInt( temp );
+ iServiceProviderName.iPLMNField.Append(temp);
+ aItem.GetNextInt( temp );
+ iServiceProviderName.iPLMNField.Append(temp);
+ aItem.GetNextInt( temp );
+ iServiceProviderName.iPLMNField.Append(temp);
+ aItem.GetNextInt( temp );
+ iServiceProviderName.iPLMNField.Append(temp);
+ aItem.GetNextInt( temp );
+ iServiceProviderName.iPLMNField.Append(temp);
+ aItem.GetNextInt( temp );
+ iServiceProviderName.iPLMNField.Append(temp);
+ }
+
+ ret = HandleRequestL( EMobilePhoneGetServiceProviderName );
+
+ if ( KErrNone == ret )
+ {
+ _LIT8( KSendOk, "GetServiceProviderName request send ok" );
+ iUICCLog->Log((TDesC8)KSendOk );
+ }
+ else
+ {
+ _LIT8( KSendFailed, "GetServiceProviderName request send failed: %d" );
+ iUICCLog->Log((TDesC8)KSendFailed, ret );
+ }
+
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::CompleteGetServiceProviderName
+// Complete GetServiceProviderName method function.
+// -----------------------------------------------------------------------------
+//
+void CUICC::CompleteGetServiceProviderName(
+ TInt aResult,
+ CMmDataPackage* aDataPackage )
+ {
+ _LIT8( KResult, "CompleteGetServiceProviderName result: %d" );
+ iUICCLog->Log((TDesC8)KResult, aResult );
+
+ if( KErrNone == aResult )
+ {
+ RMobilePhone::TMobilePhoneServiceProviderNameV2 serviceProviderName;
+ aDataPackage->UnPackData( serviceProviderName );
+
+ TBuf8<255> drBuffer;
+ _LIT8(KRowFormatter1, "Display req: %d");
+ drBuffer.Format(KRowFormatter1, &serviceProviderName.iDisplayReq);
+ iUICCLog->Log(drBuffer);
+
+ TBuf8<255> nameBuffer;
+ _LIT8(KRowFormatter2, "Service provider name: %S");
+ nameBuffer.Format(KRowFormatter2, &serviceProviderName.iSPName);
+ iUICCLog->Log(nameBuffer);
+
+ TBuf8<255> plmnBuffer;
+ _LIT8(KRowFormatter3, "PLMN field: %S");
+ plmnBuffer.Format(KRowFormatter3, &serviceProviderName.iPLMNField);
+ iUICCLog->Log(plmnBuffer);
+
+ if( iHandleSpecifiedRequests )
+ {
+ if( iServiceProviderName.iDisplayReq !=
+ serviceProviderName.iDisplayReq )
+ {
+ aResult = KErrGeneral;
+ }
+ if( iServiceProviderName.iSPName !=
+ serviceProviderName.iSPName )
+ {
+ aResult = KErrGeneral;
+ }
+ if( iServiceProviderName.iPLMNField !=
+ serviceProviderName.iPLMNField )
+ {
+ aResult = KErrGeneral;
+ }
+ }
+ }
+ else
+ {
+ _LIT8( KFail, "CompleteGetServiceProviderName Failed: %d" );
+ iUICCLog->Log((TDesC8)KFail, aResult );
+ }
+
+ Signal( aResult );
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::GetCustomerServiceProfile
+// Get Customer Service Profile
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::GetCustomerServiceProfile( CStifItemParser& aItem )
+ {
+ _LIT8(KGetCSP, "UICC::GetCustomerServiceProfile");
+ iUICCLog->Log((TDesC8)KGetCSP);
+
+ TInt ret( KErrNotFound );
+
+ // Store given parameters for validity checking
+ if( iHandleSpecifiedRequests )
+ {
+ TInt temp;
+ aItem.GetNextInt( temp );
+ iCspFile.iCallOfferingServices = temp;
+ aItem.GetNextInt( temp );
+ iCspFile.iCallRestrictionServices = temp;
+ aItem.GetNextInt( temp );
+ iCspFile.iOtherSuppServices = temp;
+ aItem.GetNextInt( temp );
+ iCspFile.iCallCompletionServices = temp;
+ aItem.GetNextInt( temp );
+ iCspFile.iTeleservices = temp;
+ aItem.GetNextInt( temp );
+ iCspFile.iCphsTeleservices = temp;
+ aItem.GetNextInt( temp );
+ iCspFile.iCphsFeatures = temp;
+ aItem.GetNextInt( temp );
+ iCspFile.iNumberIdentServices = temp;
+ aItem.GetNextInt( temp );
+ iCspFile.iPhase2PlusServices = temp;
+ aItem.GetNextInt( temp );
+ iCspFile.iValueAddedServices = temp;
+ }
+
+ ret = HandleRequestL( EMobilePhoneGetCustomerServiceProfile );
+
+ if ( KErrNone == ret )
+ {
+ _LIT8( KSendOk, "GetCustomerServiceProfile request send ok" );
+ iUICCLog->Log((TDesC8)KSendOk );
+ }
+ else
+ {
+ _LIT8( KSendFailed, "GetCustomerServiceProfile request send failed: %d" );
+ iUICCLog->Log((TDesC8)KSendFailed, ret );
+ }
+
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::CompleteGetCustomerServiceProfile
+// Complete Get Customer Service Profile
+// -----------------------------------------------------------------------------
+//
+void CUICC::CompleteGetCustomerServiceProfile
+ (
+ TInt aResult,
+ CMmDataPackage* aDataPackage
+ )
+ {
+ _LIT8( KResult, "CompleteGetCustomerServiceProfile result: %d" );
+ iUICCLog->Log((TDesC8)KResult, aResult );
+
+ if( KErrNone == aResult )
+ {
+ RMobilePhone::TMobilePhoneCspFileV1 cspFile;
+
+ if( aDataPackage )
+ {
+ aDataPackage->UnPackData( cspFile );
+
+ _LIT8( KCOS, "CallOfferingServices: %d" );
+ iUICCLog->Log((TDesC8)KCOS, cspFile.iCallOfferingServices );
+ _LIT8( KCRS, "CallRestrictionServices: %d" );
+ iUICCLog->Log((TDesC8)KCRS, cspFile.iCallRestrictionServices );
+ _LIT8( KOSS, "OtherSuppServices: %d" );
+ iUICCLog->Log((TDesC8)KOSS, cspFile.iOtherSuppServices );
+ _LIT8( KCCS, "CallCompletionServices: %d" );
+ iUICCLog->Log((TDesC8)KCCS, cspFile.iCallCompletionServices );
+ _LIT8( KTS, "Teleservices: %d" );
+ iUICCLog->Log((TDesC8)KTS, cspFile.iTeleservices );
+ _LIT8( KCTS, "CphsTeleservices: %d" );
+ iUICCLog->Log((TDesC8)KCTS, cspFile.iCphsTeleservices );
+ _LIT8( KCF, "CphsFeatures: %d" );
+ iUICCLog->Log((TDesC8)KCF, cspFile.iCphsFeatures );
+ _LIT8( KNIS, "NumberIdentServices: %d" );
+ iUICCLog->Log((TDesC8)KNIS, cspFile.iNumberIdentServices );
+ _LIT8( KPPS, "Phase2PlusServices: %d" );
+ iUICCLog->Log((TDesC8)KPPS, cspFile.iPhase2PlusServices );
+ _LIT8( KVAS, "ValueAddedServices: %d" );
+ iUICCLog->Log((TDesC8)KVAS, cspFile.iValueAddedServices );
+
+ // Validity checking
+ if( iHandleSpecifiedRequests )
+ {
+ if( iCspFile.iCallOfferingServices != cspFile.iCallOfferingServices ||
+ iCspFile.iCallRestrictionServices != cspFile.iCallRestrictionServices ||
+ iCspFile.iOtherSuppServices != cspFile.iOtherSuppServices ||
+ iCspFile.iCallCompletionServices != cspFile.iCallCompletionServices ||
+ iCspFile.iTeleservices != cspFile.iTeleservices ||
+ iCspFile.iCphsTeleservices != cspFile.iCphsTeleservices ||
+ iCspFile.iCphsFeatures != cspFile.iCphsFeatures ||
+ iCspFile.iNumberIdentServices != cspFile.iNumberIdentServices ||
+ iCspFile.iPhase2PlusServices != cspFile.iPhase2PlusServices ||
+ iCspFile.iValueAddedServices != cspFile.iValueAddedServices )
+ {
+ aResult = KErrGeneral;
+ }
+ }
+ }
+ }
+ else
+ {
+ _LIT8( KFail, "CompleteGetCustomerServiceProfile Failed: %d" );
+ iUICCLog->Log((TDesC8)KFail, aResult );
+ }
+
+ Signal( aResult );
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::ReadSimFile
+// ReadSimFile
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::ReadSimFile( CStifItemParser& aItem )
+ {
+ _LIT8(KReadSimFile, "UICC::ReadSimFile");
+ iUICCLog->Log((TDesC8)KReadSimFile);
+
+ TInt ret( KErrNotFound );
+ TBool supported( ETrue );
+ TPtrC string;
+
+ RMmCustomAPI::TSimFileInfo simFileInfo;
+
+ // File ID
+ TBuf8<8> path; // File path in SIM where file is read
+ TInt offSet; // Offset from beginning of the file
+ TInt size; // Amount of data to read
+
+ TInt masterFile; // Master File
+ TInt dedicatedFile1; // Dedicated File
+
+ aItem.GetNextInt( masterFile );
+ aItem.GetNextInt( dedicatedFile1 );
+ aItem.GetNextInt( offSet );
+ aItem.GetNextInt( size );
+
+ path.Append(masterFile>>8);
+ path.Append(masterFile);
+ path.Append(dedicatedFile1>>8);
+ path.Append(dedicatedFile1);
+
+ simFileInfo.iPath = path;
+ simFileInfo.iOffSet = (TUint16)offSet;
+ simFileInfo.iSize = (TUint16)size;
+
+ //Create package
+ CMmDataPackage dataPackage;
+ dataPackage.PackData( &simFileInfo );
+
+ ret = HandleRequestL( ECustomReadSimFileIPC, &dataPackage );
+
+ if ( KErrNone == ret )
+ {
+ _LIT8( KSendOk, "ReadSimFile request send ok" );
+ iUICCLog->Log((TDesC8)KSendOk );
+ }
+ else
+ {
+ _LIT8( KSendFailed, "ReadSimFile request send failed: %d" );
+ iUICCLog->Log((TDesC8)KSendFailed, ret );
+ }
+
+ return ret;
+
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::CompleteReadSimFile
+// Complete ReadSimFile method function.
+// -----------------------------------------------------------------------------
+//
+void CUICC::CompleteReadSimFile( TInt aResult, CMmDataPackage* /*aDataPackage*/ )
+ {
+ _LIT8( KResult, "CompleteReadSimFile result: %d" );
+ iUICCLog->Log((TDesC8)KResult, aResult );
+
+ if( KErrNone == aResult )
+ {
+ _LIT8( KPass, "CompleteReadSimFile Passed: %d" );
+ iUICCLog->Log((TDesC8)KPass, aResult );
+ }
+ else
+ {
+ _LIT8( KFail, "CompleteReadSimFile Failed: %d" );
+ iUICCLog->Log((TDesC8)KFail, aResult );
+ }
+
+ Signal( aResult );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CUICC::ReadMailboxIdentifier
+// Read EF MBI 6FC9
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::GetMailboxIdentifier( CStifItemParser& aItem )
+ {
+ _LIT8(KGetMailboxIdentifier, "UICC::GetMailboxIdentifier");
+ iUICCLog->Log((TDesC8)KGetMailboxIdentifier);
+
+ TInt ret( KErrNotFound );
+
+ TInt temp;
+ aItem.GetNextInt( temp );
+ iVoicemailIds.iVoice = temp;
+ aItem.GetNextInt( temp );
+ iVoicemailIds.iFax = temp;
+ aItem.GetNextInt( temp );
+ iVoicemailIds.iData = temp;
+ aItem.GetNextInt( temp );
+ iVoicemailIds.iOther = temp;
+
+ ret = HandleRequestL( EMobilePhoneGetMailboxNumbers );
+
+ if ( KErrNone == ret )
+ {
+ _LIT8( KSendOk, "GetMailboxIdentifier request send ok" );
+ iUICCLog->Log((TDesC8)KSendOk );
+ }
+ else
+ {
+ _LIT8( KSendFailed, "GetMailboxIdentifier request send failed: %d" );
+ iUICCLog->Log((TDesC8)KSendFailed, ret );
+ }
+
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::CompleteGetMailboxIdentifier
+// Complete GetMailboxIdentifier
+// -----------------------------------------------------------------------------
+//
+void CUICC::CompleteGetMailboxIdentifier(
+ TInt aResult,
+ CMmDataPackage* aDataPackage )
+ {
+ _LIT8( KResult, "CompleteGetMailboxIdentifier result: %d" );
+ iUICCLog->Log((TDesC8)KResult, aResult );
+
+ RMobilePhone::TMobilePhoneVoicemailIdsV3* voicemailIds;
+ aDataPackage->UnPackData( voicemailIds );
+
+ if( KErrNone == aResult )
+ {
+ if ( voicemailIds->iVoice != iVoicemailIds.iVoice ||
+ voicemailIds->iFax != iVoicemailIds.iFax ||
+ voicemailIds->iData != iVoicemailIds.iData ||
+ voicemailIds->iOther != iVoicemailIds.iOther )
+ {
+ aResult = KErrGeneral;
+ _LIT8( KFail, "CompleteGetMailboxIdentifier Failed: %d" );
+ iUICCLog->Log((TDesC8)KFail, aResult );
+ }
+ else
+ {
+ _LIT8( KPass, "CompleteGetMailboxIdentifier Passed: %d" );
+ iUICCLog->Log((TDesC8)KPass, aResult );
+ }
+ }
+ else
+ {
+ _LIT8( KFail, "CompleteGetMailboxIdentifier Failed: %d" );
+ iUICCLog->Log((TDesC8)KFail, aResult );
+ }
+
+ Signal( aResult );
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::ReadCBSSimTopics
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::ReadCBSSimTopics( CStifItemParser& aItem )
+ {
+ iUICCLog->Log(_L8("CUICC::ReadCBSSimTopics"));
+ TInt ret( KErrNone );
+
+ TInt temp;
+ aItem.GetNextInt( temp );
+ iSimCbTopic1.iNumber = temp;
+ aItem.GetNextInt( temp );
+ iSimCbTopic2.iNumber = temp;
+ aItem.GetNextInt( temp );
+ iSimCbTopic3.iNumber = temp;
+
+ ret = HandleRequestL( ECustomStartSimCbTopicBrowsingIPC );
+
+ if ( KErrNone != ret )
+ {
+ iUICCLog->Log(_L8("Error in reading CBS SIM topics: %d"), ret );
+ }
+
+ return ret;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CUICC::CompleteReadCBSSimTopics
+// -----------------------------------------------------------------------------
+//
+void CUICC::CompleteReadCBSSimTopics( TInt aErr, CMmDataPackage* aData )
+ {
+ iUICCLog->Log(_L8("CUICC::CompleteReadCBSSimTopics, err=%d"),aErr);
+
+ if ( KErrNone == aErr )
+ {
+ CArrayFixFlat<RMmCustomAPI::TSimCbTopic>* topics;
+ aData->UnPackData( topics );
+ TInt count( topics->Count() );
+ if ( 0 < count )
+ {
+ iUICCLog->Log(_L8("%d topics read."), count);
+ for ( TInt i( 0 ); i < count; i++ )
+ {
+ iUICCLog->Log(_L8(" topic[%d]=%d."),i,topics->At( i ).iNumber);
+ }
+ }
+ if ( iSimCbTopic1.iNumber != topics->At(0).iNumber ||
+ iSimCbTopic2.iNumber != topics->At(1).iNumber ||
+ iSimCbTopic3.iNumber != topics->At(2).iNumber )
+ {
+ aErr = KErrGeneral;
+ }
+ }
+ Signal(aErr);
+ }
+
+
+// -----------------------------------------------------------------------------
+// CUICC::DeleteCBSSimTopic
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::DeleteCBSSimTopic( CStifItemParser& aItem )
+ {
+ iUICCLog->Log(_L8("CUICC::ReadCBSSimTopics"));
+ TInt ret( KErrNone );
+
+ TInt temp;
+ aItem.GetNextInt( temp );
+ TUint simCbTopicIndexToBeDeleted( temp );
+ TBool topicInSimMemoryDelete ( ETrue );
+ CMmDataPackage dataPackage;
+ dataPackage.PackData( &simCbTopicIndexToBeDeleted, &topicInSimMemoryDelete );
+
+ ret = HandleRequestL( ECustomDeleteSimCbTopicIPC, &dataPackage );
+
+ if ( KErrNone != ret )
+ {
+ iUICCLog->Log(_L8("Error in deleting CBS SIM topics: %d"), ret );
+ }
+
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::CompleteDeleteCBSSimTopic
+// -----------------------------------------------------------------------------
+//
+void CUICC::CompleteDeleteCBSSimTopic( TInt aErr )
+ {
+ iUICCLog->Log(_L8("CUICC::CompleteDeleteCBSSimTopic, err=%d"),aErr);
+ Signal(aErr);
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::GetNetworkProviderName
+// GetNetworkProviderName
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::GetNetworkProviderName( CStifItemParser& aItem )
+ {
+ _LIT8(KWriteONStore, "UICC::GetNetworkProviderName");
+ iUICCLog->Log((TDesC8)KWriteONStore);
+
+ TInt ret( KErrNotFound );
+
+ // for validity checking
+ if( iHandleSpecifiedRequests )
+ {
+ TPtrC temp;
+ aItem.GetNextString( temp );
+ if ( temp == _L("Orange") )
+ {
+ iName.Append( _L(" Orange") );
+ }
+ }
+
+ ret = HandleRequestL( ECustomGetNetworkProviderNameIPC );
+
+ if ( KErrNone == ret )
+ {
+ _LIT8( KSendOk, "GetNetworkProviderName request send ok" );
+ iUICCLog->Log((TDesC8)KSendOk );
+ }
+ else
+ {
+ _LIT8( KSendFailed, "GetNetworkProviderName request send failed: %d" );
+ iUICCLog->Log((TDesC8)KSendFailed, ret );
+ }
+
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::CompleteGetNetworkProviderName
+// Complete GetNetworkProviderName method function.
+// -----------------------------------------------------------------------------
+//
+void CUICC::CompleteGetNetworkProviderName(
+ TInt aResult,
+ CMmDataPackage* aDataPackage )
+ {
+ _LIT8( KResult, "CompleteGetNetworkProviderName result: %d" );
+ iUICCLog->Log((TDesC8)KResult, aResult );
+
+ if( KErrNone == aResult )
+ {
+ //network provider name
+ TDesC* name;
+
+ aDataPackage->UnPackData( name );
+
+ _LIT8( KName, "Name:" );
+ iUICCLog->Log((TDesC8)KName);
+ iUICCLog->Log( *name );
+
+ // validity checking
+ if( iHandleSpecifiedRequests )
+ {
+ TBuf<20> tempName;
+ tempName.Append( *name );
+ if ( iName != tempName )
+ {
+ aResult = KErrGeneral;
+ }
+ }
+ }
+ else
+ {
+ _LIT8( KFail, "CompleteGetNetworkProviderName Failed: %d" );
+ iUICCLog->Log((TDesC8)KFail, aResult );
+ }
+
+ Signal( aResult );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CUICC::ViagHomeZoneReadParam
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::ViagHomeZoneReadParamL( CStifItemParser& aItem )
+ {
+ _LIT8( KViagHomeZoneReadParam, "CUICC::ViagHomeZoneReadParam" );
+ iUICCLog->Log((TDesC8)KViagHomeZoneReadParam);
+
+ // SMSC
+ TPtrC ptrSmsC;
+ User::LeaveIfError( aItem.GetNextString( ptrSmsC ) );
+ iSavedViagParamsForComparison.iSmsC = ptrSmsC;
+
+ // SCP
+ TPtrC ptrScp;
+ User::LeaveIfError(
+ aItem.GetNextString( ptrScp ) );
+ iSavedViagParamsForComparison.iScp = ptrScp;
+
+ // Subscribed zone and version
+ TUint zoneAndVersion( 0 );
+ User::LeaveIfError( aItem.GetNextInt( zoneAndVersion, EHex ) );
+ iSavedViagParamsForComparison.iSubscribedZoneAndVersion = zoneAndVersion;
+
+ // Creating elements
+ iSavedViagElementsForComparison =
+ new(ELeave) RMmCustomAPI::TViagElements(
+ RMmCustomAPI::KViagElementCount );
+
+ TPtrC homezoneFlag;
+ for ( TInt i = 0; i < RMmCustomAPI::KViagElementCount; i++ )
+ {
+ RMmCustomAPI::TViagElement element;
+
+ // Fetching X coordinate
+ TUint xCoord( 0 );
+ User::LeaveIfError( aItem.GetNextInt( xCoord, EHex ) );
+ element.iCoordinates.iX = xCoord;
+ // Fetching Y coordinate
+ TUint yCoord( 0 );
+ User::LeaveIfError( aItem.GetNextInt( yCoord, EHex ) );
+ element.iCoordinates.iY = yCoord;
+ // Fetching R2
+ TUint r2;
+ User::LeaveIfError( aItem.GetNextInt( r2, EHex ) );
+ element.iCoordinates.iR2 = r2;
+ // Fetching zone id
+ TUint zoneId( 0 );
+ User::LeaveIfError( aItem.GetNextInt( zoneId, EHex ) );
+ element.iCoordinates.iZoneId = zoneId;
+ // Fetching homezone status flag
+ User::LeaveIfError( aItem.GetNextString( homezoneFlag ) );
+ if ( 0 == homezoneFlag.Compare( KViagInactive ) )
+ {
+ element.iActiveFlag = RMmCustomAPI::ENotActive;
+ }
+ else if ( 0 == homezoneFlag.Compare( KViagHZActive ) )
+ {
+ element.iActiveFlag = RMmCustomAPI::EHomeZone;
+ }
+ else if ( 0 == homezoneFlag.Compare( KViagCZActive ) )
+ {
+ element.iActiveFlag = RMmCustomAPI::ECityZone;
+ }
+ else
+ {
+ User::Leave( KErrArgument );
+ }
+
+ // Fetching tag
+ TPtrC name;
+ User::LeaveIfError( aItem.GetNextString( name ) );
+ element.iName = name;
+ iSavedViagElementsForComparison->AppendL( element );
+ }
+
+ TInt ret( HandleRequestL( EReadViagHomeZoneParamsIPC ) );
+
+ if ( KErrNone == ret )
+ {
+ _LIT8( KRequestOk, "EReadViagHomeZoneParamsIPC request send ok" );
+ iUICCLog->Log( (TDesC8)KRequestOk );
+ }
+ else
+ {
+ _LIT8( KRequestFailed, "EReadViagHomeZoneParamsIPC request send failed: %d" );
+ iUICCLog->Log( (TDesC8)KRequestFailed, ret );
+ }
+
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::CompleteViagHomeZoneReadParam
+// -----------------------------------------------------------------------------
+//
+void CUICC::CompleteViagHomeZoneReadParam(
+ TInt aResult,
+ CMmDataPackage* aDataPackage )
+ {
+ _LIT8( KLog, "CUICC::CompleteViagHomeZoneReadParam - result: %d" );
+ iUICCLog->Log( ( TDesC8 )KLog, aResult );
+
+ if ( KErrNone == aResult )
+ {
+ RMmCustomAPI::TViagParams viagParams;
+ RMmCustomAPI::TViagElements* viagElements( NULL );
+
+ aDataPackage->UnPackData( viagParams, viagElements );
+
+ // match parameters
+ if ( viagParams.iScp != iSavedViagParamsForComparison.iScp
+ || viagParams.iSmsC != iSavedViagParamsForComparison.iSmsC
+ || viagParams.iSubscribedZoneAndVersion !=
+ iSavedViagParamsForComparison.iSubscribedZoneAndVersion )
+ {
+ aResult = KErrGeneral;
+ }
+
+ // match elements
+ for ( TInt i = 0;
+ i < RMmCustomAPI::KViagElementCount && KErrNone == aResult;
+ i++)
+ {
+ RMmCustomAPI::TViagElement& element =
+ viagElements->At( i );
+ RMmCustomAPI::TViagElement& expected =
+ iSavedViagElementsForComparison->At( i );
+
+ if ( element.iCoordinates.iX != expected.iCoordinates.iX
+ || element.iCoordinates.iY != expected.iCoordinates.iY
+ || element.iCoordinates.iR2 != expected.iCoordinates.iR2
+ || element.iCoordinates.iZoneId != expected.iCoordinates.iZoneId
+ || element.iName != expected.iName
+ || element.iActiveFlag != expected.iActiveFlag )
+ {
+ aResult = KErrGeneral;
+ }
+ }
+ }
+ else
+ {
+ _LIT8( KFail, "CUICC::CompleteViagHomeZoneReadParam failed: %d" );
+ iUICCLog->Log( ( TDesC8 )KFail, aResult );
+ }
+
+ if ( iHandleSpecifiedRequests )
+ {
+ Signal( aResult );
+ }
+ }
+
+
+// -----------------------------------------------------------------------------
+// CUICC::ViagHomeZoneReadCache
+// Read ViagHomeZone cache
+// {cacheid, recnum, lac, cellid}
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::ViagHomeZoneReadCacheL( CStifItemParser& aItem )
+ {
+ _LIT8(KViagHomeZoneReadCache, "CUICC::ViagHomeZoneReadCache");
+ iUICCLog->Log((TDesC8)KViagHomeZoneReadCache);
+
+ RMmCustomAPI::TViagCacheRecordId record;
+
+ // fetching cacheid for request
+ TUint cacheid;
+ User::LeaveIfError( aItem.GetNextInt( cacheid, EHex ) );
+ record.iCacheId = cacheid;
+ // fetching recnum for request
+ TUint recnum;
+ User::LeaveIfError(
+ aItem.GetNextInt( recnum, EHex ) );
+ // XML data and CFG data should match
+ record.iRecordId = recnum - 1;
+
+ // fetching LAC for response
+ TUint lac( 0 );
+ User::LeaveIfError( aItem.GetNextInt( lac, EHex ) );
+ iSavedRecordForComparison.iLac = lac;
+ // fetching CellId for response
+ TUint cellId( 0 );
+ User::LeaveIfError( aItem.GetNextInt( cellId, EHex ) );
+ iSavedRecordForComparison.iCellId = cellId;
+
+ CMmDataPackage package;
+ package.PackData( &record );
+ TInt ret( HandleRequestL( EReadViagHomeZoneCacheIPC, &package ) );
+
+ if ( KErrNone == ret )
+ {
+ _LIT8( KRequestOk, "EReadViagHomeZoneCacheIPC request send ok" );
+ iUICCLog->Log( (TDesC8)KRequestOk );
+ }
+ else
+ {
+ _LIT8( KRequestFailed, "EReadViagHomeZoneCacheIPC request send failed: %d" );
+ iUICCLog->Log( (TDesC8)KRequestFailed, ret );
+ }
+
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::ViagHomeZoneWriteSettings
+// Write ViagHomeZone settings
+// {settings, version}
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::ViagHomeZoneWriteSettingsL( CStifItemParser& aItem )
+ {
+ _LIT8( KViagHomeZoneWriteSettings, "CUICC::ViagHomeZoneWriteSettings" );
+ iUICCLog->Log((TDesC8)KViagHomeZoneWriteSettings);
+
+ CMmDataPackage package;
+ RMmCustomAPI::TViagUHZIUESettings settings;
+
+ // fetching settings
+ TUint set( 0 );
+ User::LeaveIfError( aItem.GetNextInt( set, EHex ) );
+ settings.iSettings = set;
+
+ // fetching version
+ TUint ver( 0 );
+ User::LeaveIfError( aItem.GetNextInt( ver, EHex ) );
+ settings.iVersion = ver;
+
+ package.PackData( &settings );
+ TInt ret( HandleRequestL( EWriteViagHomeZoneUHZIUESettingsIPC, &package ) );
+
+ if ( KErrNone == ret )
+ {
+ _LIT8( KRequestOk, "EWriteViagHomeZoneUHZIUESettingsIPC request send ok" );
+ iUICCLog->Log( (TDesC8)KRequestOk );
+ }
+ else
+ {
+ _LIT8( KRequestFailed, "EWriteViagHomeZoneUHZIUESettingsIPC request send failed: %d" );
+ iUICCLog->Log( (TDesC8)KRequestFailed, ret );
+ }
+
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::ViagHomeZoneWriteCache
+// Write ViagHomeZone cache
+// {cacheid, recnum, lac, cellid}
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::ViagHomeZoneWriteCacheL( CStifItemParser& aItem )
+ {
+ _LIT8( KViagHomeZoneWriteCache, "CUICC::ViagHomeZoneWriteCache" );
+ iUICCLog->Log( (TDesC8)KViagHomeZoneWriteCache );
+
+ CMmDataPackage package;
+ RMmCustomAPI::TViagCacheRecordId recordId;
+ RMmCustomAPI::TViagCacheRecordContent recordContent;
+
+ // fetching cacheId
+ TUint cacheid( 0 );
+ User::LeaveIfError( aItem.GetNextInt( cacheid, EHex ) );
+ recordId.iCacheId = cacheid;
+
+ // fetching record number
+ TUint recnum( 0 );
+ User::LeaveIfError( aItem.GetNextInt( recnum, EHex ) );
+ // XML and CFG should match
+ recordId.iRecordId = recnum - 1;
+
+ // fetching lac
+ TUint lac( 0 );
+ User::LeaveIfError( aItem.GetNextInt( lac, EHex ) );
+ recordContent.iLac = lac;
+
+ // fetching CellId
+ TUint cellid( 0 );
+ User::LeaveIfError( aItem.GetNextInt( cellid, EHex ) );
+ recordContent.iCellId = cellid;
+
+ package.PackData( &recordId, &recordContent );
+ TInt ret( HandleRequestL( EWriteViagHomeZoneCacheIPC, &package) );
+
+ if ( KErrNone == ret )
+ {
+ _LIT8( KRequestOk, "EWriteViagHomeZoneCacheIPC request send ok" );
+ iUICCLog->Log( (TDesC8)KRequestOk );
+ }
+ else
+ {
+ _LIT8( KRequestFailed, "EWriteViagHomeZoneCacheIPC request send failed: %d" );
+ iUICCLog->Log( (TDesC8)KRequestFailed, ret );
+ }
+
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::CompleteViagHomeZoneReadCache
+// Performs verification of the data returned when
+// EReadViagHomeZoneCacheIPC is completed
+// -----------------------------------------------------------------------------
+//
+void CUICC::CompleteViagHomeZoneReadCache(
+ TInt aResult,
+ CMmDataPackage* aDataPackage )
+ {
+ _LIT8( KLog, "CUICC::CompleteViagHomeZoneReadCache - result: %d" );
+ iUICCLog->Log( ( TDesC8 )KLog, aResult );
+
+ if ( KErrNone == aResult )
+ {
+ RMmCustomAPI::TViagCacheRecordContent record;
+
+ aDataPackage->UnPackData( record );
+
+ if ( iSavedRecordForComparison.iLac != record.iLac
+ || iSavedRecordForComparison.iCellId != record.iCellId )
+ {
+ aResult = KErrGeneral;
+ }
+ }
+ else
+ {
+ _LIT8( KFail, "CUICC::CompleteViagHomeZoneReadCache failed: %d" );
+ iUICCLog->Log( ( TDesC8 )KFail, aResult );
+ }
+
+ if ( iHandleSpecifiedRequests )
+ {
+ Signal( aResult );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::ReadVoiceMsgFlagsRel4
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::ReadVoiceMsgFlagsRel4( CStifItemParser& aItem )
+ {
+ _LIT8( KReadVoiceMsgFlagsRel4, "CUICC::ReadVoiceMsgFlagsRel4" );
+ iUICCLog->Log( (TDesC8)KReadVoiceMsgFlagsRel4 );
+
+ // Fetch parameters for comparison
+ TUint temp( 0 );
+ aItem.GetNextInt( temp );
+ iMsgWaiting.iDisplayStatus = temp;
+ aItem.GetNextInt( temp );
+ iMsgWaiting.iVoiceMsgs = temp;
+ aItem.GetNextInt( temp );
+ iMsgWaiting.iFaxMsgs = temp;
+ aItem.GetNextInt( temp );
+ iMsgWaiting.iEmailMsgs = temp;
+ aItem.GetNextInt( temp );
+ iMsgWaiting.iOtherMsgs = temp;
+
+ TInt ret( HandleRequestL( EMobilePhoneGetIccMessageWaitingIndicators ) );
+
+ if ( KErrNone == ret )
+ {
+ _LIT8( KRequestOk, "ReadVoiceMsgFlagsRel4 request send ok" );
+ iUICCLog->Log( (TDesC8)KRequestOk );
+ }
+ else
+ {
+ _LIT8( KRequestFailed, "ReadVoiceMsgFlagsRel4 request send failed: %d" );
+ iUICCLog->Log( (TDesC8)KRequestFailed, ret );
+ }
+
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::CompleteReadVoiceMsgFlagsRel4
+// -----------------------------------------------------------------------------
+//
+void CUICC::CompleteReadVoiceMsgFlags(
+ TInt aResult,
+ CMmDataPackage* aDataPackage )
+ {
+ _LIT8( KLog, "CUICC::CompleteReadVoiceMsgFlagsRel4 - result: %d" );
+ iUICCLog->Log( ( TDesC8 )KLog, aResult );
+
+ if ( KErrNone == aResult || KErrCPHSInUseBySIM == aResult )
+ {
+ RMobilePhone::TMobilePhoneMessageWaitingV1 VMIndicators;
+ aDataPackage->UnPackData( VMIndicators );
+
+ aResult = KErrNone;
+
+ if ( VMIndicators.iDisplayStatus != iMsgWaiting.iDisplayStatus ||
+ VMIndicators.iVoiceMsgs != iMsgWaiting.iVoiceMsgs ||
+ VMIndicators.iFaxMsgs != iMsgWaiting.iFaxMsgs ||
+ VMIndicators.iEmailMsgs != iMsgWaiting.iEmailMsgs ||
+ VMIndicators.iOtherMsgs != iMsgWaiting.iOtherMsgs )
+ {
+ aResult = KErrGeneral;
+ }
+ }
+ else
+ {
+ _LIT8( KFail, "CUICC::CompleteReadVoiceMsgFlagsRel4 failed: %d" );
+ iUICCLog->Log( ( TDesC8 )KFail, aResult );
+ }
+
+ if ( iHandleSpecifiedRequests )
+ {
+ Signal( aResult );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::WriteVoiceMsgFlagsRel4
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::WriteVoiceMsgFlagsRel4( CStifItemParser& aItem )
+ {
+ _LIT8( KWriteVoiceMsgFlagsRel4, "CUICC::WriteVoiceMsgFlagsRel4" );
+ iUICCLog->Log( (TDesC8)KWriteVoiceMsgFlagsRel4 );
+
+ CMmDataPackage package;
+
+ // Fetch parameters for data package and comparision
+ TUint temp( 0 );
+ aItem.GetNextInt( temp );
+ iMsgWaiting.iDisplayStatus = temp;
+ aItem.GetNextInt( temp );
+ iMsgWaiting.iVoiceMsgs = temp;
+ aItem.GetNextInt( temp );
+ iMsgWaiting.iFaxMsgs = temp;
+ aItem.GetNextInt( temp );
+ iMsgWaiting.iEmailMsgs = temp;
+ aItem.GetNextInt( temp );
+ iMsgWaiting.iOtherMsgs = temp;
+
+ package.PackData( &iMsgWaiting );
+
+ TInt ret( HandleRequestL( EMobilePhoneSetIccMessageWaitingIndicators, &package ) );
+
+ if ( KErrNone == ret )
+ {
+ _LIT8( KRequestOk, "WriteVoiceMsgFlagsRel4 request send ok" );
+ iUICCLog->Log( (TDesC8)KRequestOk );
+ }
+ else
+ {
+ _LIT8( KRequestFailed, "WriteVoiceMsgFlagsRel4 request send failed: %d" );
+ iUICCLog->Log( (TDesC8)KRequestFailed, ret );
+ }
+
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::ReadVoiceMsgFlagsCphs
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::ReadVoiceMsgFlagsCphs( CStifItemParser& aItem )
+ {
+ _LIT8( KReadVoiceMsgFlagsCphs, "CUICC::ReadVoiceMsgFlagsCphs" );
+ iUICCLog->Log( (TDesC8)KReadVoiceMsgFlagsCphs );
+
+ // Fetch parameters for comparison
+ TUint temp( 0 );
+ aItem.GetNextInt( temp );
+ iMsgWaiting.iDisplayStatus = temp;
+ aItem.GetNextInt( temp );
+ iMsgWaiting.iVoiceMsgs = temp;
+ aItem.GetNextInt( temp );
+ iMsgWaiting.iFaxMsgs = temp;
+ aItem.GetNextInt( temp );
+ iMsgWaiting.iEmailMsgs = temp;
+ aItem.GetNextInt( temp );
+ iMsgWaiting.iOtherMsgs = temp;
+
+ TInt ret( HandleRequestL( EMobilePhoneGetIccMessageWaitingIndicators ) );
+
+ if ( KErrNone == ret )
+ {
+ _LIT8( KRequestOk, "ReadVoiceMsgFlagsCphs request send ok" );
+ iUICCLog->Log( (TDesC8)KRequestOk );
+ }
+ else
+ {
+ _LIT8( KRequestFailed, "ReadVoiceMsgFlagsCphs request send failed: %d" );
+ iUICCLog->Log( (TDesC8)KRequestFailed, ret );
+ }
+
+ return ret;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CUICC::WriteVoiceMsgFlagsCphs
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::WriteVoiceMsgFlagsCphs( CStifItemParser& aItem )
+ {
+ _LIT8( KWriteVoiceMsgFlagsCphs, "CUICC::WriteVoiceMsgFlagsCphs" );
+ iUICCLog->Log( (TDesC8)KWriteVoiceMsgFlagsCphs );
+
+ CMmDataPackage package;
+
+ // Fetch parameters for data package and comparision
+ TUint temp( 0 );
+ aItem.GetNextInt( temp );
+ iMsgWaiting.iDisplayStatus = temp;
+ aItem.GetNextInt( temp );
+ iMsgWaiting.iVoiceMsgs = temp;
+ aItem.GetNextInt( temp );
+ iMsgWaiting.iFaxMsgs = temp;
+ aItem.GetNextInt( temp );
+ iMsgWaiting.iEmailMsgs = temp;
+ aItem.GetNextInt( temp );
+ iMsgWaiting.iOtherMsgs = temp;
+
+ package.PackData( &iMsgWaiting );
+
+ TInt ret( HandleRequestL( EMobilePhoneSetIccMessageWaitingIndicators, &package ) );
+
+ if ( KErrNone == ret )
+ {
+ _LIT8( KRequestOk, "WriteVoiceMsgFlagsCphs request send ok" );
+ iUICCLog->Log( (TDesC8)KRequestOk );
+ }
+ else
+ {
+ _LIT8( KRequestFailed, "WriteVoiceMsgFlagsCphs request send failed: %d" );
+ iUICCLog->Log( (TDesC8)KRequestFailed, ret );
+ }
+
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::CompleteNotifyMwiChange
+// -----------------------------------------------------------------------------
+//
+void CUICC::CompleteNotifyMwiChange(
+ TInt aResult,
+ CMmDataPackage* aDataPackage )
+ {
+ _LIT8( KLog, "CUICC::CompleteNotifyMwiChange - result: %d" );
+ iUICCLog->Log( ( TDesC8 )KLog, aResult );
+
+ if ( KErrNone == aResult )
+ {
+ RMobilePhone::TMobilePhoneMessageWaitingV1 VMIndicators;
+ aDataPackage->UnPackData( VMIndicators );
+
+ if ( VMIndicators.iDisplayStatus != iMsgWaiting.iDisplayStatus ||
+ VMIndicators.iVoiceMsgs != iMsgWaiting.iVoiceMsgs ||
+ VMIndicators.iFaxMsgs != iMsgWaiting.iFaxMsgs ||
+ VMIndicators.iEmailMsgs != iMsgWaiting.iEmailMsgs ||
+ VMIndicators.iOtherMsgs != iMsgWaiting.iOtherMsgs )
+ {
+ aResult = KErrGeneral;
+ }
+ }
+ else
+ {
+ _LIT8( KFail, "CUICC::CompleteNotifyMwiChange failed: %d" );
+ iUICCLog->Log( ( TDesC8 )KFail, aResult );
+ }
+
+ if ( iHandleSpecifiedRequests )
+ {
+ Signal( aResult );
+ }
+ }
+
+
+// -----------------------------------------------------------------------------
+// CUICC::ReadDynamicFlags
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::ReadDynamicFlags( CStifItemParser& aItem )
+ {
+ _LIT8( KLog, "CUICC::ReadDynamicFlags" );
+ iUICCLog->Log( (TDesC8)KLog );
+
+ CMmDataPackage package;
+
+ // Fetch parameters for comparision
+ TInt temp( 0 );
+ aItem.GetNextInt( temp );
+ iAlsLine = static_cast<RMobilePhone::TMobilePhoneALSLine>( temp );
+
+ TInt ret( HandleRequestL( EMobilePhoneGetALSLine ) );
+
+ if ( KErrNone == ret )
+ {
+ _LIT8( KRequestOk, "ReadDynamicFlags request send ok" );
+ iUICCLog->Log( (TDesC8)KRequestOk );
+ }
+ else
+ {
+ _LIT8( KRequestFailed, "ReadDynamicFlags request send failed: %d" );
+ iUICCLog->Log( (TDesC8)KRequestFailed, ret );
+ }
+
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::CompleteReadDynamicFlags
+// -----------------------------------------------------------------------------
+//
+void CUICC::CompleteReadDynamicFlags(
+ TInt aResult,
+ CMmDataPackage* aDataPackage )
+ {
+ _LIT8( KLog, "CUICC::CompleteReadDynamicFlags - result: %d" );
+ iUICCLog->Log( ( TDesC8 )KLog, aResult );
+
+ if ( KErrNone == aResult )
+ {
+ RMobilePhone::TMobilePhoneALSLine alsLine;
+ aDataPackage->UnPackData( alsLine );
+
+ if ( iAlsLine != alsLine )
+ {
+ aResult = KErrGeneral;
+ }
+ }
+ else
+ {
+ _LIT8( KFail, "CUICC::CompleteReadDynamicFlags failed: %d" );
+ iUICCLog->Log( ( TDesC8 )KFail, aResult );
+ }
+
+ if ( iHandleSpecifiedRequests )
+ {
+ Signal( aResult );
+ }
+ }
+
+
+// -----------------------------------------------------------------------------
+// CUICC::WriteDynamicFlags
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::WriteDynamicFlags( CStifItemParser& aItem )
+ {
+ _LIT8( KLog, "CUICC::WriteDynamicFlags" );
+ iUICCLog->Log( (TDesC8)KLog );
+
+ CMmDataPackage package;
+
+ TInt temp( 0 );
+ aItem.GetNextInt( temp );
+ iAlsLine = static_cast<RMobilePhone::TMobilePhoneALSLine>( temp );
+
+ package.PackData( &iAlsLine );
+
+ TInt ret( HandleRequestL( EMobilePhoneSetALSLine, &package ) );
+
+ if ( KErrNone == ret )
+ {
+ _LIT8( KRequestOk, "WriteDynamicFlags request send ok" );
+ iUICCLog->Log( (TDesC8)KRequestOk );
+ }
+ else
+ {
+ _LIT8( KRequestFailed, "WriteDynamicFlags request send failed: %d" );
+ iUICCLog->Log( (TDesC8)KRequestFailed, ret );
+ }
+
+ return ret;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CUICC::ReadDynamic2Flags
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::ReadDynamic2Flags( CStifItemParser& aItem )
+ {
+ _LIT8( KLog, "CUICC::ReadDynamic2Flags" );
+ iUICCLog->Log( (TDesC8)KLog );
+
+ CMmDataPackage package;
+
+ // Fetch parameters for comparision
+ TInt temp( 0 );
+ aItem.GetNextInt( temp );
+ iBlockStatus = static_cast<RMmCustomAPI::TGetAlsBlockStatus>( temp );
+
+ TInt ret( HandleRequestL( ECustomGetAlsBlockedIPC ) );
+
+ if ( KErrNone == ret )
+ {
+ _LIT8( KRequestOk, "ReadDynamic2Flags request send ok" );
+ iUICCLog->Log( (TDesC8)KRequestOk );
+ }
+ else
+ {
+ _LIT8( KRequestFailed, "ReadDynamic2Flags request send failed: %d" );
+ iUICCLog->Log( (TDesC8)KRequestFailed, ret );
+ }
+
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::CompleteReadDynamic2Flags
+// -----------------------------------------------------------------------------
+//
+void CUICC::CompleteReadDynamic2Flags(
+ TInt aResult,
+ CMmDataPackage* aDataPackage )
+ {
+ _LIT8( KLog, "CUICC::CompleteReadDynamic2Flags - result: %d" );
+ iUICCLog->Log( ( TDesC8 )KLog, aResult );
+
+ if ( KErrNone == aResult )
+ {
+ RMmCustomAPI::TGetAlsBlockStatus blockStatus;
+ aDataPackage->UnPackData( blockStatus );
+
+ if ( iBlockStatus != blockStatus )
+ {
+ aResult = KErrGeneral;
+ }
+ }
+ else
+ {
+ _LIT8( KFail, "CUICC::CompleteReadDynamicFlags failed: %d" );
+ iUICCLog->Log( ( TDesC8 )KFail, aResult );
+ }
+
+ if ( iHandleSpecifiedRequests )
+ {
+ Signal( aResult );
+ }
+ }
+
+
+// -----------------------------------------------------------------------------
+// CUICC::WriteDynamic2Flags
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::WriteDynamic2Flags( CStifItemParser& aItem )
+ {
+ _LIT8( KLog, "CUICC::WriteDynamic2Flags" );
+ iUICCLog->Log( (TDesC8)KLog );
+
+ CMmDataPackage package;
+ RMmCustomAPI::TSetAlsBlock blockStatus;
+
+ TInt temp( 0 );
+ aItem.GetNextInt( temp );
+ blockStatus = static_cast<RMmCustomAPI::TSetAlsBlock>( temp );
+
+ package.PackData( &blockStatus );
+
+ TInt ret( HandleRequestL( ECustomSetAlsBlockedIPC, &package ) );
+
+ if ( KErrNone == ret )
+ {
+ _LIT8( KRequestOk, "WriteDynamic2Flags request send ok" );
+ iUICCLog->Log( (TDesC8)KRequestOk );
+ }
+ else
+ {
+ _LIT8( KRequestFailed, "WriteDynamic2Flags request send failed: %d" );
+ iUICCLog->Log( (TDesC8)KRequestFailed, ret );
+ }
+
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::GetUiccStatus
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::GetUiccStatus( CStifItemParser& /*aItem*/ )
+ {
+ _LIT8( KLog, "CUICC::GetUiccStatus" );
+ iUICCLog->Log( (TDesC8)KLog );
+
+ TInt ret( HandleRequestL( EMmTsyBootNotifySimStatusReadyIPC ) );
+
+ if ( KErrNone == ret )
+ {
+ _LIT8( KRequestOk, "GetUiccStatus request send ok" );
+ iUICCLog->Log( (TDesC8)KRequestOk );
+ }
+ else
+ {
+ _LIT8( KRequestFailed, "GetUiccStatus request send failed: %d" );
+ iUICCLog->Log( (TDesC8)KRequestFailed, ret );
+ }
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::PowerOffSim
+//
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::PowerOffSim()
+ {
+ _LIT8(KWriteONStore, "CUICC::PowerOffSim ");
+ iUICCLog->Log((TDesC8)KWriteONStore);
+
+ TInt ret( KErrNotFound );
+
+ ret = HandleRequestL( ECustomPowerSimOffIPC );
+
+ if ( KErrNone == ret )
+ {
+ _LIT8( KSendOk, "SimPowerOffRequest request send ok" );
+ iUICCLog->Log((TDesC8)KSendOk );
+ }
+ else
+ {
+ _LIT8( KSendFailed, "SimPowerOffRequestrequest send failed: %d" );
+ iUICCLog->Log((TDesC8)KSendFailed, ret );
+ }
+
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::CompletePowerOffSim
+//
+// -----------------------------------------------------------------------------
+//
+void CUICC::CompletePowerOffSim( TInt aResult )
+ {
+ _LIT8( KResult, "CUICC::CompletePowerOffSim : %d" );
+ iUICCLog->Log((TDesC8)KResult, aResult );
+ Signal( aResult );
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::SimWarmReset
+//
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::SimWarmReset()
+ {
+ _LIT8(KWriteONStore, "CUICC::SimWarmReset ");
+ iUICCLog->Log((TDesC8)KWriteONStore);
+
+ TInt ret( KErrNotFound );
+
+ ret = HandleRequestL( ECustomSimWarmResetIPC );
+
+ if ( KErrNone == ret )
+ {
+ _LIT8( KSendOk, "SimWarmReset request send ok" );
+ iUICCLog->Log((TDesC8)KSendOk );
+ }
+ else
+ {
+ _LIT8( KSendFailed, "SimWarmReset send failed: %d" );
+ iUICCLog->Log((TDesC8)KSendFailed, ret );
+ }
+
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::CompleteSimWarmReset
+//
+// -----------------------------------------------------------------------------
+//
+void CUICC::CompleteSimWarmReset( TInt aResult )
+ {
+ _LIT8( KResult, "CUICC::CompleteSimWarmReset : %d" );
+ iUICCLog->Log((TDesC8)KResult, aResult );
+ Signal( aResult );
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::SimGetATR
+//
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::SimGetATR(CStifItemParser& /*aItem*/)
+ {
+ _LIT8(KWriteONStore, "CUICC::SimGetATR ");
+ iUICCLog->Log((TDesC8)KWriteONStore);
+
+ TInt ret( KErrNotFound );
+
+ // store given parameter for validity checking
+ if( iHandleSpecifiedRequests )
+ {
+ iAPDU.Append(0x3b);
+ iAPDU.Append(0x97);
+ iAPDU.Append(0x95);
+ iAPDU.Append(0x91);
+ iAPDU.Append(0x81);
+ iAPDU.Append(0xb1);
+ iAPDU.Append(0xfe);
+ iAPDU.Append(0x00);
+ iAPDU.Append(0x1f);
+ iAPDU.Append(0x42);
+ iAPDU.Append(0x80);
+ iAPDU.Append(0x31);
+ iAPDU.Append(0xa0);
+ iAPDU.Append(0x73);
+ iAPDU.Append(0xbe);
+ iAPDU.Append(0x21);
+ iAPDU.Append(0x00);
+ iAPDU.Append(0x00);
+ _LIT8(KAPDU, "CUICC::SimGetATR APDU");
+ iUICCLog->Log(iAPDU );
+ }
+
+ ret = HandleRequestL( ECustomGetATRIPC );
+
+ if ( KErrNone == ret )
+ {
+ _LIT8( KSendOk, "SimGetATR request send ok" );
+ iUICCLog->Log((TDesC8)KSendOk );
+ }
+ else
+ {
+ _LIT8( KSendFailed, "SimGetATR send failed: %d" );
+ iUICCLog->Log((TDesC8)KSendFailed, ret );
+ }
+
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::CompleteSimGetATR
+//
+// -----------------------------------------------------------------------------
+//
+void CUICC::CompleteSimGetATR( TInt aResult,
+ CMmDataPackage* aDataPackage )
+ {
+ _LIT8( KResult, "CUICC::CompleteSimGetATR : %d" );
+ iUICCLog->Log((TDesC8)KResult, aResult );
+
+ if( KErrNone == aResult )
+ {
+ TPtrC8* tPtr;
+ aDataPackage->UnPackData( tPtr );
+
+ if( iHandleSpecifiedRequests )
+ {
+ if ( iAPDU != *tPtr)
+ {
+ aResult = KErrGeneral;
+ }
+ }
+ }
+ else
+ {
+ aResult = KErrGeneral;
+ }
+
+ Signal( aResult );
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::PowerOnSim
+//
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::PowerOnSim()
+ {
+ _LIT8(KWriteONStore, "CUICC::PowerOnSim ");
+ iUICCLog->Log((TDesC8)KWriteONStore);
+
+ TInt ret( KErrNotFound );
+
+ ret = HandleRequestL( ECustomPowerSimOnIPC );
+
+ if ( KErrNone == ret )
+ {
+ _LIT8( KSendOk, "SimPowerOnRequest request send ok" );
+ iUICCLog->Log((TDesC8)KSendOk );
+ }
+ else
+ {
+ _LIT8( KSendFailed, "SimPowerOnRequestrequest send failed: %d" );
+ iUICCLog->Log((TDesC8)KSendFailed, ret );
+ }
+
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::CompletePowerOnSim
+//
+// -----------------------------------------------------------------------------
+//
+void CUICC::CompletePowerOnSim( TInt aResult )
+ {
+ _LIT8( KResult, "CUICC::CompletePowerOnSim : %d" );
+ iUICCLog->Log((TDesC8)KResult, aResult );
+ Signal( aResult );
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::GetRfStatus
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::GetRfStatus( CStifItemParser& aItem )
+ {
+ _LIT8( KLog, "CUICC::GetRfStatus" );
+ iUICCLog->Log( (TDesC8)KLog );
+
+ // Just save parameter for validity checking
+ TInt temp( 0 );
+ aItem.GetNextInt( temp );
+ iStatusInfo = static_cast<TRfStateInfo>( temp );
+
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::CompleteGetRfStatus
+// -----------------------------------------------------------------------------
+//
+void CUICC::CompleteGetRfStatus(
+ TInt aResult,
+ CMmDataPackage* aDataPackage )
+ {
+ _LIT8( KLog, "CUICC::CompleteGetRfStatus - result: %d" );
+ iUICCLog->Log( ( TDesC8 )KLog, aResult );
+
+ if ( KErrNone == aResult )
+ {
+ TRfStateInfo statusInfo;
+ aDataPackage->UnPackData( statusInfo );
+
+ if ( iStatusInfo != statusInfo )
+ {
+ aResult = KErrGeneral;
+ }
+ }
+ else
+ {
+ _LIT8( KFail, "CUICC::CompleteGetRfStatus failed: %d" );
+ iUICCLog->Log( ( TDesC8 )KFail, aResult );
+ }
+
+ if ( iHandleSpecifiedRequests )
+ {
+ Signal( aResult );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::SendAPDUv2
+//
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::SendAPDUv2()
+ {
+ _LIT8(KWriteONStore, "CUICC::SendAPDUv2 ");
+ iUICCLog->Log((TDesC8)KWriteONStore);
+
+ TInt ret( KErrNotFound );
+
+
+ // store given parameter for validity checking
+ if( iHandleSpecifiedRequests )
+ {
+ iAPDU.Append(0x3b);
+ iAPDU.Append(0x97);
+ iAPDU.Append(0x95);
+ iAPDU.Append(0x91);
+ }
+
+ RMmCustomAPI::TApduParameters apduParameters;
+
+ // APDU command
+ apduParameters.iCmdData.Append(0xa0);
+ apduParameters.iCmdData.Append(0xc0);
+ apduParameters.iCmdData.Append(0x00);
+ apduParameters.iCmdData.Append(0x00);
+
+ //pack aDataPackage
+ CMmDataPackage dataPackage;
+ dataPackage.PackData( &apduParameters );
+
+ ret = HandleRequestL( ECustomSendAPDUReqV2IPC, &dataPackage );
+
+ if ( KErrNone == ret )
+ {
+ _LIT8( KSendOk, "SendAPDUv2 request send ok" );
+ iUICCLog->Log((TDesC8)KSendOk );
+ }
+ else
+ {
+ _LIT8( KSendFailed, "SendAPDUv2 send failed: %d" );
+ iUICCLog->Log((TDesC8)KSendFailed, ret );
+ }
+
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::CompleteSendAPDUv2
+//
+// -----------------------------------------------------------------------------
+//
+void CUICC::CompleteSendAPDUv2( TInt aResult,
+ CMmDataPackage* aDataPackage )
+ {
+
+ _LIT8( KResult, "CUICC::CompleteSendAPDUv2 : %d" );
+ iUICCLog->Log((TDesC8)KResult, aResult );
+
+ if( KErrNone == aResult )
+ {
+ TPtrC8* tPtr;
+ aDataPackage->UnPackData( tPtr );
+
+ if( iHandleSpecifiedRequests )
+ {
+ if ( iAPDU != *tPtr)
+ {
+ aResult = KErrGeneral;
+ }
+ }
+ }
+ else
+ {
+ aResult = KErrGeneral;
+ }
+
+ Signal( aResult );
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::GetCardReaderStatus
+//
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::GetCardReaderStatus()
+ {
+ _LIT8(KWriteONStore, "CUICC::GetCardReaderStatus ");
+ iUICCLog->Log((TDesC8)KWriteONStore);
+
+ TInt ret( KErrNotFound );
+ // store given parameter for validity checking
+ if( iHandleSpecifiedRequests )
+ {
+ iCardReaderStatusByte.Append(0xD0);
+ }
+
+ ret = HandleRequestL( ECustomGetSimCardReaderStatusIPC );
+
+ if ( KErrNone == ret )
+ {
+ _LIT8( KSendOk, "GetCardReaderStatus request send ok" );
+ iUICCLog->Log((TDesC8)KSendOk );
+ }
+ else
+ {
+ _LIT8( KSendFailed, "GetCardReaderStatus send failed: %d" );
+ iUICCLog->Log((TDesC8)KSendFailed, ret );
+ }
+
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::CompleteGetCardReaderStatus
+//
+// -----------------------------------------------------------------------------
+//
+void CUICC::CompleteGetCardReaderStatus( TInt aResult,
+ CMmDataPackage* aDataPackage )
+ {
+ _LIT8( KResult, "CUICC::CompleteGetCardReaderStatus : %d" );
+ iUICCLog->Log((TDesC8)KResult, aResult );
+
+ if ( KErrNone == aResult )
+ {
+ TBuf8<1> tBuf;
+ //unpack data
+ TPtrC8* ptr;
+
+ aDataPackage->UnPackData( &ptr );
+
+ tBuf.Copy(ptr[0]);
+
+ if( iHandleSpecifiedRequests )
+ {
+ if ( iCardReaderStatusByte != tBuf)
+ {
+ aResult = KErrGeneral;
+ }
+ }
+ }
+ else
+ {
+ aResult = KErrGeneral;
+ }
+
+ Signal( aResult );
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::UiccCardInd
+//
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::UiccCardInd()
+ {
+ _LIT8(KWriteONStore, "CUICC::UiccCardInd ");
+ iUICCLog->Log((TDesC8)KWriteONStore);
+
+ TInt ret( KErrNone);
+ // store given parameter for validity checking
+ if( iHandleSpecifiedRequests )
+ {
+ iCardStatus = RMmCustomAPI::SimCardRemoved;
+ iUiccCardIndTest = ETrue;
+ }
+
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::CompleteUiccCardInd
+//
+// -----------------------------------------------------------------------------
+//
+void CUICC::CompleteUiccCardInd( TInt aResult, CMmDataPackage* aDataPackage )
+ {
+ _LIT8( KResult, "CUICC::CompleteUiccCardInd : %d" );
+ iUICCLog->Log((TDesC8)KResult, aResult );
+
+ if ( KErrNone == aResult )
+ {
+ RMmCustomAPI::TSIMCardStatus returnStatus;
+
+ aDataPackage->UnPackData( returnStatus );
+
+ if( iHandleSpecifiedRequests )
+ {
+ if ( iCardStatus != returnStatus)
+ {
+ aResult = KErrGeneral;
+ }
+ }
+ }
+ else
+ {
+ aResult = KErrGeneral;
+ }
+ Signal( aResult );
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::SendAPDU
+//
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::SendAPDU()
+ {
+ _LIT8(KWriteONStore, "CUICC::SendAPDU ");
+ iUICCLog->Log((TDesC8)KWriteONStore);
+
+ TInt ret( KErrNotFound );
+
+ // store given parameter for validity checking
+ if( iHandleSpecifiedRequests )
+ {
+ iAPDU.Append(0x3b);
+ iAPDU.Append(0x97);
+ iAPDU.Append(0x95);
+ iAPDU.Append(0x91);
+ }
+
+ RMmCustomAPI::TApduParameters apduParameters;
+
+ // APDU command
+ apduParameters.iCmdData.Append(0xa0);
+ apduParameters.iCmdData.Append(0xc0);
+ apduParameters.iCmdData.Append(0x00);
+ apduParameters.iCmdData.Append(0x00);
+
+ // packed parameter: RMmCustomAPI::TApdu
+ RMmCustomAPI::TApdu apduData;
+
+ apduData.iData = &( apduParameters.iCmdData );
+
+ //pack aDataPackage
+ CMmDataPackage dataPackage;
+ dataPackage.PackData( &apduData );
+
+ ret = HandleRequestL( ECustomSendAPDUReqIPC, &dataPackage );
+
+ if ( KErrNone == ret )
+ {
+ _LIT8( KSendOk, "SendAPDU request send ok" );
+ iUICCLog->Log((TDesC8)KSendOk );
+ }
+ else
+ {
+ _LIT8( KSendFailed, "SendAPDU send failed: %d" );
+ iUICCLog->Log((TDesC8)KSendFailed, ret );
+ }
+
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::CompleteSendAPDU
+// -----------------------------------------------------------------------------
+//
+void CUICC::CompleteSendAPDU( TInt aResult,
+ CMmDataPackage* aDataPackage )
+ {
+ _LIT8( KResult, "CUICC::CompleteSendAPDU : %d" );
+ iUICCLog->Log((TDesC8)KResult, aResult );
+
+ if ( KErrNone == aResult )
+ {
+ TPtrC8* tPtr;
+ aDataPackage->UnPackData( tPtr );
+
+ if( iHandleSpecifiedRequests )
+ {
+ if ( iAPDU != *tPtr)
+ {
+ aResult = KErrGeneral;
+ }
+ }
+ }
+ else
+ {
+ aResult = KErrGeneral;
+ }
+ Signal( aResult );
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::NotifySecurityEvent
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::NotifySecurityEvent( CStifItemParser& aItem )
+ {
+ _LIT8( KLog, "NotifySecurityEvent" );
+ iUICCLog->Log((TDesC8)KLog );
+
+ // Just save parameter for validity checking
+ TInt temp( 0 );
+ aItem.GetNextInt( temp );
+ iEvent = static_cast<RMobilePhone::TMobilePhoneSecurityEvent>( temp );
+
+ return KErrNone;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CUICC::CompleteNotifySecurityEvent
+// -----------------------------------------------------------------------------
+//
+void CUICC::CompleteNotifySecurityEvent(
+ TInt aResult,
+ CMmDataPackage* aDataPackage )
+ {
+ RMobilePhone::TMobilePhoneSecurityEvent event;
+ aDataPackage->UnPackData( event );
+
+ _LIT8( KResult, "CUICC::CompleteNotifySecurityEvent : %d" );
+ iUICCLog->Log((TDesC8)KResult, aResult );
+
+ if ( iEvent != event )
+ {
+ aResult = KErrGeneral;
+ }
+
+ Signal( aResult );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CUICC::VerifySecurityCode
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::VerifySecurityCode( CStifItemParser& aItem )
+ {
+ _LIT8( KLog, "CUICC::VerifySecurityCode" );
+ iUICCLog->Log( ( TDesC8 ) KLog );
+
+ TInt ret( KErrNone );
+ TPtrC string;
+ RMobilePhone::TMobilePhoneSecurityCode type;
+ RMobilePhone::TCodeAndUnblockCode codes;
+
+ // 1st parameter: security code type
+ ret = GetSecurityCode( aItem, type );
+
+ // 2nd parameter code
+ if ( KErrNone == ret )
+ {
+ ret = aItem.GetNextString( string );
+ if ( KErrNone == ret )
+ {
+ codes.iCode.Copy( string );
+ }
+ }
+
+ // 3rd parameter: unblock code
+ if ( KErrNone == ret )
+ {
+ ret = aItem.GetNextString( string );
+ if ( KErrNone == ret )
+ {
+ codes.iUnblockCode.Copy( string );
+ }
+ }
+
+ CMmDataPackage package;
+ package.PackData( &type, &codes );
+ ret = HandleRequestL( EMobilePhoneVerifySecurityCode, &package );
+ return ret;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CUICC::GetPinInfo
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::GetPinInfo( CStifItemParser& aItem )
+ {
+ _LIT8( KLog, "CUICC::GetPinInfo" );
+ iUICCLog->Log( ( TDesC8 ) KLog );
+
+ RMobilePhone::TMobilePhoneLock lock;
+ RMobilePhone::TMobilePhoneLockInfoV1 lockInfo;
+ lockInfo.iStatus = RMobilePhone::EStatusLockUnknown;
+ lockInfo.iSetting = RMobilePhone::ELockSetUnknown;
+
+ TInt ret( KErrNone );
+ TPtrC string;
+ aItem.GetNextString( string );
+ if ( string == _L("ELockICC") )
+ {
+ lock = RMobilePhone::ELockICC;
+ }
+ else if ( string == _L("ELockPin2") )
+ {
+ lock = RMobilePhone::ELockPin2;
+ }
+ else if ( string == _L("ELockUniversalPin") )
+ {
+ lock = RMobilePhone::ELockUniversalPin;
+ }
+ else
+ {
+ ret = KErrArgument;
+ }
+
+ aItem.GetNextString( string );
+ if ( string == _L("SIMLockDisabled") )
+ {
+ iLockInfo.iSetting = RMobilePhone::ELockSetDisabled;
+ }
+ else if ( string == _L("SIMLockEnabled") )
+ {
+ iLockInfo.iSetting = RMobilePhone::ELockSetEnabled;
+ }
+
+ aItem.GetNextString( string );
+ if ( string == _L("Unlocked") )
+ {
+ iLockInfo.iStatus = RMobilePhone::EStatusUnlocked;
+ }
+ else if ( string == _L("Blocked") )
+ {
+ iLockInfo.iStatus = RMobilePhone::EStatusBlocked;
+ }
+
+ CMmDataPackage package;
+ package.PackData( &lock, &lockInfo );
+ ret = HandleRequestL( EMobilePhoneGetLockInfo, &package );
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::CompleteGetPinInfo
+// -----------------------------------------------------------------------------
+//
+void CUICC::CompleteGetPinInfo(
+ TInt aResult,
+ CMmDataPackage* aDataPackage )
+ {
+ _LIT8( KResult, "CUICC::CompleteGetPinInfo : %d" );
+ iUICCLog->Log((TDesC8)KResult, aResult );
+
+ //unpack the data
+ RMobilePhone::TMobilePhoneLockStatus* status = NULL;
+ RMobilePhone::TMobilePhoneLockSetting* setting = NULL;
+
+ aDataPackage->UnPackData( &status, &setting );
+
+ if ( iLockInfo.iStatus != *status )
+ {
+ aResult = KErrGeneral;
+ }
+
+ if ( iLockInfo.iSetting != *setting )
+ {
+ aResult = KErrGeneral;
+ }
+
+ Signal( aResult );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CUICC::ChangePinCode
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::ChangePinCode( CStifItemParser& aItem )
+ {
+ _LIT8( KLog, "CUicc::ChangePinCode" );
+ iUICCLog->Log( ( TDesC8 ) KLog );
+
+ TInt ret( KErrNone );
+ TPtrC string;
+
+ RMobilePhone::TMobilePhoneSecurityCode securityCode;
+ RMobilePhone::TMobilePhonePasswordChangeV1 passwordChange;
+
+ // 1st parameter: code type
+ ret = GetSecurityCode( aItem, securityCode );
+ // 2nd parameter: old password
+ ret = aItem.GetNextString( string );
+ passwordChange.iOldPassword.Copy( string );
+ // 3rd parameter: new password
+ ret = aItem.GetNextString( string );
+ passwordChange.iNewPassword.Copy( string );
+
+ CMmDataPackage package;
+ package.PackData( &securityCode, &passwordChange );
+ ret = HandleRequestL( EMobilePhoneChangeSecurityCode, &package );
+ return ret;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CUICC::SetLockSetting
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::SetLockSetting(
+ CStifItemParser& aItem )
+ {
+ _LIT8( KLog, "CUICC::SetLockSettingL" );
+ iUICCLog->Log( ( TDesC8 ) KLog );
+
+ RMobilePhone::TMobilePhoneLock lock;
+ RMobilePhone::TMobilePhoneLockSetting setting;
+ RMobilePhone::TMobilePassword password;
+ TPtrC string;
+
+ // 1st parameter: lock
+ aItem.GetNextString( string );
+ if ( string == _L("ELockICC") )
+ {
+ lock = RMobilePhone::ELockICC;
+ }
+ else if ( string == _L("ELockPin2") )
+ {
+ lock = RMobilePhone::ELockPin2;
+ }
+ else if ( string == _L("ELockUniversalPin") )
+ {
+ lock = RMobilePhone::ELockUniversalPin;
+ }
+
+ // 2nd parameter: lock setting
+ aItem.GetNextString( string );
+ if ( _L("ELockSetEnabled") == string )
+ {
+ setting = RMobilePhone::ELockSetEnabled;
+ }
+ else if ( _L("ELockSetDisabled") == string )
+ {
+ setting = RMobilePhone::ELockSetDisabled;
+ }
+ else if ( _L("ELockSetReplaced") == string )
+ {
+ setting = RMobilePhone::ELockReplaced;
+ }
+
+ // 3rd parameter: code
+ aItem.GetNextString( string );
+ password.Copy( string );
+
+ CMmDataPackage package;
+ TLockAndSetting lockAndSetting;
+ lockAndSetting.iLock = &lock;
+ lockAndSetting.iSetting = &setting;
+
+ package.PackData( &lockAndSetting, &password );
+ return HandleRequestL( EMobilePhoneSetLockSetting, &package );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CUICC::GetPinAttemptsLeft
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::GetPinAttemptsLeft( CStifItemParser& aItem )
+ {
+ _LIT8( KLog, "CUICC::GetPinAttemptsLeft" );
+ iUICCLog->Log( ( TDesC8 ) KLog );
+
+ RMobilePhone::TMobilePhoneSecurityCode type;
+
+ TInt ret( KErrNone );
+ TPtrC string;
+ aItem.GetNextString( string );
+ if ( string == _L("ESecurityCodePin1") )
+ {
+ type = RMobilePhone::ESecurityCodePin1;
+ }
+ else if ( string == _L("ESecurityCodePin2") )
+ {
+ type = RMobilePhone::ESecurityCodePin2;
+ }
+ else if ( string == _L("ESecurityUniversalPin") )
+ {
+ type = RMobilePhone::ESecurityUniversalPin;
+ }
+ else
+ {
+ ret = KErrArgument;
+ }
+
+ aItem.GetNextInt( iPinAttemptsLeft );
+
+ if ( KErrNone == ret )
+ {
+ CMmDataPackage package;
+ package.PackData( &type );
+ ret = HandleRequestL( EMobilePhoneGetSecurityCodeInfo, &package );
+ }
+ return ret;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CUICC::CompleteGetPinInfo
+// -----------------------------------------------------------------------------
+//
+void CUICC::CompleteGetPinAttemptsLeft(
+ TInt aResult,
+ CMmDataPackage* aDataPackage )
+ {
+ _LIT8( KResult, "CUICC::CompleteGetPinInfo : %d" );
+ iUICCLog->Log((TDesC8)KResult, aResult );
+
+ RMobilePhone::TMobilePhoneSecurityCode* codeType;
+ RMobilePhone::TMobilePhoneSecurityCodeInfoV5* securityInfo;
+
+ aDataPackage->UnPackData( &codeType, &securityInfo );
+
+ if ( iPinAttemptsLeft != securityInfo->iRemainingEntryAttempts )
+ {
+ aResult = KErrGeneral;
+ }
+
+ Signal( aResult );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CUICC::GetIccType
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::GetIccType( CStifItemParser& aItem )
+ {
+ _LIT8( KLog, "CSecurity::GetICCType" );
+ iUICCLog->Log( ( TDesC8 ) KLog );
+
+ TInt ret( KErrNone );
+
+ TInt temp;
+ aItem.GetNextInt( temp );
+ iIccType = ( TICCType ) temp;
+
+ ret = HandleRequestL( EMmTsySimGetICCType );
+
+ return ret;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CUICC::CompleteGetIccType
+// -----------------------------------------------------------------------------
+//
+void CUICC::CompleteGetIccType( TInt aResult, CMmDataPackage* aDataPackage )
+ {
+ _LIT8( KResult, "CUICC::CompleteGetIccType : %d" );
+ iUICCLog->Log((TDesC8)KResult, aResult );
+
+ TICCType* iccType = NULL;
+ aDataPackage->UnPackData( &iccType );
+
+ if ( iIccType != *iccType )
+ {
+ aResult = KErrGeneral;
+ }
+
+ Signal( aResult );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CUICC::GetCurrentActiveUSIMApplication
+// Get current active USIM application
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::GetCurrentActiveUSIMApplication( CStifItemParser& aItem )
+ {
+ iUICCLog->Log(_L8("CUICC::GetCurrentActiveUSIMApplication"));
+ TPtrC string;
+ aItem.GetNextString( string );
+
+ TInt ret( KErrNone );
+
+ if ( _L("147377136") == string)
+ {
+ iActiveID.Append(0xA0);
+ iActiveID.Append(0x00);
+ iActiveID.Append(0x00);
+ iActiveID.Append(0x00);
+ iActiveID.Append(0x87);
+ iActiveID.Append(0x10);
+ iActiveID.Append(0x02);
+ iActiveID.Append(0xFF);
+ iActiveID.Append(0xFF);
+ iActiveID.Append(0xFF);
+ iActiveID.Append(0xFF);
+ iActiveID.Append(0x89);
+ iActiveID.Append(0x04);
+ iActiveID.Append(0x03);
+ iActiveID.Append(0x00);
+ iActiveID.Append(0xFF);
+ }
+
+ ret = HandleRequestL( EMobilePhoneGetCurrentActiveUSimApplication );
+
+ if ( KErrNone == ret )
+ {
+ _LIT8( KSendOk, "GetCurrentActiveUSIMApplication request send ok" );
+ iUICCLog->Log((TDesC8)KSendOk );
+ }
+ else
+ {
+ _LIT8( KSendFailed, "GetCurrentActiveUSIMApplication request send failed: %d" );
+ iUICCLog->Log((TDesC8)KSendFailed, ret );
+ }
+
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::CompleteGetCurrentActiveUSIMApplication
+// Complete GetCurrentActiveUSIMApplication method function.
+// -----------------------------------------------------------------------------
+//
+void CUICC::CompleteGetCurrentActiveUSIMApplication
+ (
+ TInt aResult,
+ CMmDataPackage* aDataPackage
+ )
+ {
+ _LIT8( KResult, "CompleteGetCurrentActiveUSIMApplication result: %d" );
+ iUICCLog->Log((TDesC8)KResult, aResult );
+
+ if( KErrNone == aResult )
+ {
+ // Response information
+ RMobilePhone::TAID* activeAID;
+ //unpack data
+ aDataPackage->UnPackData( &activeAID );
+
+ _LIT8( KActiveAID, "ActiveAID = %d" );
+ iUICCLog->Log((TDesC8)KActiveAID, activeAID );
+ if ( *activeAID != iActiveID)
+ {
+ aResult = KErrGeneral;
+ }
+ }
+ else if( KErrNone != aResult )
+ {
+ _LIT8( KFail, "CompleteGetCurrentActiveUSIMApplication Failed: %d" );
+ iUICCLog->Log((TDesC8)KFail, aResult );
+ }
+
+ Signal( aResult );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CUICC::GetActivePin
+// -----------------------------------------------------------------------------
+//
+TInt CUICC::GetActivePin(
+ CStifItemParser& aItem )
+ {
+ _LIT8( KLog, "CUICC::GetActivePin" );
+ iUICCLog->Log( ( TDesC8 ) KLog );
+
+ TInt temp( 0);
+ aItem.GetNextInt( temp );
+ iActivePin = (RMobilePhone::TMobilePhoneSecurityCode) temp;
+
+ TInt ret( KErrNone );
+
+ ret = HandleRequestL( EMmTsySecurityGetSimActivePinStateIPC );
+
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CUICC::CompleteSecurityGetSimActivePinState
+// -----------------------------------------------------------------------------
+//
+void CUICC::CompleteGetActivePin(
+ TInt aErr,
+ CMmDataPackage& aData )
+ {
+ _LIT8( KLog, "CUICC::CompleteGetActivePin, err = %d" );
+ iUICCLog->Log( ( TDesC8 ) KLog, aErr );
+
+ RMobilePhone::TMobilePhoneSecurityCode* activePin = NULL;
+ // Get the new data
+ aData.UnPackData( &activePin );
+
+ switch ( *activePin )
+ {
+ case RMobilePhone::ESecurityCodePin1:
+ {
+ _LIT8( KActive,
+ "CUICC::CompleteGetActivePin -- active pin = ESecurityCodePin1" );
+ iUICCLog->Log( ( TDesC8 ) KActive );
+ break;
+ }
+ case RMobilePhone::ESecurityUniversalPin:
+ {
+ _LIT8( KActive,
+ "CUICC::CompleteGetActivePin -- active pin = ESecurityUniversalPin" );
+ iUICCLog->Log( ( TDesC8 ) KActive );
+ break;
+ }
+ default:
+ {
+ _LIT8( KActive,
+ "CUICC::CompleteSecurityGetSimActivePinState, bad pin (%d)" );
+ iUICCLog->Log( ( TDesC8 ) KActive, TInt( *activePin ) );
+ aErr = KErrGeneral;
+ break;
+ }
+ }
+
+ if ( iActivePin != *activePin )
+ {
+ aErr = KErrGeneral;
+ }
+
+ Signal( aErr );
+ }
+
+
+
+
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+// None
+
+
+// End of File
+