--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/satengine/SatServer/Engine/inc/TSatQoSParser.h Tue Feb 02 01:11:09 2010 +0200
@@ -0,0 +1,134 @@
+/*
+* Copyright (c) 2002-2008 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: Maps QoS classes to correxponding Hex values
+*
+*/
+
+
+#ifndef TSATQOSPARSER_H
+#define TSATQOSPARSER_H
+
+#include <e32std.h>
+#include <etelsat.h>
+#include <etelqos.h>
+
+/**
+ * Parses QoS Classes coming from SIM in open channel to corresponding
+ * values to use with RPacketQoS and vice versa.
+ *
+ * Bearer params are in order:
+ * 0 = Precedence class
+ * 1 = Delay class
+ * 2 = Reliability class
+ * 3 = Peak throughput
+ * 4 = Mean throughput
+ * (5 = protocol)
+ *
+ *
+ * @lib SatEngine.lib
+ * @since 3.0
+ */
+class TSatQoSParser
+ {
+
+public:
+
+ /** Enum for Maximum bit rate */
+ enum TSatMaxBitRate
+ {
+ ESatMaxBitRateUnspecified = 0,
+ ESatMaxBitRate1 = 8,
+ ESatMaxBitRate2 = 16,
+ ESatMaxBitRate3 = 32,
+ ESatMaxBitRate4 = 64,
+ ESatMaxBitRate5 = 128,
+ ESatMaxBitRate6 = 256,
+ ESatMaxBitRate7 = 512,
+ ESatMaxBitRate8 = 1024,
+ ESatMaxBitRate9 = 2048,
+ };
+
+ /** Struct for converting QoS params */
+ struct TQoSRel5
+ {
+ TInt iTrafficClass; // Traffic Class
+ TInt iTrafficHandlingPriority; // Traffic handling priority
+ TInt iSduErrorRatio; // SDU error ratio
+ TInt iResidualBer; // Residual bit error ratio
+ TInt iDeliveryErroneousSdu; // Delivery of Erroneous SDUs
+ TInt iMaxBitRate; // Maximum bitrate
+ TInt iMaximumSDUSize; // Maximum SDU size
+ TInt iDeliveryOrder; // Delivery Order
+ };
+
+// New functions
+
+ /**
+ * Converts requested QoS classes to corresponding Hex values used
+ * by ETel Packet when requesting QoS parameters
+ *
+ * @param aParams Requested QoS classes coming from SIM
+ * @param aResult Output QoS values in RPacketQoS::TQoSGPRSRequested
+ */
+ static void GetRequestedQoSValues(
+ RSat::TBearerParams& aParams,
+ RPacketQoS::TQoSGPRSRequested& aResult);
+
+ /**
+ * Converts negotiated QoS values to corresponding QoS class values used
+ * in OpenChannel terminal response.
+ *
+ * @param aNegParams Negotiated QoS parameters
+ * @param aResult Output QoS class values in RSat::TBearerParams
+ */
+ static void GetNegotiatedQoSValues(
+ const RPacketQoS::TQoSGPRSNegotiated& aNegParams,
+ RSat::TBearerParams& aResult );
+
+ /**
+ * Convert QoS parameters from Rel97/98 format to Rel5 format
+ *
+ * @param aReqParams: Requested QoS parameters in Rel97/98 format
+ * @return QoS paramters in Rel5 format
+ */
+ static TQoSRel5 ConvertQoS(
+ const RPacketQoS::TQoSGPRSRequested& aReqParams );
+
+ /**
+ * Convert QoS parameters from Rel5 format to Rel97/98 format
+ *
+ * @param aNegQoSRel5: Negotiated QoS parameters in Rel5 format
+ * @return Negotiated QoS paramters in Rel97/98 format
+ */
+ static RPacketQoS::TQoSGPRSNegotiated ConvertNegotiatedQoS(
+ const TQoSRel5& aNegQoSRel5 );
+
+private:
+
+// New functions
+
+ /**
+ * Checks is requested index bigger than maximum lenght to prevent
+ * array overflows
+ *
+ * @param aReqIndex Requested index
+ * @param aMaxIndex Last index, Requested cannot be bigger than this
+ * @param Retuns aReqIndex, if it's not bigger that aMaxIndex, else 0
+ */
+ static TInt CheckIndex( TInt aReqIndex, TInt aMaxIndex );
+ };
+
+#endif // TSATQOSPARSER_H
+
+// End of File