telephonyserverplugins/ctsydispatchlayer/inc/cpacketservicesdispatcher.h
changeset 0 3553901f7fa8
equal deleted inserted replaced
-1:000000000000 0:3553901f7fa8
       
     1 // Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 //
       
    15 
       
    16 /**
       
    17  @file
       
    18  @internalAll 
       
    19 */
       
    20 
       
    21 #ifndef __CPACKETSERVICESDISPATCHER_H_
       
    22 #define __CPACKETSERVICESDISPATCHER_H_
       
    23 
       
    24 // INCLUDES
       
    25 #include <e32std.h>
       
    26 #include <e32base.h>
       
    27 #include <e32def.h>
       
    28 #include <etelmm.h>
       
    29 #include <etelpckt.h>
       
    30 #include <etelqos.h>
       
    31 #include <ctsy/serviceapi/cmmutility.h>
       
    32 
       
    33 #include <ctsy/ltsy/mltsydispatchfactory.h>
       
    34 #include "requestqueueoneshot.h"
       
    35 #include <ctsy/ltsy/ltsylogger.h>
       
    36 #include "mdispatchercallback.h"
       
    37 
       
    38 const TInt KPrimaryAndSecondaryDNSLength = 16;
       
    39 const TUint KPasswordUsernameHeaderLength = 7;
       
    40 const TUint KIPCRequestCode = 1;
       
    41 const TUint KRequestID = 0;
       
    42 const TUint KIDLength = 3;
       
    43 const TUint KMaxUserAndPassLength = 80;
       
    44 const TUint KMaxPdpAddressLength = 50;
       
    45 const TUint KPrimaryAndSecondaryDNSID = 0xC023;
       
    46 const TUint KUsenamePasswordDNSID = 0x8021;
       
    47 const TUint KIndicatePrimaryAddress = 0x81;
       
    48 const TUint KIndicateSecondaryAddress = 0x83;
       
    49 const TUint KPacketLengthMSB = 0x0;
       
    50 const TUint KDnsAddressLength = 6;
       
    51 _LIT(KEmptyInfoName, "");
       
    52 
       
    53 const TInt KHeaderGap = 8; 	// Offsets for decoding PCO buffer
       
    54 const TInt KIPv4Len = 4;		// Offsets for decoding PCO buffer
       
    55 const TInt KLengthLocation = 4;// Offsets for decoding PCO buffer
       
    56 const TInt KMinPCOSize = 3;    // Minimum PCO buffer size as set in 3G TS 24.008 spec
       
    57 
       
    58 // FORWARD DECLARATIONS
       
    59 class CMmDataPackage;
       
    60 class MmMessageManagerCallback;
       
    61 class TDispatcherHolder;
       
    62 
       
    63 class MLtsyDispatchPacketServicesPacketAttach;
       
    64 class MLtsyDispatchPacketServicesGetPacketAttachMode;
       
    65 class MLtsyDispatchPacketServicesGetPacketNetworkRegistrationStatus;
       
    66 class MLtsyDispatchPacketServicesPacketDetach;
       
    67 class MLtsyDispatchPacketServicesSetPdpContextConfig;
       
    68 class MLtsyDispatchPacketServicesModifyActivePdpContext;
       
    69 class MLtsyDispatchPacketServicesInitialisePdpContext;
       
    70 class MLtsyDispatchPacketServicesDeletePdpContext;
       
    71 class MLtsyDispatchPacketServicesSetPacketAttachMode;
       
    72 class MLtsyDispatchPacketServicesNotifyPacketStatusChange;
       
    73 class MLtsyDispatchPacketServicesSetDefaultPdpContextGprsParams;
       
    74 class MLtsyDispatchPacketServicesSetDefaultPdpContextR99R4Params;
       
    75 class MLtsyDispatchPacketServicesActivatePdpContext;
       
    76 class MLtsyDispatchPacketServicesSetPdpContextQosGprs;
       
    77 class MLtsyDispatchPacketServicesSetPdpContextQosR99R4;
       
    78 class MLtsyDispatchPacketServicesSetPdpContextQosR5;
       
    79 class MLtsyDispatchPacketServicesRejectNetworkInitiatedContextActivationRequest;
       
    80 class MLtsyDispatchPacketServicesDeactivatePdpContext;
       
    81 class MLtsyDispatchPacketServicesAddPacketFilter;
       
    82 class MLtsyDispatchPacketServicesGetStatus;
       
    83 class MLtsyDispatchPacketServicesGetStaticCapabilities;
       
    84 class MLtsyDispatchPacketServicesGetMaxNoMonitoredServiceLists;
       
    85 class MLtsyDispatchPacketServicesGetMaxNoActiveServices;
       
    86 class MLtsyDispatchPacketServicesInitialiseMbmsContext;
       
    87 class MLtsyDispatchPacketServicesGetMbmsNetworkServiceStatus;
       
    88 class MLtsyDispatchPacketServicesUpdateMbmsMonitorServiceList;
       
    89 class MLtsyDispatchPacketServicesUpdateMbmsSessionList;
       
    90 class MLtsyDispatchPacketServicesRemovePacketFilter;
       
    91 
       
    92 // CLASS DECLARATION
       
    93 
       
    94 /**
       
    95  * This class is responsible for packing and unpacking data belonging
       
    96  * to PacketServices related requests to the Licensee LTSY.
       
    97  */
       
    98 class CPacketServicesDispatcher : public CBase, public MDispatcherCallback
       
    99 	{
       
   100 public:
       
   101 
       
   102 	virtual ~CPacketServicesDispatcher();
       
   103 
       
   104 	static CPacketServicesDispatcher* NewL(
       
   105 			MLtsyDispatchFactoryV1& aLtsyFactory,
       
   106 			MmMessageManagerCallback& aMessageManagerCallback,
       
   107 			CRequestQueueOneShot& aRequestAsyncOneShot);
       
   108 
       
   109 	static CPacketServicesDispatcher* NewLC(
       
   110 			MLtsyDispatchFactoryV1& aLtsyFactory,
       
   111 			MmMessageManagerCallback& aMessageManagerCallback,
       
   112 			CRequestQueueOneShot& aRequestAsyncOneShot);
       
   113 
       
   114 	// Dispatcher functions for dispatching requests DOWN to the Licensee LTSY
       
   115 
       
   116 	TInt DispatchPacketAttachL();
       
   117 	TInt DispatchGetPacketAttachModeL(const CMmDataPackage* aDataPackage);
       
   118 	TInt DispatchGetStatusL();
       
   119 	TInt DispatchGetPacketNetworkRegistrationStatusL();
       
   120 	TInt DispatchPacketDetachL();
       
   121 	TInt DispatchSetPdpContextConfigL(const CMmDataPackage* aDataPackage);
       
   122 	TInt DispatchModifyActivePdpContextL(const CMmDataPackage* aDataPackage);
       
   123 	TInt DispatchInitialisePdpContextL(const CMmDataPackage* aDataPackage);
       
   124 	TInt DispatchDeletePdpContextL(const CMmDataPackage* aDataPackage);
       
   125 	TInt DispatchSetPacketAttachModeL(const CMmDataPackage* aDataPackage);
       
   126 	TInt DispatchSetDefaultPdpContextParamsL(const CMmDataPackage* aDataPackage);
       
   127 	TInt DispatchActivatePdpContextL(const CMmDataPackage* aDataPackage);
       
   128 	TInt DispatchSetPdpContextQosL(const CMmDataPackage* aDataPackage);
       
   129 	TInt DispatchRejectNetworkInitiatedContextActivationRequestL();
       
   130 	TInt DispatchDeactivatePdpContextL(const CMmDataPackage* aDataPackage);
       
   131 	TInt DispatchAddPacketFilterL(const CMmDataPackage* aDataPackage);
       
   132 	TInt DispatchRemovePacketFilterL(const CMmDataPackage* aDataPackage);
       
   133 	TInt DispatchGetStaticCapabilitiesL();
       
   134 	TInt DispatchGetMaxNoMonitoredServiceListsL();
       
   135 	TInt DispatchGetMaxNoActiveServicesL();
       
   136 	TInt DispatchInitialiseMbmsContextL(const CMmDataPackage* aDataPackage);
       
   137 	TInt DispatchGetMbmsNetworkServiceStatusL(const CMmDataPackage* aDataPackage);
       
   138 	TInt DispatchUpdateMbmsMonitorServiceListL(const CMmDataPackage* aDataPackage);
       
   139 	TInt DispatchUpdateMbmsSessionListL(const CMmDataPackage* aDataPackage);
       
   140 
       
   141 	// Complete functions for receiving completions UP from the Licensee LTSY
       
   142 	// via the CCtsyDispatcherCallback object.
       
   143 
       
   144 	void CallbackNotifyPacketAttachModeChange(TInt aError, RPacketService::TPreferredBearer aBearer);
       
   145 	void CallbackNotifyQosProfileChange(TInt aError, const TDesC& aContextName, const RPacketQoS::TQoSGPRSNegotiated& aQoSGPRSNegotiated);
       
   146 	void CallbackNotifyQosProfileChange(TInt aError, const TDesC& aContextName, const RPacketQoS::TQoSR99_R4Negotiated& aQoSR99_R4Negotiated);
       
   147 	void CallbackNotifyQosProfileChange(TInt aError, const TDesC& aContextName, const RPacketQoS::TQoSR5Negotiated& aQoSR5Negotiated);
       
   148 	void CallbackNotifyRatTransferCapsChange(TInt aError, TDynamicTransferCapsFlags aCaps);
       
   149 	void CallbackNotifyPacketMsClassChange(TInt aError, RPacketService::TMSClass aMSClass);
       
   150 	void CallbackNotifyPacketDynamicCapsChange(TInt aError, TBool aGprsIsSupportedOnCell, TBool aCsServicesIsSupportedOnCell);
       
   151 	void CallbackNotifyPdpContextAdded(TInt aError, const TDesC& aContextName);
       
   152 	void CallbackNotifyNetworkInitiatedContextActivationRequest(TInt aError, const RPacketContext::TContextConfigGPRS& aContextConfigGPRS);
       
   153 	void CallbackNotifyNetworkInitiatedContextActivationRequest(TInt aError, const RPacketContext::TContextConfigR99_R4& aContextConfigR99_R4);
       
   154 	void CallbackNotifyNetworkInitiatedContextActivationRequest(TInt aError, const RPacketContext::TContextConfig_R5& aContextConfig_R5);				
       
   155 	void CallbackNotifyPdpContextConfigChanged(TInt aError, const TDesC& aContextName, const TDesC8& aAccessPointName, const TDesC8& aPdpAddress, TUint aPdpCompression, const TDesC8& aPcoBuffer);
       
   156 	void CallbackNotifyPdpContextStatusChange(TInt aError, const TDesC& aContextName, const TContextMisc& aContextMisc);
       
   157 	void CallbackNotifyPdpContextConnectionSpeedChange(TInt aError, const TDesC& aContextName, TUint aConnectionSpeed);
       
   158 	void CallbackNotifyPacketNetworkRegistrationStatus(TInt aError, const RPacketService::TRegistrationStatus aRegistrationStatus);
       
   159 	void CallbackNotifyMbmsContextConfigChanged(TInt aError, const TDesC& aContextName, const RPacketMbmsContext::TContextConfigMbmsV1& aContextConfigMbms);
       
   160 	void CallbackPacketAttach(TInt aError);
       
   161 	void CallbackGetPacketAttachMode(TInt aError, RPacketService::TAttachMode aAttachMode);
       
   162 	void CallbackGetPacketNetworkRegistrationStatus(TInt aError, RPacketService::TRegistrationStatus aRegistrationStatus);
       
   163 	void CallbackPacketDetach(TInt aError);
       
   164 	void CallbackSetPdpContextConfig(TInt aError, const TDesC& aContextName);
       
   165 	void CallbackModifyActivePdpContext(TInt aError, const TDesC& aContextName, TInt8 aRejectionCode);
       
   166 	void CallbackInitialisePdpContext(TInt aError, const TDesC& aContextName, const TDesC& aChannelId);
       
   167 	void CallbackDeletePdpContext(TInt aError, const TDesC& aContextName);
       
   168 	void CallbackSetPacketAttachMode(TInt aError);
       
   169 	void CallbackNotifyPacketStatusChange(TInt aError);
       
   170 	void CallbackSetDefaultPdpContextParams(TInt aError);
       
   171 	void CallbackActivatePdpContext(TInt aError, const TDesC& aContextName, const TDesC8& aAccessPointName, RPacketContext::TProtocolType aPdpType);
       
   172 	void CallbackSetPdpContextQos(TInt aError, const TDesC& aContextName);
       
   173 	void CallbackRejectNetworkInitiatedContextActivationRequest(TInt aError);
       
   174 	void CallbackDeactivatePdpContext(TInt aError, const TDesC& aContextName);
       
   175 	void CallbackGetStatus(TInt aError, RPacketService::TStatus aPacketStatus, TBool aIsResumed);
       
   176 	void CallbackGetStaticCapabilities(TInt aError, TUint aStaticCapabilities);
       
   177 	void CallbackGetMaxNoMonitoredServiceLists(TInt aError, TInt aMaxNoMonitoredServiceLists);
       
   178 	void CallbackGetMaxNoActiveServices(TInt aError, TInt aMaxNoActiveServices);
       
   179 	void CallbackInitialiseMbmsContext(TInt aError, const TDesC& aContextName, const TDesC& aChannelId);
       
   180 	void CallbackGetMbmsNetworkServiceStatus(TInt aError, TMbmsNetworkServiceStatus aMbmsNetworkServiceStatus);
       
   181 	void CallbackNotifyMbmsNetworkServiceStatusChange(TInt aError, TMbmsNetworkServiceStatus aMbmsNetworkServiceStatus);
       
   182 	void CallbackUpdateMbmsMonitorServiceList(TInt aError);
       
   183 	void CallbackUpdateMbmsMonitorServiceList(TInt aError, const RArray<TUint>& aFailedServiceIds);
       
   184 	void CallbackNotifyMbmsServiceAvailabilityChange(TInt aError, const RArray<TUint>& aAvailableServiceIds);
       
   185 	void CallbackUpdateMbmsSessionList(TInt aError, const TDesC& aContextName);
       
   186 	void CallbackNotifyConnectionInfoChange(TInt aError, const TDesC& aContextName, const RPacketContext::TConnectionInfoV1& aConnectionInfo);
       
   187 
       
   188 	// From MDispatcherCallback
       
   189 	void CallbackSync(CRequestQueueOneShot::TIpcDataPackage& aIpcDataPackage);
       
   190 
       
   191 	// Other public functions
       
   192 	void SetDispatcherHolder(TDispatcherHolder& aDispatcherHolder);
       
   193 
       
   194 private:
       
   195 
       
   196 	CPacketServicesDispatcher(MLtsyDispatchFactoryV1& aLtsyFactory,
       
   197 	   			  	 MmMessageManagerCallback& aMessageManagerCallback,
       
   198 	   			  	 CRequestQueueOneShot& aRequestAsyncOneShot);
       
   199 
       
   200 	TInt EtelPcktR99R4NegToEtelPcktR97NegQoS(const RPacketQoS::TQoSR99_R4Negotiated& aQoSR99_R4Negotiated,
       
   201 	                                           RPacketQoS::TQoSGPRSNegotiated& aQoSGPRSNegotiated);
       
   202 
       
   203 	TInt EtelPcktR97NegToEtelPcktR99R4NegQoS(const RPacketQoS::TQoSGPRSNegotiated& aQoSGPRSNegotiated,
       
   204 			   RPacketQoS::TQoSR99_R4Negotiated& aQoSR99_R4Negotiated);
       
   205 
       
   206 	TInt EtelPcktR99R4NegToEtelPcktR5NegQoS(const RPacketQoS::TQoSR99_R4Negotiated& aQoSR99_R4Negotiated,
       
   207 												   RPacketQoS::TQoSR5Negotiated& aQoSR5Negotiated);
       
   208 
       
   209 	void ConvertDNSToPCOBuffer (const TDes8& aPrimaryDNS, const TDes8& aSecondaryDNS, const TUint8 aRequestID, TDes8& aFormatPcoBufferAddr);
       
   210 	void ConvertUsernameAndPasswordToPCOBuffer(const TDes8& aUsername, const TDes8& aPassword, const TUint8 aRequestID, TDes8& aFormatedBuffer);
       
   211 
       
   212 	void DecodePCO(const RPacketContext::TMiscProtocolBuffer& aPcoBuffer, RPacketContext::TAuthData& aUsername, RPacketContext::TAuthData& aPassword, RPacketContext::TProtocolAddress& aPrimaryDNS, RPacketContext::TProtocolAddress& aSecondaryDNS, RPacketContext::TMiscProtocolBuffer& aMiscBuffer);
       
   213 
       
   214 	CPcktMbmsMonitoredServiceList* CreateServiceListL(const RArray<TUint>& aServiceIds) const;
       
   215 
       
   216 	
       
   217 	void ConstructL();
       
   218 	
       
   219 	
       
   220 
       
   221 private:	// Not owned
       
   222 
       
   223 	MLtsyDispatchFactoryV1& iLtsyFactoryV1;
       
   224 	MmMessageManagerCallback& iMessageManagerCallback;
       
   225 	CRequestQueueOneShot& iRequestAsyncOneShot;
       
   226 	TDispatcherHolder* iDispatcherHolder;
       
   227 
       
   228 	// Interfaces in the Licensee LTSY, not owned by this object
       
   229 
       
   230     MLtsyDispatchPacketServicesPacketAttach* iLtsyDispatchPacketServicesPacketAttach;
       
   231     MLtsyDispatchPacketServicesGetPacketAttachMode* iLtsyDispatchPacketServicesGetPacketAttachMode;
       
   232     MLtsyDispatchPacketServicesGetPacketNetworkRegistrationStatus* iLtsyDispatchPacketServicesGetPacketNetworkRegistrationStatus;
       
   233     MLtsyDispatchPacketServicesPacketDetach* iLtsyDispatchPacketServicesPacketDetach;
       
   234     MLtsyDispatchPacketServicesSetPdpContextConfig* iLtsyDispatchPacketServicesSetPdpContextConfig;
       
   235     MLtsyDispatchPacketServicesModifyActivePdpContext* iLtsyDispatchPacketServicesModifyActivePdpContext;
       
   236     MLtsyDispatchPacketServicesInitialisePdpContext* iLtsyDispatchPacketServicesInitialisePdpContext;
       
   237     MLtsyDispatchPacketServicesDeletePdpContext* iLtsyDispatchPacketServicesDeletePdpContext;
       
   238     MLtsyDispatchPacketServicesSetPacketAttachMode* iLtsyDispatchPacketServicesSetPacketAttachMode;
       
   239     MLtsyDispatchPacketServicesNotifyPacketStatusChange* iLtsyDispatchPacketServicesNotifyPacketStatusChange;
       
   240     MLtsyDispatchPacketServicesSetDefaultPdpContextGprsParams* iLtsyDispatchPacketServicesSetDefaultPdpContextGprsParams;
       
   241     MLtsyDispatchPacketServicesSetDefaultPdpContextR99R4Params* iLtsyDispatchPacketServicesSetDefaultPdpContextR99R4Params;
       
   242     MLtsyDispatchPacketServicesActivatePdpContext* iLtsyDispatchPacketServicesActivatePdpContext;
       
   243     MLtsyDispatchPacketServicesSetPdpContextQosGprs* iLtsyDispatchPacketServicesSetPdpContextQosGprs;
       
   244     MLtsyDispatchPacketServicesSetPdpContextQosR99R4* iLtsyDispatchPacketServicesSetPdpContextQosR99R4;
       
   245     MLtsyDispatchPacketServicesSetPdpContextQosR5* iLtsyDispatchPacketServicesSetPdpContextQosR5;
       
   246     MLtsyDispatchPacketServicesRejectNetworkInitiatedContextActivationRequest* iLtsyDispatchPacketServicesRejectNetworkInitiatedContextActivationRequest;
       
   247     MLtsyDispatchPacketServicesDeactivatePdpContext* iLtsyDispatchPacketServicesDeactivatePdpContext;
       
   248     MLtsyDispatchPacketServicesAddPacketFilter* iLtsyDispatchPacketServicesAddPacketFilter;
       
   249     MLtsyDispatchPacketServicesGetStatus* iLtsyDispatchPacketServicesGetStatus;
       
   250     MLtsyDispatchPacketServicesGetStaticCapabilities* iLtsyDispatchPacketServicesGetStaticCapabilities;
       
   251     MLtsyDispatchPacketServicesGetMaxNoMonitoredServiceLists* iLtsyDispatchPacketServicesGetMaxNoMonitoredServiceLists;
       
   252     MLtsyDispatchPacketServicesGetMaxNoActiveServices* iLtsyDispatchPacketServicesGetMaxNoActiveServices;
       
   253     MLtsyDispatchPacketServicesInitialiseMbmsContext* iLtsyDispatchPacketServicesInitialiseMbmsContext;
       
   254     MLtsyDispatchPacketServicesGetMbmsNetworkServiceStatus* iLtsyDispatchPacketServicesGetMbmsNetworkServiceStatus;
       
   255     MLtsyDispatchPacketServicesUpdateMbmsMonitorServiceList* iLtsyDispatchPacketServicesUpdateMbmsMonitorServiceList;
       
   256     MLtsyDispatchPacketServicesUpdateMbmsSessionList* iLtsyDispatchPacketServicesUpdateMbmsSessionList;
       
   257 	MLtsyDispatchPacketServicesRemovePacketFilter* iLtsyDispatchPacketServicesRemovePacketFilter;
       
   258 
       
   259 	}; // class CPacketServicesDispatcher
       
   260 
       
   261 #endif // __CPACKETSERVICESDISPATCHER_H_
       
   262