--- a/radioengine/engine/src/cradionetworkinfolistener.cpp Tue Aug 31 15:15:02 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,296 +0,0 @@
-/*
-* 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 "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:
-*
-*/
-
-// System includes
-#include <etelmm.h>
-#include <commsdattypesv1_1.h>
-
-// User includes
-#include "cradionetworkinfolistener.h"
-#include "mradiosettingssetter.h"
-#include "cradioenginelogger.h"
-
-using namespace CommsDat;
-
-// ======== MEMBER FUNCTIONS ========
-
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CRadioNetworkInfoListener* CRadioNetworkInfoListener::NewL( MRadioSettingsSetter& aSetter,
- MRadioNetworkChangeObserver* aObserver )
- {
- LEVEL3( LOG_METHOD_AUTO );
- CRadioNetworkInfoListener* self = new ( ELeave ) CRadioNetworkInfoListener( aSetter, aObserver );
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- return self;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CRadioNetworkInfoListener::CRadioNetworkInfoListener( MRadioSettingsSetter& aSetter,
- MRadioNetworkChangeObserver* aObserver )
- : CActive( CActive::EPriorityHigh )
- , iSetter( aSetter )
- , iObserver( aObserver )
- , iSubscriberIdPckg( iSubscriberId )
- , iNetworkInfoPckg( iNetworkInfo )
- {
- LEVEL3( LOG_METHOD_AUTO );
- CActiveScheduler::Add( this );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CRadioNetworkInfoListener::ConstructL()
- {
- LOG_METHOD_AUTO;
-#ifndef __WINS__
- iTelephony = CTelephony::NewL();
-
- // Initialize the default network id and country code directly from CommsDat, as CTelephony cannot be used in synchronous mode
- // and using it in async mode will cause problems in core initialisation, and too much complexity!
-
- // Get default TSY from database.
-
- CMDBSession* db = CMDBSession::NewL( CMDBSession::LatestVersion());
- CleanupStack::PushL( db );
-
- CMDBRecordSet<CCDModemBearerRecord>* set = new ( ELeave ) CMDBRecordSet<CCDModemBearerRecord>( KCDTIdModemBearerRecord );
- CleanupStack::PushL( set );
-
- set->LoadL( *db );
-
- TInt index = 0;
- CCDModemBearerRecord* record = static_cast<CCDModemBearerRecord*>( set->iRecords[index++]);
-
- if ( record->iTsyName.IsNull() && set->iRecords.Count() > index ) // the first item is normally only a template
- {
- record = static_cast<CCDModemBearerRecord*>( set->iRecords[index++]);
- }
-
- TPtrC name( static_cast<const TDesC&>( record->iTsyName ));
- TBuf<50> tsyName;
- tsyName.Copy( name );
-
- LOG_FORMAT( "CRadioNetworkInfoListener::ConstructL, TSY name: %S", &tsyName );
- CleanupStack::PopAndDestroy( set );
- CleanupStack::PopAndDestroy( db );
-
- RTelServer telServer;
- CleanupClosePushL( telServer );
- RMobilePhone mobilePhone;
- CleanupClosePushL( mobilePhone );
-
- // Open phone
- User::LeaveIfError( telServer.Connect());
-
- // TSY module gets automatically unloaded when tel.Close() is called ( and tel is is CU-stack ),
- // so loaded TSY is also leave-safe
- User::LeaveIfError( telServer.LoadPhoneModule( tsyName ));
-
- // Get number of phones.
- TInt phones( 0 );
- User::LeaveIfError( telServer.EnumeratePhones( phones ));
- LOG_FORMAT( "CRadioNetworkInfoListener::ConstructL, Number of phones=%d", phones );
-
- // Get phone info of first legal phone.
- TInt legalPhoneIndex = KErrNotFound;
- RTelServer::TPhoneInfo phoneInfo;
- for ( TInt i=0; i<phones && legalPhoneIndex == KErrNotFound; ++i )
- {
- if ( telServer.GetPhoneInfo( i, phoneInfo ) == KErrNone )
- {
- if ( phoneInfo.iNetworkType == RTelServer::ENetworkTypeMobileDigital )
- {
- legalPhoneIndex = i;
- }
- }
- }
- User::LeaveIfError( legalPhoneIndex );
-
- // Open legal phone.
- User::LeaveIfError( mobilePhone.Open( telServer, phoneInfo.iName ));
-
- TUint32 networkCaps;
- User::LeaveIfError( mobilePhone.GetNetworkCaps( networkCaps ));
- TUint32 identityCaps;
- User::LeaveIfError( mobilePhone.GetIdentityCaps( identityCaps ));
- // Check if we are allowed to get network info.
- if ( networkCaps & RMobilePhone::KCapsGetCurrentNetwork )
- {
- // Gather initial information synchronically.
- RMobilePhone::TMobilePhoneLocationAreaV1 location;
-
- RMobilePhone::TMobilePhoneNetworkInfoV1 networkInfo;
- RMobilePhone::TMobilePhoneNetworkInfoV1Pckg networkInfoPckg( networkInfo );
-
- mobilePhone.GetCurrentNetwork( iStatus, networkInfoPckg, location );
- User::WaitForRequest( iStatus );
-
- CTelephony::TNetworkInfoV1 telephonyNetworkInfo;
- if ( iStatus == KErrNone )
- {
- telephonyNetworkInfo.iMode = static_cast<CTelephony::TNetworkMode>( networkInfo.iMode );
- telephonyNetworkInfo.iCountryCode = networkInfo.iCountryCode;
- telephonyNetworkInfo.iCdmaSID = networkInfo.iCdmaSID;
- telephonyNetworkInfo.iNetworkId = networkInfo.iNetworkId;
- }
- else
- {
- telephonyNetworkInfo.iCountryCode = iSetter.CountryCode();
- telephonyNetworkInfo.iNetworkId = iSetter.NetworkId();
- }
- iNetworkInfoPckg() = telephonyNetworkInfo;
- }
- else
- {
- // Leave if we are not allowed to get network info.
- // Other action could also be considered!!!!
- User::Leave( KErrNotSupported );
- }
-
- CleanupStack::PopAndDestroy( 2, &telServer );
-#endif
- // At the end, update the local variables by simulating the "netid changed" event.
- RunL();
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CRadioNetworkInfoListener::~CRadioNetworkInfoListener()
- {
- LEVEL3( LOG_METHOD_AUTO );
- Cancel();
-
-#ifndef __WINS__
- delete iTelephony;
-#endif
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TInt CRadioNetworkInfoListener::CompoundNetworkId() const
- {
- LEVEL3( LOG_METHOD_AUTO );
- LOG_FORMAT( "Returning iCompoundNetworkId: %d", iCompoundNetworkId );
- return iCompoundNetworkId;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TPtrC CRadioNetworkInfoListener::SubscriberId() const
- {
- LEVEL3( LOG_METHOD_AUTO );
- TPtrC id = iSubscriberId.iSubscriberId;
- LOG_FORMAT( "SubscriberId: %S", &id );
- return id;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TPtrC CRadioNetworkInfoListener::CountryCode() const
- {
- LEVEL3( LOG_METHOD_AUTO );
- TPtrC countryCode = iSetter.CountryCode();
- LOG_FORMAT( "CountryCode: %S", &countryCode );
- return countryCode;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CRadioNetworkInfoListener::SaveNetworkInfoL()
- {
- LEVEL3( LOG_METHOD_AUTO );
-#ifdef __WINS__
- iNetworkInfo.iCountryCode.Copy( _L("244") );
- iNetworkInfo.iNetworkId.Zero();
-#endif
-
- LOG_FORMAT( "iNetworkInfo.iCountryCode = %S",
- &iNetworkInfo.iCountryCode );
-
- User::LeaveIfError( iSetter.SetCountryCode( iNetworkInfo.iCountryCode ) );
-
- // The compound network identifier is composed of the current network identifier and country code.
- TBuf<KDefaultRealWidth> compoundNetworkId;
- compoundNetworkId.Append( iSetter.CountryCode() );
- if ( iNetworkInfo.iNetworkId.Length() < 2 )
- {
- // Network identifier has only one digit, in which case it must be prepended with a zero.
- compoundNetworkId.AppendNum( 0 );
- }
-
- compoundNetworkId.Append( iNetworkInfo.iNetworkId );
-
- TLex lex( compoundNetworkId );
- User::LeaveIfError( lex.Val( iCompoundNetworkId ) );
-
- if ( iCompoundNetworkId != 0 && iPreviousCompoundNetworkId != iCompoundNetworkId )
- {
- if ( iPreviousCompoundNetworkId != 0 && iObserver )
- {
- iObserver->NetworkIdChanged();
- }
- iPreviousCompoundNetworkId = iCompoundNetworkId;
- }
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CRadioNetworkInfoListener::DoCancel()
- {
- LEVEL3( LOG_METHOD_AUTO );
-#ifndef __WINS__
- iTelephony->CancelAsync( CTelephony::ECurrentNetworkInfoChangeCancel );
-#endif
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CRadioNetworkInfoListener::RunL()
- {
- LEVEL3( LOG_METHOD_AUTO );
- LEVEL3( LOG_FORMAT( "iStatus.Int() = %d", iStatus.Int() ) );
-#ifndef __WINS__
- iTelephony->NotifyChange( iStatus, CTelephony::ECurrentNetworkInfoChange, iNetworkInfoPckg );
- SetActive();
-#endif
- SaveNetworkInfoL();
- }