diff -r 000000000000 -r 3553901f7fa8 telephonyserverplugins/ctsydispatchlayer/inc/cpacketservicesdispatcher.h --- /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 +#include +#include +#include +#include +#include +#include + +#include +#include "requestqueueoneshot.h" +#include +#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& aFailedServiceIds); + void CallbackNotifyMbmsServiceAvailabilityChange(TInt aError, const RArray& 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& 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_ +