|
1 /* |
|
2 * Copyright (c) 2002-2005 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: SUPL protocol manager implementation.i.e. OMA SUPL implementation |
|
15 * |
|
16 */ |
|
17 |
|
18 |
|
19 |
|
20 #include <centralrepository.h> |
|
21 #include <commdb.h> |
|
22 #include <etelmm.h> |
|
23 #include <ecom/ecom.h> |
|
24 #include <in_sock.h> |
|
25 #include <bautils.h> |
|
26 #include <flogger.h> |
|
27 #include <CoreApplicationUIsSDKCRKeys.h> |
|
28 |
|
29 #include "epos_comasuplasnmessagebase.h" |
|
30 #include "epos_comasuplsessionid.h" |
|
31 #include "lbs/epos_comasuplposhandlerbase.h" |
|
32 #include "epos_suplconstants.h" |
|
33 #include "epos_csuplsettings.h" |
|
34 #include "epos_comasupletelnotifier.h" |
|
35 #include "epos_csuplsettingsinternal.h" |
|
36 #include "epos_suplterminalconstants.h" |
|
37 |
|
38 #include "epos_comasuplprotocolmanager1.h" |
|
39 #include "epos_csuplcommunicationmanager.h" |
|
40 #include "epos_comasuplcompleteselfrequestor.h" |
|
41 #include "epos_comasuplecomeventwatcher.h" |
|
42 #include "epos_comasuplsettings.h" |
|
43 #include "epos_omasuplconstants.h" |
|
44 #include "epos_omasuplconfigurationkeys.h" |
|
45 #include "epos_comasupltrace.h" |
|
46 #include "epos_comasupltimeouttimer.h" |
|
47 #include "epos_omasuplconstants.h" |
|
48 #include "epos_comasuplcommonconfig.h" |
|
49 |
|
50 _LIT(KTraceFileName,"SUPL_OMA_PH::EPos_COMASUPLProtocolManager1.cpp"); |
|
51 |
|
52 const TInt KMaxIMSILen = 20; |
|
53 const TInt KMaxDelay = 128; |
|
54 const TInt KDefaultHorizontalAccuracy = 0; |
|
55 const TInt KQueuedBufferTimeout = 11; |
|
56 |
|
57 |
|
58 // ----------------------------------------------------------------------------- |
|
59 // ResetAndDestroy() |
|
60 // Resets & destroys array if leave occurs |
|
61 // ----------------------------------------------------------------------------- |
|
62 void ResetAndDestroy(TAny* aArray) |
|
63 { |
|
64 ((RImplInfoPtrArray*)aArray)->ResetAndDestroy(); |
|
65 } |
|
66 |
|
67 // ----------------------------------------------------------------------------- |
|
68 // FindNearestN |
|
69 // ----------------------------------------------------------------------------- |
|
70 TInt FindNearestN(TInt n) |
|
71 { |
|
72 TInt count = 0; |
|
73 TInt originalNumber = n; |
|
74 while(n) |
|
75 { |
|
76 n = n >> 1; |
|
77 count++; |
|
78 } |
|
79 |
|
80 TInt previousNumber = count - 1; |
|
81 TReal min,max; |
|
82 Math::Pow(min,2,previousNumber); |
|
83 Math::Pow(max,2,count); |
|
84 TInt avg = (min + max ) / 2; |
|
85 if (avg < originalNumber) |
|
86 return max; |
|
87 else |
|
88 return min; |
|
89 } |
|
90 |
|
91 // ============================ MEMBER FUNCTIONS =============================== |
|
92 // Create instance of concrete ECOM interface implementation |
|
93 EXPORT_C COMASUPLProtocolManager1* COMASUPLProtocolManager1::NewL() |
|
94 { |
|
95 COMASUPLProtocolManager1* self = new(ELeave) COMASUPLProtocolManager1(); |
|
96 CleanupStack::PushL(self); |
|
97 self->ConstructL(); |
|
98 CleanupStack::Pop(self); |
|
99 return self; |
|
100 } |
|
101 |
|
102 // Destructor. |
|
103 EXPORT_C COMASUPLProtocolManager1::~COMASUPLProtocolManager1() |
|
104 { |
|
105 if(iSettingsLauncher) |
|
106 { |
|
107 iSettingsLauncher->CancelLaunch(); |
|
108 } |
|
109 iSuplSettings->SetUIActive( EFalse ); |
|
110 |
|
111 DeleteAllSessions(); |
|
112 iSuplSessions.Reset(); |
|
113 iSuplSessions.Close(); |
|
114 |
|
115 iTelServer.UnloadPhoneModule(iTsyName); |
|
116 |
|
117 |
|
118 iQueuedPacket.Close(); |
|
119 |
|
120 delete iTimer; |
|
121 |
|
122 if(iSuplStorageSettings) |
|
123 iSuplStorageSettings->RemoveObserver(); |
|
124 |
|
125 delete iSuplStorageSettings; |
|
126 |
|
127 |
|
128 delete iSuplEcomEventWatcher; |
|
129 |
|
130 delete iSettingsLauncher; |
|
131 delete iNotifier; |
|
132 iMobilePhone.Close(); |
|
133 iTelServer.Close(); |
|
134 iIMSI.Close(); |
|
135 iTrace->Trace(_L("At the End of COMASUPLProtocolManager1::~COMASUPLProtocolManager1"), |
|
136 KTraceFileName, __LINE__); |
|
137 iUIRequestArray.Close(); |
|
138 |
|
139 delete iOMASuplAsnHandlerBaseImpl; |
|
140 delete iTrace; |
|
141 } |
|
142 |
|
143 // Constructor |
|
144 COMASUPLProtocolManager1::COMASUPLProtocolManager1() : iRunningSessionCount(0), |
|
145 iSessnUIObserver(NULL), |
|
146 iDeInitDone(EFalse), |
|
147 iNotifyStarted(EFalse), |
|
148 iTimeOutDialogPresent(EFalse) |
|
149 { |
|
150 // no implementation required |
|
151 } |
|
152 |
|
153 // Second phase construction. |
|
154 void COMASUPLProtocolManager1::ConstructL() |
|
155 { |
|
156 iTrace = COMASuplTrace::NewL(); |
|
157 iTrace->Trace(_L("COMASUPLProtocolManager1::ConstructL"), KTraceFileName, __LINE__); |
|
158 |
|
159 TRAPD(err,iOMASuplAsnHandlerBaseImpl = COMASuplAsnHandlerBase::NewL(1);) |
|
160 TBuf<64> buf(_L("ASN Plugin 1.0 loaded with error : ")); |
|
161 buf.AppendNum(err); |
|
162 iTrace->Trace(buf,KTraceFileName, __LINE__); |
|
163 User::LeaveIfError(err); |
|
164 |
|
165 iSuplStorageSettings = CSuplSettingsInternal::NewL(); |
|
166 iSuplStorageSettings->SetObserverL(*this); |
|
167 |
|
168 iSettingsLauncher = COMASuplSettingsLauncher::NewL( *this ); |
|
169 |
|
170 iIMSI.CreateL( KMaxIMSILen ); |
|
171 iIsPreviouslyDecodingFailed = EFalse; |
|
172 iTimer = COMASuplTimeoutTimer::NewL(*this); |
|
173 } |
|
174 |
|
175 // ----------------------------------------------------------------------------- |
|
176 // COMASUPLProtocolManager1::CreateNewSessionL, |
|
177 // Creates new session |
|
178 // it transfers ownership to callee |
|
179 // |
|
180 // ----------------------------------------------------------------------------- |
|
181 // |
|
182 EXPORT_C CSuplSessionBase* COMASUPLProtocolManager1::CreateNewSessionL( |
|
183 CSUPLProtocolManagerBase::TSuplReqType aRequestType, |
|
184 TInt aIpcSessionId, |
|
185 RSuplTerminalSubSession::TSuplServiceType aSuplService) |
|
186 { |
|
187 |
|
188 // Map the type before creating the session object |
|
189 COMASuplSession::TOMASuplReqType requestType = COMASuplSession::ESUPL_TERMINAL; |
|
190 switch(aRequestType) |
|
191 { |
|
192 case CSUPLProtocolManagerBase::ENetwork: |
|
193 requestType = COMASuplSession::ESUPL_NETWORK; |
|
194 break; |
|
195 case CSUPLProtocolManagerBase::ETerminal: |
|
196 requestType = COMASuplSession::ESUPL_TERMINAL; |
|
197 break; |
|
198 default: |
|
199 requestType = COMASuplSession::ESUPL_TERMINAL; |
|
200 break; |
|
201 } |
|
202 return CreateNewSessionL(requestType, aIpcSessionId,aSuplService); |
|
203 } |
|
204 |
|
205 // ----------------------------------------------------------------------------- |
|
206 // COMASUPLProtocolManager1::CreateNewSessionL |
|
207 // An overloaded CreateNewSession to take care of Invalid session ID |
|
208 // |
|
209 // ----------------------------------------------------------------------------- |
|
210 // |
|
211 |
|
212 CSuplSessionBase* COMASUPLProtocolManager1::CreateNewSessionL( |
|
213 COMASuplSession::TOMASuplReqType aRequestType, |
|
214 TInt aIpcSessionId, |
|
215 RSuplTerminalSubSession::TSuplServiceType /*aSuplService*/) |
|
216 { |
|
217 |
|
218 iTrace->Trace(_L("Creating New OMA SUPL Session"), KTraceFileName, __LINE__); |
|
219 CSuplSessionBase* SuplSession = COMASuplSession::NewL(*iCommManager, iMobilePhone, iSuplSettings, |
|
220 iSuplStorageSettings, aRequestType, *this, iPosHandler, iIMSI, |
|
221 *this, aIpcSessionId,iOMASuplAsnHandlerBaseImpl); |
|
222 User::LeaveIfError(iSuplSessions.Append(SuplSession)); |
|
223 return SuplSession; |
|
224 } |
|
225 |
|
226 // ----------------------------------------------------------------------------- |
|
227 // COMASUPLProtocolManager1::InitializeL |
|
228 // Does the connect to ETel. |
|
229 // Intilize POS if present |
|
230 // |
|
231 // ----------------------------------------------------------------------------- |
|
232 // |
|
233 EXPORT_C void COMASUPLProtocolManager1::InitializeL( |
|
234 CSuplCommunicationManager* aCommManager, |
|
235 TRequestStatus& /*aInitilizationRequestStatus*/ ) |
|
236 { |
|
237 iTrace->Trace(_L("COMASUPLProtocolManager1::InitializeL"), KTraceFileName, __LINE__); |
|
238 |
|
239 iCommManager = aCommManager; |
|
240 |
|
241 //Connect to ETel |
|
242 User::LeaveIfError(ConnectToETelL()); |
|
243 |
|
244 ReadSuplUsage(); |
|
245 |
|
246 if(iSuplEcomEventWatcher) |
|
247 { |
|
248 iTrace->Trace(_L("NotifyOnPlugInUnInstallation starting"), KTraceFileName, __LINE__); |
|
249 iSuplEcomEventWatcher->NotifyOnPlugInUnInstallation(); |
|
250 } |
|
251 iNotifier = COMASuplETelNotifier::NewL(*this,iMobilePhone); |
|
252 iTrace->Trace(_L("ETEL Notifier created"), KTraceFileName, __LINE__); |
|
253 iTrace->Trace(_L("InitializeL completed"), KTraceFileName, __LINE__); |
|
254 } |
|
255 |
|
256 // ----------------------------------------------------------------------------- |
|
257 // COMASUPLProtocolManager1::InitializeL |
|
258 // Cancel Initilization of Protocol manager |
|
259 // |
|
260 // ----------------------------------------------------------------------------- |
|
261 // |
|
262 EXPORT_C void COMASUPLProtocolManager1::CancelInitialize() |
|
263 { |
|
264 } |
|
265 |
|
266 // ----------------------------------------------------------------------------- |
|
267 // COMASUPLProtocolManager1::RunSessionL |
|
268 // Starts the SUPL Sesssion for Terminal Initiated Location Request |
|
269 // |
|
270 // ----------------------------------------------------------------------------- |
|
271 // |
|
272 EXPORT_C void COMASUPLProtocolManager1::RunSessionL(CSuplSessionBase *const aSuplSession, |
|
273 TRequestStatus& aStatus, |
|
274 const TDesC& aHslpAddress, |
|
275 TBool aFallBack, |
|
276 TBool aFirstReq, |
|
277 TInt aAllowedCapabilities, |
|
278 TInt aRequestID) |
|
279 { |
|
280 iTrace->Trace(_L("COMASUPLProtocolManager1::RunSessionL"), KTraceFileName, __LINE__); |
|
281 TBuf<255> tempBuf; |
|
282 tempBuf.Append(_L("Server name in Protocol Handler is : ")); |
|
283 tempBuf.Append(aHslpAddress); |
|
284 |
|
285 iTrace->Trace(tempBuf, KTraceFileName, __LINE__); |
|
286 if (aFallBack) |
|
287 { |
|
288 tempBuf.Copy(_L("Fallback is set as TRUE.")); |
|
289 } |
|
290 else |
|
291 { |
|
292 tempBuf.Copy(_L("Fallback is set as False")); |
|
293 } |
|
294 iTrace->Trace(tempBuf, KTraceFileName, __LINE__); |
|
295 |
|
296 |
|
297 |
|
298 iTrace->Trace(_L("COMASUPLProtocolManager1::RunSessionL"), KTraceFileName, __LINE__); |
|
299 |
|
300 if ( iSuplSessions.Find(aSuplSession) == KErrNotFound ) |
|
301 { |
|
302 TRequestStatus *status = &aStatus; |
|
303 User::RequestComplete(status,KErrNotFound ); |
|
304 return; |
|
305 } |
|
306 |
|
307 CheckForSessionCount(); |
|
308 iRunningSessionCount++; |
|
309 |
|
310 COMASuplSession* OMASession = static_cast<COMASuplSession*>(aSuplSession); |
|
311 OMASession->SetConfigurationParameters(iUT1_StartTimer,iUT2_PosInitTimer, iUT3_PosTimer,iPrivacyTimer,iSETMode, |
|
312 iSuplUsage, iPersistFailTimer,iSuplInitTimeOut); |
|
313 OMASession->RunSuplSessionL(aStatus,aFirstReq, aHslpAddress, aFallBack, aAllowedCapabilities,iRunningSessionCount,aRequestID); |
|
314 } |
|
315 |
|
316 |
|
317 // ----------------------------------------------------------------------------- |
|
318 // COMASUPLProtocolManager1::RunSessionL |
|
319 // Starts the SUPL Sesssion for Terminal Initiated Location Request,with QoP support |
|
320 // |
|
321 // ----------------------------------------------------------------------------- |
|
322 // |
|
323 EXPORT_C void COMASUPLProtocolManager1::RunSessionL( |
|
324 CSuplSessionBase *const aSuplSession, |
|
325 TRequestStatus& aStatus, |
|
326 const TDesC& aHslpAddress, |
|
327 TBool aFallBack, |
|
328 TBool aFirstReq, |
|
329 TInt aAllowedCapabilities, |
|
330 TSuplTerminalQop& aQop, |
|
331 TInt aRequestID) |
|
332 { |
|
333 iTrace->Trace(_L("COMASUPLProtocolManager1::RunSessionL"), KTraceFileName, __LINE__); |
|
334 TBuf<255> tempBuf; |
|
335 tempBuf.Append(_L("Server name in Protocol Handler is : ")); |
|
336 tempBuf.Append(aHslpAddress); |
|
337 |
|
338 iTrace->Trace(tempBuf, KTraceFileName, __LINE__); |
|
339 if (aFallBack) |
|
340 { |
|
341 tempBuf.Copy(_L("Fallback is set as TRUE.")); |
|
342 } |
|
343 else |
|
344 { |
|
345 tempBuf.Copy(_L("Fallback is set as False")); |
|
346 } |
|
347 iTrace->Trace(tempBuf, KTraceFileName, __LINE__); |
|
348 |
|
349 |
|
350 |
|
351 iTrace->Trace(_L("COMASUPLProtocolManager1::RunSessionL"), KTraceFileName, __LINE__); |
|
352 |
|
353 if ( iSuplSessions.Find(aSuplSession) == KErrNotFound ) |
|
354 { |
|
355 TRequestStatus *status = &aStatus; |
|
356 User::RequestComplete(status,KErrNotFound ); |
|
357 return; |
|
358 } |
|
359 |
|
360 TReal32 horizonatalAccuracy; |
|
361 if(aQop.GetHorizontalAccuracy(horizonatalAccuracy) == KErrNotFound) |
|
362 { |
|
363 aQop.SetHorizontalAccuracy(KDefaultHorizontalAccuracy); |
|
364 } |
|
365 |
|
366 TReal32 verticalAccuracy; |
|
367 if(aQop.GetVerticalAccuracy(verticalAccuracy) == KErrNone) |
|
368 { |
|
369 if (verticalAccuracy > KOMAMaxVerticalAccuracy) |
|
370 aQop.SetVerticalAccuracy(KOMAMaxVerticalAccuracy); |
|
371 } |
|
372 |
|
373 TInt delay; |
|
374 |
|
375 if(aQop.GetDelay(delay) != KErrNotFound) |
|
376 { |
|
377 if(delay < 1 ) |
|
378 { |
|
379 TRequestStatus *status = &aStatus; |
|
380 User::RequestComplete(status,KErrArgument); |
|
381 return; |
|
382 } |
|
383 |
|
384 if( delay > 128 ) |
|
385 { |
|
386 aQop.SetDelay(KMaxDelay); |
|
387 } |
|
388 else |
|
389 { |
|
390 switch(delay) |
|
391 { |
|
392 case 1: |
|
393 case 2: |
|
394 case 4: |
|
395 case 8: |
|
396 case 16: |
|
397 case 32: |
|
398 case 64: |
|
399 case 128: |
|
400 break; |
|
401 default: |
|
402 { |
|
403 aQop.SetDelay(FindNearestN(delay)); |
|
404 } |
|
405 } |
|
406 } |
|
407 } |
|
408 |
|
409 CheckForSessionCount(); |
|
410 iRunningSessionCount++; |
|
411 |
|
412 COMASuplSession* OMASession = static_cast<COMASuplSession*>(aSuplSession); |
|
413 OMASession->SetConfigurationParameters(iUT1_StartTimer,iUT2_PosInitTimer, iUT3_PosTimer,iPrivacyTimer,iSETMode, |
|
414 iSuplUsage, iPersistFailTimer,iSuplInitTimeOut); |
|
415 OMASession->RunSuplSessionL(aStatus,aFirstReq, aHslpAddress, aFallBack, aAllowedCapabilities,iRunningSessionCount,aQop,aRequestID); |
|
416 } |
|
417 |
|
418 // ----------------------------------------------------------------------------- |
|
419 // COMASUPLProtocolManager1::CheckForSessionCount |
|
420 // Check for MAximum session count..if it reaches to MAX,it resets to zero |
|
421 // ----------------------------------------------------------------------------- |
|
422 // |
|
423 void COMASUPLProtocolManager1::CheckForSessionCount() |
|
424 { |
|
425 if (iRunningSessionCount == KMaxSessionCount) |
|
426 iRunningSessionCount = 0; |
|
427 } |
|
428 |
|
429 |
|
430 // ----------------------------------------------------------------------------- |
|
431 // COMASUPLProtocolManager1::ConnectToETelL |
|
432 // Connects to Telephony server & RMobilePhone |
|
433 // Returns System wide error,if any occurs |
|
434 // ----------------------------------------------------------------------------- |
|
435 // |
|
436 TInt COMASUPLProtocolManager1::ConnectToETelL() |
|
437 { |
|
438 iTrace->Trace(_L("Start of COMASUPLProtocolManager1::ConnectToETelL"), KTraceFileName, __LINE__); |
|
439 TInt err = iTelServer.Connect(); |
|
440 if(err != KErrNone) |
|
441 { |
|
442 TBuf<8> errrorCode; |
|
443 errrorCode.AppendNum(err); |
|
444 TBuf<64> msg(_L("Failed to Connect ETel with Reason Code ")); |
|
445 msg.Append(errrorCode); |
|
446 iTrace->Trace(msg,KTraceFileName, __LINE__); |
|
447 return err; |
|
448 } |
|
449 |
|
450 iTrace->Trace(_L("Opening CommsDatabase..."), KTraceFileName, __LINE__); |
|
451 CCommsDatabase* const db = CCommsDatabase::NewL(EDatabaseTypeUnspecified); |
|
452 CleanupStack::PushL(db); |
|
453 |
|
454 TUint32 modemId = 0; |
|
455 db->GetGlobalSettingL(TPtrC(MODEM_PHONE_SERVICES_SMS), modemId); |
|
456 iTrace->Trace(_L("Retriving TSY Name..."), KTraceFileName, __LINE__); |
|
457 CCommsDbTableView* const view = db->OpenViewMatchingUintLC(TPtrC(MODEM), TPtrC(COMMDB_ID), |
|
458 modemId); |
|
459 err = view->GotoFirstRecord(); |
|
460 if(err != KErrNone) |
|
461 { |
|
462 CleanupStack::PopAndDestroy(2,db); |
|
463 return err; |
|
464 } |
|
465 |
|
466 |
|
467 view->ReadTextL(TPtrC(MODEM_TSY_NAME), iTsyName); |
|
468 err = iTelServer.LoadPhoneModule(iTsyName); |
|
469 |
|
470 if(err != KErrNone) |
|
471 { |
|
472 CleanupStack::PopAndDestroy(2,db); |
|
473 return err; |
|
474 } |
|
475 |
|
476 |
|
477 // For the phone information |
|
478 RTelServer::TPhoneInfo info; |
|
479 |
|
480 iTelServer.GetPhoneInfo(0, info); |
|
481 iTrace->Trace(_L("Opening RMobilePhone..."), KTraceFileName, __LINE__); |
|
482 err = iMobilePhone.Open(iTelServer, info.iName); |
|
483 |
|
484 CleanupStack::PopAndDestroy(2,db); |
|
485 if(err != KErrNone) |
|
486 { |
|
487 return err; |
|
488 } |
|
489 |
|
490 iTrace->Trace(_L("End of COMASUPLProtocolManager1::ConnectToETelL"), KTraceFileName, __LINE__); |
|
491 return err; |
|
492 } |
|
493 |
|
494 // ----------------------------------------------------------------------------- |
|
495 // COMASUPLProtocolManager1::DestroySession |
|
496 // Deletes specified session & removes from array. |
|
497 // Returns System wide error,if any occurs |
|
498 // ----------------------------------------------------------------------------- |
|
499 // |
|
500 EXPORT_C TInt COMASUPLProtocolManager1::DestroySession(CSuplSessionBase* aSuplSession) |
|
501 { |
|
502 // Log |
|
503 iTrace->Trace(_L("COMASUPLProtocolManager1::DestroySession"), KTraceFileName, __LINE__); |
|
504 |
|
505 // Check if the Session is valid |
|
506 TInt index = iSuplSessions.Find(aSuplSession); |
|
507 |
|
508 if(KErrNotFound == index) |
|
509 { |
|
510 iTrace->Trace(_L("Cannot found Supl session."), KTraceFileName, __LINE__); |
|
511 return KErrArgument; |
|
512 } |
|
513 |
|
514 // Remove from Array |
|
515 iTrace->Trace(_L("COMASUPLProtocolManager1::DestroySession Remove Session"), KTraceFileName, __LINE__); |
|
516 iSuplSessions.Remove(index); |
|
517 |
|
518 //Last Session invoking Destroy |
|
519 iTrace->Trace(_L("COMASUPLProtocolManager1::DestroySession Destroy Session"), KTraceFileName, __LINE__); |
|
520 |
|
521 COMASuplSession* OMASession = static_cast<COMASuplSession*>(aSuplSession); |
|
522 if (OMASession->GetSessionUIFlag()) |
|
523 { |
|
524 OMASession->DestroySession(); |
|
525 iSessnUIObserver = NULL; |
|
526 } |
|
527 else |
|
528 OMASession->DestroySession(); |
|
529 |
|
530 return KErrNone; |
|
531 } |
|
532 |
|
533 // ----------------------------------------------------------------------------- |
|
534 // COMASUPLProtocolManager1::DeleteAllSessions |
|
535 // Delets all session & removes from array. |
|
536 // |
|
537 // ----------------------------------------------------------------------------- |
|
538 // |
|
539 void COMASUPLProtocolManager1::DeleteAllSessions() |
|
540 { |
|
541 iTrace->Trace(_L("COMASUPLProtocolManager1::DeleteAllSessions"), KTraceFileName, __LINE__); |
|
542 while(iSuplSessions.Count() > 0) |
|
543 { |
|
544 DestroySession(iSuplSessions[0]); |
|
545 } |
|
546 } |
|
547 |
|
548 // ----------------------------------------------------------------------------- |
|
549 // COMASUPLProtocolManager1::HandlePacket |
|
550 // Handles Supl packets , received from SLP |
|
551 // |
|
552 // ----------------------------------------------------------------------------- |
|
553 // |
|
554 EXPORT_C void COMASUPLProtocolManager1::HandlePacket(const TDesC8& aPacket, TUint aPortNum) |
|
555 { |
|
556 iTrace->Trace(_L("Start of COMASUPLProtocolManager1::HandlePacket"), KTraceFileName, __LINE__); |
|
557 |
|
558 TRAPD(err,HandleOMASuplPacketsL(aPacket, aPortNum)); |
|
559 |
|
560 if(err!= KErrNone) |
|
561 { |
|
562 ResetBufferingParameters(); |
|
563 TBuf<64> msg(_L("HandleOMASuplPacketsL Leaved with error code : ")); |
|
564 msg.AppendNum(err); |
|
565 iTrace->Trace(msg, KTraceFileName, __LINE__); |
|
566 } |
|
567 } |
|
568 |
|
569 // ----------------------------------------------------------------------------- |
|
570 // COMASUPLProtocolManager1::HandlePacketError |
|
571 // Handles Supl packet receiving errors |
|
572 // |
|
573 // ----------------------------------------------------------------------------- |
|
574 // |
|
575 EXPORT_C void COMASUPLProtocolManager1::HandlePacketError(TInt /*aError*/) |
|
576 { |
|
577 // Do nothing for now |
|
578 } |
|
579 |
|
580 // ----------------------------------------------------------------------------- |
|
581 // COMASUPLProtocolManager1::TerminateSession |
|
582 // Terminate the session specified by the parameter |
|
583 // |
|
584 // ----------------------------------------------------------------------------- |
|
585 // |
|
586 void COMASUPLProtocolManager1::TerminateSession(CSuplSessionBase *aSession, TInt aError) |
|
587 { |
|
588 // Check if the Session is valid |
|
589 TInt index = iSuplSessions.Find(aSession); |
|
590 |
|
591 if(KErrNotFound == index) |
|
592 { |
|
593 return; |
|
594 } |
|
595 |
|
596 COMASuplSession *omaSuplSession = static_cast <COMASuplSession *> (aSession); |
|
597 |
|
598 // Check the type of Session |
|
599 if(omaSuplSession->RequestType() == COMASuplSession::ESUPL_TERMINAL) |
|
600 { |
|
601 // For Terminal initiated session, do not delete the session |
|
602 omaSuplSession->SessionEnd(); |
|
603 |
|
604 // Complete the client request |
|
605 omaSuplSession->CompleteSession(aError); |
|
606 } |
|
607 else |
|
608 { |
|
609 // For Network Initiated session and invalid session, delete the session |
|
610 omaSuplSession->SessionEnd(); |
|
611 // Complete the client request |
|
612 omaSuplSession->CompleteSession(aError); |
|
613 DestroySession(omaSuplSession); |
|
614 } |
|
615 } |
|
616 |
|
617 // ----------------------------------------------------------------------------- |
|
618 // COMASUPLProtocolManager1::HandleOMASuplPacketsL |
|
619 // Handles Supl packets , received from SLP |
|
620 // |
|
621 // ----------------------------------------------------------------------------- |
|
622 // |
|
623 void COMASUPLProtocolManager1::HandleOMASuplPacketsL(const TDesC8& aPacket, TUint aPortNum) |
|
624 { |
|
625 RBuf8 Packet; |
|
626 TBool isDecodingRequired = ETrue; |
|
627 TInt errorCode = KErrNone; |
|
628 TInt unConsumedBytes = aPacket.Length(); |
|
629 TBuf<64> msg(_L("Length of Received message is : ")); |
|
630 msg.AppendNum(unConsumedBytes); |
|
631 iTrace->Trace(msg, KTraceFileName, __LINE__); |
|
632 COMASuplAsnMessageBase* decodedAsn = NULL; |
|
633 CleanupClosePushL(Packet); |
|
634 |
|
635 iTimer->StopTimer(); |
|
636 |
|
637 if(iIsPreviouslyDecodingFailed) //Previous decoding Failed... |
|
638 { |
|
639 User::LeaveIfError(iQueuedPacket.ReAlloc(unConsumedBytes + iQueuedPacket.Length())); |
|
640 iQueuedPacket.Append(aPacket); |
|
641 if( iQueuedPacket.Length() >= iPreviousMessageLength ) // Message length is enough to decode |
|
642 { |
|
643 isDecodingRequired = ETrue; |
|
644 User::LeaveIfError(Packet.ReAlloc(iQueuedPacket.Length())); |
|
645 Packet.Append(iQueuedPacket); |
|
646 unConsumedBytes = iQueuedPacket.Length(); |
|
647 |
|
648 msg.Copy(_L("Length of Combined buffer is : ")); |
|
649 msg.AppendNum(unConsumedBytes); |
|
650 iTrace->Trace(msg, KTraceFileName, __LINE__); |
|
651 } |
|
652 else |
|
653 { |
|
654 isDecodingRequired = EFalse; |
|
655 } |
|
656 } |
|
657 else |
|
658 { |
|
659 User::LeaveIfError(Packet.ReAlloc(unConsumedBytes)); |
|
660 Packet.Append(aPacket); |
|
661 } |
|
662 |
|
663 while(unConsumedBytes != 0 && errorCode == KErrNone && isDecodingRequired) |
|
664 { |
|
665 msg.Copy(_L("Unconsumed bytes are : ")); |
|
666 msg.AppendNum(unConsumedBytes); |
|
667 iTrace->Trace(msg, KTraceFileName, __LINE__); |
|
668 |
|
669 TRAPD(trapErr,decodedAsn = iOMASuplAsnHandlerBaseImpl->DecodeL(Packet.Right(unConsumedBytes),errorCode,unConsumedBytes)); |
|
670 LogPacket(aPacket,decodedAsn); |
|
671 |
|
672 if(trapErr!= KErrNone ) //Decoding leaved...clear everything. |
|
673 { |
|
674 TBuf<64> msg(_L("COMASuplAsnDecoder::DecodeL() Leaved with error code : ")); |
|
675 msg.AppendNum(trapErr); |
|
676 iTrace->Trace(msg, KTraceFileName, __LINE__); |
|
677 ResetBufferingParameters(); |
|
678 CleanupStack::PopAndDestroy(); //Packet |
|
679 return; |
|
680 } |
|
681 |
|
682 if(!decodedAsn) |
|
683 { |
|
684 CleanupStack::PopAndDestroy(); //Packet |
|
685 return; |
|
686 } |
|
687 |
|
688 if(errorCode == KErrOMASuplDecodeSessionFailed) //Decoding failed...drop packet |
|
689 { |
|
690 ResetBufferingParameters(); |
|
691 delete decodedAsn; |
|
692 CleanupStack::PopAndDestroy(); //Packet |
|
693 iTrace->Trace(_L("Decoding failed..."), KTraceFileName, __LINE__); |
|
694 return; |
|
695 } |
|
696 |
|
697 iPreviousMessageLength = decodedAsn->MessageLength(); |
|
698 msg.Copy(_L("Message Length of Received SUPL message is : ")); |
|
699 msg.AppendNum(iPreviousMessageLength ); |
|
700 iTrace->Trace(msg, KTraceFileName, __LINE__); |
|
701 |
|
702 if(iPreviousMessageLength <= 0) //Could not found message length... |
|
703 { |
|
704 ResetBufferingParameters(); |
|
705 delete decodedAsn; |
|
706 CleanupStack::PopAndDestroy(); //Packet |
|
707 iTrace->Trace(_L("Negative/Zero message length..."), KTraceFileName, __LINE__); |
|
708 return; |
|
709 } |
|
710 |
|
711 CleanupStack::PushL(decodedAsn); |
|
712 COMASuplSessionID* retrivedSessionID = NULL; |
|
713 decodedAsn->SessionId(retrivedSessionID); |
|
714 LogReceivedSessionIdL(retrivedSessionID); |
|
715 TBool isInvalidSLPID; |
|
716 TBool isInvalidSETID; |
|
717 COMASuplSession* suplSession = FindSession(retrivedSessionID,isInvalidSLPID, isInvalidSETID); |
|
718 if((isInvalidSETID && suplSession) || (isInvalidSLPID && suplSession)) |
|
719 { |
|
720 |
|
721 iTrace->Trace(_L("Running invalid session"), KTraceFileName, __LINE__); |
|
722 suplSession->RunInvalidSessionL(decodedAsn); |
|
723 ResetBufferingParameters(); |
|
724 CleanupStack::PopAndDestroy(decodedAsn); // decodedAsn |
|
725 CleanupStack::PopAndDestroy(); //Packet |
|
726 return; |
|
727 } |
|
728 |
|
729 if(errorCode == KErrOMASuplShortFrame ) // Newly added code for Short Frame... |
|
730 { |
|
731 if(suplSession) |
|
732 { |
|
733 if(suplSession->CheckProtocolVersionL(decodedAsn)) //Check for version & will send SUPL_END if mismatch |
|
734 { |
|
735 msg.Copy(_L("ASN returned Short Frame error.")); |
|
736 iTrace->Trace(msg, KTraceFileName, __LINE__); |
|
737 User::LeaveIfError(iQueuedPacket.ReAlloc(iQueuedPacket.Length() + aPacket.Length())); |
|
738 iQueuedPacket.Append(aPacket); |
|
739 iIsPreviouslyDecodingFailed = ETrue; |
|
740 iTimer->StartTimer(KQueuedBufferTimeout * KSecond); |
|
741 } |
|
742 else |
|
743 { |
|
744 ResetBufferingParameters(); //After sending SUPL_END ....clearing all variables needed for TCP Buffering. |
|
745 } |
|
746 |
|
747 CleanupStack::PopAndDestroy(decodedAsn); // decodedAsn |
|
748 CleanupStack::PopAndDestroy(); //Packet |
|
749 return; |
|
750 } |
|
751 } |
|
752 |
|
753 if(suplSession) //Session Found |
|
754 { |
|
755 if(errorCode == KErrOMASuplMessageLengthMismatch) //Added after Confirmance test cases (invalid message) |
|
756 { |
|
757 iTrace->Trace(_L("Received Message with wrong message length..."), KTraceFileName, __LINE__); |
|
758 ResetBufferingParameters(); |
|
759 suplSession->HandleInvalidMessageLengthL(); |
|
760 } |
|
761 if(errorCode == KErrOMASuplInvalidMessage) //Checks for invalid message |
|
762 { |
|
763 iTrace->Trace(_L("Received Invalid Message..."), KTraceFileName, __LINE__); |
|
764 ResetBufferingParameters(); |
|
765 suplSession->HandleInvalidMessageL(decodedAsn); |
|
766 } |
|
767 |
|
768 if(errorCode == KErrNone) //Successful decoding of message |
|
769 { |
|
770 ResetBufferingParameters(); |
|
771 iTrace->Trace(_L("Message decoded successfully...passing to appropriate session..."), KTraceFileName, __LINE__); |
|
772 suplSession->HandleOMASuplMessageL(decodedAsn); |
|
773 } |
|
774 |
|
775 if(errorCode == KErrCompletion) //Only session id retrived from message,Send error code |
|
776 { |
|
777 iTrace->Trace(_L("Retrived sessionid.Decoding failed.Handling Invalid Parameter."), KTraceFileName, __LINE__); |
|
778 suplSession->HandleInvalidParameterErrorL(decodedAsn); |
|
779 unConsumedBytes = 0; //Drop packet |
|
780 } |
|
781 } |
|
782 else //Session Not Found....Sending SUPL_END with invalidsession |
|
783 { |
|
784 //Check if session can be found based on port number |
|
785 suplSession = FindSessionOnPortNum(aPortNum); |
|
786 |
|
787 if (suplSession) |
|
788 { |
|
789 iTrace->Trace(_L("Running invalid session"), KTraceFileName, __LINE__); |
|
790 suplSession->RunInvalidSessionL(decodedAsn); |
|
791 ResetBufferingParameters(); |
|
792 CleanupStack::PopAndDestroy(decodedAsn); // decodedAsn |
|
793 CleanupStack::PopAndDestroy(); //Packet |
|
794 return; |
|
795 } |
|
796 else |
|
797 { |
|
798 ResetBufferingParameters(); |
|
799 iTrace->Trace(_L("Received Invalid Session."), KTraceFileName, __LINE__); |
|
800 ProcessInvalidSessionL(decodedAsn); |
|
801 unConsumedBytes = 0; //Drop packet |
|
802 } |
|
803 } |
|
804 |
|
805 CleanupStack::PopAndDestroy(decodedAsn); |
|
806 } |
|
807 |
|
808 CleanupStack::PopAndDestroy(); //Packet |
|
809 } |
|
810 |
|
811 // ----------------------------------------------------------------------------- |
|
812 // COMASUPLProtocolManager1::FindSession |
|
813 // Finds perticuler session from session array. |
|
814 // |
|
815 // ----------------------------------------------------------------------------- |
|
816 // |
|
817 COMASuplSession* COMASUPLProtocolManager1::FindSession(COMASuplSessionID* aRetrivedSessionID,TBool& aInvalidSLPId, TBool& aInvalidSETId) const |
|
818 { |
|
819 /* |
|
820 Algorithm for matching session ID |
|
821 For each session we are going to follow, following preocedure... |
|
822 if session in array haves SET id then we are going to compare SET id and at the same time if SLP id |
|
823 also present in session then we will also compare SLP id. |
|
824 If both matches then we are going to return session id. |
|
825 & if SLP Id does not matches then comparasion will be done for next session. |
|
826 If SLP id does not present in session id, in this case we will compare only SET id. |
|
827 */ |
|
828 |
|
829 aInvalidSLPId = EFalse; |
|
830 aInvalidSETId = EFalse; |
|
831 COMASuplSession* OMAsuplSession = NULL; |
|
832 COMASuplSessionID* suplSessionID = NULL; |
|
833 |
|
834 TInt TotalSession = iSuplSessions.Count(); |
|
835 |
|
836 COMASuplSETSessionID* retrivedSuplSETID = GetSETSessionID(aRetrivedSessionID); |
|
837 COMASuplSLPSessionID* retrivedSuplSLPID = GetSLPSessionID(aRetrivedSessionID); |
|
838 iTrace->Trace(_L("COMASUPLProtocolManager1::FindSession Searching in availble Sessions... "), KTraceFileName, __LINE__); |
|
839 for(TInt cnt = 0; cnt < TotalSession; ++cnt) |
|
840 { |
|
841 OMAsuplSession = static_cast<COMASuplSession*>(iSuplSessions[cnt]); |
|
842 suplSessionID = OMAsuplSession->SuplSessionID(); |
|
843 COMASuplSETSessionID* suplSETID = GetSETSessionID(suplSessionID); |
|
844 LogAvailableSessions(suplSETID,GetSLPSessionID(suplSessionID),cnt); |
|
845 |
|
846 if(suplSETID) |
|
847 { |
|
848 iTrace->Trace(_L("FindSession, SET ID Present ... "), KTraceFileName, __LINE__); |
|
849 if(CompareSETSessionID(suplSETID, retrivedSuplSETID)) |
|
850 { |
|
851 COMASuplSLPSessionID* suplSLPID = GetSLPSessionID(suplSessionID); |
|
852 if(suplSLPID) |
|
853 { |
|
854 if(CompareSLPSessionID(suplSLPID, retrivedSuplSLPID)) |
|
855 { |
|
856 iTrace->Trace(_L("COMASUPLProtocolManager1::FindSession Searching Done...Session Found"), KTraceFileName, __LINE__); |
|
857 return OMAsuplSession; |
|
858 } |
|
859 else |
|
860 { |
|
861 aInvalidSLPId = ETrue;//means we have received message with incorrect SLP session id. |
|
862 //continue; changed after Confirmance test.... |
|
863 return OMAsuplSession; |
|
864 } |
|
865 } |
|
866 |
|
867 iTrace->Trace(_L("COMASUPLProtocolManager1::FindSession Searching Done...Session Found"), KTraceFileName, __LINE__); |
|
868 return OMAsuplSession; |
|
869 } |
|
870 else |
|
871 { |
|
872 iTrace->Trace(_L("FindSession, SET ID comp failed ... "), KTraceFileName, __LINE__); |
|
873 COMASuplSLPSessionID* suplSLPID = GetSLPSessionID(suplSessionID); |
|
874 if(suplSLPID) |
|
875 { |
|
876 iTrace->Trace(_L("FindSession, SLP ID present... "), KTraceFileName, __LINE__); |
|
877 if (CompareSLPSessionID(suplSLPID, retrivedSuplSLPID)) |
|
878 { |
|
879 iTrace->Trace(_L("FindSession, SLP ID comp succeeded... "), KTraceFileName, __LINE__); |
|
880 aInvalidSETId = ETrue;//means we have received message with incorrect SET session id. |
|
881 //continue; changed after Confirmance test.... |
|
882 return OMAsuplSession; |
|
883 } |
|
884 } |
|
885 } |
|
886 } |
|
887 } |
|
888 |
|
889 iTrace->Trace(_L("COMASUPLProtocolManager1::FindSession Searching Done...Session Not Found."), KTraceFileName, __LINE__); |
|
890 return NULL; |
|
891 } |
|
892 |
|
893 // ----------------------------------------------------------------------------- |
|
894 // COMASUPLProtocolManager::FindSessionOnPortNum |
|
895 // Finds perticuler session from session array. |
|
896 // |
|
897 // ----------------------------------------------------------------------------- |
|
898 // |
|
899 COMASuplSession* COMASUPLProtocolManager1::FindSessionOnPortNum(TUint aPortNum) const |
|
900 { |
|
901 iTrace->Trace(_L("COMASUPLProtocolManager1::FindSessionOnPortNum start"), KTraceFileName, __LINE__); |
|
902 |
|
903 COMASuplSession* OMAsuplSession = NULL; |
|
904 TInt TotalSession = iSuplSessions.Count(); |
|
905 TUint portNum=0; |
|
906 |
|
907 iTrace->Trace(_L("COMASUPLProtocolManager1::FindSessionOnPortNum Searching in availble Sessions"), KTraceFileName, __LINE__); |
|
908 for(TInt cnt = 0; cnt < TotalSession; ++cnt) |
|
909 { |
|
910 OMAsuplSession = static_cast<COMASuplSession*>(iSuplSessions[cnt]); |
|
911 portNum = OMAsuplSession->GetPortNumUsed(); |
|
912 if (portNum != 0 && portNum == aPortNum) |
|
913 { |
|
914 iTrace->Trace(_L("COMASUPLProtocolManager1::FindSessionOnPortNum Searching Done...Session Found"), KTraceFileName, __LINE__); |
|
915 return OMAsuplSession; |
|
916 } |
|
917 } |
|
918 |
|
919 iTrace->Trace(_L("COMASUPLProtocolManager1::FindSessionOnPortNum Searching Done...Session Not Found."), KTraceFileName, __LINE__); |
|
920 return NULL; |
|
921 } |
|
922 // ----------------------------------------------------------------------------- |
|
923 // COMASUPLProtocolManager::GetSETSession |
|
924 // Retrives COMASuplSETSessionID from COMASuplSessionID. |
|
925 // |
|
926 // ----------------------------------------------------------------------------- |
|
927 // |
|
928 COMASuplSETSessionID* COMASUPLProtocolManager1::GetSETSessionID(COMASuplSessionID* |
|
929 aOMAsuplSessionID) const |
|
930 { |
|
931 if(aOMAsuplSessionID) |
|
932 { |
|
933 COMASuplSETSessionID* suplSETID = NULL; |
|
934 aOMAsuplSessionID->SETSessionID(suplSETID); |
|
935 return suplSETID; |
|
936 } |
|
937 else |
|
938 return NULL; |
|
939 } |
|
940 |
|
941 // ----------------------------------------------------------------------------- |
|
942 // COMASUPLProtocolManager1::GetSLPSession |
|
943 // Retrives COMASuplSLPSessionID from COMASuplSessionID. |
|
944 // |
|
945 // ----------------------------------------------------------------------------- |
|
946 // |
|
947 COMASuplSLPSessionID* COMASUPLProtocolManager1::GetSLPSessionID(COMASuplSessionID* |
|
948 aOMAsuplSessionID) const |
|
949 { |
|
950 if(aOMAsuplSessionID) |
|
951 { |
|
952 COMASuplSLPSessionID* suplSLPID = NULL; |
|
953 aOMAsuplSessionID->SLPSessionID(suplSLPID); |
|
954 return suplSLPID; |
|
955 } |
|
956 else |
|
957 return NULL; |
|
958 } |
|
959 |
|
960 // ----------------------------------------------------------------------------- |
|
961 // COMASUPLProtocolManager1::CompareSETSessionID |
|
962 // Compares two SET session IDs |
|
963 // |
|
964 // ----------------------------------------------------------------------------- |
|
965 // |
|
966 TBool COMASUPLProtocolManager1::CompareSETSessionID(COMASuplSETSessionID* aSuplSETID, |
|
967 COMASuplSETSessionID* aRetrivedSuplSETID) const |
|
968 { |
|
969 if ( aRetrivedSuplSETID && aSuplSETID) |
|
970 return *aRetrivedSuplSETID == *aSuplSETID; |
|
971 else |
|
972 return EFalse; |
|
973 } |
|
974 |
|
975 // ----------------------------------------------------------------------------- |
|
976 // COMASUPLProtocolManager1::CompareSLPSessionID |
|
977 // Compares two SLP session IDs |
|
978 // |
|
979 // ----------------------------------------------------------------------------- |
|
980 // |
|
981 TBool COMASUPLProtocolManager1::CompareSLPSessionID(COMASuplSLPSessionID* aSuplSLPID, |
|
982 COMASuplSLPSessionID* aRetrivedSuplSLPID) const |
|
983 { |
|
984 if ( aRetrivedSuplSLPID && aSuplSLPID) |
|
985 return *aRetrivedSuplSLPID == *aSuplSLPID; |
|
986 else |
|
987 return EFalse; |
|
988 } |
|
989 |
|
990 // ----------------------------------------------------------------------------- |
|
991 // COMASUPLProtocolManager1::ProcessInvalidSessionL |
|
992 // Processes invalid session .. creates new session & sends SUPL_END |
|
993 // |
|
994 // ----------------------------------------------------------------------------- |
|
995 // |
|
996 void COMASUPLProtocolManager1::ProcessInvalidSessionL(COMASuplAsnMessageBase* aDecodedMsg) |
|
997 { |
|
998 // 1. Create a new session for handling the invalid session case |
|
999 CSuplSessionBase* suplSession = NULL; |
|
1000 |
|
1001 TRAPD(err, suplSession = CreateNewSessionL(COMASuplSession::ESUPL_INVALID_SESSION, 0, RSuplTerminalSubSession::ESUPL_1_0)) |
|
1002 |
|
1003 COMASuplSession* invalidSession = static_cast<COMASuplSession*>(suplSession); |
|
1004 |
|
1005 if(KErrNone == err) |
|
1006 { |
|
1007 invalidSession->RunInvalidSessionL(aDecodedMsg); |
|
1008 } |
|
1009 } |
|
1010 |
|
1011 |
|
1012 |
|
1013 // ----------------------------------------------------------------------------- |
|
1014 // COMASUPLProtocolManager1::CancelRunSession |
|
1015 // Cancels run session operation if its going on. |
|
1016 // |
|
1017 // ----------------------------------------------------------------------------- |
|
1018 // |
|
1019 EXPORT_C void COMASUPLProtocolManager1::CancelRunSession(CSuplSessionBase* aSuplSession) |
|
1020 { |
|
1021 // Log |
|
1022 iTrace->Trace(_L("COMASUPLProtocolManager1::CancelRunSession"), KTraceFileName, __LINE__); |
|
1023 |
|
1024 // Check if the Session is valid |
|
1025 TInt index = iSuplSessions.Find(aSuplSession); |
|
1026 |
|
1027 if(KErrNotFound == index) |
|
1028 { |
|
1029 iTrace->Trace(_L("Cannot found Supl session."), KTraceFileName, __LINE__); |
|
1030 return; |
|
1031 } |
|
1032 aSuplSession->CancelRunSession(); |
|
1033 return ; |
|
1034 } |
|
1035 |
|
1036 |
|
1037 // ----------------------------------------------------------------------------- |
|
1038 // COMASUPLProtocolManager1::HandleSuplMessageL |
|
1039 // Informs to client about Initilization of POS ,thro' active object |
|
1040 // |
|
1041 // ----------------------------------------------------------------------------- |
|
1042 // |
|
1043 EXPORT_C void COMASUPLProtocolManager1::HandleSuplMessageL(CSuplSessionBase *const aSuplSession,TRequestStatus& aStatus,HBufC8* aMessage) |
|
1044 { |
|
1045 iTrace->Trace(_L("COMASUPLProtocolManager1::HandleSuplMessageL"), KTraceFileName, __LINE__); |
|
1046 TInt index = iSuplSessions.Find(aSuplSession); |
|
1047 TRequestStatus* status = &aStatus; |
|
1048 |
|
1049 if(KErrNotFound == index) |
|
1050 { |
|
1051 iTrace->Trace(_L("Cannot found Supl session."), KTraceFileName, __LINE__); |
|
1052 if(status) |
|
1053 User::RequestComplete(status,KErrNotFound); |
|
1054 return; |
|
1055 } |
|
1056 |
|
1057 if(!aMessage) |
|
1058 { |
|
1059 iTrace->Trace(_L("Received packet is Empty."), KTraceFileName, __LINE__); |
|
1060 if(status) |
|
1061 User::RequestComplete(status,KErrBadDescriptor); |
|
1062 return; |
|
1063 } |
|
1064 |
|
1065 #ifdef PRINT_MESSAGE |
|
1066 RFile file; |
|
1067 RFs fs; |
|
1068 TInt cErr=fs.Connect(); |
|
1069 TInt fErr = file.Open(fs,_L("c:\\logs\\epos\\packet.txt"),EFileWrite|EFileShareAny); |
|
1070 if (fErr == KErrNotFound || fErr == KErrPathNotFound) |
|
1071 { |
|
1072 TBool ret = BaflUtils::FolderExists(fs,_L("c:\\logs\\epos\\")); |
|
1073 if(!ret) |
|
1074 { |
|
1075 fs.MkDirAll(_L("c:\\logs\\epos\\")); |
|
1076 } |
|
1077 file.Create(fs, _L("c:\\logs\\epos\\packet.txt"), EFileWrite|EFileShareAny); |
|
1078 fErr = file.Open(fs,_L("c:\\logs\\epos\\packet.txt"),EFileWrite|EFileShareAny); |
|
1079 } |
|
1080 |
|
1081 _LIT8(KMsgType, "SUPL INIT"); |
|
1082 file.Write(KMsgType); |
|
1083 file.Write(_L8("\r \n")); |
|
1084 file.Write(*aMessage); |
|
1085 file.Write(_L8("\r \n")); |
|
1086 file.Close(); |
|
1087 fs.Close(); |
|
1088 #endif |
|
1089 |
|
1090 TInt unConsumedBytes = aMessage->Length(); |
|
1091 COMASuplAsnMessageBase* decodedAsn = NULL; |
|
1092 TInt errorCode; |
|
1093 |
|
1094 TRAP_IGNORE(decodedAsn = iOMASuplAsnHandlerBaseImpl->DecodeL(aMessage->Right(unConsumedBytes),errorCode,unConsumedBytes)); |
|
1095 |
|
1096 if(errorCode == KErrOMASuplDecodeSessionFailed || errorCode == KErrCompletion) //Decoding failed...drop packet |
|
1097 { |
|
1098 delete decodedAsn; |
|
1099 iTrace->Trace(_L("COMASUPLProtocolManager1::HandleSuplMessageL::Decoding failed..."), KTraceFileName, __LINE__); |
|
1100 if(status) |
|
1101 User::RequestComplete(status,KErrGeneral); |
|
1102 return; |
|
1103 } |
|
1104 |
|
1105 if(errorCode == KErrNone || errorCode == KErrOMASuplOutOfRangeParameter |
|
1106 || errorCode == KErrOMASuplMessageLengthMismatch |
|
1107 || errorCode == KErrOMASuplShortFrame) |
|
1108 // Successful decoding of message |
|
1109 // KErrOMASuplOutOfRangeParameter added this for supporting |
|
1110 // handling of out of range parameters. |
|
1111 { |
|
1112 if(!decodedAsn) |
|
1113 { |
|
1114 if(status) |
|
1115 User::RequestComplete(status,KErrGeneral); |
|
1116 return; |
|
1117 } |
|
1118 |
|
1119 COMASuplAsnMessageBase::TSuplMessageType messageType = decodedAsn->MessageType(); |
|
1120 if(messageType == COMASuplAsnMessageBase::ESUPL_END ) |
|
1121 { |
|
1122 delete decodedAsn; |
|
1123 iTrace->Trace(_L("Received SUPL_END thro' Netinitiated Lib...."), KTraceFileName, __LINE__); |
|
1124 if(status) |
|
1125 User::RequestComplete(status,KErrGeneral); |
|
1126 return; |
|
1127 } |
|
1128 |
|
1129 CleanupStack::PushL(decodedAsn); |
|
1130 COMASuplSession* suplSession = static_cast<COMASuplSession*>(aSuplSession); |
|
1131 if(suplSession) |
|
1132 { |
|
1133 CheckForSessionCount(); |
|
1134 iRunningSessionCount++; |
|
1135 suplSession->SetEncodedSuplInitL(aMessage); |
|
1136 suplSession->SetConfigurationParameters(iUT1_StartTimer,iUT2_PosInitTimer, iUT3_PosTimer,iPrivacyTimer,iSETMode, |
|
1137 iSuplUsage, iPersistFailTimer,iSuplInitTimeOut); |
|
1138 suplSession->HandleOMASuplMessageL(decodedAsn,aStatus,iRunningSessionCount,errorCode); |
|
1139 } |
|
1140 CleanupStack::PopAndDestroy(decodedAsn); |
|
1141 } |
|
1142 else |
|
1143 { |
|
1144 delete decodedAsn; |
|
1145 iTrace->Trace(_L("COMASUPLProtocolManager1::HandleSuplMessageL::Error occured after decoding..."), KTraceFileName, __LINE__); |
|
1146 if(status) |
|
1147 User::RequestComplete(status,KErrGeneral); |
|
1148 } |
|
1149 } |
|
1150 |
|
1151 // ----------------------------------------------------------------------------- |
|
1152 // COMASUPLProtocolManager1::PlugInUninstalled |
|
1153 // Handles Pos handler unload event |
|
1154 // ----------------------------------------------------------------------------- |
|
1155 void COMASUPLProtocolManager1::PlugInUninstalled() // change here --- Subhra |
|
1156 { |
|
1157 iTrace->Trace(_L("COMASUPLProtocolManager1::PlugInUninstalled"), KTraceFileName, __LINE__); |
|
1158 |
|
1159 TInt suplSessionCount = iSuplSessions.Count(); |
|
1160 |
|
1161 for(TInt loop = 0; loop < suplSessionCount;loop++) |
|
1162 { |
|
1163 iTrace->Trace(_L("COMASUPLProtocolManager1::PlugInUninstalled Session retrieved"), KTraceFileName, __LINE__); |
|
1164 |
|
1165 COMASuplSession* suplSession = REINTERPRET_CAST(COMASuplSession*, iSuplSessions[loop]); |
|
1166 suplSession->PosPlugInUnloaded(); |
|
1167 } |
|
1168 |
|
1169 iTrace->Trace(_L("COMASUPLProtocolManager1::PlugInUninstalled PosH removed"), KTraceFileName, __LINE__); |
|
1170 } |
|
1171 |
|
1172 // ----------------------------------------------------------------------------- |
|
1173 // COMASUPLProtocolManager1::HandleSuplSettingsChangeL |
|
1174 // notifier for settings changes. |
|
1175 // ----------------------------------------------------------------------------- |
|
1176 void COMASUPLProtocolManager1::HandleSuplSettingsChangeL(TSuplSettingsEventType aEvent,TInt /*aSlpId*/) |
|
1177 { |
|
1178 if( aEvent == MSuplSettingsObserver::ESuplSettingsEventSuplUsageChange) |
|
1179 { |
|
1180 iTrace->Trace(_L("Setting Changed.SUPL Usage changed.. Reeading once again..."), KTraceFileName, __LINE__); |
|
1181 ReadSuplUsage(); |
|
1182 } |
|
1183 else if( aEvent == MSuplSettingsObserver::ESuplSettingsEventCommParameterChange) |
|
1184 { |
|
1185 iTrace->Trace(_L("Setting Changed.Communication Parameters changed.. Reeading once again..."), KTraceFileName, __LINE__); |
|
1186 |
|
1187 } |
|
1188 } |
|
1189 |
|
1190 |
|
1191 void COMASUPLProtocolManager1::LogPacket(const TDesC8& |
|
1192 #if defined(PRINT_MESSAGE) |
|
1193 aPacket |
|
1194 #endif |
|
1195 ,COMASuplAsnMessageBase* |
|
1196 #if defined(PRINT_MESSAGE) |
|
1197 decodedAsn |
|
1198 #endif |
|
1199 ) |
|
1200 { |
|
1201 |
|
1202 #ifdef PRINT_MESSAGE |
|
1203 RFileLogger iLogger; |
|
1204 |
|
1205 TInt err = iLogger.Connect(); |
|
1206 if(err != KErrNone) |
|
1207 return; |
|
1208 |
|
1209 const TText* hdr1 = _S("Header"); |
|
1210 const TText* mrg1 = _S("End"); |
|
1211 if(decodedAsn) |
|
1212 { |
|
1213 COMASuplAsnMessageBase::TSuplMessageType messageType = decodedAsn->MessageType(); |
|
1214 |
|
1215 switch(messageType) |
|
1216 { |
|
1217 case COMASuplAsnMessageBase::ESUPL_RESPONSE: |
|
1218 { |
|
1219 _LIT(KMsgType1, "SUPL_RESPONSE.txt"); |
|
1220 iLogger.CreateLog(_L("epos"),KMsgType1,EFileLoggingModeAppend); |
|
1221 iLogger.HexDump(hdr1, mrg1, aPacket.Ptr(), aPacket.Length() ); |
|
1222 break; |
|
1223 } |
|
1224 case COMASuplAsnMessageBase::ESUPL_POS: |
|
1225 { |
|
1226 _LIT(KMsgType2, "SUPL_POS.txt"); |
|
1227 iLogger.CreateLog(_L("epos"),KMsgType2,EFileLoggingModeAppend); |
|
1228 iLogger.HexDump(hdr1, mrg1, aPacket.Ptr(), aPacket.Length() ); |
|
1229 break; |
|
1230 } |
|
1231 case COMASuplAsnMessageBase::ESUPL_END: |
|
1232 { |
|
1233 _LIT(KMsgType3, "SUPL_END.txt"); |
|
1234 iLogger.CreateLog(_L("epos"),KMsgType3,EFileLoggingModeAppend); |
|
1235 iLogger.HexDump(hdr1, mrg1, aPacket.Ptr(), aPacket.Length() ); |
|
1236 break; |
|
1237 } |
|
1238 case COMASuplAsnMessageBase::ESUPL_AUTH_RESP: |
|
1239 { |
|
1240 _LIT(KMsgType4, "SUPL_AUTH_RESPONSE.txt"); |
|
1241 iLogger.CreateLog(_L("epos"),KMsgType4,EFileLoggingModeAppend); |
|
1242 iLogger.HexDump(hdr1, mrg1, aPacket.Ptr(), aPacket.Length() ); |
|
1243 break; |
|
1244 } |
|
1245 default: |
|
1246 break; |
|
1247 } |
|
1248 } |
|
1249 else |
|
1250 { |
|
1251 _LIT(KMsgTypeUnknown, "Decode_Failed.txt"); |
|
1252 iLogger.CreateLog(_L("epos"),KMsgTypeUnknown,EFileLoggingModeAppend); |
|
1253 iLogger.HexDump(hdr1, mrg1, aPacket.Ptr(), aPacket.Length() ); |
|
1254 } |
|
1255 iLogger.Close(); |
|
1256 #endif |
|
1257 } |
|
1258 |
|
1259 // ----------------------------------------------------------------------------- |
|
1260 // COMASUPLProtocolManager1::LogAvailableSessions |
|
1261 // Logs |
|
1262 // ----------------------------------------------------------------------------- |
|
1263 void COMASUPLProtocolManager1::LogAvailableSessions( COMASuplSETSessionID* |
|
1264 #if defined(PRINT_MESSAGE) |
|
1265 aSuplSETID |
|
1266 #endif |
|
1267 ,COMASuplSLPSessionID* |
|
1268 #if defined(PRINT_MESSAGE) |
|
1269 aSuplSLPID |
|
1270 #endif |
|
1271 ,TInt |
|
1272 #if defined(PRINT_MESSAGE) |
|
1273 aCount |
|
1274 #endif |
|
1275 ) const |
|
1276 |
|
1277 { |
|
1278 #ifdef PRINT_MESSAGE //This is only for logging purpose. |
|
1279 |
|
1280 TBuf<128> msg(_L("Session Ids For Session No : ")); |
|
1281 msg.AppendNum(aCount); |
|
1282 iTrace->Trace(msg,KTraceFileName, __LINE__); |
|
1283 |
|
1284 if(!aSuplSETID) |
|
1285 { |
|
1286 iTrace->Trace(_L("No SET Session ID present..."),KTraceFileName, __LINE__); |
|
1287 } |
|
1288 else |
|
1289 { |
|
1290 msg.Copy(_L("Comparing with Session ID : ")); |
|
1291 TBuf<4> id; |
|
1292 TInt SETSessionID; |
|
1293 TBuf8<64> IPvAddress8; |
|
1294 TBuf<64> IPvAddress; |
|
1295 |
|
1296 aSuplSETID->SuplSETSessionID(SETSessionID,IPvAddress8); |
|
1297 COMASuplSETSessionID::TSuplSETIDType setIDType = aSuplSETID->SuplSETIDType(); |
|
1298 if(setIDType == COMASuplSETSessionID::EIMSI ) |
|
1299 { |
|
1300 iTrace->Trace(_L("SET ID is of type IMSI"),KTraceFileName, __LINE__); |
|
1301 iTrace->Trace(_L("IMSI Value :"),KTraceFileName, __LINE__); |
|
1302 msg.Copy(IPvAddress8); |
|
1303 } |
|
1304 else |
|
1305 { |
|
1306 TLex8 lex(IPvAddress8); |
|
1307 |
|
1308 TChar chr; |
|
1309 |
|
1310 chr = lex.Get(); |
|
1311 TUint i = chr; |
|
1312 IPvAddress.AppendNum(i); |
|
1313 IPvAddress.Append(_L(".")); |
|
1314 |
|
1315 chr = lex.Get(); |
|
1316 i = chr; |
|
1317 IPvAddress.AppendNum(i); |
|
1318 IPvAddress.Append(_L(".")); |
|
1319 |
|
1320 chr = lex.Get(); |
|
1321 i = chr; |
|
1322 IPvAddress.AppendNum(i); |
|
1323 IPvAddress.Append(_L(".")); |
|
1324 |
|
1325 chr = lex.Get(); |
|
1326 i = chr; |
|
1327 IPvAddress.AppendNum(i); |
|
1328 |
|
1329 id.AppendNum(SETSessionID); |
|
1330 msg.Append(id); |
|
1331 msg.Append(_L(" IPAddress :")); |
|
1332 msg.Append(IPvAddress); |
|
1333 } |
|
1334 } |
|
1335 #endif |
|
1336 |
|
1337 #ifdef PRINT_MESSAGE //This is only for logging purpose. |
|
1338 if(!aSuplSLPID) |
|
1339 { |
|
1340 iTrace->Trace(_L("No SLP Session ID present..."),KTraceFileName, __LINE__); |
|
1341 } |
|
1342 else |
|
1343 { |
|
1344 TBuf8<4> sessionId8; |
|
1345 TBuf<32> sessionId; |
|
1346 TBuf8<64> ipAddress8(_L8("No Address field in SLP Session ID")); |
|
1347 TBuf<64> ipAddress; |
|
1348 |
|
1349 COMASuplSLPAddress* slpIPAddress = NULL; |
|
1350 aSuplSLPID->SuplSLPSessionID(sessionId8,slpIPAddress); |
|
1351 |
|
1352 if(slpIPAddress) |
|
1353 { |
|
1354 COMASuplSLPAddress::TSuplSLPAddressType slpAddType = slpIPAddress->SLPAddressType(); |
|
1355 if(slpAddType == COMASuplSLPAddress::EFqdn) |
|
1356 { |
|
1357 TBuf<128> msg(_L("Comparing with SLP Session ID : ")); |
|
1358 HBufC8* fqdn = NULL; |
|
1359 slpIPAddress->Fqdn(fqdn); |
|
1360 TLex8 lex1(sessionId8); |
|
1361 TChar chr; |
|
1362 for(TInt i = 0; i < 4; i++) |
|
1363 { |
|
1364 chr = lex1.Get(); |
|
1365 TUint num = chr; |
|
1366 sessionId.AppendNum(num); |
|
1367 } |
|
1368 msg.Append(sessionId); |
|
1369 iTrace->Trace(msg,KTraceFileName, __LINE__); |
|
1370 iTrace->Trace(_L("SLP Address is FQDN"),KTraceFileName, __LINE__); |
|
1371 iTrace->Trace(_L("FQDN Value"),KTraceFileName, __LINE__); |
|
1372 if(fqdn) |
|
1373 { |
|
1374 HBufC* fqdnBuffer = NULL; |
|
1375 TInt err; |
|
1376 TRAP(err,fqdnBuffer = HBufC::NewL(fqdn->Length())); |
|
1377 err = 0; |
|
1378 fqdnBuffer->Des().Copy(fqdn->Des()); |
|
1379 iTrace->Trace(fqdnBuffer->Des(),KTraceFileName, __LINE__); |
|
1380 delete fqdnBuffer; |
|
1381 fqdnBuffer = NULL; |
|
1382 } |
|
1383 } |
|
1384 else |
|
1385 { |
|
1386 TBuf<128> msg(_L("Comparing with SLP Session ID : ")); |
|
1387 TInt err = slpIPAddress->IPvAddress(ipAddress8); |
|
1388 if(err != KErrNone) |
|
1389 { |
|
1390 msg.Copy(_L("SLP Address is not set.")); |
|
1391 iTrace->Trace(msg,KTraceFileName, __LINE__); |
|
1392 } |
|
1393 else |
|
1394 { |
|
1395 TLex8 lex(ipAddress8); |
|
1396 TChar chr; |
|
1397 |
|
1398 chr = lex.Get(); |
|
1399 TUint i = chr; |
|
1400 ipAddress.AppendNum(i); |
|
1401 ipAddress.Append(_L(".")); |
|
1402 |
|
1403 chr = lex.Get(); |
|
1404 i = chr; |
|
1405 ipAddress.AppendNum(i); |
|
1406 ipAddress.Append(_L(".")); |
|
1407 |
|
1408 chr = lex.Get(); |
|
1409 i = chr; |
|
1410 ipAddress.AppendNum(i); |
|
1411 ipAddress.Append(_L(".")); |
|
1412 |
|
1413 chr = lex.Get(); |
|
1414 i = chr; |
|
1415 ipAddress.AppendNum(i); |
|
1416 |
|
1417 TLex8 lex1(sessionId8); |
|
1418 for(TInt i = 0; i < 4; i++) |
|
1419 { |
|
1420 chr = lex1.Get(); |
|
1421 TUint num = chr; |
|
1422 sessionId.AppendNum(num); |
|
1423 } |
|
1424 msg.Append(sessionId); |
|
1425 msg.Append(_L(" IPAddress : ")); |
|
1426 msg.Append(ipAddress); |
|
1427 iTrace->Trace(msg,KTraceFileName, __LINE__); |
|
1428 } |
|
1429 } |
|
1430 } |
|
1431 } |
|
1432 #endif |
|
1433 } |
|
1434 |
|
1435 void COMASUPLProtocolManager1::LogReceivedSessionIdL(COMASuplSessionID* |
|
1436 #if defined(PRINT_MESSAGE) |
|
1437 aRetrivedSessionID |
|
1438 #endif |
|
1439 ) |
|
1440 { |
|
1441 |
|
1442 #ifdef PRINT_MESSAGE //This is only for logging purpose. |
|
1443 if(! aRetrivedSessionID) |
|
1444 return; |
|
1445 |
|
1446 TBuf<128> msg(_L("Received Session Id is...")); |
|
1447 iTrace->Trace(msg,KTraceFileName, __LINE__); |
|
1448 |
|
1449 COMASuplSETSessionID* suplSETID = NULL; |
|
1450 aRetrivedSessionID->SETSessionID(suplSETID); |
|
1451 |
|
1452 COMASuplSLPSessionID* suplSLPID = NULL; |
|
1453 aRetrivedSessionID->SLPSessionID(suplSLPID); |
|
1454 |
|
1455 //SET Part |
|
1456 if(suplSETID) |
|
1457 { |
|
1458 msg.Copy(_L("SET Session ID : ")); |
|
1459 TBuf<8> id; |
|
1460 TInt SETSessionID; |
|
1461 TBuf8<64> IPvAddress8; |
|
1462 TBuf<64> IPvAddress; |
|
1463 |
|
1464 suplSETID->SuplSETSessionID(SETSessionID,IPvAddress8); |
|
1465 COMASuplSETSessionID::TSuplSETIDType setIDType = suplSETID->SuplSETIDType(); |
|
1466 if(setIDType == COMASuplSETSessionID::EIMSI ) |
|
1467 { |
|
1468 iTrace->Trace(_L("SET ID is of type IMSI"),KTraceFileName, __LINE__); |
|
1469 iTrace->Trace(_L("IMSI Value :"),KTraceFileName, __LINE__); |
|
1470 msg.Copy(IPvAddress8); |
|
1471 } |
|
1472 else |
|
1473 { |
|
1474 TLex8 lex(IPvAddress8); |
|
1475 |
|
1476 TChar chr; |
|
1477 |
|
1478 chr = lex.Get(); |
|
1479 TUint i = chr; |
|
1480 IPvAddress.AppendNum(i); |
|
1481 IPvAddress.Append(_L(".")); |
|
1482 |
|
1483 chr = lex.Get(); |
|
1484 i = chr; |
|
1485 IPvAddress.AppendNum(i); |
|
1486 IPvAddress.Append(_L(".")); |
|
1487 |
|
1488 chr = lex.Get(); |
|
1489 i = chr; |
|
1490 IPvAddress.AppendNum(i); |
|
1491 IPvAddress.Append(_L(".")); |
|
1492 |
|
1493 chr = lex.Get(); |
|
1494 i = chr; |
|
1495 IPvAddress.AppendNum(i); |
|
1496 |
|
1497 id.AppendNum(SETSessionID); |
|
1498 msg.Append(id); |
|
1499 msg.Append(_L(" IPAddress :")); |
|
1500 msg.Append(IPvAddress); |
|
1501 } |
|
1502 } |
|
1503 else |
|
1504 { |
|
1505 msg.Copy(_L("SET Session Id is not set.")); |
|
1506 } |
|
1507 |
|
1508 |
|
1509 //SLP Part |
|
1510 if(suplSLPID) |
|
1511 { |
|
1512 msg.Copy(_L("SLP Session ID : ")); |
|
1513 TBuf8<4> sessionId8; |
|
1514 TBuf<32> sessionId; |
|
1515 TBuf8<64> ipAddress8(_L8("No Address field in SLP Session ID")); |
|
1516 TBuf<64> ipAddress; |
|
1517 |
|
1518 COMASuplSLPAddress* slpIPAddress = NULL; |
|
1519 suplSLPID->SuplSLPSessionID(sessionId8,slpIPAddress); |
|
1520 |
|
1521 if(slpIPAddress) |
|
1522 { |
|
1523 COMASuplSLPAddress::TSuplSLPAddressType slpAddType = slpIPAddress->SLPAddressType(); |
|
1524 if(slpAddType == COMASuplSLPAddress::EFqdn) |
|
1525 { |
|
1526 HBufC8* fqdn = NULL; |
|
1527 slpIPAddress->Fqdn(fqdn); |
|
1528 iTrace->Trace(_L("SLP Address is FQDN"),KTraceFileName, __LINE__); |
|
1529 iTrace->Trace(_L("FQDN Value"),KTraceFileName, __LINE__); |
|
1530 if(fqdn) |
|
1531 { |
|
1532 HBufC* fqdnBuffer = NULL; |
|
1533 fqdnBuffer = HBufC::NewL(fqdn->Length()); |
|
1534 fqdnBuffer->Des().Copy(fqdn->Des()); |
|
1535 iTrace->Trace(fqdnBuffer->Des(),KTraceFileName, __LINE__); |
|
1536 delete fqdnBuffer; |
|
1537 fqdnBuffer = NULL; |
|
1538 } |
|
1539 } |
|
1540 else |
|
1541 { |
|
1542 TInt err = slpIPAddress->IPvAddress(ipAddress8); |
|
1543 if(err != KErrNone) |
|
1544 { |
|
1545 msg.Copy(_L("SLP Address is not set.")); |
|
1546 iTrace->Trace(msg,KTraceFileName, __LINE__); |
|
1547 } |
|
1548 } |
|
1549 } |
|
1550 |
|
1551 TLex8 lex(ipAddress8); |
|
1552 TChar chr; |
|
1553 |
|
1554 chr = lex.Get(); |
|
1555 TUint i = chr; |
|
1556 ipAddress.AppendNum(i); |
|
1557 ipAddress.Append(_L(".")); |
|
1558 |
|
1559 chr = lex.Get(); |
|
1560 i = chr; |
|
1561 ipAddress.AppendNum(i); |
|
1562 ipAddress.Append(_L(".")); |
|
1563 |
|
1564 chr = lex.Get(); |
|
1565 i = chr; |
|
1566 ipAddress.AppendNum(i); |
|
1567 ipAddress.Append(_L(".")); |
|
1568 |
|
1569 chr = lex.Get(); |
|
1570 i = chr; |
|
1571 ipAddress.AppendNum(i); |
|
1572 |
|
1573 TLex8 lex1(sessionId8); |
|
1574 for(TInt i = 0; i < 4; i++) |
|
1575 { |
|
1576 chr = lex1.Get(); |
|
1577 TUint num = chr; |
|
1578 sessionId.AppendNum(num); |
|
1579 } |
|
1580 |
|
1581 msg.Append(sessionId); |
|
1582 msg.Append(_L(" IPAddress : ")); |
|
1583 msg.Append(ipAddress); |
|
1584 iTrace->Trace(msg,KTraceFileName, __LINE__); |
|
1585 } |
|
1586 else |
|
1587 { |
|
1588 msg.Copy(_L("SLP Session Id is not set.")); |
|
1589 iTrace->Trace(msg,KTraceFileName, __LINE__); |
|
1590 } |
|
1591 #endif |
|
1592 |
|
1593 } |
|
1594 |
|
1595 void COMASUPLProtocolManager1::TimerExpiredL() |
|
1596 { |
|
1597 ResetBufferingParameters(); |
|
1598 } |
|
1599 |
|
1600 void COMASUPLProtocolManager1::ResetBufferingParameters() |
|
1601 { |
|
1602 iQueuedPacket.Zero(); //Reset all parameters |
|
1603 iPreviousMessageLength = 0 ; |
|
1604 iIsPreviouslyDecodingFailed = EFalse; |
|
1605 } |
|
1606 |
|
1607 |
|
1608 // ----------------------------------------------------------------------------- |
|
1609 // COMASUPLProtocolManager1::LaunchSettingsUI |
|
1610 // |
|
1611 // |
|
1612 // ----------------------------------------------------------------------------- |
|
1613 // |
|
1614 TInt COMASUPLProtocolManager1::LaunchSettingsUI(MOMASuplUICompletionObserver* aObserver,const TDesC& aForHslp) |
|
1615 { |
|
1616 iTrace->Trace(_L("COMASUPLProtocolManager1::LaunchSettingsUI"), KTraceFileName, __LINE__); |
|
1617 |
|
1618 if(iUIRequestArray.Count() <= 0 ) |
|
1619 { |
|
1620 iTrace->Trace(_L("COMASUPLProtocolManager1::LaunchSettingsUI"), KTraceFileName, __LINE__); |
|
1621 iUIRequestArray.Append(aObserver); |
|
1622 iSuplSettings->SetUIActive(ETrue); |
|
1623 iCurrentlyUsedHslp.Copy(aForHslp); |
|
1624 return iSettingsLauncher->LaunchSettings(); |
|
1625 } |
|
1626 else if(iCurrentlyUsedHslp.Compare(aForHslp) == KErrNone) |
|
1627 { |
|
1628 iUIRequestArray.Append(aObserver); |
|
1629 } |
|
1630 else |
|
1631 { |
|
1632 return KErrInUse; |
|
1633 } |
|
1634 |
|
1635 return KErrNone; |
|
1636 } |
|
1637 |
|
1638 // ----------------------------------------------------------------------------- |
|
1639 // COMASUPLProtocolManager1::SettingsUICompletedL |
|
1640 // |
|
1641 // |
|
1642 // ----------------------------------------------------------------------------- |
|
1643 // |
|
1644 void COMASUPLProtocolManager1::SettingsUICompletedL(TInt aError) |
|
1645 { |
|
1646 iTrace->Trace(_L("COMASUPLProtocolManager1::SettingsUICompletedL"), KTraceFileName, __LINE__); |
|
1647 iSuplSettings->SetUIActive(EFalse); |
|
1648 |
|
1649 if (iDeInitDone) |
|
1650 { |
|
1651 iTrace->Trace(_L("COMASUPLProtocolManager1::SettingsUICompletedL, de-init done. Completing request"), KTraceFileName, __LINE__); |
|
1652 iDeInitDone = EFalse; |
|
1653 User::RequestComplete(iDeInitRequestStatus,KErrNone); |
|
1654 } |
|
1655 else |
|
1656 { |
|
1657 for(TInt i = 0; i < iUIRequestArray.Count(); i++) |
|
1658 { |
|
1659 iTrace->Trace(_L("COMASUPLProtocolManager1::SettingsUICompletedL,Forwarding ConnRerquestor "), KTraceFileName, __LINE__); |
|
1660 MOMASuplUICompletionObserver* observer = iUIRequestArray[i]; |
|
1661 observer->SettingsUICompletedL(aError); |
|
1662 } |
|
1663 |
|
1664 } |
|
1665 |
|
1666 iCurrentlyUsedHslp.Copy(_L("")); |
|
1667 iUIRequestArray.Reset(); |
|
1668 } |
|
1669 |
|
1670 |
|
1671 // ----------------------------------------------------------------------------- |
|
1672 // COMASUPLProtocolManager1::DeInitialize |
|
1673 // |
|
1674 // |
|
1675 // ----------------------------------------------------------------------------- |
|
1676 // |
|
1677 void COMASUPLProtocolManager1::DeInitialize(TRequestStatus& aDeInitRequestStatus) |
|
1678 { |
|
1679 iTrace->Trace(_L("COMASUPLProtocolManager1::DeInitialize"), KTraceFileName, __LINE__); |
|
1680 iDeInitRequestStatus = & aDeInitRequestStatus; |
|
1681 *iDeInitRequestStatus = KRequestPending; |
|
1682 |
|
1683 // If settings UI is not active, complete the request immediately |
|
1684 if (!iSuplSettings->IsUIActive()) |
|
1685 { |
|
1686 iTrace->Trace(_L("DeInitialize, UI is not active, Completing request"), KTraceFileName, __LINE__); |
|
1687 User::RequestComplete(iDeInitRequestStatus,KErrNone); |
|
1688 } |
|
1689 else |
|
1690 { |
|
1691 iDeInitDone = ETrue; |
|
1692 } |
|
1693 } |
|
1694 |
|
1695 // ----------------------------------------------------------------------------- |
|
1696 // COMASUPLProtocolManager1::CancelDeInitialize |
|
1697 // |
|
1698 // |
|
1699 // ----------------------------------------------------------------------------- |
|
1700 // |
|
1701 void COMASUPLProtocolManager1::CancelDeInitialize() |
|
1702 { |
|
1703 iTrace->Trace(_L("COMASUPLProtocolManager1::CancelDeInitialize"), KTraceFileName, __LINE__); |
|
1704 iDeInitDone = EFalse; |
|
1705 if(iDeInitRequestStatus) |
|
1706 User::RequestComplete(iDeInitRequestStatus,KErrCancel); |
|
1707 } |
|
1708 |
|
1709 // ----------------------------------------------------------------------------- |
|
1710 // COMASUPLProtocolManager1::GetNetworkModeL |
|
1711 // Logs |
|
1712 // ----------------------------------------------------------------------------- |
|
1713 TInt COMASUPLProtocolManager1::GetNetworkModeL() |
|
1714 { |
|
1715 TInt networkMode; |
|
1716 // get network mode |
|
1717 CRepository* centralRepository = CRepository::NewLC(KCRUidCoreApplicationUIs); |
|
1718 User::LeaveIfError(centralRepository->Get(KCoreAppUIsNetworkConnectionAllowed, networkMode)); |
|
1719 CleanupStack::PopAndDestroy(centralRepository); |
|
1720 return networkMode; |
|
1721 } |
|
1722 |
|
1723 // ----------------------------------------------------------------------------- |
|
1724 // COMASUPLProtocolManager1::LaunchSuplUsageSettingsUI |
|
1725 // |
|
1726 // |
|
1727 // ----------------------------------------------------------------------------- |
|
1728 // |
|
1729 TInt COMASUPLProtocolManager1::LaunchSuplUsageSettingsUI(MOMASuplUICompletionObserver* aObserver, TBool aRoaming) |
|
1730 { |
|
1731 iTrace->Trace(_L("COMASUPLProtocolManager1::LaunchSuplUsageSettingsUI"), KTraceFileName, __LINE__); |
|
1732 if (iSuplSettings->IsUIActive() && !iTimeOutDialogPresent) |
|
1733 return KErrInUse; |
|
1734 // If timeout dialog is present, close it |
|
1735 if (iTimeOutDialogPresent) |
|
1736 { |
|
1737 iTimeOutDialogPresent = EFalse; |
|
1738 iSuplSettings->SetUIActive(EFalse); |
|
1739 iSettingsLauncher->Cancel(); |
|
1740 } |
|
1741 iSessnUIObserver = aObserver; |
|
1742 iSuplSettings->SetUIActive(ETrue); |
|
1743 return iSettingsLauncher->LaunchSuplUsageSettingsUI(aRoaming); |
|
1744 } |
|
1745 |
|
1746 // ----------------------------------------------------------------------------- |
|
1747 // COMASUPLProtocolManager1::SettingsUsageUICompletedL |
|
1748 // |
|
1749 // |
|
1750 // ----------------------------------------------------------------------------- |
|
1751 // |
|
1752 void COMASUPLProtocolManager1::SettingsUsageUICompletedL(TInt aError) |
|
1753 { |
|
1754 iTrace->Trace(_L("COMASUPLProtocolManager1::SettingsUsageUICompletedL"), KTraceFileName, __LINE__); |
|
1755 iSuplSettings->SetUIActive(EFalse); |
|
1756 |
|
1757 if (iDeInitDone) |
|
1758 { |
|
1759 iTrace->Trace(_L("COMASUPLProtocolManager1::SettingsUsageUICompletedL, de-init done. Completing request"), KTraceFileName, __LINE__); |
|
1760 iDeInitDone = EFalse; |
|
1761 User::RequestComplete(iDeInitRequestStatus,KErrNone); |
|
1762 } |
|
1763 else |
|
1764 { |
|
1765 if (iSessnUIObserver) |
|
1766 iSessnUIObserver->SettingsUsageUICompletedL(aError); |
|
1767 } |
|
1768 |
|
1769 CheckOutstandingUsageUIRequestsL(); |
|
1770 } |
|
1771 |
|
1772 // ----------------------------------------------------------------------------- |
|
1773 // COMASUPLProtocolManager1::ReadSuplUsage |
|
1774 // Reads Supl Usage from Central Repository |
|
1775 // |
|
1776 // ----------------------------------------------------------------------------- |
|
1777 // |
|
1778 void COMASUPLProtocolManager1::ReadSuplUsage() |
|
1779 { |
|
1780 iTrace->Trace(_L("COMASUPLProtocolManager1::ReadSuplUsage start"), KTraceFileName, __LINE__); |
|
1781 CSuplSettings::TSuplSettingsUsage suplUsage; |
|
1782 TInt err = iSuplStorageSettings->GetSuplUsage(suplUsage); |
|
1783 if(err == KErrNone ) |
|
1784 { |
|
1785 iSuplSettings->SetSUPLUsage(suplUsage); |
|
1786 } |
|
1787 iTrace->Trace(_L("COMASUPLProtocolManager1::ReadSuplUsage end"), KTraceFileName, __LINE__); |
|
1788 } |
|
1789 |
|
1790 void COMASUPLProtocolManager1::UpdateAllSubSessnsInSameSession(TInt aIpcSessionId) |
|
1791 { |
|
1792 TInt TotalSession = iSuplSessions.Count(); |
|
1793 COMASuplSession* OMAsuplSession = NULL; |
|
1794 |
|
1795 for(TInt cnt = 0; cnt < TotalSession; ++cnt) |
|
1796 { |
|
1797 OMAsuplSession = static_cast<COMASuplSession*>(iSuplSessions[cnt]); |
|
1798 TInt ipcSessnId = OMAsuplSession->SuplIpcSessionID(); |
|
1799 |
|
1800 if (ipcSessnId > 0 && ipcSessnId == aIpcSessionId) |
|
1801 OMAsuplSession->UpdateSuplUsage(); |
|
1802 } |
|
1803 } |
|
1804 |
|
1805 |
|
1806 void COMASUPLProtocolManager1::SettingsChanged() |
|
1807 { |
|
1808 TInt TotalSession = iSuplSessions.Count(); |
|
1809 COMASuplSession* OMAsuplSession = NULL; |
|
1810 |
|
1811 for(TInt cnt = 0; cnt < TotalSession; ++cnt) |
|
1812 { |
|
1813 OMAsuplSession = static_cast<COMASuplSession*>(iSuplSessions[cnt]); |
|
1814 OMAsuplSession->SettingsChanged(); |
|
1815 } |
|
1816 } |
|
1817 |
|
1818 void COMASUPLProtocolManager1::CheckOutstandingUsageUIRequestsL() |
|
1819 { |
|
1820 TInt TotalSession = iSuplSessions.Count(); |
|
1821 COMASuplSession* OMAsuplSession = NULL; |
|
1822 |
|
1823 for(TInt cnt = 0; cnt < TotalSession; ++cnt) |
|
1824 { |
|
1825 OMAsuplSession = static_cast<COMASuplSession*>(iSuplSessions[cnt]); |
|
1826 |
|
1827 if (OMAsuplSession->GetSuplUsageFlag()) |
|
1828 { |
|
1829 OMAsuplSession->StartUsageDialogLaunchL(); |
|
1830 break; |
|
1831 } |
|
1832 } |
|
1833 } |
|
1834 |
|
1835 void COMASUPLProtocolManager1::CheckForRoaming() |
|
1836 { |
|
1837 iTrace->Trace(_L("COMASUPLProtocolManager1::CheckForRoaming"), KTraceFileName, __LINE__); |
|
1838 if (iRoamingCheckStarted) |
|
1839 return; |
|
1840 iRoamingCheckStarted = ETrue; |
|
1841 iNotifier->CheckForRoaming(); |
|
1842 } |
|
1843 |
|
1844 void COMASUPLProtocolManager1::NotifyCurrentNetworkChange() |
|
1845 { |
|
1846 iTrace->Trace(_L("COMASUPLProtocolManager1::NotifyCurrentNetworkChange"), KTraceFileName, __LINE__); |
|
1847 if (iNotifyStarted) |
|
1848 return; |
|
1849 iNotifyStarted = ETrue; |
|
1850 iNotifier->NotifyCurrentNetworkChange(); |
|
1851 } |
|
1852 |
|
1853 void COMASUPLProtocolManager1::CancelNotify() |
|
1854 { |
|
1855 iTrace->Trace(_L("COMASUPLProtocolManager1::CancelNotify"), KTraceFileName, __LINE__); |
|
1856 // Cancel only none of the the sessions currently requested |
|
1857 // for network change notification |
|
1858 TInt TotalSession = iSuplSessions.Count(); |
|
1859 TInt notifyCount=0; |
|
1860 COMASuplSession* OMAsuplSession = NULL; |
|
1861 |
|
1862 for(TInt cnt = 0; cnt < TotalSession; ++cnt) |
|
1863 { |
|
1864 OMAsuplSession = static_cast<COMASuplSession*>(iSuplSessions[cnt]); |
|
1865 if (OMAsuplSession->IsEtelNotifySet()) |
|
1866 { |
|
1867 notifyCount++; |
|
1868 break; |
|
1869 } |
|
1870 } |
|
1871 if (notifyCount == 0) |
|
1872 { |
|
1873 iNotifyStarted = EFalse; |
|
1874 iNotifier->Cancel(); |
|
1875 } |
|
1876 } |
|
1877 |
|
1878 void COMASUPLProtocolManager1::HandleCurrentNetworkChangeL(TInt aErrorCode, TBool aHomeNw) |
|
1879 { |
|
1880 iTrace->Trace(_L("COMASUPLProtocolManager1::HandleCurrentNetworkChangeL"), KTraceFileName, __LINE__); |
|
1881 TInt TotalSession = iSuplSessions.Count(); |
|
1882 COMASuplSession* OMAsuplSession = NULL; |
|
1883 |
|
1884 for(TInt cnt = 0; cnt < TotalSession; ++cnt) |
|
1885 { |
|
1886 OMAsuplSession = static_cast<COMASuplSession*>(iSuplSessions[cnt]); |
|
1887 if (OMAsuplSession->IsEtelNotifySet()) |
|
1888 { |
|
1889 OMAsuplSession->HandleCurrentNetworkChangeL(aErrorCode, aHomeNw); |
|
1890 break; |
|
1891 } |
|
1892 } |
|
1893 } |
|
1894 |
|
1895 void COMASUPLProtocolManager1::HandleRoamingCheckCompleteL(TInt aErrorCode, TBool aHomeNw) |
|
1896 { |
|
1897 iTrace->Trace(_L("COMASUPLProtocolManager1::HandleRoamingCheckCompleteL"), KTraceFileName, __LINE__); |
|
1898 iRoamingCheckStarted = EFalse; |
|
1899 TInt TotalSession = iSuplSessions.Count(); |
|
1900 COMASuplSession* OMAsuplSession = NULL; |
|
1901 |
|
1902 for(TInt cnt = 0; cnt < TotalSession; ++cnt) |
|
1903 { |
|
1904 OMAsuplSession = static_cast<COMASuplSession*>(iSuplSessions[cnt]); |
|
1905 if (OMAsuplSession->IsEtelRoamingSet()) |
|
1906 { |
|
1907 OMAsuplSession->HandleRoamingCheckCompleteL(aErrorCode, aHomeNw); |
|
1908 break; |
|
1909 } |
|
1910 } |
|
1911 } |
|
1912 |
|
1913 // ----------------------------------------------------------------------------- |
|
1914 // COMASUPLProtocolManager1::LaunchSuplDialogTimeoutUI |
|
1915 // |
|
1916 // |
|
1917 // ----------------------------------------------------------------------------- |
|
1918 // |
|
1919 TInt COMASUPLProtocolManager1::LaunchSuplDialogTimeoutUI(MOMASuplUICompletionObserver* aObserver ) |
|
1920 { |
|
1921 iTrace->Trace(_L("COMASUPLProtocolManager1::LaunchTimeOutUI"), KTraceFileName, __LINE__); |
|
1922 |
|
1923 iSessnUIObserver = aObserver; |
|
1924 if (iSuplSettings->IsUIActive()) |
|
1925 { |
|
1926 iSuplSettings->SetUIActive(EFalse); |
|
1927 iSettingsLauncher->Cancel(); |
|
1928 } |
|
1929 |
|
1930 iSuplSettings->SetUIActive(ETrue); |
|
1931 iTimeOutDialogPresent = ETrue; |
|
1932 return iSettingsLauncher->LaunchSessionTimeOutDialog(); |
|
1933 } |
|
1934 |
|
1935 // ----------------------------------------------------------------------------- |
|
1936 // COMASUPLProtocolManager1::SettingsTimeOutUICompletedL |
|
1937 // |
|
1938 // |
|
1939 // ----------------------------------------------------------------------------- |
|
1940 // |
|
1941 void COMASUPLProtocolManager1::SettingsTimeOutUICompletedL(TInt aError) |
|
1942 { |
|
1943 iTrace->Trace(_L("COMASUPLProtocolManager1::SettingsTimeOutUICompletedL"), KTraceFileName, __LINE__); |
|
1944 iSuplSettings->SetUIActive(EFalse); |
|
1945 iTimeOutDialogPresent = EFalse; |
|
1946 |
|
1947 if (iDeInitDone) |
|
1948 { |
|
1949 iTrace->Trace(_L("COMASUPLProtocolManager1::SettingsTimeOutUICompletedL, Completing request"), KTraceFileName, __LINE__); |
|
1950 iDeInitDone = EFalse; |
|
1951 User::RequestComplete(iDeInitRequestStatus,KErrNone); |
|
1952 } |
|
1953 else |
|
1954 { |
|
1955 if (iSessnUIObserver) |
|
1956 iSessnUIObserver->SettingsTimeOutUICompletedL(aError); |
|
1957 } |
|
1958 } |
|
1959 |
|
1960 // ----------------------------------------------------------------------------- |
|
1961 // COMASUPLProtocolManager1::GetLastUsedAccessPoint |
|
1962 // |
|
1963 // ----------------------------------------------------------------------------- |
|
1964 // |
|
1965 TInt COMASUPLProtocolManager1::GetLastUsedAccessPoint(TDes& aLastlyUsedAccessPoint,TUint32& iIAPId) |
|
1966 { |
|
1967 return iSettingsLauncher->GetIAPName(aLastlyUsedAccessPoint,iIAPId); |
|
1968 } |
|
1969 |
|
1970 // ----------------------------------------------------------------------------- |
|
1971 // COMASUPLProtocolManager1::PrintHex |
|
1972 // |
|
1973 // ----------------------------------------------------------------------------- |
|
1974 // |
|
1975 void COMASUPLProtocolManager1::PrintHex(const TDesC8& aBuffer,TInt aLine) |
|
1976 { |
|
1977 TBuf<128> buffer; |
|
1978 TBuf<8> buff; |
|
1979 _LIT16(KFormat1,"%02x"); |
|
1980 TInt len = aBuffer.Length(); |
|
1981 for(TInt i = 0 ; i <len; i++) |
|
1982 { |
|
1983 buff.Zero(); |
|
1984 buff.Format(KFormat1,aBuffer[i]); |
|
1985 iTrace->Trace(buff, KTraceFileName, aLine); |
|
1986 } |
|
1987 } |
|
1988 |
|
1989 // ----------------------------------------------------------------------------- |
|
1990 // COMASUPLProtocolManager1::RunSuplTriggerSessionL |
|
1991 // |
|
1992 // |
|
1993 // ----------------------------------------------------------------------------- |
|
1994 // |
|
1995 void COMASUPLProtocolManager1::RunSuplTriggerSessionL( |
|
1996 CSuplSessionBase *const /*aSuplSession*/, |
|
1997 TRequestStatus& /*aStatus*/, |
|
1998 TSuplTerminalPeriodicTrigger& /*aPTrigger*/, |
|
1999 const TDesC& /*aHslpAddress*/, |
|
2000 TInt /*aAllowedCapabilities*/, |
|
2001 TBool /*aFallBack*/, |
|
2002 TInt /*aRequestID*/) |
|
2003 { |
|
2004 User::Leave(KErrNotSupported); |
|
2005 } |
|
2006 |
|
2007 |
|
2008 // ----------------------------------------------------------------------------- |
|
2009 // COMASUPLProtocolManager1::NotifyTriggerFiredL |
|
2010 // |
|
2011 // |
|
2012 // ----------------------------------------------------------------------------- |
|
2013 // |
|
2014 void COMASUPLProtocolManager1::NotifyTriggerFiredL( |
|
2015 CSuplSessionBase *const /*aSuplSession*/, |
|
2016 TRequestStatus& /*aStatus*/, |
|
2017 TSuplTriggerFireInfo& /*aFireInfo*/ |
|
2018 ) |
|
2019 { |
|
2020 User::Leave(KErrNotSupported); |
|
2021 } |
|
2022 |
|
2023 // ----------------------------------------------------------------------------- |
|
2024 // COMASUPLProtocolManager::InitilizationCompletedL |
|
2025 // Informs to client about Initilization of POS ,thro' active object |
|
2026 // |
|
2027 // ----------------------------------------------------------------------------- |
|
2028 // |
|
2029 void COMASUPLProtocolManager1::InitilizationCompletedL(TInt /*aError*/) |
|
2030 { |
|
2031 |
|
2032 } |
|
2033 |
|
2034 |
|
2035 // ----------------------------------------------------------------------------- |
|
2036 // COMASUPLProtocolManager::DeInitilizationCompletedL |
|
2037 // Informs to client about Initilization of POS ,thro' active object |
|
2038 // |
|
2039 // ----------------------------------------------------------------------------- |
|
2040 // |
|
2041 void COMASUPLProtocolManager1::DeInitilizationCompletedL(TInt /*aError*/) |
|
2042 { |
|
2043 |
|
2044 } |
|
2045 |
|
2046 // ----------------------------------------------------------------------------- |
|
2047 // COMASUPLProtocolManager1::SetCommoniCommonConfig |
|
2048 // |
|
2049 // |
|
2050 // ----------------------------------------------------------------------------- |
|
2051 // |
|
2052 void COMASUPLProtocolManager1::SetCommonConfig(COMASuplCommonConfig*& aCommmonConfig) |
|
2053 { |
|
2054 iSuplSettings = aCommmonConfig->iSuplSettings; |
|
2055 iPosHandler = aCommmonConfig->iPosHandler; |
|
2056 iIMSI = aCommmonConfig->iIMSI; |
|
2057 iUT1_StartTimer = aCommmonConfig->iUT1_StartTimer; |
|
2058 iUT2_PosInitTimer = aCommmonConfig->iUT2_PosInitTimer; |
|
2059 iUT3_PosTimer = aCommmonConfig->iUT3_PosTimer; |
|
2060 iPrivacyTimer = aCommmonConfig->iPrivacyTimer; |
|
2061 iSETMode = aCommmonConfig->iSETMode; |
|
2062 iSuplUsage = aCommmonConfig->iSuplUsage; |
|
2063 iSuplInitTimeOut = aCommmonConfig->iSuplInitTimeOut; |
|
2064 iPersistFailTimer = aCommmonConfig->iPersistFailTimer; |
|
2065 } |
|
2066 |
|
2067 // end of file |