|
1 // Copyright (c) 1997-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 // ETel Multimode Quality of Service (QoS) Support |
|
15 // GPRS Rel97/98, CDMAOne, CDMA2000, GPRS/UMTS Rel99 and UMTS Rel4. |
|
16 // |
|
17 // |
|
18 |
|
19 #include <et_clsvr.h> |
|
20 #include <etelext.h> |
|
21 |
|
22 // ETel Packet Data header files |
|
23 #include "etelQoS.h" |
|
24 #include "pcktptr.h" |
|
25 #include <pcktcs.h> |
|
26 |
|
27 // Used by ETel to instruct TSY to create a name for the newly opened object |
|
28 _LIT(KETelNewQoSName, "::"); |
|
29 |
|
30 /***********************************************************************************/ |
|
31 // |
|
32 // RPacketQoS |
|
33 // |
|
34 /***********************************************************************************/ |
|
35 |
|
36 EXPORT_C RPacketQoS::RPacketQoS() |
|
37 :iEtelPacketQoSPtrHolder(NULL) |
|
38 /** Standard constructor. */ |
|
39 { |
|
40 } |
|
41 |
|
42 EXPORT_C void RPacketQoS::ConstructL() |
|
43 /** |
|
44 * This function creates an instance of CPacketQoSPtrHolder and assigns it to the |
|
45 * iEtelPacketQoSPtrHolder pointer. |
|
46 |
|
47 @capability None |
|
48 */ |
|
49 { |
|
50 __ASSERT_ALWAYS(iEtelPacketQoSPtrHolder == NULL, PanicClient(EEtelPanicHandleNotClosed)); |
|
51 iEtelPacketQoSPtrHolder = CPacketQoSPtrHolder::NewL(CEtelPacketPtrHolder::EMaxNumPacketQoSPtrSlots, CEtelPacketPtrHolder::EMaxNumPacketQoSPtrCSlots); |
|
52 } |
|
53 |
|
54 EXPORT_C void RPacketQoS::Destruct() |
|
55 /** |
|
56 * This function deletes and NULLs the iEtelPacketQoSPtrHolder pointer. |
|
57 |
|
58 @capability None |
|
59 */ |
|
60 { |
|
61 delete iEtelPacketQoSPtrHolder; |
|
62 iEtelPacketQoSPtrHolder = NULL; |
|
63 } |
|
64 |
|
65 EXPORT_C TInt RPacketQoS::OpenNewQoS(RPacketContext& aPacketContext, TDes& aProfileName) |
|
66 //This function may be called by the client application. |
|
67 /** Creates a new QoS profile (i.e. RPacketQoS class instance). |
|
68 |
|
69 An RPacketQoS may only be opened on an existing RPacketContext subsession. |
|
70 |
|
71 When the new QoS profile is created, the TSY will assign it a unique name to it. The |
|
72 client can use this name to uniquely identify the particular context. |
|
73 |
|
74 An opened RPacketContext must be closed explicitely by calling Close() to |
|
75 prevent a resource (memory) leak. |
|
76 |
|
77 @param aPacketContext A reference to a previously instantiated RPacketContext, on |
|
78 which to open the QoS profile. |
|
79 @param aProfileName On return, the unique QoS name. |
|
80 @return KErrNone if successful, a system-wide error code if not. |
|
81 @capability None |
|
82 */ |
|
83 { |
|
84 RSessionBase session = aPacketContext.SessionHandle(); |
|
85 |
|
86 TRAPD(ret,ConstructL()); |
|
87 if (ret) |
|
88 { |
|
89 return ret; |
|
90 } |
|
91 TInt subSessionHandle=aPacketContext.SubSessionHandle(); |
|
92 __ASSERT_ALWAYS(subSessionHandle!=0,PanicClient(EEtelPanicNullHandle)); // client has no existing sub-session! |
|
93 TPtrC name(KETelNewQoSName); // necessary so that server knows to ask TSY for new name |
|
94 |
|
95 SetSessionHandle(session); |
|
96 ret = CreateSubSession(session,EEtelOpenFromSubSession,TIpcArgs(&name,&aProfileName,subSessionHandle)); |
|
97 if (ret) |
|
98 Destruct(); |
|
99 return ret; |
|
100 } |
|
101 |
|
102 EXPORT_C TInt RPacketQoS::OpenExistingQoS(RPacketContext& aPacketContext, const TDesC& aProfileName) |
|
103 //This function may be called by the client application. |
|
104 /** Opens a handle on an existing RPacketQoS object identified by the profile name. |
|
105 |
|
106 An opened RPacketContext must be closed explicitely by calling Close() to |
|
107 prevent a resource (memory) leak. |
|
108 |
|
109 @param aPacketContext This identifies to which RPacketContext the QoS profile |
|
110 to be opened belongs. |
|
111 @param aProfileName This uniquely identifies to ETel/TSY which existing RPacketQoS |
|
112 object the client wants to open. This name was previously assigned by the |
|
113 TSY when the specified RPacketQoS was originally created using RPacketQoS::OpenNewQoS(). |
|
114 @return KErrNone if successful, KErrNotFound if the object does not exist. |
|
115 @capability None |
|
116 */ |
|
117 { |
|
118 RSessionBase session = aPacketContext.SessionHandle(); |
|
119 |
|
120 TRAPD(ret,ConstructL()); |
|
121 if (ret) |
|
122 { |
|
123 Destruct(); |
|
124 return ret; |
|
125 } |
|
126 TInt subSessionHandle=aPacketContext.SubSessionHandle(); |
|
127 __ASSERT_ALWAYS(subSessionHandle != 0,PanicClient(EEtelPanicNullHandle)); |
|
128 __ASSERT_ALWAYS(aProfileName.Length() != 0,PanicClient(KErrBadName)); |
|
129 |
|
130 SetSessionHandle(session); |
|
131 ret = CreateSubSession(session,EEtelOpenByNameFromSubSession,TIpcArgs(&aProfileName,TIpcArgs::ENothing,subSessionHandle)); |
|
132 if (ret) |
|
133 Destruct(); |
|
134 return ret; |
|
135 } |
|
136 |
|
137 EXPORT_C void RPacketQoS::Close() |
|
138 //This function may be called by the client application. |
|
139 /** Closes the client's current sub-session with ETel. |
|
140 |
|
141 Any outstanding requests the client may have with ETel (notifications, for |
|
142 example) will be automatically destroyed by ETel. |
|
143 |
|
144 An opened RPacketContext must be closed explicitly by calling Close() to |
|
145 prevent a resource (memory) leak. |
|
146 @capability None |
|
147 */ |
|
148 { |
|
149 CloseSubSession(EEtelClose); |
|
150 Destruct(); |
|
151 } |
|
152 |
|
153 EXPORT_C void RPacketQoS::SetProfileParameters(TRequestStatus& aStatus, TDes8& aProfile) const |
|
154 //This asynchronous function may be called by the client application. |
|
155 /** Passes to the TSY all the parameters required to configure Quality of Service |
|
156 for a particular context. |
|
157 |
|
158 The parameters are passed via a TQoSGPRSRequested, TQoSCDMA2000Requested or |
|
159 TQoSRequestedR99_R4 class, depending on the current network and packet-service. |
|
160 |
|
161 This is an asynchronous function call. |
|
162 |
|
163 The TQoSCapsxxxx classes inherit from TPacketDataConfigBase and therefore |
|
164 contain an iExtensionId member data identifying whether they are a GPRS, |
|
165 CDMA or R99_R4 configuration class. |
|
166 |
|
167 To determine how to correctly unpack the descriptor once it reaches the TSY, |
|
168 the TSY must first cast the descriptor to a TPacketDataConfigBase pointer |
|
169 and check the value of the iExtensionId parameter. Referring to this value |
|
170 the TSY will then cast the descriptor to the correct TPacketDataConfigBase- |
|
171 derived class. |
|
172 |
|
173 Use RTelSubSessionBase::CancelAsyncRequest(EPacketQoSSetProfileParams) to |
|
174 cancel a previously placed asynchronous SetProfileParameters() request. |
|
175 |
|
176 |
|
177 @param aStatus On completion, KErrNone if successful, a system-wide error |
|
178 code if not. |
|
179 @param aProfile A TQoSGPRSRequested, TQoSCDMA2000Requested or TQoSR99_R4Requested |
|
180 containing the configuration data, packaged inside a TPckg<> and passed as a |
|
181 descriptor reference. |
|
182 @capability WriteDeviceData |
|
183 @capability NetworkServices |
|
184 */ |
|
185 { |
|
186 Set(EPacketQoSSetProfileParams, aStatus, aProfile); |
|
187 } |
|
188 |
|
189 EXPORT_C void RPacketQoS::GetProfileParameters(TRequestStatus& aStatus, TDes8& aProfile) const |
|
190 //This asynchronous function may be called by the client application. |
|
191 /** Retrieves the TSY/phone values of all parameters associated with a negotiated |
|
192 QoS profile. |
|
193 |
|
194 This is an asynchronous function. |
|
195 |
|
196 QoS profile parameters are contained as member data in either a TQoSGPRSNegotiated, |
|
197 TQoSCDMA2000Negotiated, or TQoSR99_R4Negotiated class, depending on the current packet |
|
198 service. These T-classes are packaged inside a TPckg<> template class, enabling them to |
|
199 be passed as a descriptor to the TSY. |
|
200 |
|
201 The Negotiated QoS profile class derives from TPacketDataConfigBase and therefore contains |
|
202 iExtensionId member data identifying whether it is a GPRS, CDMA or R99_4 configuration |
|
203 class. To determine how to correctly unpack the descriptor once it reaches the TSY, the |
|
204 TSY must first cast the descriptor to a TPacketDataConfigBase pointer and check whether |
|
205 the value of the iExtensionId parameter. Depending on this value, the TSY will then cast |
|
206 the descriptor to the correct TPacketDataConfigBase-derived class. |
|
207 |
|
208 Use RTelSubSessionBase::CancelAsyncRequest(EPacketQoSGetProfileParams) to |
|
209 cancel a previously placed asynchronous GetProfileParameters() request. |
|
210 |
|
211 |
|
212 @param aStatus On return, KErrNone if successful. |
|
213 @param aProfile On completion, a TQoSGPRSNegotiated, TQoSCDMA2000Negotiated or |
|
214 TQoSR99_R4Negotiated containing the profile data, packaged inside a TPckg<> and |
|
215 returned as a descriptor reference. |
|
216 |
|
217 @capability ReadDeviceData |
|
218 */ |
|
219 { |
|
220 Get(EPacketQoSGetProfileParams, aStatus, aProfile); |
|
221 } |
|
222 |
|
223 EXPORT_C void RPacketQoS::GetProfileCapabilities(TRequestStatus& aStatus, TDes8& aProfileCaps) const |
|
224 //This asynchronous function may be called by the client application. |
|
225 /** Gets the Quality of Service capabilities for the current packet service. |
|
226 |
|
227 Depending on the the packet service type, a TQoSCapsGPRS, TQoSCapsCDMA2000, |
|
228 TQoSCapsR99_R4 or TQoSCapsR5 will be passed in. The TSY will assign a bitmask for each |
|
229 parameter in the relevant TQoSCapsxxx class. This bitmask contains all values |
|
230 which can be assigned to the particular parameter for the current packet |
|
231 service and phone. |
|
232 |
|
233 This is an asynchronous function. |
|
234 |
|
235 The TQoSCapsxxxx classes inherit from TPacketDataConfigBase and therefore |
|
236 contain iExtensionId member data identifying the configuration class |
|
237 (GPRS Rel97/98, CDMA, Rel99 or Rel4). |
|
238 |
|
239 To determine how to correctly unpack the descriptor once it reaches the TSY, the |
|
240 TSY must first cast the descriptor to a TPacketDataConfigBase pointer and check whether |
|
241 the value of the iExtensionId parameter. Depending on this value, the TSY will then cast |
|
242 the descriptor to the correct TPacketDataConfigBase-derived class. |
|
243 |
|
244 Use RTelSubSessionBase::CancelAsyncRequest(EPacketQoSGetProfileCaps) to cancel |
|
245 a previously placed asynchronous GetProfileCapabilities() request. |
|
246 |
|
247 |
|
248 @param aStatus On completion, KErrNone if successful. |
|
249 @param aProfileCaps A reference to a TQoSCapsGPRS, TQosCapsCDMA2000, |
|
250 TQoSCapsR99_R4 or TQoSCapsR5 packaged in a TPckg and returned as a descriptor. |
|
251 |
|
252 @capability None |
|
253 */ |
|
254 { |
|
255 Get(EPacketQoSGetProfileCaps, aStatus, aProfileCaps); |
|
256 } |
|
257 |
|
258 EXPORT_C void RPacketQoS::NotifyProfileChanged(TRequestStatus& aStatus, TDes8& aProfile) const |
|
259 //may be called by the client application. |
|
260 /** |
|
261 Notifies a client of a change in the negotiated QoS profile is received |
|
262 by the TSY from the phone. |
|
263 |
|
264 This is a asynchronous function. |
|
265 |
|
266 The new QoS profile returned will be either TQoSGPRSNegotiated, |
|
267 TQoSCDMA2000Negotiated or TQoSR99_R4Negotiated, depending on the |
|
268 current packet service. The TQoSxxxNegotiated class will contain |
|
269 updated values for each QoS parameter. |
|
270 |
|
271 If the client wishes to receive further notifications, NotifyProfileChanged() |
|
272 must be called again. |
|
273 |
|
274 Use RTelSubSessionBase::CancelAsyncRequest(EPacketQoSNotifyProfileChanged) |
|
275 to cancel a previously placed asynchronous NotifyProfileChanged() request. |
|
276 |
|
277 |
|
278 @param aStatus On completion, KErrNone if successful. |
|
279 @param aProfile A descriptor reference to a TPckg<TQoSXXXNegotiated> object. |
|
280 |
|
281 @capability ReadDeviceData |
|
282 */ |
|
283 { |
|
284 Get(EPacketQoSNotifyProfileChanged, aStatus, aProfile); |
|
285 } |
|
286 |
|
287 |
|
288 EXPORT_C RPacketQoS::TQoSCapsGPRS::TQoSCapsGPRS() |
|
289 :TPacketDataConfigBase(), iPrecedence(EUnspecifiedPrecedence), iDelay(EUnspecifiedDelayClass), |
|
290 iReliability(EUnspecifiedReliabilityClass), iPeak(EUnspecifiedPeakThroughput), |
|
291 iMean(EUnspecifiedMeanThroughput) |
|
292 /** Standard constructor. |
|
293 |
|
294 @deprecated v9.3 Use RPacketQoS::TQoSCapsR99_R4::TQoSCapsR99_R4 or RPacketQoS::TQoSCapsR5::TQoSCapsR5 instead. |
|
295 |
|
296 Initializes the GPRS QoS profile with default values. Sets iExtensionId to KConfigGPRS. |
|
297 */ |
|
298 { |
|
299 iExtensionId = KConfigGPRS; |
|
300 } |
|
301 |
|
302 EXPORT_C RPacketQoS::TQoSGPRSRequested::TQoSGPRSRequested() |
|
303 :TPacketDataConfigBase(), iReqPrecedence(EUnspecifiedPrecedence), iMinPrecedence(EUnspecifiedPrecedence), |
|
304 iReqDelay(EUnspecifiedDelayClass), iMinDelay(EUnspecifiedDelayClass), |
|
305 iReqReliability(EUnspecifiedReliabilityClass), iMinReliability(EUnspecifiedReliabilityClass), |
|
306 iReqPeakThroughput(EUnspecifiedPeakThroughput), iMinPeakThroughput(EUnspecifiedPeakThroughput), |
|
307 iReqMeanThroughput(EUnspecifiedMeanThroughput), iMinMeanThroughput(EUnspecifiedMeanThroughput) |
|
308 /** |
|
309 Standard constructor. |
|
310 |
|
311 @deprecated v9.3 Use RPacketQoS::TQoSR99_R4Requested::TQoSR99_R4Requested or RPacketQoS::TQoSR5Requested::TQoSR5Requested instead. |
|
312 |
|
313 Initializes the requested and minimum GPRS QoS values to the defaults. |
|
314 Sets the iExtensionId to KConfigGPRS. |
|
315 */ |
|
316 { |
|
317 iExtensionId = KConfigGPRS; |
|
318 } |
|
319 |
|
320 EXPORT_C RPacketQoS::TQoSGPRSNegotiated::TQoSGPRSNegotiated() |
|
321 :TPacketDataConfigBase(), iPrecedence(EUnspecifiedPrecedence), iDelay(EUnspecifiedDelayClass), |
|
322 iReliability(EUnspecifiedReliabilityClass), iPeakThroughput(EUnspecifiedPeakThroughput), |
|
323 iMeanThroughput(EUnspecifiedMeanThroughput) |
|
324 /** Standard constructor. |
|
325 |
|
326 @deprecated v9.3 Use RPacketQoS::TQoSR99_R4Negotiated::TQoSR99_R4Negotiated or RPacketQoS::TQoSR5Negotiated::TQoSR5Negotiated instead. |
|
327 |
|
328 Initializes the negotiated GPRS QoS values to the defaults. |
|
329 Sets iExtensionId to KConfigGPRS. */ |
|
330 { |
|
331 iExtensionId = KConfigGPRS; |
|
332 } |
|
333 |
|
334 EXPORT_C RPacketQoS::TQoSCapsCDMA2000::TQoSCapsCDMA2000() |
|
335 :TPacketDataConfigBase() |
|
336 /** Standard constructor. |
|
337 |
|
338 Initializes the CDMA QoS profile with default values. Sets iExtensionId to KConfigGPRS. |
|
339 */ |
|
340 { |
|
341 iExtensionId = KConfigCDMA; |
|
342 } |
|
343 |
|
344 EXPORT_C RPacketQoS::TQoSCDMA2000Requested::TQoSCDMA2000Requested() |
|
345 :TPacketDataConfigBase() |
|
346 /** Standard constructor. |
|
347 |
|
348 Initializes the requested CDMA QoS values to the defaults. Sets iExtensionId to KConfigCDMA. |
|
349 */ |
|
350 { |
|
351 iExtensionId = KConfigCDMA; |
|
352 } |
|
353 |
|
354 EXPORT_C RPacketQoS::TQoSCDMA2000Negotiated::TQoSCDMA2000Negotiated() |
|
355 :TPacketDataConfigBase() |
|
356 /** Standard constructor. Sets iExtentionId to KConfigCDMA. */ |
|
357 { |
|
358 iExtensionId = KConfigCDMA; |
|
359 } |
|
360 |
|
361 |
|
362 EXPORT_C RPacketQoS::TQoSCapsR99_R4::TQoSCapsR99_R4() |
|
363 : TPacketDataConfigBase(), |
|
364 iTrafficClass(ETrafficClassUnspecified), |
|
365 iDeliveryOrderReqd(EDeliveryOrderUnspecified), |
|
366 iDeliverErroneousSDU(EErroneousSDUDeliveryUnspecified), |
|
367 iBER(EBERUnspecified), |
|
368 iSDUErrorRatio(ESDUErrorRatioUnspecified), |
|
369 iTrafficHandlingPriority(ETrafficPriorityUnspecified) |
|
370 /** |
|
371 * Constructor - All values are initialized to unspecified. |
|
372 */ |
|
373 { |
|
374 iExtensionId = KConfigRel99Rel4; |
|
375 } |
|
376 |
|
377 EXPORT_C RPacketQoS::TQoSCapsR5::TQoSCapsR5() |
|
378 : TQoSCapsR99_R4(), |
|
379 iSignallingIndication(EFalse), |
|
380 iSourceStatisticsDescriptor(ESourceStatisticsDescriptorUnknown) |
|
381 /** |
|
382 * Constructor - All values are initialized to unspecified. |
|
383 */ |
|
384 { |
|
385 iExtensionId = KConfigRel5; |
|
386 } |
|
387 |
|
388 EXPORT_C RPacketQoS::TQoSR99_R4Requested::TQoSR99_R4Requested() |
|
389 : TPacketDataConfigBase(), |
|
390 iReqTrafficClass(ETrafficClassUnspecified), |
|
391 iMinTrafficClass(ETrafficClassUnspecified), |
|
392 iReqDeliveryOrderReqd(EDeliveryOrderUnspecified), |
|
393 iMinDeliveryOrderReqd(EDeliveryOrderUnspecified), |
|
394 iReqDeliverErroneousSDU(EErroneousSDUDeliveryUnspecified), |
|
395 iMinDeliverErroneousSDU(EErroneousSDUDeliveryUnspecified), |
|
396 iReqMaxSDUSize(0), |
|
397 iMinAcceptableMaxSDUSize(0), |
|
398 iReqBER(EBERUnspecified), |
|
399 iMaxBER(EBERUnspecified), |
|
400 iReqSDUErrorRatio(ESDUErrorRatioUnspecified), |
|
401 iMaxSDUErrorRatio(ESDUErrorRatioUnspecified), |
|
402 iReqTrafficHandlingPriority(ETrafficPriorityUnspecified), |
|
403 iMinTrafficHandlingPriority(ETrafficPriorityUnspecified), |
|
404 iReqTransferDelay(0), |
|
405 iMaxTransferDelay(0) |
|
406 /** |
|
407 * Constructor - All values are initialized to unspecified or zero. |
|
408 */ |
|
409 { |
|
410 iExtensionId = KConfigRel99Rel4; |
|
411 |
|
412 |
|
413 iReqMaxRate.iUplinkRate = 0; //< Range: 1kbps to 8640kbps in varying increments |
|
414 iReqMaxRate.iDownlinkRate = 0; //< Range: 1kbps to 8640kbps in varying increments |
|
415 iMinAcceptableMaxRate.iUplinkRate = 0; //< Range: 1kbps to 8640kbps in varying increments |
|
416 iMinAcceptableMaxRate.iDownlinkRate = 0;//< Range: 1kbps to 8640kbps in varying increments |
|
417 |
|
418 iReqGuaranteedRate.iUplinkRate = 0; //< Range: 1kbps to 8640kbps in varying increments |
|
419 iReqGuaranteedRate.iDownlinkRate = 0; //< Range: 1kbps to 8640kbps in varying increments |
|
420 iMinGuaranteedRate.iUplinkRate = 0; //< Range: 1kbps to 8640kbps in varying increments |
|
421 iMinGuaranteedRate.iDownlinkRate = 0; //< Range: 1kbps to 8640kbps in varying increments |
|
422 } |
|
423 |
|
424 EXPORT_C RPacketQoS::TQoSR5Requested::TQoSR5Requested() |
|
425 : TQoSR99_R4Requested(), |
|
426 iSignallingIndication(EFalse), |
|
427 iSourceStatisticsDescriptor(ESourceStatisticsDescriptorUnknown) |
|
428 /** |
|
429 * Constructor - The values are initialized to zero and unknown. |
|
430 Sets iExtentionId to KConfigRel5. |
|
431 */ |
|
432 { |
|
433 iExtensionId = KConfigRel5; |
|
434 } |
|
435 |
|
436 EXPORT_C RPacketQoS::TQoSR99_R4Negotiated::TQoSR99_R4Negotiated() |
|
437 : TPacketDataConfigBase(), |
|
438 iTrafficClass(ETrafficClassUnspecified), |
|
439 iDeliveryOrderReqd(EDeliveryOrderUnspecified), |
|
440 iDeliverErroneousSDU(EErroneousSDUDeliveryUnspecified), |
|
441 iMaxSDUSize(0), |
|
442 iBER(EBERUnspecified), |
|
443 iSDUErrorRatio(ESDUErrorRatioUnspecified), |
|
444 iTrafficHandlingPriority(ETrafficPriorityUnspecified), |
|
445 iTransferDelay(0) |
|
446 /** |
|
447 * Constructor - All values are initialized to unspecified or zero. |
|
448 */ |
|
449 { |
|
450 iExtensionId = KConfigRel99Rel4; |
|
451 |
|
452 iMaxRate.iUplinkRate = 0; //< Range: 1kbps to 8640kbps in varying increments |
|
453 iMaxRate.iDownlinkRate = 0; //< Range: 1kbps to 8640kbps in varying increments |
|
454 |
|
455 iGuaranteedRate.iUplinkRate = 0; //< Range: 1kbps to 8640kbps in varying increments |
|
456 iGuaranteedRate.iDownlinkRate = 0; //< Range: 1kbps to 8640kbps in varying increments |
|
457 } |
|
458 |
|
459 EXPORT_C RPacketQoS::TQoSR5Negotiated::TQoSR5Negotiated() |
|
460 : TQoSR99_R4Negotiated(), |
|
461 iSignallingIndication(EFalse), |
|
462 iSourceStatisticsDescriptor(ESourceStatisticsDescriptorUnknown) |
|
463 /** |
|
464 * Constructor - The values are initialized to zero and unknown. |
|
465 Sets iExtentionId to KConfigRel5. |
|
466 */ |
|
467 { |
|
468 iExtensionId = KConfigRel5; |
|
469 } |