--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyprotocols/pdplayer/umts/spudtel/inc/ceteldrivercontext.h Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,498 @@
+// Copyright (c) 2005-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:
+// Header for etel driver context class
+//
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef CETELDRIVERCONTEXT_H
+#define CETELDRIVERCONTEXT_H
+
+#include <e32base.h>
+#include <etelmm.h>
+#include <etelqos.h>
+#include <networking/umtsnifcontrolif.h>
+#include <pcktretrieve.h>
+
+#include "eteldrivernmspace.h"
+#include "PDPFSM.h"
+#include "meteldriverstrategy.h"
+#include "pdpfsmnmspace.h"
+
+
+class CEtelDriverFactory;
+
+//using namespace EtelDriver;
+/**
+ A data storage for pdp context
+
+ @internalComponent
+*/
+class CEtelDriverContext : public CActive
+ {
+public:
+ static CEtelDriverContext* NewL(TContextId aId, SpudMan::TPdpContextType aContextType, CEtelDriverFactory& aFactory);
+ virtual ~CEtelDriverContext();
+
+ TInt Input (EtelDriver::TEtelInput aOperation);
+
+ void StartNotifications() const;
+ void StopNotifications() const;
+
+ // CActive methods
+
+ /** accessors, basic */
+ inline TContextId Id() const;
+ inline SpudMan::TPdpContextType ContextType() const;
+ inline TName& Name();
+ inline TRequestStatus& CompletionStatus();
+ MEtelDriverStrategy::TSequenceStep StrategyStep() const;
+ inline void SetStrategyStep (MEtelDriverStrategy::TSequenceStep aStep);
+
+
+ /** accessors, eTel objects */
+ inline RPacketQoS& PacketQoS();
+ inline RPacketContext& PacketContext();
+
+ inline RPacketMbmsContext& MbmsPacketContext();
+
+
+ RPhone& Phone() const;
+ RPacketService& PacketService() const;
+ CPdpFsmInterface& PdpFsmInterface() const;
+ const TName& ExistingContextName() const;
+
+ /** context data accessors */
+
+ inline TRequestedProfileBuffer& QosRequested();
+ inline TNegotiatedProfileBuffer& QosNegotiated();
+
+ inline TPacketDataConfigBase& ContextPacketDataConfigBase();
+ inline TDes8& ContextConfig();
+ inline RPacketMbmsContext::TContextConfigMbmsV1& ContextConfigMbms();
+
+ inline TRequestedProfileBufferPckg& QosRequestedPckg();
+ inline TNegotiatedProfileBufferPckg& QosNegotiatedPckg();
+ inline EtelDriver::TContextConfigGPRSPckg& ContextConfigGPRSPckg();
+ inline EtelDriver::TContextConfigMbmsV1Pckg& ContextConfigMbmsPckg();
+ inline TInt SessionId();
+ inline RPacketContext::TDataChannelV2& DataChannelV2();
+ inline RPacketContext::TDataChannelV2Pckg& DataChannelV2Pckg();
+ inline TTFTInfo& TftInfo();
+ inline RPacketContext::TPacketFilterV2& FilterV2();
+ inline RPacketContext::TPacketFilterV2Pckg& FilterV2Pckg();
+ inline TUint8 TftRequested() const;
+ inline TInt FirstFilterV2();
+ inline TInt NextFilterV2();
+ inline TTFTOperationCode& TftOperationCode();
+ inline TSessionOperatioInfo& GetSessionInfo() ;
+ inline TInt GetSessionIndex() const;
+ inline void SetSessionIndex(const TInt aSessionIndex);
+ inline void SetRetrievePcktMbmsSessionList(CRetrievePcktMbmsSessionList* aPcktContextSessionList);
+ inline CRetrievePcktMbmsSessionList* RetrievePcktMbmsSessionList();
+ inline void SetMbmsSession(RPacketMbmsContext::CMbmsSession* aMbmsSesion);
+ inline RPacketMbmsContext::CMbmsSession* MbmsSession();
+
+ inline RPacketContext::TContextStatus& ContextStatus();
+
+#ifdef _DEBUG
+ void DumpReqProfileParameters ();
+ void DumpNegProfileParameters ();
+#endif
+
+protected:
+ MEtelDriverStrategy& Strategy(EtelDriver::TEtelDriverStrategy aId) const;
+
+ // CActive methods
+ virtual void RunL();
+ virtual void DoCancel();
+
+private:
+ CEtelDriverContext (TContextId aId, SpudMan::TPdpContextType aContextType, CEtelDriverFactory& aFactory);
+ void ConstructL();
+
+protected:
+ /** ID */
+ TContextId iId;
+ /* context type */
+ SpudMan::TPdpContextType iContextType;
+ /** tsy name of a context */
+ TName iName;
+ /** request status */
+ TRequestStatus iCompletionStatus;
+ /** active strategy step */
+ MEtelDriverStrategy::TSequenceStep iStrategyStep;
+ /** id of active strategy */
+ EtelDriver::TEtelDriverStrategy iStrategyId;
+
+ /** packet QoS */
+ RPacketQoS iPacketQoS;
+ /** packet context */
+ RPacketContext iPacketContext;
+
+ // factory data:
+ /** etel driver factory */
+ CEtelDriverFactory& iFactory;
+
+ // data from pdp fsm
+ // all members below contain valid data for limited time only,
+ // i.e. for the duration of a strategy OR a duration of a single call to etel
+ /** Requested QoS */
+ TRequestedProfileBuffer iQosRequested;
+ TRequestedProfileBufferPckg iQosRequestedPckg;
+
+ /** Negotiated QoS */
+ TNegotiatedProfileBuffer iQosNegotiated;
+ TNegotiatedProfileBufferPckg iQosNegotiatedPckg;
+
+ /** context config */
+ RBuf8 iContextConfig;
+ /** tft info */
+ TTFTInfo iTftInfo;
+ /** data channel V2 */
+ RPacketContext::TDataChannelV2 iDataChannelV2;
+ /** packaged data channel V2 */
+ RPacketContext::TDataChannelV2Pckg iDataChannelV2Pckg;
+
+ /*mbms packet context*/
+ RPacketMbmsContext iMbmsPacketContext;
+ CRetrievePcktMbmsSessionList* iPcktMbmsSessionList;
+ RPacketMbmsContext::CMbmsSession* iMbmsSession;
+ RPacketMbmsContext::TContextConfigMbmsV1 iContextConfigMbms;
+ RPacketMbmsContext::TContextConfigMbmsV1Pckg iContextConfigMbmsPckg;
+ TSessionOperatioInfo iSessionInfo;
+ TInt iSessionIndex;
+
+
+private:
+ // TFT data
+ /** local var for tft count */
+ TUint8 iTftRequested;
+ /** local V2 filter */
+ RPacketContext::TPacketFilterV2 iFilterV2;
+ /** local packaged V2 filter */
+ EtelDriver::TPacketFilterV2Pckg iFilterV2Pckg;
+ /** TFT Operation Code */
+ TTFTOperationCode iTftOperationCode;
+
+ RPacketContext::TContextStatus iContextStatus;
+ };
+
+
+// inlines
+/** accessor
+
+@return id of first V2 filter
+*/
+inline TInt CEtelDriverContext::FirstFilterV2()
+ {
+ iTftInfo.SetToFirst();
+ iTftRequested = 0;
+ return iTftInfo.NextPacketFilter(iFilterV2);
+ }
+
+/** accessor
+
+@return id of next V2 filter
+*/
+inline TInt CEtelDriverContext::NextFilterV2()
+ {
+ TInt err = iTftInfo.NextPacketFilter(iFilterV2);
+ if (err == KErrNone)
+ {
+ ++iTftRequested;
+ }
+ return err;
+ }
+
+/** accessor
+
+@return context id
+*/
+inline TContextId CEtelDriverContext::Id() const
+ {
+ return iId;
+ }
+
+
+/** accessor
+
+@return context id
+*/
+inline SpudMan::TPdpContextType CEtelDriverContext::ContextType() const
+ {
+ return iContextType;
+ }
+
+
+
+
+/** accessor
+
+@return reference to name of pdp context
+*/
+inline TName& CEtelDriverContext::Name()
+ {
+ return iName;
+ }
+
+/** accessor
+
+@return reference to request status
+*/
+inline TRequestStatus& CEtelDriverContext::CompletionStatus()
+ {
+ return iCompletionStatus;
+ }
+
+/** accessor
+
+@return strategy sequence step
+*/
+inline MEtelDriverStrategy::TSequenceStep CEtelDriverContext::StrategyStep() const
+ {
+ return iStrategyStep;
+ }
+
+/** sets strategy sequence step
+
+@param aStep - strategy sequence step
+*/
+inline void CEtelDriverContext::SetStrategyStep(MEtelDriverStrategy::TSequenceStep aStep)
+ {
+ iStrategyStep = aStep;
+ }
+
+/** accessor
+
+@return reference to etel packet QoS
+*/
+inline RPacketQoS& CEtelDriverContext::PacketQoS()
+ {
+ return iPacketQoS;
+ }
+
+/** accessor
+
+@return reference to etel packet context
+*/
+inline RPacketContext& CEtelDriverContext::PacketContext()
+ {
+ return iPacketContext;
+ }
+
+/** accessor
+
+@return reference to mbms etel packet context
+*/
+inline RPacketMbmsContext& CEtelDriverContext::MbmsPacketContext()
+ {
+ return iMbmsPacketContext;
+ }
+
+
+inline TSessionOperatioInfo& CEtelDriverContext::GetSessionInfo()
+ {
+ return iSessionInfo;
+ }
+inline TInt CEtelDriverContext::GetSessionIndex() const
+ {
+ return iSessionIndex;
+ }
+inline void CEtelDriverContext::SetSessionIndex(const TInt aSessionIndex)
+ {
+ iSessionIndex=aSessionIndex;
+ }
+
+
+inline void CEtelDriverContext::SetRetrievePcktMbmsSessionList(CRetrievePcktMbmsSessionList* aPcktContextSessionList)
+ {
+ iPcktMbmsSessionList= aPcktContextSessionList;
+ }
+
+inline CRetrievePcktMbmsSessionList* CEtelDriverContext::RetrievePcktMbmsSessionList()
+ {
+ return iPcktMbmsSessionList;
+ }
+
+inline void CEtelDriverContext::SetMbmsSession(RPacketMbmsContext::CMbmsSession* aMbmsSession)
+ {
+ iMbmsSession=aMbmsSession;
+ }
+
+inline RPacketMbmsContext::CMbmsSession* CEtelDriverContext::MbmsSession()
+ {
+ return iMbmsSession;
+ }
+
+
+// context data accessors
+/**
+accessor
+@return reference to QoSR5Requested
+*/
+
+inline TRequestedProfileBuffer& CEtelDriverContext::QosRequested()
+ {
+ return iQosRequested;
+ }
+
+
+inline TNegotiatedProfileBuffer& CEtelDriverContext::QosNegotiated()
+ {
+ return iQosNegotiated;
+ }
+
+
+
+
+
+
+/** accessor
+
+@return reference to TRequestedProfileBufferPckg
+*/
+inline TRequestedProfileBufferPckg& CEtelDriverContext::QosRequestedPckg()
+ {
+ return iQosRequestedPckg;
+ }
+
+/**
+accessor
+@return reference to TNegotiatedProfileBufferPckg
+*/
+inline TNegotiatedProfileBufferPckg& CEtelDriverContext::QosNegotiatedPckg()
+ {
+ return iQosNegotiatedPckg;
+ }
+
+
+/**
+accessor
+@return reference to ContextConfig as PacketDataConfigBase
+*/
+inline TPacketDataConfigBase& CEtelDriverContext::ContextPacketDataConfigBase()
+ {
+ return *const_cast<TPacketDataConfigBase*>(reinterpret_cast<const TPacketDataConfigBase*>(iContextConfig.Ptr()));
+ }
+/** accessor
+
+@return reference to ContextConfigMbmsPckg
+*/
+
+inline RPacketMbmsContext::TContextConfigMbmsV1& CEtelDriverContext::ContextConfigMbms()
+ {
+ return iContextConfigMbms;
+ }
+
+
+
+/** accessor
+
+@return reference to ContextConfig
+*/
+inline TDes8& CEtelDriverContext::ContextConfig()
+ {
+ return iContextConfig;
+ }
+
+
+
+inline EtelDriver::TContextConfigMbmsV1Pckg& CEtelDriverContext::ContextConfigMbmsPckg()
+ {
+ return iContextConfigMbmsPckg;
+ }
+
+
+
+
+/** accessor
+
+@return reference to packet context' DataChannelV2
+*/
+inline RPacketContext::TDataChannelV2& CEtelDriverContext::DataChannelV2()
+ {
+ return iDataChannelV2;
+ }
+
+/** accessor
+
+@return reference to packet context' DataChannelV2Pckg
+*/
+inline RPacketContext::TDataChannelV2Pckg& CEtelDriverContext::DataChannelV2Pckg()
+ {
+ return iDataChannelV2Pckg;
+ }
+
+/** accessor
+
+@return reference to TFT info
+*/
+inline TTFTInfo& CEtelDriverContext::TftInfo()
+ {
+ return iTftInfo;
+ }
+
+/** accessor
+
+@return reference to packet context' PacketFilterV2
+*/
+inline RPacketContext::TPacketFilterV2& CEtelDriverContext::FilterV2()
+ {
+ return iFilterV2;
+ }
+
+/** accessor
+
+@return reference to packet context' PacketFilterV2Pckg
+*/
+inline RPacketContext::TPacketFilterV2Pckg& CEtelDriverContext::FilterV2Pckg()
+ {
+ return iFilterV2Pckg;
+ }
+
+/** accessor
+
+@return requested TFT
+*/
+inline TUint8 CEtelDriverContext::TftRequested() const
+ {
+ return iTftRequested;
+ }
+
+/** accessor
+
+@return reference to TFT operation code
+*/
+inline TTFTOperationCode& CEtelDriverContext::TftOperationCode()
+ {
+ return iTftOperationCode;
+ }
+
+
+/** accessor
+
+@return reference to ContextStatus
+*/
+inline RPacketContext::TContextStatus& CEtelDriverContext::ContextStatus()
+ {
+ return iContextStatus;
+ }
+
+#endif
+// CETELDRIVERCONTEXT_H