supl/locationomasuplprotocolhandler/protocolhandlerver2/src/epos_comasupletelnotifier.cpp
changeset 0 667063e416a2
child 4 42de37ce7ce4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver2/src/epos_comasupletelnotifier.cpp	Tue Feb 02 01:06:48 2010 +0200
@@ -0,0 +1,253 @@
+/*
+* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:   Implementation of Notifier class of ETel
+*
+*/
+
+
+
+// INCLUDE FILES
+#include "epos_comasupltrace.h"
+#include "epos_comasupletelnotifier.h"
+#include "epos_comasupllocationid.h"
+
+_LIT(KTraceFileName,"SUPL_OMA_SESSION::EPos_COMASuplETelNotifier.cpp");
+
+// ============================ MEMBER FUNCTIONS OF COMASuplETelNotifier ===============================
+
+// -----------------------------------------------------------------------------
+// COMASuplETelNotifier::COMASuplETelNotifier,constuctor
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+
+COMASuplETelNotifier::COMASuplETelNotifier(MOMASuplETelNotifierObserver& aObserver,RMobilePhone& aPhone) 
+					    : CActive(EPriorityStandard),
+					      iPhone(aPhone),
+					      iNetworkInfoPkg( iNetworkInfo),
+					      iHomeNetworkInfoPkg( iHomeNetworkInfo),
+					      iObserver(aObserver)
+	{
+		 CActiveScheduler::Add(this);            
+	}
+
+// -----------------------------------------------------------------------------
+// COMASuplETelNotifier::ConstructL,two phase constuctor
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void COMASuplETelNotifier::ConstructL()
+    {
+    iCellMode = EOMASuplNone;
+    iTrace = COMASuplTrace::NewL();	
+    iTrace->Trace(_L("COMASuplETelNotifier::ConstructL"), KTraceFileName, __LINE__); 
+    }
+
+// -----------------------------------------------------------------------------
+// COMASuplETelNotifier::NewL,two phase constuctor
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+COMASuplETelNotifier* COMASuplETelNotifier::NewL(MOMASuplETelNotifierObserver& aObserver,
+								 RMobilePhone& aPhone)
+    {
+    COMASuplETelNotifier* self = new( ELeave ) COMASuplETelNotifier(aObserver,aPhone);
+    
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop(self);
+
+    return self;
+    }
+
+
+// -----------------------------------------------------------------------------
+// COMASuplETelNotifier::DoCancel
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void COMASuplETelNotifier::DoCancel()
+    {
+    	if(iCellMode == EOMASuplCellIdHome)
+    		{
+            iTrace->Trace(_L("COMASuplETelNotifier, cancel home"), KTraceFileName, __LINE__); 
+    		iPhone.CancelAsyncRequest(EMobilePhoneGetCurrentNetwork);            
+    		}
+    	else if(iCellMode == EOMASuplCellIdCurrent)
+    		{
+            iTrace->Trace(_L("COMASuplETelNotifier, cancel current"), KTraceFileName, __LINE__); 
+    		iPhone.CancelAsyncRequest(EMobilePhoneGetHomeNetwork);            
+    		}	
+    	else if (iCellMode == EOMASuplCellIdNotify)
+    		{
+            iTrace->Trace(_L("COMASuplETelNotifier, cancel notify"), KTraceFileName, __LINE__); 
+            iPhone.CancelAsyncRequest(EMobilePhoneNotifyCurrentNetworkChange);                    
+    		}	
+    }            
+
+// -----------------------------------------------------------------------------
+// COMASuplETelNotifier::~COMASuplETelNotifier,Destructor
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+COMASuplETelNotifier::~COMASuplETelNotifier()
+    {
+        if (IsActive())            
+    	    Cancel();
+    	delete iTrace;
+    }
+            
+// -----------------------------------------------------------------------------
+// COMASuplETelNotifier::CheckForRoaming,For retriving the cell id information
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void COMASuplETelNotifier::CheckForRoaming()
+    {
+	iCellMode = EOMASuplCellIdHome;
+    iTrace->Trace(_L("COMASuplETelNotifier::CheckForRoaming..."),KTraceFileName, __LINE__); 							
+    iPhone.GetHomeNetwork( iStatus, iHomeNetworkInfoPkg);
+    SetActive();            
+    }  
+      
+// -----------------------------------------------------------------------------
+// COMASuplETelNotifier::CheckForRoaming,For retriving the cell id information
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void COMASuplETelNotifier::GetCurrentNetwork()
+    {
+	iCellMode = EOMASuplCellIdCurrent;
+    iTrace->Trace(_L("COMASuplETelNotifier::GetCurrentNetwork..."),KTraceFileName, __LINE__); 							
+    iPhone.GetCurrentNetwork( iStatus, iNetworkInfoPkg, iLocationInfo );
+    SetActive();            
+    }  
+
+// -----------------------------------------------------------------------------
+// COMASuplETelNotifier::CheckForRoaming,For retriving the cell id information
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void COMASuplETelNotifier::NotifyCurrentNetworkChange()
+    {
+	iCellMode = EOMASuplCellIdNotify;
+    iTrace->Trace(_L("COMASuplETelNotifier::NotifyCurrentNetworkChange..."),KTraceFileName, __LINE__);
+    iPhone.NotifyCurrentNetworkChange( iStatus, iNetworkInfoPkg, iLocationInfo );
+    SetActive();            
+    }  
+      
+// -----------------------------------------------------------------------------
+// COMASuplETelNotifier::RunL
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void COMASuplETelNotifier::RunL()
+    {
+    if (iStatus == KErrNone)
+        {       
+        	if(iCellMode == EOMASuplCellIdHome)
+        		{
+        		GetCurrentNetwork();
+        		}
+            else if (iCellMode == EOMASuplCellIdCurrent)
+                {
+                    CompeteRoamingCheckL();                                        
+                }
+            else 
+                {
+                    NotifyCurrentNetworkChange();
+                    CompareForRoamingL();
+                }                        
+        }
+    else
+        {
+        	if(iCellMode == EOMASuplCellIdHome)
+	    		{
+					// Error while processing
+					iTrace->Trace(_L("Error in getting Home network"),KTraceFileName, __LINE__); 							
+					iObserver.HandleCurrentNetworkChangeL(iStatus.Int(), ETrue);    
+	    		}
+        	if(iCellMode == EOMASuplCellIdCurrent)
+	    		{
+					// Error while processing
+					iTrace->Trace(_L("Error in getting Current network"),KTraceFileName, __LINE__);
+					iObserver.HandleCurrentNetworkChangeL(iStatus.Int(), ETrue);    
+	    		}
+            else
+	    		{
+					// Error while processing
+					iTrace->Trace(_L("Error in getting Notify Current network change"),KTraceFileName, __LINE__);
+					iObserver.HandleCurrentNetworkChangeL(iStatus.Int(), ETrue);    
+	    		}
+        }                
+    }
+
+// -----------------------------------------------------------------------------
+// COMASuplETelNotifier::RunError, Will be called by framework,if RunL leaves.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt COMASuplETelNotifier::RunError(TInt aError)
+	{
+		if(iCellMode == EOMASuplCellIdHome)
+		{
+			// Error while processing
+			iTrace->Trace(_L("RunL leaved for Home Network"),KTraceFileName, __LINE__);
+		}
+		else if(iCellMode == EOMASuplCellIdCurrent)
+		{
+			// Error while processing
+			iTrace->Trace(_L("RunL leaved for Current Network"),KTraceFileName, __LINE__);
+		}	
+		{
+			// Error while processing
+			iTrace->Trace(_L("RunL leaved for Current Network change notification"),KTraceFileName, __LINE__);
+		}	
+		TRAP_IGNORE(iObserver.HandleCurrentNetworkChangeL(aError, ETrue));    
+		
+	return KErrNone;
+	}
+
+void COMASuplETelNotifier::CompareForRoamingL()
+    {
+    TInt64  currMNC=0;
+    TLex LexcurrMNC(iNetworkInfo.iNetworkId);
+    LexcurrMNC.Val(currMNC);
+
+    TInt64  homeMNC=0;
+    TLex LexhomeMNC(iHomeNetworkInfo.iNetworkId);
+    LexhomeMNC.Val(homeMNC);
+
+    if (currMNC != homeMNC)
+        iObserver.HandleCurrentNetworkChangeL(KErrNone, EFalse);    
+    else
+        iObserver.HandleCurrentNetworkChangeL(KErrNone, ETrue);    
+    }        
+
+void COMASuplETelNotifier::CompeteRoamingCheckL()
+    {
+    TInt64  currMNC=0;
+    TLex LexcurrMNC(iNetworkInfo.iNetworkId);
+    LexcurrMNC.Val(currMNC);
+
+    TInt64  homeMNC=0;
+    TLex LexhomeMNC(iHomeNetworkInfo.iNetworkId);
+    LexhomeMNC.Val(homeMNC);
+
+    if (currMNC != homeMNC)
+        iObserver.HandleRoamingCheckCompleteL(KErrNone, EFalse);    
+    else
+        iObserver.HandleRoamingCheckCompleteL(KErrNone, ETrue);    
+    }        
+//  End of File