telephonyserverplugins/ctsydispatchlayer/inc/cpacketservicesdispatcher.h
branchopencode
changeset 24 6638e7f4bd8f
parent 0 3553901f7fa8
child 32 58332560b319
--- a/telephonyserverplugins/ctsydispatchlayer/inc/cpacketservicesdispatcher.h	Mon May 03 13:37:20 2010 +0300
+++ b/telephonyserverplugins/ctsydispatchlayer/inc/cpacketservicesdispatcher.h	Thu May 06 15:10:38 2010 +0100
@@ -1,262 +1,257 @@
-// Copyright (c) 2008-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:
-//
-
-/**
- @file
- @internalAll 
-*/
-
-#ifndef __CPACKETSERVICESDISPATCHER_H_
-#define __CPACKETSERVICESDISPATCHER_H_
-
-// INCLUDES
-#include <e32std.h>
-#include <e32base.h>
-#include <e32def.h>
-#include <etelmm.h>
-#include <etelpckt.h>
-#include <etelqos.h>
-#include <ctsy/serviceapi/cmmutility.h>
-
-#include <ctsy/ltsy/mltsydispatchfactory.h>
-#include "requestqueueoneshot.h"
-#include <ctsy/ltsy/ltsylogger.h>
-#include "mdispatchercallback.h"
-
-const TInt KPrimaryAndSecondaryDNSLength = 16;
-const TUint KPasswordUsernameHeaderLength = 7;
-const TUint KIPCRequestCode = 1;
-const TUint KRequestID = 0;
-const TUint KIDLength = 3;
-const TUint KMaxUserAndPassLength = 80;
-const TUint KMaxPdpAddressLength = 50;
-const TUint KPrimaryAndSecondaryDNSID = 0xC023;
-const TUint KUsenamePasswordDNSID = 0x8021;
-const TUint KIndicatePrimaryAddress = 0x81;
-const TUint KIndicateSecondaryAddress = 0x83;
-const TUint KPacketLengthMSB = 0x0;
-const TUint KDnsAddressLength = 6;
-_LIT(KEmptyInfoName, "");
-
-const TInt KHeaderGap = 8; 	// Offsets for decoding PCO buffer
-const TInt KIPv4Len = 4;		// Offsets for decoding PCO buffer
-const TInt KLengthLocation = 4;// Offsets for decoding PCO buffer
-const TInt KMinPCOSize = 3;    // Minimum PCO buffer size as set in 3G TS 24.008 spec
-
-// FORWARD DECLARATIONS
-class CMmDataPackage;
-class MmMessageManagerCallback;
-class TDispatcherHolder;
-
-class MLtsyDispatchPacketServicesPacketAttach;
-class MLtsyDispatchPacketServicesGetPacketAttachMode;
-class MLtsyDispatchPacketServicesGetPacketNetworkRegistrationStatus;
-class MLtsyDispatchPacketServicesPacketDetach;
-class MLtsyDispatchPacketServicesSetPdpContextConfig;
-class MLtsyDispatchPacketServicesModifyActivePdpContext;
-class MLtsyDispatchPacketServicesInitialisePdpContext;
-class MLtsyDispatchPacketServicesDeletePdpContext;
-class MLtsyDispatchPacketServicesSetPacketAttachMode;
-class MLtsyDispatchPacketServicesNotifyPacketStatusChange;
-class MLtsyDispatchPacketServicesSetDefaultPdpContextGprsParams;
-class MLtsyDispatchPacketServicesSetDefaultPdpContextR99R4Params;
-class MLtsyDispatchPacketServicesActivatePdpContext;
-class MLtsyDispatchPacketServicesSetPdpContextQosGprs;
-class MLtsyDispatchPacketServicesSetPdpContextQosR99R4;
-class MLtsyDispatchPacketServicesSetPdpContextQosR5;
-class MLtsyDispatchPacketServicesRejectNetworkInitiatedContextActivationRequest;
-class MLtsyDispatchPacketServicesDeactivatePdpContext;
-class MLtsyDispatchPacketServicesAddPacketFilter;
-class MLtsyDispatchPacketServicesGetStatus;
-class MLtsyDispatchPacketServicesGetStaticCapabilities;
-class MLtsyDispatchPacketServicesGetMaxNoMonitoredServiceLists;
-class MLtsyDispatchPacketServicesGetMaxNoActiveServices;
-class MLtsyDispatchPacketServicesInitialiseMbmsContext;
-class MLtsyDispatchPacketServicesGetMbmsNetworkServiceStatus;
-class MLtsyDispatchPacketServicesUpdateMbmsMonitorServiceList;
-class MLtsyDispatchPacketServicesUpdateMbmsSessionList;
-class MLtsyDispatchPacketServicesRemovePacketFilter;
-
-// CLASS DECLARATION
-
-/**
- * This class is responsible for packing and unpacking data belonging
- * to PacketServices related requests to the Licensee LTSY.
- */
-class CPacketServicesDispatcher : public CBase, public MDispatcherCallback
-	{
-public:
-
-	virtual ~CPacketServicesDispatcher();
-
-	static CPacketServicesDispatcher* NewL(
-			MLtsyDispatchFactoryV1& aLtsyFactory,
-			MmMessageManagerCallback& aMessageManagerCallback,
-			CRequestQueueOneShot& aRequestAsyncOneShot);
-
-	static CPacketServicesDispatcher* NewLC(
-			MLtsyDispatchFactoryV1& aLtsyFactory,
-			MmMessageManagerCallback& aMessageManagerCallback,
-			CRequestQueueOneShot& aRequestAsyncOneShot);
-
-	// Dispatcher functions for dispatching requests DOWN to the Licensee LTSY
-
-	TInt DispatchPacketAttachL();
-	TInt DispatchGetPacketAttachModeL(const CMmDataPackage* aDataPackage);
-	TInt DispatchGetStatusL();
-	TInt DispatchGetPacketNetworkRegistrationStatusL();
-	TInt DispatchPacketDetachL();
-	TInt DispatchSetPdpContextConfigL(const CMmDataPackage* aDataPackage);
-	TInt DispatchModifyActivePdpContextL(const CMmDataPackage* aDataPackage);
-	TInt DispatchInitialisePdpContextL(const CMmDataPackage* aDataPackage);
-	TInt DispatchDeletePdpContextL(const CMmDataPackage* aDataPackage);
-	TInt DispatchSetPacketAttachModeL(const CMmDataPackage* aDataPackage);
-	TInt DispatchSetDefaultPdpContextParamsL(const CMmDataPackage* aDataPackage);
-	TInt DispatchActivatePdpContextL(const CMmDataPackage* aDataPackage);
-	TInt DispatchSetPdpContextQosL(const CMmDataPackage* aDataPackage);
-	TInt DispatchRejectNetworkInitiatedContextActivationRequestL();
-	TInt DispatchDeactivatePdpContextL(const CMmDataPackage* aDataPackage);
-	TInt DispatchAddPacketFilterL(const CMmDataPackage* aDataPackage);
-	TInt DispatchRemovePacketFilterL(const CMmDataPackage* aDataPackage);
-	TInt DispatchGetStaticCapabilitiesL();
-	TInt DispatchGetMaxNoMonitoredServiceListsL();
-	TInt DispatchGetMaxNoActiveServicesL();
-	TInt DispatchInitialiseMbmsContextL(const CMmDataPackage* aDataPackage);
-	TInt DispatchGetMbmsNetworkServiceStatusL(const CMmDataPackage* aDataPackage);
-	TInt DispatchUpdateMbmsMonitorServiceListL(const CMmDataPackage* aDataPackage);
-	TInt DispatchUpdateMbmsSessionListL(const CMmDataPackage* aDataPackage);
-
-	// Complete functions for receiving completions UP from the Licensee LTSY
-	// via the CCtsyDispatcherCallback object.
-
-	void CallbackNotifyPacketAttachModeChange(TInt aError, RPacketService::TPreferredBearer aBearer);
-	void CallbackNotifyQosProfileChange(TInt aError, const TDesC& aContextName, const RPacketQoS::TQoSGPRSNegotiated& aQoSGPRSNegotiated);
-	void CallbackNotifyQosProfileChange(TInt aError, const TDesC& aContextName, const RPacketQoS::TQoSR99_R4Negotiated& aQoSR99_R4Negotiated);
-	void CallbackNotifyQosProfileChange(TInt aError, const TDesC& aContextName, const RPacketQoS::TQoSR5Negotiated& aQoSR5Negotiated);
-	void CallbackNotifyRatTransferCapsChange(TInt aError, TDynamicTransferCapsFlags aCaps);
-	void CallbackNotifyPacketMsClassChange(TInt aError, RPacketService::TMSClass aMSClass);
-	void CallbackNotifyPacketDynamicCapsChange(TInt aError, TBool aGprsIsSupportedOnCell, TBool aCsServicesIsSupportedOnCell);
-	void CallbackNotifyPdpContextAdded(TInt aError, const TDesC& aContextName);
-	void CallbackNotifyNetworkInitiatedContextActivationRequest(TInt aError, const RPacketContext::TContextConfigGPRS& aContextConfigGPRS);
-	void CallbackNotifyNetworkInitiatedContextActivationRequest(TInt aError, const RPacketContext::TContextConfigR99_R4& aContextConfigR99_R4);
-	void CallbackNotifyNetworkInitiatedContextActivationRequest(TInt aError, const RPacketContext::TContextConfig_R5& aContextConfig_R5);				
-	void CallbackNotifyPdpContextConfigChanged(TInt aError, const TDesC& aContextName, const TDesC8& aAccessPointName, const TDesC8& aPdpAddress, TUint aPdpCompression, const TDesC8& aPcoBuffer);
-	void CallbackNotifyPdpContextStatusChange(TInt aError, const TDesC& aContextName, const TContextMisc& aContextMisc);
-	void CallbackNotifyPdpContextConnectionSpeedChange(TInt aError, const TDesC& aContextName, TUint aConnectionSpeed);
-	void CallbackNotifyPacketNetworkRegistrationStatus(TInt aError, const RPacketService::TRegistrationStatus aRegistrationStatus);
-	void CallbackNotifyMbmsContextConfigChanged(TInt aError, const TDesC& aContextName, const RPacketMbmsContext::TContextConfigMbmsV1& aContextConfigMbms);
-	void CallbackPacketAttach(TInt aError);
-	void CallbackGetPacketAttachMode(TInt aError, RPacketService::TAttachMode aAttachMode);
-	void CallbackGetPacketNetworkRegistrationStatus(TInt aError, RPacketService::TRegistrationStatus aRegistrationStatus);
-	void CallbackPacketDetach(TInt aError);
-	void CallbackSetPdpContextConfig(TInt aError, const TDesC& aContextName);
-	void CallbackModifyActivePdpContext(TInt aError, const TDesC& aContextName, TInt8 aRejectionCode);
-	void CallbackInitialisePdpContext(TInt aError, const TDesC& aContextName, const TDesC& aChannelId);
-	void CallbackDeletePdpContext(TInt aError, const TDesC& aContextName);
-	void CallbackSetPacketAttachMode(TInt aError);
-	void CallbackNotifyPacketStatusChange(TInt aError);
-	void CallbackSetDefaultPdpContextParams(TInt aError);
-	void CallbackActivatePdpContext(TInt aError, const TDesC& aContextName, const TDesC8& aAccessPointName, RPacketContext::TProtocolType aPdpType);
-	void CallbackSetPdpContextQos(TInt aError, const TDesC& aContextName);
-	void CallbackRejectNetworkInitiatedContextActivationRequest(TInt aError);
-	void CallbackDeactivatePdpContext(TInt aError, const TDesC& aContextName);
-	void CallbackGetStatus(TInt aError, RPacketService::TStatus aPacketStatus, TBool aIsResumed);
-	void CallbackGetStaticCapabilities(TInt aError, TUint aStaticCapabilities);
-	void CallbackGetMaxNoMonitoredServiceLists(TInt aError, TInt aMaxNoMonitoredServiceLists);
-	void CallbackGetMaxNoActiveServices(TInt aError, TInt aMaxNoActiveServices);
-	void CallbackInitialiseMbmsContext(TInt aError, const TDesC& aContextName, const TDesC& aChannelId);
-	void CallbackGetMbmsNetworkServiceStatus(TInt aError, TMbmsNetworkServiceStatus aMbmsNetworkServiceStatus);
-	void CallbackNotifyMbmsNetworkServiceStatusChange(TInt aError, TMbmsNetworkServiceStatus aMbmsNetworkServiceStatus);
-	void CallbackUpdateMbmsMonitorServiceList(TInt aError);
-	void CallbackUpdateMbmsMonitorServiceList(TInt aError, const RArray<TUint>& aFailedServiceIds);
-	void CallbackNotifyMbmsServiceAvailabilityChange(TInt aError, const RArray<TUint>& aAvailableServiceIds);
-	void CallbackUpdateMbmsSessionList(TInt aError, const TDesC& aContextName);
-	void CallbackNotifyConnectionInfoChange(TInt aError, const TDesC& aContextName, const RPacketContext::TConnectionInfoV1& aConnectionInfo);
-
-	// From MDispatcherCallback
-	void CallbackSync(CRequestQueueOneShot::TIpcDataPackage& aIpcDataPackage);
-
-	// Other public functions
-	void SetDispatcherHolder(TDispatcherHolder& aDispatcherHolder);
-
-private:
-
-	CPacketServicesDispatcher(MLtsyDispatchFactoryV1& aLtsyFactory,
-	   			  	 MmMessageManagerCallback& aMessageManagerCallback,
-	   			  	 CRequestQueueOneShot& aRequestAsyncOneShot);
-
-	TInt EtelPcktR99R4NegToEtelPcktR97NegQoS(const RPacketQoS::TQoSR99_R4Negotiated& aQoSR99_R4Negotiated,
-	                                           RPacketQoS::TQoSGPRSNegotiated& aQoSGPRSNegotiated);
-
-	TInt EtelPcktR97NegToEtelPcktR99R4NegQoS(const RPacketQoS::TQoSGPRSNegotiated& aQoSGPRSNegotiated,
-			   RPacketQoS::TQoSR99_R4Negotiated& aQoSR99_R4Negotiated);
-
-	TInt EtelPcktR99R4NegToEtelPcktR5NegQoS(const RPacketQoS::TQoSR99_R4Negotiated& aQoSR99_R4Negotiated,
-												   RPacketQoS::TQoSR5Negotiated& aQoSR5Negotiated);
-
-	void ConvertDNSToPCOBuffer (const TDes8& aPrimaryDNS, const TDes8& aSecondaryDNS, const TUint8 aRequestID, TDes8& aFormatPcoBufferAddr);
-	void ConvertUsernameAndPasswordToPCOBuffer(const TDes8& aUsername, const TDes8& aPassword, const TUint8 aRequestID, TDes8& aFormatedBuffer);
-
-	void DecodePCO(const RPacketContext::TMiscProtocolBuffer& aPcoBuffer, RPacketContext::TAuthData& aUsername, RPacketContext::TAuthData& aPassword, RPacketContext::TProtocolAddress& aPrimaryDNS, RPacketContext::TProtocolAddress& aSecondaryDNS, RPacketContext::TMiscProtocolBuffer& aMiscBuffer);
-
-	CPcktMbmsMonitoredServiceList* CreateServiceListL(const RArray<TUint>& aServiceIds) const;
-
-	
-	void ConstructL();
-	
-	
-
-private:	// Not owned
-
-	MLtsyDispatchFactoryV1& iLtsyFactoryV1;
-	MmMessageManagerCallback& iMessageManagerCallback;
-	CRequestQueueOneShot& iRequestAsyncOneShot;
-	TDispatcherHolder* iDispatcherHolder;
-
-	// Interfaces in the Licensee LTSY, not owned by this object
-
-    MLtsyDispatchPacketServicesPacketAttach* iLtsyDispatchPacketServicesPacketAttach;
-    MLtsyDispatchPacketServicesGetPacketAttachMode* iLtsyDispatchPacketServicesGetPacketAttachMode;
-    MLtsyDispatchPacketServicesGetPacketNetworkRegistrationStatus* iLtsyDispatchPacketServicesGetPacketNetworkRegistrationStatus;
-    MLtsyDispatchPacketServicesPacketDetach* iLtsyDispatchPacketServicesPacketDetach;
-    MLtsyDispatchPacketServicesSetPdpContextConfig* iLtsyDispatchPacketServicesSetPdpContextConfig;
-    MLtsyDispatchPacketServicesModifyActivePdpContext* iLtsyDispatchPacketServicesModifyActivePdpContext;
-    MLtsyDispatchPacketServicesInitialisePdpContext* iLtsyDispatchPacketServicesInitialisePdpContext;
-    MLtsyDispatchPacketServicesDeletePdpContext* iLtsyDispatchPacketServicesDeletePdpContext;
-    MLtsyDispatchPacketServicesSetPacketAttachMode* iLtsyDispatchPacketServicesSetPacketAttachMode;
-    MLtsyDispatchPacketServicesNotifyPacketStatusChange* iLtsyDispatchPacketServicesNotifyPacketStatusChange;
-    MLtsyDispatchPacketServicesSetDefaultPdpContextGprsParams* iLtsyDispatchPacketServicesSetDefaultPdpContextGprsParams;
-    MLtsyDispatchPacketServicesSetDefaultPdpContextR99R4Params* iLtsyDispatchPacketServicesSetDefaultPdpContextR99R4Params;
-    MLtsyDispatchPacketServicesActivatePdpContext* iLtsyDispatchPacketServicesActivatePdpContext;
-    MLtsyDispatchPacketServicesSetPdpContextQosGprs* iLtsyDispatchPacketServicesSetPdpContextQosGprs;
-    MLtsyDispatchPacketServicesSetPdpContextQosR99R4* iLtsyDispatchPacketServicesSetPdpContextQosR99R4;
-    MLtsyDispatchPacketServicesSetPdpContextQosR5* iLtsyDispatchPacketServicesSetPdpContextQosR5;
-    MLtsyDispatchPacketServicesRejectNetworkInitiatedContextActivationRequest* iLtsyDispatchPacketServicesRejectNetworkInitiatedContextActivationRequest;
-    MLtsyDispatchPacketServicesDeactivatePdpContext* iLtsyDispatchPacketServicesDeactivatePdpContext;
-    MLtsyDispatchPacketServicesAddPacketFilter* iLtsyDispatchPacketServicesAddPacketFilter;
-    MLtsyDispatchPacketServicesGetStatus* iLtsyDispatchPacketServicesGetStatus;
-    MLtsyDispatchPacketServicesGetStaticCapabilities* iLtsyDispatchPacketServicesGetStaticCapabilities;
-    MLtsyDispatchPacketServicesGetMaxNoMonitoredServiceLists* iLtsyDispatchPacketServicesGetMaxNoMonitoredServiceLists;
-    MLtsyDispatchPacketServicesGetMaxNoActiveServices* iLtsyDispatchPacketServicesGetMaxNoActiveServices;
-    MLtsyDispatchPacketServicesInitialiseMbmsContext* iLtsyDispatchPacketServicesInitialiseMbmsContext;
-    MLtsyDispatchPacketServicesGetMbmsNetworkServiceStatus* iLtsyDispatchPacketServicesGetMbmsNetworkServiceStatus;
-    MLtsyDispatchPacketServicesUpdateMbmsMonitorServiceList* iLtsyDispatchPacketServicesUpdateMbmsMonitorServiceList;
-    MLtsyDispatchPacketServicesUpdateMbmsSessionList* iLtsyDispatchPacketServicesUpdateMbmsSessionList;
-	MLtsyDispatchPacketServicesRemovePacketFilter* iLtsyDispatchPacketServicesRemovePacketFilter;
-
-	}; // class CPacketServicesDispatcher
-
-#endif // __CPACKETSERVICESDISPATCHER_H_
-
+// Copyright (c) 2008-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:
+//
+
+#ifndef __CPACKETSERVICESDISPATCHER_H_
+#define __CPACKETSERVICESDISPATCHER_H_
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+#include <e32def.h>
+#include <etelmm.h>
+#include <etelpckt.h>
+#include <etelqos.h>
+#include <ctsy/serviceapi/cmmutility.h>
+
+#include <ctsy/ltsy/mltsydispatchfactory.h>
+#include "requestqueueoneshot.h"
+#include <ctsy/ltsy/ltsylogger.h>
+#include "mdispatchercallback.h"
+
+const TInt KPrimaryAndSecondaryDNSLength = 16;
+const TUint KPasswordUsernameHeaderLength = 7;
+const TUint KIPCRequestCode = 1;
+const TUint KRequestID = 0;
+const TUint KIDLength = 3;
+const TUint KMaxUserAndPassLength = 80;
+const TUint KMaxPdpAddressLength = 50;
+const TUint KPrimaryAndSecondaryDNSID = 0xC023;
+const TUint KUsenamePasswordDNSID = 0x8021;
+const TUint KIndicatePrimaryAddress = 0x81;
+const TUint KIndicateSecondaryAddress = 0x83;
+const TUint KPacketLengthMSB = 0x0;
+const TUint KDnsAddressLength = 6;
+_LIT(KEmptyInfoName, "");
+
+const TInt KHeaderGap = 8; 	// Offsets for decoding PCO buffer
+const TInt KIPv4Len = 4;		// Offsets for decoding PCO buffer
+const TInt KLengthLocation = 4;// Offsets for decoding PCO buffer
+const TInt KMinPCOSize = 3;    // Minimum PCO buffer size as set in 3G TS 24.008 spec
+
+// FORWARD DECLARATIONS
+class CMmDataPackage;
+class MmMessageManagerCallback;
+class TDispatcherHolder;
+
+class MLtsyDispatchPacketServicesPacketAttach;
+class MLtsyDispatchPacketServicesGetPacketAttachMode;
+class MLtsyDispatchPacketServicesGetPacketNetworkRegistrationStatus;
+class MLtsyDispatchPacketServicesPacketDetach;
+class MLtsyDispatchPacketServicesSetPdpContextConfig;
+class MLtsyDispatchPacketServicesModifyActivePdpContext;
+class MLtsyDispatchPacketServicesInitialisePdpContext;
+class MLtsyDispatchPacketServicesDeletePdpContext;
+class MLtsyDispatchPacketServicesSetPacketAttachMode;
+class MLtsyDispatchPacketServicesNotifyPacketStatusChange;
+class MLtsyDispatchPacketServicesSetDefaultPdpContextGprsParams;
+class MLtsyDispatchPacketServicesSetDefaultPdpContextR99R4Params;
+class MLtsyDispatchPacketServicesActivatePdpContext;
+class MLtsyDispatchPacketServicesSetPdpContextQosGprs;
+class MLtsyDispatchPacketServicesSetPdpContextQosR99R4;
+class MLtsyDispatchPacketServicesSetPdpContextQosR5;
+class MLtsyDispatchPacketServicesRejectNetworkInitiatedContextActivationRequest;
+class MLtsyDispatchPacketServicesDeactivatePdpContext;
+class MLtsyDispatchPacketServicesAddPacketFilter;
+class MLtsyDispatchPacketServicesGetStatus;
+class MLtsyDispatchPacketServicesGetStaticCapabilities;
+class MLtsyDispatchPacketServicesGetMaxNoMonitoredServiceLists;
+class MLtsyDispatchPacketServicesGetMaxNoActiveServices;
+class MLtsyDispatchPacketServicesInitialiseMbmsContext;
+class MLtsyDispatchPacketServicesGetMbmsNetworkServiceStatus;
+class MLtsyDispatchPacketServicesUpdateMbmsMonitorServiceList;
+class MLtsyDispatchPacketServicesUpdateMbmsSessionList;
+class MLtsyDispatchPacketServicesRemovePacketFilter;
+
+// CLASS DECLARATION
+
+/**
+ * This class is responsible for packing and unpacking data belonging
+ * to PacketServices related requests to the Licensee LTSY.
+ */
+class CPacketServicesDispatcher : public CBase, public MDispatcherCallback
+	{
+public:
+
+	virtual ~CPacketServicesDispatcher();
+
+	static CPacketServicesDispatcher* NewL(
+			MLtsyDispatchFactoryV1& aLtsyFactory,
+			MmMessageManagerCallback& aMessageManagerCallback,
+			CRequestQueueOneShot& aRequestAsyncOneShot);
+
+	static CPacketServicesDispatcher* NewLC(
+			MLtsyDispatchFactoryV1& aLtsyFactory,
+			MmMessageManagerCallback& aMessageManagerCallback,
+			CRequestQueueOneShot& aRequestAsyncOneShot);
+
+	// Dispatcher functions for dispatching requests DOWN to the Licensee LTSY
+
+	TInt DispatchPacketAttachL();
+	TInt DispatchGetPacketAttachModeL(const CMmDataPackage* aDataPackage);
+	TInt DispatchGetStatusL();
+	TInt DispatchGetPacketNetworkRegistrationStatusL();
+	TInt DispatchPacketDetachL();
+	TInt DispatchSetPdpContextConfigL(const CMmDataPackage* aDataPackage);
+	TInt DispatchModifyActivePdpContextL(const CMmDataPackage* aDataPackage);
+	TInt DispatchInitialisePdpContextL(const CMmDataPackage* aDataPackage);
+	TInt DispatchDeletePdpContextL(const CMmDataPackage* aDataPackage);
+	TInt DispatchSetPacketAttachModeL(const CMmDataPackage* aDataPackage);
+	TInt DispatchSetDefaultPdpContextParamsL(const CMmDataPackage* aDataPackage);
+	TInt DispatchActivatePdpContextL(const CMmDataPackage* aDataPackage);
+	TInt DispatchSetPdpContextQosL(const CMmDataPackage* aDataPackage);
+	TInt DispatchRejectNetworkInitiatedContextActivationRequestL();
+	TInt DispatchDeactivatePdpContextL(const CMmDataPackage* aDataPackage);
+	TInt DispatchAddPacketFilterL(const CMmDataPackage* aDataPackage);
+	TInt DispatchRemovePacketFilterL(const CMmDataPackage* aDataPackage);
+	TInt DispatchGetStaticCapabilitiesL();
+	TInt DispatchGetMaxNoMonitoredServiceListsL();
+	TInt DispatchGetMaxNoActiveServicesL();
+	TInt DispatchInitialiseMbmsContextL(const CMmDataPackage* aDataPackage);
+	TInt DispatchGetMbmsNetworkServiceStatusL(const CMmDataPackage* aDataPackage);
+	TInt DispatchUpdateMbmsMonitorServiceListL(const CMmDataPackage* aDataPackage);
+	TInt DispatchUpdateMbmsSessionListL(const CMmDataPackage* aDataPackage);
+
+	// Complete functions for receiving completions UP from the Licensee LTSY
+	// via the CCtsyDispatcherCallback object.
+
+	void CallbackNotifyPacketAttachModeChange(TInt aError, RPacketService::TPreferredBearer aBearer);
+	void CallbackNotifyQosProfileChange(TInt aError, const TDesC& aContextName, const RPacketQoS::TQoSGPRSNegotiated& aQoSGPRSNegotiated);
+	void CallbackNotifyQosProfileChange(TInt aError, const TDesC& aContextName, const RPacketQoS::TQoSR99_R4Negotiated& aQoSR99_R4Negotiated);
+	void CallbackNotifyQosProfileChange(TInt aError, const TDesC& aContextName, const RPacketQoS::TQoSR5Negotiated& aQoSR5Negotiated);
+	void CallbackNotifyRatTransferCapsChange(TInt aError, TDynamicTransferCapsFlags aCaps);
+	void CallbackNotifyPacketMsClassChange(TInt aError, RPacketService::TMSClass aMSClass);
+	void CallbackNotifyPacketDynamicCapsChange(TInt aError, TBool aGprsIsSupportedOnCell, TBool aCsServicesIsSupportedOnCell);
+	void CallbackNotifyPdpContextAdded(TInt aError, const TDesC& aContextName);
+	void CallbackNotifyNetworkInitiatedContextActivationRequest(TInt aError, const RPacketContext::TContextConfigGPRS& aContextConfigGPRS);
+	void CallbackNotifyNetworkInitiatedContextActivationRequest(TInt aError, const RPacketContext::TContextConfigR99_R4& aContextConfigR99_R4);
+	void CallbackNotifyNetworkInitiatedContextActivationRequest(TInt aError, const RPacketContext::TContextConfig_R5& aContextConfig_R5);				
+	void CallbackNotifyPdpContextConfigChanged(TInt aError, const TDesC& aContextName, const TDesC8& aAccessPointName, const TDesC8& aPdpAddress, TUint aPdpCompression, const TDesC8& aPcoBuffer);
+	void CallbackNotifyPdpContextStatusChange(TInt aError, const TDesC& aContextName, const TContextMisc& aContextMisc);
+	void CallbackNotifyPdpContextConnectionSpeedChange(TInt aError, const TDesC& aContextName, TUint aConnectionSpeed);
+	void CallbackNotifyPacketNetworkRegistrationStatus(TInt aError, const RPacketService::TRegistrationStatus aRegistrationStatus);
+	void CallbackNotifyMbmsContextConfigChanged(TInt aError, const TDesC& aContextName, const RPacketMbmsContext::TContextConfigMbmsV1& aContextConfigMbms);
+	void CallbackPacketAttach(TInt aError);
+	void CallbackGetPacketAttachMode(TInt aError, RPacketService::TAttachMode aAttachMode);
+	void CallbackGetPacketNetworkRegistrationStatus(TInt aError, RPacketService::TRegistrationStatus aRegistrationStatus);
+	void CallbackPacketDetach(TInt aError);
+	void CallbackSetPdpContextConfig(TInt aError, const TDesC& aContextName);
+	void CallbackModifyActivePdpContext(TInt aError, const TDesC& aContextName, TInt8 aRejectionCode);
+	void CallbackInitialisePdpContext(TInt aError, const TDesC& aContextName, const TDesC& aChannelId);
+	void CallbackDeletePdpContext(TInt aError, const TDesC& aContextName);
+	void CallbackSetPacketAttachMode(TInt aError);
+	void CallbackNotifyPacketStatusChange(TInt aError);
+	void CallbackSetDefaultPdpContextParams(TInt aError);
+	void CallbackActivatePdpContext(TInt aError, const TDesC& aContextName, const TDesC8& aAccessPointName, RPacketContext::TProtocolType aPdpType);
+	void CallbackSetPdpContextQos(TInt aError, const TDesC& aContextName);
+	void CallbackRejectNetworkInitiatedContextActivationRequest(TInt aError);
+	void CallbackDeactivatePdpContext(TInt aError, const TDesC& aContextName);
+	void CallbackGetStatus(TInt aError, RPacketService::TStatus aPacketStatus, TBool aIsResumed);
+	void CallbackGetStaticCapabilities(TInt aError, TUint aStaticCapabilities);
+	void CallbackGetMaxNoMonitoredServiceLists(TInt aError, TInt aMaxNoMonitoredServiceLists);
+	void CallbackGetMaxNoActiveServices(TInt aError, TInt aMaxNoActiveServices);
+	void CallbackInitialiseMbmsContext(TInt aError, const TDesC& aContextName, const TDesC& aChannelId);
+	void CallbackGetMbmsNetworkServiceStatus(TInt aError, TMbmsNetworkServiceStatus aMbmsNetworkServiceStatus);
+	void CallbackNotifyMbmsNetworkServiceStatusChange(TInt aError, TMbmsNetworkServiceStatus aMbmsNetworkServiceStatus);
+	void CallbackUpdateMbmsMonitorServiceList(TInt aError);
+	void CallbackUpdateMbmsMonitorServiceList(TInt aError, const RArray<TUint>& aFailedServiceIds);
+	void CallbackNotifyMbmsServiceAvailabilityChange(TInt aError, const RArray<TUint>& aAvailableServiceIds);
+	void CallbackUpdateMbmsSessionList(TInt aError, const TDesC& aContextName);
+	void CallbackNotifyConnectionInfoChange(TInt aError, const TDesC& aContextName, const RPacketContext::TConnectionInfoV1& aConnectionInfo);
+
+	// From MDispatcherCallback
+	void CallbackSync(CRequestQueueOneShot::TIpcDataPackage& aIpcDataPackage);
+
+	// Other public functions
+	void SetDispatcherHolder(TDispatcherHolder& aDispatcherHolder);
+
+private:
+
+	CPacketServicesDispatcher(MLtsyDispatchFactoryV1& aLtsyFactory,
+	   			  	 MmMessageManagerCallback& aMessageManagerCallback,
+	   			  	 CRequestQueueOneShot& aRequestAsyncOneShot);
+
+	TInt EtelPcktR99R4NegToEtelPcktR97NegQoS(const RPacketQoS::TQoSR99_R4Negotiated& aQoSR99_R4Negotiated,
+	                                           RPacketQoS::TQoSGPRSNegotiated& aQoSGPRSNegotiated);
+
+	TInt EtelPcktR97NegToEtelPcktR99R4NegQoS(const RPacketQoS::TQoSGPRSNegotiated& aQoSGPRSNegotiated,
+			   RPacketQoS::TQoSR99_R4Negotiated& aQoSR99_R4Negotiated);
+
+	TInt EtelPcktR99R4NegToEtelPcktR5NegQoS(const RPacketQoS::TQoSR99_R4Negotiated& aQoSR99_R4Negotiated,
+												   RPacketQoS::TQoSR5Negotiated& aQoSR5Negotiated);
+
+	void ConvertDNSToPCOBuffer (const TDes8& aPrimaryDNS, const TDes8& aSecondaryDNS, const TUint8 aRequestID, TDes8& aFormatPcoBufferAddr);
+	void ConvertUsernameAndPasswordToPCOBuffer(const TDes8& aUsername, const TDes8& aPassword, const TUint8 aRequestID, TDes8& aFormatedBuffer);
+
+	void DecodePCO(const RPacketContext::TMiscProtocolBuffer& aPcoBuffer, RPacketContext::TAuthData& aUsername, RPacketContext::TAuthData& aPassword, RPacketContext::TProtocolAddress& aPrimaryDNS, RPacketContext::TProtocolAddress& aSecondaryDNS, RPacketContext::TMiscProtocolBuffer& aMiscBuffer);
+
+	CPcktMbmsMonitoredServiceList* CreateServiceListL(const RArray<TUint>& aServiceIds) const;
+
+	
+	void ConstructL();
+	
+	
+
+private:	// Not owned
+
+	MLtsyDispatchFactoryV1& iLtsyFactoryV1;
+	MmMessageManagerCallback& iMessageManagerCallback;
+	CRequestQueueOneShot& iRequestAsyncOneShot;
+	TDispatcherHolder* iDispatcherHolder;
+
+	// Interfaces in the Licensee LTSY, not owned by this object
+
+    MLtsyDispatchPacketServicesPacketAttach* iLtsyDispatchPacketServicesPacketAttach;
+    MLtsyDispatchPacketServicesGetPacketAttachMode* iLtsyDispatchPacketServicesGetPacketAttachMode;
+    MLtsyDispatchPacketServicesGetPacketNetworkRegistrationStatus* iLtsyDispatchPacketServicesGetPacketNetworkRegistrationStatus;
+    MLtsyDispatchPacketServicesPacketDetach* iLtsyDispatchPacketServicesPacketDetach;
+    MLtsyDispatchPacketServicesSetPdpContextConfig* iLtsyDispatchPacketServicesSetPdpContextConfig;
+    MLtsyDispatchPacketServicesModifyActivePdpContext* iLtsyDispatchPacketServicesModifyActivePdpContext;
+    MLtsyDispatchPacketServicesInitialisePdpContext* iLtsyDispatchPacketServicesInitialisePdpContext;
+    MLtsyDispatchPacketServicesDeletePdpContext* iLtsyDispatchPacketServicesDeletePdpContext;
+    MLtsyDispatchPacketServicesSetPacketAttachMode* iLtsyDispatchPacketServicesSetPacketAttachMode;
+    MLtsyDispatchPacketServicesNotifyPacketStatusChange* iLtsyDispatchPacketServicesNotifyPacketStatusChange;
+    MLtsyDispatchPacketServicesSetDefaultPdpContextGprsParams* iLtsyDispatchPacketServicesSetDefaultPdpContextGprsParams;
+    MLtsyDispatchPacketServicesSetDefaultPdpContextR99R4Params* iLtsyDispatchPacketServicesSetDefaultPdpContextR99R4Params;
+    MLtsyDispatchPacketServicesActivatePdpContext* iLtsyDispatchPacketServicesActivatePdpContext;
+    MLtsyDispatchPacketServicesSetPdpContextQosGprs* iLtsyDispatchPacketServicesSetPdpContextQosGprs;
+    MLtsyDispatchPacketServicesSetPdpContextQosR99R4* iLtsyDispatchPacketServicesSetPdpContextQosR99R4;
+    MLtsyDispatchPacketServicesSetPdpContextQosR5* iLtsyDispatchPacketServicesSetPdpContextQosR5;
+    MLtsyDispatchPacketServicesRejectNetworkInitiatedContextActivationRequest* iLtsyDispatchPacketServicesRejectNetworkInitiatedContextActivationRequest;
+    MLtsyDispatchPacketServicesDeactivatePdpContext* iLtsyDispatchPacketServicesDeactivatePdpContext;
+    MLtsyDispatchPacketServicesAddPacketFilter* iLtsyDispatchPacketServicesAddPacketFilter;
+    MLtsyDispatchPacketServicesGetStatus* iLtsyDispatchPacketServicesGetStatus;
+    MLtsyDispatchPacketServicesGetStaticCapabilities* iLtsyDispatchPacketServicesGetStaticCapabilities;
+    MLtsyDispatchPacketServicesGetMaxNoMonitoredServiceLists* iLtsyDispatchPacketServicesGetMaxNoMonitoredServiceLists;
+    MLtsyDispatchPacketServicesGetMaxNoActiveServices* iLtsyDispatchPacketServicesGetMaxNoActiveServices;
+    MLtsyDispatchPacketServicesInitialiseMbmsContext* iLtsyDispatchPacketServicesInitialiseMbmsContext;
+    MLtsyDispatchPacketServicesGetMbmsNetworkServiceStatus* iLtsyDispatchPacketServicesGetMbmsNetworkServiceStatus;
+    MLtsyDispatchPacketServicesUpdateMbmsMonitorServiceList* iLtsyDispatchPacketServicesUpdateMbmsMonitorServiceList;
+    MLtsyDispatchPacketServicesUpdateMbmsSessionList* iLtsyDispatchPacketServicesUpdateMbmsSessionList;
+	MLtsyDispatchPacketServicesRemovePacketFilter* iLtsyDispatchPacketServicesRemovePacketFilter;
+
+	}; // class CPacketServicesDispatcher
+
+#endif // __CPACKETSERVICESDISPATCHER_H_
+