supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplsession.cpp
branchRCL_3
changeset 44 2b4ea9893b66
parent 42 02ba3f1733c6
child 45 6b6920c56e2f
--- a/supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplsession.cpp	Thu Aug 19 10:20:18 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplsession.cpp	Tue Aug 31 15:37:04 2010 +0300
@@ -172,7 +172,7 @@
 		
 		if( aIMSI.Length() )
 		    {
-		    iIMSI.Create( aIMSI );    
+		    User::LeaveIfError(iIMSI.Create( aIMSI ));    
 		    }
 		
 		if(iPosHandler)
@@ -205,6 +205,12 @@
         
         iNetworkPrivacy 	= CPosNetworkPrivacy::NewL();
         
+        #ifdef PRINT_MESSAGE
+        TInt retval = iLogger.Connect();
+        if(retval == KErrNone)
+				iLogger.CreateLog(_L("NFT"),_L("NFT.txt"),EFileLoggingModeAppend);
+				#endif
+        
 		iTrace->Trace(_L("End of COMASuplSession::ConstructL"), KTraceFileName, __LINE__); 
     }
     
@@ -253,7 +259,7 @@
 			SessionEnd();
 			CompleteSession(KErrCancel);
 		}
-		iProtocolManager.CancelUiLaunch();
+
 		delete this;
 	}
 
@@ -316,12 +322,11 @@
         delete iDialogTimer;
         
         delete iNetworkPrivacy;
-
-	if(iStaleLocationId)
-    	  {
-    	  delete iStaleLocationId;
-    	  iStaleLocationId = NULL;
-    	  }  
+        
+        #ifdef PRINT_MESSAGE
+        iLogger.CloseLog();
+				iLogger.Close();
+				#endif
     	
     	if(iTrace)
     		iTrace->Trace(_L("End of ~COMASuplSession::COMASuplSession"), KTraceFileName, __LINE__); 
@@ -432,6 +437,11 @@
                                        TBool aFallBack, TInt aAllowedCapabilities,
  									  TInt aSessionIdSeed,TInt aRequestID,TBool aIsStaleCellId,COMASuplLocationId* aLocationId,TBool aPrompt,TBool aWlanOnly)
     {
+    	
+    		iSessionStartTime1.HomeTime();
+    		
+				
+    	
 	    iRunRequestStatus = & aStatus;
 	    *iRunRequestStatus = KRequestPending;
 
@@ -500,7 +510,7 @@
 
     	if(aAllowedCapabilities == 0)
     		{
-				iAllowedCapabilities = KGpsSETBased | KAutonomousGps| KAFLT | KECID | KEOTD | KOTDOA | KCID; 
+    			iAllowedCapabilities = KGpsSETBased | KAutonomousGps| KAFLT | KECID | KEOTD | KOTDOA | KCID; 
     		}
     	else
     		{
@@ -545,7 +555,7 @@
 		// Clear  Position....
 		delete iPosition;
 		iPosition = NULL;
-
+		
 	    
 		iTrace->Trace(_L("End of COMASuplSession::RunSuplSession"), KTraceFileName, __LINE__); 
     }
@@ -564,7 +574,6 @@
   										TSuplTerminalQop& aQop, TInt aRequestID)
   	{
   	
-        iIhaveLaunchedUsagedialog = EFalse;
   		
 	  	iClientQop = aQop;
 	  	
@@ -720,11 +729,10 @@
 		    startSuplState->SetStaleCellIdToUse(iStaleLocationId->CloneL());
 		    }
         iSuplSessionState = ESUPL_GENERATE;
-        iSuplMsgType = ESUPL_START;
+		iSuplMsgType = ESUPL_START;
+		SetPOSMsgPluginState(COMASuplPosSessionBase::EOMASuplCreating); 	
 		TInt err = iSuplState->GenerateMessageL();
-	
-
-		SetPOSMsgPluginState(COMASuplPosSessionBase::EOMASuplCreating);	
+
 	}  
 	 
 
@@ -862,9 +870,39 @@
     {	
     	if(iRunRequestStatus)
     		{
-    		
+    		TTimeIntervalSeconds timeTaken;
     		TTime currentTime;
     		currentTime.HomeTime();
+    		currentTime.SecondsFrom(iSessionStartTime1,timeTaken);
+    		
+    		#ifdef PRINT_MESSAGE
+    		TBuf<30> bufTime1;
+    		_LIT( KFormatDate, "%d%+02d%+02d:%+02d%+02d%+02d.%+06d");
+    		
+    		TDateTime datetime = iSessionStartTime1.DateTime();
+				bufTime1.Format( KFormatDate, datetime.Year(), 
+				datetime.Month(), datetime.Day(), 
+				datetime.Hour(), datetime.Minute(), 
+				datetime.Second(), datetime.MicroSecond());
+
+				iLogger.Write(_L("Session started at time : "));
+    		iLogger.Write(bufTime1);
+				
+				TBuf<30> bufTime;
+				
+				TDateTime datetime1 = currentTime.DateTime();
+				bufTime.Format( KFormatDate, datetime1.Year(), 
+				datetime1.Month(), datetime1.Day(), 
+				datetime1.Hour(), datetime1.Minute(), 
+				datetime1.Second(), datetime1.MicroSecond());
+				
+				iLogger.Write(_L("Session ended at time : "));
+    		iLogger.Write(bufTime);
+    		iLogger.Write(_L("Time taken : "));
+    		//bufTime.Copy(timeTaken);
+    		iLogger.Write(bufTime);
+    		#endif
+    		
     		iSessionCompletionCode = aCompletionCode;
     		
 			TBuf<64> errorCode;
@@ -2036,128 +2074,126 @@
 //
 void COMASuplSession::HandleOMASuplMessageL(COMASuplAsnMessageBase* aDecodedAsnMessage,TRequestStatus& aStatus,TInt aSessionIdSeed,TInt aErrorCode)
 	{
-	delete iSuplState;
-	iSuplState = NULL;
+		delete iSuplState;
+		iSuplState = NULL;
 		
-	iSETSessionUniqueId = aSessionIdSeed;
-	iRunRequestStatus = & aStatus;
-	*iRunRequestStatus = KRequestPending;
+		iSETSessionUniqueId = aSessionIdSeed;
+		iRunRequestStatus = & aStatus;
+	    *iRunRequestStatus = KRequestPending;
 	    
-	TInt networkMode = 1;
-	networkMode = GetNetworkModeL();
+		TInt networkMode = 1;
+		networkMode = GetNetworkModeL();
 		
-	TBuf<64> msg;
-	if ( networkMode == ECoreAppUIsNetworkConnectionNotAllowed )
-		{
-		msg.Copy(_L("The device is in OFFLINE mode."));
-		iTrace->Trace(msg,KTraceFileName, __LINE__); 
-		iSessionObserver.TerminateSession(this, KErrGeneral);
-		return;
-		}
-	else
-		{
-		msg.Copy(_L("The device is in ON LINE mode."));
-		iTrace->Trace(msg,KTraceFileName, __LINE__); 
-		}
-
-    CSuplSettings::TSuplSettingsUsage usage = iSuplSettings->SUPLUsage();
-
-    if (usage == CSuplSettings::ESuplUsageDisabled)
-        {                
-		msg.Copy(_L("SUPL Usage is disabled"));
-		iTrace->Trace(msg,KTraceFileName, __LINE__); 
-	    iSessionObserver.TerminateSession(this, KErrGeneral);	
-		return;
-        }
+		TBuf<64> msg;
+		if ( networkMode == ECoreAppUIsNetworkConnectionNotAllowed )
+			{
+				msg.Copy(_L("The device is in OFFLINE mode."));
+				iTrace->Trace(msg,KTraceFileName, __LINE__); 
+				iSessionObserver.TerminateSession(this, KErrGeneral);
+				return;
+			}
+		else
+			{
+				msg.Copy(_L("The device is in ON LINE mode."));
+				iTrace->Trace(msg,KTraceFileName, __LINE__); 
+			}
+
+        /*CSuplSettings::TSuplSettingsUsage usage = iSuplSettings->SUPLUsage();
+
+        if (usage == CSuplSettings::ESuplUsageDisabled)
+            {                
+			msg.Copy(_L("SUPL Usage is disabled"));
+			iTrace->Trace(msg,KTraceFileName, __LINE__); 
+	        iSessionObserver.TerminateSession(this, KErrGeneral);	
+			return;
+            }*/
 	    
-	COMASuplAsnMessageBase::TSuplMessageType messageType = aDecodedAsnMessage->MessageType();
+	    COMASuplAsnMessageBase::TSuplMessageType messageType = aDecodedAsnMessage->MessageType();
 	    
-	if(messageType == COMASuplAsnMessageBase::ESUPL_INIT && aErrorCode == KErrNone)
-		{
-	    HandleOMASuplMessageL(aDecodedAsnMessage);
-	    }
-	else //Other messages than SUPL_INIT.... Send End
-	    {
-	    CreateCloneMessageL(aDecodedAsnMessage);		
-	    UpdateSuplSessionIDL();
-
-	    if (iRequestType == ESUPL_NETWORK && messageType == COMASuplAsnMessageBase::ESUPL_INIT)
+	    if(messageType == COMASuplAsnMessageBase::ESUPL_INIT && aErrorCode == KErrNone)
 	    	{
-			ServerAddressCheckForSuplInitL();
+	    		HandleOMASuplMessageL(aDecodedAsnMessage);
 	    	}
- 
-		iSuplSessionState = ESUPL_INITIALIZED;
-		iSuplMsgType = ESUPL_END;
-
-	    if((aErrorCode == KErrCompletion && messageType == COMASuplAsnMessageBase::ESUPL_INIT) ||
-	    	(aErrorCode == KErrOMASuplOutOfRangeParameter && messageType == COMASuplAsnMessageBase::ESUPL_INIT) ||
-	    	(aErrorCode == KErrOMASuplMessageLengthMismatch && messageType == COMASuplAsnMessageBase::ESUPL_INIT) ||
-			(aErrorCode == KErrOMASuplShortFrame && messageType == COMASuplAsnMessageBase::ESUPL_INIT))	    			
-	   		{
-	    	iErrorStatusCode = COMASuplEnd::EUnexpectedDataValue;
-	    	if(aErrorCode == KErrOMASuplMessageLengthMismatch)
-	    		{
-	    		iErrorStatusCode = COMASuplEnd::EProtocolError;
-	    		}
-      		if(aErrorCode == KErrOMASuplShortFrame)
-	    		{
-	    		iErrorStatusCode = COMASuplEnd::EDataMissing;
-	    		}
-			TInt len = iHSLPAddress.Length();
-			HBufC8 *hslpAdress = NULL;
-			if(len > 0)
-				{
-				hslpAdress = HBufC8::NewL(iHSLPAddress.Length());
-				hslpAdress->Des().Copy(iHSLPAddress);
-				}						
-			else if(len ==0)
-				{
-				CServerParams* serverParams = CServerParams::NewL();
-				CleanupStack::PushL(serverParams);
-					
-				if (iSuplStorageSettings->GetDefaultServer(serverParams) == KErrNotFound )
-					{
-					iTrace->Trace(_L("HSLP generated frm IMSI"), KTraceFileName, __LINE__);
-					hslpAdress = HBufC8::NewL(iSuplSettings->SLPAddressfromImsi().Length());
-					hslpAdress->Des().Copy(iSuplSettings->SLPAddressfromImsi());
-					}		
-				else
-					{
-					iTrace->Trace(_L("Sending End with ver for Default HSLP"), KTraceFileName, __LINE__);
-					TInt64 slpId;
-            		TBool aServerEnabled, aSimChangeRemove, aUsageInHomeNw, aEditable;
-					HBufC* serverAddr = HBufC::NewL(KMaxHSLPAddrLen);
-					HBufC* iapName = HBufC::NewL(KMaxIAPLen);
-					CleanupStack::PushL(serverAddr);
-					CleanupStack::PushL(iapName);
-					serverParams->Get(slpId,serverAddr->Des(),iapName->Des(),aServerEnabled, aSimChangeRemove, aUsageInHomeNw, aEditable);
-					hslpAdress = HBufC8::NewL(serverAddr->Length());
-					hslpAdress->Des().Copy(*serverAddr);
+	    else //Other messages than SUPL_INIT.... Send End
+	    	{
+	    		CreateCloneMessageL(aDecodedAsnMessage);		
+	    		UpdateSuplSessionIDL();
+        if (iRequestType == ESUPL_NETWORK && messageType == COMASuplAsnMessageBase::ESUPL_INIT)
+            {
+            ServerAddressCheckForSuplInitL();
+            }
+				iSuplSessionState = ESUPL_INITIALIZED;
+				iSuplMsgType = ESUPL_END;
+
+	    		if((aErrorCode == KErrCompletion && messageType == COMASuplAsnMessageBase::ESUPL_INIT) ||
+	    			(aErrorCode == KErrOMASuplOutOfRangeParameter && messageType == COMASuplAsnMessageBase::ESUPL_INIT) ||
+	    			(aErrorCode == KErrOMASuplMessageLengthMismatch && messageType == COMASuplAsnMessageBase::ESUPL_INIT) ||
+						(aErrorCode == KErrOMASuplShortFrame && messageType == COMASuplAsnMessageBase::ESUPL_INIT))	    			
+	    			{
+	    				iErrorStatusCode = COMASuplEnd::EUnexpectedDataValue;
+	    				if(aErrorCode == KErrOMASuplMessageLengthMismatch)
+	    					{
+	    						iErrorStatusCode = COMASuplEnd::EProtocolError;
+	    					}
+      				if(aErrorCode == KErrOMASuplShortFrame)
+	    					{
+	    						iErrorStatusCode = COMASuplEnd::EDataMissing;
+	    					}
+						TInt len = iHSLPAddress.Length();
+						HBufC8 *hslpAdress = NULL;
+						if(len > 0)
+						{
+							hslpAdress = HBufC8::NewL(iHSLPAddress.Length());
+							hslpAdress->Des().Copy(iHSLPAddress);
+						}
 						
-					CleanupStack::PopAndDestroy(iapName);
-					CleanupStack::PopAndDestroy(serverAddr);
-							
-					}
-				CleanupStack::PopAndDestroy(serverParams);
-				}
-			delete iSuplState;
-			iSuplState = NULL;
-			CleanupStack::PushL(hslpAdress);
-			iSuplState = COMASuplEndState::NewL(iErrorStatusCode,iOMASuplAsnHandlerBaseImpl,iEncodedSuplInit,hslpAdress);
-			CleanupStack::PopAndDestroy(hslpAdress);
-	    	}
-	    else
-	    	{
-	    		iErrorStatusCode = COMASuplEnd::EUnexpectedMessage;
-	    		iSuplState = COMASuplEndState::NewL(iErrorStatusCode,iOMASuplAsnHandlerBaseImpl);
-	    	}	
+						else if(len ==0)
+						{
+                CServerParams* serverParams = CServerParams::NewL();
+                CleanupStack::PushL(serverParams);
+            
+                if (iSuplStorageSettings->GetDefaultServer(serverParams) == KErrNotFound )
+                    {
+                    iTrace->Trace(_L("HSLP generated frm IMSI"), KTraceFileName, __LINE__);
+                    hslpAdress = HBufC8::NewL(iSuplSettings->SLPAddressfromImsi().Length());
+                    hslpAdress->Des().Copy(iSuplSettings->SLPAddressfromImsi());	
+                    }		
+                else
+                    {
+                    iTrace->Trace(_L("Sending End with ver for Default HSLP"), KTraceFileName, __LINE__);
+                    TInt64 slpId;
+                    TBool aServerEnabled, aSimChangeRemove, aUsageInHomeNw, aEditable;
+                    HBufC* serverAddr = HBufC::NewL(KMaxHSLPAddrLen);
+                    HBufC* iapName = HBufC::NewL(KMaxIAPLen);
+                    CleanupStack::PushL(serverAddr);
+                    CleanupStack::PushL(iapName);
+                    serverParams->Get(slpId,serverAddr->Des(),iapName->Des(),aServerEnabled, aSimChangeRemove, aUsageInHomeNw, aEditable);
+                    hslpAdress = HBufC8::NewL(serverAddr->Length());
+                    hslpAdress->Des().Copy(*serverAddr);
+                
+                    CleanupStack::PopAndDestroy(iapName);
+                    CleanupStack::PopAndDestroy(serverAddr);
+                    }
+                CleanupStack::PopAndDestroy(serverParams);
+                }
+            delete iSuplState;
+            iSuplState = NULL;
+						CleanupStack::PushL(hslpAdress);
+						iSuplState = COMASuplEndState::NewL(iErrorStatusCode,iOMASuplAsnHandlerBaseImpl,iEncodedSuplInit,hslpAdress);		
+						CleanupStack::PopAndDestroy(hslpAdress);
+	    			}
+	    		else
+	    			{
+	    				iErrorStatusCode = COMASuplEnd::EUnexpectedMessage;
+	    				iSuplState = COMASuplEndState::NewL(iErrorStatusCode,iOMASuplAsnHandlerBaseImpl);
+	    			}	
 	    			
-	    SetPOSMsgPluginState(COMASuplPosSessionBase::EOMASuplCreating);	
-		iSuplState->SetMsgStateObserver(this);
-		//SMP Changes
-		iSuplState->GenerateMessageL(); //Has to be here because initialisation has to be done for NI case in decode failed scenario.
-		iSuplSessionState = ESUPL_GENERATE;				 
-		}	
+	    		SetPOSMsgPluginState(COMASuplPosSessionBase::EOMASuplCreating);	
+				iSuplState->SetMsgStateObserver(this);
+				//SMP Changes
+        iSuplState->GenerateMessageL(); //Has to be here because initialisation has to be done for NI case in decode failed scenario.
+        iSuplSessionState = ESUPL_GENERATE;
+        }	
 	}
 
 // -----------------------------------------------------------------------------
@@ -2168,11 +2204,10 @@
 //
 void COMASuplSession::HandleOMASuplMessageL(COMASuplAsnMessageBase* aDecodedAsnMessage)
 	{
-    CreateCloneMessageL(aDecodedAsnMessage);
+		CreateCloneMessageL(aDecodedAsnMessage);		
 		if(CheckProtocolVersionL(aDecodedAsnMessage)) //Checks version with supported version
 		{
 			COMASuplAsnMessageBase::TSuplMessageType messageType = aDecodedAsnMessage->MessageType();
-
 			if(messageType != COMASuplAsnMessageBase::ESUPL_POS)
 				{
 					iCompleteSelfRequestor->CompleteSelf(); //This will result in call of RequestCompleted()
@@ -3120,6 +3155,8 @@
 								return;
 							}
 					}
+				//Comment to ignore coverity missing break error
+				//coverity[MISSING_BREAK  :FALSE] 
 				case COMASuplState::ESUPL_POS_INIT:
 				{
 					cancelSendRequestor = EFalse;
@@ -3372,48 +3409,45 @@
 		
 			else if(len ==0)
 				{
-					CServerParams* serverParams = CServerParams::NewL();
-					CleanupStack::PushL(serverParams);
-					
-						if (iSuplStorageSettings->GetDefaultServer(serverParams) == KErrNotFound )
-						{
-						iTrace->Trace(_L("HSLP generated frm IMSI"), KTraceFileName, __LINE__);
-						hslpAdress = HBufC8::NewL(iSuplSettings->SLPAddressfromImsi().Length());
-						CleanupStack::PushL(hslpAdress);
-						hslpAdress->Des().Copy(iSuplSettings->SLPAddressfromImsi());
-						CleanupStack::Pop(hslpAdress);	
-						}
-						else
-						{
-							iTrace->Trace(_L("Default HSLP"), KTraceFileName, __LINE__);
-							TInt64 slpId;
-							TBool aServerEnabled, aSimChangeRemove, aUsageInHomeNw, aEditable;
-							HBufC* serverAddr = HBufC::NewL(KMaxHSLPAddrLen);
-							HBufC* iapName = HBufC::NewL(KMaxIAPLen);
-							CleanupStack::PushL(serverAddr);
-							CleanupStack::PushL(iapName);
-							serverParams->Get(slpId,serverAddr->Des(),iapName->Des(),aServerEnabled, aSimChangeRemove, aUsageInHomeNw, aEditable);
-							hslpAdress = HBufC8::NewL(serverAddr->Length());
-							hslpAdress->Des().Copy(*serverAddr);
-						
-							CleanupStack::PopAndDestroy(iapName);
-							CleanupStack::PopAndDestroy(serverAddr);
-							
-						}
-					CleanupStack::PopAndDestroy(serverParams);	
-					
-				}
-            delete iSuplState;
-            iSuplState = NULL;
-            CleanupStack::PushL(hslpAdress);
-            if(setStatusCode)
-                {
-                iSuplState = COMASuplEndState::NewL(iErrorStatusCode,iOMASuplAsnHandlerBaseImpl,iEncodedSuplInit,hslpAdress);		
-                }
-            else
-                {
-                iSuplState = COMASuplEndState::NewL(iOMASuplAsnHandlerBaseImpl,iEncodedSuplInit,hslpAdress );
-                } 		
+        CServerParams* serverParams = CServerParams::NewL();
+        CleanupStack::PushL(serverParams);
+        
+        if (iSuplStorageSettings->GetDefaultServer(serverParams) == KErrNotFound )
+            {
+            iTrace->Trace(_L("HSLP generated frm IMSI"), KTraceFileName, __LINE__);
+            hslpAdress = HBufC8::NewL(iSuplSettings->SLPAddressfromImsi().Length());
+            hslpAdress->Des().Copy(iSuplSettings->SLPAddressfromImsi());
+            }
+        else
+            {
+            iTrace->Trace(_L("Default HSLP"), KTraceFileName, __LINE__);
+            TInt64 slpId;
+            TBool aServerEnabled, aSimChangeRemove, aUsageInHomeNw, aEditable;
+            HBufC* serverAddr = HBufC::NewL(KMaxHSLPAddrLen);
+            HBufC* iapName = HBufC::NewL(KMaxIAPLen);
+            CleanupStack::PushL(serverAddr);
+            CleanupStack::PushL(iapName);
+            serverParams->Get(slpId,serverAddr->Des(),iapName->Des(),aServerEnabled, aSimChangeRemove, aUsageInHomeNw, aEditable);
+            hslpAdress = HBufC8::NewL(serverAddr->Length());
+            hslpAdress->Des().Copy(*serverAddr);
+        
+            CleanupStack::PopAndDestroy(iapName);
+            CleanupStack::PopAndDestroy(serverAddr);
+            }
+        CleanupStack::PopAndDestroy(serverParams);	
+        }
+
+    delete iSuplState;
+    iSuplState = NULL;
+    CleanupStack::PushL(hslpAdress);
+ 		if(setStatusCode)
+ 			{
+	 			iSuplState = COMASuplEndState::NewL(iErrorStatusCode,iOMASuplAsnHandlerBaseImpl,iEncodedSuplInit,hslpAdress);		
+ 			}
+ 		else
+ 			{
+ 				iSuplState = COMASuplEndState::NewL(iOMASuplAsnHandlerBaseImpl,iEncodedSuplInit,hslpAdress );
+ 			} 		
  			
  		CleanupStack::PopAndDestroy(hslpAdress);
  		
@@ -3427,7 +3461,7 @@
 		//SMP Changes
 		
 		iSuplState->GenerateMessageL();
-		iSuplSessionState = ESUPL_GENERATE;//Has to be here because initialisation has to be done for NI case in reject scenario.
+		iSuplSessionState = ESUPL_GENERATE; // HAs to be here because initialisation has to be complete..
 	
 	}
 
@@ -3867,56 +3901,61 @@
 // -----------------------------------------------------------------------------
 TBool COMASuplSession::CheckProtocolVersionL(COMASuplAsnMessageBase* aDecodedAsn)
 	{
-    TOMASuplVersion version;
-    COMASuplSessionID* SessionID = NULL;
-    aDecodedAsn->MessageBase(version,SessionID);
-    
-    TInt recMajor,recMinor,recServInd;
-    version.SuplVersion(recMajor,recMinor,recServInd);		
-    
-    if(recMajor == KSuplMajorVersion )
-        {
-        return  ETrue;
-        } 
-    else
-        {
-        COMASuplAsnMessageBase::TSuplMessageType messageType = aDecodedAsn->MessageType();
-        if(messageType == COMASuplAsnMessageBase::ESUPL_END) 
-            {
-            iTrace->Trace(_L("Received message is SUPL_END...with wrong Version.Terminating session"), KTraceFileName, __LINE__); 
-            iSessionObserver.TerminateSession(this, KErrCompletion);	
-            }
-        else
-            {
-            iTrace->Trace(_L("Received message with wrong version."), KTraceFileName, __LINE__); 
-
-            delete iSuplState;
-            iSuplMsgType = ESUPL_END;
-            iErrorStatusCode = COMASuplEnd::EVersionNotSupported;	
-            SetPOSMsgPluginState(COMASuplPosSessionBase::EOMASuplCreating);	
-
-            if(iRequestType == ESUPL_NETWORK )
-                {
+		TOMASuplVersion version;
+		COMASuplSessionID* SessionID = NULL;
+		aDecodedAsn->MessageBase(version,SessionID);
+		
+		TInt recMajor,recMinor,recServInd;
+		version.SuplVersion(recMajor,recMinor,recServInd);		
+		
+		if(recMajor == KSuplMajorVersion )
+			{
+				return  ETrue;
+			} 
+		else
+			{
+			COMASuplAsnMessageBase::TSuplMessageType messageType = aDecodedAsn->MessageType();
+			if(messageType == COMASuplAsnMessageBase::ESUPL_END) 
+				{
+					iTrace->Trace(_L("Received message is SUPL_END...with wrong Version.Terminating session"), KTraceFileName, __LINE__); 
+					iSessionObserver.TerminateSession(this, KErrCompletion);	
+				}
+			else
+				{
+					iTrace->Trace(_L("Received message with wrong version."), KTraceFileName, __LINE__); 
+					
+					if (iSuplState)
+					{
+					delete iSuplState;
+					iSuplState = NULL;
+					}
+					iSuplMsgType = ESUPL_END;
+					iErrorStatusCode = COMASuplEnd::EVersionNotSupported;	
+					SetPOSMsgPluginState(COMASuplPosSessionBase::EOMASuplCreating);	
+
+					if(iRequestType == ESUPL_NETWORK )
+					{
                 if (messageType == COMASuplAsnMessageBase::ESUPL_INIT)    
                     {                                
-                    iSuplSessionState = ESUPL_INITIALIZED;
-                    TInt len = iHSLPAddress.Length();
-                    HBufC8 *hslpAdress = NULL;
-                    if(len > 0)
-                        {
-                        hslpAdress = HBufC8::NewL(iHSLPAddress.Length());
-                        hslpAdress->Des().Copy(iHSLPAddress);
-                        }
-                    else if(len ==0)
-                        {
+						
+						iSuplSessionState = ESUPL_INITIALIZED;
+					    TInt len = iHSLPAddress.Length();
+					    HBufC8 *hslpAdress = NULL;
+					    if(len > 0)
+					    {
+					        hslpAdress = HBufC8::NewL(iHSLPAddress.Length());
+					        hslpAdress->Des().Copy(iHSLPAddress);
+					    }
+				   	else if(len ==0)
+					{
                         CServerParams* serverParams = CServerParams::NewL();
                         CleanupStack::PushL(serverParams);
         
                         if (iSuplStorageSettings->GetDefaultServer(serverParams) == KErrNotFound )
                             {
-                            iTrace->Trace(_L("Length of HSLP Address is = 0, passing the HSLP generated frm IMSI"), KTraceFileName, __LINE__);
-                            hslpAdress = HBufC8::NewL(iSuplSettings->SLPAddressfromImsi().Length());
-                            hslpAdress->Des().Copy(iSuplSettings->SLPAddressfromImsi());	
+							iTrace->Trace(_L("Length of HSLP Address is = 0, passing the HSLP generated frm IMSI"), KTraceFileName, __LINE__);
+							hslpAdress = HBufC8::NewL(iSuplSettings->SLPAddressfromImsi().Length());
+							hslpAdress->Des().Copy(iSuplSettings->SLPAddressfromImsi());	
                             }		
                         else
                             {
@@ -3933,28 +3972,30 @@
             
                             CleanupStack::PopAndDestroy(iapName);
                             CleanupStack::PopAndDestroy(serverAddr);
-                            }
+						    }
                         CleanupStack::PopAndDestroy(serverParams);
                         }
-                    if(iSuplState)
-                    	{
-                    delete iSuplState;
-                    iSuplState = NULL;
-                      }
-                    CleanupStack::PushL(hslpAdress);
-                    ServerAddressCheckForSuplInitL();
-                    iSuplState = COMASuplEndState::NewL(iErrorStatusCode,iOMASuplAsnHandlerBaseImpl,iEncodedSuplInit,hslpAdress);		
-                    CleanupStack::PopAndDestroy(hslpAdress);
-
-                    // Set the SessionId.
-                    iTrace->Trace(_L("COMASuplSession::CheckProtocolVersionL Update SLP Session ID"), KTraceFileName, __LINE__);
-                    UpdateSLPSessionIDL(SessionID);
-
-                    iTrace->Trace(_L("COMASuplSession::CheckProtocolVersionL Update SET Session ID"), KTraceFileName, __LINE__);
-                    UpdateSETSessionIDL(SessionID);
-                    iSuplState->SetMsgStateObserver(this);
-                    iSuplState->GenerateMessageL();
-                    iSuplSessionState = ESUPL_GENERATE;
+                      
+                      if(iSuplState)
+                      {
+	                    delete iSuplState;
+	                    iSuplState = NULL;
+	                  	}
+						
+					    CleanupStack::PushL(hslpAdress);
+	                    ServerAddressCheckForSuplInitL();
+					    iSuplState = COMASuplEndState::NewL(iErrorStatusCode,iOMASuplAsnHandlerBaseImpl,iEncodedSuplInit,hslpAdress);		
+					    CleanupStack::PopAndDestroy(hslpAdress);
+
+			            // Set the SessionId.
+				        iTrace->Trace(_L("COMASuplSession::CheckProtocolVersionL Update SLP Session ID"), KTraceFileName, __LINE__);
+			            UpdateSLPSessionIDL(SessionID);
+
+				        iTrace->Trace(_L("COMASuplSession::CheckProtocolVersionL Update SET Session ID"), KTraceFileName, __LINE__);
+			            UpdateSETSessionIDL(SessionID);
+						iSuplState->SetMsgStateObserver(this);
+						iSuplState->GenerateMessageL();
+						iSuplSessionState = ESUPL_GENERATE;
                     }
                 else
                     {                                
@@ -3966,17 +4007,20 @@
                     iSuplSessionState = ESUPL_GENERATE;
                     iSuplState->GenerateMessageL();
                     }
-                } 
-            else 							
-                {
-                iSuplState = COMASuplEndState::NewL(iErrorStatusCode,iOMASuplAsnHandlerBaseImpl);
-                iSuplSessionState = ESUPL_ENCODE;
-                iSuplState->SetMsgStateObserver(this);
-                iSuplState->GenerateMessageL();
-                }
-            }	
-        return EFalse;
-        }	
+
+					} 
+					else 							
+					{
+					    iSuplState = COMASuplEndState::NewL(iErrorStatusCode,iOMASuplAsnHandlerBaseImpl);
+						iSuplSessionState = ESUPL_ENCODE;
+						iSuplState->SetMsgStateObserver(this);
+						iSuplState->GenerateMessageL();
+					}
+				}	
+				
+			return EFalse;
+			}	
+
 	}
 
 // -----------------------------------------------------------------------------
@@ -4135,7 +4179,7 @@
 // COMASuplSession::SettingsUsageUICompletedL
 // 
 // -----------------------------------------------------------------------------
-void COMASuplSession::SettingsUsageUICompletedL(TInt aError)
+/*void COMASuplSession::SettingsUsageUICompletedL(TInt aError)
 	{
 	iUIFlag = EFalse;
     TBuf<64> msg;	
@@ -4144,7 +4188,6 @@
     iTrace->Trace(msg,KTraceFileName, __LINE__); 
 
     iPrevUsageResult = aError;                    
-    iIhaveLaunchedUsagedialog = EFalse;                 
 
 
     if (aError == KErrNone)
@@ -4181,7 +4224,7 @@
 			iSessionObserver.TerminateSession(this, KErrGeneral);	
 			return;
 		}
-	}
+	}*/
 
 // -----------------------------------------------------------------------------
 // COMASuplSession::CheckForSuplUsageL
@@ -4190,7 +4233,7 @@
 void COMASuplSession::CheckForSuplUsageL()
     {
 
-    if (iSuplUsage >= 1)
+    /*if (iSuplUsage >= 1)
         {            
         CSuplSettings::TSuplSettingsUsage usage = iSuplSettings->SUPLUsage();
         if (usage == CSuplSettings::ESuplUsageDisabled)
@@ -4198,15 +4241,24 @@
 	        iSessionObserver.TerminateSession(this, KErrGeneral);	
             }
         else if (usage == CSuplSettings::ESuplUsageAutomatic)
-            {            
+            { */           
             if (iNwInitError)
                 {
                 iNwInitError = EFalse;                    
                 HandleSuplInitErrorL(iNwInitCompletionCode);                             
                 }                
             else
-	            InitializeL(iRequestID); 
-            }
+            	{
+            		if (iRoaming)                
+                    HandleRoamingCheckCompleteL(KErrNone, EFalse);                    
+                else
+                    {                        
+                    iEtelRoamingCheck = ETrue;
+                    iProtocolManager.CheckForRoaming();
+                    }
+	            //InitializeL(iRequestID); 
+	          	}
+            /*}
 
             else if (usage == CSuplSettings::ESuplUsageHomeAutomatic || usage == CSuplSettings::ESuplUsageAlwaysAsk)
             {
@@ -4220,7 +4272,7 @@
             }            
         }            
         else
-	        InitializeL(iRequestID); 
+	        InitializeL(iRequestID); */
 
     }        
 
@@ -4303,92 +4355,10 @@
         {            
             iUsageHomeNW = aHomeNw;   
             iConnRequestor->UpdateSLPListForHomeUsage(iUsageHomeNW);             
-            CSuplSettings::TSuplSettingsUsage usage = iSuplSettings->SUPLUsage();
-            
-            if (usage == CSuplSettings::ESuplUsageAlwaysAsk || iStaleLocIdPrompt)
-                {
-                TInt err;                
-                if (!iSuplSettings->IsUIActive() )
-                    {                        
-                    if (!aHomeNw)
-                        {                            
-                        iTrace->Trace(_L("Invoking LaunchSuplUsageSettingsUI, user is roaming"), KTraceFileName, __LINE__);
-                        iIhaveLaunchedUsagedialog = ETrue;                 
-                        err = iProtocolManager.LaunchSuplUsageSettingsUI(this, ETrue);        
-                        }
-                    else
-                        {                            
-                        iTrace->Trace(_L("Invoking LaunchSuplUsageSettingsUI, user is not roaming"), KTraceFileName, __LINE__);
-                        iIhaveLaunchedUsagedialog = ETrue;                 
-                        err = iProtocolManager.LaunchSuplUsageSettingsUI(this, EFalse);        
-                        }
-                    }
-                else
-                    err = KErrInUse;                        
-
-                if(KErrNone != err && KErrInUse == err)
-                    {
-                        iTrace->Trace(_L("Dialog in use, setting flag"), KTraceFileName, __LINE__);
-                        SetSuplUsageFlag();                            
-                    }
-                if( KErrNone == err  && iRequestType == ESUPL_NETWORK )
-                    {
-                    iTrace->Trace(_L("Network Session , starting timer"), KTraceFileName, __LINE__);
-                    COMASuplInit* suplInit = static_cast <COMASuplInit*> (iDecodedAsnMessage);
-                    TOMASuplQop qop;
-                    TInt retVal = suplInit->Qop(qop);
-                    TInt delay;
-                    qop.Delay(delay);
-                    //if delay is > 7, it is not valid
-                    if (delay > 7)
-                        delay = 0;                                
-                    if(retVal == KErrNone && delay > 0)
-                        {
-                        TReal delayReal;
-                        Math::Pow(delayReal, 2, (TReal)delay);
-                        delay = (TInt) delayReal;
-                        TBuf<128> msg(_L("Delay present in message, value is = "));
-                        msg.AppendNum(delay);
-                        iTrace->Trace(msg, KTraceFileName, __LINE__); 
-                        isTimeoutDialogTimerStarted = ETrue;
-                        iDialogTimer->StartTimer(delay);
-                        }  	
-                    else
-                        {
-                        if (iSuplInitTimeOut > 0)
-                            {                                                        
-                            TBuf<256> msg(_L("Delay value in CR is"));
-                            msg.AppendNum(iSuplInitTimeOut);
-                            iTrace->Trace(msg, KTraceFileName, __LINE__); 
-                            iDialogTimer->StartTimer(iSuplInitTimeOut * KSecond);
-                            isTimeoutDialogTimerStarted = ETrue;
-                            }
-                        else
-                            iTrace->Trace(_L("Timeout is <= 0"), KTraceFileName, __LINE__);
-                        }
-                    iDlgStartTime.HomeTime();
-                    }
-                else if (KErrNone != err)
-                    {
-                    iTrace->Trace(_L("Invoking HandleSuplErrorL"), KTraceFileName, __LINE__);
-                    HandleSuplErrorL(err);
-                    }
-
-                }
-            else if (usage == CSuplSettings::ESuplUsageHomeAutomatic) 
-            {                
-            if (!aHomeNw)
-                {                
-                TInt err;                
-                //if (!iSuplSettings->IsUIActive() )
-                    {
-                    iTrace->Trace(_L("Invoking LaunchSuplUsageSettingsUI, user is roaming"), KTraceFileName, __LINE__);
-                    err = iProtocolManager.LaunchSuplUsageSettingsUI(this, ETrue);        
 
                     if(iSuplMsgType == ESUPL_INIT)
                         {
                         iTrace->Trace(_L("Dialog timer started"), KTraceFileName, __LINE__);
-				     
                         COMASuplInit* suplInit = static_cast <COMASuplInit*> (iDecodedAsnMessage);
                         TOMASuplQop qop;
                         TInt retVal = suplInit->Qop(qop);
@@ -4419,34 +4389,22 @@
                                 iTrace->Trace(_L("Timeout is <= 0"), KTraceFileName, __LINE__);
                             }
                         }
-                    }
-
-                if(!iSuplSettings->IsUIActive() && KErrNone != err)
-                    {
-                        SetSuplUsageFlag();                            
-                    }
-                else
-                    {
-                    iTrace->Trace(_L("Invoking HandleSuplErrorL"), KTraceFileName, __LINE__);
-                    HandleSuplErrorL(err);
-                    }
-                }
-            else            
-                {                
+                                
                 if (iNwInitError)
                     {
                     iNwInitError = EFalse;                    
                     HandleSuplInitErrorL(iNwInitCompletionCode);                             
                     }                
                 else
-	                InitializeL(iRequestID); 
-                }                
-            }                
+                {
+                	iTrace->Trace(_L("COMASuplSession::InitializeL called after roaming check"), KTraceFileName, __LINE__);
+	                InitializeL(iRequestID);  
+	              }  
         }
-        else
-            {
-	        iSessionObserver.TerminateSession(this, KErrGeneral);	
-            }                
+   else
+        {
+      	iSessionObserver.TerminateSession(this, KErrGeneral);	
+        }                
     }            
 TInt COMASuplSession::SuplIpcSessionID() 
     {
@@ -4511,7 +4469,7 @@
     return iUsageDialog;
     }        
 
-void COMASuplSession::StartUsageDialogLaunchL()
+/*void COMASuplSession::StartUsageDialogLaunchL()
     {
     iTrace->Trace(_L("COMASuplSession::StartUsageDialogLaunchL"), KTraceFileName, __LINE__);
     ReSetSuplUsageFlag();            
@@ -4677,7 +4635,7 @@
 	            InitializeL(iRequestID); 
             }                
         }                
-    }
+    }*/
 
 TBool COMASuplSession::IsEtelNotifySet()
     {
@@ -4690,12 +4648,6 @@
     iTrace->Trace(_L("COMASuplSession::IsEtelRoamingSet"), KTraceFileName, __LINE__); 
     return iEtelRoamingCheck;
     }        
-	
-TBool COMASuplSession::HasMeLaunchedUsageDialog()
-{
-	return iIhaveLaunchedUsagedialog; 
-}
-
 
 // -----------------------------------------------------------------------------
 // COMASuplSession::DialogTimerExpiredL
@@ -4706,10 +4658,10 @@
 {
    iTrace->Trace(_L("Timer Expired for SUPL Dialog"), KTraceFileName, __LINE__); 
   
-    if (!iIapDialogShown)
-	    iProtocolManager.LaunchSuplDialogTimeoutUI(this);
-    else
-        iIapDlgTimerExpired = ETrue;            
+    //if (!iIapDialogShown)
+	   // iProtocolManager.LaunchSuplDialogTimeoutUI(this);
+   // else
+       // iIapDlgTimerExpired = ETrue;            
 
     return;	
 }
@@ -4718,14 +4670,14 @@
 // COMASuplSession::SettingsTimeOutUICompletedL
 // 
 // -----------------------------------------------------------------------------
-void COMASuplSession::SettingsTimeOutUICompletedL(TInt aError)
+void COMASuplSession::SettingsTimeOutUICompletedL(TInt /*aError*/)
 	{
 	
-	    TBuf<64> msg;	
-	    msg.Copy(_L("SUPL Timeout UI completed with ... "));
-	    msg.AppendNum(aError);
-	    iTrace->Trace(msg,KTraceFileName, __LINE__); 
-	    iSessionObserver.TerminateSession(this, KErrGeneral);	
+	  //  TBuf<64> msg;	
+	  //  msg.Copy(_L("SUPL Timeout UI completed with ... "));
+	  //  msg.AppendNum(aError);
+	  //  iTrace->Trace(msg,KTraceFileName, __LINE__); 
+	  //  iSessionObserver.TerminateSession(this, KErrGeneral);	
 	    return;
 	    
 	}