diff -r 6b1d113cdff3 -r 6638e7f4bd8f telephonyprotocols/pdplayer/umts/spudfsm/src/cpdpfsmfactory.cpp --- a/telephonyprotocols/pdplayer/umts/spudfsm/src/cpdpfsmfactory.cpp Mon May 03 13:37:20 2010 +0300 +++ b/telephonyprotocols/pdplayer/umts/spudfsm/src/cpdpfsmfactory.cpp Thu May 06 15:10:38 2010 +0100 @@ -1,175 +1,175 @@ -// Copyright (c) 2004-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: -// PDP FSM factory implementation -// -// - -/** - @file - @internalComponent -*/ - -#include "cpdpfsmfactory.h" -#include "spudfsmdebuglogger.h" - -// NewL -CPdpFsmFactory* CPdpFsmFactory::NewL () - { - SPUDFSMVERBOSE_FNLOG("CPdpFsmFactory::NewL()"); - - return new (ELeave) CPdpFsmFactory (); - } - -#if defined(__VC32__) -#if (_MSC_VER >= 1200) -#pragma warning(disable:4355) -#endif -#endif -//Cpdpfsmfactory.cpp(22...) : warning C4355: 'this' : used in base member initializer list -// these warnings are benign unless the designed usage of SpudFsm changes such that SpudFsm is used -// as a base class to something else, in which case this code will have to change IFF the this pointer -// passed is used in the states c'tor. Currently, the pointer is just stored. -// In V9, e32def.h turns this warning off. - -CPdpFsmFactory::CPdpFsmFactory() -: iStateInitialised (this), - iStateOpeningPhone (this), - iStateCreatingPrimary (this), - iStateActivatingPrimary (this), - iStateCreatingSecondary (this), - iStateCreatedSecondary (this), - iStateSettingQoS (this), - iStateSettingTFT (this), - iStateActivatingSecondary (this), - iStateOpen (this), - iStateChangingQoS (this), - iStateChangingTFT (this), - iStateGettingNegQoS (this), - iStateModifyingActive (this), - iStateSuspended (this), - iStateClosing (this), - iStateStopping (this), - iStateCreatingMbms(this), - iStateActivatingMbms(this), - iStateCreatedMbms(this) - { - SPUDFSMVERBOSE_FNLOG("CPdpFsmFactory::CPdpFsmFactory()"); - } - - -CPdpFsmFactory::~CPdpFsmFactory() - { - SPUDFSMVERBOSE_FNLOG("CPdpFsmFactory::~CPdpFsmFactory()"); - - iContexts.DeleteAll(); - iContexts.Reset(); - - delete iEtelDriverInput; - } - - -void CPdpFsmFactory::InitL(const TName& aTsyName, CPdpFsmInterface * aPdpFsmInterface) - { - SPUDFSMVERBOSE_FNLOG("CPdpFsmFactory::InitL()"); - - iPdpFsmInterface = aPdpFsmInterface; - - iTsyName = aTsyName; - - // lets kick off the ETelDriver first then we only alloc FSMs if it works - // - iEtelDriverInput = new (ELeave) REtelDriverInput; - - iEtelDriverInput->OpenL (*iPdpFsmInterface); - - // Only create PDP contexts if specifically requested. - } - - -void CPdpFsmFactory::Close (void) - { - SPUDFSMVERBOSE_FNLOG("CPdpFsmFactory::Close()"); - // in OOM conditions iEtelDriveInput may not have successfully - // been created, check here for safety. - if (iEtelDriverInput != NULL) - { - iEtelDriverInput->Close(); - } - } - - -/** -@return may return NULL if there is no PDP context with that Id -*/ -CPdpFsm* CPdpFsmFactory::GetFsmContext (TContextId aPdpId) - { - SPUDFSMVERBOSE_FNLOG("CPdpFsmFactory::GetContext()"); - - return iContexts[aPdpId]; - } - - -const TName& CPdpFsmFactory::TsyName(void) - { - return iTsyName; - } - -#ifndef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY -TInt CPdpFsmFactory::NewFsmContext(TContextId aPdpId) -#else -TContextId CPdpFsmFactory::NewFsmContextL(MPdpFsmEventHandler& aPdpFsmEventHandler,SpudMan::TPdpContextType aContextType) -#endif - { - SPUDFSMVERBOSE_FNLOG("CPdpFsmFactory::NewFsmContext()"); - -#ifndef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY - TInt ret = KErrNone; - ASSERT(ContextIdIsValid(aPdpId)); - if (!HaveFsmContext(aPdpId)) - { - // Only ever called by non-leaving functions. We're going to have to trap at some point in the calling hierarchy... - // - TRAP(ret, - CPdpFsm* p = CPdpFsm::NewL(aPdpId, this, iEtelDriverInput); - iContexts[aPdpId] = p; - ); - } - return ret; -#else - TInt i=0; - while (i < KMaxPdpContexts && iContexts[i] != NULL) - { - i++; - } - if (i < KMaxPdpContexts) - { - CPdpFsm* p = CPdpFsm::NewL(i, this, iEtelDriverInput, aPdpFsmEventHandler, aContextType); - iContexts[i] = p; - iEtelDriverInput->CreatePdpL(i, aContextType); - } - return i; -#endif - } - -TInt CPdpFsmFactory::DeleteFsmContext(TContextId aPdpId) - { - SPUDFSMVERBOSE_FNLOG("CPdpFsmFactory::DeleteFsmContext()"); - ASSERT(ContextIsValid(aPdpId)); - - delete iContexts[aPdpId]; - iContexts[aPdpId] = NULL; - - return KErrNone; - } - +// Copyright (c) 2004-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: +// PDP FSM factory implementation +// +// + +/** + @file + @internalComponent +*/ + +#include "cpdpfsmfactory.h" +#include "spudfsmdebuglogger.h" + +// NewL +CPdpFsmFactory* CPdpFsmFactory::NewL () + { + SPUDFSMVERBOSE_FNLOG("CPdpFsmFactory::NewL()"); + + return new (ELeave) CPdpFsmFactory (); + } + +#if defined(__VC32__) +#if (_MSC_VER >= 1200) +#pragma warning(disable:4355) +#endif +#endif +//Cpdpfsmfactory.cpp(22...) : warning C4355: 'this' : used in base member initializer list +// these warnings are benign unless the designed usage of SpudFsm changes such that SpudFsm is used +// as a base class to something else, in which case this code will have to change IFF the this pointer +// passed is used in the states c'tor. Currently, the pointer is just stored. +// In V9, e32def.h turns this warning off. + +CPdpFsmFactory::CPdpFsmFactory() +: iStateInitialised (this), + iStateOpeningPhone (this), + iStateCreatingPrimary (this), + iStateActivatingPrimary (this), + iStateCreatingSecondary (this), + iStateCreatedSecondary (this), + iStateSettingQoS (this), + iStateSettingTFT (this), + iStateActivatingSecondary (this), + iStateOpen (this), + iStateChangingQoS (this), + iStateChangingTFT (this), + iStateGettingNegQoS (this), + iStateModifyingActive (this), + iStateSuspended (this), + iStateClosing (this), + iStateStopping (this), + iStateCreatingMbms(this), + iStateActivatingMbms(this), + iStateCreatedMbms(this) + { + SPUDFSMVERBOSE_FNLOG("CPdpFsmFactory::CPdpFsmFactory()"); + } + + +CPdpFsmFactory::~CPdpFsmFactory() + { + SPUDFSMVERBOSE_FNLOG("CPdpFsmFactory::~CPdpFsmFactory()"); + + iContexts.DeleteAll(); + iContexts.Reset(); + + delete iEtelDriverInput; + } + + +void CPdpFsmFactory::InitL(const TName& aTsyName, CPdpFsmInterface * aPdpFsmInterface) + { + SPUDFSMVERBOSE_FNLOG("CPdpFsmFactory::InitL()"); + + iPdpFsmInterface = aPdpFsmInterface; + + iTsyName = aTsyName; + + // lets kick off the ETelDriver first then we only alloc FSMs if it works + // + iEtelDriverInput = new (ELeave) REtelDriverInput; + + iEtelDriverInput->OpenL (*iPdpFsmInterface); + + // Only create PDP contexts if specifically requested. + } + + +void CPdpFsmFactory::Close (void) + { + SPUDFSMVERBOSE_FNLOG("CPdpFsmFactory::Close()"); + // in OOM conditions iEtelDriveInput may not have successfully + // been created, check here for safety. + if (iEtelDriverInput != NULL) + { + iEtelDriverInput->Close(); + } + } + + +/** +@return may return NULL if there is no PDP context with that Id +*/ +CPdpFsm* CPdpFsmFactory::GetFsmContext (TContextId aPdpId) + { + SPUDFSMVERBOSE_FNLOG("CPdpFsmFactory::GetContext()"); + + return iContexts[aPdpId]; + } + + +const TName& CPdpFsmFactory::TsyName(void) + { + return iTsyName; + } + +#ifndef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY +TInt CPdpFsmFactory::NewFsmContext(TContextId aPdpId) +#else +TContextId CPdpFsmFactory::NewFsmContextL(MPdpFsmEventHandler& aPdpFsmEventHandler,SpudMan::TPdpContextType aContextType) +#endif + { + SPUDFSMVERBOSE_FNLOG("CPdpFsmFactory::NewFsmContext()"); + +#ifndef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + TInt ret = KErrNone; + ASSERT(ContextIdIsValid(aPdpId)); + if (!HaveFsmContext(aPdpId)) + { + // Only ever called by non-leaving functions. We're going to have to trap at some point in the calling hierarchy... + // + TRAP(ret, + CPdpFsm* p = CPdpFsm::NewL(aPdpId, this, iEtelDriverInput); + iContexts[aPdpId] = p; + ); + } + return ret; +#else + TInt i=0; + while (i < KMaxPdpContexts && iContexts[i] != NULL) + { + i++; + } + if (i < KMaxPdpContexts) + { + CPdpFsm* p = CPdpFsm::NewL(i, this, iEtelDriverInput, aPdpFsmEventHandler, aContextType); + iContexts[i] = p; + iEtelDriverInput->CreatePdpL(i, aContextType); + } + return i; +#endif + } + +TInt CPdpFsmFactory::DeleteFsmContext(TContextId aPdpId) + { + SPUDFSMVERBOSE_FNLOG("CPdpFsmFactory::DeleteFsmContext()"); + ASSERT(ContextIsValid(aPdpId)); + + delete iContexts[aPdpId]; + iContexts[aPdpId] = NULL; + + return KErrNone; + } +