locationmanager/locationtrail/src/cpositioninfo.cpp
changeset 20 6dfc5f825351
parent 0 c53acadfccc6
child 21 50bf9db68373
--- a/locationmanager/locationtrail/src/cpositioninfo.cpp	Tue Feb 02 00:24:33 2010 +0200
+++ b/locationmanager/locationtrail/src/cpositioninfo.cpp	Fri Mar 19 09:38:01 2010 +0200
@@ -52,7 +52,7 @@
     // Set update interval.
     iUpdateOptions.SetUpdateInterval( TTimeIntervalMicroSeconds(KFirstInterval) );
     // Set time out level. 
-    iUpdateOptions.SetUpdateTimeOut( TTimeIntervalMicroSeconds(KUpdateTimeOut) );
+    iUpdateOptions.SetUpdateTimeOut( TTimeIntervalMicroSeconds(KFirstTimeOut) );
     // Positions which have time stamp below KMaxAge can be reused
     iUpdateOptions.SetMaxUpdateAge( TTimeIntervalMicroSeconds(KMaxAge) );
     // Disables location framework to send partial position data
@@ -72,7 +72,7 @@
 // CPositionInfo::~CPositionInfo
 // --------------------------------------------------------------------------
 //    
-CPositionInfo::~CPositionInfo()
+EXPORT_C CPositionInfo::~CPositionInfo()
     {
     Cancel();
     iPositioner.Close();
@@ -98,6 +98,20 @@
 
     iTrailCaptureSetting = aCaptureSetting;
     iUpdateInterval = aUpdateInterval;
+    iFirstInterval = ETrue;
+    iPositionInfo = TPositionSatelliteInfo();
+    
+    
+    // Set update interval.
+     iUpdateOptions.SetUpdateInterval( TTimeIntervalMicroSeconds(KFirstInterval) );
+     // Set time out level. 
+     iUpdateOptions.SetUpdateTimeOut( TTimeIntervalMicroSeconds( KFirstTimeOut) );
+     // Positions which have time stamp below KMaxAge can be reused
+     iUpdateOptions.SetMaxUpdateAge( TTimeIntervalMicroSeconds(KMaxAge) );
+     // Disables location framework to send partial position data
+     iUpdateOptions.SetAcceptPartialUpdates( EFalse );
+    
+   
     
     if ( aCaptureSetting == RLocationTrail::ECaptureAll ) 
     	{
@@ -147,8 +161,7 @@
 //
 void CPositionInfo::Stop()
     {
-    Cancel();
-    
+    Cancel();    
     // Start shutdown timer...
     iPositioner.Close();
     iPosServer.Close();
@@ -161,17 +174,19 @@
 void CPositionInfo::RunL()
     { 
     iTrail->Position( iPositionInfo, iStatus.Int() );
+ 
     if ( iFirstInterval && IsActive() )
     	{
     	Cancel();
-    	iUpdateOptions.SetUpdateInterval( iUpdateInterval );
+    	LOG("CPositionInfo::RunL() - First Time");
+    	iUpdateOptions.SetUpdateInterval( TTimeIntervalMicroSeconds (iUpdateInterval) );  
+    	iUpdateOptions.SetUpdateTimeOut( TTimeIntervalMicroSeconds(KUpdateTimeOut ) );
         if ( iTrailCaptureSetting == RLocationTrail::ECaptureAll ) 
         	{
-        	User::LeaveIfError( iPositioner.SetUpdateOptions( iUpdateOptions ) );
+        	User::LeaveIfError( iPositioner.SetUpdateOptions( iUpdateOptions ) );        	
         	iPositioner.NotifyPositionUpdate( iPositionInfo, iStatus );
         	}
     	SetActive();
-    	
     	iFirstInterval = EFalse;
     	}
     }    
@@ -182,7 +197,8 @@
 // 
 void CPositionInfo::DoCancel()
     {
-    if ( !IsActive() )    
+    LOG( "CPositionInfo::DoCancel()" );
+    if ( IsActive() )    
         {
         iPositioner.CancelRequest( EPositionerNotifyPositionUpdate );
         }