supl/locationomasuplprotocolhandler/protocolhandlerver2/inc/epos_comasuplprotocolmanager2.h
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:   Header file for COMASUPLProtocolManager2 implementation
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 #ifndef C_COMASUPLPROTOCOLMANAGER2_H
       
    21 #define C_COMASUPLPROTOCOLMANAGER2_H
       
    22 
       
    23 #include <e32cmn.h> 
       
    24 #include <etel.h> 
       
    25 #include <etelmm.h> 
       
    26 
       
    27 //#include "epos_csuplprotocolmanagerbase.h"   // interface
       
    28 #include "epos_comasuplprotocolmanager.h"
       
    29 #include "epos_msuplsettingsobserver.h"
       
    30 #include "epos_msuplsessionobserver.h"
       
    31 
       
    32 #include "epos_msuplpacketnotifier.h"
       
    33 #include "epos_momasuplecomeventobserver.h"
       
    34 #include "epos_comasuplsettingslauncher.h"
       
    35 #include "epos_csuplsettingsinternal.h"
       
    36 #include "epos_comasuplsession2.h"
       
    37 #include "epos_comasuplasnbase.h"
       
    38 
       
    39 class COMASuplTrace;
       
    40 class CSuplCommunicationManager;
       
    41 class RMobilePhone;
       
    42 class RTelServer;
       
    43 class COMASuplSettings;
       
    44 class COMASuplPosHandlerBase;
       
    45 class COMASuplSETSessionID;
       
    46 class COMASuplSLPSessionID;
       
    47 
       
    48 class COMASuplEcomEventWatcher;
       
    49 class TSuplTerminalQop;
       
    50 class CSuplSettings;
       
    51 class COMASuplTimeoutTimer;
       
    52 class COMASuplETelNotifier;
       
    53 
       
    54 /**
       
    55  *  MOMASuplSessionObserver observer for session termination operation. 
       
    56  *  @lib eposomasuplprotocolhandler.lib
       
    57  *  @since S60 v3.1
       
    58  */
       
    59 
       
    60 class MOMASuplSessionObserver
       
    61 {
       
    62 
       
    63 public:
       
    64 		/**
       
    65 		* TerminateSession
       
    66 		* @since S60 v3.1u
       
    67 		* @param aSession, session which is going to terminate
       
    68 		* @param aErrorCode, error code for completion of request. 
       
    69 		*/
       
    70 		virtual void TerminateSession(CSuplSessionBase *aSession, TInt aErrorCode) = 0;
       
    71 };
       
    72 
       
    73 
       
    74 	/**
       
    75 	*  An implementation of the COMASUPLProtocolManagerBase definition. 
       
    76 	*  @lib eposomasuplprotocolhandler.lib
       
    77 	*  @since S60 v3.1
       
    78 	*/
       
    79  
       
    80 class COMASUPLProtocolManager2 : public COMASUPLProtocolManager,
       
    81 								public MOMASuplSessionObserver,
       
    82 								public MSuplSettingsObserver,
       
    83 								public MOMASuplTimeOutNotifier,
       
    84 						    	public MOMASuplUISettingsObserver,
       
    85                 				public MOMASuplETelNotifierObserver,
       
    86                 				public MSuplSessionObserver
       
    87     {
       
    88     
       
    89 public:
       
    90 
       
    91 	/**
       
    92 	* NewL, Create instance of concrete implementation. 
       
    93 	* @since S60 v3.1u		
       
    94 	* @param      None
       
    95 	* @return    Instance of this class.
       
    96 	*/
       
    97    IMPORT_C static COMASUPLProtocolManager2* NewL();
       
    98 
       
    99 	/**
       
   100 	* ~COMASUPLProtocolManager2
       
   101 	* @since S60 v3.1u		
       
   102 	* @param      None
       
   103 	* @return     None
       
   104 	*/
       
   105   IMPORT_C  ~COMASUPLProtocolManager2();
       
   106 
       
   107 	/**
       
   108 	* CreateNewSessionL, Creates new SuplSession instance
       
   109 	* @since S60 v3.1u
       
   110 	* @param      aRequestType, used for differentiation between SET & NET cases
       
   111 	* @return     Instance of CSuplSessionBase.
       
   112 	*/
       
   113   IMPORT_C virtual CSuplSessionBase* CreateNewSessionL( 
       
   114 										CSUPLProtocolManagerBase::TSuplReqType aRequestType, 
       
   115 										TInt aIpcSessionId,
       
   116 										RSuplTerminalSubSession::TSuplServiceType aSuplService);
       
   117   
       
   118 	/**
       
   119 	* RunSessionL, Starts the SUPL Sesssion for Terminal Initiated Location Request
       
   120 	* @since S60 v3.1
       
   121 	* @param       aSuplSession , session object on which processing will start
       
   122 	* @param       aStatus, 	  On completion, sets status of the request
       
   123 	* @param       aAllowedCapabilities , Allowed capabilities of SET
       
   124 	* @Param:      aQop,  specifies the quality of position
       
   125 	* @param       aRequestID , Request ID of Session
       
   126 	* @return      None
       
   127 	*/
       
   128   IMPORT_C  virtual void  RunSessionL(CSuplSessionBase *const aSuplSession,TRequestStatus& aStatus, const TDesC& aHslpAddress, TBool aFallBack, TBool aFirstReq,
       
   129   										TInt aAllowedCapabilities,TSuplTerminalQop& aQop, TInt aRequestID = 0);
       
   130 
       
   131 	/**
       
   132 	* RunSessionL, Starts the SUPL Sesssion for Terminal Initiated Location Request
       
   133 	* @since S60 v3.1
       
   134 	* @param       aSuplSession , session object on which processing will start
       
   135 	* @param       aStatus, 	  On completion, sets status of the request
       
   136 	* @param       aAllowedCapabilities , Allowed capabilities of SET
       
   137 	* @param       aRequestID , Request ID of Session
       
   138 	* @return      None
       
   139 	*/
       
   140   IMPORT_C  virtual void  RunSessionL(CSuplSessionBase *const aSuplSession,TRequestStatus& aStatus,const TDesC& aHslpAddress, TBool aFallBack,
       
   141   										TBool aFirstReq, TInt aAllowedCapabilities, TInt aRequestID = 0);
       
   142 	/**
       
   143 	* HandleSuplMessage, Handles session in NET initiated case
       
   144 	* @since S60 v3.1
       
   145 	* @param       aSuplSession , session object on which processing will start
       
   146 	* @param       aStatus, 	  On completion, sets status of the request
       
   147 	* @param       aMessage,	message to be decoded.
       
   148 	* @return      None
       
   149 	*/
       
   150   IMPORT_C  virtual void  HandleSuplMessageL(CSuplSessionBase *const aSuplSession,TRequestStatus& aStatus,HBufC8* aMessage);
       
   151 
       
   152 	/**
       
   153 	* DestroySession, Destroys the specified Supl Session instance
       
   154 	* @since S60 v3.1u
       
   155 	* @param      aSuplSession , session object which has to delete
       
   156 	* @return     TInt,returns KErrNone if deleted successfully else KErrArgument  
       
   157 	*/
       
   158   IMPORT_C  TInt  DestroySession(CSuplSessionBase* aSuplSession);	
       
   159   
       
   160 	/**
       
   161 	* InitializeL, Does the asynchonous initilization. 
       
   162 	* @since S60 v3.1u
       
   163 	* @param      aCommManager,Communication Manager
       
   164 	* @param      aInitilizationRequestStatus, TRequestStatus for asynchronous initilization operation
       
   165 	* @return     None
       
   166 	*/
       
   167   IMPORT_C  void InitializeL(CSuplCommunicationManager* aCommManager,TRequestStatus& aInitilizationRequestStatus);
       
   168   
       
   169      /**
       
   170      * Function:     CancelInitialize, 
       
   171      * @Description: Does the cancellation of asynchonous initilization. 
       
   172      * @Param:       None
       
   173      * @Returns:     None
       
   174      */
       
   175   IMPORT_C  void CancelInitialize();
       
   176 
       
   177 	/**
       
   178 	* Function:     DeInitialize, 
       
   179 	* @since S60 v3.1u
       
   180 	* @Description: Does the de-initilization. 
       
   181 	* @Param:       aDeInitRequestStatus,for asynchronous de-initilization of protocol manager
       
   182 	* @Returns:     None
       
   183 	*/
       
   184   IMPORT_C void DeInitialize(TRequestStatus& aDeInitRequestStatus);
       
   185 
       
   186 	/**
       
   187 	* Function:     CancelDeInitialize, 
       
   188 	* @since S60 v3.1u
       
   189 	* @Description: Does the cancellation of asynchonous de-initilization. 
       
   190 	* @Param:       None
       
   191 	* @Returns:     None
       
   192 	*/
       
   193   IMPORT_C void CancelDeInitialize();
       
   194   
       
   195 	/**
       
   196 	* HandleSuplPackets,Process Supl message which are comming from SLP
       
   197 	* @since S60 v3.1u
       
   198 	* @param       aPacket, message packet
       
   199 	* @return      None
       
   200 	*/
       
   201               IMPORT_C void HandlePacket(const TDesC8& aPacket, TUint aPortNum);
       
   202 
       
   203 	/**
       
   204 	* HandlePacketError,Process Supl message receiving Errors 
       
   205 	* @since S60 v3.1u
       
   206 	* @param      aError, the Error Code
       
   207 	* @return     None
       
   208 	*/
       
   209   IMPORT_C virtual void HandlePacketError(TInt aError);
       
   210   
       
   211 	/**
       
   212 	* CancelRunSession,Cancels an in-progress Terminal Initiated Location Request
       
   213 	* @param       aSession, The session on which the request has to be cancelled
       
   214 	* @return      None
       
   215 	*/
       
   216   IMPORT_C void CancelRunSession(CSuplSessionBase* aSuplSession);
       
   217   
       
   218 	/**
       
   219 	* Function:     RunPeriodicTriggerSessionL, 
       
   220 	* @since S60 v5.2
       
   221 	* @Description: Starts processing on session
       
   222 	*
       
   223 	* @Param:       aSuplSession , session object on which processing will start
       
   224 	* @Param:       aStatus, On return, the status of the request
       
   225 	* @Param:       aPTrigger, specifies the periodic trigger session
       
   226 	* @Param:       aFallBack, enables the SUPL's Multiple-SLP Fallback Mechanism
       
   227 	* @Param:       aAllowedCapabilities , Allowed capabilities of SET
       
   228 	* @Param:       aRequestID , Request ID of Session
       
   229 	*
       
   230 	* @Returns:     None
       
   231 	*/
       
   232   IMPORT_C virtual void RunSuplTriggerSessionL(
       
   233   					 CSuplSessionBase *const aSuplSession,
       
   234   					 TRequestStatus& aStatus,
       
   235   					 TSuplTerminalPeriodicTrigger& aPTrigger,
       
   236   					 const TDesC& aHslpAddress, 
       
   237   					 TBool aFallBack,
       
   238   					 TInt aAllowedCapabilities,
       
   239   					 TInt aRequestID = 0);
       
   240 
       
   241 	/**
       
   242 	* Function:     NotifyTriggerFiredL 
       
   243 	* @since S60 v5.2
       
   244 	* @Description: Notifies the position fix trigger
       
   245 	*
       
   246 	* @Param:       aSuplSession , session object on which processing will start
       
   247 	* @Param:       aStatus, On return, the status of the request
       
   248 	* @Param:       aFireInfo, On return, the position fix in defined interval
       
   249 	*
       
   250 	* @Returns:     None
       
   251 	*/
       
   252   IMPORT_C virtual void NotifyTriggerFiredL(
       
   253     				 CSuplSessionBase *const aSuplSession,
       
   254   					 TRequestStatus& aStatus, 
       
   255         			 TSuplTriggerFireInfo& aFireInfo);
       
   256 
       
   257 	/**
       
   258 	* CancelPeriodicTriggerSession,Cancels an in-progress Terminal Initiated 
       
   259 	* Periodic Trigger Session Location Request
       
   260 	*
       
   261 	* @param       aSession, The session on which the request has to be cancelled
       
   262 	* @return      None
       
   263 	*/
       
   264   IMPORT_C virtual void CancelSuplTriggerSession(CSuplSessionBase* aSuplSession);
       
   265   
       
   266   IMPORT_C   COMASuplSession* FindSessionOnPortNum(TUint aPortNum) const ;
       
   267   
       
   268 public : // From base class, MOMASuplSessionObserver
       
   269 
       
   270 	/**
       
   271 	* TerminateSession,Terminate the SUPL Session specified by the paramerter
       
   272 	* @since S60 v3.1u
       
   273 	* @param       aSession, the SUPL Session to be terminated
       
   274 	* @param       aErrorCode,error code by which session completes
       
   275 	* @return      None
       
   276 	*/
       
   277 	virtual void TerminateSession(CSuplSessionBase *aSession, TInt aErrorCode);
       
   278 	
       
   279 public: // For setting UI observer    
       
   280 	TInt LaunchSettingsUI(MOMASuplUICompletionObserver* aObserver,const TDesC& aForHslp);
       
   281 	TInt LaunchSuplUsageSettingsUI(MOMASuplUICompletionObserver* aObserver, TBool aRoaming);
       
   282 	TInt LaunchSuplDialogTimeoutUI(MOMASuplUICompletionObserver* aObserver );
       
   283 	void UpdateAllSubSessnsInSameSession(TInt aIpcSessionId);
       
   284 
       
   285 	void SettingsChanged();
       
   286 
       
   287 	TInt GetLastUsedAccessPoint(TDes& aLastlyUsedAccessPoint,TUint32& iIAPId);
       
   288 	/** 
       
   289 	* This callback method is used to notify the client about 
       
   290 	* the completion of UI launch
       
   291 	* @param aError - Error during Launch
       
   292 	* @return None
       
   293 	*/
       
   294 	void SettingsUICompletedL(TInt aError);
       
   295 
       
   296 	/** 
       
   297 	* This callback method is used to notify the client about 
       
   298 	* the completion of UI launch
       
   299 	* @param aError - Error during Launch
       
   300 	* @return None
       
   301 	*/
       
   302 	void SettingsUsageUICompletedL(TInt aError);
       
   303 
       
   304 	/** 
       
   305 	* This callback method is used to notify the client about 
       
   306 	* the completion of UI completion
       
   307 	* @param aError - Error during Launch
       
   308 	* @return None
       
   309 	*/
       
   310 	void SettingsTimeOutUICompletedL(TInt aError);
       
   311 
       
   312 public: //From base class MSuplSettingsObserver
       
   313 
       
   314 	/**
       
   315 	* HandleSuplSettingsChangeL,Observeed function, gets called.
       
   316 	* @since S60 v3.1
       
   317 	* @param       aEvent,TSuplSettingsEventType, type of event.
       
   318 	* @return      None
       
   319 	*/
       
   320     virtual void HandleSuplSettingsChangeL(TSuplSettingsEventType aEvent,TInt aSlpId);                 
       
   321 
       
   322 public:  // From base class MSuplSessionObserver
       
   323 	/**
       
   324 	* HandleSuplSessionChangeL,Observeed function, gets called.
       
   325 	* @since S60 v5.2
       
   326 	* @param       aEvent,TSuplSettingsEventType, type of event.
       
   327 	* @return      None
       
   328 	*/
       
   329 	void HandleSuplSessionChangeL(MSuplSessionObserver::TSuplSessionEventType aEvent,TInt64 aSessionId);
       
   330 	
       
   331 	/**
       
   332 	* Handles Pos handler unload event
       
   333 	* @since S60 v3.1u
       
   334 	* @param       None
       
   335 	* @param       None
       
   336 	* @return      None
       
   337 	*/
       
   338 	void PlugInUninstalled();  
       
   339 	
       
   340 private: // Construction
       
   341 
       
   342 	/**
       
   343 	* COMASUPLProtocolManager2,Perform the first phase of two phase construction
       
   344 	* @since S60 v3.1u
       
   345 	* @param       None
       
   346 	* @return      None
       
   347 	*/
       
   348 	COMASUPLProtocolManager2();
       
   349 
       
   350 	/**
       
   351 	* ConstructL,Perform the second phase construction of a COMASUPLProtocolManager2 object.
       
   352 	* @since S60 v3.1u
       
   353 	* @param       None
       
   354 	* @return      None
       
   355 	*/
       
   356 	void ConstructL();
       
   357 
       
   358 	/**
       
   359 	* CreateNewSessionL,An overloaded version that takes the COMASuplSession::TOMASuplReqType
       
   360 	*     			This additional method is required to take of invalid session ID
       
   361 	* @since S60 v3.1u
       
   362 	* @param       None
       
   363 	* @return      None
       
   364 	*/
       
   365 	//virtual 
       
   366 	CSuplSessionBase* CreateNewSessionL(
       
   367 						COMASuplSession::TOMASuplReqType aRequestType, 
       
   368 						TInt aIpcSessionId,
       
   369 						RSuplTerminalSubSession::TSuplServiceType aSuplService
       
   370 	);
       
   371     
       
   372 private : //For internal use only       
       
   373 
       
   374 	/**
       
   375 	* CompleteInitilization,Completes TRequestStatus used for initilization.
       
   376 	* @since S60 v3.1u
       
   377 	* @param       aError, error code by which we are going to complete TRequestStatus.
       
   378 	* @return      None
       
   379 	*/
       
   380 	void CompleteInitilization(TInt aError);  														
       
   381 
       
   382 	/**
       
   383 	* CheckForSessionCount, Check Max session count,if its reaches to max then resets to Zero.
       
   384 	* @since S60 v3.1u     
       
   385 	* @param      None
       
   386 	* @return     None
       
   387 	*/
       
   388 	void CheckForSessionCount();
       
   389 
       
   390 	/**
       
   391 	* ConnectToETelL, Connects to Telephony server & RMobilePhone
       
   392 	* @since S60 v3.1u     
       
   393 	* @param      None, 
       
   394 	* @return     TInt, returns system wide error code
       
   395 	*/
       
   396 	TInt  ConnectToETelL();
       
   397 
       
   398 	/**
       
   399 	* DeleteAllSessions, Deletes all sessions,if any session is remaining in array
       
   400 	* @since S60 v3.1u     
       
   401 	* @param      None, 
       
   402 	* @return     None
       
   403 	*/
       
   404 	void DeleteAllSessions();	
       
   405 	
       
   406 	/**
       
   407 	* HandleOMASuplPackets, Handles OMA Packets,passes to approriate session
       
   408 	* @since S60 v3.1u     
       
   409 	* @param      aPacket, Packet received from gateway...(i.e. thro' Communication Manager)
       
   410 	* @return     None
       
   411 	*/
       
   412 	void HandleOMASuplPacketsL(const TDesC8& aPacket, TUint aPortNum);
       
   413 
       
   414 	/**
       
   415 	* FindSession,finds session in sessions array,using decoded message 
       
   416 	* @since S60 v3.1u     
       
   417 	* @param      aRetrivedSessionID,Session which has to be find in sessions array. 
       
   418 	* @return     CSuplSessionBase*, session which found in sessions array,if any.
       
   419 	*/
       
   420     COMASuplSession* FindSession(COMASuplSessionID* aRetrivedSessionID,TBool& aInvalidSLPId, TBool& aInvalidSETId) const;
       
   421 
       
   422 	/**
       
   423 	*  GetSETSessionID, Retrives SET ID from COMASuplSessionID
       
   424 	* @since S60 v3.1u
       
   425 	* @param       aOMAsuplSessionID,Session ID. 
       
   426 	* @return      COMASuplSETSessionID, SET ID retrived from aOMAsuplSessionID.
       
   427 	*/
       
   428 	COMASuplSETSessionID* GetSETSessionID(COMASuplSessionID* aOMAsuplSessionID) const;
       
   429 
       
   430 	/**
       
   431 	* GetSLPSessionID, Retrives SLP ID from COMASuplSessionID
       
   432 	* @since S60 v3.1u     
       
   433 	* @param      aOMAsuplSessionID,Session ID. 
       
   434 	* @return     COMASuplSLPSessionID, SLP ID retrived from aOMAsuplSessionID.
       
   435 	*/
       
   436 	COMASuplSLPSessionID* GetSLPSessionID(COMASuplSessionID* aOMAsuplSessionID) const;
       
   437 	
       
   438 	/**
       
   439 	* CompareSETSessionID, Compares two SET ID of two Sessions.
       
   440 	* @since S60 v3.1u     
       
   441 	* @param      aSuplSETID, SET Session ID. 
       
   442 	* @param      aRetrivedSuplSETID, SET Session ID. 
       
   443 	* @return     TBool, if SET Session id matches returns ETrue else EFalse
       
   444 	*/
       
   445 	TBool CompareSETSessionID(COMASuplSETSessionID* aSuplSETID,
       
   446 							  COMASuplSETSessionID* aRetrivedSuplSETID) const;
       
   447 	
       
   448     /**
       
   449      * CompareSLPSessionID, Compares two SLP ID of two Sessions.
       
   450      * @since S60 v3.1u          
       
   451      * @param      aSuplSLPID, SLP Session ID. 
       
   452      * @param      aRetrivedSuplSLPID, SLP Session ID. 
       
   453      * @return     TBool, if matches returns ETrue else EFalse
       
   454      */
       
   455 	TBool CompareSLPSessionID(COMASuplSLPSessionID* aSuplSLPID,
       
   456 							 COMASuplSLPSessionID* aRetrivedSuplSLPID) const;	
       
   457 
       
   458     /**
       
   459      * ProcessInvalidSessionL, Processes invalid session, if any comes
       
   460      * @since S60 v3.1u          
       
   461      * @param      aRetrivedSessionID,SessionID of SuplSession. 
       
   462      * @return     None.
       
   463      */
       
   464 	void ProcessInvalidSessionL(COMASuplAsnMessageBase* aDecodedMsg);
       
   465 
       
   466     /**
       
   467      * ReadOMASuplSettingsL, Reads OMA Supl Configuration.
       
   468      * @since S60 v3.1u          
       
   469      * @param      None. 
       
   470      * @return     None.
       
   471      */
       
   472 	void ReadOMASuplSettingsL();
       
   473 	
       
   474     /**
       
   475      * ReadSuplUsage, Reads OMA Supl Usage.
       
   476      * @since S60 v3.1u          
       
   477      * @param      None. 
       
   478      * @return     None.
       
   479      */
       
   480     void ReadSuplUsage();
       
   481 	
       
   482     /**
       
   483      * ReadOMASuplConfigurationL, Reads OMA Supl Configuration.
       
   484      * @since S60 v3.1u          
       
   485      * @param      None. 
       
   486      * @return     None.
       
   487      */
       
   488 	void ReadOMASuplConfigurationL();
       
   489 	
       
   490     /**
       
   491      * ResetBufferingParameters, 
       
   492      * @since S60 v3.1          
       
   493      * @param      None. 
       
   494      * @return     None
       
   495      */
       
   496 	void ResetBufferingParameters();
       
   497 	
       
   498 	// For Logging purpose
       
   499 	void LogPacket(const TDesC8& aPacket,COMASuplAsnMessageBase* decodedAsn);
       
   500 	void LogAvailableSessions( COMASuplSETSessionID* aSuplSETID,COMASuplSLPSessionID* aSuplSLPID,TInt aTotalCount) const;
       
   501 	void LogReceivedSessionIdL(COMASuplSessionID* aRetrivedSessionID);
       
   502 	void PrintHex(const TDesC8& aBuffer,TInt aLine);
       
   503 
       
   504 	
       
   505 	TInt GetNetworkModeL();
       
   506     void CheckOutstandingUsageUIRequestsL();
       
   507     
       
   508 	/**
       
   509 	* LoadOMASUPLPluginsL, Loads supl protocolhandler plugins
       
   510 	* @since 		S60 v9.2TB
       
   511 	* @param      	None
       
   512 	* @return     	None
       
   513 	*/
       
   514 	void LoadOMASUPLPluginsL();
       
   515     
       
   516 protected:	//From MCompleteInitilization
       
   517 
       
   518     /**
       
   519      * InitilizationCompletedL, Gets called after initilization gets completed with error or without error.
       
   520      * @since S60 v3.1u          
       
   521      * @param      aError,Error code if any happen while initilization.
       
   522      * @return     None.
       
   523      */
       
   524 	void InitilizationCompletedL(TInt aError);
       
   525 	
       
   526 	void DeInitilizationCompletedL(TInt aError);
       
   527 	
       
   528 public: // MOMASuplTimeOutNotifier
       
   529 
       
   530 	/**
       
   531 	* Timeout Notifier Method.
       
   532 	* @since Series 60 3.1M
       
   533 	* @param None
       
   534 	* @return None
       
   535 	*/
       
   536 	virtual void TimerExpiredL();
       
   537 	
       
   538 public:  // COMASUPLProtocolManager
       
   539     void SetCommonConfig(COMASuplCommonConfig*& aCommmonConfig);	
       
   540 
       
   541 public:  // For ETEL requests
       
   542     void CheckForRoaming();
       
   543     void NotifyCurrentNetworkChange();
       
   544     void CancelNotify();
       
   545 
       
   546 public:  // MOMASuplETelNotifierObserver
       
   547     void HandleCurrentNetworkChangeL(TInt aErrorCode, TBool aHomeNw);
       
   548     void HandleRoamingCheckCompleteL(TInt aErrorCode, TBool aHomeNw);    
       
   549 
       
   550 private: // Data Members
       
   551 
       
   552 	//Holds all session objects created by CreateNewSession
       
   553 	RPointerArray<CSuplSessionBase> iSuplSessions;
       
   554 
       
   555 	//No of Sessions created
       
   556 	TInt iRunningSessionCount;
       
   557 
       
   558 	//Communication Manager
       
   559 	CSuplCommunicationManager* iCommManager;
       
   560 
       
   561 	//Tracing utility
       
   562 	COMASuplTrace* iTrace;
       
   563 
       
   564 	// Etel Server
       
   565 	RTelServer iTelServer;
       
   566 
       
   567 	//For access to a mobile phone
       
   568 	RMobilePhone iMobilePhone; 
       
   569 
       
   570 	//TSYName
       
   571 	TFileName iTsyName; 
       
   572 
       
   573 	// Indicates if the Protocol Manager was initialized or not
       
   574 	TBool iIsInitilized;
       
   575 
       
   576 	// OMA Supl Settings
       
   577 	COMASuplSettings* iSuplSettings;
       
   578 
       
   579 	//Pos Handler
       
   580 	COMASuplPosHandlerBase *iPosHandler;
       
   581 
       
   582 	// Asynchronous request status for Initilization
       
   583 	TRequestStatus* iInitilizationRequestStatus; 
       
   584 
       
   585 	
       
   586 	// Settings UI Handle
       
   587 	COMASuplSettingsLauncher* iSettingsLauncher;
       
   588     COMASuplETelNotifier* iNotifier;
       
   589 
       
   590     // Session Observer for UI completion
       
   591     MOMASuplUICompletionObserver* iSessnUIObserver;
       
   592 	// Asynchronous request status for De-Initilization
       
   593 	TRequestStatus* iDeInitRequestStatus; 
       
   594 
       
   595     TBool iDeInitDone;
       
   596 	
       
   597 	//	UT1 Timer for SUPL_START
       
   598 	TInt iUT1_StartTimer;
       
   599 	
       
   600 	//	UT2 Timer for SUPL_POS_INIT
       
   601 	TInt iUT2_PosInitTimer;
       
   602 	
       
   603 	//	UT3 Timer for SUPL_POS
       
   604 	TInt iUT3_PosTimer;
       
   605 	
       
   606 	//Privacy Timer
       
   607 	TInt iPrivacyTimer;
       
   608 	
       
   609 	//SET Mode
       
   610 	TInt iSETMode;
       
   611 
       
   612     //SUPL Usage configuration
       
   613     TInt iSuplUsage;
       
   614     // Timer for persistent failure
       
   615     TInt iPersistFailTimer;
       
   616 
       
   617 	//For ECom unload event
       
   618 	COMASuplEcomEventWatcher* iSuplEcomEventWatcher;
       
   619 	
       
   620 	//SUPLSettings
       
   621 	CSuplSettingsInternal *iSuplStorageSettings;
       
   622 	
       
   623 	// Container to store IMSI value
       
   624 	RBuf    iIMSI;
       
   625 	
       
   626 	RBuf8 iQueuedPacket;
       
   627 	
       
   628 	TInt iPreviousMessageLength;
       
   629 	
       
   630 	
       
   631 	TBool iIsPreviouslyDecodingFailed;
       
   632 	
       
   633 	//Timeout Timer
       
   634 	COMASuplTimeoutTimer* iTimer;
       
   635 
       
   636     TBool iNotifyStarted;
       
   637     TBool iRoamingCheckStarted;
       
   638     TInt iSuplInitTimeOut;
       
   639     TBool iTimeOutDialogPresent;
       
   640 
       
   641     RPointerArray<MOMASuplUICompletionObserver> iUIRequestArray;
       
   642     
       
   643     TBuf<256> iCurrentlyUsedHslp;
       
   644     
       
   645     COMASuplAsnHandlerBase* iOMASuplAsnHandlerBaseImpl;     
       
   646 };
       
   647 
       
   648 #endif // C_COMASUPLPROTOCOLMANAGER2_H