equal
deleted
inserted
replaced
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) |