diff -r 0aa8cc770c8a -r 4a793f564d72 connectivitymodules/SeCon/servers/pcconn/src/sconimsireader.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/connectivitymodules/SeCon/servers/pcconn/src/sconimsireader.cpp Wed Sep 01 12:20:56 2010 +0100 @@ -0,0 +1,123 @@ +/* +* Copyright (c) 2009-2010 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: CSconImsiReader implementation +* +*/ + + +#include "sconimsireader.h" +#include "debug.h" + +TInt CSconImsiReader::GetImsiL( TDes& aImsi ) + { + TRACE_FUNC_ENTRY; + CTelephony::TRegistrationStatus temp; + CSconImsiReader* self = new (ELeave) CSconImsiReader(aImsi, temp); + CleanupStack::PushL(self); + self->ConstructL(); + + self->RequestImsi(); + + TInt err = self->iStatus.Int(); + CleanupStack::PopAndDestroy(self); + TRACE_FUNC_RET(err); + return err; + } + +TInt CSconImsiReader::GetNetworkStatusL( CTelephony::TRegistrationStatus& aRegistrationStatus ) + { + TRACE_FUNC_ENTRY; + TBuf temp; + CSconImsiReader* self = new (ELeave) CSconImsiReader(temp, aRegistrationStatus); + CleanupStack::PushL(self); + self->ConstructL(); + + self->RequestNetworkStatus(); + + TInt err = self->iStatus.Int(); + CleanupStack::PopAndDestroy(self); + TRACE_FUNC_RET(err); + return err; + } + +void CSconImsiReader::ConstructL() + { + TRACE_FUNC_ENTRY; + iTelephony = CTelephony::NewL(); + CActiveScheduler::Add(this); + TRACE_FUNC_EXIT; + } + +void CSconImsiReader::RequestImsi() + { + iImsiReaderStatus = ERequestingImsi; + iTelephony->GetSubscriberId(iStatus,iSubscriberIdV1Pckg); + SetActive(); + CActiveScheduler::Start(); + } + +void CSconImsiReader::RequestNetworkStatus() + { + iImsiReaderStatus = ERequestingNetworkStatus; + iTelephony->GetNetworkRegistrationStatus(iStatus, iNetworkRegistrationV1Pckg); + SetActive(); + CActiveScheduler::Start(); + } + +CSconImsiReader::~CSconImsiReader() + { + TRACE_FUNC_ENTRY; + delete iTelephony; + TRACE_FUNC_EXIT; + } + +CSconImsiReader::CSconImsiReader(TDes& aImsi, CTelephony::TRegistrationStatus& aRegistrationStatus): CActive(EPriorityStandard), + iImsi(aImsi), iNetworkStatus(aRegistrationStatus), iSubscriberIdV1Pckg(iSubscriberIdV1), iNetworkRegistrationV1Pckg(iNetworkRegistrationV1) + { + } + +void CSconImsiReader::RunL() + { + TRACE_FUNC_ENTRY; + LOGGER_WRITE_1("iStatus: %d", iStatus.Int() ); + if ( iStatus == KErrNone ) + { + if ( iImsiReaderStatus == ERequestingImsi ) + { + iImsi = iSubscriberIdV1.iSubscriberId; + LOGGER_WRITE_1("iImsi: %S", &iImsi); + } + else if ( iImsiReaderStatus == ERequestingNetworkStatus ) + { + iNetworkStatus = iNetworkRegistrationV1.iRegStatus; + LOGGER_WRITE_1( "iNetworkStatus: %d", (TInt)iNetworkStatus); + } + } + CActiveScheduler::Stop(); + TRACE_FUNC_EXIT; + } + +void CSconImsiReader::DoCancel() + { + TRACE_FUNC_ENTRY; + if ( iImsiReaderStatus == ERequestingImsi ) + { + iTelephony->CancelAsync( CTelephony::EGetSubscriberIdCancel ); + } + else if ( iImsiReaderStatus == ERequestingNetworkStatus ) + { + iTelephony->CancelAsync( CTelephony::EGetNetworkRegistrationStatusCancel ); + } + TRACE_FUNC_EXIT; + }