author | Mikko Sunikka <mikko.sunikka@nokia.com> |
Fri, 06 Nov 2009 13:05:00 +0200 | |
changeset 32 | 8d692d9f828f |
parent 22 | fc9cf246af83 |
child 50 | 5dae2c62e9b6 |
permissions | -rw-r--r-- |
19 | 1 |
/* |
2 |
* Copyright (c) 2006-2007 Nokia Corporation and/or its subsidiary(-ies). |
|
3 |
* All rights reserved. |
|
4 |
* This component and the accompanying materials are made available |
|
5 |
* under the terms of the License "Eclipse Public License v1.0" |
|
6 |
* which accompanies this distribution, and is available |
|
7 |
* at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
8 |
* |
|
9 |
* Initial Contributors: |
|
10 |
* Nokia Corporation - initial contribution. |
|
11 |
* |
|
12 |
* Contributors: |
|
13 |
* |
|
14 |
* Description: Implements location SAPI core ;works as wrapper |
|
15 |
* around core implementaion. |
|
16 |
* |
|
17 |
*/ |
|
18 |
||
19 |
||
20 |
||
21 |
#include "locationcoreimp.h" |
|
22 |
#include "locationservice.h" |
|
23 |
||
24 |
||
25 |
||
26 |
||
27 |
||
28 |
/** |
|
29 |
* Default constructor |
|
30 |
*/ |
|
31 |
||
32 |
||
33 |
EXPORT_C CLocationService :: CLocationService() |
|
32 | 34 |
:iGenericPosInfo(NULL) |
19 | 35 |
{ |
36 |
//No Implementation Required Here |
|
37 |
} |
|
38 |
||
39 |
||
40 |
/** |
|
41 |
* Destructor |
|
42 |
*/ |
|
43 |
||
44 |
EXPORT_C CLocationService :: ~CLocationService() |
|
45 |
{ |
|
46 |
iPositioner.Close(); |
|
47 |
||
48 |
||
49 |
//Destroy all the contents of the registration table |
|
50 |
for(TInt iter = 0 ; iter < iRegTable.Count() ; ++iter) |
|
51 |
{ |
|
52 |
if(iRegTable[iter]) |
|
53 |
{ |
|
54 |
if(iRegTable[iter]->IsActive()) |
|
55 |
{ |
|
56 |
iRegTable[iter]->Deque() ; |
|
57 |
} |
|
58 |
delete iRegTable[iter]; |
|
59 |
||
60 |
} |
|
61 |
} |
|
62 |
iPosServer.Close(); |
|
63 |
iRegTable.Close(); |
|
32 | 64 |
delete iGenericPosInfo; |
19 | 65 |
|
66 |
} |
|
67 |
||
68 |
/** |
|
69 |
* CLocationService::NewL |
|
70 |
* Two-phased constructor. |
|
71 |
*/ |
|
72 |
||
73 |
||
74 |
EXPORT_C CLocationService *CLocationService :: NewL() |
|
75 |
{ |
|
76 |
CLocationService *self = new(ELeave)CLocationService() ; |
|
77 |
CleanupStack::PushL(self); |
|
78 |
self->ConstructL() ; |
|
79 |
CleanupStack::Pop(self) ; |
|
80 |
return self ; |
|
81 |
||
82 |
} |
|
83 |
||
84 |
/** |
|
85 |
* CLocationService::ConstructL |
|
86 |
* Symbian 2nd phase constructor can leave. |
|
87 |
* Initialises position server and positioner and |
|
88 |
* begins the position request sequence. |
|
89 |
*/ |
|
90 |
||
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
91 |
void CLocationService::ConstructL() |
19 | 92 |
{ |
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
93 |
User :: LeaveIfError(iPosServer.Connect()); |
32 | 94 |
//CleanupClosePushL(iPosServer); |
95 |
iGenericPosInfo = HPositionGenericInfo::NewL() ; |
|
96 |
||
97 |
if ( !iGenericPosInfo ) |
|
98 |
{ |
|
99 |
User::Leave( KErrNoMemory ) ; |
|
100 |
} |
|
19 | 101 |
|
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
102 |
//Get the module id of the default module available |
32 | 103 |
//User :: LeaveIfError(iPosServer.GetDefaultModuleId(iModuleId)); |
19 | 104 |
|
32 | 105 |
//CleanupStack::Pop(&iPosServer); |
19 | 106 |
} |
107 |
||
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
108 |
/** |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
109 |
* CLocationService::GetHighAccuracyModule |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
110 |
* This function returns the module id of highest accuracy |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
111 |
* module that is available on the phone currently. |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
112 |
*/ |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
113 |
void CLocationService::GetHighAccuracyModuleL(TPositionModuleId* aModId) |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
114 |
{ |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
115 |
TPositionModuleId moduleId; |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
116 |
TPositionModuleInfo modInfo; |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
117 |
TUint numOfModules = 0; |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
118 |
|
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
119 |
//Flags used for indicating if a particular module is found |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
120 |
TInt termInternalFlag = 0; |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
121 |
TInt termFlag = 0 ,assisFlag = 0 ,networkFlag = 0,unknownFlag = 0; |
32 | 122 |
//TInt err; |
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
123 |
|
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
124 |
User::LeaveIfError(iPosServer.GetNumModules(numOfModules)); |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
125 |
|
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
126 |
|
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
127 |
for( TInt i=0;i< numOfModules;i++ ) |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
128 |
{ |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
129 |
iPosServer.GetModuleInfoByIndex(i,modInfo); |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
130 |
|
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
131 |
if( modInfo.TechnologyType() == modInfo.ETechnologyAssisted && |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
132 |
modInfo.IsAvailable()) |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
133 |
{ |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
134 |
|
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
135 |
assisFlag = 1; |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
136 |
moduleId = modInfo.ModuleId(); |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
137 |
break; |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
138 |
} |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
139 |
|
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
140 |
if( modInfo.TechnologyType() == modInfo.ETechnologyTerminal && |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
141 |
!assisFlag && !termInternalFlag && modInfo.IsAvailable() ) |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
142 |
{ |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
143 |
|
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
144 |
termFlag = 1; |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
145 |
moduleId = modInfo.ModuleId(); |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
146 |
|
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
147 |
//Internal Module takes higher priority than External module |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
148 |
if(modInfo.DeviceLocation() == modInfo.EDeviceInternal) |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
149 |
{ |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
150 |
termInternalFlag = 1; |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
151 |
} |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
152 |
|
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
153 |
} |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
154 |
|
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
155 |
if(modInfo.TechnologyType() == modInfo.ETechnologyNetwork && |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
156 |
!assisFlag && !termFlag && modInfo.IsAvailable()) |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
157 |
{ |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
158 |
|
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
159 |
networkFlag = 1; |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
160 |
moduleId = modInfo.ModuleId(); |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
161 |
|
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
162 |
} |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
163 |
|
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
164 |
if( modInfo.TechnologyType() == modInfo.ETechnologyUnknown && |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
165 |
!assisFlag && !termFlag && |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
166 |
!networkFlag && modInfo.IsAvailable() ) |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
167 |
{ |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
168 |
|
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
169 |
unknownFlag = 1; |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
170 |
moduleId = modInfo.ModuleId(); |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
171 |
} |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
172 |
} |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
173 |
*aModId = moduleId; |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
174 |
} |
19 | 175 |
|
176 |
/** |
|
177 |
* CLocationService :: GetLocationL with update options, this function gets users current location |
|
178 |
* returns 0 on success and Symbian specific error codes on failure |
|
179 |
*/ |
|
180 |
||
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
181 |
EXPORT_C void CLocationService :: GetLocationL( TPositionInfoBase* aInfoBase , |
32 | 182 |
const TPositionUpdateOptions* aUpdateOpts, |
183 |
TBool aEnableHighAcc ) |
|
19 | 184 |
{ |
32 | 185 |
//Check if atleast one of the module is enabled |
186 |
TInt modError = iPosServer.GetDefaultModuleId(iModuleId); |
|
187 |
if (modError) |
|
188 |
{ |
|
189 |
User::Leave(errServiceNotReady); |
|
190 |
} |
|
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
191 |
// Open subsession to the position server |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
192 |
TPositionModuleId ModuleId; |
32 | 193 |
//TInt error; |
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
194 |
if(aEnableHighAcc) |
19 | 195 |
{ |
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
196 |
GetHighAccuracyModuleL(&ModuleId); |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
197 |
|
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
198 |
User::LeaveIfError(iPositioner.Open(iPosServer,ModuleId)); |
19 | 199 |
|
32 | 200 |
iModuleId = ModuleId; |
19 | 201 |
} |
202 |
else |
|
203 |
{ |
|
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
204 |
User::LeaveIfError(iPositioner.Open(iPosServer)); |
32 | 205 |
User::LeaveIfError(iPosServer.GetDefaultModuleId(iModuleId)); |
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
206 |
} |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
207 |
|
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
208 |
|
32 | 209 |
//CleanupClosePushL(iPositioner); |
210 |
TInt errorInprocessing = KErrNone; |
|
211 |
errorInprocessing = SetRequestingField(); |
|
212 |
if(errorInprocessing) |
|
213 |
{ |
|
214 |
iPositioner.Close(); |
|
215 |
User::Leave(errorInprocessing); |
|
216 |
} |
|
217 |
// (static_cast<HPositionGenericInfo*>(aInfoBase))->ClearRequestedFields() ; |
|
218 |
(static_cast<HPositionGenericInfo*>(aInfoBase))->SetRequestedFields(iFieldList) ; |
|
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
219 |
//setting identity for this requestor |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
220 |
User::LeaveIfError( iPositioner.SetRequestor( CRequestor::ERequestorService, |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
221 |
CRequestor::EFormatApplication, |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
222 |
KIdentity ) ); |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
223 |
|
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
224 |
TRequestStatus status; |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
225 |
|
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
226 |
if(aUpdateOpts) |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
227 |
{ |
32 | 228 |
TInt errorInprocessing = iPositioner.SetUpdateOptions(*aUpdateOpts); |
229 |
||
230 |
if(errorInprocessing) |
|
231 |
{ |
|
232 |
iPositioner.Close(); |
|
233 |
User::Leave(errorInprocessing); |
|
234 |
} |
|
235 |
||
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
236 |
} |
19 | 237 |
|
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
238 |
else |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
239 |
{ |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
240 |
TPositionUpdateOptions updateopts ; |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
241 |
|
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
242 |
// Set update interval to one second to receive one position data per second |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
243 |
updateopts.SetUpdateInterval(TTimeIntervalMicroSeconds(KSUpdateInterval)); |
19 | 244 |
|
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
245 |
// If position server could not get position |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
246 |
// In two minutes it will terminate the position request |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
247 |
updateopts.SetUpdateTimeOut(TTimeIntervalMicroSeconds(KSUpdateTimeOut)); |
19 | 248 |
|
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
249 |
// Positions which have time stamp below KMaxAge can be reused |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
250 |
updateopts.SetMaxUpdateAge(TTimeIntervalMicroSeconds(KSMaxAge)); |
19 | 251 |
|
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
252 |
// Enables location framework to send partial position data |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
253 |
updateopts.SetAcceptPartialUpdates(FALSE); |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
254 |
|
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
255 |
|
19 | 256 |
iPositioner.SetUpdateOptions(updateopts) ; |
257 |
} |
|
258 |
||
259 |
||
260 |
iPositioner.NotifyPositionUpdate( *aInfoBase, status ); |
|
261 |
User :: WaitForRequest(status) ; |
|
32 | 262 |
//CleanupStack::PopAndDestroy(&iPositioner); |
263 |
iPositioner.Close(); |
|
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
264 |
|
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
265 |
User::LeaveIfError(status.Int()); |
19 | 266 |
} |
267 |
||
268 |
/** |
|
269 |
* CLocationService::ModuleInfo, gets information about the location moudleid of currently used |
|
270 |
* positioning moulde, currently this methods only supports info of default module indentifier |
|
271 |
*/ |
|
272 |
||
32 | 273 |
EXPORT_C TInt CLocationService :: GetModuleInfo( |
274 |
TPositionModuleInfoBase& aModuleInfo ) const |
|
19 | 275 |
{ |
276 |
return iPosServer.GetModuleInfoById(iModuleId , aModuleInfo) ; |
|
277 |
||
278 |
} |
|
279 |
||
280 |
||
281 |
||
282 |
/** |
|
283 |
* Function Name : GetLocation Asynchronous |
|
284 |
* This function gets users current location |
|
285 |
* returns status of job submitted |
|
286 |
*/ |
|
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
287 |
EXPORT_C void CLocationService :: GetLocationL( MLocationCallBack* aCallBackObj , |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
288 |
TInt aLocationInfoCategory, |
32 | 289 |
TPositionFieldIdList/* aFieldList*/ , |
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
290 |
const TPositionUpdateOptions* aUpateOptions, |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
291 |
TBool aEnableHighAcc |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
292 |
) |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
293 |
{ |
32 | 294 |
TInt modError = iPosServer.GetDefaultModuleId(iModuleId); |
295 |
if (modError) |
|
296 |
{ |
|
297 |
User::Leave(errServiceNotReady); |
|
298 |
} |
|
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
299 |
TPositionModuleId ModuleId; |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
300 |
if(aEnableHighAcc) |
19 | 301 |
{ |
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
302 |
GetHighAccuracyModuleL(&ModuleId); |
32 | 303 |
iModuleId = ModuleId; |
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
304 |
|
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
305 |
} |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
306 |
else |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
307 |
{ |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
308 |
//Indicates that when opening the subsession ,moudleId need not be specified |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
309 |
ModuleId.iUid = 0; |
32 | 310 |
User::LeaveIfError(iPosServer.GetDefaultModuleId(iModuleId)); |
19 | 311 |
} |
312 |
||
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
313 |
TInt err = KErrGeneral; |
32 | 314 |
User::LeaveIfError(SetSupportedFields()); |
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
315 |
|
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
316 |
CGetLoc* activeGetLoc = CGetLoc :: NewL(iPosServer , |
32 | 317 |
iFieldList , |
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
318 |
KGetLocationRequest, |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
319 |
aLocationInfoCategory, |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
320 |
ModuleId) ; |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
321 |
|
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
322 |
err = activeGetLoc->GetLocationUpdates(this,aCallBackObj,aUpateOptions); |
19 | 323 |
|
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
324 |
if ( KErrNone == err ) |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
325 |
{ |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
326 |
iRegTable.Append(activeGetLoc); |
19 | 327 |
} |
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
328 |
else |
19 | 329 |
{ |
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
330 |
delete activeGetLoc; //Clean up |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
331 |
User::Leave(err); |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
332 |
} |
19 | 333 |
} |
334 |
||
335 |
||
336 |
||
337 |
/** |
|
338 |
* CLocationService :: TraceL Notifies user if any changes occurs to his current position, |
|
339 |
* types of updates required are specified as part of Updateoptions. |
|
340 |
* Returns 0 on success and symbian specific error codes on failures |
|
341 |
*/ |
|
342 |
||
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
343 |
EXPORT_C void CLocationService :: TraceL( MLocationCallBack* aCallBackObj , |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
344 |
TInt aLocationInfoCategory, |
32 | 345 |
TPositionFieldIdList/* aFiledList*/ , |
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
346 |
const TPositionUpdateOptions* aUpateOptions, |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
347 |
TBool aEnableHighAcc ) |
19 | 348 |
{ |
32 | 349 |
TInt modError = iPosServer.GetDefaultModuleId(iModuleId); |
350 |
if (modError) |
|
351 |
{ |
|
352 |
User::Leave(errServiceNotReady); |
|
353 |
} |
|
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
354 |
TPositionModuleId ModuleId; |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
355 |
if(aEnableHighAcc) |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
356 |
{ |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
357 |
GetHighAccuracyModuleL(&ModuleId); |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
358 |
if(ModuleId.iUid == NULL) |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
359 |
{ |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
360 |
User::Leave(KErrGeneral); |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
361 |
} |
32 | 362 |
iModuleId = ModuleId; |
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
363 |
} |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
364 |
else |
19 | 365 |
{ |
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
366 |
//Indicates that when opening the subsession ,moudleId need not be specified |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
367 |
ModuleId.iUid = 0; |
32 | 368 |
User::LeaveIfError(iPosServer.GetDefaultModuleId(iModuleId)); |
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
369 |
} |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
370 |
|
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
371 |
CGetLoc* activeTrace = CGetLoc :: NewL(iPosServer , |
32 | 372 |
iFieldList , |
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
373 |
KTraceRequest, |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
374 |
aLocationInfoCategory, |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
375 |
ModuleId) ; |
19 | 376 |
|
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
377 |
TInt ret = activeTrace->GetLocationUpdates(this,aCallBackObj , aUpateOptions); |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
378 |
|
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
379 |
if (ret == KErrNone) |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
380 |
{ |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
381 |
iRegTable.Append(activeTrace); |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
382 |
} |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
383 |
else |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
384 |
{ |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
385 |
//Cleanup the allocated object |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
386 |
delete activeTrace; |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
387 |
User::Leave(ret); |
19 | 388 |
} |
389 |
||
390 |
} |
|
391 |
||
392 |
/** |
|
393 |
* MathOparation to find distance and bearingto between two coordinates,and to move |
|
394 |
* (Translate) |
|
395 |
* one coordinate to another. |
|
396 |
* Before decoding result of a particular requested service consumer code must check |
|
397 |
* for the returned error code. Result field will be valid only when return code is |
|
398 |
* KErrNone. |
|
399 |
*/ |
|
400 |
||
401 |
EXPORT_C TInt CLocationService :: MathOperation( inpparam& aInput ) |
|
402 |
{ |
|
403 |
if ( aInput.servicechoice == EDistance ) //find distance between two location |
|
404 |
{ |
|
405 |
//get the distance between two specified position |
|
406 |
TInt error = aInput.source.Distance(aInput.destination , aInput.result); |
|
407 |
return error; |
|
408 |
||
409 |
} |
|
410 |
else if ( aInput.servicechoice == EBearingTo ) |
|
411 |
{ |
|
412 |
//get the bearingTo between specified coordinates |
|
413 |
TInt error = aInput.source.BearingTo(aInput.destination,aInput.result); |
|
414 |
return error; |
|
415 |
} |
|
416 |
else if ( aInput.servicechoice == EMove ) |
|
417 |
{ |
|
418 |
//Translate the source coordinate to the target coordinate by specified bearing and distance |
|
419 |
TInt error = aInput.source.Move(aInput.bearing,aInput.distance); |
|
420 |
return error; |
|
421 |
} |
|
422 |
//In case service asked is not supported |
|
423 |
return KErrNotSupported; |
|
424 |
} |
|
425 |
||
426 |
||
427 |
/** |
|
428 |
* Synchronous function which returns users last known position |
|
429 |
*/ |
|
430 |
||
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
431 |
EXPORT_C TInt CLocationService :: GetLastKnownLoc( TPosition& aResultPos ) |
19 | 432 |
{ |
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
433 |
TInt error = iPositioner.Open(iPosServer); |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
434 |
|
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
435 |
|
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
436 |
// The opening of a subsession failed |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
437 |
if ( KErrNone != error ) |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
438 |
{ |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
439 |
iPosServer.Close(); |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
440 |
return error ; |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
441 |
} |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
442 |
|
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
443 |
//setting identity for this requestor |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
444 |
error = iPositioner.SetRequestor( CRequestor::ERequestorService, |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
445 |
CRequestor::EFormatApplication, |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
446 |
KIdentity ) ; |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
447 |
|
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
448 |
if ( KErrNone != error ) |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
449 |
{ |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
450 |
iPositioner.Close(); |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
451 |
return error ; |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
452 |
} |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
453 |
|
19 | 454 |
TRequestStatus Status = KRequestPending ; |
455 |
TPositionInfo posinfo ; |
|
456 |
TPositionInfoBase *posinfoBase = &posinfo ; |
|
457 |
||
458 |
iPositioner.GetLastKnownPosition(*posinfoBase,Status); |
|
459 |
User::WaitForRequest(Status); |
|
460 |
posinfo.GetPosition(aResultPos) ; |
|
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
461 |
|
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
462 |
iPositioner.Close(); |
19 | 463 |
return Status.Int() ; |
464 |
||
465 |
} |
|
466 |
||
467 |
/** |
|
468 |
* CancelOnGoingService : Cancells Requested asynchronous requests, |
|
469 |
* Input : Type of request to be cancelled(Trace , Getlocation), |
|
470 |
* Returns success(KErrNone) if service cancelled or else error if |
|
471 |
* input parameter is invalid |
|
472 |
*/ |
|
473 |
EXPORT_C TInt CLocationService::CancelOnGoingService( TInt aCancelparam ) |
|
474 |
{ |
|
475 |
if ( (aCancelparam == ECancelGetLocation ) || (aCancelparam == ECancelTrace)) |
|
476 |
{ |
|
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
477 |
TInt i; |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
478 |
for( i = 0; i< iRegTable.Count(); i++) |
19 | 479 |
{ |
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
480 |
if(iRegTable[i] ) |
19 | 481 |
{ |
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
482 |
|
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
483 |
if((((iRegTable[i]->GetCallBackobj())->GetRequestType()) == |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
484 |
KGetLocationReq) && (aCancelparam == ECancelGetLocation )) |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
485 |
{ |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
486 |
if(iRegTable[i]->IsAdded()) |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
487 |
{ |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
488 |
iRegTable[i]->Deque(); |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
489 |
} |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
490 |
|
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
491 |
|
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
492 |
delete iRegTable[i]; |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
493 |
iRegTable[i] = NULL; |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
494 |
return KErrNone; |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
495 |
} |
19 | 496 |
|
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
497 |
else if ((((iRegTable[i]->GetCallBackobj())->GetRequestType()) == |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
498 |
KTraceReq) && (aCancelparam == ECancelTrace )) |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
499 |
{ |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
500 |
if(iRegTable[i]->IsAdded()) |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
501 |
{ |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
502 |
iRegTable[i]->Deque(); |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
503 |
} |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
504 |
|
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
505 |
iRegTable[i]->SetStatusComplete(); |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
506 |
|
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
507 |
delete iRegTable[i]; |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
508 |
iRegTable[i] = NULL; |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
509 |
return KErrNone; |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
510 |
} |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
511 |
} |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
512 |
} |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
513 |
return KErrNotFound; |
19 | 514 |
} |
515 |
||
516 |
return KErrArgument; |
|
517 |
} |
|
518 |
||
22
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
519 |
/** |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
520 |
* CancelService : Cancels Requested asynchronous requests, |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
521 |
* Input : TransactionId returned by the Async request, |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
522 |
* Returns success(KErrNone) if service canceled or else error if |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
523 |
* input parameter is invalid |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
524 |
*/ |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
525 |
EXPORT_C TInt CLocationService::CancelService( TInt aTransId) |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
526 |
{ |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
527 |
TInt i; |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
528 |
for( i = 0; i< iRegTable.Count(); i++) |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
529 |
{ |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
530 |
if(iRegTable[i]) |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
531 |
{ |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
532 |
if(aTransId == |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
533 |
(iRegTable[i]->GetCallBackobj())->GetTransactionId()) |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
534 |
{ |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
535 |
if(iRegTable[i]->IsAdded()) |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
536 |
{ |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
537 |
iRegTable[i]->Deque(); |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
538 |
} |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
539 |
if(((iRegTable[i]->GetCallBackobj())->GetRequestType()) == |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
540 |
KTraceReq) |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
541 |
{ |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
542 |
iRegTable[i]->SetStatusComplete(); |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
543 |
} |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
544 |
delete iRegTable[i]; |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
545 |
iRegTable[i] = NULL; |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
546 |
return KErrNone; |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
547 |
} |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
548 |
} |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
549 |
} |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
550 |
|
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
551 |
return KErrNotFound; |
fc9cf246af83
Revision: 200931
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
19
diff
changeset
|
552 |
} |
32 | 553 |
TInt CLocationService :: SetSupportedFields() |
554 |
{ |
|
555 |
||
556 |
TUint fieldIter = 0 ; |
|
557 |
//get positioning module information |
|
558 |
TInt infoerr = GetModuleInfo(iModuleInfo); |
|
559 |
if (infoerr) |
|
560 |
{ |
|
561 |
return infoerr; |
|
562 |
} |
|
563 |
||
564 |
TPositionModuleInfo :: TCapabilities currCapability = iModuleInfo.Capabilities() ; |
|
565 |
||
566 |
if(currCapability & TPositionModuleInfo :: ECapabilitySpeed) //set horizontal,vertical speeds along with errros |
|
567 |
{ |
|
568 |
iFieldList[fieldIter++] = EPositionFieldHorizontalSpeed ; |
|
569 |
||
570 |
iFieldList[fieldIter++] = EPositionFieldHorizontalSpeedError ; |
|
571 |
iFieldList[fieldIter++] = EPositionFieldVerticalSpeed ; |
|
572 |
iFieldList[fieldIter++] = EPositionFieldVerticalSpeedError ; |
|
573 |
} |
|
574 |
||
575 |
if(currCapability & TPositionModuleInfo :: ECapabilitySatellite) //Set satellite info fields if positioning module supports |
|
576 |
{ // |
|
577 |
||
578 |
iFieldList[fieldIter++] = EPositionFieldSatelliteNumInView ; |
|
579 |
iFieldList[fieldIter++] = EPositionFieldSatelliteNumUsed ; |
|
580 |
iFieldList[fieldIter++] = EPositionFieldSatelliteTime ; |
|
581 |
iFieldList[fieldIter++] = EPositionFieldSatelliteHorizontalDoP ; |
|
582 |
iFieldList[fieldIter++] = EPositionFieldSatelliteVerticalDoP ; |
|
583 |
||
584 |
} |
|
585 |
||
586 |
if(currCapability & TPositionModuleInfo :: ECapabilityDirection) //Set Direction info fields if positioning module supports |
|
587 |
{ |
|
588 |
||
589 |
iFieldList[fieldIter++] = EPositionFieldTrueCourse ; |
|
590 |
iFieldList[fieldIter++] = EPositionFieldTrueCourseError ; |
|
591 |
iFieldList[fieldIter++] = EPositionFieldMagneticCourse ; |
|
592 |
iFieldList[fieldIter++] = EPositionFieldMagneticCourseError ; |
|
593 |
||
594 |
} |
|
595 |
||
596 |
||
597 |
if(currCapability & TPositionModuleInfo :: ECapabilityCompass) //Set NMEA fields if positioning module supports |
|
598 |
{ |
|
599 |
||
600 |
iFieldList[fieldIter++] = EPositionFieldHeading ; |
|
601 |
iFieldList[fieldIter++] = EPositionFieldHeadingError ; |
|
602 |
iFieldList[fieldIter++] = EPositionFieldMagneticHeading ; |
|
603 |
iFieldList[fieldIter++] = EPositionFieldMagneticHeadingError ; |
|
604 |
||
605 |
} |
|
606 |
||
607 |
||
608 |
iFieldList[fieldIter] = EPositionFieldNone ; //Field Termination |
|
609 |
iGenericPosInfo->ClearRequestedFields() ; |
|
610 |
iGenericPosInfo->SetRequestedFields(iFieldList) ; |
|
611 |
||
612 |
||
613 |
return KErrNone ; |
|
614 |
} |
|
615 |
TInt CLocationService :: SetRequestingField() |
|
616 |
{ |
|
617 |
||
618 |
TUint fieldIter = 0 ; |
|
619 |
//get positioning module information |
|
620 |
TInt infoerr = GetModuleInfo(iModuleInfo); |
|
621 |
if (infoerr) |
|
622 |
{ |
|
623 |
return infoerr; |
|
624 |
} |
|
625 |
||
626 |
TPositionModuleInfo :: TCapabilities currCapability = iModuleInfo.Capabilities() ; |
|
627 |
||
628 |
if(currCapability & TPositionModuleInfo :: ECapabilitySpeed) //set horizontal,vertical speeds along with errros |
|
629 |
{ |
|
630 |
iFieldList[fieldIter++] = EPositionFieldHorizontalSpeed ; |
|
631 |
||
632 |
iFieldList[fieldIter++] = EPositionFieldHorizontalSpeedError ; |
|
633 |
iFieldList[fieldIter++] = EPositionFieldVerticalSpeed ; |
|
634 |
iFieldList[fieldIter++] = EPositionFieldVerticalSpeedError ; |
|
635 |
} |
|
636 |
||
637 |
if(currCapability & TPositionModuleInfo :: ECapabilitySatellite) //Set satellite info fields if positioning module supports |
|
638 |
{ // |
|
639 |
||
640 |
iFieldList[fieldIter++] = EPositionFieldSatelliteNumInView ; |
|
641 |
iFieldList[fieldIter++] = EPositionFieldSatelliteNumUsed ; |
|
642 |
iFieldList[fieldIter++] = EPositionFieldSatelliteTime ; |
|
643 |
iFieldList[fieldIter++] = EPositionFieldSatelliteHorizontalDoP ; |
|
644 |
iFieldList[fieldIter++] = EPositionFieldSatelliteVerticalDoP ; |
|
645 |
||
646 |
} |
|
647 |
||
648 |
if(currCapability & TPositionModuleInfo :: ECapabilityDirection) //Set Direction info fields if positioning module supports |
|
649 |
{ |
|
650 |
||
651 |
iFieldList[fieldIter++] = EPositionFieldTrueCourse ; |
|
652 |
iFieldList[fieldIter++] = EPositionFieldTrueCourseError ; |
|
653 |
iFieldList[fieldIter++] = EPositionFieldMagneticCourse ; |
|
654 |
iFieldList[fieldIter++] = EPositionFieldMagneticCourseError ; |
|
655 |
||
656 |
} |
|
657 |
||
658 |
||
659 |
if(currCapability & TPositionModuleInfo :: ECapabilityCompass) //Set NMEA fields if positioning module supports |
|
660 |
{ |
|
661 |
||
662 |
iFieldList[fieldIter++] = EPositionFieldHeading ; |
|
663 |
iFieldList[fieldIter++] = EPositionFieldHeadingError ; |
|
664 |
iFieldList[fieldIter++] = EPositionFieldMagneticHeading ; |
|
665 |
iFieldList[fieldIter++] = EPositionFieldMagneticHeadingError ; |
|
666 |
||
667 |
} |
|
668 |
||
669 |
||
670 |
iFieldList[fieldIter] = EPositionFieldNone ; //Field Termination |
|
671 |
||
672 |
||
673 |
||
674 |
return KErrNone ; |
|
675 |
} |
|
676 |