locationmanager/locationtrail/src/cpositioninfo.cpp
branchRCL_3
changeset 7 3cebc1a84278
parent 6 646a02f170b9
child 19 b73252188534
equal deleted inserted replaced
6:646a02f170b9 7:3cebc1a84278
    43 //  
    43 //  
    44 CPositionInfo::CPositionInfo( MPositionInfoObserver* aTrail ) 
    44 CPositionInfo::CPositionInfo( MPositionInfoObserver* aTrail ) 
    45     : CActive( CActive::EPriorityStandard ),
    45     : CActive( CActive::EPriorityStandard ),
    46     iFirstInterval( ETrue )
    46     iFirstInterval( ETrue )
    47     {
    47     {
       
    48     LOG( "CPositionInfo::CPositionInfo()");
    48     CActiveScheduler::Add( this );
    49     CActiveScheduler::Add( this );
    49     iTrail = aTrail;
    50     iTrail = aTrail;
    50     iTrailCaptureSetting = RLocationTrail::ECaptureAll;
    51     iTrailCaptureSetting = RLocationTrail::ECaptureAll;
    51     
    52     
    52     // Set update interval.
    53     // Set update interval.
    99     iTrailCaptureSetting = aCaptureSetting;
   100     iTrailCaptureSetting = aCaptureSetting;
   100     iUpdateInterval = aUpdateInterval;
   101     iUpdateInterval = aUpdateInterval;
   101     iFirstInterval = ETrue;
   102     iFirstInterval = ETrue;
   102     iPositionInfo = TPositionSatelliteInfo();
   103     iPositionInfo = TPositionSatelliteInfo();
   103     
   104     
       
   105     // Set update interval.
       
   106      iUpdateOptions.SetUpdateInterval( TTimeIntervalMicroSeconds(KFirstInterval) );
       
   107      // Set time out level. 
       
   108      iUpdateOptions.SetUpdateTimeOut( TTimeIntervalMicroSeconds( KFirstTimeOut) );
       
   109      // Positions which have time stamp below KMaxAge can be reused
       
   110      iUpdateOptions.SetMaxUpdateAge( TTimeIntervalMicroSeconds(KMaxAge) );
       
   111      // Disables location framework to send partial position data
       
   112      iUpdateOptions.SetAcceptPartialUpdates( EFalse );
       
   113     
   104     if ( aCaptureSetting == RLocationTrail::ECaptureAll ) 
   114     if ( aCaptureSetting == RLocationTrail::ECaptureAll ) 
   105     	{
   115     	{
   106 	    User::LeaveIfError( iPosServer.Connect() );
   116 	    User::LeaveIfError( iPosServer.Connect() );
   107 	    User::LeaveIfError( iPositioner.Open( iPosServer ) );
   117 	    User::LeaveIfError( iPositioner.Open( iPosServer ) );
   108 	    User::LeaveIfError( iPositioner.SetRequestor( CRequestor::ERequestorService,
   118 	    User::LeaveIfError( iPositioner.SetRequestor( CRequestor::ERequestorService,
   147 // CPositionInfo::Stop
   157 // CPositionInfo::Stop
   148 // --------------------------------------------------------------------------
   158 // --------------------------------------------------------------------------
   149 //
   159 //
   150 void CPositionInfo::Stop()
   160 void CPositionInfo::Stop()
   151     {
   161     {
   152     Cancel();
   162     Cancel();    
   153     
   163 
   154     iFirstInterval = ETrue;
       
   155     iUpdateOptions.SetUpdateInterval( TTimeIntervalMicroSeconds( KFirstInterval ) );
       
   156     
       
   157     iPositioner.Close();
   164     iPositioner.Close();
   158     iPosServer.Close();
   165     iPosServer.Close();
   159     }    
   166     }    
   160         
   167         
   161 // --------------------------------------------------------------------------
   168 // --------------------------------------------------------------------------
   163 // --------------------------------------------------------------------------
   170 // --------------------------------------------------------------------------
   164 //
   171 //
   165 void CPositionInfo::RunL()
   172 void CPositionInfo::RunL()
   166     { 
   173     { 
   167     iTrail->Position( iPositionInfo, iStatus.Int() );
   174     iTrail->Position( iPositionInfo, iStatus.Int() );
   168     if ( iFirstInterval && iTrailCaptureSetting == RLocationTrail::ECaptureAll )
   175  
   169     	{
   176     if ( iFirstInterval && IsActive() )
   170     	iUpdateOptions.SetUpdateInterval( TTimeIntervalMicroSeconds( iUpdateInterval ) );
   177     	{
   171     	iUpdateOptions.SetUpdateTimeOut( TTimeIntervalMicroSeconds( KUpdateTimeOut ) );
   178     	Cancel();
   172     	User::LeaveIfError( iPositioner.SetUpdateOptions( iUpdateOptions ) );
   179     	LOG("CPositionInfo::RunL() - First Time");
       
   180     	iUpdateOptions.SetUpdateInterval( TTimeIntervalMicroSeconds (iUpdateInterval) );  
       
   181     	iUpdateOptions.SetUpdateTimeOut( TTimeIntervalMicroSeconds(KUpdateTimeOut ) );
       
   182         if ( iTrailCaptureSetting == RLocationTrail::ECaptureAll ) 
       
   183         	{
       
   184         	User::LeaveIfError( iPositioner.SetUpdateOptions( iUpdateOptions ) );        	
       
   185         	iPositioner.NotifyPositionUpdate( iPositionInfo, iStatus );
       
   186         	}
       
   187     	SetActive();
   173     	iFirstInterval = EFalse;
   188     	iFirstInterval = EFalse;
   174     	}
   189     	}
   175     }    
   190     }    
   176 
   191 
   177 // --------------------------------------------------------------------------
   192 // --------------------------------------------------------------------------
   178 // CPositionInfo::DoCancel
   193 // CPositionInfo::DoCancel
   179 // --------------------------------------------------------------------------
   194 // --------------------------------------------------------------------------
   180 // 
   195 // 
   181 void CPositionInfo::DoCancel()
   196 void CPositionInfo::DoCancel()
   182     {
   197     {
   183     if ( !IsActive() )    
   198     LOG( "CPositionInfo::DoCancel()" );
       
   199     if ( IsActive() )    
   184         {
   200         {
   185         iPositioner.CancelRequest( EPositionerNotifyPositionUpdate );
   201         iPositioner.CancelRequest( EPositionerNotifyPositionUpdate );
   186         }
   202         }
   187     }
   203     }
   188 
   204