telephonyserverplugins/ctsydispatchlayer/inc/cpacketservicesdispatcher.h
changeset 0 3553901f7fa8
child 24 6638e7f4bd8f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/ctsydispatchlayer/inc/cpacketservicesdispatcher.h	Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,262 @@
+// 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_
+