locationrequestmgmt/locationserver/src/EPos_CPositionRequest.cpp
changeset 27 aadfb18aaac1
parent 19 bdd4df282e3e
child 49 5f20f71a57a3
equal deleted inserted replaced
23:2965a06983dc 27:aadfb18aaac1
    19 #include <e32base.h>
    19 #include <e32base.h>
    20 #include <lbspositioninfo.h>
    20 #include <lbspositioninfo.h>
    21 #include <lbs/epos_cpositioner.h>
    21 #include <lbs/epos_cpositioner.h>
    22 #include <lbs/epos_cposmodules.h>
    22 #include <lbs/epos_cposmodules.h>
    23 #include <lbs/epos_mposmodulesobserver.h>
    23 #include <lbs/epos_mposmodulesobserver.h>
       
    24 #include <centralrepository.h>
    24 #include "lbsdevloggermacros.h"
    25 #include "lbsdevloggermacros.h"
    25 #include "EPos_ServerPanic.h"
    26 #include "EPos_ServerPanic.h"
    26 #include "EPos_Global.h"
    27 #include "EPos_Global.h"
    27 #include "EPos_CPosCallbackTimer.h"
    28 #include "EPos_CPosCallbackTimer.h"
    28 #include "EPos_CPositionRequest.h"
    29 #include "EPos_CPositionRequest.h"
    32 #include "EPos_CPosLocMonitorReqHandlerHub.h"
    33 #include "EPos_CPosLocMonitorReqHandlerHub.h"
    33 #include "OstTraceDefinitions.h"
    34 #include "OstTraceDefinitions.h"
    34 #ifdef OST_TRACE_COMPILER_IN_USE
    35 #ifdef OST_TRACE_COMPILER_IN_USE
    35 #include "EPos_CPositionRequestTraces.h"
    36 #include "EPos_CPositionRequestTraces.h"
    36 #endif
    37 #endif
       
    38 #include "lbsrootcenrepdefs.h"
       
    39 #include "lbspositioningstatusprops.h"
    37 
    40 
    38 
    41 
    39 
    42 
    40 
    43 
    41 // CONSTANTS
    44 // CONSTANTS
   100     if (!iModuleInfo.IsAvailable())
   103     if (!iModuleInfo.IsAvailable())
   101         {
   104         {
   102         User::Leave(KErrNotFound);
   105         User::Leave(KErrNotFound);
   103         }
   106         }
   104 
   107 
       
   108     // Get the CategoryUid from the cenrep file owned by LbsRoot.
       
   109     CRepository* rep = CRepository::NewLC(KLbsCenRepUid);
       
   110     TInt posStatusCategory;
       
   111     TInt err = rep->Get(KMoPositioningStatusAPIKey, posStatusCategory);
       
   112     User::LeaveIfError(err);
       
   113     CleanupStack::PopAndDestroy(rep);
       
   114     iPosStatusCategory = TUid::Uid(posStatusCategory);
       
   115     
   105     LoadPositionerL();
   116     LoadPositionerL();
   106     }
   117     }
   107 
   118 
   108 /**
   119 /**
   109  * Two-phased constructor.
   120  * Two-phased constructor.
   164         {
   175         {
   165         User::Leave(KErrNotFound);
   176         User::Leave(KErrNotFound);
   166         }
   177         }
   167 
   178 
   168     __ASSERT_DEBUG(iPositioner, DebugPanic(EPosServerPanicPositionerNotInitialized));
   179     __ASSERT_DEBUG(iPositioner, DebugPanic(EPosServerPanicPositionerNotInitialized));
       
   180     
       
   181     //Increment the StatusKeyValue for Positioning Indicator clients
       
   182     if(iTrackingState == EPosNoTracking || iTrackingState == EPosFirstTrackingRequest)
       
   183         {
       
   184         TInt     count, err;     
       
   185         err = RProperty::Get(iPosStatusCategory, KLbsMoPositioningStatusKey, count);
       
   186         if(err == KErrNone)
       
   187             {
       
   188             err = RProperty::Set(iPosStatusCategory, KLbsMoPositioningStatusKey, count+1);
       
   189             }
       
   190         if(err != KErrNone)
       
   191             {
       
   192             DEBUG_TRACE("CPositionRequest::MakeRequestL() - Error in setting or getting Positioning Status", __LINE__)
       
   193             }
       
   194         }
   169 
   195 
   170     iMessage = aMessage; // Store parameter here in case of leave.
   196     iMessage = aMessage; // Store parameter here in case of leave.
   171 
   197 
   172     // Clear previous position data
   198     // Clear previous position data
   173     delete iPositionBuffer;
   199     delete iPositionBuffer;
   503     if (!iMessage.IsNull())
   529     if (!iMessage.IsNull())
   504         {
   530         {
   505 		LBS_RDEBUG_ARGINT("LBS","Client", "RunL", aReason);
   531 		LBS_RDEBUG_ARGINT("LBS","Client", "RunL", aReason);
   506         iMessage.Complete(aReason);
   532         iMessage.Complete(aReason);
   507         }
   533         }
       
   534     //Decrement the StatusKeyValue for Positioning Indicator clients
       
   535     if(iTrackingState == EPosNoTracking)
       
   536         {
       
   537         TInt     count, err;     
       
   538         err = RProperty::Get(iPosStatusCategory, KLbsMoPositioningStatusKey, count);
       
   539         if(err == KErrNone && count > 0)
       
   540             {
       
   541             err = RProperty::Set(iPosStatusCategory, KLbsMoPositioningStatusKey, count-1);
       
   542             }
       
   543 
       
   544         if(err != KErrNone)
       
   545             {
       
   546             DEBUG_TRACE("CPositionRequest::StopTracking() - error in getting or setting Positioning Status", __LINE__)            
       
   547             }
       
   548         else if (count <=0)
       
   549             {
       
   550             DEBUG_TRACE("CPositionRequest::StopTracking() - Incorrect Positioning Status tracking count", __LINE__)            
       
   551             }
       
   552         }
   508     }
   553     }
   509 
   554 
   510 void CPositionRequest::CompleteRequest(TInt aReason)
   555 void CPositionRequest::CompleteRequest(TInt aReason)
   511     {
   556     {
   512     // Return fix to the client
   557     // Return fix to the client
   702     LBS_RDEBUG_INFO("CPositionRequest::StopTracking()");
   747     LBS_RDEBUG_INFO("CPositionRequest::StopTracking()");
   703     iTrackingTimer->Cancel();
   748     iTrackingTimer->Cancel();
   704     iTrackingState = EPosNoTracking;
   749     iTrackingState = EPosNoTracking;
   705 
   750 
   706     StopPsyTracking();
   751     StopPsyTracking();
       
   752     
       
   753     //Set PositionIndicator Off
       
   754     TInt     count, err;     
       
   755     err = RProperty::Get(iPosStatusCategory, KLbsMoPositioningStatusKey, count);
       
   756     if(err == KErrNone && count > 0)
       
   757         {
       
   758         err = RProperty::Set(iPosStatusCategory, KLbsMoPositioningStatusKey, count-1);
       
   759         }
       
   760     
       
   761     if(err != KErrNone)
       
   762         {
       
   763         DEBUG_TRACE("CPositionRequest::StopTracking() - error in getting or setting Positioning Status", __LINE__)            
       
   764         }
       
   765     else if (count <=0)
       
   766         {
       
   767         DEBUG_TRACE("CPositionRequest::StopTracking() - Incorrect Positioning Status tracking count", __LINE__)            
       
   768         }
   707     }
   769     }
   708 
   770 
   709 void CPositionRequest::StopPsyTracking()
   771 void CPositionRequest::StopPsyTracking()
   710     {
   772     {
   711     if (iPositioner && iPositionerTrackingStarted)
   773     if (iPositioner && iPositionerTrackingStarted)