telephonyprotocols/psdagt/inc/MipCdma.h
changeset 0 3553901f7fa8
child 24 6638e7f4bd8f
equal deleted inserted replaced
-1:000000000000 0:3553901f7fa8
       
     1 /**
       
     2 * Copyright (c) 2003-2009 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:
       
    15 * This file contains the definition of the
       
    16 * handling MIP handovers in a CDMA2000 network.
       
    17 * 
       
    18 *
       
    19 */
       
    20 
       
    21 
       
    22 
       
    23 /**
       
    24  @file MIPCDMA.H
       
    25  @internalComponent
       
    26 */
       
    27 
       
    28 #ifndef __MIPCDMA_H__
       
    29 #define __MIPCDMA_H__
       
    30 #include <e32base.h>
       
    31 #include <etel.h>
       
    32 #include <etelmm.h>
       
    33 #include <comms-infras/dbaccess.h>
       
    34 
       
    35 class CPSDAgent;
       
    36 class CMIPCdmaEtelZoneChangeRequest;
       
    37 
       
    38 class CMipCdmaHandoverHandler : public CActive
       
    39 /**
       
    40 This class is the main class that handles MIP handover in a 
       
    41 CDMA2000 network. It is written as an active object.
       
    42 It is triggered by one of two things
       
    43 1) a PPPLinkDown event or
       
    44 2) an ETEL notification that we have changed Zone
       
    45 
       
    46 When either of these two events come in it triggers a timer.
       
    47 If the timer runs out before the other  event takes place a normal
       
    48 Reconnect dialog box is shown. But, if the other event takes place 
       
    49 before the timer runs out, we will restart the connection without 
       
    50 user intervention.
       
    51 Lifetime of the object is as long as its owner.
       
    52 
       
    53 @internalComponent
       
    54 */
       
    55 	{
       
    56 public:
       
    57 	static CMipCdmaHandoverHandler* NewLC(CPSDAgent& aAgent, CCommsDbAccess& aDb);
       
    58 	static CMipCdmaHandoverHandler* NewL(CPSDAgent& aAgent, CCommsDbAccess& aDb);
       
    59 	~CMipCdmaHandoverHandler();
       
    60 	
       
    61 	//Trigger Functions
       
    62 	TBool PPPLinkDownEvent();
       
    63 	void ETELChangedZoneEvent();
       
    64 
       
    65 	//Starting and stopping to listen
       
    66 	TInt StartListening();
       
    67 	void StopListening();
       
    68 
       
    69 private:
       
    70 	CMipCdmaHandoverHandler(CPSDAgent& aAgent, CCommsDbAccess& aDb);
       
    71 	void ConstructL();
       
    72 	
       
    73 	// From CActive
       
    74 	virtual void DoCancel();
       
    75 	virtual void RunL();
       
    76 	
       
    77 	void StartTimer();
       
    78 	void RestartPPP();
       
    79 private:
       
    80 	RTimer iTimer;											///< Timer object 
       
    81 	TBool iPPPLinkDownEvent;								///< Boolean describing if we have got a PPPLinkDownEvent 
       
    82 	TBool iETELChangedZoneEvent;							///< Boolean describing if we have got an ETEL Zone Change Event
       
    83 	CPSDAgent& iAgent;										///< Reference to our owner(parent)
       
    84 	CMIPCdmaEtelZoneChangeRequest* iMipCdmaEtelZoneChanger;	///< Handle to our subclass that is responsible for receiving ETEL Zone change notifications
       
    85 	CCommsDbAccess& iDb;
       
    86 	};
       
    87 
       
    88 class CMIPCdmaEtelZoneChangeRequest : public CActive
       
    89 /**
       
    90 This class is a subclass owned by the CMipCdmaHandoverHandler.
       
    91 It is responsible to receive ETEL Zone change events.
       
    92 The class is written as an active object.
       
    93 
       
    94 When a notification comes in this class will notify its owner.
       
    95 Lifetime of the object is as long as its owner.
       
    96 The object can be started and stopped from the owner.
       
    97 
       
    98 @internalComponent
       
    99 */
       
   100 	{
       
   101 public:
       
   102 	static CMIPCdmaEtelZoneChangeRequest* NewLC(CMipCdmaHandoverHandler& aHandoverHandler, CPSDAgent& aAgent, CCommsDbAccess& aDb);
       
   103 	static CMIPCdmaEtelZoneChangeRequest* NewL(CMipCdmaHandoverHandler& aHandoverHandler, CPSDAgent& aAgent, CCommsDbAccess& aDb);
       
   104 	~CMIPCdmaEtelZoneChangeRequest();
       
   105 	
       
   106 	//Trigger Function
       
   107 	void StartRequest();
       
   108 
       
   109 	//Starting and stopping to listen to notifications
       
   110 	TInt StartListening();
       
   111 	void StopListening();
       
   112 
       
   113 private:
       
   114 	CMIPCdmaEtelZoneChangeRequest(CMipCdmaHandoverHandler& aHandoverHandler, CPSDAgent& aAgent, CCommsDbAccess& aDb);
       
   115 	void ConstructL();
       
   116 	
       
   117 	// From CActive
       
   118 	virtual void DoCancel();
       
   119 	virtual void RunL();
       
   120 
       
   121 	void InitPhoneL();
       
   122 private:
       
   123 	TBool iFirstTime;							///< Boolean stating if it is the first time the object is run.
       
   124 	CMipCdmaHandoverHandler& iHandoverHandler;	///< Handle to our owner/parent that we report to
       
   125 	CPSDAgent& iAgent;							///< Handle to the agent class
       
   126 	CCommsDbAccess& iDb;						///< Handle to CommDB
       
   127 	TBool iStarted;								///< Boolean describing if we are started (i.e. the link is up)
       
   128 	RTelServer iTelServer;						///< Handle to a phone server
       
   129 	RMobilePhone iMmPhone;						///< Handle to a phone object
       
   130 	HBufC* iTsyName;							///< Handle to the TSY name
       
   131 	RMobilePhone::TMobilePhoneNetworkInfoV1 iAsyncCurrentNetwork;		///< Object storing network information
       
   132 	RMobilePhone::TMobilePhoneNetworkInfoV1Pckg iPhoneNetworkInfoPckg;	///< Package object for the TMobilePhoneNetworkInfoV1 object
       
   133 	RMobilePhone::TMobilePhoneLocationAreaV1 iAsyncLocArea;				///< Object storing location information
       
   134 	RMobilePhone::TMobilePhoneNetworkIdentity iCurrentCdmaSID;			///< Object storing SID
       
   135 	RMobilePhone::TMobilePhoneNetworkIdentity iCurrentNetworkId;		///< Object storing NID
       
   136 	};
       
   137 #endif