diff -r 000000000000 -r 3553901f7fa8 telephonyprotocols/psdagt/inc/MipCdma.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/telephonyprotocols/psdagt/inc/MipCdma.h Tue Feb 02 01:41:59 2010 +0200 @@ -0,0 +1,137 @@ +/** +* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* This file contains the definition of the +* handling MIP handovers in a CDMA2000 network. +* +* +*/ + + + +/** + @file MIPCDMA.H + @internalComponent +*/ + +#ifndef __MIPCDMA_H__ +#define __MIPCDMA_H__ +#include +#include +#include +#include + +class CPSDAgent; +class CMIPCdmaEtelZoneChangeRequest; + +class CMipCdmaHandoverHandler : public CActive +/** +This class is the main class that handles MIP handover in a +CDMA2000 network. It is written as an active object. +It is triggered by one of two things +1) a PPPLinkDown event or +2) an ETEL notification that we have changed Zone + +When either of these two events come in it triggers a timer. +If the timer runs out before the other event takes place a normal +Reconnect dialog box is shown. But, if the other event takes place +before the timer runs out, we will restart the connection without +user intervention. +Lifetime of the object is as long as its owner. + +@internalComponent +*/ + { +public: + static CMipCdmaHandoverHandler* NewLC(CPSDAgent& aAgent, CCommsDbAccess& aDb); + static CMipCdmaHandoverHandler* NewL(CPSDAgent& aAgent, CCommsDbAccess& aDb); + ~CMipCdmaHandoverHandler(); + + //Trigger Functions + TBool PPPLinkDownEvent(); + void ETELChangedZoneEvent(); + + //Starting and stopping to listen + TInt StartListening(); + void StopListening(); + +private: + CMipCdmaHandoverHandler(CPSDAgent& aAgent, CCommsDbAccess& aDb); + void ConstructL(); + + // From CActive + virtual void DoCancel(); + virtual void RunL(); + + void StartTimer(); + void RestartPPP(); +private: + RTimer iTimer; ///< Timer object + TBool iPPPLinkDownEvent; ///< Boolean describing if we have got a PPPLinkDownEvent + TBool iETELChangedZoneEvent; ///< Boolean describing if we have got an ETEL Zone Change Event + CPSDAgent& iAgent; ///< Reference to our owner(parent) + CMIPCdmaEtelZoneChangeRequest* iMipCdmaEtelZoneChanger; ///< Handle to our subclass that is responsible for receiving ETEL Zone change notifications + CCommsDbAccess& iDb; + }; + +class CMIPCdmaEtelZoneChangeRequest : public CActive +/** +This class is a subclass owned by the CMipCdmaHandoverHandler. +It is responsible to receive ETEL Zone change events. +The class is written as an active object. + +When a notification comes in this class will notify its owner. +Lifetime of the object is as long as its owner. +The object can be started and stopped from the owner. + +@internalComponent +*/ + { +public: + static CMIPCdmaEtelZoneChangeRequest* NewLC(CMipCdmaHandoverHandler& aHandoverHandler, CPSDAgent& aAgent, CCommsDbAccess& aDb); + static CMIPCdmaEtelZoneChangeRequest* NewL(CMipCdmaHandoverHandler& aHandoverHandler, CPSDAgent& aAgent, CCommsDbAccess& aDb); + ~CMIPCdmaEtelZoneChangeRequest(); + + //Trigger Function + void StartRequest(); + + //Starting and stopping to listen to notifications + TInt StartListening(); + void StopListening(); + +private: + CMIPCdmaEtelZoneChangeRequest(CMipCdmaHandoverHandler& aHandoverHandler, CPSDAgent& aAgent, CCommsDbAccess& aDb); + void ConstructL(); + + // From CActive + virtual void DoCancel(); + virtual void RunL(); + + void InitPhoneL(); +private: + TBool iFirstTime; ///< Boolean stating if it is the first time the object is run. + CMipCdmaHandoverHandler& iHandoverHandler; ///< Handle to our owner/parent that we report to + CPSDAgent& iAgent; ///< Handle to the agent class + CCommsDbAccess& iDb; ///< Handle to CommDB + TBool iStarted; ///< Boolean describing if we are started (i.e. the link is up) + RTelServer iTelServer; ///< Handle to a phone server + RMobilePhone iMmPhone; ///< Handle to a phone object + HBufC* iTsyName; ///< Handle to the TSY name + RMobilePhone::TMobilePhoneNetworkInfoV1 iAsyncCurrentNetwork; ///< Object storing network information + RMobilePhone::TMobilePhoneNetworkInfoV1Pckg iPhoneNetworkInfoPckg; ///< Package object for the TMobilePhoneNetworkInfoV1 object + RMobilePhone::TMobilePhoneLocationAreaV1 iAsyncLocArea; ///< Object storing location information + RMobilePhone::TMobilePhoneNetworkIdentity iCurrentCdmaSID; ///< Object storing SID + RMobilePhone::TMobilePhoneNetworkIdentity iCurrentNetworkId; ///< Object storing NID + }; +#endif