supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplprotocolmanager1.cpp
branchRCL_3
changeset 19 02ba3f1733c6
parent 14 b88ebe0cbbbe
child 20 2b4ea9893b66
--- a/supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplprotocolmanager1.cpp	Thu Jul 15 19:06:58 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplprotocolmanager1.cpp	Thu Aug 19 10:20:18 2010 +0300
@@ -46,6 +46,9 @@
 #include "epos_comasupltimeouttimer.h"
 #include "epos_omasuplconstants.h"
 #include "epos_comasuplcommonconfig.h"
+#include "epos_suplgeocellinfo.h"
+
+#include "epos_comasupllocationid.h"
 
 _LIT(KTraceFileName,"SUPL_OMA_PH::EPos_COMASUPLProtocolManager1.cpp");
 
@@ -528,6 +531,11 @@
 	iTrace->Trace(_L("COMASUPLProtocolManager1::DestroySession Destroy Session"), KTraceFileName, __LINE__);
 
 	COMASuplSession* OMASession =  static_cast<COMASuplSession*>(aSuplSession);
+	  if (OMASession->HasMeLaunchedUsageDialog())
+    {
+    		iTrace->Trace(_L("Setting NULL."), KTraceFileName, __LINE__);
+        iSessnUIObserver = NULL;
+    }   
     if (OMASession->GetSessionUIFlag())
     	{
 	    OMASession->DestroySession();
@@ -1038,6 +1046,14 @@
 		iTrace->Trace(_L("Cannot found Supl session."), KTraceFileName, __LINE__);
 		return;
 		}
+	
+		COMASuplSession* OMASession =  static_cast<COMASuplSession*>(aSuplSession);
+    if (OMASession->HasMeLaunchedUsageDialog())
+    {
+    		iTrace->Trace(_L("Setting NULL."), KTraceFileName, __LINE__);
+        iSessnUIObserver = NULL;
+    }   
+             
 		aSuplSession->CancelRunSession();	
 		return ;
 	}
@@ -2072,8 +2088,103 @@
     iSuplInitTimeOut = aCommmonConfig->iSuplInitTimeOut;
     iPersistFailTimer = aCommmonConfig->iPersistFailTimer;
     }
+	
+	
+// -----------------------------------------------------------------------------
+// COMASUPLProtocolManager1::MakeLocationConversionRequestL
+// 
+// To make conversion request to retrieve position for a given cell id
+// -----------------------------------------------------------------------------
+//
+void COMASUPLProtocolManager1::MakeLocationConversionRequestL( CSuplSessionBase* aSuplSessn,
+        TGeoCellInfo& aCellInfo,
+        TRequestStatus& aStatus )
+    {
+    iTrace->Trace(_L("COMASUPLProtocolManager1::MakeLocationConversionRequestL"), KTraceFileName, __LINE__);
+    TBuf<64> tempBuf;
+
+    if ( iSuplSessions.Find(aSuplSessn) == KErrNotFound )
+        {
+        TRequestStatus *status = &aStatus; 
+        User::RequestComplete(status,KErrNotFound ); 
+        return;
+        }
+
+    CheckForSessionCount();
+    iRunningSessionCount++;
+
+    COMASuplLocationId* locationId =   COMASuplLocationId::NewL();
+    COMASuplLocationId::TOMASuplStatus status = COMASuplLocationId::EStale;
+    switch(aCellInfo.iGeoCellType)
+        {
+        case EGeoGsmCell:
+            {
+            iTrace->Trace(_L("COMASUPLProtocolManager1::MakeLocationConversionRequestL - Setting GSM Cell Info"), KTraceFileName, __LINE__);
+            COMASuplGSMCellInfo* cellInfo = COMASuplGSMCellInfo::NewL();
+            cellInfo->SetSuplGSMCellInfo(aCellInfo.iMNC,aCellInfo.iMCC,aCellInfo.iCid,aCellInfo.iLac);
+            locationId->SetSuplLocationId(cellInfo,status);
+            }
+            break;
+        case EGeoWcdmaCell:
+            {
+            iTrace->Trace(_L("COMASUPLProtocolManager1::MakeLocationConversionRequestL - Setting WCDMA Cell Info"), KTraceFileName, __LINE__);
+            COMASuplCellInfo* cellInfo = COMASuplCellInfo::NewL();
+            cellInfo->SetSuplCellInfo(aCellInfo.iMNC,aCellInfo.iMCC,aCellInfo.iCid);
+            locationId->SetSuplLocationId(cellInfo,status);
+            }
+            break;
+        }
+   
+    tempBuf.Copy(_L("MCC = "));
+    tempBuf.AppendNum(aCellInfo.iMCC);
+    iTrace->Trace(tempBuf, KTraceFileName, __LINE__);
+    tempBuf.Copy(_L("MNC = "));
+    tempBuf.AppendNum(aCellInfo.iMNC);
+    iTrace->Trace(tempBuf, KTraceFileName, __LINE__);
+    tempBuf.Copy(_L("LAC = "));
+    tempBuf.AppendNum(aCellInfo.iLac);
+    iTrace->Trace(tempBuf, KTraceFileName, __LINE__);
+    tempBuf.Copy(_L("CId = "));
+    tempBuf.AppendNum(aCellInfo.iCid);
+    iTrace->Trace(tempBuf, KTraceFileName, __LINE__);
+    tempBuf.Copy(_L("Prompt = "));
+    tempBuf.AppendNum(aCellInfo.iConnectionPrompt);
+    iTrace->Trace(tempBuf, KTraceFileName, __LINE__);
+
+    TInt allowedCapabilities = KECID|KCID;
+    TInt requestID = 1000; 
+    COMASuplSession* OMASession =  static_cast<COMASuplSession*>(aSuplSessn);
+    OMASession->SetConfigurationParameters(iUT1_StartTimer,iUT2_PosInitTimer, iUT3_PosTimer,iPrivacyTimer,iSETMode,
+            iSuplUsage, iPersistFailTimer,iSuplInitTimeOut);
+    OMASession->RunSuplSessionL(aStatus,ETrue, KNullDesC,EFalse, allowedCapabilities,iRunningSessionCount,requestID,ETrue,locationId,aCellInfo.iConnectionPrompt,aCellInfo.iWlanOnly);
+
+    }
+
+// -----------------------------------------------------------------------------
+// COMASUPLProtocolManager1::CancelLocationConversionRequest
+// 
+// Cancel an ongoing conversion request 
+// -----------------------------------------------------------------------------
+//
+void COMASUPLProtocolManager1::CancelLocationConversionRequest(CSuplSessionBase* aSuplSession)
+    {
+    // Log
+    iTrace->Trace(_L("COMASUPLProtocolManager1::CancelLocationConversionRequest"), KTraceFileName, __LINE__);
+
+    // Check if the Session is valid
+    TInt index = iSuplSessions.Find(aSuplSession);
+
+    if(KErrNotFound == index)
+        {
+        iTrace->Trace(_L("Cannot find Supl session."), KTraceFileName, __LINE__);
+        return;
+        }
+    aSuplSession->CancelRunSession();   
+    return ;
+    }
+	
     
-    // -----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 // COMASUPLProtocolManager1::CancelUiLaunch
 // 
 //