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