satengine/SatServer/Engine/inc/TSatQoSParser.h
changeset 0 ff3b6d0fd310
--- /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