diff -r 000000000000 -r 3553901f7fa8 telephonyprotocols/pdplayer/inc/PDPSCPR.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/telephonyprotocols/pdplayer/inc/PDPSCPR.h Tue Feb 02 01:41:59 2010 +0200 @@ -0,0 +1,199 @@ +// 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 "PDPFSM.h" +#include "PDPParamMapper.h" +#include +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; +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