1 /* |
|
2 * Copyright (c) 2008-2009 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 "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: It is adapter class to handle lbt operations |
|
15 * |
|
16 */ |
|
17 |
|
18 #include <lbtgeocircle.h> |
|
19 #include <lbttriggerconditionarea.h> |
|
20 #include <lbttriggerfilterbyattribute.h> |
|
21 #include <lbtlisttriggeroptions.h> |
|
22 #include <lbtstartuptrigger.h> |
|
23 #include <lbsrequestor.h> |
|
24 #include <lbttriggerinfo.h> |
|
25 #include <lbttriggerchangeeventnotifier.h> |
|
26 #include <e32cmn.h> |
|
27 |
|
28 #include "evtmgmtuilbtadapter.h" |
|
29 #include "evtdebug.h" |
|
30 |
|
31 // CONSTANTS |
|
32 const TInt KUnitConversion = 1000; // Unit Converter |
|
33 _LIT( KTriggerHandlingProcessName, "evthandler.exe" ); // Handler Process Name |
|
34 _LIT_SECURE_ID( KTriggerHandlingProcessSID, 0x2001E667); // Handler Process UID |
|
35 _LIT_SECURE_ID( KManagerProcessSID, 0x2001E668); // Manager Process UID |
|
36 _LIT( KMyRequestor , "Requestor" ); //Set requestor information |
|
37 |
|
38 // --------------------------------------------------------------------------- |
|
39 // CEvtMgmtUiLbtAdapter ::CEvtMgmtUiLbtAdapter() |
|
40 // --------------------------------------------------------------------------- |
|
41 // |
|
42 CEvtMgmtUiLbtAdapter::CEvtMgmtUiLbtAdapter(MEvtMgmtUiLbtObserver& aObserver) |
|
43 :CActive( EPriorityStandard ), iObserver(aObserver) |
|
44 { |
|
45 } |
|
46 |
|
47 // --------------------------------------------------------------------------- |
|
48 // CEvtMgmtUiLbtAdapter ::ConstructL() |
|
49 // --------------------------------------------------------------------------- |
|
50 // |
|
51 void CEvtMgmtUiLbtAdapter::ConstructL() |
|
52 { |
|
53 EVTUIDEBUG("+ CEvtMgmtUiLbtAdapter::ConstructL()" ); |
|
54 |
|
55 CActiveScheduler::Add(this); |
|
56 EVTUIDEBUG("scheduler added" ); |
|
57 |
|
58 // Create a Connection to LBT Sever. |
|
59 User::LeaveIfError( iLbtServer.Connect() ); |
|
60 EVTUIDEBUG("lbtserver connected" ); |
|
61 |
|
62 // Open 2 Sessions - One for LBT operation and Other for LBT observer |
|
63 User::LeaveIfError( iLbt.Open(iLbtServer) ); |
|
64 User::LeaveIfError( iLbtObserver.Open(iLbtServer) ); |
|
65 EVTUIDEBUG("lbt is opened" ); |
|
66 |
|
67 // Create a Trigger change notifier to listen to any changes to triggers. |
|
68 iEventChangeObserver = CLbtTriggerChangeEventNotifier::NewL( iLbtObserver, *this ); |
|
69 iEventChangeObserver->Start(); |
|
70 EVTUIDEBUG("Trigger Change Notifier is started" ); |
|
71 |
|
72 EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::ConstructL()" ); |
|
73 } |
|
74 |
|
75 // --------------------------------------------------------------------------- |
|
76 // CEvtMgmtUiLbtAdapter ::NewL() |
|
77 // --------------------------------------------------------------------------- |
|
78 // |
|
79 CEvtMgmtUiLbtAdapter* CEvtMgmtUiLbtAdapter::NewL(MEvtMgmtUiLbtObserver& aObserver) |
|
80 { |
|
81 EVTUIDEBUG("+ CEvtMgmtUiLbtAdapter::NewL()" ); |
|
82 CEvtMgmtUiLbtAdapter * self = new (ELeave) CEvtMgmtUiLbtAdapter(aObserver); |
|
83 CleanupStack::PushL(self); |
|
84 self->ConstructL(); |
|
85 CleanupStack::Pop(self); |
|
86 EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::NewL()" ); |
|
87 return self; |
|
88 } |
|
89 |
|
90 // --------------------------------------------------------------------------- |
|
91 // CEvtMgmtUiLbtAdapter ::~CEvtMgmtUiLbtAdapter() |
|
92 // --------------------------------------------------------------------------- |
|
93 // |
|
94 CEvtMgmtUiLbtAdapter::~CEvtMgmtUiLbtAdapter() |
|
95 { |
|
96 EVTUIDEBUG("+ CEvtMgmtUiLbtAdapter::~CEvtMgmtUiLbtAdapter()" ); |
|
97 Cancel(); |
|
98 if(iAttrFilter) |
|
99 { |
|
100 delete iAttrFilter; |
|
101 iAttrFilter = NULL; |
|
102 } |
|
103 |
|
104 if(iTrigger) |
|
105 { |
|
106 delete iTrigger; |
|
107 iTrigger = NULL; |
|
108 } |
|
109 |
|
110 delete iEventChangeObserver; |
|
111 |
|
112 //Close lbt session and server |
|
113 iLbtObserver.Close(); |
|
114 iLbt.Close(); |
|
115 iLbtServer.Close(); |
|
116 EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::~CEvtMgmtUiLbtAdapter()" ); |
|
117 } |
|
118 |
|
119 // --------------------------------------------------------------------------- |
|
120 // CEvtMgmtUiLbtAdapter::CreateTrigger |
|
121 // --------------------------------------------------------------------------- |
|
122 // |
|
123 void CEvtMgmtUiLbtAdapter::CreateTrigger(const TCoordinate& aCenter, |
|
124 TReal aRadiusInKiloMeters, const TPtrC& aTriggerName, |
|
125 CLbtTriggerEntry::TLbtTriggerState aState ) |
|
126 { |
|
127 EVTUIDEBUG("+ CEvtMgmtUiLbtAdapter::CreateOrUpdateTrigger()" ); |
|
128 |
|
129 TRAPD(err, CreateTriggerL( aCenter, aRadiusInKiloMeters, aTriggerName, |
|
130 aState ) ); |
|
131 |
|
132 if( err!=KErrNone ) |
|
133 iObserver.NotifyLbtError(err, iState); |
|
134 |
|
135 EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::CreateOrUpdateTrigger()" ); |
|
136 } |
|
137 |
|
138 // --------------------------------------------------------------------------- |
|
139 // CEvtMgmtUiLbtAdapter::CreateTriggerL |
|
140 // --------------------------------------------------------------------------- |
|
141 // |
|
142 void CEvtMgmtUiLbtAdapter::CreateTriggerL(const TCoordinate& aCenter, |
|
143 TReal aRadiusInKiloMeters, const TPtrC& aTriggerName, |
|
144 CLbtTriggerEntry::TLbtTriggerState aState ) |
|
145 { |
|
146 EVTUIDEBUG("+ CEvtMgmtUiLbtAdapter::CreateTriggerL()"); |
|
147 |
|
148 if ( IsActive() ) |
|
149 { |
|
150 User::Leave( KErrInUse ); |
|
151 } |
|
152 |
|
153 //set state of the machine |
|
154 iState = ELbtAdapterCreate; |
|
155 |
|
156 EVTUIDEBUG("========== Trigger Parameter Details ===============" ); |
|
157 CLbtTriggerConditionArea* cond = GetConditionAreaL(aCenter, aRadiusInKiloMeters); |
|
158 CleanupStack::PushL(cond); |
|
159 |
|
160 /*********************** Debug ******************************************/ |
|
161 TBuf<256> debug; |
|
162 debug.Copy( aTriggerName ); |
|
163 EVTUIDEBUG1("Trigger Name = %S", &debug ); |
|
164 EVTUIDEBUG1("Event State = %d", aState ); |
|
165 EVTUIDEBUG1("Radius = %f", aRadiusInKiloMeters*KUnitConversion ); |
|
166 debug.Copy( KTriggerHandlingProcessName() ); |
|
167 EVTUIDEBUG1("Trigger handling process name: %S", &debug ); |
|
168 EVTUIDEBUG1("Trigger handling process SID: %x", KTriggerHandlingProcessSID); |
|
169 EVTUIDEBUG1("Manager process SID: %x", KManagerProcessSID); |
|
170 /*********************** Debug ******************************************/ |
|
171 EVTUIDEBUG("========== Trigger Parameter Details end ===============" ); |
|
172 |
|
173 if(iTrigger) |
|
174 { |
|
175 delete iTrigger; |
|
176 iTrigger = NULL; |
|
177 } |
|
178 |
|
179 // Create the Startup trigegr without the command line. |
|
180 iTrigger = CLbtStartupTrigger::NewL( |
|
181 aTriggerName, // Trigger name |
|
182 aState, // Trigger state |
|
183 CRequestorBase::ERequestorService, // Requestor type |
|
184 CRequestorBase::EFormatApplication, // Requestor format |
|
185 KMyRequestor, // Requestor data |
|
186 KManagerProcessSID, // Manager Uid |
|
187 cond, // Trigger condition |
|
188 KTriggerHandlingProcessName, // Trigger handler app |
|
189 KTriggerHandlingProcessSID |
|
190 ); //Trigger state |
|
191 |
|
192 CleanupStack::Pop( cond ); //ownership of cond is transferred. |
|
193 |
|
194 SetActive(); |
|
195 iStatus = KRequestPending; |
|
196 |
|
197 EVTUIDEBUG("Before CreateTrigger" ); |
|
198 iLbt.CreateTrigger( *iTrigger, iTriggerId, EFalse, iStatus ); |
|
199 EVTUIDEBUG("After CreateTrigger" ); |
|
200 |
|
201 EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::CreateTriggerL()"); |
|
202 } |
|
203 |
|
204 // --------------------------------------------------------------------------- |
|
205 // CEvtMgmtUiLbtAdapter::GetConditionAreaL |
|
206 // --------------------------------------------------------------------------- |
|
207 // |
|
208 CLbtTriggerConditionArea* CEvtMgmtUiLbtAdapter::GetConditionAreaL( |
|
209 const TCoordinate& aCenter, TReal aRadiusInKiloMeters ) |
|
210 { |
|
211 EVTUIDEBUG("+ CEvtMgmtUiLbtAdapter::GetConditionAreaL()"); |
|
212 // Create the Condition Area object depending on the trigger type. |
|
213 CLbtTriggerConditionArea* cond = NULL; |
|
214 |
|
215 if( Math::IsNaN( aCenter.Latitude() ) || Math::IsNaN( aCenter.Longitude() ) ) |
|
216 { |
|
217 //Define the triggering area |
|
218 CLbtGeoCircle * trigArea = CLbtGeoCircle ::NewLC( TCoordinate(TReal(0), TReal(0), TReal(0) ),1*KUnitConversion ); |
|
219 //Construct trigger condition |
|
220 cond = CLbtTriggerConditionArea::NewL |
|
221 (trigArea,CLbtTriggerConditionArea::EFireOnEnter ); |
|
222 CleanupStack::Pop( trigArea ); //ownership of trigArea is transferred. |
|
223 } |
|
224 else |
|
225 { |
|
226 //Define the triggering area |
|
227 CLbtGeoCircle * trigArea = CLbtGeoCircle ::NewLC( aCenter,aRadiusInKiloMeters*KUnitConversion ); |
|
228 //Construct trigger condition |
|
229 cond = CLbtTriggerConditionArea::NewL |
|
230 (trigArea,CLbtTriggerConditionArea::EFireOnEnter ); |
|
231 CleanupStack::Pop( trigArea ); //ownership of trigArea is transferred. |
|
232 } |
|
233 EVTUIDEBUG1("Lat = %f", aCenter.Latitude() ); |
|
234 EVTUIDEBUG1("Long = %f", aCenter.Longitude() ); |
|
235 EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::GetConditionAreaL()"); |
|
236 return cond; |
|
237 } |
|
238 |
|
239 // --------------------------------------------------------------------------- |
|
240 // CEvtMgmtUiLbtAdapter::UpdateCmdLineArgL |
|
241 // --------------------------------------------------------------------------- |
|
242 // |
|
243 void CEvtMgmtUiLbtAdapter::UpdateCmdLineArgL( TLbtTriggerId aTriggerId, |
|
244 TEvtEventId aEventId ) |
|
245 { |
|
246 EVTUIDEBUG1("+ CEvtMgmtUiLbtAdapter::UpdateCmdLineArgL() - %d", aTriggerId ); |
|
247 //set commandline argument |
|
248 const TInt KTriggerIdLength(132); |
|
249 _LIT(KDelimiter, ":"); |
|
250 TBuf<KTriggerIdLength> cmdArg; |
|
251 cmdArg.Zero(); |
|
252 cmdArg.AppendNumUC(EEvtActionFired); |
|
253 cmdArg.Append(KDelimiter()); |
|
254 cmdArg.AppendNumUC(aEventId); |
|
255 |
|
256 CLbtStartupTrigger* trigger = CLbtStartupTrigger::NewLC(); |
|
257 trigger->SetId( aTriggerId ); |
|
258 trigger->SetCommandLineL( cmdArg ); |
|
259 iState = ELbtAdapterUpdateCmdLineArg; |
|
260 |
|
261 EVTUIDEBUG1("Before UpdateTriggerL - %d", aTriggerId ); |
|
262 iLbt.UpdateTriggerL( *trigger, CLbtTriggerEntry::EAttributeStartUpCommandLine, ELbtFalse ); |
|
263 EVTUIDEBUG1("After UpdateTriggerL - %d", aTriggerId ); |
|
264 |
|
265 CleanupStack::PopAndDestroy(trigger); |
|
266 EVTUIDEBUG1("- CEvtMgmtUiLbtAdapter::UpdateCmdLineArgL() - %d", aTriggerId ); |
|
267 } |
|
268 |
|
269 // --------------------------------------------------------------------------- |
|
270 // CEvtMgmtUiLbtAdapter::UpdateTriggerL |
|
271 // --------------------------------------------------------------------------- |
|
272 // |
|
273 void CEvtMgmtUiLbtAdapter::UpdateTriggerL( TLbtTriggerId aTriggerId, |
|
274 const TCoordinate& aCenter, TReal aRadiusInKiloMeters, |
|
275 CLbtTriggerEntry::TLbtTriggerState aState ) |
|
276 { |
|
277 EVTUIDEBUG1("+ CEvtMgmtUiLbtAdapter::UpdateTriggerL() - %d", aTriggerId ) |
|
278 EVTUIDEBUG1("Event State = %d", aState ); |
|
279 |
|
280 if ( IsActive() ) |
|
281 { |
|
282 User::Leave( KErrInUse ); |
|
283 } |
|
284 |
|
285 //Set state of the machine |
|
286 iState = ELbtAdapterUpdate; |
|
287 |
|
288 // Create the Condition Area object depending on the trigger type. |
|
289 CLbtTriggerConditionArea* cond = GetConditionAreaL(aCenter, aRadiusInKiloMeters ); |
|
290 CleanupStack::PushL(cond); |
|
291 |
|
292 //create startup trigger object |
|
293 if(iTrigger) |
|
294 { |
|
295 delete iTrigger; |
|
296 iTrigger = NULL; |
|
297 } |
|
298 iTrigger = CLbtStartupTrigger::NewL(); |
|
299 iTrigger->SetId( aTriggerId ); |
|
300 iTrigger->SetCondition(cond); |
|
301 CleanupStack::Pop(cond); //ownership is transferred to trigger. |
|
302 iTrigger->SetState(aState); |
|
303 |
|
304 // Create the Trigger update attributes mask. |
|
305 TLbtTriggerAttributeFieldsMask fieldsMask; |
|
306 fieldsMask = CLbtTriggerEntry::EAttributeState | CLbtTriggerEntry::EAttributeCondition; |
|
307 |
|
308 SetActive(); |
|
309 iStatus = KRequestPending; |
|
310 |
|
311 EVTUIDEBUG1("Before UpdateTriggerL - %d", aTriggerId ); |
|
312 iLbt.UpdateTrigger( *iTrigger, fieldsMask, ELbtFalse, iStatus); |
|
313 EVTUIDEBUG1("After UpdateTriggerL - %d", aTriggerId ); |
|
314 |
|
315 EVTUIDEBUG1("- CEvtMgmtUiLbtAdapter::UpdateTriggerL() - %d", aTriggerId ); |
|
316 } |
|
317 |
|
318 // --------------------------------------------------------------------------- |
|
319 // CEvtMgmtUiLbtAdapter::SetTriggerStateL |
|
320 // --------------------------------------------------------------------------- |
|
321 // |
|
322 void CEvtMgmtUiLbtAdapter::SetTriggerStateL( TLbtTriggerId aTriggerId, |
|
323 CLbtTriggerEntry::TLbtTriggerState aState ) |
|
324 { |
|
325 EVTUIDEBUG1("+ CEvtMgmtUiLbtAdapter::SetTriggerStateL() - %d", aTriggerId ); |
|
326 EVTUIDEBUG2("SetTriggerState for Triggerid =%d eventstatus = %d ", aTriggerId, aState); |
|
327 |
|
328 //Set state of the machine |
|
329 iState = ELbtAdapterSetTriggerState; |
|
330 iTriggerId = aTriggerId; |
|
331 |
|
332 EVTUIDEBUG1("Before SetTriggerStateL - %d", aTriggerId ); |
|
333 iLbt.SetTriggerStateL(aTriggerId, aState, ELbtFalse ); |
|
334 EVTUIDEBUG1("After SetTriggerStateL - %d", aTriggerId ); |
|
335 |
|
336 EVTUIDEBUG1("- CEvtMgmtUiLbtAdapter::SetTriggerStateL() - %d", aTriggerId ); |
|
337 } |
|
338 |
|
339 // --------------------------------------------------------------------------- |
|
340 // CEvtMgmtUiLbtAdapter::SetTriggersStateL |
|
341 // --------------------------------------------------------------------------- |
|
342 // |
|
343 void CEvtMgmtUiLbtAdapter::SetTriggersStateL( const RArray<TLbtTriggerId>& aTriggerIdList, |
|
344 CLbtTriggerEntry::TLbtTriggerState aState ) |
|
345 { |
|
346 EVTUIDEBUG1("+ CEvtMgmtUiLbtAdapter::SetTriggersStateL() Count - %d", aTriggerIdList.Count() ); |
|
347 |
|
348 if ( IsActive() ) |
|
349 { |
|
350 User::Leave( KErrInUse ); |
|
351 } |
|
352 |
|
353 //Set state of the machine |
|
354 iState = ELbtAdapterSetTriggersState; |
|
355 |
|
356 if( iAttrFilter ) |
|
357 { |
|
358 delete iAttrFilter; |
|
359 iAttrFilter = NULL; |
|
360 } |
|
361 |
|
362 // Create an attribute filter to include all the trigger ids |
|
363 iAttrFilter = CLbtTriggerFilterByAttribute::NewL(); |
|
364 |
|
365 for( TInt index=0; index<aTriggerIdList.Count(); index++ ) |
|
366 { |
|
367 iAttrFilter->AddTriggerIdL(aTriggerIdList[index]); |
|
368 } |
|
369 |
|
370 SetActive(); |
|
371 iStatus = KRequestPending; |
|
372 iLbt.SetTriggersState( iStatus, aState, ELbtFalse, iAttrFilter ); |
|
373 |
|
374 EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::SetTriggersState()"); |
|
375 } |
|
376 |
|
377 // --------------------------------------------------------------------------- |
|
378 // CEvtMgmtUiLbtAdapter::DeleteTriggerL |
|
379 // --------------------------------------------------------------------------- |
|
380 // |
|
381 void CEvtMgmtUiLbtAdapter::DeleteTriggerL( TLbtTriggerId aTriggerId ) |
|
382 { |
|
383 EVTUIDEBUG1("+ CEvtMgmtUiLbtAdapter::DeleteTriggerL() TriggerID = %d" , aTriggerId); |
|
384 EVTUIDEBUG2("SetTriggerState for Triggerid =%d eventstatus = %d ", aTriggerId, iState); |
|
385 |
|
386 //set state |
|
387 iState = ELbtAdapterDelete; |
|
388 |
|
389 //Set it to member variable so that it can be used in RunL to delete trigger |
|
390 iTriggerId = aTriggerId; |
|
391 |
|
392 EVTUIDEBUG1("Before DeleteTriggerL - %d", aTriggerId ); |
|
393 iLbt.DeleteTriggerL( iTriggerId ); |
|
394 EVTUIDEBUG1("After DeleteTriggerL - %d", aTriggerId ); |
|
395 |
|
396 EVTUIDEBUG1("- CEvtMgmtUiLbtAdapter::DeleteTriggerL() TriggerID = %d" , aTriggerId); |
|
397 } |
|
398 |
|
399 // --------------------------------------------------------------------------- |
|
400 // CEvtMgmtUiLbtAdapter::DeleteTriggersL |
|
401 // --------------------------------------------------------------------------- |
|
402 // |
|
403 void CEvtMgmtUiLbtAdapter::DeleteTriggersL( const RArray<TLbtTriggerId>& aTriggerIdList ) |
|
404 { |
|
405 EVTUIDEBUG1("+ CEvtMgmtUiLbtAdapter::DeleteTriggersL() Count - %d", aTriggerIdList.Count() ); |
|
406 |
|
407 if ( IsActive() ) |
|
408 { |
|
409 User::Leave( KErrInUse ); |
|
410 } |
|
411 iState = ELbtAdapterDeleteTriggers; |
|
412 SetActive(); |
|
413 iStatus = KRequestPending; |
|
414 |
|
415 iLbt.DeleteTriggers( aTriggerIdList, iStatus ); |
|
416 |
|
417 EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::DeleteTriggersL()"); |
|
418 } |
|
419 |
|
420 // --------------------------------------------------------------------------- |
|
421 // CEvtMgmtUiLbtAdapter::GetTriggerStateL |
|
422 // --------------------------------------------------------------------------- |
|
423 // |
|
424 CLbtTriggerEntry::TLbtTriggerState CEvtMgmtUiLbtAdapter::GetTriggerStateL( TLbtTriggerId aTriggerId ) |
|
425 { |
|
426 EVTUIDEBUG1("+ CEvtMgmtUiLbtAdapter::GetTriggerStateL = %d ", aTriggerId); |
|
427 CLbtTriggerEntry::TLbtTriggerState state = CLbtTriggerEntry::EStateDisabled; |
|
428 |
|
429 EVTUIDEBUG1("Before GetTriggerLC - %d", aTriggerId ); |
|
430 CLbtTriggerInfo * info = iLbt.GetTriggerLC( aTriggerId ); |
|
431 EVTUIDEBUG1("After GetTriggerLC - %d", aTriggerId ); |
|
432 |
|
433 if(info) |
|
434 { |
|
435 CLbtTriggerEntry* entry = info->TriggerEntry(); |
|
436 state = entry->State(); |
|
437 CleanupStack::PopAndDestroy(info); |
|
438 } |
|
439 |
|
440 EVTUIDEBUG1("- CEvtMgmtUiLbtAdapter::GetTriggerStateL = %d ", aTriggerId); |
|
441 |
|
442 return state; |
|
443 } |
|
444 |
|
445 // --------------------------------------------------------------------------- |
|
446 // CEvtMgmtUiLbtAdapter::CancelRequest() |
|
447 // --------------------------------------------------------------------------- |
|
448 // |
|
449 void CEvtMgmtUiLbtAdapter::CancelRequest() |
|
450 { |
|
451 EVTUIDEBUG("+ CEvtMgmtUiLbtAdapter::CancelRequest()" ); |
|
452 Cancel(); |
|
453 if(iStatus.Int()==KErrCancel) |
|
454 { |
|
455 iObserver.NotifyLbtError(KErrCancel, iState); |
|
456 } |
|
457 EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::CancelRequest()" ); |
|
458 } |
|
459 |
|
460 // --------------------------------------------------------------------------- |
|
461 // CEvtMgmtUiLbtAdapter::RetrieveLocationL |
|
462 // --------------------------------------------------------------------------- |
|
463 // |
|
464 void CEvtMgmtUiLbtAdapter::RetrieveLocationL( TLbtTriggerId aTriggerId, TCoordinate& aCenter ) |
|
465 { |
|
466 EVTUIDEBUG1("+ CEvtMgmtUiLbtAdapter::RetrieveLocationL() TriggerId = %d ", aTriggerId ); |
|
467 |
|
468 EVTUIDEBUG1("Before GetTriggerLC - %d", aTriggerId ); |
|
469 CLbtTriggerInfo * info = iLbt.GetTriggerLC( aTriggerId ); |
|
470 EVTUIDEBUG1("After GetTriggerLC - %d", aTriggerId ); |
|
471 |
|
472 if(info) |
|
473 { |
|
474 CLbtTriggerEntry* entry = info->TriggerEntry(); |
|
475 CLbtTriggerConditionArea* triggArea = static_cast< CLbtTriggerConditionArea*>( entry->GetCondition()); |
|
476 CLbtGeoAreaBase* triggGeoArea = static_cast< CLbtGeoAreaBase*>( triggArea->TriggerArea()); |
|
477 if( triggGeoArea->Type() == CLbtGeoAreaBase::ECircle) |
|
478 { |
|
479 CLbtGeoCircle* loc = static_cast<CLbtGeoCircle*>( triggArea->TriggerArea() ); |
|
480 aCenter = loc->Center(); |
|
481 EVTUIDEBUG1("GetTriggerLC: Latitude = %f", aCenter.Latitude() ); |
|
482 EVTUIDEBUG1("GetTriggerLC: Longitude = %f", aCenter.Longitude() ); |
|
483 } |
|
484 else |
|
485 { |
|
486 User::Leave(KErrNotSupported); |
|
487 } |
|
488 CleanupStack::PopAndDestroy(); //info |
|
489 } |
|
490 |
|
491 EVTUIDEBUG1("- CEvtMgmtUiLbtAdapter::RetrieveLocationL() TriggerId = %d ", aTriggerId ); |
|
492 } |
|
493 |
|
494 // --------------------------------------------------------------------------- |
|
495 // CEvtMgmtUiLbtAdapter::GetFiredTriggerAccuracyL |
|
496 // --------------------------------------------------------------------------- |
|
497 // |
|
498 void CEvtMgmtUiLbtAdapter::GetFiredTriggerAccuracyL( TLbtTriggerId aTriggerId, TReal32& aDistance ) |
|
499 { |
|
500 EVTUIDEBUG1("+ CEvtMgmtUiLbtAdapter::GetFiredTriggerAccuracyL() TriggerId = %d ", aTriggerId ); |
|
501 |
|
502 EVTUIDEBUG1("Before GetTriggerLC - %d", aTriggerId ); |
|
503 CLbtTriggerInfo * info = iLbt.GetTriggerLC( aTriggerId ); |
|
504 EVTUIDEBUG1("After GetTriggerLC - %d", aTriggerId ); |
|
505 |
|
506 if(info) |
|
507 { |
|
508 CLbtTriggerEntry* entry = info->TriggerEntry(); |
|
509 CLbtTriggerConditionArea* triggArea = static_cast< CLbtTriggerConditionArea*>( entry->GetCondition()); |
|
510 CLbtGeoAreaBase* triggGeoArea = static_cast< CLbtGeoAreaBase*>( triggArea->TriggerArea()); |
|
511 if( triggGeoArea->Type() == CLbtGeoAreaBase::ECircle) |
|
512 { |
|
513 TLbtTriggerDynamicInfo* dynInfo = info->DynInfo(); |
|
514 CLbtGeoCircle* circle = static_cast<CLbtGeoCircle*> (triggGeoArea); |
|
515 TCoordinate cord = circle->Center(); |
|
516 cord.Distance(dynInfo->iFiredLocality, aDistance); |
|
517 aDistance = aDistance - circle->Radius(); |
|
518 aDistance = Abs(aDistance); |
|
519 } |
|
520 EVTUIDEBUG1( "Fired Trigger Accuracy in Distance = %f", aDistance ); |
|
521 CleanupStack::PopAndDestroy(); //info |
|
522 } |
|
523 |
|
524 EVTUIDEBUG1("- CEvtMgmtUiLbtAdapter::GetFiredTriggerAccuracyL() TriggerId = %d ", aTriggerId ); |
|
525 } |
|
526 |
|
527 // --------------------------------------------------------------------------- |
|
528 // CEvtMgmtUiLbtAdapter::RunError |
|
529 // --------------------------------------------------------------------------- |
|
530 // |
|
531 TInt CEvtMgmtUiLbtAdapter::RunError( TInt aError ) |
|
532 { |
|
533 EVTUIDEBUG("+ CEvtMgmtUiLbtAdapter::RunError()" ); |
|
534 if( aError != KErrNone ) |
|
535 { |
|
536 //if error, notify it to the engine. |
|
537 EVTUIDEBUG1("CEvtMgmtUiLbtAdapter RunError error = %d", aError ); |
|
538 iObserver.NotifyLbtError( aError, iState); |
|
539 } |
|
540 EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::RunError()" ); |
|
541 return KErrNone; |
|
542 } |
|
543 |
|
544 // --------------------------------------------------------------------------- |
|
545 // CEvtMgmtUiLbtAdapter ::RunL() |
|
546 // Inherited from CActive |
|
547 // --------------------------------------------------------------------------- |
|
548 // |
|
549 void CEvtMgmtUiLbtAdapter::RunL() |
|
550 { |
|
551 EVTUIDEBUG("+ CEvtMgmtUiLbtAdapter::RunL()" ); |
|
552 |
|
553 if(iStatus.Int()!=KErrNone) |
|
554 { |
|
555 EVTUIDEBUG1("- CEvtMgmtUiLbtAdapter::RunL() error =%d", iStatus.Int()); |
|
556 User::Leave( iStatus.Int() ); |
|
557 return; |
|
558 } |
|
559 |
|
560 EVTUIDEBUG("LbtAdapter error = 0" ); |
|
561 |
|
562 switch(iState) |
|
563 { |
|
564 case ELbtAdapterCreate: |
|
565 { |
|
566 iState = ELbtAdapterCreate; |
|
567 |
|
568 //delete trigger object when trigger is successfuly created |
|
569 if(iTrigger) |
|
570 { |
|
571 EVTUIDEBUG("Deleting trigger entry after Create" ); |
|
572 delete iTrigger; |
|
573 iTrigger = NULL; |
|
574 } |
|
575 break; |
|
576 } |
|
577 case ELbtAdapterUpdate: |
|
578 { |
|
579 //delete trigger object when trigger is successfuly updated |
|
580 if(iTrigger) |
|
581 { |
|
582 EVTUIDEBUG("Deleting trigger entry after Update" ); |
|
583 delete iTrigger; |
|
584 iTrigger = NULL; |
|
585 } |
|
586 break; |
|
587 } |
|
588 case ELbtAdapterDeleteTriggers: |
|
589 { |
|
590 EVTUIDEBUG("Triggers are deleted successfully"); |
|
591 } |
|
592 break; |
|
593 case ELbtAdapterSetTriggersState: |
|
594 { |
|
595 if(iAttrFilter) |
|
596 { |
|
597 delete iAttrFilter; |
|
598 iAttrFilter = NULL; |
|
599 } |
|
600 EVTUIDEBUG("State of triggers are changed successfully"); |
|
601 break; |
|
602 } |
|
603 default: |
|
604 { |
|
605 break; |
|
606 } |
|
607 } |
|
608 //Notify engine about lbt changes |
|
609 iObserver.NotifyLbtChangeL(iTriggerId, iState); |
|
610 |
|
611 EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::RunL()" ); |
|
612 } |
|
613 |
|
614 // --------------------------------------------------------------------------- |
|
615 // CEvtMgmtUiLbtAdapter ::DoCancel() |
|
616 // Inherited from CActive |
|
617 // --------------------------------------------------------------------------- |
|
618 // |
|
619 void CEvtMgmtUiLbtAdapter::DoCancel() |
|
620 { |
|
621 EVTUIDEBUG("+ CEvtMgmtUiLbtAdapter::DoCancel()" ); |
|
622 iLbt.CancelAll(); |
|
623 //iObserver.NotifyLbtError(KErrCancel, iState); |
|
624 EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::DoCancel()" ); |
|
625 } |
|
626 |
|
627 // --------------------------------------------------------------------------- |
|
628 // CEvtMgmtUiLbtAdapter::GetTriggerListL |
|
629 // --------------------------------------------------------------------------- |
|
630 // |
|
631 void CEvtMgmtUiLbtAdapter::GetTriggerListL( RArray<TLbtTriggerId>& aTriggerList, |
|
632 CLbtTriggerEntry::TLbtTriggerState aState ) |
|
633 { |
|
634 EVTUIDEBUG("+ CEvtMgmtUiLbtAdapter::GetTriggerListL()" ); |
|
635 CLbtListTriggerOptions *listOptions = CLbtListTriggerOptions::NewL(); |
|
636 CleanupStack::PushL(listOptions); |
|
637 |
|
638 CLbtTriggerFilterByAttribute* filter = CLbtTriggerFilterByAttribute::NewLC(); |
|
639 |
|
640 // List only valid triggers and whose state is aState. |
|
641 filter->AddTriggerStateL( aState ); |
|
642 filter->AddTriggerValidityL( TLbtTriggerDynamicInfo::EValid ); |
|
643 |
|
644 listOptions->SetFilter( filter ); |
|
645 |
|
646 EVTUIDEBUG("Before ListTriggerIdsL"); |
|
647 iLbt.ListTriggerIdsL( aTriggerList, listOptions ); |
|
648 EVTUIDEBUG("After ListTriggerIdsL"); |
|
649 |
|
650 CleanupStack::PopAndDestroy(2);// filter, listOptions |
|
651 EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::GetTriggerListL()" ); |
|
652 } |
|
653 |
|
654 // --------------------------------------------------------------------------- |
|
655 // CEvtMgmtUiLbtAdapter::GetTriggerListL |
|
656 // --------------------------------------------------------------------------- |
|
657 // |
|
658 void CEvtMgmtUiLbtAdapter::GetTriggerListL( RArray<TLbtTriggerId>& aTriggerList, |
|
659 TLbtTriggerDynamicInfo::TLbtTriggerValidity aValid ) |
|
660 { |
|
661 EVTUIDEBUG("+ CEvtMgmtUiLbtAdapter::GetTriggerListL()" ); |
|
662 CLbtListTriggerOptions *listOptions = CLbtListTriggerOptions::NewL(); |
|
663 CleanupStack::PushL(listOptions); |
|
664 |
|
665 CLbtTriggerFilterByAttribute* filter = CLbtTriggerFilterByAttribute::NewLC(); |
|
666 |
|
667 // List only triggers of status aValid |
|
668 filter->AddTriggerValidityL( aValid ); |
|
669 |
|
670 listOptions->SetFilter( filter ); |
|
671 |
|
672 EVTUIDEBUG("Before ListTriggerIdsL"); |
|
673 iLbt.ListTriggerIdsL( aTriggerList, listOptions ); |
|
674 EVTUIDEBUG("After ListTriggerIdsL"); |
|
675 |
|
676 CleanupStack::PopAndDestroy(2);// filter, listOptions |
|
677 EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::GetTriggerListL()" ); |
|
678 } |
|
679 |
|
680 // --------------------------------------------------------------------------- |
|
681 // CEvtMgmtUiLbtAdapter::TriggerChangedL |
|
682 // --------------------------------------------------------------------------- |
|
683 // |
|
684 void CEvtMgmtUiLbtAdapter::TriggerChangedL( |
|
685 const TLbtTriggerChangeEvent &aEvent) |
|
686 { |
|
687 EVTUIDEBUG("+ CEvtMgmtUiLbtAdapter::TriggerChangedL()" ); |
|
688 switch( aEvent.iEventType ) |
|
689 { |
|
690 case ELbtTriggerChangeEventMultiple: |
|
691 iObserver.NotifyTriggerChangeL(aEvent.iTriggerId, MEvtMgmtUiLbtObserver::ETriggerMultipleModified); |
|
692 break; |
|
693 case ELbtTriggerChangeEventDeleted: |
|
694 iObserver.NotifyTriggerChangeL(aEvent.iTriggerId, MEvtMgmtUiLbtObserver::ETriggerDeleted); |
|
695 break; |
|
696 case ELbtTriggerChangeEventUpdated: |
|
697 iObserver.NotifyTriggerChangeL(aEvent.iTriggerId, MEvtMgmtUiLbtObserver::ETriggerModified); |
|
698 break; |
|
699 default: |
|
700 break; |
|
701 } |
|
702 EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::TriggerChangedL()" ); |
|
703 } |
|
704 |
|
705 // --------------------------------------------------------------------------- |
|
706 // CEvtMgmtUiLbtAdapter::GetFiredPositionL |
|
707 // --------------------------------------------------------------------------- |
|
708 // |
|
709 TBool CEvtMgmtUiLbtAdapter::GetFiredPositionL( TPosition& aPosition, |
|
710 const TLbtTriggerId aTriggerId ) |
|
711 { |
|
712 EVTUIDEBUG1("+ CEvtMgmtUiLbtAdapter::GetFiredPositionL() - %d", aTriggerId ); |
|
713 RArray<TLbtTriggerFireInfo> aTriggerInfoList; |
|
714 |
|
715 EVTUIDEBUG1("Before GetFiredTriggersL - %d", aTriggerId ); |
|
716 iLbt.GetFiredTriggersL( aTriggerInfoList ); |
|
717 EVTUIDEBUG1("After GetFiredTriggersL - %d", aTriggerId ); |
|
718 |
|
719 TInt count = aTriggerInfoList.Count(); |
|
720 TBool found(EFalse); |
|
721 |
|
722 for( TInt i=0; i<count; i++ ) |
|
723 { |
|
724 if ( aTriggerInfoList[i].iTriggerId == aTriggerId ) |
|
725 { |
|
726 if(aTriggerInfoList[i].iAreaType == CLbtGeoAreaBase::ECircle) |
|
727 { |
|
728 found = ETrue; |
|
729 aTriggerInfoList[i].iFiredPositionInfo.GetPosition( aPosition ); |
|
730 } |
|
731 } |
|
732 } |
|
733 aTriggerInfoList.Close(); |
|
734 EVTUIDEBUG1("- CEvtMgmtUiLbtAdapter::GetFiredPositionL() - %d", aTriggerId ); |
|
735 return found; |
|
736 } |
|
737 //end of file |
|