--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/common_tsy/commontsy/src/mmgsmwcdma/cmmphonegsmwcdmaext.cpp Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,1632 @@
+// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "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:
+//
+
+
+
+// INCLUDE FILES
+#include <etelmm.h>
+#include "cmmphonegsmwcdmaext.h"
+#include "cmmphonetsy.h"
+#include "cmmlinetsy.h"
+#include "cmmcalltsy.h"
+#include "cmmcalllist.h"
+#include "CMmCommonStaticUtility.h"
+#include "MmTsy_conf.h"
+#include <ctsy/serviceapi/mmtsy_ipcdefs.h>
+#include "cmmmessagemanagerbase.h"
+#include <ctsy/pluginapi/cmmdatapackage.h>
+#include "cmmsecuritytsy.h"
+
+
+// ======== MEMBER FUNCTIONS ========
+
+CMmPhoneGsmWcdmaExt::CMmPhoneGsmWcdmaExt()
+ {
+ }
+
+CMmPhoneGsmWcdmaExt::~CMmPhoneGsmWcdmaExt()
+ {
+ if ( iCurrentNwInfo )
+ {
+ delete iCurrentNwInfo;
+ }
+ iCurrentNwInfo = NULL;
+
+ if ( iCurrentLocationArea )
+ {
+ delete iCurrentLocationArea;
+ }
+ iCurrentLocationArea = NULL;
+
+ if ( iGsmHomeNetwork )
+ {
+ delete iGsmHomeNetwork;
+ }
+ iGsmHomeNetwork = NULL;
+
+ iMmPhoneTsy = NULL;
+ iMessageManager = NULL;
+ }
+
+CMmPhoneGsmWcdmaExt* CMmPhoneGsmWcdmaExt::NewL(
+ CMmPhoneTsy* aMmPhoneTsy,
+ CMmMessageManagerBase* aMessageManager )
+ {
+
+ CMmPhoneGsmWcdmaExt* phoneGsmWcdmaExt = new( ELeave )
+ CMmPhoneGsmWcdmaExt();
+
+ CleanupStack::PushL( phoneGsmWcdmaExt );
+ phoneGsmWcdmaExt->iMmPhoneTsy = aMmPhoneTsy;
+ phoneGsmWcdmaExt->iMessageManager = aMessageManager;
+ phoneGsmWcdmaExt->ConstructL();
+ CleanupStack::Pop();
+
+ return phoneGsmWcdmaExt;
+
+ }
+
+void CMmPhoneGsmWcdmaExt::ConstructL()
+ {
+
+ iCurrentNwInfo = new ( ELeave ) RMobilePhone::TMobilePhoneNetworkInfoV8;
+ iCurrentLocationArea = new ( ELeave )
+ RMobilePhone::TMobilePhoneLocationAreaV1;
+
+ iGsmHomeNetwork = new ( ELeave ) RMobilePhone::TMobilePhoneNetworkInfoV8;
+ iNitzInfo.iNitzFieldsUsed = 0x00;
+
+ iAdnEnabled = EFalse;
+ iAdnStatusFetched = EFalse;
+ iFdnStatusFetched = EFalse;
+
+ // empty buffer is used in various places when sending isi service request
+ // into network
+ iEmptyBuffer.Set( KNullDesC );
+
+ //set initial security capability values
+ iSecurityCaps = KMultimodeTsyGsmSecurityInitCaps;
+
+ //set initial lock status and setting
+ iPhoneDeviceStatus = RMobilePhone::EStatusLockUnknown;
+ iPhoneDeviceSetting = RMobilePhone::ELockSetUnknown;
+ iICCStatus = RMobilePhone::EStatusLockUnknown;
+ iICCSetting = RMobilePhone::ELockSetUnknown;
+ iPhoneToICCStatus = RMobilePhone::EStatusLockUnknown;
+ iPhoneToICCSetting = RMobilePhone::ELockSetUnknown;
+
+ // set initial card generation type to unknown
+ iCurrentICCType = EICCTypeSimUnknown;
+
+ //initialize password value
+ iSecCode.Zero();
+ //set intial value for flag about home network information
+ iIsHomeNetworkInfoAvailable = EFalse;
+
+ // below it's checked if all multimode api call services are supported
+ // by tsy
+ #pragma warning( disable : 4127 )
+ //Warning caused by configurational constants in if case. This is not
+ //really error but acts as a flag. This warning is purely informational as
+ //can be seen from the explanation of Visual C++ help:
+ //Compiler Warning (level 4) C4127
+ //conditional expression is constant. The controlling expression of an
+ //if statement or while loop evaluated to a constant. As a result, the
+ //code in the body of the if statement or while loop either always
+ //executes or never executes. This warning is informational.
+ if ( KVoice1LineSupported &&
+ KDataLineSupported &&
+ KFaxLineSupported &&
+ KVoice2LineSupported &&
+ KSmsMessagingSupported &&
+ KGprsLineSupported )
+ {
+ iCallServicesSupportedAll = ETrue;
+ }
+ else
+ {
+ iCallServicesSupportedAll = EFalse;
+ }
+ #pragma warning( default : 4127 )
+
+ }
+
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::InitSimL
+// Called as part of the boot sequence. This method request the sim related
+// information required as part of the TSY's boot sequence
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::InitSimL()
+ {
+TFLOGSTRING("TSY: CMmPhoneGsmWcdmaExt::InitSimL");
+
+ TInt ret( KErrGeneral );
+
+ //get the home network information in boot-up
+ iMessageManager->HandleRequestL( EMobilePhoneGetHomeNetwork );
+
+ // Check whether is possible to disable PIN
+ iMessageManager->HandleRequestL( EMmTsyPhoneGetPin1DisableSupportedIPC );
+
+ // Register for SIM refresh (supported only in 3.0)
+ iMmPhoneTsy->SimRefreshRegisterL();
+
+ return ret;
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::GetNetworkCaps
+// Gets static GSM network capabilities
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::GetNetworkCaps(
+ TUint32* aCaps )
+ {
+TFLOGSTRING("TSY: CMmPhoneGsmWcdmaExt::GetNetworkCaps");
+
+ *aCaps = RMobilePhone::KCapsGetRegistrationStatus
+ | RMobilePhone::KCapsNotifyRegistrationStatus
+ | RMobilePhone::KCapsGetCurrentMode
+ | RMobilePhone::KCapsNotifyMode
+ | RMobilePhone::KCapsGetCurrentNetwork
+ | RMobilePhone::KCapsNotifyCurrentNetwork
+ | RMobilePhone::KCapsGetHomeNetwork
+ | RMobilePhone::KCapsGetDetectedNetworks
+ | RMobilePhone::KCapsManualNetworkSelection
+ | RMobilePhone::KCapsNotifyNITZInfo
+ | RMobilePhone::KCapsGetNITZInfo;
+
+ return KErrNone;
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::GetCurrentNetworkV1
+// Gets the current network's information (mode, status, etc) and the
+// location area, use the version 1 specified information fields
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::GetCurrentNetworkV1(
+ RMobilePhone::TMobilePhoneNetworkInfoV1* aNetInfo,
+ RMobilePhone::TMobilePhoneLocationAreaV1* aArea )
+ {
+TFLOGSTRING("TSY: CMmPhoneGsmWcdmaExt::GetCurrentNetworkV1");
+
+ if ( NULL != aNetInfo )
+ {
+ // version 1 information, copy the values
+ aNetInfo->iMode = iCurrentNwInfo->iMode;
+ aNetInfo->iStatus = iCurrentNwInfo->iStatus;
+ aNetInfo->iBandInfo = iCurrentNwInfo->iBandInfo;
+ aNetInfo->iCountryCode = iCurrentNwInfo->iCountryCode;
+ aNetInfo->iCdmaSID = iCurrentNwInfo->iCdmaSID;
+ aNetInfo->iAnalogSID = iCurrentNwInfo->iAnalogSID;
+ aNetInfo->iNetworkId = iCurrentNwInfo->iNetworkId;
+ aNetInfo->iDisplayTag = iCurrentNwInfo->iDisplayTag;
+ aNetInfo->iShortName = iCurrentNwInfo->iShortName;
+ aNetInfo->iLongName = iCurrentNwInfo->iLongName;
+ }
+ if ( NULL != aArea )
+ {
+ // iCurrentLocationArea can't be NULL
+ *aArea = *iCurrentLocationArea;
+ }
+
+ return KErrNone;
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::GetCurrentNetworkV2
+// Gets the current network's information (mode, status, etc) and the
+// location area, use the version 2 specified information fields
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::GetCurrentNetworkV2(
+ RMobilePhone::TMobilePhoneNetworkInfoV2* aNetInfo,
+ RMobilePhone::TMobilePhoneLocationAreaV1* aArea )
+ {
+TFLOGSTRING("TSY: CMmPhoneGsmWcdmaExt::GetCurrentNetworkV2");
+
+ if ( NULL != aNetInfo )
+ {
+ // version 1 information
+ aNetInfo->iMode = iCurrentNwInfo->iMode;
+ aNetInfo->iStatus = iCurrentNwInfo->iStatus;
+ aNetInfo->iBandInfo = iCurrentNwInfo->iBandInfo;
+ aNetInfo->iCountryCode = iCurrentNwInfo->iCountryCode;
+ aNetInfo->iCdmaSID = iCurrentNwInfo->iCdmaSID;
+ aNetInfo->iAnalogSID = iCurrentNwInfo->iAnalogSID;
+ aNetInfo->iNetworkId = iCurrentNwInfo->iNetworkId;
+ aNetInfo->iDisplayTag = iCurrentNwInfo->iDisplayTag;
+ aNetInfo->iShortName = iCurrentNwInfo->iShortName;
+ aNetInfo->iLongName = iCurrentNwInfo->iLongName;
+ // extended version 2 information
+ aNetInfo->iAccess = iCurrentNwInfo->iAccess;
+ }
+ if ( NULL != aArea )
+ {
+ // iCurrentLocationArea can't be NULL
+ *aArea = *iCurrentLocationArea;
+ }
+
+ return KErrNone;
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::GetCurrentNetworkV5
+// Gets the current network's information (mode, status, etc) and the
+// location area, use the version 5 information.
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::GetCurrentNetworkV5(
+ RMobilePhone::TMobilePhoneNetworkInfoV5* aNetInfo,
+ RMobilePhone::TMobilePhoneLocationAreaV1* aArea )
+ {
+TFLOGSTRING("TSY: CMmPhoneGsmWcdmaExt::GetCurrentNetworkV5" );
+
+ if ( NULL != aNetInfo )
+ {
+ // version 1 information
+ aNetInfo->iMode = iCurrentNwInfo->iMode;
+ aNetInfo->iStatus = iCurrentNwInfo->iStatus;
+ aNetInfo->iBandInfo = iCurrentNwInfo->iBandInfo;
+ aNetInfo->iCountryCode = iCurrentNwInfo->iCountryCode;
+ aNetInfo->iCdmaSID = iCurrentNwInfo->iCdmaSID;
+ aNetInfo->iAnalogSID = iCurrentNwInfo->iAnalogSID;
+ aNetInfo->iNetworkId = iCurrentNwInfo->iNetworkId;
+ aNetInfo->iDisplayTag = iCurrentNwInfo->iDisplayTag;
+ aNetInfo->iShortName = iCurrentNwInfo->iShortName;
+ aNetInfo->iLongName = iCurrentNwInfo->iLongName;
+ // extended version 2 information
+ aNetInfo->iAccess = iCurrentNwInfo->iAccess;
+ // extended version 5 information
+ aNetInfo->iHsdpaAvailableIndicator =
+ iCurrentNwInfo->iHsdpaAvailableIndicator;
+ aNetInfo->iEgprsAvailableIndicator =
+ iCurrentNwInfo->iEgprsAvailableIndicator;
+ }
+ if ( NULL != aArea )
+ {
+ // iCurrentLocationArea can't be NULL
+ *aArea = *iCurrentLocationArea;
+ }
+
+ return KErrNone;
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::GetCurrentNetwork
+// Gets the current network's information (mode, status, etc) and the
+// location area, use the default version 8 information.
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::GetCurrentNetwork(
+ RMobilePhone::TMobilePhoneNetworkInfoV8* aNetInfo,
+ RMobilePhone::TMobilePhoneLocationAreaV1* aArea )
+ {
+TFLOGSTRING("TSY: CMmPhoneGsmWcdmaExt::GetCurrentNetwork" );
+
+ if ( NULL != aNetInfo )
+ {
+ // version 1 information
+ aNetInfo->iMode = iCurrentNwInfo->iMode;
+ aNetInfo->iStatus = iCurrentNwInfo->iStatus;
+ aNetInfo->iBandInfo = iCurrentNwInfo->iBandInfo;
+ aNetInfo->iCountryCode = iCurrentNwInfo->iCountryCode;
+ aNetInfo->iCdmaSID = iCurrentNwInfo->iCdmaSID;
+ aNetInfo->iAnalogSID = iCurrentNwInfo->iAnalogSID;
+ aNetInfo->iNetworkId = iCurrentNwInfo->iNetworkId;
+ aNetInfo->iDisplayTag = iCurrentNwInfo->iDisplayTag;
+ aNetInfo->iShortName = iCurrentNwInfo->iShortName;
+ aNetInfo->iLongName = iCurrentNwInfo->iLongName;
+ // extended version 2 information
+ aNetInfo->iAccess = iCurrentNwInfo->iAccess;
+ // extended version 5 information
+ aNetInfo->iHsdpaAvailableIndicator =
+ iCurrentNwInfo->iHsdpaAvailableIndicator;
+ aNetInfo->iEgprsAvailableIndicator =
+ iCurrentNwInfo->iEgprsAvailableIndicator;
+ // extended version 8 information
+ aNetInfo->iHsupaAvailableIndicator =
+ iCurrentNwInfo->iHsupaAvailableIndicator;
+ }
+ if ( NULL != aArea )
+ {
+ // iCurrentLocationArea can't be NULL
+ *aArea = *iCurrentLocationArea;
+ }
+
+ return KErrNone;
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::GetCurrentNetworkNoLocationV1
+// Gets the current network's information (mode, status, etc), but not the
+// location area, use the version 1 specified information fields
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::GetCurrentNetworkNoLocationV1(
+ RMobilePhone::TMobilePhoneNetworkInfoV1* aNetInfo )
+ {
+TFLOGSTRING("TSY: CMmPhoneGsmWcdmaExt::GetCurrentNetworkNoLocationV1" );
+
+ if ( NULL != aNetInfo )
+ {
+ // version 1 network information
+ aNetInfo->iMode = iCurrentNwInfo->iMode;
+ aNetInfo->iStatus = iCurrentNwInfo->iStatus;
+ aNetInfo->iBandInfo = iCurrentNwInfo->iBandInfo;
+ aNetInfo->iCountryCode = iCurrentNwInfo->iCountryCode;
+ aNetInfo->iCdmaSID = iCurrentNwInfo->iCdmaSID;
+ aNetInfo->iAnalogSID = iCurrentNwInfo->iAnalogSID;
+ aNetInfo->iNetworkId = iCurrentNwInfo->iNetworkId;
+ aNetInfo->iDisplayTag = iCurrentNwInfo->iDisplayTag;
+ aNetInfo->iShortName = iCurrentNwInfo->iShortName;
+ aNetInfo->iLongName = iCurrentNwInfo->iLongName;
+ }
+
+ return KErrNone;
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::GetCurrentNetworkNoLocationV2
+// Gets the current network's information (mode, status, etc), but not the
+// location area, use the version 2 specified info.
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::GetCurrentNetworkNoLocationV2(
+ RMobilePhone::TMobilePhoneNetworkInfoV2* aNetInfo )
+ {
+TFLOGSTRING("TSY: CMmPhoneGsmWcdmaExt::GetCurrentNetworkNoLocationV2" );
+
+ if ( NULL != aNetInfo )
+ {
+ // version 1 information
+ aNetInfo->iMode = iCurrentNwInfo->iMode;
+ aNetInfo->iStatus = iCurrentNwInfo->iStatus;
+ aNetInfo->iBandInfo = iCurrentNwInfo->iBandInfo;
+ aNetInfo->iCountryCode = iCurrentNwInfo->iCountryCode;
+ aNetInfo->iCdmaSID = iCurrentNwInfo->iCdmaSID;
+ aNetInfo->iAnalogSID = iCurrentNwInfo->iAnalogSID;
+ aNetInfo->iNetworkId = iCurrentNwInfo->iNetworkId;
+ aNetInfo->iDisplayTag = iCurrentNwInfo->iDisplayTag;
+ aNetInfo->iShortName = iCurrentNwInfo->iShortName;
+ aNetInfo->iLongName = iCurrentNwInfo->iLongName;
+ // extended version 2 information
+ aNetInfo->iAccess = iCurrentNwInfo->iAccess;
+ }
+
+ return KErrNone;
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::GetCurrentNetworkNoLocationV5
+// Gets the current network's information (mode, status, etc), but not the
+// location area, use the version 5 information.
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::GetCurrentNetworkNoLocationV5(
+ RMobilePhone::TMobilePhoneNetworkInfoV5* aNetInfo )
+ {
+TFLOGSTRING("TSY: CMmPhoneGsmWcdmaExt::GetCurrentNetworkNoLocationV5" );
+
+ if ( NULL != aNetInfo )
+ {
+ // version 1 information
+ aNetInfo->iMode = iCurrentNwInfo->iMode;
+ aNetInfo->iStatus = iCurrentNwInfo->iStatus;
+ aNetInfo->iBandInfo = iCurrentNwInfo->iBandInfo;
+ aNetInfo->iCountryCode = iCurrentNwInfo->iCountryCode;
+ aNetInfo->iCdmaSID = iCurrentNwInfo->iCdmaSID;
+ aNetInfo->iAnalogSID = iCurrentNwInfo->iAnalogSID;
+ aNetInfo->iNetworkId = iCurrentNwInfo->iNetworkId;
+ aNetInfo->iDisplayTag = iCurrentNwInfo->iDisplayTag;
+ aNetInfo->iShortName = iCurrentNwInfo->iShortName;
+ aNetInfo->iLongName = iCurrentNwInfo->iLongName;
+ // extended version 2 information
+ aNetInfo->iAccess = iCurrentNwInfo->iAccess;
+ // extended version 5 information
+ aNetInfo->iHsdpaAvailableIndicator =
+ iCurrentNwInfo->iHsdpaAvailableIndicator;
+ aNetInfo->iEgprsAvailableIndicator =
+ iCurrentNwInfo->iEgprsAvailableIndicator;
+ }
+
+ return KErrNone;
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::GetCurrentNetworkNoLocation
+// Gets the current network's information (mode, status, etc), but not the
+// location area, use the default version 8 information.
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::GetCurrentNetworkNoLocation(
+ RMobilePhone::TMobilePhoneNetworkInfoV8* aNetInfo )
+ {
+TFLOGSTRING("TSY: CMmPhoneGsmWcdmaExt::GetCurrentNetworkNoLocation" );
+
+ if ( NULL != aNetInfo )
+ {
+ // version 1 information
+ aNetInfo->iMode = iCurrentNwInfo->iMode;
+ aNetInfo->iStatus = iCurrentNwInfo->iStatus;
+ aNetInfo->iBandInfo = iCurrentNwInfo->iBandInfo;
+ aNetInfo->iCountryCode = iCurrentNwInfo->iCountryCode;
+ aNetInfo->iCdmaSID = iCurrentNwInfo->iCdmaSID;
+ aNetInfo->iAnalogSID = iCurrentNwInfo->iAnalogSID;
+ aNetInfo->iNetworkId = iCurrentNwInfo->iNetworkId;
+ aNetInfo->iDisplayTag = iCurrentNwInfo->iDisplayTag;
+ aNetInfo->iShortName = iCurrentNwInfo->iShortName;
+ aNetInfo->iLongName = iCurrentNwInfo->iLongName;
+ // extended version 2 information
+ aNetInfo->iAccess = iCurrentNwInfo->iAccess;
+ // extended version 5 information
+ aNetInfo->iHsdpaAvailableIndicator =
+ iCurrentNwInfo->iHsdpaAvailableIndicator;
+ aNetInfo->iEgprsAvailableIndicator =
+ iCurrentNwInfo->iEgprsAvailableIndicator;
+ // extended version 8 information
+ aNetInfo->iHsupaAvailableIndicator =
+ iCurrentNwInfo->iHsupaAvailableIndicator;
+ }
+
+ return KErrNone;
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::SetCurrentNetwork
+// Updates the value of the internal attributes iCurrentNwInfo and
+// iCurrentLocationArea with new values
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::SetCurrentNetwork(
+ const RMobilePhone::TMobilePhoneNetworkInfoV8& aNetInfo,
+ const RMobilePhone::TMobilePhoneLocationAreaV1& aArea )
+
+ {
+TFLOGSTRING("TSY: CMmPhoneGsmWcdmaExt::SetCurrentNetwork" );
+
+ *iCurrentNwInfo = aNetInfo;
+ *iCurrentLocationArea = aArea;
+
+ return KErrNone;
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::GetNITZInfo
+// Gets current NITZ info
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::GetNITZInfo(
+ RMobilePhone::TMobilePhoneNITZ* aNwtTimeInfo )
+ {
+TFLOGSTRING("TSY: CMmPhoneGsmWcdmaExt::GetNITZInfo" );
+
+ TInt ret( KErrNotFound );
+
+ // If time is valid, copy it to client side
+ if ( 0 != iNitzInfo.iNitzFieldsUsed )
+ {
+ *aNwtTimeInfo = iNitzInfo;
+ //MIE: is the code below absolutely necessary?
+ //don't think so. Make sure about this.
+ if ( 0 != iCurrentNwInfo->iShortName.Length() )
+ {
+ aNwtTimeInfo->iShortNetworkId.Copy(
+ iCurrentNwInfo->iShortName );
+
+ // Short NW name is available
+ aNwtTimeInfo->iNitzFieldsUsed |=
+ RMobilePhone::KCapsShortNameAvailable;
+ }
+ if ( 0 != iCurrentNwInfo->iLongName.Length() )
+ {
+ aNwtTimeInfo->iLongNetworkId.Copy(
+ iCurrentNwInfo->iLongName );
+
+ // Long NW name is available
+ aNwtTimeInfo->iNitzFieldsUsed |=
+ RMobilePhone::KCapsLongNameAvailable;
+ }
+ ret = KErrNone;
+ }
+ return ret;
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::ReceivedNITZInfo
+// Updates internal attribute iNitzInfo with received NITZ info parameters
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+void CMmPhoneGsmWcdmaExt::ReceivedNITZInfo(
+ RMobilePhone::TMobilePhoneNITZ& aNITZInfo )
+ {
+TFLOGSTRING("TSY: CMmPhoneGsmWcdmaExt::ReceivedNITZInfo" );
+
+ // This information is not necessarily available if network time
+ // indication is received only once in bootup, before registration to NW.
+ if ( 0 != iCurrentNwInfo->iShortName.Length() )
+ {
+ aNITZInfo.iShortNetworkId.Copy(
+ iCurrentNwInfo->iShortName );
+
+ // Short NW name is available
+ aNITZInfo.iNitzFieldsUsed |= RMobilePhone::KCapsShortNameAvailable;
+ }
+ if ( 0 != iCurrentNwInfo->iLongName.Length() )
+ {
+ aNITZInfo.iLongNetworkId.Copy(
+ iCurrentNwInfo->iLongName );
+
+ // Long NW name is available
+ aNITZInfo.iNitzFieldsUsed |= RMobilePhone::KCapsLongNameAvailable;
+ }
+
+ // Then update info into internal member
+ iNitzInfo = aNITZInfo;
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::GetCellInfoL
+// Send a GetCellInfo request to the LTSY
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::GetCellInfoL()
+ {
+ TFLOGSTRING("TSY: CMmPhoneGsmWcdmaExt::GetCellInfoL" );
+ TInt ret = iMessageManager->HandleRequestL( ECtsyPhoneCellInfoReq );
+ return ret;
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::NotifyCellInfoChangeL
+// Ask LTSY to register a CellInfoChange notification
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::NotifyCellInfoChangeL()
+ {
+ TFLOGSTRING("TSY: CMmPhoneGsmWcdmaExt::NotifyCellInfoChangeL" );
+ TInt ret = iMessageManager->HandleRequestL( ECtsyPhoneCellInfoIndReq );
+ return ret;
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::CompleteNotifyNetworkRegistrationStatusChange
+// Network registration status changed, check if we need to
+// update internal information, which happens if we drop out of network.
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+void CMmPhoneGsmWcdmaExt::CompleteNotifyNetworkRegistrationStatusChange(
+ RMobilePhone::TMobilePhoneRegistrationStatus aRegistrationStatus )
+ // New registration status from network
+ {
+TFLOGSTRING("TSY: CMmPhoneGsmWcdmaExt::CompleteNotifyNetworkRegistrationStatusChange" );
+
+ // If registration status not registered, then reset network information
+ switch( aRegistrationStatus )
+ {
+ case RMobilePhone::ERegistrationUnknown:
+ case RMobilePhone::ENotRegisteredNoService:
+ case RMobilePhone::ENotRegisteredEmergencyOnly:
+ case RMobilePhone::ENotRegisteredSearching:
+ case RMobilePhone::ERegistrationDenied:
+ iCurrentNwInfo->iCountryCode.FillZ( 0 );
+ iCurrentNwInfo->iNetworkId.FillZ( 0 );
+ iCurrentNwInfo->iShortName.FillZ( 0 );
+ iCurrentNwInfo->iLongName.FillZ( 0 );
+ iCurrentLocationArea->iAreaKnown = EFalse;
+ iCurrentLocationArea->iLocationAreaCode = 0x0;
+ iCurrentLocationArea->iCellId = 0x0;
+ break;
+ // all the other statuses are ok.
+ case RMobilePhone::ERegisteredBusy:
+ case RMobilePhone::ERegisteredOnHomeNetwork:
+ case RMobilePhone::ERegisteredRoaming:
+ default:
+ break;
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::GetHomeNetworkV1
+// Gets GSM home network information
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::GetHomeNetworkV1(
+ RMobilePhone::TMobilePhoneNetworkInfoV1* aHomeNetInfo )
+ {
+TFLOGSTRING("TSY: CMmPhoneGsmWcdmaExt::GetHomeNetworkV1" );
+
+ TInt ret( KErrNone );
+
+ // If the home network info is available..
+ if ( iIsHomeNetworkInfoAvailable )
+ {
+ // version 1 information
+ aHomeNetInfo->iMode = iGsmHomeNetwork->iMode;
+ aHomeNetInfo->iStatus = iGsmHomeNetwork->iStatus;
+ aHomeNetInfo->iBandInfo = iGsmHomeNetwork->iBandInfo;
+ aHomeNetInfo->iCountryCode = iGsmHomeNetwork->iCountryCode;
+ aHomeNetInfo->iCdmaSID = iGsmHomeNetwork->iCdmaSID;
+ aHomeNetInfo->iAnalogSID = iGsmHomeNetwork->iAnalogSID;
+ aHomeNetInfo->iNetworkId = iGsmHomeNetwork->iNetworkId;
+ aHomeNetInfo->iDisplayTag = iGsmHomeNetwork->iDisplayTag;
+ aHomeNetInfo->iShortName = iGsmHomeNetwork->iShortName;
+ aHomeNetInfo->iLongName = iGsmHomeNetwork->iLongName;
+ }
+ // If home network object has not been created, return suitable
+ // error code so that phone can request information again.
+ else
+ {
+ ret = KErrNotFound;
+ }
+
+ return ret;
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::GetHomeNetworkV2
+// Gets GSM home network information
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::GetHomeNetworkV2(
+ RMobilePhone::TMobilePhoneNetworkInfoV2* aHomeNetInfo )
+ {
+TFLOGSTRING("TSY: CMmPhoneGsmWcdmaExt::GetHomeNetworkV2" );
+
+ TInt ret( KErrNone );
+
+ // If the home network info is available..
+ if ( iIsHomeNetworkInfoAvailable )
+ {
+ // version 1 network information
+ aHomeNetInfo->iMode = iGsmHomeNetwork->iMode;
+ aHomeNetInfo->iStatus = iGsmHomeNetwork->iStatus;
+ aHomeNetInfo->iBandInfo = iGsmHomeNetwork->iBandInfo;
+ aHomeNetInfo->iCountryCode = iGsmHomeNetwork->iCountryCode;
+ aHomeNetInfo->iCdmaSID = iGsmHomeNetwork->iCdmaSID;
+ aHomeNetInfo->iAnalogSID = iGsmHomeNetwork->iAnalogSID;
+ aHomeNetInfo->iNetworkId = iGsmHomeNetwork->iNetworkId;
+ aHomeNetInfo->iDisplayTag = iGsmHomeNetwork->iDisplayTag;
+ aHomeNetInfo->iShortName = iGsmHomeNetwork->iShortName;
+ aHomeNetInfo->iLongName = iGsmHomeNetwork->iLongName;
+ // extended version 2 information
+ aHomeNetInfo->iAccess = iGsmHomeNetwork->iAccess;
+ }
+ // If home network object has not been created, return suitable
+ // error code so that phone can request information again.
+ else
+ {
+ ret = KErrNotFound;
+ }
+
+ return ret;
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::GetHomeNetworkV5
+// Gets GSM home network information
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::GetHomeNetworkV5(
+ RMobilePhone::TMobilePhoneNetworkInfoV5* aHomeNetInfo )
+ // pointer to HomeNetInfo
+ {
+TFLOGSTRING("TSY: CMmPhoneGsmWcdmaExt::GetHomeNetworkV5" );
+
+ TInt ret( KErrNone );
+
+ // If the home network info is available..
+ if ( iIsHomeNetworkInfoAvailable )
+ {
+ // version 1 network information
+ aHomeNetInfo->iMode = iGsmHomeNetwork->iMode;
+ aHomeNetInfo->iStatus = iGsmHomeNetwork->iStatus;
+ aHomeNetInfo->iBandInfo = iGsmHomeNetwork->iBandInfo;
+ aHomeNetInfo->iCountryCode = iGsmHomeNetwork->iCountryCode;
+ aHomeNetInfo->iCdmaSID = iGsmHomeNetwork->iCdmaSID;
+ aHomeNetInfo->iAnalogSID = iGsmHomeNetwork->iAnalogSID;
+ aHomeNetInfo->iNetworkId = iGsmHomeNetwork->iNetworkId;
+ aHomeNetInfo->iDisplayTag = iGsmHomeNetwork->iDisplayTag;
+ aHomeNetInfo->iShortName = iGsmHomeNetwork->iShortName;
+ aHomeNetInfo->iLongName = iGsmHomeNetwork->iLongName;
+ // extended version 2 information
+ aHomeNetInfo->iAccess = iGsmHomeNetwork->iAccess;
+ // extended version 5 information
+ aHomeNetInfo->iHsdpaAvailableIndicator =
+ iGsmHomeNetwork->iHsdpaAvailableIndicator;
+ aHomeNetInfo->iEgprsAvailableIndicator =
+ iGsmHomeNetwork->iEgprsAvailableIndicator;
+ }
+ // If home network object has not been created, return suitable
+ // error code so that phone can request information again.
+ else
+ {
+ ret = KErrNotFound;
+ }
+
+ return ret;
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::GetHomeNetwork
+// Gets GSM home network information
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::GetHomeNetwork(
+ RMobilePhone::TMobilePhoneNetworkInfoV8* aHomeNetInfo )
+ // pointer to HomeNetInfo
+ {
+TFLOGSTRING("TSY: CMmPhoneGsmWcdmaExt::GetHomeNetwork" );
+
+ TInt ret( KErrNone );
+
+ // If the home network info is available..
+ if ( iIsHomeNetworkInfoAvailable )
+ {
+ // version 1 network information
+ aHomeNetInfo->iMode = iGsmHomeNetwork->iMode;
+ aHomeNetInfo->iStatus = iGsmHomeNetwork->iStatus;
+ aHomeNetInfo->iBandInfo = iGsmHomeNetwork->iBandInfo;
+ aHomeNetInfo->iCountryCode = iGsmHomeNetwork->iCountryCode;
+ aHomeNetInfo->iCdmaSID = iGsmHomeNetwork->iCdmaSID;
+ aHomeNetInfo->iAnalogSID = iGsmHomeNetwork->iAnalogSID;
+ aHomeNetInfo->iNetworkId = iGsmHomeNetwork->iNetworkId;
+ aHomeNetInfo->iDisplayTag = iGsmHomeNetwork->iDisplayTag;
+ aHomeNetInfo->iShortName = iGsmHomeNetwork->iShortName;
+ aHomeNetInfo->iLongName = iGsmHomeNetwork->iLongName;
+ // extended version 2 information
+ aHomeNetInfo->iAccess = iGsmHomeNetwork->iAccess;
+ // extended version 5 information
+ aHomeNetInfo->iHsdpaAvailableIndicator =
+ iGsmHomeNetwork->iHsdpaAvailableIndicator;
+ aHomeNetInfo->iEgprsAvailableIndicator =
+ iGsmHomeNetwork->iEgprsAvailableIndicator;
+ // extended version 8 information
+ aHomeNetInfo->iHsupaAvailableIndicator =
+ iGsmHomeNetwork->iHsupaAvailableIndicator;
+ }
+ // If home network object has not been created, return suitable
+ // error code so that phone can request information again.
+ else
+ {
+ ret = KErrNotFound;
+ }
+
+ return ret;
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::GetFdnStatusL
+// This method gets current fixed dialling numbers service status
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::GetFdnStatusL()
+ {
+ return iMessageManager->HandleRequestL( EMobilePhoneGetFdnStatus );
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::SetFdnSetting
+// This method sets current fixed dialling numbers service status
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::SetFdnSetting(
+ RMobilePhone::TMobilePhoneFdnSetting* aFdnSetting )
+ {
+ TInt ret( KErrNotFound );
+
+ CMmDataPackage dataPackage;
+ dataPackage.PackData( aFdnSetting );
+
+ TRAPD( trapError,
+ ret = iMessageManager->HandleRequestL(
+ EMobilePhoneSetFdnSetting, &dataPackage );
+ );
+
+ if ( KErrNone != trapError )
+ {
+ ret = trapError;
+ }
+
+ return ret;
+
+ }
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::GetServiceProviderNameL
+// This method requests service provider name
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::GetServiceProviderNameL()
+ {
+ return iMessageManager->HandleRequestL(
+ EMobilePhoneGetServiceProviderName );
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::GetICCTypeL
+// This method requests the type of SIM card in use (SIM/USIM)
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::GetICCTypeL()
+ {
+ return iMessageManager->HandleRequestL( EMmTsySimGetICCType );
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::CompleteGetICCType
+// This method sets the received ICC type (SIM/USIM/Unknown) into
+// iCurrentICCType and requests the state of the PIN code (in USIM's case it
+// can be either the PIN or the UPIN code)
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+void CMmPhoneGsmWcdmaExt::CompleteGetICCType(
+ CMmDataPackage* aDataPackage ) // data package
+ {
+ //unpack the data
+ TICCType* aType = NULL;
+ aDataPackage->UnPackData( &aType );
+
+ //set the new ICC type
+ iCurrentICCType = *aType;
+
+ // If the current ICC is USIM, first make a request for getting the active
+ // PIN code, after that we make another request whether the PIN is enabled
+ // or not. Othwerwise just request whether PIN is enabled. Can't do
+ // nothing if adaptation returns error so return value is not handled here
+ SimActivePinState( );
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::NotifySimStatusReady
+// This method requests the DOS Tsy to inform the LTSY when the SIM is ready
+// so it's information is accessible.
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::NotifySimStatusReadyL()
+ {
+ return iMessageManager->HandleRequestL(
+ EMmTsyBootNotifySimStatusReadyIPC );
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::MtcStateQueryL
+// This method requests the MTC status
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::MtcStateQueryL()
+ {
+ return iMessageManager->HandleRequestL ( EMmTsyBootGetRFStatusIPC );
+ }
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::UpdateSecurityCaps
+// Updates security capabilities based on received security Event
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::UpdateSecurityCaps(
+ RMobilePhone::TMobilePhoneSecurityEvent aEvent )
+ {
+
+ // Store old capabilities
+ TUint32 oldSecurityCaps = iSecurityCaps;
+
+ iSecurityCaps = 0;
+
+ // Read capabilities
+ switch( aEvent )
+ {
+ case RMobilePhone::ENoICCFound:
+ case RMobilePhone::EICCTerminated:
+ // if these capabilities already exist, they remain in this case
+ if ( oldSecurityCaps & RMobilePhone::KCapsLockPhone )
+ {
+ iSecurityCaps |= RMobilePhone::KCapsLockPhone;
+ }
+ if ( oldSecurityCaps & RMobilePhone::KCapsAccessPhonePassword )
+ {
+ iSecurityCaps |= RMobilePhone::KCapsAccessPhonePassword;
+ }
+ break;
+ case RMobilePhone::EPin1Required:
+ case RMobilePhone::EPuk1Required:
+ case RMobilePhone::EPin2Required:
+ case RMobilePhone::EPuk2Required:
+ // if these capabilities already exist, they may remain in this
+ // case
+ if ( oldSecurityCaps & RMobilePhone::KCapsLockPhone )
+ {
+ iSecurityCaps |= RMobilePhone::KCapsLockPhone;
+ }
+ if ( oldSecurityCaps & RMobilePhone::KCapsAccessPhonePassword )
+ {
+ iSecurityCaps |= RMobilePhone::KCapsAccessPhonePassword;
+ }
+ if ( oldSecurityCaps & RMobilePhone::KCapsLockPhoneToICC )
+ {
+ iSecurityCaps |= RMobilePhone::KCapsLockPhoneToICC;
+ }
+ break;
+ case RMobilePhone::EPhonePasswordRequired:
+ // if these capabilities already exist, they may remain in this
+ // case
+ if ( oldSecurityCaps & RMobilePhone::KCapsLockICC )
+ {
+ iSecurityCaps |= RMobilePhone::KCapsLockICC;
+ }
+ // Access to PIN1
+ if ( oldSecurityCaps & RMobilePhone::KCapsAccessPin1 )
+ {
+ iSecurityCaps |= RMobilePhone::KCapsAccessPin1;
+ }
+ // Access to PIN2
+ if ( oldSecurityCaps & RMobilePhone::KCapsAccessPin2 )
+ {
+ iSecurityCaps |= RMobilePhone::KCapsAccessPin2;
+ }
+ break;
+ case RMobilePhone::EPin1Verified:
+ case RMobilePhone::EPin2Verified:
+ case RMobilePhone::EPuk1Verified:
+ case RMobilePhone::EPuk2Verified:
+ // These capabilities exist for sure in this case
+ iSecurityCaps = RMobilePhone::KCapsLockICC |
+ RMobilePhone::KCapsAccessPin1 |
+ RMobilePhone::KCapsAccessPin2;
+ // if these capabilities already exist, they may remain in this
+ // case
+ if ( oldSecurityCaps & RMobilePhone::KCapsLockPhone )
+ {
+ iSecurityCaps |= RMobilePhone::KCapsLockPhone;
+ }
+ if ( oldSecurityCaps & RMobilePhone::KCapsAccessPhonePassword )
+ {
+ iSecurityCaps |= RMobilePhone::KCapsAccessPhonePassword;
+ }
+ if ( oldSecurityCaps & RMobilePhone::KCapsLockPhoneToICC )
+ {
+ iSecurityCaps |= RMobilePhone::KCapsLockPhoneToICC;
+ }
+ break;
+ case RMobilePhone::EPhonePasswordVerified:
+ // These capabilities exist for sure in this case
+ iSecurityCaps = RMobilePhone::KCapsLockPhone |
+ RMobilePhone::KCapsAccessPhonePassword |
+ RMobilePhone::KCapsLockPhoneToICC;
+ // If these capabilities already exist for sure in this case
+ if ( oldSecurityCaps & RMobilePhone::KCapsLockICC )
+ {
+ iSecurityCaps |= RMobilePhone::KCapsLockICC;
+ }
+ if ( oldSecurityCaps & RMobilePhone::KCapsAccessPin1 )
+ {
+ iSecurityCaps |= RMobilePhone::KCapsAccessPin1;
+ }
+ if ( oldSecurityCaps & RMobilePhone::KCapsAccessPin2 )
+ {
+ iSecurityCaps|= RMobilePhone::KCapsAccessPin2;
+ }
+ break;
+ default:
+ break;
+ //lint -e{788} don't warn about missing cases
+ }
+
+ // Additional caps if UPIN and UPUK are supported in SIM
+ if ( iCurrentICCType == EICCTypeSim3G )
+ {
+ // Read capabilities
+ switch( aEvent )
+ {
+ case RMobilePhone::EUniversalPinRequired:
+ case RMobilePhone::EUniversalPukRequired:
+ // if these capabilities already exist, they may remain in
+ // this case
+ if ( oldSecurityCaps & RMobilePhone::KCapsLockPhone )
+ {
+ iSecurityCaps |= RMobilePhone::KCapsLockPhone;
+ }
+ if ( oldSecurityCaps &
+ RMobilePhone::KCapsAccessPhonePassword )
+ {
+ iSecurityCaps |= RMobilePhone::KCapsAccessPhonePassword;
+ }
+ if ( oldSecurityCaps & RMobilePhone::KCapsLockPhoneToICC )
+ {
+ iSecurityCaps |= RMobilePhone::KCapsLockPhoneToICC;
+ }
+ break;
+ case RMobilePhone::EPhonePasswordRequired:
+ // Access to Universal PIN
+ if ( oldSecurityCaps & RMobilePhone::KCapsAccessUniversalPin )
+ {
+ iSecurityCaps |= RMobilePhone::KCapsAccessUniversalPin;
+ }
+ // Access to hidden key (phonebook)
+ if ( oldSecurityCaps & RMobilePhone::KCapsAccessHiddenKey )
+ {
+ iSecurityCaps |= RMobilePhone::KCapsAccessHiddenKey;
+ }
+ // Access to USIM app. PIN (files referenced in accesss rules)
+ if ( oldSecurityCaps & RMobilePhone::KCapsAccessUSIMAppPin )
+ {
+ iSecurityCaps |= RMobilePhone::KCapsAccessUSIMAppPin;
+ }
+ // Access to USIM app. PIN (files referenced in accesss rules)
+ if ( oldSecurityCaps &
+ RMobilePhone::KCapsAccessUSIMAppSecondPin )
+ {
+ iSecurityCaps |=
+ RMobilePhone::KCapsAccessUSIMAppSecondPin;
+ }
+ break;
+ case RMobilePhone::EUniversalPinVerified:
+ case RMobilePhone::EUniversalPukVerified:
+ // These capabilities exist for sure in this case
+ iSecurityCaps = RMobilePhone::KCapsLockICC |
+ RMobilePhone::KCapsAccessPin1 |
+ RMobilePhone::KCapsAccessPin2 |
+ RMobilePhone::KCapsAccessUniversalPin;
+ // if these capabilities already exist,
+ // they may remain in this case
+ if ( RMobilePhone::KCapsLockPhone ==
+ ( oldSecurityCaps & RMobilePhone::KCapsLockPhone ) )
+ {
+ iSecurityCaps |= RMobilePhone::KCapsLockPhone;
+ }
+ if ( oldSecurityCaps &
+ RMobilePhone::KCapsAccessPhonePassword )
+ {
+ iSecurityCaps |= RMobilePhone::KCapsAccessPhonePassword;
+ }
+ if ( oldSecurityCaps & RMobilePhone::KCapsLockPhoneToICC )
+ {
+ iSecurityCaps |= RMobilePhone::KCapsLockPhoneToICC;
+ }
+ break;
+ case RMobilePhone::EPhonePasswordVerified:
+ // If these capabilities already exist,
+ // they also remain in this case
+ if ( oldSecurityCaps & RMobilePhone::KCapsAccessUniversalPin )
+ {
+ iSecurityCaps |= RMobilePhone::KCapsAccessUniversalPin;
+ }
+ // Access to hidden key (phonebook)
+ if ( oldSecurityCaps & RMobilePhone::KCapsAccessHiddenKey )
+ {
+ iSecurityCaps |= RMobilePhone::KCapsAccessHiddenKey;
+ }
+ // Access to USIM app. PIN (files referenced in accesss rules)
+ if ( oldSecurityCaps & RMobilePhone::KCapsAccessUSIMAppPin )
+ {
+ iSecurityCaps |= RMobilePhone::KCapsAccessUSIMAppPin;
+ }
+ // Access to USIM app. PIN (files referenced in accesss rules)
+ if ( oldSecurityCaps &
+ RMobilePhone::KCapsAccessUSIMAppSecondPin )
+ {
+ iSecurityCaps |=
+ RMobilePhone::KCapsAccessUSIMAppSecondPin;
+ }
+ break;
+ default:
+ break;
+ //lint -e{788} don't warn about missing cases
+ } // end switch
+
+ } // end if 3G SIM
+
+
+ // Check if capabilities have changed
+ if ( iSecurityCaps != oldSecurityCaps )
+ {
+ // Notify client about the change
+ iMmPhoneTsy->GetSecurityTsy()->CompleteNotifySecurityCapsChange(
+ iSecurityCaps );
+ }
+
+ return KErrNone;
+
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::ChangeSecurityCodeL
+// Request a security Change code to the DOS TSY layer
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::ChangeSecurityCodeL(
+ const TDataPackage& aPackage )
+ {
+ return iMessageManager->HandleRequestL ( EMobilePhoneChangeSecurityCode,
+ &aPackage );
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::ChangeSecurityCode
+// Request a security code verification to the DOS TSY layer
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::VerifySecurityCodeL(
+ const TDataPackage& aPackage )
+ {
+ return iMessageManager->HandleRequestL( EMobilePhoneVerifySecurityCode,
+ &aPackage );
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::AbortSecurityCodeL
+// Request aborting of an ongoing security related request to the DOS TSY
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::AbortSecurityCodeL(
+ const TDataPackage& aPackage )
+ {
+ return iMessageManager->HandleRequestL( EMobilePhoneAbortSecurityCode,
+ &aPackage );
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::GetSecurityCaps
+// This function returns current security capabilities
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::GetSecurityCaps(
+ TUint32* aCaps )
+ {
+ *aCaps = iSecurityCaps;
+
+ return KErrNone;
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::DeliverCode
+// Copies the deliverd code into the internal attribute iSecCode
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::DeliverCode(
+ RMobilePhone::TCodeAndUnblockCode aCodes )
+ {
+ iSecCode.Copy( aCodes.iCode );
+
+TFLOGSTRING2( "TSY: CMmPhoneGsmWcdmaExt::DeliverCode iSecCode: %S", &iSecCode );
+
+ return KErrNone;
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::DeliverCode
+// Updates security lock info based on received security Event
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::UpdateLockInfo(
+ RMobilePhone::TMobilePhoneLockStatus aStatus,
+ RMobilePhone::TMobilePhoneLockSetting aSetting,
+ RMobilePhone::TMobilePhoneLock aLock )
+ {
+
+ TInt ret = KErrNotSupported;
+
+ // Read settings and status
+ switch( aLock )
+ {
+ case RMobilePhone::ELockPhoneDevice:
+ if ( iPhoneDeviceSetting != aSetting )
+ {
+ ret = KErrNone;
+ iPhoneDeviceSetting = aSetting;
+ }
+ if ( iPhoneDeviceStatus != aStatus )
+ {
+ ret = KErrNone;
+ iPhoneDeviceStatus = aStatus;
+ }
+ break;
+ case RMobilePhone::ELockICC:
+ if ( iICCSetting != aSetting )
+ {
+ ret = KErrNone;
+ iICCSetting = aSetting;
+ }
+ if ( iICCStatus != aStatus )
+ {
+ ret = KErrNone;
+ iICCStatus = aStatus;
+ }
+ break;
+ case RMobilePhone::ELockPhoneToICC:
+ if ( iPhoneToICCSetting != aSetting )
+ {
+ ret = KErrNone;
+ iPhoneToICCSetting = aSetting;
+ }
+ if ( iPhoneToICCStatus != aStatus )
+ {
+ ret = KErrNone;
+ iPhoneToICCStatus = aStatus;
+ }
+ break;
+ case RMobilePhone::ELockUniversalPin:
+ if ( EICCTypeSim3G == iCurrentICCType )
+ {
+ // When multiapplication support added check here if UPIN
+ // in use for this application before setting status/setting.
+ // Do the same for all applications.
+ if ( iICCSetting != aSetting )
+ {
+ ret = KErrNone;
+ iICCSetting = aSetting;
+ }
+ if ( iICCStatus != aStatus )
+ {
+ ret = KErrNone;
+ iICCStatus = aStatus;
+ }
+ }
+ break;
+ case RMobilePhone::ELockPhoneToFirstICC:
+ case RMobilePhone::ELockOTA:
+ default:
+ break;
+ //lint -e{788} don't warn about missing cases
+ }
+
+ return ret;
+
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::SimActivePinState
+// Requests the state of the currently active PIN from DOS TSY layer
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::SimActivePinState()
+ {
+
+ TInt ret( KErrNone );
+
+ TRAPD( trapError,
+ ret = iMessageManager->HandleRequestL(
+ EMmTsySecurityGetSimActivePinStateIPC );
+ );
+
+ if ( KErrNone != trapError )
+ {
+ ret = trapError;
+ }
+
+ return ret;
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::SetLockSettingL
+// Requests the DOS tsy layer to set a new lock setting
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::SetLockSettingL(
+ CMmDataPackage* aPackage )
+ {
+TFLOGSTRING("LTSY: CMmPhoneGsmWcdmaExt::SetLockSettingL" );
+
+ TLockAndSetting lockAndSetting;
+ aPackage->UnPackData( &lockAndSetting.iLock, &lockAndSetting.iSetting );
+
+ //check if there is a code available for this message
+ //some lock settings requires code
+ if ( iSecCode.Length() != 0 )
+ {
+ //re-package the original package and
+ //include the code
+ aPackage->PackData(&lockAndSetting, &iSecCode );
+ }
+ else
+ {
+ //pack only the lock and the setting, the code will be null
+ aPackage->PackData( &lockAndSetting );
+ }
+ TInt ret = iMessageManager->HandleRequestL( EMobilePhoneSetLockSetting,
+ aPackage );
+
+ //code is not required anymore, reset the value
+ iSecCode.Zero();
+
+ return ret;
+
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::GetStaticExtensionMode
+// Returns the mode that this extension supports.
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::GetStaticExtensionMode(
+ RMobilePhone::TMobilePhoneNetworkMode* aMode )
+ {
+
+ *aMode = RMobilePhone::ENetworkModeGsm;
+ return KErrNone;
+
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::SetNetworkModeInExtensionPhone
+// Sets a network mode into iCurrentNwInfo.iMode variable.
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+void CMmPhoneGsmWcdmaExt::SetNetworkModeInExtensionPhone(
+ RMobilePhone::TMobilePhoneNetworkMode aMode )
+ {
+ iCurrentNwInfo->iMode = aMode;
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt:: GetDetectedNetworksPhase1L
+// Gets the list of available networks
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+
+TInt CMmPhoneGsmWcdmaExt::GetDetectedNetworksPhase1L()
+ {
+ return iMessageManager->HandleRequestL(
+ EMobilePhoneGetDetectedNetworksV2Phase1 );
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt:: SelectNetworkL
+// Selects a network either manually or automatically
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::SelectNetworkL(
+ const TDataPackage& aDataPackage )
+ {
+ return iMessageManager->HandleRequestL( EMobilePhoneSelectNetwork,
+ &aDataPackage );
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt:: SelectNetworkCancelL
+// Cancels an outgoing network selection
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::SelectNetworkCancelL()
+ {
+ return iMessageManager->HandleRequestL( EMobilePhoneSelectNetworkCancel );
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt:: GetDetectedNetworksCancelL
+// Cancels an outgoing available network search
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::GetDetectedNetworksCancelL()
+ {
+ return iMessageManager->HandleRequestL(
+ EMobilePhoneGetDetectedNetworksCancel );
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt:: GetIccAccessCaps
+// This methods gets the ICC Access capabilites
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::GetIccAccessCaps(
+ TUint32* aCaps ) //Ptr to the capabilites
+ {
+ //set the capabilites
+ *aCaps = RMobilePhone::KCapsSimAccessSupported;
+
+ return KErrNone;
+
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::SetNetworkSelectionSettingL
+// Sets a network selection setting (Automatic, manual)
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::SetNetworkSelectionSettingL(
+ const TDataPackage& aDataPackage )
+ {
+ return iMessageManager->HandleRequestL(
+ EMobilePhoneSetNetworkSelectionSetting, &aDataPackage );
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::GetNetworkRegistrationStatusL
+// Gets the network registration status from the DOS TSY layer
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::GetNetworkRegistrationStatusL()
+ {
+ return iMessageManager->HandleRequestL(
+ EMobilePhoneGetNetworkRegistrationStatus );
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::CompleteGetHomeNetwork
+// Completes a GetHomeNetwork request, saves the home network information into
+// the internal attribute iGsmHomeNetwork and set the flag
+// iIsHomeNetworkInfoAvailable ON.
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+void CMmPhoneGsmWcdmaExt::CompleteGetHomeNetwork(
+ CMmDataPackage* aDataPackage )
+ {
+TFLOGSTRING("TSY: CMmPhoneGsmWcdmaExt::CompleteGetHomeNetwork" );
+
+ RMobilePhone::TMobilePhoneNetworkInfoV8* homeInfo = NULL;
+ aDataPackage->UnPackData ( &homeInfo );
+ if ( KEtelExtMultimodeV8 == homeInfo->ExtensionId() )
+ {
+ *iGsmHomeNetwork = *homeInfo;
+ }
+ else
+ {
+ // only in version 8
+ iGsmHomeNetwork->iHsupaAvailableIndicator = EFalse;
+
+ // Version 1 info
+ iGsmHomeNetwork->iMode = homeInfo->iMode;
+ iGsmHomeNetwork->iStatus = homeInfo->iStatus;
+ iGsmHomeNetwork->iBandInfo = homeInfo->iBandInfo;
+ iGsmHomeNetwork->iCountryCode = homeInfo->iCountryCode;
+ iGsmHomeNetwork->iCdmaSID = homeInfo->iCdmaSID;
+ iGsmHomeNetwork->iAnalogSID = homeInfo->iAnalogSID;
+ iGsmHomeNetwork->iNetworkId = homeInfo->iNetworkId;
+ iGsmHomeNetwork->iDisplayTag = homeInfo->iDisplayTag;
+ iGsmHomeNetwork->iShortName = homeInfo->iShortName;
+ iGsmHomeNetwork->iLongName = homeInfo->iLongName;
+
+ if ( KETelExtMultimodeV1 == homeInfo->ExtensionId() )
+ {
+ // Version 2 onward info default
+ iGsmHomeNetwork->iAccess = RMobilePhone::ENetworkAccessUnknown;
+ iGsmHomeNetwork->iHsdpaAvailableIndicator = EFalse;
+ iGsmHomeNetwork->iEgprsAvailableIndicator = EFalse;
+ }
+ else
+ {
+ // Version 2 info
+ iGsmHomeNetwork->iAccess = homeInfo->iAccess;
+ if ( KETelExtMultimodeV2 == homeInfo->ExtensionId() )
+ {
+ // version 5 info default
+ iGsmHomeNetwork->iHsdpaAvailableIndicator = EFalse;
+ iGsmHomeNetwork->iEgprsAvailableIndicator = EFalse;
+ }
+ else
+ {
+ // version 5 info
+ iGsmHomeNetwork->iHsdpaAvailableIndicator = homeInfo->iHsdpaAvailableIndicator;
+ iGsmHomeNetwork->iEgprsAvailableIndicator = homeInfo->iEgprsAvailableIndicator;
+ }
+ }
+ }
+
+ //Enable flag, home network information is available
+ iIsHomeNetworkInfoAvailable = ETrue;
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::GetNetworkSecurityLevel
+// Gets cached network's security level (encription level).
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::GetNetworkSecurityLevel (
+ RMobilePhone::TMobilePhoneNetworkSecurity& aNetworkSecurity ) const
+ // network security paramater
+ {
+ aNetworkSecurity = iNetworkSecurity;
+ return KErrNone;
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::SetNetworkSecurityLevel
+// Sets cached network's security level (encription level)
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::SetNetworkSecurityLevel(
+ RMobilePhone::TMobilePhoneNetworkSecurity& aNetworkSecurity )
+ {
+ iNetworkSecurity = aNetworkSecurity;
+ return KErrNone;
+ }
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::GetCipheringIndicatorStatusL
+// Gets the status of the ciphering indicator
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::GetCipheringIndicatorStatusL(
+ const TDataPackage* aDataPackage )
+ {
+ return iMessageManager->HandleRequestL (
+ EMobilePhoneGetCipheringIndicatorStatus, aDataPackage );
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::CurrentICCType
+// This methods returns the currently active SIM card type
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::CurrentICCType()
+ {
+ return iCurrentICCType;
+ }
+
+// ---------------------------------------------------------------------------
+// CMmPhoneGsmWcdmaExt::GetLockInfoL
+// Requests the information of a given security lock
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmPhoneGsmWcdmaExt::GetLockInfoL(
+ const TDataPackage& aPackage )
+ {
+ return iMessageManager->HandleRequestL(
+ EMobilePhoneGetLockInfo, &aPackage );
+ }
+
+
+// End of File