--- 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);