diff -r 6b1d113cdff3 -r 6638e7f4bd8f telephonyprotocols/pdplayer/inc/PDPSCPR.h --- a/telephonyprotocols/pdplayer/inc/PDPSCPR.h Mon May 03 13:37:20 2010 +0300 +++ b/telephonyprotocols/pdplayer/inc/PDPSCPR.h Thu May 06 15:10:38 2010 +0100 @@ -1,203 +1,205 @@ -// Copyright (c) 2006-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 SubConnection Provider class definition. -// -// - -/** - @file - @internalComponent -*/ - -#ifndef SYMBIAN_PDPSPR_H -#define SYMBIAN_PDPSPR_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "PDPFSM.h" -#include "PDPParamMapper.h" - -namespace PDPSCprStates - { - class TSelfInit; - class TCreateSecondaryOrMbmsPDPCtx; - class TCreatePrimaryPDPCtx; - class TActivatePDPContext; - class TSetQoS; - class TSetTFT; - class TRaiseParamsChanged; - class TRaiseParamsRejectedL; - class TParamsEvent; - class TFillInImsExtParams; - class TFillInGrantedParams; - class TNoTagIfRejoinNeededOrDataClientReady; - class TAwaitingPDPContextDestroyed; - class TNoTagOrProviderStopped; - class TSendDataClientStarted; - class TSendDataClientStopped; - class TApplyNewDefault; - class TRetrieveSipAddr; - class TModifyActivePDPContext; - class TSetMbmsParameters; - } - -namespace PDPSCprActivities - { - DECLARE_ACTIVITY_MAP(activityMap) - } -class CPDPDefaultSubConnectionProvider; -class CPDPSubConnectionProviderFactory; -class CPDPSubConnectionProvider : public CCoreSubConnectionProvider, public MPdpFsmEventHandler -/** Common subclass for default and non-default PDP subconnection providers. - -@internalTechnology -@released Since 9.4 */ - { - friend class CPDPSubConnectionProviderFactory; - friend class PDPSCprStates::TSelfInit; - friend class PDPSCprStates::TCreateSecondaryOrMbmsPDPCtx; - friend class PDPSCprStates::TCreatePrimaryPDPCtx; - friend class PDPSCprStates::TActivatePDPContext; - friend class PDPSCprStates::TSetQoS; - friend class PDPSCprStates::TSetTFT; - friend class PDPSCprStates::TRaiseParamsChanged; - friend class PDPSCprStates::TRaiseParamsRejectedL; - friend class PDPSCprStates::TParamsEvent; - friend class PDPSCprStates::TFillInGrantedParams; - friend class PDPSCprStates::TFillInImsExtParams; - friend class PDPSCprStates::TNoTagIfRejoinNeededOrDataClientReady; - friend class PDPSCprStates::TAwaitingPDPContextDestroyed; - friend class PDPSCprStates::TNoTagOrProviderStopped; - friend class PDPSCprStates::TSendDataClientStarted; - friend class PDPSCprStates::TSendDataClientStopped; - friend class PDPSCprStates::TApplyNewDefault; - friend class PDPSCprStates::TRetrieveSipAddr; - friend class PDPSCprStates::TSetMbmsParameters; - friend class PDPSCprStates::TModifyActivePDPContext; - - -public: - enum { EInvalidContextId = KMaxPdpContexts }; - typedef CPDPSubConnectionProviderFactory FactoryType; - virtual ~CPDPSubConnectionProvider(); - - //-==================================== - //MPdpFsmEventHandler methods - //-==================================== - virtual void Event(TInt aEvent, TInt aParam); - - //-==================================== - //ACFNode overrides - //-==================================== - void Received(MeshMachine::TNodeContextBase& aContext); - void ReceivedL(const Messages::TRuntimeCtxId& aSender, const Messages::TNodeId& aRecipient, Messages::TSignatureBase& aMessage); - - virtual void LinkUp(); - virtual void LinkDown(TInt aCause); - - CSubConQosR99ParamSet* GrantedQoS(); - TInt QoSRank(); - - TBool ContentionRequested() const - { - return iContentionRequested; - } - void SetContentionRequested(TBool aContentionRequested) - { - iContentionRequested = aContentionRequested; - } - -protected: - //-==================================== - //Construction methods bundle - accessible thru the factory only - //-==================================== - CPDPSubConnectionProvider(ESock::CSubConnectionProviderFactoryBase& aFactory); - CPDPSubConnectionProvider(ESock::CSubConnectionProviderFactoryBase& aFactory, - const MeshMachine::TNodeActivityMap& aActivityMap); - static CPDPSubConnectionProvider* NewL(CPDPSubConnectionProviderFactory& aFactory); - void ConstructL(); - -private: - TTFTInfo GetTftInfoL(CSubConIPAddressInfoParamSet* aParamSet); - TTFTOperationCode GetOperationCodeL(CSubConIPAddressInfoParamSet* aParamSet); - TUint FindPacketFilterIdL(CSubConIPAddressInfoParamSet::TSubConIPAddressInfo aParamInfo); - TUint FindIdOfMatchingParamSetL(CSubConIPAddressInfoParamSet::TSubConIPAddressInfo aParamInfo); - void NewPacketFilterAddedL(CSubConIPAddressInfoParamSet::TSubConIPAddressInfo aParamInfo, TUint aId); - void PacketFilterRemovedL(TUint aId); - -public: - //-==================================== - //PDP Ctx manipulation - //-==================================== - TContextId iPDPFsmContextId; - SpudMan::TPdpContextType iContextType; //maintain type of subconnection provider - CPdpFsmInterface* iPdpFsmInterface; - CPDPDefaultSubConnectionProvider* iDefaultSCPR; - TInt iActivityAwaitingResponse; - MPDPParamMapper::TQosParameterRelease iParamsRelease; - - //quite a big structure so kept here to avoid stack overflow. - RPacketContext::TDataChannelV2 iTempDataChannelV2; - TInt iProvisionFailure; -protected: - __FLOG_DECLARATION_MEMBER; - TInt iLinkUps; - -private: - // keeps record of assigned Id's for packetFilter - RArray iPacketFilterId; - TUint8 iPacketFilterMaskId; - TBool iIsModeGsm; - TBool iContentionRequested; - }; - -class THighestQoSQuery : public Factories::MFactoryQuery -/** Query scanning for the CPDPSubConnectionProvider with the highest QoS as per - 3GPP TS 23.107 Annex C. - Usage note: Use against CPDPSubConnectionProviderFactory::Find, which will - always return NULL (the query needs to traverse all the providers). Examine - THighestQoSQuery::HighestQoSProvider() after calling Find to get the highest - QoS provider. - -@internalTechnology -@released Since 9.5 */ - { - public: - THighestQoSQuery(Messages::TNodeId aCtrlProvider) - :iCtrlProvider(aCtrlProvider), - iHighestQoSProvider(NULL) - {} - - CPDPSubConnectionProvider* HighestQoSProvider() - { - return iHighestQoSProvider; - } - - protected: - virtual TMatchResult Match(Factories::TFactoryObjectInfo& aObjectInfo); - - private: - Messages::TNodeId iCtrlProvider; - CPDPSubConnectionProvider* iHighestQoSProvider; - }; - -#endif //SYMBIAN_PDPSPR_H +// Copyright (c) 2006-2010 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 SubConnection Provider class definition. +// +// + +/** + @file + @internalComponent +*/ + +#ifndef SYMBIAN_PDPSPR_H +#define SYMBIAN_PDPSPR_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "PDPFSM.h" +#include "PDPParamMapper.h" + +namespace PDPSCprStates + { + class TSelfInit; + class TCreateSecondaryOrMbmsPDPCtx; + class TCreatePrimaryPDPCtx; + class TActivatePDPContext; + class TSetQoS; + class TSetTFT; + class TRaiseParamsChanged; + class TRaiseParamsRejectedL; + class TParamsEvent; + class TFillInImsExtParams; + class TFillInGrantedParams; + class TNoTagIfRejoinNeededOrDataClientReady; + class TAwaitingPDPContextDestroyed; + class TNoTagOrProviderStopped; + class TSendDataClientStarted; + class TSendDataClientStopped; + class TApplyNewDefault; + class TRetrieveSipAddr; + class TModifyActivePDPContext; + class TSetMbmsParameters; + class TCleanupFSM; + } + +namespace PDPSCprActivities + { + DECLARE_ACTIVITY_MAP(activityMap) + } +class CPDPDefaultSubConnectionProvider; +class CPDPSubConnectionProviderFactory; +class CPDPSubConnectionProvider : public CCoreSubConnectionProvider, public MPdpFsmEventHandler +/** Common subclass for default and non-default PDP subconnection providers. + +@internalTechnology +@released Since 9.4 */ + { + friend class CPDPSubConnectionProviderFactory; + friend class PDPSCprStates::TSelfInit; + friend class PDPSCprStates::TCreateSecondaryOrMbmsPDPCtx; + friend class PDPSCprStates::TCreatePrimaryPDPCtx; + friend class PDPSCprStates::TActivatePDPContext; + friend class PDPSCprStates::TSetQoS; + friend class PDPSCprStates::TSetTFT; + friend class PDPSCprStates::TRaiseParamsChanged; + friend class PDPSCprStates::TRaiseParamsRejectedL; + friend class PDPSCprStates::TParamsEvent; + friend class PDPSCprStates::TFillInGrantedParams; + friend class PDPSCprStates::TFillInImsExtParams; + friend class PDPSCprStates::TNoTagIfRejoinNeededOrDataClientReady; + friend class PDPSCprStates::TAwaitingPDPContextDestroyed; + friend class PDPSCprStates::TNoTagOrProviderStopped; + friend class PDPSCprStates::TSendDataClientStarted; + friend class PDPSCprStates::TSendDataClientStopped; + friend class PDPSCprStates::TApplyNewDefault; + friend class PDPSCprStates::TRetrieveSipAddr; + friend class PDPSCprStates::TSetMbmsParameters; + friend class PDPSCprStates::TModifyActivePDPContext; + friend class PDPSCprStates::TCleanupFSM; + + +public: + enum { EInvalidContextId = KMaxPdpContexts }; + typedef CPDPSubConnectionProviderFactory FactoryType; + virtual ~CPDPSubConnectionProvider(); + + //-==================================== + //MPdpFsmEventHandler methods + //-==================================== + virtual void Event(TInt aEvent, TInt aParam); + + //-==================================== + //ACFNode overrides + //-==================================== + void Received(MeshMachine::TNodeContextBase& aContext); + void ReceivedL(const Messages::TRuntimeCtxId& aSender, const Messages::TNodeId& aRecipient, Messages::TSignatureBase& aMessage); + + virtual void LinkUp(); + virtual void LinkDown(TInt aCause); + + CSubConQosR99ParamSet* GrantedQoS(); + TInt QoSRank(); + + TBool ContentionRequested() const + { + return iContentionRequested; + } + void SetContentionRequested(TBool aContentionRequested) + { + iContentionRequested = aContentionRequested; + } + +protected: + //-==================================== + //Construction methods bundle - accessible thru the factory only + //-==================================== + CPDPSubConnectionProvider(ESock::CSubConnectionProviderFactoryBase& aFactory); + CPDPSubConnectionProvider(ESock::CSubConnectionProviderFactoryBase& aFactory, + const MeshMachine::TNodeActivityMap& aActivityMap); + static CPDPSubConnectionProvider* NewL(CPDPSubConnectionProviderFactory& aFactory); + void ConstructL(); + +private: + TTFTInfo GetTftInfoL(CSubConIPAddressInfoParamSet* aParamSet); + TTFTOperationCode GetOperationCodeL(CSubConIPAddressInfoParamSet* aParamSet); + TUint FindPacketFilterIdL(CSubConIPAddressInfoParamSet::TSubConIPAddressInfo aParamInfo); + TUint FindIdOfMatchingParamSetL(CSubConIPAddressInfoParamSet::TSubConIPAddressInfo aParamInfo); + void NewPacketFilterAddedL(CSubConIPAddressInfoParamSet::TSubConIPAddressInfo aParamInfo, TUint aId); + void PacketFilterRemovedL(TUint aId); + +public: + //-==================================== + //PDP Ctx manipulation + //-==================================== + TContextId iPDPFsmContextId; + SpudMan::TPdpContextType iContextType; //maintain type of subconnection provider + CPdpFsmInterface* iPdpFsmInterface; + CPDPDefaultSubConnectionProvider* iDefaultSCPR; + TInt iActivityAwaitingResponse; + MPDPParamMapper::TQosParameterRelease iParamsRelease; + + //quite a big structure so kept here to avoid stack overflow. + RPacketContext::TDataChannelV2 iTempDataChannelV2; + TInt iProvisionFailure; +protected: + __FLOG_DECLARATION_MEMBER; + TInt iLinkUps; + +private: + // keeps record of assigned Id's for packetFilter + RArray iPacketFilterId; + TUint8 iPacketFilterMaskId; + TBool iIsModeGsm; + TBool iContentionRequested; + }; + +class THighestQoSQuery : public Factories::MFactoryQuery +/** Query scanning for the CPDPSubConnectionProvider with the highest QoS as per + 3GPP TS 23.107 Annex C. + Usage note: Use against CPDPSubConnectionProviderFactory::Find, which will + always return NULL (the query needs to traverse all the providers). Examine + THighestQoSQuery::HighestQoSProvider() after calling Find to get the highest + QoS provider. + +@internalTechnology +@released Since 9.5 */ + { + public: + THighestQoSQuery(Messages::TNodeId aCtrlProvider) + :iCtrlProvider(aCtrlProvider), + iHighestQoSProvider(NULL) + {} + + CPDPSubConnectionProvider* HighestQoSProvider() + { + return iHighestQoSProvider; + } + + protected: + virtual TMatchResult Match(Factories::TFactoryObjectInfo& aObjectInfo); + + private: + Messages::TNodeId iCtrlProvider; + CPDPSubConnectionProvider* iHighestQoSProvider; + }; + +#endif //SYMBIAN_PDPSPR_H