--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwtools/preparedefaultcommsdatabase/Tools/ceddump/src/R99QosConversion.cpp Thu Dec 17 09:22:25 2009 +0200
@@ -0,0 +1,505 @@
+// Copyright (c) 2005-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:
+// CR99QoSConversion.cpp
+// Contains methods for converting R97 QoS parameters to R99/R4 parameters
+//
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#include <e32cons.h>
+#include <e32std.h>
+#include <bacline.h>
+#include "ceddumper.h"
+#include "R99QoSConversion.h"
+#include "ceddumpglobals.h"
+#include "dbdef.h"
+#include <etelpckt.h>
+#include <etelqos.h>
+#include <faxdefn.h>
+#include <networking/panroles.h>
+
+/**
+Creates new class instance
+*/
+CR99QoSConversion* CR99QoSConversion::NewL()
+ {
+ CR99QoSConversion *self = new (ELeave) CR99QoSConversion();
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+/**
+Constructes, initialises the object
+*/
+void CR99QoSConversion::ConstructL()
+ {
+ iNext = NULL;
+ iId = 1;
+ iModificationFlag = EFalse;
+
+ // Initialize the values.
+ // the remaing, unitialised values are set to '0' by CBase
+ iGPRSReqTrafficClass = RPacketQoS::ETrafficClassUnspecified;
+ iGPRSMinTrafficClass = RPacketQoS::ETrafficClassUnspecified;
+ iGPRSReqDeliveryOrder = RPacketQoS::EDeliveryOrderUnspecified;
+ iGPRSMinDeliveryOrder = RPacketQoS::EDeliveryOrderUnspecified;
+ iGPRSReqDeliverErroneousSDU = RPacketQoS::EErroneousSDUDeliveryUnspecified;
+ iGPRSMinDeliverErroneousSDU = RPacketQoS::EErroneousSDUDeliveryUnspecified;
+ iGPRSReqBER = RPacketQoS::EBERUnspecified;
+ iGPRSMaxBER = RPacketQoS::EBERUnspecified;
+ iGPRSReqSDUErrorRatio = RPacketQoS::ESDUErrorRatioUnspecified;
+ iGPRSMaxSDUErrorRatio = RPacketQoS::ESDUErrorRatioUnspecified;
+ iGPRSReqTrafficHandlingPriority = RPacketQoS::ETrafficPriorityUnspecified;
+ iGPRSMinTrafficHandlingPriority = RPacketQoS::ETrafficPriorityUnspecified;
+ iGPRSSignallingIndication = EFalse;
+ iGPRS_ImCnSignallingIndication = EFalse;
+
+ //Fixed Value
+ iGPRSReqMaxSDUSize = 1500;
+ iGPRSMinAcceptableMaxSDUSize = 1500;
+
+ iGPRSReqDeliveryOrder = RPacketQoS::EDeliveryOrderRequired;
+
+ }
+
+/**
+Deletes object
+*/
+CR99QoSConversion::~CR99QoSConversion()
+ {
+ delete iNext;
+ }
+
+/**
+Check if given column is not deprecated within incoming/outgoing GPRS table.
+Additionally converts the setting to new R99 GPRS QoS values if necessary.
+Assumes setting is given as R97/98 GPRS QoS parameter.
+
+@param aColumn A reference to a descriptor containing the name of a column in the current record.
+@param aSetting The setting
+@return CR99QoSConversion::TConvRecordType
+*/
+CR99QoSConversion::TConvRecordType CR99QoSConversion::CheckAndConvert(TPtrC& aColumn, TPtrC& aSetting )
+ {
+
+ TLex temp(aSetting);
+ TInt number;
+
+ temp.Val(number);
+
+ if (aColumn.Compare(TPtrC(GPRS_REQ_PRECEDENCE)) == 0)
+ {
+ switch (number)
+ {
+ case (RPacketQoS::EPriorityHighPrecedence) :
+ iGPRSReqTrafficHandlingPriority = RPacketQoS::ETrafficPriority1;
+ break;
+ case (RPacketQoS::EPriorityMediumPrecedence) :
+ iGPRSReqTrafficHandlingPriority = RPacketQoS::ETrafficPriority2;
+ break;
+ case (RPacketQoS::EPriorityLowPrecedence) :
+ iGPRSReqTrafficHandlingPriority = RPacketQoS::ETrafficPriority3;
+ break;
+ default : break;
+ }
+ iModificationFlag = ETrue;
+ return CR99QoSConversion::EDeprecatedRecord;
+ }
+ else if (aColumn.Compare(TPtrC(GPRS_REQ_DELAY)) == 0)
+ {
+ switch (number)
+ {
+ case (RPacketQoS::EDelayClass1):
+ iGPRSReqTrafficClass = RPacketQoS::ETrafficClassInteractive;
+ iGPRSReqTrafficHandlingPriority = RPacketQoS::ETrafficPriority1;
+ break;
+ case (RPacketQoS::EDelayClass2):
+ iGPRSReqTrafficClass = RPacketQoS::ETrafficClassInteractive;
+ iGPRSReqTrafficHandlingPriority = RPacketQoS::ETrafficPriority2;
+ break;
+ case (RPacketQoS::EDelayClass3):
+ iGPRSReqTrafficClass = RPacketQoS::ETrafficClassInteractive;
+ iGPRSReqTrafficHandlingPriority = RPacketQoS::ETrafficPriority3;
+ break;
+ case (RPacketQoS::EDelayClass4):
+ iGPRSReqTrafficClass = RPacketQoS::ETrafficClassBackground;
+ break;
+ default :
+ break;
+ }
+ iModificationFlag = ETrue;
+ return CR99QoSConversion::EDeprecatedRecord;
+ }
+ else if (aColumn.Compare(TPtrC(GPRS_REQ_RELIABILITY)) == 0)
+ {
+ switch (number)
+ {
+ case (RPacketQoS::EReliabilityClass1) :
+ iGPRSReqSDUErrorRatio = RPacketQoS::ESDUErrorRatioOnePerMillion;
+ iGPRSReqBER = RPacketQoS::EBEROnePerHundredThousand;
+ iGPRSReqDeliverErroneousSDU = RPacketQoS::EErroneousSDUDeliveryNotRequired;
+ break;
+ case (RPacketQoS::EReliabilityClass2) :
+ iGPRSReqSDUErrorRatio = RPacketQoS::ESDUErrorRatioOnePerMillion;
+ iGPRSReqBER = RPacketQoS::EBEROnePerHundredThousand;
+ iGPRSReqDeliverErroneousSDU = RPacketQoS::EErroneousSDUDeliveryNotRequired;
+ break;
+ case (RPacketQoS::EReliabilityClass3) :
+ iGPRSReqSDUErrorRatio = RPacketQoS::ESDUErrorRatioOnePerTenThousand;
+ iGPRSReqBER = RPacketQoS::EBEROnePerHundredThousand;
+ iGPRSReqDeliverErroneousSDU = RPacketQoS::EErroneousSDUDeliveryNotRequired;
+ break;
+ case (RPacketQoS::EReliabilityClass4) :
+ iGPRSReqSDUErrorRatio = RPacketQoS::ESDUErrorRatioOnePerThousand;
+ iGPRSReqBER = RPacketQoS::EBEROnePerHundredThousand;
+ iGPRSReqDeliverErroneousSDU = RPacketQoS::EErroneousSDUDeliveryNotRequired;
+ break;
+ case (RPacketQoS::EReliabilityClass5) :
+ iGPRSReqSDUErrorRatio = RPacketQoS::ESDUErrorRatioOnePerThousand;
+ iGPRSReqBER = RPacketQoS::EBERFourPerThousand;
+ iGPRSReqDeliverErroneousSDU = RPacketQoS::EErroneousSDUDeliveryRequired;
+ break;
+ default: break;
+ }
+ iModificationFlag = ETrue;
+ return CR99QoSConversion::EDeprecatedRecord;
+ }
+ else if (aColumn.Compare(TPtrC(GPRS_REQ_PEAK_THROUGHPUT)) == 0)
+ {
+ switch (number)
+ {
+ case (RPacketQoS::EPeakThroughput1000) :
+ iGPRSReqMaxUplinkRate = 8;
+ iGPRSReqMaxDownlinkRate = 8;
+ break;
+ case (RPacketQoS::EPeakThroughput2000) :
+ iGPRSReqMaxUplinkRate = 16;
+ iGPRSReqMaxDownlinkRate = 16;
+ break;
+ case (RPacketQoS::EPeakThroughput4000) :
+ iGPRSReqMaxUplinkRate = 32;
+ iGPRSReqMaxDownlinkRate = 32;
+ break;
+ case (RPacketQoS::EPeakThroughput8000) :
+ iGPRSReqMaxUplinkRate = 64;
+ iGPRSReqMaxDownlinkRate = 64;
+ break;
+ case (RPacketQoS::EPeakThroughput16000) :
+ iGPRSReqMaxUplinkRate = 128;
+ iGPRSReqMaxDownlinkRate = 128;
+ break;
+ case (RPacketQoS::EPeakThroughput32000) :
+ iGPRSReqMaxUplinkRate = 256;
+ iGPRSReqMaxDownlinkRate = 256;
+ break;
+ case (RPacketQoS::EPeakThroughput64000) :
+ iGPRSReqMaxUplinkRate = 512;
+ iGPRSReqMaxDownlinkRate = 512;
+ break;
+ case (RPacketQoS::EPeakThroughput128000) :
+ iGPRSReqMaxUplinkRate = 1024;
+ iGPRSReqMaxDownlinkRate = 1024;
+ break;
+ case (RPacketQoS::EPeakThroughput256000) :
+ iGPRSReqMaxUplinkRate = 2048;
+ iGPRSReqMaxDownlinkRate = 2048;
+ break;
+ default : break;
+ }
+ iModificationFlag = ETrue;
+ return CR99QoSConversion::EDeprecatedRecord;
+ }
+ else if (aColumn.Compare(TPtrC(GPRS_REQ_MEAN_THROUGHPUT)) == 0)
+ {
+ iModificationFlag = ETrue;
+ return CR99QoSConversion::EDeprecatedRecord;
+ }
+ else if (aColumn.Compare(TPtrC(GPRS_MIN_PRECEDENCE)) == 0)
+ {
+ switch (number)
+ {
+ case (RPacketQoS::EPriorityHighPrecedence) :
+ iGPRSMinTrafficHandlingPriority = RPacketQoS::ETrafficPriority1;
+ break;
+ case (RPacketQoS::EPriorityMediumPrecedence) :
+ iGPRSMinTrafficHandlingPriority = RPacketQoS::ETrafficPriority2;
+ break;
+ case (RPacketQoS::EPriorityLowPrecedence) :
+ iGPRSMinTrafficHandlingPriority = RPacketQoS::ETrafficPriority3;
+ break;
+ default : break;
+ }
+ iModificationFlag = ETrue;
+ return CR99QoSConversion::EDeprecatedRecord;
+ }
+ else if (aColumn.Compare(TPtrC(GPRS_MIN_DELAY)) == 0)
+ {
+ switch (number)
+ {
+ case (RPacketQoS::EDelayClass1):
+ iGPRSMinTrafficClass = RPacketQoS::ETrafficClassInteractive;
+ iGPRSMinTrafficHandlingPriority = RPacketQoS::ETrafficPriority1;
+ break;
+ case (RPacketQoS::EDelayClass2):
+ iGPRSMinTrafficClass = RPacketQoS::ETrafficClassInteractive;
+ iGPRSMinTrafficHandlingPriority = RPacketQoS::ETrafficPriority2;
+ break;
+ case (RPacketQoS::EDelayClass3):
+ iGPRSMinTrafficClass = RPacketQoS::ETrafficClassInteractive;
+ iGPRSMinTrafficHandlingPriority = RPacketQoS::ETrafficPriority3;
+ break;
+ case (RPacketQoS::EDelayClass4):
+ iGPRSMinTrafficClass = RPacketQoS::ETrafficClassBackground;
+ break;
+ default :
+ break;
+ }
+ iModificationFlag = ETrue;
+ return CR99QoSConversion::EDeprecatedRecord;
+ }
+ else if (aColumn.Compare(TPtrC(GPRS_MIN_RELIABILITY))== 0)
+ {
+ switch (number)
+ {
+ case (RPacketQoS::EReliabilityClass1) :
+ iGPRSMaxSDUErrorRatio = RPacketQoS::ESDUErrorRatioOnePerMillion;
+ iGPRSMaxBER = RPacketQoS::EBEROnePerHundredThousand;
+ iGPRSMinDeliverErroneousSDU = RPacketQoS::EErroneousSDUDeliveryNotRequired;
+ break;
+ case (RPacketQoS::EReliabilityClass2) :
+ iGPRSMaxSDUErrorRatio = RPacketQoS::ESDUErrorRatioOnePerMillion;
+ iGPRSMaxBER = RPacketQoS::EBEROnePerHundredThousand;
+ iGPRSMinDeliverErroneousSDU = RPacketQoS::EErroneousSDUDeliveryNotRequired;
+ break;
+ case (RPacketQoS::EReliabilityClass3) :
+ iGPRSMaxSDUErrorRatio = RPacketQoS::ESDUErrorRatioOnePerTenThousand;
+ iGPRSMaxBER = RPacketQoS::EBEROnePerHundredThousand;
+ iGPRSMinDeliverErroneousSDU = RPacketQoS::EErroneousSDUDeliveryNotRequired;
+ break;
+ case (RPacketQoS::EReliabilityClass4) :
+ iGPRSMaxSDUErrorRatio = RPacketQoS::ESDUErrorRatioOnePerThousand;
+ iGPRSMaxBER = RPacketQoS::EBEROnePerHundredThousand;
+ iGPRSMinDeliverErroneousSDU = RPacketQoS::EErroneousSDUDeliveryNotRequired;
+ break;
+ case (RPacketQoS::EReliabilityClass5) :
+ iGPRSMaxSDUErrorRatio = RPacketQoS::ESDUErrorRatioOnePerThousand;
+ iGPRSMaxBER = RPacketQoS::EBERFourPerThousand;
+ iGPRSMinDeliverErroneousSDU = RPacketQoS::EErroneousSDUDeliveryRequired;
+ break;
+ default: break;
+ }
+ iModificationFlag = ETrue;
+ return CR99QoSConversion::EDeprecatedRecord;
+ }
+ else if (aColumn.Compare(TPtrC(GPRS_MIN_PEAK_THROUGHPUT)) == 0)
+ {
+ switch (number)
+ {
+ case (RPacketQoS::EPeakThroughput1000) :
+ iGPRSReqMinUplinkRate = 8;
+ iGPRSReqMinDownlinkRate = 8;
+ break;
+ case (RPacketQoS::EPeakThroughput2000) :
+ iGPRSReqMinUplinkRate = 16;
+ iGPRSReqMinDownlinkRate = 16;
+ break;
+ case (RPacketQoS::EPeakThroughput4000) :
+ iGPRSReqMinUplinkRate = 32;
+ iGPRSReqMinDownlinkRate = 32;
+ break;
+ case (RPacketQoS::EPeakThroughput8000) :
+ iGPRSReqMinUplinkRate = 64;
+ iGPRSReqMinDownlinkRate = 64;
+ break;
+ case (RPacketQoS::EPeakThroughput16000) :
+ iGPRSReqMinUplinkRate = 128;
+ iGPRSReqMinDownlinkRate = 128;
+ break;
+ case (RPacketQoS::EPeakThroughput32000) :
+ iGPRSReqMinUplinkRate = 256;
+ iGPRSReqMinDownlinkRate = 256;
+ break;
+ case (RPacketQoS::EPeakThroughput64000) :
+ iGPRSReqMinUplinkRate = 512;
+ iGPRSReqMinDownlinkRate = 512;
+ break;
+ case (RPacketQoS::EPeakThroughput128000) :
+ iGPRSReqMinUplinkRate = 1024;
+ iGPRSReqMinDownlinkRate = 1024;
+ break;
+ case (RPacketQoS::EPeakThroughput256000) :
+ iGPRSReqMinUplinkRate = 2048;
+ iGPRSReqMinDownlinkRate = 2048;
+ break;
+ default : break;
+ }
+ iModificationFlag = ETrue;
+ return CR99QoSConversion::EDeprecatedRecord;
+ }
+ else if (aColumn.Compare(TPtrC(GPRS_MIN_MEAN_THROUGHPUT)) == 0)
+ {
+ iModificationFlag = ETrue;
+ return CR99QoSConversion::EDeprecatedRecord;
+ }
+ else
+ {
+ return CR99QoSConversion::EValidRecord;
+ }
+ }
+
+
+/**
+Set iNext to the next CR99QoSConversion object in the list.
+
+@param aNext handle to CR99QoSConversion object
+*/
+void CR99QoSConversion::SetNext(CR99QoSConversion* aNext)
+ {
+ iNext = aNext;
+ aNext->SetId(iId + 1);
+ }
+
+/**
+Retrieves iNext values
+
+@return iNext handle to next CR99QoSConversion object in the list
+*/
+CR99QoSConversion* CR99QoSConversion::GetNext()
+ {
+ return iNext;
+ }
+
+/**
+Retrieves identification number
+
+@return iId object's identification number
+*/
+TInt CR99QoSConversion::GetId()
+ {
+ return iId;
+ }
+
+/**
+Set object identification number
+
+@param aId identification number
+*/
+void CR99QoSConversion::SetId(TInt aId)
+ {
+ iId = aId;
+ }
+
+/**
+Prints out all R99 values in particular format
+
+@param aFileDumper handle to the object responsible for writing to the output file
+*/
+void CR99QoSConversion::PrintValues(CFileDump* aFileDumper)
+ {
+ TBuf<MAX_BUFFER_LEN> buf;
+ TPtrC column;
+ TPtrC setting;
+
+ ASSERT(aFileDumper);
+
+ aFileDumper->WriteSectionHeader(iId);
+
+ buf.Copy(TPtrC(QOS_UMTS_R99_AND_ON_TABLE));
+ buf.AppendNum(iId);
+ column.Set(TPtrC(COMMDB_NAME));
+ setting.Set(buf);
+ aFileDumper->WriteColumnValue(column, setting);
+
+ PrintLine(aFileDumper, TPtrC(GPRS_QOS_REQ_TRAFFIC_CLASS), iGPRSReqTrafficClass);
+ PrintLine(aFileDumper, TPtrC(GPRS_QOS_MIN_TRAFFIC_CLASS), iGPRSMinTrafficClass);
+ PrintLine(aFileDumper, TPtrC(GPRS_QOS_REQ_DELIVERY_ORDER),iGPRSReqDeliveryOrder);
+ PrintLine(aFileDumper, TPtrC(GPRS_QOS_MIN_DELIVERY_ORDER),iGPRSMinDeliveryOrder);
+ PrintLine(aFileDumper, TPtrC(GPRS_QOS_REQ_DELIVER_ERRONEOUS_SDU),iGPRSReqDeliverErroneousSDU);
+ PrintLine(aFileDumper, TPtrC(GPRS_QOS_MIN_DELIVER_ERRONEOUS_SDU),iGPRSMinDeliverErroneousSDU);
+ PrintLine(aFileDumper, TPtrC(GPRS_QOS_REQ_MAX_SDUSIZE),iGPRSReqMaxSDUSize);
+ PrintLine(aFileDumper, TPtrC(GPRS_QOS_MIN_ACCEPTABLE_MAX_SDU_SIZE),iGPRSMinAcceptableMaxSDUSize);
+ PrintLine(aFileDumper, TPtrC(GPRS_QOS_REQ_MAX_UPLINK_RATE),iGPRSReqMaxUplinkRate);
+ PrintLine(aFileDumper, TPtrC(GPRS_QOS_REQ_MIN_UPLINK_RATE),iGPRSReqMinUplinkRate);
+ PrintLine(aFileDumper, TPtrC(GPRS_QOS_REQ_MAX_DOWNLINK_RATE),iGPRSReqMaxDownlinkRate);
+ PrintLine(aFileDumper, TPtrC(GPRS_QOS_REQ_MIN_DOWNLINK_RATE),iGPRSReqMinDownlinkRate);
+ PrintLine(aFileDumper, TPtrC(GPRS_QOS_REQ_BER),iGPRSReqBER);
+ PrintLine(aFileDumper, TPtrC(GPRS_QOS_MAX_BER),iGPRSMaxBER);
+ PrintLine(aFileDumper, TPtrC(GPRS_QOS_REQ_SDU_ERROR_RATIO),iGPRSReqSDUErrorRatio);
+ PrintLine(aFileDumper, TPtrC(GPRS_QOS_MAX_SDU_ERROR_RATIO),iGPRSMaxSDUErrorRatio);
+ PrintLine(aFileDumper, TPtrC(GPRS_QOS_REQ_TRAFFIC_HANDLING_PRIORITY),iGPRSReqTrafficHandlingPriority);
+ PrintLine(aFileDumper, TPtrC(GPRS_QOS_MIN_TRAFFIC_HANDLING_PRIORITY),iGPRSMinTrafficHandlingPriority);
+ PrintLine(aFileDumper, TPtrC(GPRS_QOS_REQ_TRANSFER_DELAY),iGPRSReqTransferDelay);
+ PrintLine(aFileDumper, TPtrC(GPRS_QOS_MAX_TRANSFER_DELAY),iGPRSMaxTransferDelay);
+ PrintLine(aFileDumper, TPtrC(GPRS_QOS_REQ_GUARANTEED_UPLINK_RATE),iGPRSReqGuaranteedUplinkRate);
+ PrintLine(aFileDumper, TPtrC(GPRS_QOS_MIN_GUARANTEED_UPLINK_RATE),iGPRSMinGuaranteedUplinkRate);
+ PrintLine(aFileDumper, TPtrC(GPRS_QOS_REQ_GUARANTEED_DOWNLINK_RATE),iGPRSReqGuaranteedDownlinkRate);
+ PrintLine(aFileDumper, TPtrC(GPRS_QOS_MIN_GUARANTEED_DOWNLINK_RATE),iGPRSMinGuaranteedDownlinkRate);
+ PrintLine(aFileDumper, TPtrC(GPRS_QOS_SIGNALLING_INDICATION),(iGPRSSignallingIndication == RPacketQoS::EDeliveryOrderRequired)?TPtrC(_S("TRUE")):TPtrC(_S("FALSE")));
+ PrintLine(aFileDumper, TPtrC(GPRS_QOS_IM_CN_SIGNALLING_INDICATOR),(iGPRS_ImCnSignallingIndication == RPacketQoS::EDeliveryOrderRequired)?TPtrC(_S("TRUE")):TPtrC(_S("FALSE")));
+ PrintLine(aFileDumper, TPtrC(GPRS_QOS_SOURCE_STATISTICS_DESCRIPTOR),iGPRSSourceStatisticsDescriptor);
+
+ aFileDumper->WriteFieldCount(27);
+ aFileDumper->WriteSectionFooter(iId);
+ }
+
+/**
+Prints out the line to the output file
+
+@param aFileDumper handle to the object responsible for writing to the output file
+@param aCol name of the column to print out
+@param aSetting intiger column's value to print out
+*/
+void CR99QoSConversion::PrintLine(CFileDump* aFileDumper, TPtrC aCol, TInt aSetting)
+ {
+ TBuf<MAX_BUFFER_LEN> buf;
+ TPtrC column;
+ TPtrC setting;
+
+ column.Set(aCol);
+ buf.Num(aSetting);
+ setting.Set(buf);
+ aFileDumper->WriteColumnValue(column, setting);
+ }
+
+/**
+Prints out all R99 values in particular format
+
+@param aFileDumper handle to the object responsible for writing to the output file
+@param aCol name of the column to print out
+@param aSetting pointer to string to print out as a column's value
+*/
+void CR99QoSConversion::PrintLine(CFileDump* aFileDumper, TPtrC aCol, TPtrC aSetting)
+ {
+ TPtrC column;
+ TPtrC setting;
+ column.Set(aCol);
+ setting.Set(aSetting);
+ aFileDumper->WriteColumnValue(column, setting);
+ }
+
+/**
+Retrieves modification flag
+
+@return iModificationFlag modification flag
+*/
+TBool CR99QoSConversion::GetModificationFlag()
+ {
+ return iModificationFlag;
+ }