locationmanager/locationtrail/src/cnetworkinfo.cpp
changeset 36 aa5a574040a4
parent 20 6dfc5f825351
child 63 e538444823de
equal deleted inserted replaced
35:f727727520eb 36:aa5a574040a4
    18 #include <etel3rdparty.h>
    18 #include <etel3rdparty.h>
    19 
    19 
    20 #include "cnetworkinfo.h"
    20 #include "cnetworkinfo.h"
    21 #include "locationmanagerdebug.h"
    21 #include "locationmanagerdebug.h"
    22 
    22 
       
    23 
       
    24 
       
    25 
    23 // --------------------------------------------------------------------------
    26 // --------------------------------------------------------------------------
    24 // CNetworkInfo::NewL
    27 // CNetworkInfo::NewL
    25 // --------------------------------------------------------------------------
    28 // --------------------------------------------------------------------------
    26 //
    29 //
    27 EXPORT_C CNetworkInfo* CNetworkInfo::NewL( MNetworkInfoObserver* aTrail )
    30 EXPORT_C CNetworkInfo* CNetworkInfo::NewL( MNetworkInfoObserver* aTrail )
    29     LOG( "CNetworkInfo::NewL(), begin" );
    32     LOG( "CNetworkInfo::NewL(), begin" );
    30     CNetworkInfo* self = new (ELeave) CNetworkInfo( aTrail );
    33     CNetworkInfo* self = new (ELeave) CNetworkInfo( aTrail );
    31     CleanupStack::PushL( self );
    34     CleanupStack::PushL( self );
    32     self->ConstructL();
    35     self->ConstructL();
    33     CleanupStack::Pop( self );
    36     CleanupStack::Pop( self );
    34     LOG( "CNetworkInfo::NewL(), end" );
       
    35     return self;
    37     return self;
    36     }
    38     }
    37         
    39         
    38 // --------------------------------------------------------------------------
    40 // --------------------------------------------------------------------------
    39 // CNetworkInfo::CNetworkInfo
    41 // CNetworkInfo::CNetworkInfo
    40 // --------------------------------------------------------------------------
    42 // --------------------------------------------------------------------------
    41 //  
    43 //  
    42 CNetworkInfo::CNetworkInfo( MNetworkInfoObserver* aTrail ) 
    44 CNetworkInfo::CNetworkInfo( MNetworkInfoObserver* aTrail ) 
    43     : CActive( CActive::EPriorityStandard ),
    45     : CActive( CActive::EPriorityStandard ),
    44     iFirstTime( EFalse ),
    46     iTrail ( aTrail ),
    45     iTelephony( NULL ),
    47     iMobilePhone(aTrail->GetMobilePhone4NwInfo()),
    46     iNetworkInfoV1Pckg( iNetworkInfoV1 ) 
    48     iState( ENetworkInfoNoOptState ),
       
    49     
       
    50     iMMNetworkInfoPckg( iMMNetworkInfo ) 
    47     {
    51     {
    48     CActiveScheduler::Add( this );
    52     CActiveScheduler::Add( this );
    49     iTrail = aTrail;
       
    50     }
    53     }
    51 
    54 
    52 // --------------------------------------------------------------------------
    55 // --------------------------------------------------------------------------
    53 // CNetworkInfo::ConstructL
    56 // CNetworkInfo::ConstructL
    54 // --------------------------------------------------------------------------
    57 // --------------------------------------------------------------------------
    55 //    
    58 //    
    56 void CNetworkInfo::ConstructL()
    59 void CNetworkInfo::ConstructL()
    57     {
    60     {
    58 	LOG( "CNetworkInfo::ConstructL(), begin" );
    61 	LOG( "CNetworkInfo::ConstructL(), begin" );
    59 	iFirstTime = ETrue;
    62     StartNwInfoChangeNotifier();
    60     iTelephony = CTelephony::NewL();
    63     LOG( "CNetworkInfo::ConstructL(), end" );
    61     iTelephony->GetCurrentNetworkInfo(iStatus, iNetworkInfoV1Pckg);
    64     }
    62     LOG( "CNetworkInfo::ConstructL(), iTelephony->GetCurrentNetworkInfo called" );
       
    63     
    65     
    64    	if ( IsActive() )
       
    65     	{
       
    66     	Cancel();
       
    67         }    
       
    68     SetActive();
       
    69     
       
    70     LOG( "CNetworkInfo::ConstructL(), end" );
       
    71     }
       
    72     
       
    73 // --------------------------------------------------------------------------
    66 // --------------------------------------------------------------------------
    74 // CNetworkInfo::~CNetworkInfo
    67 // CNetworkInfo::~CNetworkInfo
    75 // --------------------------------------------------------------------------
    68 // --------------------------------------------------------------------------
    76 //    
    69 //    
    77 EXPORT_C CNetworkInfo::~CNetworkInfo()
    70 EXPORT_C CNetworkInfo::~CNetworkInfo()
    78     {
    71     {
       
    72     // we are not owning RMobilePhone obj.. DON'T CLOSE it.
    79     Cancel();
    73     Cancel();
    80     delete iTelephony;
       
    81     }
    74     }
    82 
    75 
    83 // --------------------------------------------------------------------------
    76 // --------------------------------------------------------------------------
    84 // CNetworkInfo::RunError
    77 // CNetworkInfo::RunError
    85 // --------------------------------------------------------------------------
    78 // --------------------------------------------------------------------------
    86 //
    79 //
    87 TInt CNetworkInfo::RunError( TInt /*aError*/ )
    80 TInt CNetworkInfo::RunError( TInt /*aError*/ )
    88     {
    81     {
    89     return KErrNone;
    82     return KErrNone;
       
    83     }    
       
    84 
       
    85 // --------------------------------------------------------------------------
       
    86 // CNetworkInfo::StartNwInfoChangeNotifier
       
    87 // --------------------------------------------------------------------------
       
    88 //    
       
    89 EXPORT_C void CNetworkInfo::StartNwInfoChangeNotifier()
       
    90     { 
       
    91 	LOG( "CNetworkInfo::StartNwInfoChangeNotifier(), begin" );   
       
    92    	if ( !IsActive())
       
    93     	{
       
    94     	// get current n/w info first and from RunL start notifier
       
    95         iState = ENetworkInfoOptGetState; 
       
    96         
       
    97         iMobilePhone.GetCurrentNetwork(iStatus, iMMNetworkInfoPckg, iMMArea);
       
    98         SetActive();
       
    99         }
       
   100     
       
   101     LOG( "CNetworkInfo::StartNwInfoChangeNotifier(), end" ); 
       
   102     }    
       
   103 
       
   104 // --------------------------------------------------------------------------
       
   105 // CNetworkInfo::StopNwInfoChangeNotifier
       
   106 // --------------------------------------------------------------------------
       
   107 //    
       
   108 EXPORT_C void CNetworkInfo::StopNwInfoChangeNotifier()
       
   109     { 
       
   110 	LOG( "CNetworkInfo::StopNwInfoChangeNotifier(), begin" );   
       
   111     Cancel();
       
   112     iState = ENetworkInfoNoOptState;
       
   113     LOG( "CNetworkInfo::StopNwInfoChangeNotifier(), end" ); 
    90     }    
   114     }    
    91 
   115 
    92 // --------------------------------------------------------------------------
   116 // --------------------------------------------------------------------------
    93 // CNetworkInfo::RunL
   117 // CNetworkInfo::RunL
    94 // --------------------------------------------------------------------------
   118 // --------------------------------------------------------------------------
    95 //    
   119 //    
    96 void CNetworkInfo::RunL()
   120 void CNetworkInfo::RunL()
    97     { 
   121     { 
    98 	LOG( "CNetworkInfo::RunL(), begin" );   
   122 	LOG( "CNetworkInfo::RunL(), begin" );   
    99 	iFirstTime = EFalse; 
   123 	// reset the flag first
   100     iTrail->NetworkInfo( iNetworkInfoV1, iStatus.Int() );
   124     iState = ENetworkInfoNoOptState;
   101     LOG( "CNetworkInfo::RunL(), iTrail->NetworkInfo called" );   
   125     if(iStatus == KErrNone)
   102     
   126         {
   103     iTelephony->NotifyChange(iStatus, CTelephony::ECurrentNetworkInfoChange, iNetworkInfoV1Pckg);
   127         // convert the network info to CTelephony network info. just to give backward compatibility
   104     LOG( "CNetworkInfo::RunL(), iTelephony->NotifyChange called" );
   128         MapNetworkInfo(&iNetworkInfoV1, &iMMNetworkInfo, &iMMArea);
   105       
   129         }
   106    	if ( IsActive() )
   130     if(iTrail)
       
   131         {
       
   132         iTrail->NetworkInfo( iNetworkInfoV1, iStatus.Int() );
       
   133         }
       
   134     // listen to n/w info change
       
   135    	if ( !IsActive() )
   107     	{
   136     	{
   108     	Cancel();
   137     	iState = ENetworkInfoOptNotifyState;
   109         }    
   138         iMobilePhone.NotifyCurrentNetworkChange(iStatus,iMMNetworkInfoPckg, iMMArea);
   110     SetActive();
   139         SetActive();
   111     
   140         }
   112     LOG( "CNetworkInfo::RunL(), end" ); 
   141     LOG( "CNetworkInfo::RunL(), end" ); 
   113     }    
   142     }    
   114 
   143 
   115 // --------------------------------------------------------------------------
   144 // --------------------------------------------------------------------------
   116 // CNetworkInfo::DoCancel
   145 // CNetworkInfo::DoCancel
   117 // --------------------------------------------------------------------------
   146 // --------------------------------------------------------------------------
   118 // 
   147 // 
   119 void CNetworkInfo::DoCancel()
   148 void CNetworkInfo::DoCancel()
   120     {
   149     {
   121 	LOG( "CNetworkInfo::DoCancel(), begin" );
   150 	LOG1( "CNetworkInfo::DoCancel(), begin. State - %d", iState);
   122 	if ( IsActive() )
   151 	switch ( iState )    
   123 		{
   152         {   
   124     	if ( iFirstTime )    
   153         case ENetworkInfoOptGetState:
   125         	{
   154         	{
   126 	    	LOG( "CNetworkInfo::DoCancel(), cancelling CTelephony::EGetCurrentNetworkInfoCancel" );
   155         	LOG( "Cancel get current n/w info change" );
   127         	iTelephony->CancelAsync( CTelephony::EGetCurrentNetworkInfoCancel );
   156         	iMobilePhone.CancelAsyncRequest( EMobilePhoneGetCurrentNetwork);
       
   157             break;
   128         	}
   158         	}
   129     	else
   159         case ENetworkInfoOptNotifyState:
   130     		{
   160     		{
   131 	    	LOG( "CNetworkInfo::DoCancel(), cancelling CTelephony::ECurrentNetworkInfoChangeCancel" );
   161         	LOG( "Cancel current n/w info change" );
   132 	    	iTelephony->CancelAsync( CTelephony::ECurrentNetworkInfoChangeCancel );	
   162         	iMobilePhone.CancelAsyncRequest( EMobilePhoneNotifyCurrentNetworkChange);
   133     		}
   163             break;
       
   164         	}
       
   165         default:
       
   166             break;
       
   167         }
       
   168     iState = ENetworkInfoNoOptState;
       
   169    	LOG( "CNetworkInfo::DoCancel(), end" );
       
   170     }
       
   171 
       
   172 // --------------------------------------------------------------------------
       
   173 // CNetworkInfo::MapNetworkInfo
       
   174 // --------------------------------------------------------------------------
       
   175 // 
       
   176 EXPORT_C void CNetworkInfo::MapNetworkInfo(CTelephony::TNetworkInfoV1* aTelNetworkInfo, 
       
   177     RMobilePhone::TMobilePhoneNetworkInfoV2* aMMNetworkInfo, 
       
   178     RMobilePhone::TMobilePhoneLocationAreaV1* aMMArea)
       
   179 	{
       
   180    	LOG( "CNetworkInfo::MapNetworkInfo(), begin" );
       
   181 	switch(aMMNetworkInfo->iMode)
       
   182 		{
       
   183 		case RMobilePhone::ENetworkModeUnknown: 
       
   184 			aTelNetworkInfo->iMode=CTelephony::ENetworkModeUnknown;
       
   185 			break;
       
   186 		case RMobilePhone::ENetworkModeUnregistered:
       
   187 			aTelNetworkInfo->iMode=CTelephony::ENetworkModeUnregistered;
       
   188 			break;
       
   189 		case RMobilePhone::ENetworkModeGsm:
       
   190 			aTelNetworkInfo->iMode=CTelephony::ENetworkModeGsm;
       
   191 			break;
       
   192 		case RMobilePhone::ENetworkModeAmps:
       
   193 			aTelNetworkInfo->iMode=CTelephony::ENetworkModeAmps;
       
   194 			break;			
       
   195 		case RMobilePhone::ENetworkModeCdma95:
       
   196 			aTelNetworkInfo->iMode=CTelephony::ENetworkModeCdma95;
       
   197 			break;
       
   198 		case RMobilePhone::ENetworkModeCdma2000:
       
   199 			aTelNetworkInfo->iMode=CTelephony::ENetworkModeCdma2000;
       
   200 			break;
       
   201 		case RMobilePhone::ENetworkModeWcdma:
       
   202 			aTelNetworkInfo->iMode=CTelephony::ENetworkModeWcdma;
       
   203 			break;
       
   204 		case RMobilePhone::ENetworkModeTdcdma:
       
   205 			aTelNetworkInfo->iMode=CTelephony::ENetworkModeTdcdma;
       
   206 			break;
       
   207 		default:
       
   208 			aTelNetworkInfo->iMode=CTelephony::ENetworkModeUnknown;
   134 		}	
   209 		}	
   135    	LOG( "CNetworkInfo::DoCancel(), end" );
   210 
       
   211 	switch(aMMNetworkInfo->iStatus)
       
   212 		{
       
   213 		case RMobilePhone::ENetworkStatusUnknown: 
       
   214 			aTelNetworkInfo->iStatus=CTelephony::ENetworkStatusUnknown;
       
   215 			break;
       
   216 		case RMobilePhone::ENetworkStatusAvailable:
       
   217 			aTelNetworkInfo->iStatus=CTelephony::ENetworkStatusAvailable;
       
   218 			break;
       
   219 		case RMobilePhone::ENetworkStatusCurrent:
       
   220 			aTelNetworkInfo->iStatus=CTelephony::ENetworkStatusCurrent;
       
   221 			break;
       
   222 		case RMobilePhone::ENetworkStatusForbidden:
       
   223 			aTelNetworkInfo->iStatus=CTelephony::ENetworkStatusForbidden;
       
   224 			break;			
       
   225 		default:
       
   226 			aTelNetworkInfo->iStatus=CTelephony::ENetworkStatusUnknown;
       
   227 		}	
       
   228 			
       
   229 	switch(aMMNetworkInfo->iBandInfo)
       
   230 		{
       
   231 		case RMobilePhone::EBandUnknown: 
       
   232 			aTelNetworkInfo->iBandInfo=CTelephony::EBandUnknown;
       
   233 			break;
       
   234 		case RMobilePhone::E800BandA:
       
   235 			aTelNetworkInfo->iBandInfo=CTelephony::E800BandA;
       
   236 			break;
       
   237 		case RMobilePhone::E800BandB:
       
   238 			aTelNetworkInfo->iBandInfo=CTelephony::E800BandB;
       
   239 			break;
       
   240 		case RMobilePhone::E800BandC:
       
   241 			aTelNetworkInfo->iBandInfo=CTelephony::E800BandC;
       
   242 			break;			
       
   243 		case RMobilePhone::E1900BandA:
       
   244 			aTelNetworkInfo->iBandInfo=CTelephony::E1900BandA;
       
   245 			break;
       
   246 		case RMobilePhone::E1900BandB:
       
   247 			aTelNetworkInfo->iBandInfo=CTelephony::E1900BandB;
       
   248 			break;
       
   249 		case RMobilePhone::E1900BandC:
       
   250 			aTelNetworkInfo->iBandInfo=CTelephony::E1900BandC;
       
   251 			break;
       
   252 		case RMobilePhone::E1900BandD:
       
   253 			aTelNetworkInfo->iBandInfo=CTelephony::E1900BandD;
       
   254 			break;
       
   255 		case RMobilePhone::E1900BandE:
       
   256 			aTelNetworkInfo->iBandInfo=CTelephony::E1900BandE;
       
   257 			break;
       
   258 		case RMobilePhone::E1900BandF:
       
   259 			aTelNetworkInfo->iBandInfo=CTelephony::E1900BandF;
       
   260 			break;
       
   261 		default:
       
   262 			aTelNetworkInfo->iBandInfo=CTelephony::EBandUnknown;
       
   263 		}			
       
   264 	
       
   265 	aTelNetworkInfo->iCountryCode.Copy(aMMNetworkInfo->iCountryCode);
       
   266 	aTelNetworkInfo->iNetworkId.Copy(aMMNetworkInfo->iNetworkId);
       
   267 	aTelNetworkInfo->iDisplayTag.Copy(aMMNetworkInfo->iDisplayTag);
       
   268 	
       
   269 	TInt maxLength = aTelNetworkInfo->iShortName.MaxLength();
       
   270 	if (aMMNetworkInfo->iShortName.Length() > maxLength)
       
   271 		{
       
   272 		aTelNetworkInfo->iShortName.Copy(aMMNetworkInfo->iShortName.Ptr(), maxLength);
       
   273 		}
       
   274 	else
       
   275 		{
       
   276 		aTelNetworkInfo->iShortName.Copy(aMMNetworkInfo->iShortName);		
       
   277 		}
       
   278 	
       
   279 	maxLength = aTelNetworkInfo->iLongName.MaxLength();
       
   280 
       
   281 	if (aMMNetworkInfo->iLongName.Length() > maxLength)
       
   282 		{
       
   283 		aTelNetworkInfo->iLongName.Copy(aMMNetworkInfo->iLongName.Ptr(), maxLength);
       
   284 		}
       
   285 	else
       
   286 		{
       
   287 		aTelNetworkInfo->iLongName.Copy(aMMNetworkInfo->iLongName);	
       
   288 		}
       
   289 	
       
   290 	aTelNetworkInfo->iCdmaSID.Copy(aMMNetworkInfo->iCdmaSID);
       
   291 	
       
   292 	if(aMMArea)
       
   293 		{
       
   294 		aTelNetworkInfo->iAreaKnown=aMMArea->iAreaKnown;
       
   295 		aTelNetworkInfo->iLocationAreaCode=aMMArea->iLocationAreaCode;
       
   296 		aTelNetworkInfo->iCellId=aMMArea->iCellId;	
       
   297 		}
       
   298 	else
       
   299 		{
       
   300 		aTelNetworkInfo->iAreaKnown=EFalse;
       
   301 		aTelNetworkInfo->iLocationAreaCode=0;
       
   302 		aTelNetworkInfo->iCellId=0;	
       
   303 		}
       
   304 	
       
   305 	//check which paramater class version this is.		
       
   306 	switch(aMMNetworkInfo->iAccess)
       
   307 		{
       
   308 		case RMobilePhone::ENetworkAccessUnknown: 
       
   309 			aTelNetworkInfo->iAccess=CTelephony::ENetworkAccessUnknown;
       
   310 			break;
       
   311 		case RMobilePhone::ENetworkAccessGsm:
       
   312 			aTelNetworkInfo->iAccess=CTelephony::ENetworkAccessGsm;
       
   313 			break;
       
   314 		case RMobilePhone::ENetworkAccessGsmCompact:
       
   315 			aTelNetworkInfo->iAccess=CTelephony::ENetworkAccessGsmCompact;
       
   316 			break;
       
   317 		case RMobilePhone::ENetworkAccessUtran:
       
   318 			aTelNetworkInfo->iAccess=CTelephony::ENetworkAccessUtran;
       
   319 			break;			
       
   320 		default:
       
   321 			aTelNetworkInfo->iAccess=CTelephony::ENetworkAccessUnknown;
       
   322 		}						
       
   323 		
       
   324    	LOG( "CNetworkInfo::MapNetworkInfo(), end" );
       
   325 	}
       
   326 
       
   327 // ----------------------------------------------------------------------------
       
   328 // CNetworkInfo::GetCurrentRegisterNw()
       
   329 // ---------------------------------------------------------------------------- 
       
   330 RMobilePhone::TMobilePhoneNetworkInfoV2& CNetworkInfo::GetCurrentRegisterNw()
       
   331     {
       
   332     return iMMNetworkInfo;
   136     }
   333     }
   137 
   334 
   138 // End of file
   335 // End of file
       
   336