supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplposrequestor.cpp
changeset 0 667063e416a2
child 22 4c4ed41530db
equal deleted inserted replaced
-1:000000000000 0:667063e416a2
       
     1 /*
       
     2 * Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:   Class for doing asynchronous service for POS
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 #include <lbs/epos_comasuplpossessionbase.h>
       
    21 #include <lbs/epos_comasuplinforequestlist.h>
       
    22 #include <lbs/epos_comasuplpospayload.h>
       
    23 #include <lbs/epos_comasuplvelocity.h>
       
    24 #include <lbs/epos_comasuplsetcapabilities.h>
       
    25 
       
    26 #include "epos_comasuplstate.h"
       
    27 #include "epos_comasuplposrequestor.h"
       
    28 #include "epos_comasuplstate.h"
       
    29 #include "epos_comasupltrace.h"
       
    30 
       
    31 _LIT(KTraceFileName,"SUPL_OMA_PH::EPos_COMASuplPOSRequestor.cpp");
       
    32 
       
    33 // ============================ MEMBER FUNCTIONS ===============================
       
    34 
       
    35 // -----------------------------------------------------------------------------
       
    36 // COMASuplPOSRequestor::COMASuplAOOperation
       
    37 // C++ constructor can NOT contain any code, that might leave.
       
    38 // -----------------------------------------------------------------------------
       
    39 //
       
    40 COMASuplPOSRequestor::COMASuplPOSRequestor(MOMASuplMsgStateObserver* aObserver, //MOMASuplPOSObserver* aObserver,
       
    41 											COMASuplPosSessionBase* aPOSSession):
       
    42 											CActive( EPriorityStandard),
       
    43 											iObserver(aObserver),iPOSSession(aPOSSession)	
       
    44     {
       
    45     	
       
    46     }
       
    47 
       
    48 // -----------------------------------------------------------------------------
       
    49 // COMASuplPOSRequestor::ConstructL
       
    50 // Symbian 2nd phase constructor can leave.
       
    51 // -----------------------------------------------------------------------------
       
    52 //
       
    53 void COMASuplPOSRequestor::ConstructL()
       
    54     {
       
    55 		iTrace = COMASuplTrace::NewL();	
       
    56 		iTrace->Trace(_L("COMASuplPOSRequestor::ConstructL"), KTraceFileName, __LINE__); 
       
    57 		CActiveScheduler::Add( this );
       
    58 		iPOSSessionRequestType = EPOS_IDEAL;
       
    59     }
       
    60 
       
    61 // -----------------------------------------------------------------------------
       
    62 // COMASuplPOSRequestor::CreateListL
       
    63 // -----------------------------------------------------------------------------
       
    64 //
       
    65 void COMASuplPOSRequestor::CreateListL()
       
    66     {
       
    67     	DestroyList(); //Safe side
       
    68 		iTrace->Trace(_L("COMASuplPOSRequestor::CreateListL"), KTraceFileName, __LINE__); 
       
    69 		iOMASuplInfoRequestList = COMASuplInfoRequestList::NewL();
       
    70     }
       
    71 
       
    72 // -----------------------------------------------------------------------------
       
    73 // COMASuplPOSRequestor::DestroyList
       
    74 // -----------------------------------------------------------------------------
       
    75 //
       
    76 void COMASuplPOSRequestor::DestroyList()
       
    77     {
       
    78 		iTrace->Trace(_L("COMASuplPOSRequestor::DestroyList"), KTraceFileName, __LINE__); 
       
    79 		if(iOMASuplInfoRequestList)
       
    80 			{
       
    81 				delete iOMASuplInfoRequestList;
       
    82 				iOMASuplInfoRequestList = NULL;
       
    83 			
       
    84 			}
       
    85 	}
       
    86 
       
    87 // -----------------------------------------------------------------------------
       
    88 // COMASuplPOSRequestor::NewL
       
    89 // Two-phased constructor.
       
    90 // -----------------------------------------------------------------------------
       
    91 //
       
    92 COMASuplPOSRequestor* COMASuplPOSRequestor::NewL(MOMASuplMsgStateObserver* aObserver,COMASuplPosSessionBase* aPOSSession)
       
    93     {
       
    94 	    COMASuplPOSRequestor* self =  new ( ELeave ) COMASuplPOSRequestor(aObserver,aPOSSession);
       
    95 	    CleanupStack::PushL( self );
       
    96 	    self->ConstructL();
       
    97 	    CleanupStack::Pop(self);
       
    98 	    return self;
       
    99     }
       
   100 
       
   101 // -----------------------------------------------------------------------------
       
   102 // COMASuplPOSRequestor::~COMASuplPOSRequestor
       
   103 // -----------------------------------------------------------------------------
       
   104 //
       
   105 COMASuplPOSRequestor::~COMASuplPOSRequestor()
       
   106     {
       
   107     	Cancel();
       
   108 		DestroyList();
       
   109 		
       
   110 		if(iTrace)
       
   111 			iTrace->Trace(_L("COMASuplPOSRequestor::~COMASuplPOSRequestor"), KTraceFileName, __LINE__); 		
       
   112 		
       
   113 		delete iTrace;
       
   114     }
       
   115 
       
   116 // -----------------------------------------------------------------------------
       
   117 // COMASuplPOSRequestor::RunL
       
   118 // -----------------------------------------------------------------------------
       
   119 //
       
   120 void COMASuplPOSRequestor::RunL()
       
   121 {
       
   122 	if(!iPOSSession || !iObserver )    
       
   123 		return;
       
   124 	
       
   125 	//if(iStatus == KErrNone)
       
   126 	{
       
   127 		switch(iPOSSessionRequestType)
       
   128 		{
       
   129 			case EPOS_GET_POSITION:
       
   130 			{
       
   131 				iPOSSessionRequestType = EPOS_IDEAL;
       
   132 				iTrace->Trace(_L("Request Completed for EPOS_GET_POSITION..."), KTraceFileName, __LINE__); 		
       
   133 				iObserver->GetPositionComplete(iStatus.Int()); 
       
   134 				break;
       
   135 			}
       
   136 			case EPOS_GET_SUPL_INFO:
       
   137 			case EPOS_SESSION_INITIALIZE:
       
   138 			{
       
   139 				iPOSSessionRequestType = EPOS_IDEAL;
       
   140 				iTrace->Trace(_L("Request Completed for POS_GET_SUPL_INFO / POS_SESSION_INITIALIZE..."), KTraceFileName, __LINE__); 		
       
   141 				iObserver->OperationCompleteL(iStatus.Int());
       
   142 				break;
       
   143 			}
       
   144 			case EPOS_IDEAL:
       
   145 			default:
       
   146 			{
       
   147 				break;
       
   148 			}
       
   149 		}	
       
   150 	}
       
   151 }
       
   152 // -----------------------------------------------------------------------------
       
   153 // COMASuplPOSRequestor::SetObserver
       
   154 // -----------------------------------------------------------------------------
       
   155 //
       
   156 void COMASuplPOSRequestor::SetObserver(MOMASuplMsgStateObserver* aObserver)
       
   157     {
       
   158 		iObserver = aObserver;
       
   159     }
       
   160 
       
   161 // -----------------------------------------------------------------------------
       
   162 // COMASuplPOSRequestor::RunError
       
   163 // -----------------------------------------------------------------------------
       
   164 //
       
   165 TInt COMASuplPOSRequestor::RunError(TInt /* aError */)
       
   166     {
       
   167      	return KErrNone;
       
   168     }
       
   169 
       
   170 // -----------------------------------------------------------------------------
       
   171 // COMASuplPOSRequestor::DoCancel
       
   172 // -----------------------------------------------------------------------------
       
   173 //
       
   174 void COMASuplPOSRequestor::DoCancel()
       
   175     {    
       
   176 		CancelRequest();
       
   177     }
       
   178     
       
   179 // -----------------------------------------------------------------------------
       
   180 // COMASuplPOSRequestor::GetSuplInfoL
       
   181 // -----------------------------------------------------------------------------
       
   182 //
       
   183 TInt COMASuplPOSRequestor::GetSuplInfoL()
       
   184 	{
       
   185 	if(iPOSSession)
       
   186 		{
       
   187 			iTrace->Trace(_L("COMASuplPOSRequestor::GetSuplInfoL"), KTraceFileName, __LINE__); 
       
   188 			iPOSSessionRequestType = EPOS_GET_SUPL_INFO;
       
   189 			TRAPD(err,iPOSSession->GetSuplInfoL(iOMASuplInfoRequestList,iStatus));	
       
   190 			if(err != KErrNone)
       
   191 				{
       
   192 					iTrace->Trace(_L("COMASuplPOSRequestor::GetSuplInfoL Leaved "), KTraceFileName, __LINE__); 
       
   193 					return KErrCompletion;
       
   194 				}
       
   195 				else
       
   196 				{
       
   197 				    iTrace->Trace(_L("COMASuplPOSRequestor::GetSuplInfoL returned successfully "), KTraceFileName, __LINE__);
       
   198 					SetActive();					
       
   199 					return KErrNone;
       
   200 				}
       
   201 		}
       
   202 	else
       
   203 		{
       
   204 			return KErrNotSupported;	
       
   205 		}
       
   206 		
       
   207 	}
       
   208 
       
   209 // -----------------------------------------------------------------------------
       
   210 // COMASuplPOSRequestor::GetSuplInfoL
       
   211 // -----------------------------------------------------------------------------
       
   212 //
       
   213 TInt COMASuplPOSRequestor::GetPositionL(COMASuplPosition* aPosition)
       
   214 	{
       
   215 	
       
   216 	if(iPOSSession)
       
   217 		{
       
   218 			iTrace->Trace(_L("COMASuplPOSRequestor::GetPositionL"), KTraceFileName, __LINE__); 
       
   219 			iPOSSessionRequestType = EPOS_GET_POSITION;
       
   220 			TRAPD(err,iPOSSession->GetPositionL(iStatus,aPosition));	
       
   221 			if(err != KErrNone)
       
   222 				{
       
   223 					iTrace->Trace(_L("COMASuplPOSRequestor::GetPositionL Leaved "), KTraceFileName, __LINE__); 
       
   224 					return KErrCompletion;
       
   225 				}
       
   226 				else
       
   227 				{
       
   228 					SetActive();					
       
   229 					return KErrNone;
       
   230 				}
       
   231 		}
       
   232 	else
       
   233 		{
       
   234 			return KErrNotSupported;	
       
   235 		}
       
   236 	}
       
   237 	
       
   238 // -----------------------------------------------------------------------------
       
   239 // COMASuplPOSRequestor::CancelRequest
       
   240 // Cancels any outstanding request 
       
   241 // -----------------------------------------------------------------------------
       
   242 //
       
   243 void COMASuplPOSRequestor::CancelRequest()
       
   244 {
       
   245 
       
   246 	if(!iPOSSession)    
       
   247 		{
       
   248 			return;
       
   249 		}
       
   250 
       
   251 	switch(iPOSSessionRequestType)
       
   252 	{
       
   253 		case EPOS_GET_POSITION:
       
   254 		{
       
   255 			iTrace->Trace(_L("COMASuplPOSRequestor::CancelRequest EPOS_GET_POSITION "), KTraceFileName, __LINE__); 
       
   256 			iPOSSession->CancelGetPosition();	
       
   257 			break;
       
   258 		} 
       
   259 		case EPOS_GET_SUPL_INFO:
       
   260 		{
       
   261 			iTrace->Trace(_L("COMASuplPOSRequestor::CancelRequest EPOS_GET_SUPL_INFO "), KTraceFileName, __LINE__); 
       
   262 			iPOSSession->CancelSuplInfoRequest();
       
   263 			break;
       
   264 		}
       
   265 		case EPOS_SESSION_INITIALIZE:
       
   266 		{
       
   267 			iTrace->Trace(_L("COMASuplPOSRequestor::CancelRequest EPOS_SESSION_INITIALIZE "), KTraceFileName, __LINE__); 
       
   268 			iPOSSession->CancelInitialize();
       
   269 			break;
       
   270 		}
       
   271 		case EPOS_IDEAL:
       
   272 		default:
       
   273 		{
       
   274 			break;
       
   275 		}
       
   276 	}
       
   277 }
       
   278 
       
   279 // -----------------------------------------------------------------------------
       
   280 // COMASuplPOSRequestor::GetOMASuplInfoRequestList
       
   281 // returns SUPLInfoRequest List 
       
   282 // -----------------------------------------------------------------------------
       
   283 //
       
   284 COMASuplInfoRequestList* COMASuplPOSRequestor::GetOMASuplInfoRequestList()
       
   285 	{
       
   286 		return iOMASuplInfoRequestList;
       
   287 	}
       
   288 
       
   289 // -----------------------------------------------------------------------------
       
   290 // COMASuplPOSRequestor::AppendInfoRequest
       
   291 // Append InfoRequest List in COMASuplInfoRequestList
       
   292 // -----------------------------------------------------------------------------
       
   293 //
       
   294 void COMASuplPOSRequestor::AppendInfoRequest(COMASuplInfoRequest* aSuplInfoRequest)
       
   295 	{
       
   296 		iOMASuplInfoRequestList->Append(aSuplInfoRequest);
       
   297 	}
       
   298 	
       
   299 // -----------------------------------------------------------------------------
       
   300 // COMASuplPOSRequestor::InitilizePOSSessionL
       
   301 // 
       
   302 // -----------------------------------------------------------------------------
       
   303 //
       
   304 TInt COMASuplPOSRequestor::InitilizePOSSessionL(TInt aRequestId)
       
   305 	{
       
   306 		Cancel();
       
   307 		iPOSSessionRequestType = EPOS_SESSION_INITIALIZE;
       
   308 		TRAPD(err,iPOSSession->InitializeL(aRequestId,iStatus));		
       
   309 		if(err != KErrNone)
       
   310 		{
       
   311 			iTrace->Trace(_L("COMASuplPOSRequestor::InitilizePOSSessionL  "), KTraceFileName, __LINE__); 
       
   312 			return err;
       
   313 		}
       
   314 		else
       
   315 		{
       
   316 			SetActive();					
       
   317 			return KErrNone;
       
   318 		}
       
   319 	}
       
   320 
       
   321 // -----------------------------------------------------------------------------
       
   322 // COMASuplPOSRequestor::SetPosMethodAndAllowedCapabilities
       
   323 // 
       
   324 // -----------------------------------------------------------------------------
       
   325 //
       
   326 void COMASuplPOSRequestor::SetPosMethodAndAllowedCapabilities(TOMASuplAllowedCapabilities& aPOSAllowedCapabilities,
       
   327 													COMASuplPosSessionBase::TOMASuplPositioningMethod aPOSPositioningMethod)
       
   328 	{
       
   329 			iPOSSession->SetPosMethodAndAllowedCapabilities(aPOSAllowedCapabilities,aPOSPositioningMethod);
       
   330 	}
       
   331 // -----------------------------------------------------------------------------
       
   332 // COMASuplPOSRequestor::SetSLPAddressUsed
       
   333 // 
       
   334 // -----------------------------------------------------------------------------
       
   335 //
       
   336 void COMASuplPOSRequestor::SetSLPAddressUsed(const TDesC& aServerAddress)
       
   337     {
       
   338     iPOSSession->SetSLPAddressUsed(aServerAddress);
       
   339     }
       
   340 //  End of File
       
   341 
       
   342