locationmanager/server/src/clocationmanagerserver.cpp
branchRCL_3
changeset 14 646a02f170b9
parent 8 6752808b2036
child 15 3cebc1a84278
equal deleted inserted replaced
8:6752808b2036 14:646a02f170b9
   304 // CLocationManagerServer::StartGPSPositioningL
   304 // CLocationManagerServer::StartGPSPositioningL
   305 // --------------------------------------------------------------------------
   305 // --------------------------------------------------------------------------
   306 //
   306 //
   307 void CLocationManagerServer::StartGPSPositioningL( RLocationTrail::TTrailCaptureSetting aCaptureSetting )
   307 void CLocationManagerServer::StartGPSPositioningL( RLocationTrail::TTrailCaptureSetting aCaptureSetting )
   308     {
   308     {
       
   309     LOG( "CLocationManagerServer::StartGPSPositioningL" );
   309     if ( aCaptureSetting == RLocationTrail::EOff )
   310     if ( aCaptureSetting == RLocationTrail::EOff )
   310     	{
   311     	{
   311     	return;
   312     	return;
   312     	}
   313     	}
   313     
   314     
   333 // CLocationManagerServer::StopGPSPositioning
   334 // CLocationManagerServer::StopGPSPositioning
   334 // --------------------------------------------------------------------------
   335 // --------------------------------------------------------------------------
   335 //    
   336 //    
   336 void CLocationManagerServer::StopGPSPositioningL()
   337 void CLocationManagerServer::StopGPSPositioningL()
   337     {
   338     {
       
   339     LOG( "CLocationManagerServer::StopGPSPositioningL()" );
   338     iCaptureSetting = RLocationTrail::EOff;
   340     iCaptureSetting = RLocationTrail::EOff;
   339     
   341     
   340     RLocationTrail::TTrailState state;
   342     RLocationTrail::TTrailState state;
   341     GetLocationTrailState( state );
   343     GetLocationTrailState( state );
   342     if( state == RLocationTrail::ETrailStarted || state == RLocationTrail::ETrailStarting )
   344     
   343     	{
   345     
   344         TRAPD( error, iTimer = CPeriodic::NewL( CActive::EPriorityStandard ) );
   346     if( state != RLocationTrail::ETrailStopped && state != RLocationTrail::ETrailStopping )
       
   347         {
       
   348         TRAPD( error, iTimer = CPeriodic::NewL( CActive::EPriorityHigh ) );
       
   349         
   345         if ( error != KErrNone )
   350         if ( error != KErrNone )
   346             {
   351             {
   347             // If timer can't be created we stop the location trail immediately.
   352             // If timer can't be created we stop the location trail immediately.
   348             iLocationRecord->Stop();
   353             iLocationRecord->Stop();
   349             StopTrackLogL();
   354             StopTrackLogL();
   350             return;
   355             return;
   351             }
   356             }   
       
   357         
   352         iLocationRecord->SetStateToStopping();
   358         iLocationRecord->SetStateToStopping();
   353         iTimer->Start( KLocationTrailRemappingCheckDelay * 1000000, 0, TCallBack( CheckForRemappingCallback, this ) );
   359         iTimer->Start( iLocManStopDelay * 1000000, 0, TCallBack( CheckForRemappingCallback, this ) );
   354     	}
   360     	}
   355     else if ( state != RLocationTrail::ETrailStopped && state != RLocationTrail::ETrailStopping )
       
   356         {
       
   357         TInt delay( iLocManStopDelay );
       
   358         if ( iLocationRecord->RemappingNeeded() )
       
   359         	{
       
   360             delay = iLocManStopRemapDelay;
       
   361         	}
       
   362         
       
   363         TRAPD( error, iTimer = CPeriodic::NewL( CActive::EPriorityStandard ) );
       
   364         if ( error != KErrNone )
       
   365         	{
       
   366         	// If timer can't be created we stop the location trail immediately.
       
   367         	iLocationRecord->Stop();
       
   368         	StopTrackLogL();
       
   369         	return;
       
   370         	}
       
   371         iLocationRecord->SetStateToStopping();
       
   372         iTimer->Start( delay * 1000000, 0, TCallBack( PositioningStopTimeout, this ) );
       
   373         }
       
   374     
   361     
   375     // Always stop tracklog.
   362     // Always stop tracklog.
   376     StopTrackLogL();
   363     StopTrackLogL();
   377     }
   364     }
   378 
   365 
   380 // CLocationUtilityServer::StopRecording
   367 // CLocationUtilityServer::StopRecording
   381 // --------------------------------------------------------------------------
   368 // --------------------------------------------------------------------------
   382 //
   369 //
   383 void CLocationManagerServer::StopRecording()
   370 void CLocationManagerServer::StopRecording()
   384 	{
   371 	{
       
   372     LOG( "CLocationManagerServer::StopRecording()" );
   385 	iLocationRecord->Stop();
   373 	iLocationRecord->Stop();
   386 	delete iTimer;
   374 	delete iTimer;
   387 	iTimer = NULL;
   375 	iTimer = NULL;
   388 	}
   376 	}
   389 
   377 
   391 // CLocationUtilityServer::PositioningStopTimeout
   379 // CLocationUtilityServer::PositioningStopTimeout
   392 // --------------------------------------------------------------------------
   380 // --------------------------------------------------------------------------
   393 //
   381 //
   394 TInt CLocationManagerServer::PositioningStopTimeout( TAny* aAny )
   382 TInt CLocationManagerServer::PositioningStopTimeout( TAny* aAny )
   395 	{
   383 	{
       
   384     LOG( "CLocationManagerServer::PositioningStopTimeout" );
   396 	CLocationManagerServer* self = STATIC_CAST( CLocationManagerServer*, aAny );
   385 	CLocationManagerServer* self = STATIC_CAST( CLocationManagerServer*, aAny );
   397 	self->StopRecording();
   386 	self->StopRecording();
   398 	
   387 	
   399 	return KErrNone;
   388 	return KErrNone;
   400 	}
   389 	}
   403 // CLocationUtilityServer::PositioningStopTimeout
   392 // CLocationUtilityServer::PositioningStopTimeout
   404 // --------------------------------------------------------------------------
   393 // --------------------------------------------------------------------------
   405 //
   394 //
   406 TInt CLocationManagerServer::CheckForRemappingCallback( TAny* aAny )
   395 TInt CLocationManagerServer::CheckForRemappingCallback( TAny* aAny )
   407     {
   396     {
       
   397     LOG( "CLocationManagerServer::CheckForRemappingCallback" );
   408     CLocationManagerServer* self = STATIC_CAST( CLocationManagerServer*, aAny );
   398     CLocationManagerServer* self = STATIC_CAST( CLocationManagerServer*, aAny );
   409 
   399 
   410     self->iTimer->Cancel();
   400     self->iTimer->Cancel();    
   411     
   401     
   412     TInt delay( self->iLocManStopDelay );
       
   413     if ( self->iLocationRecord->RemappingNeeded() )
   402     if ( self->iLocationRecord->RemappingNeeded() )
   414         {
   403         {     
   415         delay = self->iLocManStopRemapDelay;
   404         self->iTimer->Start( self->iLocManStopRemapDelay * 1000000, 0, TCallBack( PositioningStopTimeout, self ) );
   416         self->iTimer->Start( delay * 1000000, 0, TCallBack( PositioningStopTimeout, self ) );
       
   417         }
   405         }
   418     else
   406     else
   419         {
   407         {        
   420         delete self->iTimer;
   408         self->StopRecording();
   421         self->iTimer = NULL;
       
   422         self->iLocationRecord->Stop();
       
   423         }
   409         }
   424     
   410     
   425     return KErrNone;
   411     return KErrNone;
   426     }
   412     }
   427 
   413 
   487 // CLocationManagerServer::GetLocationByTimeL
   473 // CLocationManagerServer::GetLocationByTimeL
   488 // --------------------------------------------------------------------------
   474 // --------------------------------------------------------------------------
   489 //   
   475 //   
   490 void CLocationManagerServer::GetLocationByTimeL( const TTime& aTimeStamp, 
   476 void CLocationManagerServer::GetLocationByTimeL( const TTime& aTimeStamp, 
   491 												 TLocationData& aLocationData,
   477 												 TLocationData& aLocationData,
   492                                                  TLocTrailState& aState )
   478                                                  TLocTrailState& aState ) __SOFTFP
   493     {
   479     {
   494     iLocationRecord->GetLocationByTimeL( aTimeStamp,
   480     iLocationRecord->GetLocationByTimeL( aTimeStamp,
   495     									 aLocationData,
   481     									 aLocationData,
   496                                          aState );
   482                                          aState );
   497     }
   483     }
   541 
   527 
   542 // --------------------------------------------------------------------------
   528 // --------------------------------------------------------------------------
   543 // CLocationManagerServer::GetCurrentCellId
   529 // CLocationManagerServer::GetCurrentCellId
   544 // --------------------------------------------------------------------------
   530 // --------------------------------------------------------------------------
   545 //    
   531 //    
   546 void CLocationManagerServer::GetCurrentNetworkInfo( CTelephony::TNetworkInfoV1& aNetworkInfo )
   532 void CLocationManagerServer::GetCurrentNetworkInfo( CTelephony::TNetworkInfoV1& aNetworkInfo ) __SOFTFP
   547     {
   533     {
   548     iLocationRecord->GetNetworkInfo( aNetworkInfo );
   534     iLocationRecord->GetNetworkInfo( aNetworkInfo );
   549     }    
   535     }    
   550 
   536 
   551 // --------------------------------------------------------------------------
   537 // --------------------------------------------------------------------------
   552 // CLocationManagerServer::LocationTrailStateChange
   538 // CLocationManagerServer::LocationTrailStateChange
   553 // --------------------------------------------------------------------------
   539 // --------------------------------------------------------------------------
   554 //    
   540 //    
   555 void CLocationManagerServer::LocationTrailStateChange()
   541 void CLocationManagerServer::LocationTrailStateChange() __SOFTFP
   556     {
   542     {
   557     LOG( "CLocationManagerServer::LocationTrailStateChange(), begin" );
   543     LOG( "CLocationManagerServer::LocationTrailStateChange(), begin" );
   558 
   544 
   559     for ( TInt i = iNotifReqs.Count(); --i >= 0; )
   545     for ( TInt i = iNotifReqs.Count(); --i >= 0; )
   560         {
   546         {
   573 // CLocationManagerServer::CurrentLocation
   559 // CLocationManagerServer::CurrentLocation
   574 // --------------------------------------------------------------------------
   560 // --------------------------------------------------------------------------
   575 //
   561 //
   576 void CLocationManagerServer::CurrentLocation( const TPositionSatelliteInfo& aSatelliteInfo, 
   562 void CLocationManagerServer::CurrentLocation( const TPositionSatelliteInfo& aSatelliteInfo, 
   577 											  const CTelephony::TNetworkInfoV1& aNetworkInfo,
   563 											  const CTelephony::TNetworkInfoV1& aNetworkInfo,
   578                                               const TInt aError )
   564                                               const TInt aError ) __SOFTFP
   579     {
   565     {
   580     LOG( "CLocationManagerServer::CurrentLocation(), begin" );
   566     LOG( "CLocationManagerServer::CurrentLocation(), begin" );
   581     const TInt KParamLocationData = 0;
   567     const TInt KParamLocationData = 0;
   582     
   568     
   583     TLocationData locationData;
   569     TLocationData locationData;
   620 	iLocationReqs.Reset();
   606 	iLocationReqs.Reset();
   621 
   607 
   622     LOG( "CLocationManagerServer::CurrentLocation(), end" );    
   608     LOG( "CLocationManagerServer::CurrentLocation(), end" );    
   623     }
   609     }
   624 
   610 
   625 void CLocationManagerServer::GPSSignalQualityChanged( const TPositionSatelliteInfo& aSatelliteInfo )
   611 void CLocationManagerServer::GPSSignalQualityChanged( const TPositionSatelliteInfo& aSatelliteInfo ) __SOFTFP
   626 	{
   612 	{
   627 	LOG( "CLocationManagerServer::GPSSignalQualityChanged" );
   613 	LOG( "CLocationManagerServer::GPSSignalQualityChanged" );
   628 	const TInt KFixParam = 0;
   614 	const TInt KFixParam = 0;
   629 	const TInt KPositionInfoParam = 1;
   615 	const TInt KPositionInfoParam = 1;
   630 	const TInt KEventTypeParam = 2;
   616 	const TInt KEventTypeParam = 2;
   695 
   681 
   696     LOG( "CLocationManagerServer::CancelTrackLogNotificationRequest(), end" );
   682     LOG( "CLocationManagerServer::CancelTrackLogNotificationRequest(), end" );
   697 	}
   683 	}
   698 
   684 
   699 void CLocationManagerServer::CreateLocationObjectL( const TLocationData& aLocationData,
   685 void CLocationManagerServer::CreateLocationObjectL( const TLocationData& aLocationData,
   700 													const TUint& aObjectId )
   686 													const TUint& aObjectId ) __SOFTFP
   701 	{
   687 	{
   702 	if ( !IsSessionReady() )
   688 	if ( !IsSessionReady() )
   703 		{
   689 		{
   704 		User::Leave( KErrNotReady );
   690 		User::Leave( KErrNotReady );
   705 		}
   691 		}
  1056 	{
  1042 	{
  1057 	aRec = iTrackLog->IsRecording();
  1043 	aRec = iTrackLog->IsRecording();
  1058 	}
  1044 	}
  1059 
  1045 
  1060 void CLocationManagerServer::GpxFileCreated( const TDesC& aFileName, TItemId aTagId,
  1046 void CLocationManagerServer::GpxFileCreated( const TDesC& aFileName, TItemId aTagId,
  1061 		TReal32 aLength, TTime aStart, TTime aEnd )
  1047 		TReal32 aLength, TTime aStart, TTime aEnd ) __SOFTFP
  1062 	{
  1048 	{
  1063 	TRAP_IGNORE( CreateTrackLogL( aTagId, aFileName, aLength, aStart, aEnd ) );
  1049 	TRAP_IGNORE( CreateTrackLogL( aTagId, aFileName, aLength, aStart, aEnd ) );
  1064 	}
  1050 	}
  1065 
  1051 
  1066 TItemId CLocationManagerServer::CreateTrackLogTagL()
  1052 TItemId CLocationManagerServer::CreateTrackLogTagL()
  1144     
  1130     
  1145     CleanupStack::PopAndDestroy( relationObject );
  1131     CleanupStack::PopAndDestroy( relationObject );
  1146     CleanupStack::PopAndDestroy( trackLog );
  1132     CleanupStack::PopAndDestroy( trackLog );
  1147 	}
  1133 	}
  1148 
  1134 
  1149 TInt CLocationManagerServer::GetTrackLogStatus( TBool& aRecording, TPositionSatelliteInfo& aFixQuality)
  1135 TInt CLocationManagerServer::GetTrackLogStatus( TBool& aRecording, TPositionSatelliteInfo& aFixQuality) __SOFTFP
  1150 	{
  1136 	{
  1151 	if ( !iTrackLog )
  1137 	if ( !iTrackLog )
  1152 		{
  1138 		{
  1153 		return KErrNotFound;
  1139 		return KErrNotFound;
  1154 		}
  1140 		}