supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplsession.cpp
changeset 32 b12ea03c50a3
parent 25 73f6c2762ffe
child 39 3efc7a0e8755
--- a/supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplsession.cpp	Thu May 27 13:18:17 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplsession.cpp	Wed Jun 23 18:40:52 2010 +0300
@@ -128,7 +128,7 @@
 																iEtelRoamingCheck(EFalse),
 																iIapDialogShown(EFalse),
 																iIapDlgTimerExpired(EFalse),
-																iOMASuplAsnHandlerBaseImpl(aOMASuplAsnHandlerBase)
+																iOMASuplAsnHandlerBaseImpl(aOMASuplAsnHandlerBase),iWlanOnly(EFalse)
 																
     { 
     }
@@ -435,7 +435,7 @@
 //
  void COMASuplSession::RunSuplSessionL(TRequestStatus& aStatus, TBool aFirstReq, const TDesC& aHslpAddress, 
                                        TBool aFallBack, TInt aAllowedCapabilities,
- 									  TInt aSessionIdSeed,TInt aRequestID)
+ 									  TInt aSessionIdSeed,TInt aRequestID,TBool aIsStaleCellId,COMASuplLocationId* aLocationId,TBool aPrompt,TBool aWlanOnly)
     {
     	
     		iSessionStartTime1.HomeTime();
@@ -448,7 +448,32 @@
         iRequestID = aRequestID;
 
     	iTrace->Trace(_L("Start COMASuplSession::RunSuplSession"), KTraceFileName, __LINE__); 
-    	
+
+    	if(aIsStaleCellId)
+    	    {
+    	    iTrace->Trace(_L("Start COMASuplSession::RunSuplSession for Stale Cell Id"), KTraceFileName, __LINE__); 
+    	    iIsStaleLocIdPresent = ETrue;
+
+     	    
+    	    if(iStaleLocationId)
+    	        {
+    	        delete iStaleLocationId;
+    	        iStaleLocationId = NULL;
+    	        }   	        
+
+    	    iStaleLocationId = aLocationId;
+    	    iStaleLocIdPrompt = aPrompt;
+    	    iWlanOnly = aWlanOnly; //OCC
+    	    
+    	    iTrace->Trace(_L("Deleting pos requestor as session is for Stale Cell Id"), KTraceFileName, __LINE__); 
+            delete iOMASuplPOSRequestor;
+             iOMASuplPOSRequestor = NULL;
+             
+    	    // Delete the POS Session
+    	     delete iPOSSession;
+    	     iPOSSession = NULL;    	     
+
+    	    }
     	// Log Session Id
     	TBuf<64> id;
     	id.Append(_L("Session  Id is "));
@@ -461,23 +486,27 @@
     	iTrace->Trace(id,KTraceFileName, __LINE__); 
     	
     	iSETSessionUniqueId = aSessionIdSeed;
-
+    	
+		iIhaveLaunchedUsagedialog = EFalse;
 		
 		TInt networkMode = 1;
 		networkMode = GetNetworkModeL();
 		
-		if ( networkMode == ECoreAppUIsNetworkConnectionNotAllowed )
-			{
-				id.Copy(_L("The device is in OFFLINE mode."));
-				iTrace->Trace(id,KTraceFileName, __LINE__); 
-				iSessionObserver.TerminateSession(this, KErrGeneral);
-				return;
-			}
-		else
-			{
-				id.Copy(_L("The device is in ON LINE mode."));
-				iTrace->Trace(id,KTraceFileName, __LINE__); 
-			}
+	 if(!iWlanOnly)	//OCC	
+            {
+            if ( networkMode == ECoreAppUIsNetworkConnectionNotAllowed )
+                {
+                    id.Copy(_L("The device is in OFFLINE mode."));
+                    iTrace->Trace(id,KTraceFileName, __LINE__); 
+                    iSessionObserver.TerminateSession(this, KErrGeneral);
+                    return;
+                }
+            else
+                {
+                    id.Copy(_L("The device is in ON LINE mode."));
+                    iTrace->Trace(id,KTraceFileName, __LINE__); 
+                }
+            } //OCC
 
     	if(aAllowedCapabilities == 0)
     		{
@@ -492,11 +521,35 @@
 		iSuplSessionId->SetSLPSessionID(NULL); 	
 		
 		iConnRequestor->SetDefaultParametersL(aHslpAddress,aFallBack);
-
-        if (aFirstReq)
-            CheckForSuplUsageL();
-        else
-            CheckForPreviousResultL();        
+		
+		 id.Copy(_L("aFallBack value is "));
+		 id.AppendNum(aFallBack);
+		 iTrace->Trace(id,KTraceFileName, __LINE__);
+
+       if(!iWlanOnly) //OCC
+		    {
+            iTrace->Trace(_L("iWLANOnly false COMASuplSession::RunSuplSession"), KTraceFileName, __LINE__);
+           
+            id.Copy(_L("aFirstReq value is "));
+            id.AppendNum(aFirstReq);
+            iTrace->Trace(id,KTraceFileName, __LINE__);
+            
+            if (aFirstReq)
+                {
+                iTrace->Trace(_L("start CheckForSuplUsageL COMASuplSession::RunSuplSession"), KTraceFileName, __LINE__);
+                CheckForSuplUsageL();
+                }
+            else
+                {
+                iTrace->Trace(_L("start CheckForPreviousResultL COMASuplSession::RunSuplSession"), KTraceFileName, __LINE__);
+                CheckForPreviousResultL();  
+                }
+            }
+		else
+		    {
+		    iTrace->Trace(_L("iWLANOnly true COMASuplSession::RunSuplSession"), KTraceFileName, __LINE__); 
+            InitializeL(iRequestID);
+		    } //OCC     
 
 	    
 		// Clear  Position....
@@ -669,7 +722,13 @@
 				COMASuplStartState* startSuplState =  static_cast <COMASuplPosInitState *>(iSuplState);
 				startSuplState->SetQop(iClientQop);
 			}
-		//SMP Changes
+		if(iIsStaleLocIdPresent)
+		    {
+		    iTrace->Trace(_L("GenerateSuplStartL setting stale location id in supl start"), KTraceFileName, __LINE__);
+		    COMASuplStartState* startSuplState =  static_cast <COMASuplPosInitState *>(iSuplState);
+		    startSuplState->SetStaleCellIdToUse(iStaleLocationId->CloneL());
+		    }
+        iSuplSessionState = ESUPL_GENERATE;
 		iSuplMsgType = ESUPL_START;
 		SetPOSMsgPluginState(COMASuplPosSessionBase::EOMASuplCreating); 	
 		TInt err = iSuplState->GenerateMessageL();
@@ -716,6 +775,12 @@
 			iTrace->Trace(msg, KTraceFileName, __LINE__);
 			iSuplState = COMASuplPosInitState::NewL(iSETCapabilities, iMobilePhone, iUT2_PosInitTimer,
  						 iOMASuplPOSRequestor,iAllowedCapabilities,iRequestType, iPosMethod,iOMASuplAsnHandlerBaseImpl);
+			if(iIsStaleLocIdPresent)
+			    {
+			    iTrace->Trace(_L("COMASuplSession::GenerateSuplPosInitL() Setting Stale Location Id "), KTraceFileName, __LINE__);
+			    COMASuplPosInitState* posInitSuplState =  static_cast <COMASuplPosInitState *>(iSuplState);
+			    posInitSuplState->SetStaleCellIdToUse(iStaleLocationId->CloneL());
+			    }
 		
 		}
 		iSuplState->SetMsgStateObserver(this);
@@ -861,6 +926,7 @@
 //
 void COMASuplSession::OperationCompleteL(TInt aErrorCode)
 	{
+	iTrace->Trace(_L("COMASuplSession::OperationCompleteL"), KTraceFileName, __LINE__); 
 	TBuf<256> msg;
 	if(KErrNone != aErrorCode)
 		{
@@ -873,6 +939,10 @@
 			HandleSuplErrorL(aErrorCode);
 			return;
 		}
+	
+	msg.Copy(_L("iSuplSessionState : "));
+	msg.AppendNum(iSuplSessionState);
+	iTrace->Trace(msg, KTraceFileName, __LINE__); 
 		
 	TInt err = KErrNone;
 	
@@ -934,7 +1004,15 @@
 				 }
 		     else //terminal initiated case
 		         {
-            	TRAP( err, iConnRequestor->CreateConnectionL() );
+                 iTrace->Trace(_L("Connection block."), KTraceFileName, __LINE__);
+            	if(iIsStaleLocIdPresent)
+                     {
+                     TRAP( err, iConnRequestor->CreateConnectionL(iStaleLocIdPrompt,iWlanOnly) );
+                     }
+                 else
+                     {
+                     TRAP( err, iConnRequestor->CreateConnectionL() );
+                     }
 		         }
 			        if(KErrNone != err)
 				        {
@@ -1762,7 +1840,7 @@
 			TInt err = PosEstimate.GetConfidence(confidence);
 			altitude = 0;
 			if (altErr == KErrNone)
-			    AltitudeInfo.GetAltitudeInfo(AltitudeDirection,altitude,AltitudeUncertainty);
+			AltitudeInfo.GetAltitudeInfo(AltitudeDirection,altitude,AltitudeUncertainty);
 			PosEstimate.GetUncertainty(Uncertainty);
             Uncertainty.GetUncertainty(UncertaintySemiMajor,UncertaintySemiMinor,
             							OrientationMajorAxis);