diff -r 2872ae438bf7 -r e538444823de locationmanager/locationtrail/src/cnetworkinfo.cpp --- a/locationmanager/locationtrail/src/cnetworkinfo.cpp Wed Sep 15 12:40:59 2010 +0300 +++ b/locationmanager/locationtrail/src/cnetworkinfo.cpp Wed Oct 13 15:02:02 2010 +0300 @@ -20,9 +20,6 @@ #include "cnetworkinfo.h" #include "locationmanagerdebug.h" - - - // -------------------------------------------------------------------------- // CNetworkInfo::NewL // -------------------------------------------------------------------------- @@ -34,6 +31,7 @@ CleanupStack::PushL( self ); self->ConstructL(); CleanupStack::Pop( self ); + LOG( "CNetworkInfo::NewL(), end" ); return self; } @@ -43,13 +41,12 @@ // CNetworkInfo::CNetworkInfo( MNetworkInfoObserver* aTrail ) : CActive( CActive::EPriorityStandard ), - iTrail ( aTrail ), - iMobilePhone(aTrail->GetMobilePhone4NwInfo()), - iState( ENetworkInfoNoOptState ), - - iMMNetworkInfoPckg( iMMNetworkInfo ) + iFirstTime( EFalse ), + iTelephony( NULL ), + iNetworkInfoV1Pckg( iNetworkInfoV1 ) { CActiveScheduler::Add( this ); + iTrail = aTrail; } // -------------------------------------------------------------------------- @@ -59,7 +56,17 @@ void CNetworkInfo::ConstructL() { LOG( "CNetworkInfo::ConstructL(), begin" ); - StartNwInfoChangeNotifier(); + iFirstTime = ETrue; + iTelephony = CTelephony::NewL(); + iTelephony->GetCurrentNetworkInfo(iStatus, iNetworkInfoV1Pckg); + LOG( "CNetworkInfo::ConstructL(), iTelephony->GetCurrentNetworkInfo called" ); + + if ( IsActive() ) + { + Cancel(); + } + SetActive(); + LOG( "CNetworkInfo::ConstructL(), end" ); } @@ -69,8 +76,8 @@ // EXPORT_C CNetworkInfo::~CNetworkInfo() { - // we are not owning RMobilePhone obj.. DON'T CLOSE it. Cancel(); + delete iTelephony; } // -------------------------------------------------------------------------- @@ -83,61 +90,25 @@ } // -------------------------------------------------------------------------- -// CNetworkInfo::StartNwInfoChangeNotifier -// -------------------------------------------------------------------------- -// -EXPORT_C void CNetworkInfo::StartNwInfoChangeNotifier() - { - LOG( "CNetworkInfo::StartNwInfoChangeNotifier(), begin" ); - if ( !IsActive()) - { - // get current n/w info first and from RunL start notifier - iState = ENetworkInfoOptGetState; - - iMobilePhone.GetCurrentNetwork(iStatus, iMMNetworkInfoPckg, iMMArea); - SetActive(); - } - - LOG( "CNetworkInfo::StartNwInfoChangeNotifier(), end" ); - } - -// -------------------------------------------------------------------------- -// CNetworkInfo::StopNwInfoChangeNotifier -// -------------------------------------------------------------------------- -// -EXPORT_C void CNetworkInfo::StopNwInfoChangeNotifier() - { - LOG( "CNetworkInfo::StopNwInfoChangeNotifier(), begin" ); - Cancel(); - iState = ENetworkInfoNoOptState; - LOG( "CNetworkInfo::StopNwInfoChangeNotifier(), end" ); - } - -// -------------------------------------------------------------------------- // CNetworkInfo::RunL // -------------------------------------------------------------------------- // void CNetworkInfo::RunL() { LOG( "CNetworkInfo::RunL(), begin" ); - // reset the flag first - iState = ENetworkInfoNoOptState; - if(iStatus == KErrNone) - { - // convert the network info to CTelephony network info. just to give backward compatibility - MapNetworkInfo(&iNetworkInfoV1, &iMMNetworkInfo, &iMMArea); - } - if(iTrail) - { - iTrail->NetworkInfo( iNetworkInfoV1, iStatus.Int() ); - } - // listen to n/w info change - if ( !IsActive() ) + iFirstTime = EFalse; + iTrail->NetworkInfo( iNetworkInfoV1, iStatus.Int() ); + LOG( "CNetworkInfo::RunL(), iTrail->NetworkInfo called" ); + + iTelephony->NotifyChange(iStatus, CTelephony::ECurrentNetworkInfoChange, iNetworkInfoV1Pckg); + LOG( "CNetworkInfo::RunL(), iTelephony->NotifyChange called" ); + + if ( IsActive() ) { - iState = ENetworkInfoOptNotifyState; - iMobilePhone.NotifyCurrentNetworkChange(iStatus,iMMNetworkInfoPckg, iMMArea); - SetActive(); - } + Cancel(); + } + SetActive(); + LOG( "CNetworkInfo::RunL(), end" ); } @@ -147,190 +118,21 @@ // void CNetworkInfo::DoCancel() { - LOG1( "CNetworkInfo::DoCancel(), begin. State - %d", iState); - switch ( iState ) - { - case ENetworkInfoOptGetState: + LOG( "CNetworkInfo::DoCancel(), begin" ); + if ( IsActive() ) + { + if ( iFirstTime ) { - LOG( "Cancel get current n/w info change" ); - iMobilePhone.CancelAsyncRequest( EMobilePhoneGetCurrentNetwork); - break; + LOG( "CNetworkInfo::DoCancel(), cancelling CTelephony::EGetCurrentNetworkInfoCancel" ); + iTelephony->CancelAsync( CTelephony::EGetCurrentNetworkInfoCancel ); } - case ENetworkInfoOptNotifyState: + else { - LOG( "Cancel current n/w info change" ); - iMobilePhone.CancelAsyncRequest( EMobilePhoneNotifyCurrentNetworkChange); - break; - } - default: - break; - } - iState = ENetworkInfoNoOptState; + LOG( "CNetworkInfo::DoCancel(), cancelling CTelephony::ECurrentNetworkInfoChangeCancel" ); + iTelephony->CancelAsync( CTelephony::ECurrentNetworkInfoChangeCancel ); + } + } LOG( "CNetworkInfo::DoCancel(), end" ); } -// -------------------------------------------------------------------------- -// CNetworkInfo::MapNetworkInfo -// -------------------------------------------------------------------------- -// -EXPORT_C void CNetworkInfo::MapNetworkInfo(CTelephony::TNetworkInfoV1* aTelNetworkInfo, - RMobilePhone::TMobilePhoneNetworkInfoV2* aMMNetworkInfo, - RMobilePhone::TMobilePhoneLocationAreaV1* aMMArea) - { - LOG( "CNetworkInfo::MapNetworkInfo(), begin" ); - switch(aMMNetworkInfo->iMode) - { - case RMobilePhone::ENetworkModeUnknown: - aTelNetworkInfo->iMode=CTelephony::ENetworkModeUnknown; - break; - case RMobilePhone::ENetworkModeUnregistered: - aTelNetworkInfo->iMode=CTelephony::ENetworkModeUnregistered; - break; - case RMobilePhone::ENetworkModeGsm: - aTelNetworkInfo->iMode=CTelephony::ENetworkModeGsm; - break; - case RMobilePhone::ENetworkModeAmps: - aTelNetworkInfo->iMode=CTelephony::ENetworkModeAmps; - break; - case RMobilePhone::ENetworkModeCdma95: - aTelNetworkInfo->iMode=CTelephony::ENetworkModeCdma95; - break; - case RMobilePhone::ENetworkModeCdma2000: - aTelNetworkInfo->iMode=CTelephony::ENetworkModeCdma2000; - break; - case RMobilePhone::ENetworkModeWcdma: - aTelNetworkInfo->iMode=CTelephony::ENetworkModeWcdma; - break; - case RMobilePhone::ENetworkModeTdcdma: - aTelNetworkInfo->iMode=CTelephony::ENetworkModeTdcdma; - break; - default: - aTelNetworkInfo->iMode=CTelephony::ENetworkModeUnknown; - } - - switch(aMMNetworkInfo->iStatus) - { - case RMobilePhone::ENetworkStatusUnknown: - aTelNetworkInfo->iStatus=CTelephony::ENetworkStatusUnknown; - break; - case RMobilePhone::ENetworkStatusAvailable: - aTelNetworkInfo->iStatus=CTelephony::ENetworkStatusAvailable; - break; - case RMobilePhone::ENetworkStatusCurrent: - aTelNetworkInfo->iStatus=CTelephony::ENetworkStatusCurrent; - break; - case RMobilePhone::ENetworkStatusForbidden: - aTelNetworkInfo->iStatus=CTelephony::ENetworkStatusForbidden; - break; - default: - aTelNetworkInfo->iStatus=CTelephony::ENetworkStatusUnknown; - } - - switch(aMMNetworkInfo->iBandInfo) - { - case RMobilePhone::EBandUnknown: - aTelNetworkInfo->iBandInfo=CTelephony::EBandUnknown; - break; - case RMobilePhone::E800BandA: - aTelNetworkInfo->iBandInfo=CTelephony::E800BandA; - break; - case RMobilePhone::E800BandB: - aTelNetworkInfo->iBandInfo=CTelephony::E800BandB; - break; - case RMobilePhone::E800BandC: - aTelNetworkInfo->iBandInfo=CTelephony::E800BandC; - break; - case RMobilePhone::E1900BandA: - aTelNetworkInfo->iBandInfo=CTelephony::E1900BandA; - break; - case RMobilePhone::E1900BandB: - aTelNetworkInfo->iBandInfo=CTelephony::E1900BandB; - break; - case RMobilePhone::E1900BandC: - aTelNetworkInfo->iBandInfo=CTelephony::E1900BandC; - break; - case RMobilePhone::E1900BandD: - aTelNetworkInfo->iBandInfo=CTelephony::E1900BandD; - break; - case RMobilePhone::E1900BandE: - aTelNetworkInfo->iBandInfo=CTelephony::E1900BandE; - break; - case RMobilePhone::E1900BandF: - aTelNetworkInfo->iBandInfo=CTelephony::E1900BandF; - break; - default: - aTelNetworkInfo->iBandInfo=CTelephony::EBandUnknown; - } - - aTelNetworkInfo->iCountryCode.Copy(aMMNetworkInfo->iCountryCode); - aTelNetworkInfo->iNetworkId.Copy(aMMNetworkInfo->iNetworkId); - aTelNetworkInfo->iDisplayTag.Copy(aMMNetworkInfo->iDisplayTag); - - TInt maxLength = aTelNetworkInfo->iShortName.MaxLength(); - if (aMMNetworkInfo->iShortName.Length() > maxLength) - { - aTelNetworkInfo->iShortName.Copy(aMMNetworkInfo->iShortName.Ptr(), maxLength); - } - else - { - aTelNetworkInfo->iShortName.Copy(aMMNetworkInfo->iShortName); - } - - maxLength = aTelNetworkInfo->iLongName.MaxLength(); - - if (aMMNetworkInfo->iLongName.Length() > maxLength) - { - aTelNetworkInfo->iLongName.Copy(aMMNetworkInfo->iLongName.Ptr(), maxLength); - } - else - { - aTelNetworkInfo->iLongName.Copy(aMMNetworkInfo->iLongName); - } - - aTelNetworkInfo->iCdmaSID.Copy(aMMNetworkInfo->iCdmaSID); - - if(aMMArea) - { - aTelNetworkInfo->iAreaKnown=aMMArea->iAreaKnown; - aTelNetworkInfo->iLocationAreaCode=aMMArea->iLocationAreaCode; - aTelNetworkInfo->iCellId=aMMArea->iCellId; - } - else - { - aTelNetworkInfo->iAreaKnown=EFalse; - aTelNetworkInfo->iLocationAreaCode=0; - aTelNetworkInfo->iCellId=0; - } - - //check which paramater class version this is. - switch(aMMNetworkInfo->iAccess) - { - case RMobilePhone::ENetworkAccessUnknown: - aTelNetworkInfo->iAccess=CTelephony::ENetworkAccessUnknown; - break; - case RMobilePhone::ENetworkAccessGsm: - aTelNetworkInfo->iAccess=CTelephony::ENetworkAccessGsm; - break; - case RMobilePhone::ENetworkAccessGsmCompact: - aTelNetworkInfo->iAccess=CTelephony::ENetworkAccessGsmCompact; - break; - case RMobilePhone::ENetworkAccessUtran: - aTelNetworkInfo->iAccess=CTelephony::ENetworkAccessUtran; - break; - default: - aTelNetworkInfo->iAccess=CTelephony::ENetworkAccessUnknown; - } - - LOG( "CNetworkInfo::MapNetworkInfo(), end" ); - } - -// ---------------------------------------------------------------------------- -// CNetworkInfo::GetCurrentRegisterNw() -// ---------------------------------------------------------------------------- -RMobilePhone::TMobilePhoneNetworkInfoV2& CNetworkInfo::GetCurrentRegisterNw() - { - return iMMNetworkInfo; - } - // End of file -