adaptationlayer/tsy/nokiatsy_dll/src/cmmpacketqosmesshandler.cpp
changeset 0 63b37f68c1ce
child 5 8ccc39f9d787
equal deleted inserted replaced
-1:000000000000 0:63b37f68c1ce
       
     1 /*
       
     2 * Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of the License "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description: 
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 // INCLUDE FILES
       
    21 #include "cmmpacketqosmesshandler.h"
       
    22 #include "cmmpacketservicemesshandler.h"
       
    23 #include "cmmpacketmesshandlercontextlist.h"
       
    24 #include "cmmmessagerouter.h"
       
    25 #include <gpdsisi.h>
       
    26 #include <tisi.h>
       
    27 #include <pn_const.h>
       
    28 #include "cmmphonetsender.h"
       
    29 #include <pcktcs.h>
       
    30 #include "tsylogger.h"
       
    31 
       
    32 #include "nokiatsy_internal_variation.h"
       
    33 
       
    34 #include <gpds_sharedisi.h>
       
    35 #include <ctsy/pluginapi/cmmdatapackage.h>
       
    36 #include "osttracedefinitions.h"
       
    37 #ifdef OST_TRACE_COMPILER_IN_USE
       
    38 #include "cmmpacketqosmesshandlertraces.h"
       
    39 #endif
       
    40 
       
    41 // EXTERNAL DATA STRUCTURES
       
    42     // None
       
    43 
       
    44 // EXTERNAL FUNCTION PROTOTYPES
       
    45     // None
       
    46 
       
    47 // CONSTANTS
       
    48     // None
       
    49 
       
    50 // MACROS
       
    51     // None
       
    52 
       
    53 // LOCAL CONSTANTS AND MACROS
       
    54     // None
       
    55 
       
    56 // MODULE DATA STRUCTURES
       
    57     // None
       
    58 
       
    59 // LOCAL FUNCTION PROTOTYPES
       
    60     // None
       
    61 
       
    62 // ==================== LOCAL FUNCTIONS =======================================
       
    63 
       
    64     // None
       
    65 
       
    66 // ================= MEMBER FUNCTIONS =========================================
       
    67 
       
    68 // ----------------------------------------------------------------------------
       
    69 // CMmPacketQoSMessHandler::CMmPacketQoSMessHandler
       
    70 // C++ default constructor can NOT contain any code, that
       
    71 // might leave.
       
    72 // ----------------------------------------------------------------------------
       
    73 //
       
    74 CMmPacketQoSMessHandler::CMmPacketQoSMessHandler()
       
    75     {
       
    76     
       
    77     TFLOGSTRING("TSY: CMmPacketQoSMessHandler::C++ constructor");
       
    78 OstTrace0( TRACE_NORMAL, CMMPACKETQOSMESSHANDLER_CMMPACKETQOSMESSHANDLER, "CMmPacketQoSMessHandler::CMmPacketQoSMessHandler" );
       
    79     }
       
    80 
       
    81 // -----------------------------------------------------------------------------
       
    82 // CMmPacketQoSMessHandler::~CMmPacketQoSMessHandler
       
    83 // Destructor, deletes all allocated resources.
       
    84 // -----------------------------------------------------------------------------
       
    85 //
       
    86 CMmPacketQoSMessHandler::~CMmPacketQoSMessHandler()
       
    87     {
       
    88 
       
    89     TFLOGSTRING("TSY: CMmPacketQoSMessHandler::~CMmPacketQoSMessHandler." );
       
    90 OstTrace0( TRACE_NORMAL, DUP1_CMMPACKETQOSMESSHANDLER_CMMPACKETQOSMESSHANDLER, "CMmPacketQoSMessHandler::~CMmPacketQoSMessHandler" );
       
    91 
       
    92     // if for some reasons, pointers haven't been deleted in SetProfileParamtersL
       
    93     // do it here
       
    94     if( iQos.iQoSMinInfo )
       
    95         {
       
    96         delete iQos.iQoSMinInfo;
       
    97         }
       
    98     //no else
       
    99 
       
   100     if( iQos.iQoS99MinInfo )
       
   101         {
       
   102         delete iQos.iQoS99MinInfo;
       
   103         }
       
   104     //no else
       
   105 
       
   106    if( iQos.iQoS99ReqInfo )
       
   107         {
       
   108         delete iQos.iQoS99ReqInfo;
       
   109         }
       
   110     //no else
       
   111 
       
   112     if( iQos.iQoSReqInfo )
       
   113         {
       
   114         delete  iQos.iQoSReqInfo;
       
   115         }
       
   116     //no else
       
   117     }
       
   118 
       
   119 // -----------------------------------------------------------------------------
       
   120 // CMmPacketQoSMessHandler::NewL
       
   121 // Two-phased constructor.
       
   122 // -----------------------------------------------------------------------------
       
   123 //
       
   124 CMmPacketQoSMessHandler* CMmPacketQoSMessHandler::NewL(
       
   125     CMmPhoNetSender* aPhoNetSender,
       
   126     CMmPhoNetReceiver* aPhoNetReceiver,
       
   127     CMmPacketContextMesshandlerList* aMmPacketContextMesshandlerList,
       
   128     CMmMessageRouter* aMessageRouter )
       
   129     {
       
   130 
       
   131     TFLOGSTRING("TSY: CMmPacketQoSMessHandler::NewL.");
       
   132 OstTrace0( TRACE_NORMAL, CMMPACKETQOSMESSHANDLER_NEWL, "CMmPacketQoSMessHandler::NewL" );
       
   133 
       
   134     CMmPacketQoSMessHandler* packetQoSMessHandler =
       
   135         new ( ELeave ) CMmPacketQoSMessHandler();
       
   136 
       
   137     CleanupStack::PushL( packetQoSMessHandler );
       
   138 
       
   139     packetQoSMessHandler->iPhoNetSender =  aPhoNetSender;
       
   140     packetQoSMessHandler->iMmPacketContextMesshandlerList =
       
   141         aMmPacketContextMesshandlerList;
       
   142     packetQoSMessHandler->iMessageRouter = aMessageRouter;
       
   143 
       
   144     packetQoSMessHandler->ConstructL();
       
   145 
       
   146     aPhoNetReceiver->RegisterL(
       
   147         packetQoSMessHandler, PN_GPDS, GPDS_CONTEXT_CONFIGURE_RESP );
       
   148     aPhoNetReceiver->RegisterL(
       
   149         packetQoSMessHandler, PN_GPDS, GPDS_CONTEXT_ACTIVATE_IND );
       
   150     aPhoNetReceiver->RegisterL(
       
   151         packetQoSMessHandler, PN_GPDS, GPDS_CONTEXT_MODIFY_IND );
       
   152 
       
   153     CleanupStack::Pop( packetQoSMessHandler );
       
   154 
       
   155     return packetQoSMessHandler;
       
   156     }
       
   157 
       
   158 // -----------------------------------------------------------------------------
       
   159 // CMmPacketQoSMessHandler::ConstructL
       
   160 // Initialises object attributes.
       
   161 // -----------------------------------------------------------------------------
       
   162 //
       
   163 void CMmPacketQoSMessHandler::ConstructL()
       
   164     {
       
   165 
       
   166     TFLOGSTRING("TSY: CMmPacketQoSMessHandler::ConstructL.");
       
   167 OstTrace0( TRACE_NORMAL, CMMPACKETQOSMESSHANDLER_CONSTRUCTL, "CMmPacketQoSMessHandler::ConstructL" );
       
   168 
       
   169     // Initialise to NULL
       
   170     iQos.iQoSMinInfo = NULL;
       
   171     iQos.iQoSReqInfo = NULL;
       
   172     iQos.iQoS99MinInfo = NULL;
       
   173     iQos.iQoS99ReqInfo = NULL;
       
   174     }
       
   175 
       
   176 // -----------------------------------------------------------------------------
       
   177 // CMmPacketQoSMessHandler::ReceiveMessageL
       
   178 // Entry point for messages received from Domestic OS.
       
   179 // Switches the message to the correct method.
       
   180 // -----------------------------------------------------------------------------
       
   181 //
       
   182 void CMmPacketQoSMessHandler::ReceiveMessageL(
       
   183     const TIsiReceiveC& aIsiMessage )
       
   184     {
       
   185 
       
   186     TFLOGSTRING("TSY: CMmPacketQoSMessHandler::ReceiveMessageL." );
       
   187 OstTrace0( TRACE_NORMAL, CMMPACKETQOSMESSHANDLER_RECEIVEMESSAGEL, "CMmPacketQoSMessHandler::ReceiveMessageL" );
       
   188 
       
   189     TInt resource( aIsiMessage.Get8bit( ISI_HEADER_OFFSET_RESOURCEID ) );
       
   190     TInt messageId( aIsiMessage.Get8bit( ISI_HEADER_OFFSET_MESSAGEID ) );
       
   191 
       
   192     if ( PN_GPDS == resource )
       
   193         {
       
   194         switch ( messageId )
       
   195             {
       
   196             case GPDS_CONTEXT_CONFIGURE_RESP:
       
   197                 {
       
   198                 
       
   199                 TFLOGSTRING("TSY: CMmPacketQoSMessHandler::GpdsContextConfigureResp." );
       
   200 OstTrace0( TRACE_NORMAL, DUP1_CMMPACKETQOSMESSHANDLER_RECEIVEMESSAGEL, "CMmPacketQoSMessHandler::ReceiveMessageL, GpdsContextConfigureResp" );
       
   201                 GpdsContextConfigureResp( aIsiMessage );
       
   202                 break;
       
   203                 }
       
   204             case GPDS_CONTEXT_ACTIVATE_IND:
       
   205                 {
       
   206                 
       
   207                 TFLOGSTRING("TSY: CMmPacketQoSMessHandler::GpdsContextActivateInd." );
       
   208 OstTrace0( TRACE_NORMAL, DUP2_CMMPACKETQOSMESSHANDLER_RECEIVEMESSAGEL, "CMmPacketQoSMessHandler::ReceiveMessageL, GpdsContextActivateInd" );
       
   209                 GpdsContextActivateOrModifyInd( aIsiMessage );
       
   210                 break;
       
   211                 }
       
   212             case GPDS_CONTEXT_MODIFY_IND:
       
   213                 {
       
   214                 
       
   215                 TFLOGSTRING("TSY: CMmPacketQoSMessHandler::GpdsContextModifyInd." );
       
   216 OstTrace0( TRACE_NORMAL, DUP3_CMMPACKETQOSMESSHANDLER_RECEIVEMESSAGEL, "CMmPacketQoSMessHandler::ReceiveMessageL, GpdsContextModifyInd" );
       
   217                 GpdsContextActivateOrModifyInd( aIsiMessage );
       
   218                 break;
       
   219                 }
       
   220             default:
       
   221                 {
       
   222                 
       
   223                 TFLOGSTRING("TSY: CMmPacketQoSMessHandler::ReceiveMessageL. Default case: Do nothing");
       
   224 OstTrace0( TRACE_NORMAL, DUP4_CMMPACKETQOSMESSHANDLER_RECEIVEMESSAGEL, "CMmPacketQoSMessHandler::ReceiveMessageL, Default case: Do nothing" );
       
   225                 break;
       
   226                 }
       
   227             }
       
   228         }
       
   229     // No else
       
   230     }
       
   231 
       
   232 // -----------------------------------------------------------------------------
       
   233 // CMmPacketQoSMessHandler::GpdsContextConfigureReq
       
   234 // Construct a GPDS_CONTEXT_CONFIGURE_REQ ISI-message
       
   235 // -----------------------------------------------------------------------------
       
   236 //
       
   237 TInt CMmPacketQoSMessHandler::GpdsContextConfigureReq(
       
   238     const TUint8 aContextId,
       
   239     const TUint8 aPdpType,
       
   240     const TUint8 aContextType,
       
   241     const TUint8 aPrimaryContextId,
       
   242     const TQoS& aQoS,
       
   243     const TBool aSignallingIndication,
       
   244     const TBool aSourceStatisticsDescriptor ) const
       
   245     {
       
   246    
       
   247     TFLOGSTRING2("TSY: CMmPacketQoSMessHandler::GpdsContextConfigureReq.  \t contextId:%d", aContextId );
       
   248 OstTraceExt1( TRACE_NORMAL, CMMPACKETQOSMESSHANDLER_GPDSCONTEXTCONFIGUREREQ, "CMmPacketQoSMessHandler::GpdsContextConfigureReq;aContextId=%hhu", aContextId );
       
   249 
       
   250     TInt ret( KErrArgument );
       
   251 
       
   252     // Create isi message
       
   253     TIsiSend gpdsContextConfigureReq( iPhoNetSender->SendBufferDes() );
       
   254     gpdsContextConfigureReq.Set8bit( ISI_HEADER_OFFSET_RESOURCEID, PN_GPDS );
       
   255 
       
   256     // Set the Gpds Context Configure Req data
       
   257     gpdsContextConfigureReq.Set8bit(
       
   258         ISI_HEADER_OFFSET_TRANSID, GPDS_CONTEXT_CONFIGURE_REQ );
       
   259     gpdsContextConfigureReq.Set8bit(
       
   260         ISI_HEADER_OFFSET_MESSAGEID, GPDS_CONTEXT_CONFIGURE_REQ );
       
   261     gpdsContextConfigureReq.Set8bit(
       
   262         ISI_HEADER_SIZE + GPDS_CONTEXT_CONFIGURE_REQ_OFFSET_CID,
       
   263         aContextId );
       
   264     gpdsContextConfigureReq.Set8bit(
       
   265         ISI_HEADER_SIZE + GPDS_CONTEXT_CONFIGURE_REQ_OFFSET_PDPTYPE,
       
   266         aPdpType );
       
   267     gpdsContextConfigureReq.Set8bit(
       
   268         ISI_HEADER_SIZE + GPDS_CONTEXT_CONFIGURE_REQ_OFFSET_CONTEXTTYPE,
       
   269         aContextType );
       
   270     gpdsContextConfigureReq.Set8bit(
       
   271         ISI_HEADER_SIZE + GPDS_CONTEXT_CONFIGURE_REQ_OFFSET_PRIMARYCID,
       
   272         aPrimaryContextId );
       
   273     gpdsContextConfigureReq.Set8bit(
       
   274         ISI_HEADER_SIZE + GPDS_CONTEXT_CONFIGURE_REQ_OFFSET_FILLERBYTE1,
       
   275         KGpdsPadding );
       
   276 
       
   277     // Initialize message offset and subblock count
       
   278     TInt currentMsgOffset(
       
   279         ISI_HEADER_SIZE + SIZE_GPDS_CONTEXT_CONFIGURE_REQ );
       
   280     TUint8 numOfSbInMessage( 0 );
       
   281 
       
   282     // These subblocks are to be included valid only in rel5 .
       
   283     if ( TPacketDataConfigBase::KConfigRel5 == aQoS.iExtensionId )
       
   284         {
       
   285         // Add GPDS_SHARED_REL5_QOS_INFO sub block
       
   286         if( aSignallingIndication || aSourceStatisticsDescriptor )
       
   287             {
       
   288             TBuf8<SIZE_GPDS_SHARED_REL5_QOS_INFO> rel5QosInfoBuf;
       
   289             TIsiSubBlock rel5QosInfoSubBlock( 
       
   290                 rel5QosInfoBuf,
       
   291                 GPDS_SHARED_REL5_QOS_INFO, 
       
   292                 EIsiSubBlockTypeId8Len8 );
       
   293 
       
   294             rel5QosInfoBuf.Append( aSourceStatisticsDescriptor );
       
   295             rel5QosInfoBuf.Append( aSignallingIndication );
       
   296             gpdsContextConfigureReq.CopyData(
       
   297                 currentMsgOffset, rel5QosInfoSubBlock.CompleteSubBlock() );
       
   298             // Set new offset and increase subblock count
       
   299             currentMsgOffset =
       
   300                 currentMsgOffset + SIZE_GPDS_SHARED_REL5_QOS_INFO;
       
   301             numOfSbInMessage++;
       
   302             }
       
   303         //no else
       
   304         }
       
   305     //no else
       
   306 
       
   307     if ( TPacketDataConfigBase::KConfigGPRS == aQoS.iExtensionId )
       
   308         {
       
   309         
       
   310         TFLOGSTRING("TSY: CMmPacketQoSMessHandler::GpdsContextConfigureReq.  KConfigGPRS" );
       
   311 OstTrace0( TRACE_NORMAL, DUP1_CMMPACKETQOSMESSHANDLER_GPDSCONTEXTCONFIGUREREQ, "CMmPacketQoSMessHandler::GpdsContextConfigureReq, KConfigGPRS" );
       
   312         // Add GPDS_DNS_ADDRESS_REQ_INFO sub block
       
   313         if( iMmPacketContextMesshandlerList->
       
   314             GetDNSAddressInfoToContextInfo(aContextId) )
       
   315             {
       
   316             
       
   317             TFLOGSTRING("TSY: CMmPacketQoSMessHandler::GpdsContextConfigureReq. DNS Addresses REQUESTED" );
       
   318 
       
   319             TBuf8<SIZE_GPDS_DNS_ADDRESS_REQ_INFO> dnsAddrInfoBuf;
       
   320             TIsiSubBlock dnsAddrInfoSubBlock( 
       
   321                 dnsAddrInfoBuf,
       
   322                 GPDS_DNS_ADDRESS_REQ_INFO, 
       
   323                 EIsiSubBlockTypeId8Len8 );
       
   324 
       
   325             dnsAddrInfoBuf.Append( KGpdsPadding );
       
   326             dnsAddrInfoBuf.Append( KGpdsPadding );
       
   327             gpdsContextConfigureReq.CopyData(
       
   328                 currentMsgOffset, dnsAddrInfoSubBlock.CompleteSubBlock() );
       
   329             // Set new offset and increase subblock count
       
   330             currentMsgOffset =
       
   331                 currentMsgOffset + SIZE_GPDS_DNS_ADDRESS_REQ_INFO;
       
   332             numOfSbInMessage++;
       
   333             }
       
   334         //no else
       
   335 
       
   336         // add GPDS_SHARED_PCSCF_ADDRESS_REQ_INFO sub block
       
   337         // An OPTIONAL sub block of Configure Req
       
   338         if( iMmPacketContextMesshandlerList->
       
   339             GetPCSCFAddressInfoToContextInfo( aContextId ) )
       
   340 			{
       
   341 			
       
   342             TFLOGSTRING("TSY: CMmPacketContextMessHandler::GpdsContextConfigureReq. PCSCF Addresses Requested");
       
   343 
       
   344 			TBuf8<SIZE_GPDS_SHARED_PCSCF_ADDRESS_REQ_INFO> tempPscfAddrInfo;
       
   345 	        TIsiSubBlock reqInfoSubBlock( 
       
   346 	            tempPscfAddrInfo,
       
   347 	            GPDS_SHARED_PCSCF_ADDRESS_REQ_INFO, 
       
   348 	            EIsiSubBlockTypeId8Len8 );
       
   349 
       
   350 			tempPscfAddrInfo.Append( KGpdsPadding );
       
   351 			tempPscfAddrInfo.Append( KGpdsPadding );
       
   352 	        gpdsContextConfigureReq.CopyData(
       
   353 	            currentMsgOffset, reqInfoSubBlock.CompleteSubBlock() );
       
   354 	        // Set new offset and increase subblock count
       
   355 	        currentMsgOffset =
       
   356 	            currentMsgOffset + SIZE_GPDS_SHARED_PCSCF_ADDRESS_REQ_INFO;
       
   357 			numOfSbInMessage++;
       
   358 			}
       
   359 	    // no else
       
   360 
       
   361         // Add GPDS_QOS_REQ_INFO sub block
       
   362         TBuf8<SIZE_GPDS_QOS_REQ_INFO> qosReqInfoBuf;
       
   363         TIsiSubBlock qosReqInfoSubBlock( 
       
   364             qosReqInfoBuf,
       
   365             GPDS_QOS_REQ_INFO, 
       
   366             EIsiSubBlockTypeId8Len8 );
       
   367 
       
   368         qosReqInfoBuf.Append( aQoS.iQoSReqInfo->iPrecedence );
       
   369         qosReqInfoBuf.Append( aQoS.iQoSReqInfo->iDelay );
       
   370         qosReqInfoBuf.Append( aQoS.iQoSReqInfo->iReliability );
       
   371         qosReqInfoBuf.Append( aQoS.iQoSReqInfo->iPeakThroughput );
       
   372         qosReqInfoBuf.Append( aQoS.iQoSReqInfo->iMeanThroughput );
       
   373         qosReqInfoBuf.Append( KGpdsPadding );
       
   374         gpdsContextConfigureReq.CopyData(
       
   375             currentMsgOffset, qosReqInfoSubBlock.CompleteSubBlock() );
       
   376         // Set new offset and increase subblock count
       
   377         currentMsgOffset =
       
   378             currentMsgOffset + SIZE_GPDS_QOS_REQ_INFO;
       
   379         numOfSbInMessage++;
       
   380 
       
   381         // Add GPDS_QOS_MIN_INFO sub block
       
   382         TBuf8<SIZE_GPDS_QOS_MIN_INFO> qosMinInfoBuf;
       
   383         TIsiSubBlock qosMinInfoSubBlock( 
       
   384             qosMinInfoBuf,
       
   385             GPDS_QOS_MIN_INFO, 
       
   386             EIsiSubBlockTypeId8Len8 );
       
   387 
       
   388         qosMinInfoBuf.Append( aQoS.iQoSMinInfo->iPrecedence );
       
   389         qosMinInfoBuf.Append( aQoS.iQoSMinInfo->iDelay );
       
   390         qosMinInfoBuf.Append( aQoS.iQoSMinInfo->iReliability );
       
   391         qosMinInfoBuf.Append( aQoS.iQoSMinInfo->iPeakThroughput );
       
   392         qosMinInfoBuf.Append( aQoS.iQoSMinInfo->iMeanThroughput );
       
   393         qosMinInfoBuf.Append( KGpdsPadding );
       
   394         gpdsContextConfigureReq.CopyData(
       
   395             currentMsgOffset, qosMinInfoSubBlock.CompleteSubBlock() );
       
   396         // Set new offset and increase subblock count
       
   397         currentMsgOffset =
       
   398             currentMsgOffset + SIZE_GPDS_QOS_MIN_INFO;
       
   399         numOfSbInMessage++;
       
   400         }
       
   401         
       
   402     else if ( TPacketDataConfigBase::KConfigRel99Rel4 == aQoS.iExtensionId
       
   403         || TPacketDataConfigBase::KConfigRel5 == aQoS.iExtensionId )
       
   404         {
       
   405         
       
   406         TFLOGSTRING("TSY: CMmPacketQoSMessHandler::GpdsContextConfigureReq.  KConfigRel99Rel4" );
       
   407 OstTrace0( TRACE_NORMAL, DUP4_CMMPACKETQOSMESSHANDLER_GPDSCONTEXTCONFIGUREREQ, "CMmPacketQoSMessHandler::GpdsContextConfigureReq, KConfigRel99Rel4" );
       
   408 
       
   409         // Add GPDS_DNS_ADDRESS_REQ_INFO sub block
       
   410         if( iMmPacketContextMesshandlerList->GetDNSAddressInfoToContextInfo(aContextId) )
       
   411             {
       
   412             
       
   413             TFLOGSTRING("TSY: CMmPacketQoSMessHandler::GpdsContextConfigureReq.  DNS Addresses REQUESTED" );
       
   414 OstTrace0( TRACE_NORMAL, DUP5_CMMPACKETQOSMESSHANDLER_GPDSCONTEXTCONFIGUREREQ, "CMmPacketQoSMessHandler::GpdsContextConfigureReq, DNS Addresses REQUESTED" );
       
   415             TBuf8<SIZE_GPDS_DNS_ADDRESS_REQ_INFO> dnsAddrInfoBuf;
       
   416             TIsiSubBlock dnsAddrInfoSubBlock( 
       
   417                 dnsAddrInfoBuf,
       
   418                 GPDS_DNS_ADDRESS_REQ_INFO, 
       
   419                 EIsiSubBlockTypeId8Len8 );
       
   420 
       
   421             dnsAddrInfoBuf.Append( KGpdsPadding );
       
   422             dnsAddrInfoBuf.Append( KGpdsPadding );
       
   423             gpdsContextConfigureReq.CopyData(
       
   424                 currentMsgOffset, dnsAddrInfoSubBlock.CompleteSubBlock() );
       
   425             // Set new offset and increase subblock count
       
   426             currentMsgOffset =
       
   427                 currentMsgOffset + SIZE_GPDS_DNS_ADDRESS_REQ_INFO;
       
   428             numOfSbInMessage++;
       
   429             }
       
   430         //no else
       
   431 
       
   432         // add GPDS_SHARED_PCSCF_ADDRESS_REQ_INFO sub block
       
   433         // An OPTIONAL sub block of Configure Req
       
   434         if( iMmPacketContextMesshandlerList->
       
   435             GetPCSCFAddressInfoToContextInfo( aContextId ) )
       
   436 			{
       
   437 			
       
   438             TFLOGSTRING("TSY: CMmPacketContextMessHandler::GpdsContextConfigureReq. PCSCF Addresses Requested");
       
   439 OstTrace0( TRACE_NORMAL, DUP6_CMMPACKETQOSMESSHANDLER_GPDSCONTEXTCONFIGUREREQ, "CMmPacketQoSMessHandler::GpdsContextConfigureReq, PCSCF Addresses Requested" );
       
   440 
       
   441 			TBuf8<SIZE_GPDS_SHARED_PCSCF_ADDRESS_REQ_INFO> tempPscfAddrInfo;
       
   442 	        TIsiSubBlock reqInfoSubBlock( 
       
   443 	            tempPscfAddrInfo,
       
   444 	            GPDS_SHARED_PCSCF_ADDRESS_REQ_INFO, 
       
   445 	            EIsiSubBlockTypeId8Len8 );
       
   446 
       
   447 			tempPscfAddrInfo.Append( KGpdsPadding );
       
   448 			tempPscfAddrInfo.Append( KGpdsPadding );
       
   449 	        gpdsContextConfigureReq.CopyData(
       
   450 	            currentMsgOffset, reqInfoSubBlock.CompleteSubBlock() );
       
   451 	        // Set new offset and increase subblock count
       
   452 	        currentMsgOffset =
       
   453 	            currentMsgOffset + SIZE_GPDS_SHARED_PCSCF_ADDRESS_REQ_INFO;
       
   454 			numOfSbInMessage++;
       
   455 			}
       
   456 	    // no else
       
   457 
       
   458         // Add GPDS_QOS99_REQ_INFO sub block
       
   459         TBuf8<SIZE_GPDS_QOS99_REQ_INFO> qos99ReqInfoBuf;
       
   460         TIsiSubBlock qos99ReqInfoSubBlock( 
       
   461             qos99ReqInfoBuf,
       
   462             GPDS_QOS99_REQ_INFO, 
       
   463             EIsiSubBlockTypeId8Len8 );
       
   464 
       
   465         qos99ReqInfoBuf.Append( aQoS.iQoS99ReqInfo->iTrafficClass );
       
   466         qos99ReqInfoBuf.Append( aQoS.iQoS99ReqInfo->iDeliveryOrderReqd );
       
   467         qos99ReqInfoBuf.Append( aQoS.iQoS99ReqInfo->iDeliverErroneousSDU );
       
   468         qos99ReqInfoBuf.Append( aQoS.iQoS99ReqInfo->iBER );
       
   469         qos99ReqInfoBuf.Append( aQoS.iQoS99ReqInfo->iSDUErrorRatio );
       
   470         qos99ReqInfoBuf.Append( aQoS.iQoS99ReqInfo->iTrafficHandlingPriority );
       
   471 
       
   472         qos99ReqInfoBuf.Append( static_cast<TUint8>(
       
   473             aQoS.iQoS99ReqInfo->iTransferDelay >> KShift8Bits ) );
       
   474         qos99ReqInfoBuf.Append( static_cast<TUint8>(
       
   475             aQoS.iQoS99ReqInfo->iTransferDelay ) );
       
   476 
       
   477         qos99ReqInfoBuf.Append( static_cast<TUint8>(
       
   478             aQoS.iQoS99ReqInfo->iMaxSDUSize >> KShift8Bits ) );
       
   479         qos99ReqInfoBuf.Append( static_cast<TUint8>(
       
   480             aQoS.iQoS99ReqInfo->iMaxSDUSize ) );
       
   481 
       
   482         qos99ReqInfoBuf.Append( static_cast<TUint8>(
       
   483             aQoS.iQoS99ReqInfo->iMaxUplinkRate >> KShift8Bits ) );
       
   484         qos99ReqInfoBuf.Append( static_cast<TUint8>(
       
   485             aQoS.iQoS99ReqInfo->iMaxUplinkRate ) );
       
   486 
       
   487         qos99ReqInfoBuf.Append( static_cast<TUint8>(
       
   488             aQoS.iQoS99ReqInfo->iMaxDownlinkRate >> KShift8Bits ) );
       
   489         qos99ReqInfoBuf.Append( static_cast<TUint8>(
       
   490             aQoS.iQoS99ReqInfo->iMaxDownlinkRate ) );
       
   491 
       
   492         qos99ReqInfoBuf.Append( static_cast<TUint8>(
       
   493             aQoS.iQoS99ReqInfo->iGuaranteedUplinkRate >> KShift8Bits ) );
       
   494         qos99ReqInfoBuf.Append( static_cast<TUint8>(
       
   495             aQoS.iQoS99ReqInfo->iGuaranteedUplinkRate ) );
       
   496 
       
   497         qos99ReqInfoBuf.Append( static_cast<TUint8>(
       
   498             aQoS.iQoS99ReqInfo->iGuaranteedDownlinkRate >> KShift8Bits ) );
       
   499         qos99ReqInfoBuf.Append( static_cast<TUint8>(
       
   500             aQoS.iQoS99ReqInfo->iGuaranteedDownlinkRate ) );
       
   501 
       
   502         gpdsContextConfigureReq.CopyData(
       
   503             currentMsgOffset, qos99ReqInfoSubBlock.CompleteSubBlock() );
       
   504         // Set new offset and increase subblock count
       
   505         currentMsgOffset =
       
   506             currentMsgOffset + SIZE_GPDS_QOS99_REQ_INFO;
       
   507         numOfSbInMessage++;
       
   508 
       
   509         // Add GPDS_QOS99_MIN_INFO sub block
       
   510         TBuf8<SIZE_GPDS_QOS99_MIN_INFO> qos99MinInfoBuf;
       
   511         TIsiSubBlock qos99MinInfoSubBlock( 
       
   512             qos99MinInfoBuf,
       
   513             GPDS_QOS99_MIN_INFO, 
       
   514             EIsiSubBlockTypeId8Len8 );
       
   515             
       
   516         qos99MinInfoBuf.Append( aQoS.iQoS99MinInfo->iTrafficClass );
       
   517         qos99MinInfoBuf.Append( aQoS.iQoS99MinInfo->iDeliveryOrderReqd );
       
   518         qos99MinInfoBuf.Append( aQoS.iQoS99MinInfo->iDeliverErroneousSDU );
       
   519         qos99MinInfoBuf.Append( aQoS.iQoS99MinInfo->iBER );
       
   520         qos99MinInfoBuf.Append( aQoS.iQoS99MinInfo->iSDUErrorRatio );
       
   521         qos99MinInfoBuf.Append( aQoS.iQoS99MinInfo->iTrafficHandlingPriority );
       
   522 
       
   523         qos99MinInfoBuf.Append( static_cast<TUint8>(
       
   524             aQoS.iQoS99MinInfo->iTransferDelay >> KShift8Bits ) );
       
   525         qos99MinInfoBuf.Append( static_cast<TUint8>(
       
   526             aQoS.iQoS99MinInfo->iTransferDelay ) );
       
   527 
       
   528         qos99MinInfoBuf.Append( static_cast<TUint8>(
       
   529             aQoS.iQoS99MinInfo->iMaxSDUSize >> KShift8Bits ) );
       
   530         qos99MinInfoBuf.Append( static_cast<TUint8>(
       
   531             aQoS.iQoS99MinInfo->iMaxSDUSize ) );
       
   532 
       
   533         qos99MinInfoBuf.Append( static_cast<TUint8>(
       
   534             aQoS.iQoS99MinInfo->iMaxUplinkRate >> KShift8Bits ) );
       
   535         qos99MinInfoBuf.Append( static_cast<TUint8>(
       
   536             aQoS.iQoS99MinInfo->iMaxUplinkRate ) );
       
   537 
       
   538         qos99MinInfoBuf.Append( static_cast<TUint8>(
       
   539             aQoS.iQoS99MinInfo->iMaxDownlinkRate >> KShift8Bits ) );
       
   540         qos99MinInfoBuf.Append( static_cast<TUint8>(
       
   541             aQoS.iQoS99MinInfo->iMaxDownlinkRate ) );
       
   542 
       
   543         qos99MinInfoBuf.Append( static_cast<TUint8>(
       
   544             aQoS.iQoS99MinInfo->iGuaranteedUplinkRate >> KShift8Bits ) );
       
   545         qos99MinInfoBuf.Append( static_cast<TUint8>(
       
   546             aQoS.iQoS99MinInfo->iGuaranteedUplinkRate ) );
       
   547 
       
   548         qos99MinInfoBuf.Append( static_cast<TUint8>(
       
   549             aQoS.iQoS99MinInfo->iGuaranteedDownlinkRate >> KShift8Bits ) );
       
   550         qos99MinInfoBuf.Append( static_cast<TUint8>(
       
   551             aQoS.iQoS99MinInfo->iGuaranteedDownlinkRate ) );
       
   552 
       
   553         gpdsContextConfigureReq.CopyData(
       
   554             currentMsgOffset, qos99MinInfoSubBlock.CompleteSubBlock() );
       
   555         // Set new offset and increase subblock count
       
   556         currentMsgOffset =
       
   557             currentMsgOffset + SIZE_GPDS_QOS99_MIN_INFO;
       
   558         numOfSbInMessage++;
       
   559         }
       
   560     //no else
       
   561 
       
   562     // Add GPDS_SHARED_RADIO_ACTIVITY_REQ_INFO sub block
       
   563     TBuf8< SIZE_GPDS_SHARED_RADIO_ACTIVITY_REQ_INFO > radioActivity;
       
   564     TIsiSubBlock radioActivitySubBlock( 
       
   565         radioActivity,
       
   566         GPDS_SHARED_RADIO_ACTIVITY_REQ_INFO, 
       
   567         EIsiSubBlockTypeId8Len8 );
       
   568         
       
   569     // contains no parameters
       
   570     radioActivity.Append( KGpdsPadding );
       
   571     radioActivity.Append( KGpdsPadding );
       
   572     gpdsContextConfigureReq.CopyData(
       
   573         currentMsgOffset, radioActivitySubBlock.CompleteSubBlock() );
       
   574     // Set new offset and increase subblock count
       
   575     currentMsgOffset = 
       
   576         currentMsgOffset + SIZE_GPDS_SHARED_RADIO_ACTIVITY_REQ_INFO;
       
   577         numOfSbInMessage++;
       
   578 
       
   579     if ( TPacketDataConfigBase::KConfigGPRS == aQoS.iExtensionId ||
       
   580          TPacketDataConfigBase::KConfigRel99Rel4 == aQoS.iExtensionId ||
       
   581          TPacketDataConfigBase::KConfigRel5 == aQoS.iExtensionId )
       
   582         {
       
   583         // Set number of subblocs in GPDS_CONTEXT_CONFIGURE_REQ message
       
   584         gpdsContextConfigureReq.Set8bit(
       
   585             ISI_HEADER_SIZE + 
       
   586             GPDS_CONTEXT_CONFIGURE_REQ_OFFSET_NUMBEROFSUBBLOCKS,
       
   587             numOfSbInMessage );
       
   588 
       
   589         // Send GPDS_CONTEXT_CONFIGURE_REQ message
       
   590         ret = iPhoNetSender->Send( gpdsContextConfigureReq.Complete() );
       
   591         }
       
   592     //no else
       
   593 
       
   594     return ret;
       
   595     }
       
   596 
       
   597 // -----------------------------------------------------------------------------
       
   598 // CMmPacketQoSMessHandler::GpdsContextActivateOrModifyInd
       
   599 // Breaks a GPDS_CONTEXT_ACTIVATE_IND and GPDS_CONTEXT_MODIFY_IND
       
   600 // -----------------------------------------------------------------------------
       
   601 //
       
   602 void CMmPacketQoSMessHandler::GpdsContextActivateOrModifyInd(
       
   603     const TIsiReceiveC& aIsiMessage )
       
   604     {
       
   605     
       
   606     TFLOGSTRING("TSY: CMmPacketQoSMessHandler::GpdsContextActivateOrModifyInd." );
       
   607 OstTrace0( TRACE_NORMAL, CMMPACKETQOSMESSHANDLER_GPDSCONTEXTACTIVATEORMODIFYIND, "CMmPacketQoSMessHandler::GpdsContextActivateOrModifyInd" );
       
   608 
       
   609     TUint8 messageId( aIsiMessage.Get8bit( ISI_HEADER_OFFSET_MESSAGEID ) );
       
   610 
       
   611     TUint8 subBlockDataOffset( 0 );
       
   612 
       
   613     // Get context identifier
       
   614     TUint8 contextId( GPDS_CID_VOID );
       
   615 
       
   616     if ( GPDS_CONTEXT_ACTIVATE_IND == messageId )
       
   617         {
       
   618         contextId = aIsiMessage.Get8bit(
       
   619             ISI_HEADER_SIZE + GPDS_CONTEXT_ACTIVATE_IND_OFFSET_CID );
       
   620 
       
   621         subBlockDataOffset = ISI_HEADER_SIZE + SIZE_GPDS_CONTEXT_ACTIVATE_IND;
       
   622         }
       
   623     else
       
   624         {
       
   625         contextId = aIsiMessage.Get8bit(
       
   626             ISI_HEADER_SIZE + GPDS_CONTEXT_MODIFY_IND_OFFSET_CID );
       
   627 
       
   628         subBlockDataOffset = ISI_HEADER_SIZE + SIZE_GPDS_CONTEXT_MODIFY_IND;
       
   629         }
       
   630 
       
   631     TFLOGSTRING2("TSY: CMmPacketQoSMessHandler::GpdsContextActivateOrModifyInd.  \t ContextId:%d", contextId );
       
   632 OstTraceExt1( TRACE_NORMAL, DUP1_CMMPACKETQOSMESSHANDLER_GPDSCONTEXTACTIVATEORMODIFYIND, "CMmPacketQoSMessHandler::GpdsContextActivateOrModifyInd;contextId=%hhu", contextId );
       
   633 
       
   634     TUint sbStartOffSet( 0 );
       
   635 
       
   636     TInfoName contextName;
       
   637 
       
   638     // Get context list and find the correct context and qos
       
   639     TInt ret = iMmPacketContextMesshandlerList->
       
   640         GetContextNameByContextId( contextId, contextName );
       
   641 
       
   642     // if context is defined
       
   643     if ( KErrNone == ret )
       
   644         {
       
   645         TQoSInfo qoSNegotiated;
       
   646         TQoS99Info qoS99Negotiated;
       
   647         TBool qoSNegValid( EFalse );
       
   648         TBool qoS99NegValid( EFalse );
       
   649 
       
   650         // Set pointer subBlock to GPDS_QOS_NEG_INFO subblock
       
   651         ret = aIsiMessage.FindSubBlockOffsetById(
       
   652             subBlockDataOffset,
       
   653             GPDS_QOS_NEG_INFO,
       
   654             EIsiSubBlockTypeId8Len8,
       
   655             sbStartOffSet );
       
   656 
       
   657             // Get QoS params from sublock if R97/98 parameters are in use
       
   658             if ( KErrNone == ret )
       
   659                 {
       
   660                 qoSNegotiated.iPrecedence = aIsiMessage.Get8bit(
       
   661                     sbStartOffSet + GPDS_QOS_NEG_INFO_OFFSET_PRECEDENCE );
       
   662 
       
   663                 qoSNegotiated.iDelay = aIsiMessage.Get8bit(
       
   664                     sbStartOffSet + GPDS_QOS_NEG_INFO_OFFSET_DELAY );
       
   665 
       
   666                 qoSNegotiated.iReliability = aIsiMessage.Get8bit(
       
   667                     sbStartOffSet + GPDS_QOS_NEG_INFO_OFFSET_RELIABILITY );
       
   668 
       
   669                 qoSNegotiated.iPeakThroughput = aIsiMessage.Get8bit(
       
   670                     sbStartOffSet + GPDS_QOS_NEG_INFO_OFFSET_PEAKTHROUGHPUT );
       
   671 
       
   672                 qoSNegotiated.iMeanThroughput = aIsiMessage.Get8bit(
       
   673                     sbStartOffSet + GPDS_QOS_NEG_INFO_OFFSET_MEANTHROUGHPUT );
       
   674 
       
   675                 qoSNegValid = ETrue;
       
   676                 }
       
   677             //no else
       
   678 
       
   679             // Set pointer subBlock to GPDS_QOS99_NEG_INFO subblock
       
   680             ret = aIsiMessage.FindSubBlockOffsetById(
       
   681                 subBlockDataOffset,
       
   682                 GPDS_QOS99_NEG_INFO,
       
   683                 EIsiSubBlockTypeId8Len8,
       
   684                 sbStartOffSet );
       
   685 
       
   686             // Get QoS parameters from sublock if R99 parameters are in use
       
   687             if ( KErrNone == ret )
       
   688                 {
       
   689                 qoS99Negotiated.iTrafficClass = aIsiMessage.Get8bit(
       
   690                     sbStartOffSet + GPDS_QOS99_NEG_INFO_OFFSET_TRAFFICCLASS );
       
   691 
       
   692                 qoS99Negotiated.iDeliveryOrderReqd = aIsiMessage.Get8bit(
       
   693                     sbStartOffSet + GPDS_QOS99_NEG_INFO_OFFSET_DELIVERYORDER );
       
   694 
       
   695                 qoS99Negotiated.iDeliverErroneousSDU = aIsiMessage.Get8bit(
       
   696                     sbStartOffSet + GPDS_QOS99_NEG_INFO_OFFSET_DELIVERYOFERRONEUSSDU );
       
   697 
       
   698                 qoS99Negotiated.iBER = aIsiMessage.Get8bit(
       
   699                     sbStartOffSet + GPDS_QOS99_NEG_INFO_OFFSET_RESIDUALBER );
       
   700 
       
   701                 qoS99Negotiated.iSDUErrorRatio = aIsiMessage.Get8bit(
       
   702                     sbStartOffSet + GPDS_QOS99_NEG_INFO_OFFSET_ERRORRATIO );
       
   703 
       
   704                 qoS99Negotiated.iTrafficHandlingPriority = aIsiMessage.Get8bit(
       
   705                     sbStartOffSet + GPDS_QOS99_NEG_INFO_OFFSET_PRIORITY );
       
   706 
       
   707                 qoS99Negotiated.iTransferDelay = aIsiMessage.Get16bit(
       
   708                     sbStartOffSet + GPDS_QOS99_NEG_INFO_OFFSET_TRANSFERDELAY );
       
   709 
       
   710                 qoS99Negotiated.iMaxSDUSize = aIsiMessage.Get16bit(
       
   711                     sbStartOffSet + GPDS_QOS99_NEG_INFO_OFFSET_MAXSDUSIZE );
       
   712 
       
   713                 qoS99Negotiated.iMaxUplinkRate = aIsiMessage.Get16bit(
       
   714                     sbStartOffSet + GPDS_QOS99_NEG_INFO_OFFSET_MAXBITRATEUPLINK );
       
   715 
       
   716                 qoS99Negotiated.iMaxDownlinkRate = aIsiMessage.Get16bit(
       
   717                     sbStartOffSet + GPDS_QOS99_NEG_INFO_OFFSET_MAXBITRATEDOWNLINK );
       
   718 
       
   719                 qoS99Negotiated.iGuaranteedUplinkRate = aIsiMessage.Get16bit(
       
   720                     sbStartOffSet + GPDS_QOS99_NEG_INFO_OFFSET_GUABITRATEUPLINK );
       
   721 
       
   722                 // if CASW_INITIAL_DCH_RATE flag is on and GPDS_SHARED_INITIAL_DL_DCH_RATE subblock
       
   723                 // exists, GPDS_QOS99_NEG_INFO_OFFSET_GUABITRATEDOWNLINK subblock will be overwritten
       
   724                 // with GPDS_SHARED_INITIAL_DL_DCH_RATE_OFFSET_MAXBITRATEDOWNLINK subblock
       
   725                 qoS99Negotiated.iGuaranteedDownlinkRate = aIsiMessage.Get16bit(
       
   726                     sbStartOffSet + GPDS_QOS99_NEG_INFO_OFFSET_GUABITRATEDOWNLINK );
       
   727 
       
   728 // INTERNAL_TESTING_CASW_INITIAL_DCH_RATE is only for winscw usage
       
   729 #if defined ( CASW_INITIAL_DCH_RATE ) || defined ( INTERNAL_TESTING_CASW_INITIAL_DCH_RATE )
       
   730 				// ------------------------------------------------------------------------
       
   731 				// This NCP Feature flag ( CASW_INITIAL_DCH_RATE ) is Hutchinson specific flag
       
   732 				// and need to be set OFF as default. The feature is BINARY VARIATED.
       
   733 				// Initial DCH Rate is needed in the Streaming Application during
       
   734 				// stream negotiation with server.
       
   735 				// Set pointer subblock to GPDS_SHARED_INITIAL_DL_DCH_RATE (0xFC) subblock
       
   736 
       
   737                 TFLOGSTRING("TSY: CMmPacketQoSMessHandler::GpdsContextActivateOrModifyInd. Flag CASW_INITIAL_DCH_RATE is defined" );
       
   738 OstTrace0( TRACE_NORMAL, DUP2_CMMPACKETQOSMESSHANDLER_GPDSCONTEXTACTIVATEORMODIFYIND, "CMmPacketQoSMessHandler::GpdsContextActivateOrModifyInd, Flag CASW_INITIAL_DCH_RATE is defined" );
       
   739 
       
   740                 ret = aIsiMessage.FindSubBlockOffsetById(
       
   741 	               subBlockDataOffset,
       
   742 	               GPDS_SHARED_INITIAL_DL_DCH_RATE,
       
   743 	               EIsiSubBlockTypeId8Len8,
       
   744 	               sbStartOffSet );
       
   745 
       
   746 	            if ( KErrNone == ret )
       
   747 		            {
       
   748 		            // Get initial DCH parameters from subblock if CASW_INITIAL_DCH_RATE is defined
       
   749 					qoS99Negotiated.iGuaranteedDownlinkRate = aIsiMessage.Get16bit(
       
   750                         sbStartOffSet + GPDS_SHARED_INITIAL_DL_DCH_RATE_OFFSET_MAXBITRATEDOWNLINK );
       
   751                         
       
   752                     TFLOGSTRING("TSY: CMmPacketQoSMessHandler::GpdsContextActivateOrModifyInd. Sub block GPDS_SHARED_INITIAL_DL_DCH_RATE exists." );
       
   753 OstTrace0( TRACE_NORMAL, DUP3_CMMPACKETQOSMESSHANDLER_GPDSCONTEXTACTIVATEORMODIFYIND, "CMmPacketQoSMessHandler::GpdsContextActivateOrModifyInd, Sub block GPDS_SHARED_INITIAL_DL_DCH_RATE exists" );
       
   754                     TFLOGSTRING2("TSY: CMmPacketQoSMessHandler::GpdsContextActivateOrModifyInd. qoS99Negotiated.iGuaranteedDownlinkRate = %d", qoS99Negotiated.iGuaranteedDownlinkRate );
       
   755 OstTraceExt1( TRACE_NORMAL, DUP4_CMMPACKETQOSMESSHANDLER_GPDSCONTEXTACTIVATEORMODIFYIND, "CMmPacketQoSMessHandler::GpdsContextActivateOrModifyInd;qoS99Negotiated.iGuaranteedDownlinkRate=%hhu", qoS99Negotiated.iGuaranteedDownlinkRate );
       
   756 		            }
       
   757 
       
   758 #endif // defined ( CASW_INITIAL_DCH_RATE ) || defined ( INTERNAL_CASW_INITIAL_DCH_RATE )
       
   759 				// ------------------------------------------------------------------------
       
   760 
       
   761                 qoS99NegValid = ETrue;
       
   762                 }
       
   763             //no else
       
   764 
       
   765             ret = aIsiMessage.FindSubBlockOffsetById(
       
   766                 subBlockDataOffset,
       
   767                 GPDS_SHARED_REL5_QOS_INFO,
       
   768                 EIsiSubBlockTypeId8Len8,
       
   769                 sbStartOffSet );
       
   770 
       
   771             qoS99Negotiated.iSignallingIndication= 0x00;
       
   772             qoS99Negotiated.iSourceStatisticsDescriptor =
       
   773                 RPacketQoS::ESourceStatisticsDescriptorUnknown;
       
   774 
       
   775             if( KErrNone == ret )
       
   776                 {
       
   777                 qoS99Negotiated.iSignallingIndication = aIsiMessage.Get8bit(
       
   778                     sbStartOffSet + GPDS_SHARED_REL5_QOS_INFO_OFFSET_SIGINDFLAG );
       
   779 
       
   780                 qoS99Negotiated.iSourceStatisticsDescriptor = aIsiMessage.Get8bit(
       
   781                     sbStartOffSet + GPDS_SHARED_REL5_QOS_INFO_OFFSET_SRCSTATDESC );
       
   782                 }
       
   783             //no else
       
   784 
       
   785             // Complete the ind
       
   786             CompleteNotifyProfileChanged( 
       
   787                 &qoSNegotiated, 
       
   788                 &qoS99Negotiated,
       
   789                 qoSNegValid, 
       
   790                 qoS99NegValid, 
       
   791                 contextId);
       
   792         }
       
   793     //no else
       
   794     }
       
   795 
       
   796 // -----------------------------------------------------------------------------
       
   797 // CMmPacketQoSMessHandler::GpdsContextConfigureResp
       
   798 // Breaks a GPDS_CONTEXT_CONFIGURE_RESP ISI-message
       
   799 // -----------------------------------------------------------------------------
       
   800 //
       
   801 void CMmPacketQoSMessHandler::GpdsContextConfigureResp(
       
   802     const TIsiReceiveC& aIsiMessage )
       
   803     {
       
   804     // Boolean used for checking that this is response for GpdsContextConfigureReq
       
   805     TBool called( EFalse );
       
   806 
       
   807     // Create GPDS_CONTEXT_CONFIGURE_RESP
       
   808 
       
   809     TUint8 contextId( aIsiMessage.Get8bit(
       
   810         ISI_HEADER_SIZE + GPDS_CONTEXT_CONFIGURE_RESP_OFFSET_CID ));
       
   811 
       
   812     TUint8 transId( aIsiMessage.Get8bit(
       
   813         ISI_HEADER_OFFSET_TRANSID ));
       
   814 
       
   815     TFLOGSTRING3("TSY: CMmPacketQoSMessHandler::GpdsContextConfigureResp.\t contextId: %d, transId: %d", contextId, transId );
       
   816 OstTraceExt2( TRACE_NORMAL, CMMPACKETQOSMESSHANDLER_GPDSCONTEXTCONFIGURERESP, "CMmPacketQoSMessHandler::GpdsContextConfigureResp;contextId=%hhu;transId=%hhu", contextId, transId );
       
   817 
       
   818     if ( GPDS_CONTEXT_CONFIGURE_REQ == transId )
       
   819         {
       
   820         called = ETrue;
       
   821         }
       
   822 
       
   823     if ( called )
       
   824         {
       
   825 
       
   826         TUint8 status( aIsiMessage.Get8bit(
       
   827             ISI_HEADER_SIZE + GPDS_CONTEXT_CONFIGURE_RESP_OFFSET_STATUS ));
       
   828 
       
   829         TInt errorValue( KErrNone );
       
   830 
       
   831         if ( GPDS_OK != status )
       
   832             {
       
   833             errorValue = KErrGeneral;
       
   834             }
       
   835 
       
   836         // Get ContextName and pack it for completion
       
   837         TInfoName contextName;
       
   838         TInt ret = iMmPacketContextMesshandlerList->
       
   839             GetContextNameByContextId( contextId, contextName );
       
   840 
       
   841         if( KErrNone == ret )
       
   842             {
       
   843             CMmDataPackage data;
       
   844             data.PackData( &contextName );
       
   845             iMessageRouter->Complete( 
       
   846                 EPacketQoSSetProfileParams, 
       
   847                 &data, 
       
   848                 errorValue );
       
   849             }
       
   850 
       
   851         TFLOGSTRING2("TSY: CMmPacketQoSMessHandler::GpdsContextConfigureResp.\t Status:%d",status);
       
   852 OstTraceExt1( TRACE_NORMAL, DUP1_CMMPACKETQOSMESSHANDLER_GPDSCONTEXTCONFIGURERESP, "CMmPacketQoSMessHandler::GpdsContextConfigureResp;status=%hhu", status );
       
   853         }
       
   854     }
       
   855 
       
   856 // -----------------------------------------------------------------------------
       
   857 // CMmPacketQoSMessHandler::ExtFuncL
       
   858 // Entry point for messages received from Symbian OS layer (Message manager).
       
   859 // -----------------------------------------------------------------------------
       
   860 //
       
   861 TInt CMmPacketQoSMessHandler::ExtFuncL(
       
   862     TInt aIpc,
       
   863     const CMmDataPackage* aDataPackage )
       
   864     {
       
   865 
       
   866     TFLOGSTRING2("TSY: CMmPacketQoSMessHandler::ExtFuncL. IPC:%d", aIpc);
       
   867 OstTrace1( TRACE_NORMAL, CMMPACKETQOSMESSHANDLER_EXTFUNCL, "CMmPacketQoSMessHandler::ExtFuncL;aIpc=%d", aIpc );
       
   868 
       
   869     TInt ret( KErrNotSupported );
       
   870 
       
   871     switch ( aIpc )
       
   872         {
       
   873         case EPacketQoSSetProfileParams:
       
   874             {
       
   875             ret = SetProfileParametersL( aDataPackage );
       
   876             break;
       
   877             }
       
   878         default:
       
   879             {
       
   880             
       
   881             TFLOGSTRING2("TSY: CMmPacketQoSMessHandler::ExtFuncL - Unknown IPC: %d", aIpc);
       
   882 OstTrace1( TRACE_NORMAL, DUP1_CMMPACKETQOSMESSHANDLER_EXTFUNCL, "CMmPacketQoSMessHandler::ExtFuncL;Unknown aIpc=%d", aIpc );
       
   883             break;
       
   884             }
       
   885         }
       
   886     return ret;
       
   887     }
       
   888 
       
   889 // -----------------------------------------------------------------------------
       
   890 // CMmPacketQoSMessHandler::SetProfileParametersL
       
   891 // Sets QoS profile parameters.
       
   892 // -----------------------------------------------------------------------------
       
   893 //
       
   894 TInt CMmPacketQoSMessHandler::SetProfileParametersL(
       
   895     const CMmDataPackage* aDataPackage )
       
   896     {
       
   897     
       
   898     TFLOGSTRING("TSY: CMmPacketQoSMessHandler::SetProfileParametersL.");
       
   899 OstTrace0( TRACE_NORMAL, CMMPACKETQOSMESSHANDLER_SETPROFILEPARAMETERSL, "CMmPacketQoSMessHandler::SetProfileParametersL" );
       
   900 
       
   901     // error value
       
   902     TInt ret( KErrNone );
       
   903 
       
   904     TBool supported( EFalse );
       
   905     TBool signallingIndication( EFalse );
       
   906 
       
   907     // Params for unpacking
       
   908     TContextParams contextparams;
       
   909     TDes8* aprofile = NULL;
       
   910 
       
   911     // Rel5 statistic Descriptor, initialised default EFalse
       
   912     RPacketQoS::TSourceStatisticsDescriptor sourceStatisticsDescriptor(
       
   913         RPacketQoS::ESourceStatisticsDescriptorUnknown );
       
   914     // unpack
       
   915     aDataPackage->UnPackData( contextparams, aprofile );
       
   916 
       
   917     TPckg<TPacketDataConfigBase>* profilePckg =
       
   918         reinterpret_cast<TPckg<TPacketDataConfigBase>*>( aprofile );
       
   919 
       
   920     TPacketDataConfigBase& profile = ( *profilePckg )();
       
   921 
       
   922     // get contextId by contextname
       
   923     TUint8 contextId = iMmPacketContextMesshandlerList->
       
   924         GetContextIdByContextName( &(contextparams.iContextName ) );
       
   925 
       
   926     // get primarycontextId by primarycontextname
       
   927     TUint8 primarycontextId = iMmPacketContextMesshandlerList->
       
   928         GetContextIdByContextName( &(contextparams.iPrimaryContextName) );
       
   929 
       
   930     // Get extension id
       
   931     iQos.iExtensionId = profile.ExtensionId();
       
   932 
       
   933     if ( TPacketDataConfigBase::KConfigGPRS == iQos.iExtensionId )
       
   934         {
       
   935         
       
   936         TFLOGSTRING("TSY: CMmPacketQoSMessHandler::SetProfileParametersL. => Rel97");
       
   937 OstTrace0( TRACE_NORMAL, DUP1_CMMPACKETQOSMESSHANDLER_SETPROFILEPARAMETERSL, "CMmPacketQoSMessHandler::SetProfileParametersL => Rel97" );
       
   938         supported = ETrue;
       
   939         TPckg<RPacketQoS::TQoSGPRSRequested >* gprsProfilePckg =
       
   940             reinterpret_cast<TPckg<RPacketQoS::TQoSGPRSRequested>*>(
       
   941                 aprofile );
       
   942         RPacketQoS::TQoSGPRSRequested& gprsProfile = ( *gprsProfilePckg )();
       
   943 
       
   944             // If context status equals neither active nor activating
       
   945             if ( RPacketContext::EStatusActivating !=
       
   946                      contextparams.iContextStatus &&
       
   947                  RPacketContext::EStatusActive !=
       
   948                      contextparams.iContextStatus )
       
   949                 {
       
   950                 if ( NULL == iQos.iQoSMinInfo )
       
   951                     {
       
   952                     iQos.iQoSMinInfo = new ( ELeave )
       
   953                         CMmPacketQoSMessHandler::TQoSInfo;
       
   954                     }
       
   955                 //no else
       
   956 
       
   957                 // Map QoS R97/98 minimal parameter values to server
       
   958                 // side struct
       
   959                 ret = MapQoSInfoToServer(
       
   960                     *( iQos.iQoSMinInfo ),
       
   961                     gprsProfile.iMinPrecedence,
       
   962                     gprsProfile.iMinDelay,
       
   963                     gprsProfile.iMinReliability,
       
   964                     gprsProfile.iMinPeakThroughput,
       
   965                     gprsProfile.iMinMeanThroughput );
       
   966                 }
       
   967             else if ( NULL != iQos.iQoSMinInfo )
       
   968                 {
       
   969                 delete iQos.iQoSMinInfo;
       
   970                 iQos.iQoSMinInfo = NULL;
       
   971                 }
       
   972 
       
   973         if ( KErrNone == ret )
       
   974             {
       
   975             if ( NULL == iQos.iQoSReqInfo )
       
   976                 {
       
   977                 iQos.iQoSReqInfo = new ( ELeave )
       
   978                     CMmPacketQoSMessHandler::TQoSInfo;
       
   979                 }
       
   980             //no else
       
   981 
       
   982             // Map QoS R97/98 requested parameter values to server
       
   983             // side struct
       
   984             ret = MapQoSInfoToServer(
       
   985                 *( iQos.iQoSReqInfo ),
       
   986                 gprsProfile.iReqPrecedence,
       
   987                 gprsProfile.iReqDelay,
       
   988                 gprsProfile.iReqReliability,
       
   989                 gprsProfile.iReqPeakThroughput,
       
   990                 gprsProfile.iReqMeanThroughput );
       
   991              }
       
   992 
       
   993         // Delete QoS R99 info structs
       
   994         if ( NULL != iQos.iQoS99MinInfo )
       
   995             {
       
   996             delete iQos.iQoS99MinInfo;
       
   997             iQos.iQoS99MinInfo = NULL;
       
   998             }
       
   999         //no else
       
  1000 
       
  1001         if ( NULL != iQos.iQoS99ReqInfo )
       
  1002             {
       
  1003             delete iQos.iQoS99ReqInfo;
       
  1004             iQos.iQoS99ReqInfo = NULL;
       
  1005             }
       
  1006         //no else
       
  1007         }
       
  1008         
       
  1009     // If QoS R99 parameters in use
       
  1010     else if ( TPacketDataConfigBase::KConfigRel99Rel4 == profile.ExtensionId() )
       
  1011         {
       
  1012         
       
  1013         TFLOGSTRING("TSY: CMmPacketQoSMessHandler::SetProfileParametersL. => Rel99");
       
  1014 OstTrace0( TRACE_NORMAL, DUP2_CMMPACKETQOSMESSHANDLER_SETPROFILEPARAMETERSL, "CMmPacketQoSMessHandler::SetProfileParametersL => Rel99" );
       
  1015         supported = ETrue;
       
  1016 
       
  1017         TPckg<RPacketQoS::TQoSR99_R4Requested >* gprsProfilePckg =
       
  1018             reinterpret_cast<TPckg<RPacketQoS::TQoSR99_R4Requested>*>(
       
  1019                 aprofile );
       
  1020         RPacketQoS::TQoSR99_R4Requested& gprsProfile = ( *gprsProfilePckg )();
       
  1021 
       
  1022         // If context status equals neither active nor activating
       
  1023         if ( RPacketContext::EStatusActivating !=
       
  1024                 contextparams.iContextStatus &&
       
  1025              RPacketContext::EStatusActive !=
       
  1026                 contextparams.iContextStatus )
       
  1027             {
       
  1028             if ( NULL == iQos.iQoS99MinInfo )
       
  1029                 {
       
  1030                 iQos.iQoS99MinInfo = new ( ELeave )
       
  1031                     CMmPacketQoSMessHandler::TQoS99Info;
       
  1032                 }
       
  1033             //no else
       
  1034 
       
  1035             // Map classified QoS R99 minimal parameter values to server
       
  1036             // side struct
       
  1037             ret = MapQoS99InfoToServer(
       
  1038                 *( iQos.iQoS99MinInfo ),
       
  1039                 gprsProfile.iMinTrafficClass,
       
  1040                 gprsProfile.iMinDeliveryOrderReqd,
       
  1041                 gprsProfile.iMinDeliverErroneousSDU,
       
  1042                 gprsProfile.iMaxBER,
       
  1043                 gprsProfile.iMaxSDUErrorRatio,
       
  1044                 gprsProfile.iMinTrafficHandlingPriority );
       
  1045 
       
  1046             // Copy numerical QoS R99 minimal parameter values to server
       
  1047             // side struct
       
  1048             if ( KErrNone == ret )
       
  1049                 {
       
  1050                 ret = CopyQoS99ValuesToServer(
       
  1051                     *( iQos.iQoS99MinInfo ),
       
  1052                     gprsProfile.iMaxTransferDelay,
       
  1053                     gprsProfile.iMinAcceptableMaxSDUSize,
       
  1054                     gprsProfile.iMinAcceptableMaxRate,
       
  1055                     gprsProfile.iMinGuaranteedRate );
       
  1056                 }
       
  1057             else
       
  1058                 {
       
  1059                 if ( NULL != iQos.iQoS99MinInfo )
       
  1060                     {
       
  1061                     delete iQos.iQoS99MinInfo;
       
  1062                     iQos.iQoS99MinInfo = NULL;
       
  1063                     }
       
  1064                 }
       
  1065             }
       
  1066         if ( KErrNone == ret )
       
  1067             {
       
  1068             if ( NULL == iQos.iQoS99ReqInfo )
       
  1069                 {
       
  1070                 iQos.iQoS99ReqInfo = new ( ELeave )
       
  1071                     CMmPacketQoSMessHandler::TQoS99Info;
       
  1072                 }
       
  1073             //no else
       
  1074 
       
  1075             // Map classified QoS R99 requested parameter values to server
       
  1076             // side struct
       
  1077             ret = MapQoS99InfoToServer(
       
  1078                 *( iQos.iQoS99ReqInfo ),
       
  1079                 gprsProfile.iReqTrafficClass,
       
  1080                 gprsProfile.iReqDeliveryOrderReqd,
       
  1081                 gprsProfile.iReqDeliverErroneousSDU,
       
  1082                 gprsProfile.iReqBER,
       
  1083                 gprsProfile.iReqSDUErrorRatio,
       
  1084                 gprsProfile.iReqTrafficHandlingPriority );
       
  1085 
       
  1086             // Copy numerical QoS R99 requested parameter values to server
       
  1087             // side struct
       
  1088             if ( KErrNone == ret )
       
  1089                 {
       
  1090                 ret = CopyQoS99ValuesToServer(
       
  1091                     *( iQos.iQoS99ReqInfo ),
       
  1092                     gprsProfile.iReqTransferDelay,
       
  1093                     gprsProfile.iReqMaxSDUSize,
       
  1094                     gprsProfile.iReqMaxRate,
       
  1095                     gprsProfile.iReqGuaranteedRate );
       
  1096                 }
       
  1097             //no else
       
  1098             }
       
  1099 
       
  1100         // Delete QoS R97/98 info structs
       
  1101         if ( NULL != iQos.iQoSMinInfo )
       
  1102             {
       
  1103             delete iQos.iQoSMinInfo;
       
  1104             iQos.iQoSMinInfo = NULL;
       
  1105             }
       
  1106         //no else
       
  1107 
       
  1108         if ( NULL != iQos.iQoSReqInfo )
       
  1109             {
       
  1110             delete iQos.iQoSReqInfo;
       
  1111             iQos.iQoSReqInfo = NULL;
       
  1112             }
       
  1113         //no else
       
  1114         }
       
  1115         
       
  1116     // If QoS R5 parameters in use
       
  1117     else if ( TPacketDataConfigBase::KConfigRel5 == profile.ExtensionId() )
       
  1118         {
       
  1119         
       
  1120         TFLOGSTRING("TSY: CMmPacketQoSMessHandler::SetProfileParametersL.=>R5");
       
  1121 OstTrace0( TRACE_NORMAL, DUP3_CMMPACKETQOSMESSHANDLER_SETPROFILEPARAMETERSL, "CMmPacketQoSMessHandler::SetProfileParametersL => R5" );
       
  1122         supported = ETrue;
       
  1123         
       
  1124         TPckg<RPacketQoS::TQoSR5Requested >* gprsProfilePckg =
       
  1125             reinterpret_cast<TPckg<RPacketQoS::TQoSR5Requested>*>( aprofile );
       
  1126         RPacketQoS::TQoSR5Requested& gprsProfile = ( *gprsProfilePckg )();
       
  1127 
       
  1128         // If context status equals neither active nor activating
       
  1129         if ( RPacketContext::EStatusActivating !=
       
  1130                 contextparams.iContextStatus &&
       
  1131              RPacketContext::EStatusActive !=
       
  1132                 contextparams.iContextStatus )
       
  1133             {
       
  1134             if ( NULL == iQos.iQoS99MinInfo )
       
  1135                 {
       
  1136                 iQos.iQoS99MinInfo = new ( ELeave )
       
  1137                     CMmPacketQoSMessHandler::TQoS99Info;
       
  1138                 }
       
  1139             //no else
       
  1140 
       
  1141             // Map classified QoS R99 minimal parameter values to server
       
  1142             // side struct
       
  1143             ret = MapQoS99InfoToServer(
       
  1144                 *( iQos.iQoS99MinInfo ),
       
  1145                 gprsProfile.iMinTrafficClass,
       
  1146                 gprsProfile.iMinDeliveryOrderReqd,
       
  1147                 gprsProfile.iMinDeliverErroneousSDU,
       
  1148                 gprsProfile.iMaxBER,
       
  1149                 gprsProfile.iMaxSDUErrorRatio,
       
  1150                 gprsProfile.iMinTrafficHandlingPriority );
       
  1151 
       
  1152             // Copy numerical QoS R99 minimal parameter values to server
       
  1153             // side struct
       
  1154             if ( KErrNone == ret )
       
  1155                 {
       
  1156                 ret = CopyQoS99ValuesToServer(
       
  1157                     *( iQos.iQoS99MinInfo ),
       
  1158                     gprsProfile.iMaxTransferDelay,
       
  1159                     gprsProfile.iMinAcceptableMaxSDUSize,
       
  1160                     gprsProfile.iMinAcceptableMaxRate,
       
  1161                     gprsProfile.iMinGuaranteedRate );
       
  1162                 }
       
  1163             else
       
  1164                 {
       
  1165                 if ( NULL != iQos.iQoS99MinInfo )
       
  1166                     {
       
  1167                     delete iQos.iQoS99MinInfo;
       
  1168                     iQos.iQoS99MinInfo = NULL;
       
  1169                     }
       
  1170                 //no else
       
  1171                 }
       
  1172             }
       
  1173 
       
  1174         if ( KErrNone == ret )
       
  1175             {
       
  1176             if ( NULL == iQos.iQoS99ReqInfo )
       
  1177                 {
       
  1178                 iQos.iQoS99ReqInfo = new ( ELeave )
       
  1179                     CMmPacketQoSMessHandler::TQoS99Info;
       
  1180                 }
       
  1181             //no else
       
  1182 
       
  1183             // Map classified QoS R99 requested parameter values to server
       
  1184             // side struct
       
  1185             ret = MapQoS99InfoToServer(
       
  1186                 *( iQos.iQoS99ReqInfo ),
       
  1187                 gprsProfile.iReqTrafficClass,
       
  1188                 gprsProfile.iReqDeliveryOrderReqd,
       
  1189                 gprsProfile.iReqDeliverErroneousSDU,
       
  1190                 gprsProfile.iReqBER,
       
  1191                 gprsProfile.iReqSDUErrorRatio,
       
  1192                 gprsProfile.iReqTrafficHandlingPriority );
       
  1193 
       
  1194             // Copy numerical QoS R99 requested parameter values to server
       
  1195             // side struct
       
  1196             if ( KErrNone == ret )
       
  1197                 {
       
  1198                 ret = CopyQoS99ValuesToServer(
       
  1199                     *( iQos.iQoS99ReqInfo ),
       
  1200                     gprsProfile.iReqTransferDelay,
       
  1201                     gprsProfile.iReqMaxSDUSize,
       
  1202                     gprsProfile.iReqMaxRate,
       
  1203                     gprsProfile.iReqGuaranteedRate );
       
  1204                 }
       
  1205             }
       
  1206 
       
  1207         signallingIndication = gprsProfile.iSignallingIndication;
       
  1208         sourceStatisticsDescriptor = gprsProfile.iSourceStatisticsDescriptor;
       
  1209 
       
  1210         TFLOGSTRING2("TSY: CMmPacketQoSMessHandler::SetProfileParametersL. signallingIndication:%d", signallingIndication );
       
  1211 
       
  1212 OstTraceExt1( TRACE_NORMAL, DUP4_CMMPACKETQOSMESSHANDLER_SETPROFILEPARAMETERSL, "CMmPacketQoSMessHandler::SetProfileParametersL;signallingIndication=%hhu", signallingIndication );
       
  1213         TFLOGSTRING2("TSY: CMmPacketQoSMessHandler::SetProfileParametersL. sourceStatisticsDescriptor:%d", sourceStatisticsDescriptor );
       
  1214 OstTraceExt1( TRACE_NORMAL, DUP5_CMMPACKETQOSMESSHANDLER_SETPROFILEPARAMETERSL, "CMmPacketQoSMessHandler::SetProfileParametersL;sourceStatisticsDescriptor=%hhu", sourceStatisticsDescriptor );
       
  1215 
       
  1216         // Delete QoS R97/98 info structs
       
  1217         if ( NULL != iQos.iQoSMinInfo )
       
  1218             {
       
  1219             delete iQos.iQoSMinInfo;
       
  1220             iQos.iQoSMinInfo = NULL;
       
  1221             }
       
  1222         //no else
       
  1223 
       
  1224         if ( NULL != iQos.iQoSReqInfo )
       
  1225             {
       
  1226             delete iQos.iQoSReqInfo;
       
  1227             iQos.iQoSReqInfo = NULL;
       
  1228             }
       
  1229         //no else
       
  1230         }
       
  1231 
       
  1232     TBool contextConfiguration( EFalse );
       
  1233 
       
  1234     if ( supported )
       
  1235         {
       
  1236         if ( KErrNone == ret &&
       
  1237              RPacketContext::EStatusActivating != contextparams.iContextStatus &&
       
  1238              RPacketContext::EStatusActive != contextparams.iContextStatus )
       
  1239             {
       
  1240             contextConfiguration = ETrue;
       
  1241 
       
  1242             TUint8 pdpTypeServer;
       
  1243 
       
  1244             switch ( contextparams.iPdpType )
       
  1245                 {
       
  1246                 case RPacketContext::EPdpTypeIPv4:
       
  1247                     {
       
  1248                     pdpTypeServer = GPDS_PDP_TYPE_IPV4;
       
  1249                     break;
       
  1250                     }
       
  1251 
       
  1252                 case RPacketContext::EPdpTypeIPv6:
       
  1253                     {
       
  1254                     pdpTypeServer = GPDS_PDP_TYPE_IPV6;
       
  1255                     break;
       
  1256                     }
       
  1257 
       
  1258                 case RPacketContext::EPdpTypePPP:
       
  1259                 case RPacketContext::EPdpTypeX25:
       
  1260                 case RPacketContext::EPdpTypeCDPD:
       
  1261                     {
       
  1262                     pdpTypeServer = GPDS_PDP_TYPE_DEFAULT;
       
  1263                     break;
       
  1264                     }
       
  1265                 default:
       
  1266                     {
       
  1267                     pdpTypeServer = GPDS_PDP_TYPE_DEFAULT;
       
  1268                     break;
       
  1269                     }
       
  1270                 }
       
  1271 
       
  1272             // Get context configuration
       
  1273             TInt configurationType = iMmPacketContextMesshandlerList->
       
  1274                 GetContextConfigurationType( contextId );
       
  1275 
       
  1276             TUint8 contextType( GPDS_CONT_TYPE_NORMAL );
       
  1277 
       
  1278             // Get context configuration
       
  1279             if ( TPacketDataConfigBase::KConfigGPRS ==
       
  1280                 configurationType )
       
  1281                 {
       
  1282                 RPacketContext::TContextConfigGPRS* config =
       
  1283                     reinterpret_cast<RPacketContext::TContextConfigGPRS*>(
       
  1284                         iMmPacketContextMesshandlerList->
       
  1285                             GetConfig( contextId, configurationType ) );
       
  1286                 // Check if mobile or network initiated context
       
  1287                 if ( ( config ) &&  ( config->iNWIContext ) )
       
  1288                     {
       
  1289                     // Network initiated context
       
  1290                     contextType = GPDS_CONT_TYPE_NWI;
       
  1291                     }
       
  1292                 //no else
       
  1293                 }
       
  1294             else
       
  1295                 {
       
  1296                 RPacketContext::TContextConfigR99_R4* config_R99 =
       
  1297                     reinterpret_cast<RPacketContext::TContextConfigR99_R4*>(
       
  1298                         iMmPacketContextMesshandlerList->
       
  1299                             GetConfig( contextId, configurationType ) );
       
  1300                 // Check if mobile or network initiated context
       
  1301                 if ( ( config_R99 ) && ( config_R99->iNWIContext ) )
       
  1302                     {
       
  1303                     // Network initiated context
       
  1304                     contextType = GPDS_CONT_TYPE_NWI;
       
  1305                     }
       
  1306                 //no else
       
  1307                 }
       
  1308 
       
  1309             if( contextType != GPDS_CONT_TYPE_NWI )
       
  1310                 {
       
  1311                 // Mobile initiated context
       
  1312                 // => get type (primary or secondary)
       
  1313                 TInfoName contextName;
       
  1314 
       
  1315                 iMmPacketContextMesshandlerList->
       
  1316                     GetContextNameByContextId( contextId, contextName );
       
  1317 
       
  1318                 contextType = iMmPacketContextMesshandlerList->
       
  1319                     GetContextTypeByName( &contextName );
       
  1320                 }
       
  1321                 //no else
       
  1322 
       
  1323             // Call GpdsContextConfigureReq
       
  1324             ret = GpdsContextConfigureReq(
       
  1325                 contextId, pdpTypeServer,
       
  1326                 contextType, primarycontextId, iQos, signallingIndication,
       
  1327                 sourceStatisticsDescriptor );
       
  1328 
       
  1329             ResetRequestedQoS( iQos );
       
  1330             }
       
  1331         }
       
  1332     else
       
  1333         {
       
  1334         ret = KErrNotSupported;
       
  1335         }
       
  1336 
       
  1337     if ( KErrNone != ret || contextConfiguration )
       
  1338         {
       
  1339         ResetRequestedQoS( iQos );
       
  1340         }
       
  1341     //no else
       
  1342 
       
  1343     return ret;
       
  1344     }
       
  1345 
       
  1346 // -----------------------------------------------------------------------------
       
  1347 // CMmPacketQoSMessHandler::MapQoSInfoToServer
       
  1348 // Maps parameters to server.
       
  1349 // -----------------------------------------------------------------------------
       
  1350 //
       
  1351 TInt CMmPacketQoSMessHandler::MapQoSInfoToServer(
       
  1352     TQoSInfo& aQoSInfo,
       
  1353     const RPacketQoS::TQoSPrecedence& aPrecedence,
       
  1354     const RPacketQoS::TQoSDelay& aDelay,
       
  1355     const RPacketQoS::TQoSReliability& aReliability,
       
  1356     const RPacketQoS::TQoSPeakThroughput& aPeakThroughput,
       
  1357     const RPacketQoS::TQoSMeanThroughput& aMeanThroughput )
       
  1358     {
       
  1359     
       
  1360     TFLOGSTRING("TSY: CMmPacketQoSMessHandler::MapQoSInfoToServer.");
       
  1361 OstTrace0( TRACE_NORMAL, CMMPACKETQOSMESSHANDLER_MAPQOSINFOTOSERVER, "CMmPacketQoSMessHandler::MapQoSInfoToServer" );
       
  1362 
       
  1363     TInt ret( KErrNone );
       
  1364 
       
  1365     switch ( aPrecedence )
       
  1366         {
       
  1367         case RPacketQoS::EUnspecifiedPrecedence:
       
  1368             {
       
  1369             aQoSInfo.iPrecedence = GPDS_QOS_PREC_0;
       
  1370             break;
       
  1371             }
       
  1372         case RPacketQoS::EPriorityHighPrecedence:
       
  1373             {
       
  1374             aQoSInfo.iPrecedence = GPDS_QOS_PREC_1;
       
  1375             break;
       
  1376             }
       
  1377         case RPacketQoS::EPriorityMediumPrecedence:
       
  1378             {
       
  1379             aQoSInfo.iPrecedence = GPDS_QOS_PREC_2;
       
  1380             break;
       
  1381             }
       
  1382         case RPacketQoS::EPriorityLowPrecedence:
       
  1383             {
       
  1384             aQoSInfo.iPrecedence = GPDS_QOS_PREC_3;
       
  1385             break;
       
  1386             }
       
  1387         default:
       
  1388             {
       
  1389 
       
  1390             TFLOGSTRING("TSY: CMmPacketQoSMessHandler::MapQoSInfoToServer. aPrecedence -> default");
       
  1391 OstTrace0( TRACE_NORMAL, DUP1_CMMPACKETQOSMESSHANDLER_MAPQOSINFOTOSERVER, "CMmPacketQoSMessHandler::MapQoSInfoToServer,aPrecedence -> default" );
       
  1392 
       
  1393             ret = KErrArgument;
       
  1394             break;
       
  1395             }
       
  1396         }
       
  1397 
       
  1398     switch ( aDelay )
       
  1399         {
       
  1400         case RPacketQoS::EUnspecifiedDelayClass:
       
  1401             {
       
  1402             aQoSInfo.iDelay = GPDS_QOS_DELC_0;
       
  1403             break;
       
  1404             }
       
  1405         case RPacketQoS::EDelayClass1:
       
  1406             {
       
  1407             aQoSInfo.iDelay = GPDS_QOS_DELC_1;
       
  1408             break;
       
  1409             }
       
  1410         case RPacketQoS::EDelayClass2:
       
  1411             {
       
  1412             aQoSInfo.iDelay = GPDS_QOS_DELC_2;
       
  1413             break;
       
  1414             }
       
  1415         case RPacketQoS::EDelayClass3:
       
  1416             {
       
  1417             aQoSInfo.iDelay = GPDS_QOS_DELC_3;
       
  1418             break;
       
  1419             }
       
  1420         case RPacketQoS::EDelayClass4:
       
  1421             {
       
  1422             aQoSInfo.iDelay = GPDS_QOS_DELC_4;
       
  1423             break;
       
  1424             }
       
  1425         default:
       
  1426             {
       
  1427 
       
  1428             TFLOGSTRING("TSY: CMmPacketQoSMessHandler::MapQoSInfoToServer. aDelay -> default");
       
  1429 OstTrace0( TRACE_NORMAL, DUP2_CMMPACKETQOSMESSHANDLER_MAPQOSINFOTOSERVER, "CMmPacketQoSMessHandler::MapQoSInfoToServer, aDelay -> default" );
       
  1430 
       
  1431             ret = KErrArgument;
       
  1432             break;
       
  1433             }
       
  1434         }
       
  1435 
       
  1436     switch ( aReliability )
       
  1437         {
       
  1438         case RPacketQoS::EUnspecifiedReliabilityClass:
       
  1439             {
       
  1440             aQoSInfo.iReliability = GPDS_QOS_RELC_0;
       
  1441             break;
       
  1442             }
       
  1443         case RPacketQoS::EReliabilityClass1:
       
  1444             {
       
  1445             aQoSInfo.iReliability = GPDS_QOS_RELC_1;
       
  1446             break;
       
  1447             }
       
  1448         case RPacketQoS::EReliabilityClass2:
       
  1449             {
       
  1450             aQoSInfo.iReliability = GPDS_QOS_RELC_2;
       
  1451             break;
       
  1452             }
       
  1453         case RPacketQoS::EReliabilityClass3:
       
  1454             {
       
  1455             aQoSInfo.iReliability = GPDS_QOS_RELC_3;
       
  1456             break;
       
  1457             }
       
  1458         case RPacketQoS::EReliabilityClass4:
       
  1459             {
       
  1460             aQoSInfo.iReliability = GPDS_QOS_RELC_4;
       
  1461             break;
       
  1462             }
       
  1463         case RPacketQoS::EReliabilityClass5:
       
  1464             {
       
  1465             aQoSInfo.iReliability = GPDS_QOS_RELC_5;
       
  1466             break;
       
  1467             }
       
  1468         default:
       
  1469             {
       
  1470 
       
  1471             TFLOGSTRING("TSY: CMmPacketQoSMessHandler::MapQoSInfoToServer. aReliability -> default");
       
  1472 OstTrace0( TRACE_NORMAL, DUP3_CMMPACKETQOSMESSHANDLER_MAPQOSINFOTOSERVER, "CMmPacketQoSMessHandler::MapQoSInfoToServer, aReliability -> default" );
       
  1473 
       
  1474             ret = KErrArgument;
       
  1475             break;
       
  1476             }
       
  1477         }
       
  1478 
       
  1479     switch ( aPeakThroughput )
       
  1480         {
       
  1481         case RPacketQoS::EUnspecifiedPeakThroughput:
       
  1482             {
       
  1483             aQoSInfo.iPeakThroughput = GPDS_QOS_PETC_0;
       
  1484             break;
       
  1485             }
       
  1486         case RPacketQoS::EPeakThroughput1000:
       
  1487             {
       
  1488             aQoSInfo.iPeakThroughput = GPDS_QOS_PETC_1;
       
  1489             break;
       
  1490             }
       
  1491         case RPacketQoS::EPeakThroughput2000:
       
  1492             {
       
  1493             aQoSInfo.iPeakThroughput = GPDS_QOS_PETC_2;
       
  1494             break;
       
  1495             }
       
  1496         case RPacketQoS::EPeakThroughput4000:
       
  1497             {
       
  1498             aQoSInfo.iPeakThroughput = GPDS_QOS_PETC_3;
       
  1499             break;
       
  1500             }
       
  1501         case RPacketQoS::EPeakThroughput8000:
       
  1502             {
       
  1503             aQoSInfo.iPeakThroughput = GPDS_QOS_PETC_4;
       
  1504             break;
       
  1505             }
       
  1506         case RPacketQoS::EPeakThroughput16000:
       
  1507             {
       
  1508             aQoSInfo.iPeakThroughput = GPDS_QOS_PETC_5;
       
  1509             break;
       
  1510             }
       
  1511         case RPacketQoS::EPeakThroughput32000:
       
  1512             {
       
  1513             aQoSInfo.iPeakThroughput = GPDS_QOS_PETC_6;
       
  1514             break;
       
  1515             }
       
  1516         case RPacketQoS::EPeakThroughput64000:
       
  1517             {
       
  1518             aQoSInfo.iPeakThroughput = GPDS_QOS_PETC_7;
       
  1519             break;
       
  1520             }
       
  1521         case RPacketQoS::EPeakThroughput128000:
       
  1522             {
       
  1523             aQoSInfo.iPeakThroughput = GPDS_QOS_PETC_8;
       
  1524             break;
       
  1525             }
       
  1526         case RPacketQoS::EPeakThroughput256000:
       
  1527             {
       
  1528             aQoSInfo.iPeakThroughput = GPDS_QOS_PETC_9;
       
  1529             break;
       
  1530             }
       
  1531         default:
       
  1532             {
       
  1533 
       
  1534             TFLOGSTRING("TSY: CMmPacketQoSMessHandler::MapQoSInfoToServer. aPeakThroughput -> default");
       
  1535 OstTrace0( TRACE_NORMAL, DUP4_CMMPACKETQOSMESSHANDLER_MAPQOSINFOTOSERVER, "CMmPacketQoSMessHandler::MapQoSInfoToServer, aPeakThroughput -> default" );
       
  1536 
       
  1537             ret = KErrArgument;
       
  1538             break;
       
  1539             }
       
  1540         }
       
  1541 
       
  1542     switch ( aMeanThroughput )
       
  1543         {
       
  1544         case RPacketQoS::EUnspecifiedMeanThroughput:
       
  1545             {
       
  1546             aQoSInfo.iMeanThroughput = GPDS_QOS_METC_0;
       
  1547             break;
       
  1548             }
       
  1549         case RPacketQoS::EMeanThroughput100:
       
  1550             {
       
  1551             aQoSInfo.iMeanThroughput = GPDS_QOS_METC_1;
       
  1552             break;
       
  1553             }
       
  1554         case RPacketQoS::EMeanThroughput200:
       
  1555             {
       
  1556             aQoSInfo.iMeanThroughput = GPDS_QOS_METC_2;
       
  1557             break;
       
  1558             }
       
  1559         case RPacketQoS::EMeanThroughput500:
       
  1560             {
       
  1561             aQoSInfo.iMeanThroughput = GPDS_QOS_METC_3;
       
  1562             break;
       
  1563             }
       
  1564         case RPacketQoS::EMeanThroughput1000:
       
  1565             {
       
  1566             aQoSInfo.iMeanThroughput = GPDS_QOS_METC_4;
       
  1567             break;
       
  1568             }
       
  1569         case RPacketQoS::EMeanThroughput2000:
       
  1570             {
       
  1571             aQoSInfo.iMeanThroughput = GPDS_QOS_METC_5;
       
  1572             break;
       
  1573             }
       
  1574         case RPacketQoS::EMeanThroughput5000:
       
  1575             {
       
  1576             aQoSInfo.iMeanThroughput = GPDS_QOS_METC_6;
       
  1577             break;
       
  1578             }
       
  1579         case RPacketQoS::EMeanThroughput10000:
       
  1580             {
       
  1581             aQoSInfo.iMeanThroughput = GPDS_QOS_METC_7;
       
  1582             break;
       
  1583             }
       
  1584         case RPacketQoS::EMeanThroughput20000:
       
  1585             {
       
  1586             aQoSInfo.iMeanThroughput = GPDS_QOS_METC_8;
       
  1587             break;
       
  1588             }
       
  1589         case RPacketQoS::EMeanThroughput50000:
       
  1590             {
       
  1591             aQoSInfo.iMeanThroughput = GPDS_QOS_METC_9;
       
  1592             break;
       
  1593             }
       
  1594         case RPacketQoS::EMeanThroughput100000:
       
  1595             {
       
  1596             aQoSInfo.iMeanThroughput = GPDS_QOS_METC_10;
       
  1597             break;
       
  1598             }
       
  1599         case RPacketQoS::EMeanThroughput200000:
       
  1600             {
       
  1601             aQoSInfo.iMeanThroughput = GPDS_QOS_METC_11;
       
  1602             break;
       
  1603             }
       
  1604         case RPacketQoS::EMeanThroughput500000:
       
  1605             {
       
  1606             aQoSInfo.iMeanThroughput = GPDS_QOS_METC_12;
       
  1607             break;
       
  1608             }
       
  1609         case RPacketQoS::EMeanThroughput1000000:
       
  1610             {
       
  1611             aQoSInfo.iMeanThroughput = GPDS_QOS_METC_13;
       
  1612             break;
       
  1613             }
       
  1614         case RPacketQoS::EMeanThroughput2000000:
       
  1615             {
       
  1616             aQoSInfo.iMeanThroughput = GPDS_QOS_METC_14;
       
  1617             break;
       
  1618             }
       
  1619         case RPacketQoS::EMeanThroughput5000000:
       
  1620             {
       
  1621             aQoSInfo.iMeanThroughput = GPDS_QOS_METC_15;
       
  1622             break;
       
  1623             }
       
  1624         case RPacketQoS::EMeanThroughput10000000:
       
  1625             {
       
  1626             aQoSInfo.iMeanThroughput = GPDS_QOS_METC_16;
       
  1627             break;
       
  1628             }
       
  1629         case RPacketQoS::EMeanThroughput20000000:
       
  1630             {
       
  1631             aQoSInfo.iMeanThroughput = GPDS_QOS_METC_17;
       
  1632             break;
       
  1633             }
       
  1634         case RPacketQoS::EMeanThroughput50000000:
       
  1635             {
       
  1636             aQoSInfo.iMeanThroughput = GPDS_QOS_METC_18;
       
  1637             break;
       
  1638             }
       
  1639         case RPacketQoS::EMeanThroughputBestEffort:
       
  1640             {
       
  1641             aQoSInfo.iMeanThroughput = GPDS_QOS_METC_31;
       
  1642             break;
       
  1643             }
       
  1644         default:
       
  1645             {
       
  1646 
       
  1647             TFLOGSTRING("TSY: CMmPacketQoSMessHandler::MapQoSInfoToServer. aMeanThroughput -> default");
       
  1648 OstTrace0( TRACE_NORMAL, DUP5_CMMPACKETQOSMESSHANDLER_MAPQOSINFOTOSERVER, "CMmPacketQoSMessHandler::MapQoSInfoToServer, aMeanThroughput -> default" );
       
  1649 
       
  1650             ret = KErrArgument;
       
  1651             break;
       
  1652             }
       
  1653         }
       
  1654 
       
  1655     return ret;
       
  1656     }
       
  1657 
       
  1658 // -----------------------------------------------------------------------------
       
  1659 // CMmPacketQoSMessHandler::MapQoS99InfoToServer
       
  1660 // Maps parameters to server.
       
  1661 // -----------------------------------------------------------------------------
       
  1662 //
       
  1663 TInt CMmPacketQoSMessHandler::MapQoS99InfoToServer(
       
  1664     CMmPacketQoSMessHandler::TQoS99Info& aQoS99Info,
       
  1665     const RPacketQoS::TTrafficClass& aTrafficClass,
       
  1666     const RPacketQoS::TDeliveryOrder& aDeliveryOrderReqd,
       
  1667     const RPacketQoS::TErroneousSDUDelivery& aDeliverErroneousSDU,
       
  1668     const RPacketQoS::TBitErrorRatio& aBER, // Bit error ratio
       
  1669     const RPacketQoS::TSDUErrorRatio& aSDUErrorRatio,
       
  1670     const RPacketQoS::TTrafficHandlingPriority& aTrafficHandlingPriority )
       
  1671     {
       
  1672     
       
  1673     TFLOGSTRING("TSY: CMmPacketQoSMessHandler::MapQoS99InfoToServer.");
       
  1674 OstTrace0( TRACE_NORMAL, CMMPACKETQOSMESSHANDLER_MAPQOS99INFOTOSERVER, "CMmPacketQoSMessHandler::MapQoS99InfoToServer" );
       
  1675     TInt ret( KErrNone );
       
  1676 
       
  1677     switch ( aTrafficClass )
       
  1678         {
       
  1679         case RPacketQoS::ETrafficClassUnspecified:
       
  1680             {
       
  1681             aQoS99Info.iTrafficClass = GPDS_QOS99_TRAC_SUBSCRIBED;
       
  1682             break;
       
  1683             }
       
  1684         case RPacketQoS::ETrafficClassConversational:
       
  1685             {
       
  1686             aQoS99Info.iTrafficClass = GPDS_QOS99_TRAC_CONVERSATIONAL;
       
  1687             break;
       
  1688             }
       
  1689         case RPacketQoS::ETrafficClassStreaming:
       
  1690             {
       
  1691             aQoS99Info.iTrafficClass = GPDS_QOS99_TRAC_STREAMING;
       
  1692             break;
       
  1693             }
       
  1694         case RPacketQoS::ETrafficClassInteractive:
       
  1695             {
       
  1696             aQoS99Info.iTrafficClass = GPDS_QOS99_TRAC_INTERACTIVE;
       
  1697             break;
       
  1698             }
       
  1699         case RPacketQoS::ETrafficClassBackground:
       
  1700             {
       
  1701             aQoS99Info.iTrafficClass = GPDS_QOS99_TRAC_BACKGROUND;
       
  1702             break;
       
  1703             }
       
  1704         default:
       
  1705             {
       
  1706 
       
  1707             TFLOGSTRING("TSY: CMmPacketQoSMessHandler::MapQoS99InfoToServer. aTrafficClass -> default");
       
  1708 OstTrace0( TRACE_NORMAL, DUP1_CMMPACKETQOSMESSHANDLER_MAPQOS99INFOTOSERVER, "CMmPacketQoSMessHandler::MapQoS99InfoToServer, aTrafficClass -> default" );
       
  1709 
       
  1710             ret = KErrArgument;
       
  1711             break;
       
  1712             }
       
  1713         }
       
  1714 
       
  1715     switch ( aDeliveryOrderReqd )
       
  1716         {
       
  1717         case RPacketQoS::EDeliveryOrderUnspecified:
       
  1718             {
       
  1719             aQoS99Info.iDeliveryOrderReqd = GPDS_QOS99_DELO_SUBSCRIBED;
       
  1720             break;
       
  1721             }
       
  1722         case RPacketQoS::EDeliveryOrderRequired:
       
  1723             {
       
  1724             aQoS99Info.iDeliveryOrderReqd = GPDS_QOS99_DELO_YES;
       
  1725             break;
       
  1726             }
       
  1727         case RPacketQoS::EDeliveryOrderNotRequired:
       
  1728             {
       
  1729             aQoS99Info.iDeliveryOrderReqd = GPDS_QOS99_DELO_NO;
       
  1730             break;
       
  1731             }
       
  1732         default:
       
  1733             {
       
  1734 
       
  1735             TFLOGSTRING("TSY: CMmPacketQoSMessHandler::MapQoS99InfoToServer. aDeliveryOrderReqd -> default");
       
  1736 OstTrace0( TRACE_NORMAL, DUP2_CMMPACKETQOSMESSHANDLER_MAPQOS99INFOTOSERVER, "CMmPacketQoSMessHandler::MapQoS99InfoToServer, aDeliveryOrderReqd -> default" );
       
  1737 
       
  1738             ret = KErrArgument;
       
  1739             break;
       
  1740             }
       
  1741         }
       
  1742 
       
  1743     switch ( aDeliverErroneousSDU )
       
  1744         {
       
  1745         case RPacketQoS::EErroneousSDUDeliveryUnspecified:
       
  1746             {
       
  1747             aQoS99Info.iDeliverErroneousSDU = GPDS_QOS99_DOES_SUBSCRIBED;
       
  1748             break;
       
  1749             }
       
  1750         case RPacketQoS::EErroneousSDUNoDetection:
       
  1751             {
       
  1752             aQoS99Info.iDeliverErroneousSDU = GPDS_QOS99_DOES_NO_DETECT;
       
  1753             break;
       
  1754             }
       
  1755         case RPacketQoS::EErroneousSDUDeliveryRequired:
       
  1756             {
       
  1757             aQoS99Info.iDeliverErroneousSDU = GPDS_QOS99_DOES_YES;
       
  1758             break;
       
  1759             }
       
  1760         case RPacketQoS::EErroneousSDUDeliveryNotRequired:
       
  1761             {
       
  1762             aQoS99Info.iDeliverErroneousSDU = GPDS_QOS99_DOES_NO;
       
  1763             break;
       
  1764             }
       
  1765         default:
       
  1766             {
       
  1767 
       
  1768             TFLOGSTRING("TSY: CMmPacketQoSMessHandler::MapQoS99InfoToServer. aDeliverErroneousSDU -> default");
       
  1769 OstTrace0( TRACE_NORMAL, DUP3_CMMPACKETQOSMESSHANDLER_MAPQOS99INFOTOSERVER, "CMmPacketQoSMessHandler::MapQoS99InfoToServer, aDeliverErroneousSDU -> default" );
       
  1770 
       
  1771             ret = KErrArgument;
       
  1772             break;
       
  1773             }
       
  1774         }
       
  1775 
       
  1776     switch ( aBER )
       
  1777         {
       
  1778         case RPacketQoS::EBERUnspecified:
       
  1779             {
       
  1780             aQoS99Info.iBER = GPDS_QOS99_RBER_SUBSCRIBED;
       
  1781             break;
       
  1782             }
       
  1783         case RPacketQoS::EBERFivePerHundred:
       
  1784             {
       
  1785             aQoS99Info.iBER = GPDS_QOS99_RBER_1;
       
  1786             break;
       
  1787             }
       
  1788         case RPacketQoS::EBEROnePerHundred:
       
  1789             {
       
  1790             aQoS99Info.iBER = GPDS_QOS99_RBER_2;
       
  1791             break;
       
  1792             }
       
  1793         case RPacketQoS::EBERFivePerThousand:
       
  1794             {
       
  1795             aQoS99Info.iBER = GPDS_QOS99_RBER_3;
       
  1796             break;
       
  1797             }
       
  1798         case RPacketQoS::EBERFourPerThousand:
       
  1799             {
       
  1800             aQoS99Info.iBER = GPDS_QOS99_RBER_4;
       
  1801             break;
       
  1802             }
       
  1803         case RPacketQoS::EBEROnePerThousand:
       
  1804             {
       
  1805             aQoS99Info.iBER = GPDS_QOS99_RBER_5;
       
  1806             break;
       
  1807             }
       
  1808         case RPacketQoS::EBEROnePerTenThousand:
       
  1809             {
       
  1810             aQoS99Info.iBER = GPDS_QOS99_RBER_6;
       
  1811             break;
       
  1812             }
       
  1813         case RPacketQoS::EBEROnePerHundredThousand:
       
  1814             {
       
  1815             aQoS99Info.iBER = GPDS_QOS99_RBER_7;
       
  1816             break;
       
  1817             }
       
  1818         case RPacketQoS::EBEROnePerMillion:
       
  1819             {
       
  1820             aQoS99Info.iBER = GPDS_QOS99_RBER_8;
       
  1821             break;
       
  1822             }
       
  1823         case RPacketQoS::EBERSixPerHundredMillion:
       
  1824             {
       
  1825             aQoS99Info.iBER = GPDS_QOS99_RBER_9;
       
  1826             break;
       
  1827             }
       
  1828         default:
       
  1829             {
       
  1830 
       
  1831             TFLOGSTRING("TSY: CMmPacketQoSMessHandler::MapQoS99InfoToServer. aBER -> default");
       
  1832 OstTrace0( TRACE_NORMAL, DUP4_CMMPACKETQOSMESSHANDLER_MAPQOS99INFOTOSERVER, "CMmPacketQoSMessHandler::MapQoS99InfoToServer, aBER -> default" );
       
  1833 
       
  1834             ret = KErrArgument;
       
  1835             break;
       
  1836             }
       
  1837         }
       
  1838 
       
  1839     switch ( aSDUErrorRatio )
       
  1840         {
       
  1841         case RPacketQoS::ESDUErrorRatioUnspecified:
       
  1842             {
       
  1843             aQoS99Info.iSDUErrorRatio = GPDS_QOS99_SDER_SUBSCRIBED;
       
  1844             break;
       
  1845             }
       
  1846         case RPacketQoS::ESDUErrorRatioOnePerTen:
       
  1847             {
       
  1848             aQoS99Info.iSDUErrorRatio = GPDS_QOS99_SDER_7;
       
  1849             break;
       
  1850             }
       
  1851         case RPacketQoS::ESDUErrorRatioOnePerHundred:
       
  1852             {
       
  1853             aQoS99Info.iSDUErrorRatio = GPDS_QOS99_SDER_1;
       
  1854             break;
       
  1855             }
       
  1856         case RPacketQoS::ESDUErrorRatioSevenPerThousand:
       
  1857             {
       
  1858             aQoS99Info.iSDUErrorRatio = GPDS_QOS99_SDER_2;
       
  1859             break;
       
  1860             }
       
  1861         case RPacketQoS::ESDUErrorRatioOnePerThousand:
       
  1862             {
       
  1863             aQoS99Info.iSDUErrorRatio = GPDS_QOS99_SDER_3;
       
  1864             break;
       
  1865             }
       
  1866         case RPacketQoS::ESDUErrorRatioOnePerTenThousand:
       
  1867             {
       
  1868             aQoS99Info.iSDUErrorRatio = GPDS_QOS99_SDER_4;
       
  1869             break;
       
  1870             }
       
  1871         case RPacketQoS::ESDUErrorRatioOnePerHundredThousand:
       
  1872             {
       
  1873             aQoS99Info.iSDUErrorRatio = GPDS_QOS99_SDER_5;
       
  1874             break;
       
  1875             }
       
  1876         case RPacketQoS::ESDUErrorRatioOnePerMillion:
       
  1877             {
       
  1878             aQoS99Info.iSDUErrorRatio = GPDS_QOS99_SDER_6;
       
  1879             break;
       
  1880             }
       
  1881         default:
       
  1882             {
       
  1883 
       
  1884             TFLOGSTRING("TSY: CMmPacketQoSMessHandler::MapQoS99InfoToServer. aSDUErrorRatio -> default");
       
  1885 OstTrace0( TRACE_NORMAL, DUP5_CMMPACKETQOSMESSHANDLER_MAPQOS99INFOTOSERVER, "CMmPacketQoSMessHandler::MapQoS99InfoToServer, aSDUErrorRatio -> default" );
       
  1886 
       
  1887             ret = KErrArgument;
       
  1888             break;
       
  1889             }
       
  1890         }
       
  1891 
       
  1892     switch ( aTrafficHandlingPriority )
       
  1893         {
       
  1894         case RPacketQoS::ETrafficPriorityUnspecified:
       
  1895             {
       
  1896             aQoS99Info.iTrafficHandlingPriority = GPDS_QOS99_TRHP_SUBSCRIBED;
       
  1897             break;
       
  1898             }
       
  1899         case RPacketQoS::ETrafficPriority1:
       
  1900             {
       
  1901             aQoS99Info.iTrafficHandlingPriority = GPDS_QOS99_TRHP_1;
       
  1902             break;
       
  1903             }
       
  1904         case RPacketQoS::ETrafficPriority2:
       
  1905             {
       
  1906             aQoS99Info.iTrafficHandlingPriority = GPDS_QOS99_TRHP_2;
       
  1907             break;
       
  1908             }
       
  1909         case RPacketQoS::ETrafficPriority3:
       
  1910             {
       
  1911             aQoS99Info.iTrafficHandlingPriority = GPDS_QOS99_TRHP_3;
       
  1912             break;
       
  1913             }
       
  1914         default:
       
  1915             {
       
  1916 
       
  1917             TFLOGSTRING("TSY: CMmPacketQoSMessHandler::MapQoS99InfoToServer. aTrafficHandlingPriority -> default");
       
  1918 OstTrace0( TRACE_NORMAL, DUP6_CMMPACKETQOSMESSHANDLER_MAPQOS99INFOTOSERVER, "CMmPacketQoSMessHandler::MapQoS99InfoToServer, aTrafficHandlingPriority -> default" );
       
  1919 
       
  1920             ret = KErrArgument;
       
  1921             break;
       
  1922             }
       
  1923         }
       
  1924 
       
  1925     return ret;
       
  1926     }
       
  1927 
       
  1928 // -----------------------------------------------------------------------------
       
  1929 // CMmPacketQoSMessHandler::CopyQoS99ValuesToServer
       
  1930 // Copies QoS99 parameter values to server
       
  1931 // -----------------------------------------------------------------------------
       
  1932 //
       
  1933 TInt CMmPacketQoSMessHandler::CopyQoS99ValuesToServer(
       
  1934     TQoS99Info& aQoS99Info,
       
  1935     const TInt aMaxTransferDelay,
       
  1936     const TInt aMaxSDUSize,
       
  1937     const RPacketQoS::TBitRate& aMaxRate,
       
  1938     const RPacketQoS::TBitRate& aGuaranteedRate )
       
  1939     {
       
  1940     
       
  1941     TFLOGSTRING("TSY: CMmPacketQoSMessHandler::CopyQoS99ValuesToServer.");
       
  1942 OstTrace0( TRACE_NORMAL, CMMPACKETQOSMESSHANDLER_COPYQOS99VALUESTOSERVER, "CMmPacketQoSMessHandler::CopyQoS99ValuesToServer" );
       
  1943 
       
  1944     aQoS99Info.iTransferDelay = static_cast<TUint16>( aMaxTransferDelay );
       
  1945     aQoS99Info.iMaxSDUSize = static_cast<TUint16>( aMaxSDUSize );
       
  1946 
       
  1947     aQoS99Info.iMaxUplinkRate = static_cast<TUint16>( aMaxRate.iUplinkRate );
       
  1948     aQoS99Info.iMaxDownlinkRate = static_cast<TUint16>(
       
  1949         aMaxRate.iDownlinkRate );
       
  1950 
       
  1951     aQoS99Info.iGuaranteedUplinkRate = static_cast<TUint16>(
       
  1952         aGuaranteedRate.iUplinkRate );
       
  1953     aQoS99Info.iGuaranteedDownlinkRate = static_cast<TUint16>(
       
  1954         aGuaranteedRate.iDownlinkRate );
       
  1955 
       
  1956     return KErrNone;
       
  1957 
       
  1958     }
       
  1959 
       
  1960 // -----------------------------------------------------------------------------
       
  1961 // CMmPacketQoSMessHandler::ResetRequestedQoS
       
  1962 // Resets QoS parameters.
       
  1963 // -----------------------------------------------------------------------------
       
  1964 //
       
  1965 void CMmPacketQoSMessHandler::ResetRequestedQoS(
       
  1966     TQoS& aQoS )
       
  1967     {
       
  1968     
       
  1969     TFLOGSTRING("TSY: CMmPacketQoSMessHandler::ResetRequestedQoS.");
       
  1970 OstTrace0( TRACE_NORMAL, CMMPACKETQOSMESSHANDLER_RESETREQUESTEDQOS, "CMmPacketQoSMessHandler::ResetRequestedQoS" );
       
  1971 
       
  1972     if ( NULL != aQoS.iQoSMinInfo )
       
  1973         {
       
  1974         delete aQoS.iQoSMinInfo;
       
  1975         aQoS.iQoSMinInfo = NULL;
       
  1976         }
       
  1977 
       
  1978     if ( NULL != aQoS.iQoSReqInfo )
       
  1979         {
       
  1980         delete aQoS.iQoSReqInfo;
       
  1981         aQoS.iQoSReqInfo = NULL;
       
  1982         }
       
  1983 
       
  1984     if ( NULL != aQoS.iQoS99MinInfo )
       
  1985         {
       
  1986         delete aQoS.iQoS99MinInfo;
       
  1987         aQoS.iQoS99MinInfo = NULL;
       
  1988         }
       
  1989 
       
  1990     if ( NULL != aQoS.iQoS99ReqInfo )
       
  1991         {
       
  1992         delete aQoS.iQoS99ReqInfo;
       
  1993         aQoS.iQoS99ReqInfo = NULL;
       
  1994         }
       
  1995     }
       
  1996 
       
  1997 // -----------------------------------------------------------------------------
       
  1998 // CMmPacketQoSMessHandler::CompleteNotifyProfileChanged
       
  1999 // Completes profile changed notification
       
  2000 // -----------------------------------------------------------------------------
       
  2001 //
       
  2002 void CMmPacketQoSMessHandler::CompleteNotifyProfileChanged(
       
  2003     TQoSInfo*  aQoSNegotiated,
       
  2004     TQoS99Info*  aQoS99Negotiated,
       
  2005     const TBool aQoSNegValid,     // Negotiated QoS 97 parameter indicator
       
  2006     const TBool aQoS99NegValid,
       
  2007     TUint8 aContextId )
       
  2008     {
       
  2009     
       
  2010     TFLOGSTRING("TSY: CMmPacketQoSMessHandler::CompleteNotifyProfileChanged.");
       
  2011 OstTrace0( TRACE_NORMAL, CMMPACKETQOSMESSHANDLER_COMPLETENOTIFYPROFILECHANGED, "CMmPacketQoSMessHandler::CompleteNotifyProfileChanged" );
       
  2012 
       
  2013     TInt ret( KErrGeneral );
       
  2014     TInfoName mmPacketContextName;
       
  2015     CMmPacketDataPackage data;
       
  2016     TBool completeToClient( EFalse );
       
  2017 
       
  2018     if ( aQoSNegValid )
       
  2019         {
       
  2020         MapQoSInfoToClient( *aQoSNegotiated,
       
  2021             iQoSGPRSNegotiated.iPrecedence,
       
  2022             iQoSGPRSNegotiated.iDelay,
       
  2023             iQoSGPRSNegotiated.iReliability,
       
  2024             iQoSGPRSNegotiated.iPeakThroughput,
       
  2025             iQoSGPRSNegotiated.iMeanThroughput );
       
  2026 
       
  2027         TFLOGSTRING("TSY: CMmPacketQoSMessHandler::CompleteNotifyProfileChanged.  R97/98 QoS Parameters set in TSY");
       
  2028 OstTrace0( TRACE_NORMAL, DUP1_CMMPACKETQOSMESSHANDLER_COMPLETENOTIFYPROFILECHANGED, "CMmPacketQoSMessHandler::CompleteNotifyProfileChanged, R97/98 QoS Parameters set in TSY" );
       
  2029         }
       
  2030     //no else
       
  2031 
       
  2032     if ( aQoS99NegValid )
       
  2033         {
       
  2034         MapQoS99InfoToClient( *aQoS99Negotiated, 
       
  2035             iQoSR99_R4Negotiated, 
       
  2036             iQoSR5_Negotiated );
       
  2037 
       
  2038         TFLOGSTRING("TSY: CMmPacketQoSMessHandler::CompleteNotifyProfileChanged.  R99/R4 QoS Parameters set in TSY");
       
  2039 OstTrace0( TRACE_NORMAL, DUP2_CMMPACKETQOSMESSHANDLER_COMPLETENOTIFYPROFILECHANGED, "CMmPacketQoSMessHandler::CompleteNotifyProfileChanged, R99/R4 QoS Parameters set in TSY" );
       
  2040         }
       
  2041     //no else
       
  2042 
       
  2043     if ( aQoSNegValid )
       
  2044         {
       
  2045         completeToClient = ETrue;
       
  2046 
       
  2047         ret = iMmPacketContextMesshandlerList->
       
  2048             GetContextNameByContextId( aContextId, mmPacketContextName );
       
  2049 
       
  2050         TFLOGSTRING("TSY: CMmPacketQoSMessHandler::CompleteNotifyProfileChanged.  R97/98 QoS Parameters in use");
       
  2051 OstTrace0( TRACE_NORMAL, DUP3_CMMPACKETQOSMESSHANDLER_COMPLETENOTIFYPROFILECHANGED, "CMmPacketQoSMessHandler::CompleteNotifyProfileChanged, R97/98 QoS Parameters in use" );
       
  2052         }
       
  2053      //no else
       
  2054 
       
  2055     // if client uses R99 QoS parameters and aQoS99Negotiated
       
  2056     // have been set
       
  2057     if ( aQoS99NegValid )
       
  2058         {
       
  2059         completeToClient = ETrue;
       
  2060 
       
  2061         ret = iMmPacketContextMesshandlerList->
       
  2062             GetContextNameByContextId( aContextId, mmPacketContextName );
       
  2063 
       
  2064         TFLOGSTRING("TSY: CMmPacketQoSMessHandler::CompleteNotifyProfileChanged.  R99/R4 QoS Parameters in use");
       
  2065 OstTrace0( TRACE_NORMAL, DUP4_CMMPACKETQOSMESSHANDLER_COMPLETENOTIFYPROFILECHANGED, "CMmPacketQoSMessHandler::CompleteNotifyProfileChanged, R99/R4 QoS Parameters in use" );
       
  2066         }
       
  2067      //no else
       
  2068 
       
  2069     if ( completeToClient )
       
  2070         {
       
  2071         if ( KErrNone == ret )
       
  2072             {
       
  2073             // Pack Qos params
       
  2074             data.SetProfileChanged( &iQoSGPRSNegotiated, 
       
  2075                 &iQoSR99_R4Negotiated, &iQoSR5_Negotiated );
       
  2076             // Pack completion params
       
  2077             data.PackData( &mmPacketContextName );
       
  2078             iMessageRouter->Complete( 
       
  2079                 EPacketQoSNotifyProfileChanged,
       
  2080                 &data, 
       
  2081                 KErrNone );
       
  2082             }
       
  2083         //no else
       
  2084         }
       
  2085     //no else
       
  2086     }
       
  2087 
       
  2088 // -----------------------------------------------------------------------------
       
  2089 // CMmPacketQoSMessHandler::MapQoSInfoToClient
       
  2090 // Maps parameters to client.
       
  2091 // -----------------------------------------------------------------------------
       
  2092 //
       
  2093 void CMmPacketQoSMessHandler::MapQoSInfoToClient(
       
  2094     const TQoSInfo& aQoSInfo,
       
  2095     RPacketQoS::TQoSPrecedence& aPrecedence,
       
  2096     RPacketQoS::TQoSDelay& aDelay,
       
  2097     RPacketQoS::TQoSReliability& aReliability,
       
  2098     RPacketQoS::TQoSPeakThroughput& aPeakThroughput,
       
  2099     RPacketQoS::TQoSMeanThroughput& aMeanThroughput )
       
  2100     {
       
  2101 
       
  2102     TFLOGSTRING("TSY: CMmPacketQoSMessHandler::MapQoSInfoToClient.");
       
  2103 OstTrace0( TRACE_NORMAL, CMMPACKETQOSMESSHANDLER_MAPQOSINFOTOCLIENT, "CMmPacketQoSMessHandler::MapQoSInfoToClient" );
       
  2104 
       
  2105     switch ( aQoSInfo.iPrecedence )
       
  2106         {
       
  2107         // case GPDS_QOS_PREC_0 is default value
       
  2108        
       
  2109         case GPDS_QOS_PREC_1:
       
  2110             {
       
  2111             aPrecedence = RPacketQoS::EPriorityHighPrecedence;
       
  2112             break;
       
  2113             }
       
  2114         case GPDS_QOS_PREC_2:
       
  2115             {
       
  2116             aPrecedence = RPacketQoS::EPriorityMediumPrecedence;
       
  2117             break;
       
  2118             }
       
  2119         case GPDS_QOS_PREC_3:
       
  2120             {
       
  2121             aPrecedence = RPacketQoS::EPriorityLowPrecedence;
       
  2122             break;
       
  2123             }
       
  2124         default:
       
  2125             {
       
  2126 
       
  2127             TFLOGSTRING("TSY: CMmPacketQoSMessHandler::MapQoSInfoToClient. Switch Precedence case default");
       
  2128 OstTrace0( TRACE_NORMAL, DUP1_CMMPACKETQOSMESSHANDLER_MAPQOSINFOTOCLIENT, "CMmPacketQoSMessHandler::MapQoSInfoToClient, Switch Precedence case default" );
       
  2129 
       
  2130             aPrecedence = RPacketQoS::EUnspecifiedPrecedence;
       
  2131             break;
       
  2132             }
       
  2133         }
       
  2134 
       
  2135     switch ( aQoSInfo.iDelay )
       
  2136         {
       
  2137         // case GPDS_QOS_DELC_0 is default value
       
  2138         
       
  2139         case GPDS_QOS_DELC_1:
       
  2140             {
       
  2141             aDelay = RPacketQoS::EDelayClass1;
       
  2142             break;
       
  2143             }
       
  2144         case GPDS_QOS_DELC_2:
       
  2145             {
       
  2146             aDelay = RPacketQoS::EDelayClass2;
       
  2147             break;
       
  2148             }
       
  2149         case GPDS_QOS_DELC_3:
       
  2150             {
       
  2151             aDelay = RPacketQoS::EDelayClass3;
       
  2152             break;
       
  2153             }
       
  2154         case GPDS_QOS_DELC_4:
       
  2155             {
       
  2156             aDelay = RPacketQoS::EDelayClass4;
       
  2157             break;
       
  2158             }
       
  2159         default:
       
  2160             {
       
  2161 
       
  2162             TFLOGSTRING("TSY: CMmPacketQoSMessHandler::MapQoSInfoToClient. Switch Delay case default");
       
  2163 OstTrace0( TRACE_NORMAL, DUP2_CMMPACKETQOSMESSHANDLER_MAPQOSINFOTOCLIENT, "CMmPacketQoSMessHandler::MapQoSInfoToClient, Switch Delay case default" );
       
  2164 
       
  2165             aDelay = RPacketQoS::EUnspecifiedDelayClass;
       
  2166             break;
       
  2167             }
       
  2168         }
       
  2169 
       
  2170     switch ( aQoSInfo.iReliability )
       
  2171         {
       
  2172         // case GPDS_QOS_RELC_0 is default value
       
  2173         
       
  2174         case GPDS_QOS_RELC_1:
       
  2175             {
       
  2176             aReliability = RPacketQoS::EReliabilityClass1;
       
  2177             break;
       
  2178             }
       
  2179         case GPDS_QOS_RELC_2:
       
  2180             {
       
  2181             aReliability = RPacketQoS::EReliabilityClass2;
       
  2182             break;
       
  2183             }
       
  2184         case GPDS_QOS_RELC_3:
       
  2185             {
       
  2186             aReliability = RPacketQoS::EReliabilityClass3;
       
  2187             break;
       
  2188             }
       
  2189         case GPDS_QOS_RELC_4:
       
  2190             {
       
  2191             aReliability = RPacketQoS::EReliabilityClass4;
       
  2192             break;
       
  2193             }
       
  2194         case GPDS_QOS_RELC_5:
       
  2195             {
       
  2196             aReliability = RPacketQoS::EReliabilityClass5;
       
  2197             break;
       
  2198             }
       
  2199         default:
       
  2200             {
       
  2201 
       
  2202             TFLOGSTRING("TSY: CMmPacketQoSMessHandler::MapQoSInfoToClient. Switch Reliability case default");
       
  2203 OstTrace0( TRACE_NORMAL, DUP3_CMMPACKETQOSMESSHANDLER_MAPQOSINFOTOCLIENT, "CMmPacketQoSMessHandler::MapQoSInfoToClient, Switch Reliability case default" );
       
  2204 
       
  2205             aReliability = RPacketQoS::EUnspecifiedReliabilityClass;
       
  2206             break;
       
  2207             }
       
  2208         }
       
  2209 
       
  2210     switch ( aQoSInfo.iPeakThroughput )
       
  2211         {
       
  2212         // case GPDS_QOS_PELC_0 is default value
       
  2213 
       
  2214         case GPDS_QOS_PETC_1:
       
  2215             {
       
  2216             aPeakThroughput = RPacketQoS::EPeakThroughput1000;
       
  2217             break;
       
  2218             }
       
  2219         case GPDS_QOS_PETC_2:
       
  2220             {
       
  2221             aPeakThroughput = RPacketQoS::EPeakThroughput2000;
       
  2222             break;
       
  2223             }
       
  2224         case GPDS_QOS_PETC_3:
       
  2225             {
       
  2226             aPeakThroughput = RPacketQoS::EPeakThroughput4000;
       
  2227             break;
       
  2228             }
       
  2229         case GPDS_QOS_PETC_4:
       
  2230             {
       
  2231             aPeakThroughput = RPacketQoS::EPeakThroughput8000;
       
  2232             break;
       
  2233             }
       
  2234         case GPDS_QOS_PETC_5:
       
  2235             {
       
  2236             aPeakThroughput = RPacketQoS::EPeakThroughput16000;
       
  2237             break;
       
  2238             }
       
  2239         case GPDS_QOS_PETC_6:
       
  2240             {
       
  2241             aPeakThroughput = RPacketQoS::EPeakThroughput32000;
       
  2242             break;
       
  2243             }
       
  2244         case GPDS_QOS_PETC_7:
       
  2245             {
       
  2246             aPeakThroughput = RPacketQoS::EPeakThroughput64000;
       
  2247             break;
       
  2248             }
       
  2249         case GPDS_QOS_PETC_8:
       
  2250             {
       
  2251             aPeakThroughput = RPacketQoS::EPeakThroughput128000;
       
  2252             break;
       
  2253             }
       
  2254         case GPDS_QOS_PETC_9:
       
  2255             {
       
  2256             aPeakThroughput = RPacketQoS::EPeakThroughput256000;
       
  2257             break;
       
  2258             }
       
  2259         default:
       
  2260             {
       
  2261 
       
  2262             TFLOGSTRING("TSY: CMmPacketQoSMessHandler::MapQoSInfoToClient. Switch PeakThroughput case default");
       
  2263 OstTrace0( TRACE_NORMAL, DUP4_CMMPACKETQOSMESSHANDLER_MAPQOSINFOTOCLIENT, "CMmPacketQoSMessHandler::MapQoSInfoToClient, Switch PeakThroughput case default" );
       
  2264 
       
  2265             aPeakThroughput = RPacketQoS::EUnspecifiedPeakThroughput;
       
  2266             break;
       
  2267             }
       
  2268         }
       
  2269 
       
  2270     switch ( aQoSInfo.iMeanThroughput )
       
  2271         {
       
  2272         // case GPDS_QOS_METC_0 is default value
       
  2273 
       
  2274         case GPDS_QOS_METC_1:
       
  2275             {
       
  2276             aMeanThroughput = RPacketQoS::EMeanThroughput100;
       
  2277             break;
       
  2278             }
       
  2279         case GPDS_QOS_METC_2:
       
  2280             {
       
  2281             aMeanThroughput = RPacketQoS::EMeanThroughput200;
       
  2282             break;
       
  2283             }
       
  2284         case GPDS_QOS_METC_3:
       
  2285             {
       
  2286             aMeanThroughput = RPacketQoS::EMeanThroughput500;
       
  2287             break;
       
  2288             }
       
  2289         case GPDS_QOS_METC_4:
       
  2290             {
       
  2291             aMeanThroughput = RPacketQoS::EMeanThroughput1000;
       
  2292             break;
       
  2293             }
       
  2294         case GPDS_QOS_METC_5:
       
  2295             {
       
  2296             aMeanThroughput = RPacketQoS::EMeanThroughput2000;
       
  2297             break;
       
  2298             }
       
  2299         case GPDS_QOS_METC_6:
       
  2300             {
       
  2301             aMeanThroughput = RPacketQoS::EMeanThroughput5000;
       
  2302             break;
       
  2303             }
       
  2304         case GPDS_QOS_METC_7:
       
  2305             {
       
  2306             aMeanThroughput = RPacketQoS::EMeanThroughput10000;
       
  2307             break;
       
  2308             }
       
  2309         case GPDS_QOS_METC_8:
       
  2310             {
       
  2311             aMeanThroughput = RPacketQoS::EMeanThroughput20000;
       
  2312             break;
       
  2313             }
       
  2314         case GPDS_QOS_METC_9:
       
  2315             {
       
  2316             aMeanThroughput = RPacketQoS::EMeanThroughput50000;
       
  2317             break;
       
  2318             }
       
  2319         case GPDS_QOS_METC_10:
       
  2320             {
       
  2321             aMeanThroughput = RPacketQoS::EMeanThroughput100000;
       
  2322             break;
       
  2323             }
       
  2324         case GPDS_QOS_METC_11:
       
  2325             {
       
  2326             aMeanThroughput = RPacketQoS::EMeanThroughput200000;
       
  2327             break;
       
  2328             }
       
  2329         case GPDS_QOS_METC_12:
       
  2330             {
       
  2331             aMeanThroughput = RPacketQoS::EMeanThroughput500000;
       
  2332             break;
       
  2333             }
       
  2334         case GPDS_QOS_METC_13:
       
  2335             {
       
  2336             aMeanThroughput = RPacketQoS::EMeanThroughput1000000;
       
  2337             break;
       
  2338             }
       
  2339         case GPDS_QOS_METC_14:
       
  2340             {
       
  2341             aMeanThroughput = RPacketQoS::EMeanThroughput2000000;
       
  2342             break;
       
  2343             }
       
  2344         case GPDS_QOS_METC_15:
       
  2345             {
       
  2346             aMeanThroughput = RPacketQoS::EMeanThroughput5000000;
       
  2347             break;
       
  2348             }
       
  2349         case GPDS_QOS_METC_16:
       
  2350             {
       
  2351             aMeanThroughput = RPacketQoS::EMeanThroughput10000000;
       
  2352             break;
       
  2353             }
       
  2354         case GPDS_QOS_METC_17:
       
  2355             {
       
  2356             aMeanThroughput = RPacketQoS::EMeanThroughput20000000;
       
  2357             break;
       
  2358             }
       
  2359         case GPDS_QOS_METC_18:
       
  2360             {
       
  2361             aMeanThroughput = RPacketQoS::EMeanThroughput50000000;
       
  2362             break;
       
  2363             }
       
  2364         case GPDS_QOS_METC_31:
       
  2365             {
       
  2366             aMeanThroughput = RPacketQoS::EMeanThroughputBestEffort;
       
  2367             break;
       
  2368             }
       
  2369         default:
       
  2370             {
       
  2371 
       
  2372             TFLOGSTRING("TSY: CMmPacketQoSMessHandler::MapQoSInfoToClient. Switch MeanThroughput case default");
       
  2373 OstTrace0( TRACE_NORMAL, DUP5_CMMPACKETQOSMESSHANDLER_MAPQOSINFOTOCLIENT, "CMmPacketQoSMessHandler::MapQoSInfoToClient, Switch MeanThroughput case default" );
       
  2374 
       
  2375             aMeanThroughput = RPacketQoS::EUnspecifiedMeanThroughput;
       
  2376             break;
       
  2377             }
       
  2378         }
       
  2379     }
       
  2380 
       
  2381 // -----------------------------------------------------------------------------
       
  2382 // CMmPacketQoSMessHandler::MapQoS99InfoToClient
       
  2383 // Maps QoS R99 parameters to client.
       
  2384 // -----------------------------------------------------------------------------
       
  2385 //
       
  2386 void CMmPacketQoSMessHandler::MapQoS99InfoToClient(
       
  2387     const TQoS99Info& aQoS99Info,       // Server side QoS R99 info packet
       
  2388     RPacketQoS::TQoSR99_R4Negotiated& aQoS99Negotiated,
       
  2389     RPacketQoS::TQoSR5Negotiated& aQoSR5Negotiated ) // Client side QoS R99 info packet
       
  2390     {
       
  2391     
       
  2392     TFLOGSTRING("TSY: CMmPacketQoSMessHandler::MapQoS99InfoToClient.");
       
  2393 OstTrace0( TRACE_NORMAL, CMMPACKETQOSMESSHANDLER_MAPQOS99INFOTOCLIENT, "CMmPacketQoSMessHandler::MapQoS99InfoToClient" );
       
  2394 
       
  2395     switch ( aQoS99Info.iTrafficClass )
       
  2396         {
       
  2397         //case GPDS_QOS99_TRAC_SUBSCRIBED is defauld value
       
  2398         
       
  2399         case GPDS_QOS99_TRAC_CONVERSATIONAL:
       
  2400             {
       
  2401             aQoSR5Negotiated.iTrafficClass
       
  2402                 = RPacketQoS::ETrafficClassConversational;
       
  2403             break;
       
  2404             }
       
  2405         case GPDS_QOS99_TRAC_STREAMING:
       
  2406             {
       
  2407             aQoSR5Negotiated.iTrafficClass
       
  2408                 = RPacketQoS::ETrafficClassStreaming;
       
  2409             break;
       
  2410             }
       
  2411         case GPDS_QOS99_TRAC_INTERACTIVE:
       
  2412             {
       
  2413             aQoSR5Negotiated.iTrafficClass
       
  2414                 = RPacketQoS::ETrafficClassInteractive;
       
  2415             break;
       
  2416             }
       
  2417         case GPDS_QOS99_TRAC_BACKGROUND:
       
  2418             {
       
  2419             aQoSR5Negotiated.iTrafficClass
       
  2420                 = RPacketQoS::ETrafficClassBackground;
       
  2421             break;
       
  2422             }
       
  2423         default:
       
  2424             {
       
  2425 
       
  2426             TFLOGSTRING("TSY: CMmPacketQoSMessHandler::MapQoS99InfoToClient. Switch TrafficClass case default");
       
  2427 OstTrace0( TRACE_NORMAL, DUP1_CMMPACKETQOSMESSHANDLER_MAPQOS99INFOTOCLIENT, "CMmPacketQoSMessHandler::MapQoS99InfoToClient, Switch TrafficClass case default" );
       
  2428 
       
  2429             aQoSR5Negotiated.iTrafficClass
       
  2430                 = RPacketQoS::ETrafficClassUnspecified;
       
  2431             break;
       
  2432             }
       
  2433         }
       
  2434 
       
  2435     switch ( aQoS99Info.iDeliveryOrderReqd )
       
  2436         {
       
  2437         //case GPDS_QOS99_DELO_SUBSCRIBED is defauld value:
       
  2438 
       
  2439         case GPDS_QOS99_DELO_YES:
       
  2440             {
       
  2441             aQoSR5Negotiated.iDeliveryOrderReqd
       
  2442                 = RPacketQoS::EDeliveryOrderRequired;
       
  2443             break;
       
  2444             }
       
  2445         case GPDS_QOS99_DELO_NO:
       
  2446             {
       
  2447             aQoSR5Negotiated.iDeliveryOrderReqd
       
  2448                 = RPacketQoS::EDeliveryOrderNotRequired;
       
  2449             break;
       
  2450             }
       
  2451         default:
       
  2452             {
       
  2453 
       
  2454             TFLOGSTRING("TSY: CMmPacketQoSMessHandler::MapQoS99InfoToClient. Switch DeliveryOrderReqd case default");
       
  2455 OstTrace0( TRACE_NORMAL, DUP2_CMMPACKETQOSMESSHANDLER_MAPQOS99INFOTOCLIENT, "CMmPacketQoSMessHandler::MapQoS99InfoToClient, Switch DeliveryOrderReqd case default" );
       
  2456 
       
  2457             aQoSR5Negotiated.iDeliveryOrderReqd
       
  2458                 = RPacketQoS::EDeliveryOrderUnspecified;
       
  2459             break;
       
  2460             }
       
  2461         }
       
  2462 
       
  2463     switch ( aQoS99Info.iDeliverErroneousSDU )
       
  2464         {
       
  2465         //case GPDS_QOS99_DOES_SUBSCRIBED is defauld value:
       
  2466 
       
  2467         case GPDS_QOS99_DOES_NO_DETECT:
       
  2468             {
       
  2469             aQoSR5Negotiated.iDeliverErroneousSDU
       
  2470                 = RPacketQoS::EErroneousSDUNoDetection;
       
  2471             break;
       
  2472             }
       
  2473         case GPDS_QOS99_DOES_YES:
       
  2474             {
       
  2475             aQoSR5Negotiated.iDeliverErroneousSDU
       
  2476                 = RPacketQoS::EErroneousSDUDeliveryRequired;
       
  2477             break;
       
  2478             }
       
  2479         case GPDS_QOS99_DOES_NO:
       
  2480             {
       
  2481             aQoSR5Negotiated.iDeliverErroneousSDU
       
  2482                 = RPacketQoS::EErroneousSDUDeliveryNotRequired;
       
  2483             break;
       
  2484             }
       
  2485         default:
       
  2486             {
       
  2487 
       
  2488             TFLOGSTRING("TSY: CMmPacketQoSMessHandler::MapQoS99InfoToClient. Switch DeliverErroneousSDU case default");
       
  2489 OstTrace0( TRACE_NORMAL, DUP3_CMMPACKETQOSMESSHANDLER_MAPQOS99INFOTOCLIENT, "CMmPacketQoSMessHandler::MapQoS99InfoToClient, Switch DeliverErroneousSDU case default" );
       
  2490 
       
  2491             aQoSR5Negotiated.iDeliverErroneousSDU
       
  2492                 = RPacketQoS::EErroneousSDUDeliveryUnspecified;
       
  2493             break;
       
  2494             }
       
  2495         }
       
  2496 
       
  2497     switch ( aQoS99Info.iBER )
       
  2498         {
       
  2499         //case GPDS_QOS99_RBER_SUBSCRIBED is defauld value:
       
  2500 
       
  2501         case GPDS_QOS99_RBER_1:
       
  2502             {
       
  2503             aQoSR5Negotiated.iBER
       
  2504                 = RPacketQoS::EBERFivePerHundred;
       
  2505             break;
       
  2506             }
       
  2507         case GPDS_QOS99_RBER_2:
       
  2508             {
       
  2509             aQoSR5Negotiated.iBER
       
  2510                 = RPacketQoS::EBEROnePerHundred;
       
  2511             break;
       
  2512             }
       
  2513         case GPDS_QOS99_RBER_3:
       
  2514             {
       
  2515             aQoSR5Negotiated.iBER
       
  2516                 = RPacketQoS::EBERFivePerThousand;
       
  2517             break;
       
  2518             }
       
  2519         case GPDS_QOS99_RBER_4:
       
  2520             {
       
  2521             aQoSR5Negotiated.iBER
       
  2522                 = RPacketQoS::EBERFourPerThousand;
       
  2523             break;
       
  2524             }
       
  2525         case GPDS_QOS99_RBER_5:
       
  2526             {
       
  2527             aQoSR5Negotiated.iBER
       
  2528                 = RPacketQoS::EBEROnePerThousand;
       
  2529             break;
       
  2530             }
       
  2531         case GPDS_QOS99_RBER_6:
       
  2532             {
       
  2533             aQoSR5Negotiated.iBER
       
  2534                 = RPacketQoS::EBEROnePerTenThousand;
       
  2535             break;
       
  2536             }
       
  2537         case GPDS_QOS99_RBER_7:
       
  2538             {
       
  2539             aQoSR5Negotiated.iBER
       
  2540                 = RPacketQoS::EBEROnePerHundredThousand;
       
  2541             break;
       
  2542             }
       
  2543         case GPDS_QOS99_RBER_8:
       
  2544             {
       
  2545             aQoSR5Negotiated.iBER
       
  2546                 = RPacketQoS::EBEROnePerMillion;
       
  2547             break;
       
  2548             }
       
  2549         case GPDS_QOS99_RBER_9:
       
  2550             {
       
  2551             aQoSR5Negotiated.iBER
       
  2552                 = RPacketQoS::EBERSixPerHundredMillion;
       
  2553             break;
       
  2554             }
       
  2555         default:
       
  2556             {
       
  2557 
       
  2558             TFLOGSTRING("TSY: CMmPacketQoSMessHandler::MapQoS99InfoToClient. Switch BER case default");
       
  2559 OstTrace0( TRACE_NORMAL, DUP4_CMMPACKETQOSMESSHANDLER_MAPQOS99INFOTOCLIENT, "CMmPacketQoSMessHandler::MapQoS99InfoToClient, Switch BER case default" );
       
  2560 
       
  2561             aQoSR5Negotiated.iBER
       
  2562                 = RPacketQoS::EBERUnspecified;
       
  2563             break;
       
  2564             }
       
  2565         }
       
  2566 
       
  2567     switch ( aQoS99Info.iSDUErrorRatio )
       
  2568         {
       
  2569         //case GPDS_QOS99_SDER_SUBSCRIBED is defauld value:
       
  2570 
       
  2571         case GPDS_QOS99_SDER_7:
       
  2572             {
       
  2573             aQoSR5Negotiated.iSDUErrorRatio
       
  2574                 = RPacketQoS::ESDUErrorRatioOnePerTen;
       
  2575             break;
       
  2576             }
       
  2577         case GPDS_QOS99_SDER_1:
       
  2578             {
       
  2579             aQoSR5Negotiated.iSDUErrorRatio
       
  2580                 = RPacketQoS::ESDUErrorRatioOnePerHundred;
       
  2581             break;
       
  2582             }
       
  2583         case GPDS_QOS99_SDER_2:
       
  2584             {
       
  2585             aQoSR5Negotiated.iSDUErrorRatio
       
  2586                 = RPacketQoS::ESDUErrorRatioSevenPerThousand;
       
  2587             break;
       
  2588             }
       
  2589         case GPDS_QOS99_SDER_3:
       
  2590             {
       
  2591             aQoSR5Negotiated.iSDUErrorRatio
       
  2592                 = RPacketQoS::ESDUErrorRatioOnePerThousand;
       
  2593             break;
       
  2594             }
       
  2595         case GPDS_QOS99_SDER_4:
       
  2596             {
       
  2597             aQoSR5Negotiated.iSDUErrorRatio
       
  2598                 = RPacketQoS::ESDUErrorRatioOnePerTenThousand;
       
  2599             break;
       
  2600             }
       
  2601         case GPDS_QOS99_SDER_5:
       
  2602             {
       
  2603             aQoSR5Negotiated.iSDUErrorRatio
       
  2604                 = RPacketQoS::ESDUErrorRatioOnePerHundredThousand;
       
  2605             break;
       
  2606             }
       
  2607         case GPDS_QOS99_SDER_6:
       
  2608             {
       
  2609             aQoSR5Negotiated.iSDUErrorRatio
       
  2610                 = RPacketQoS::ESDUErrorRatioOnePerMillion;
       
  2611             break;
       
  2612             }
       
  2613         default:
       
  2614             {
       
  2615 
       
  2616             TFLOGSTRING("TSY: CMmPacketQoSMessHandler::MapQoS99InfoToClient. Switch SDUErrorRatio case default");
       
  2617 OstTrace0( TRACE_NORMAL, DUP5_CMMPACKETQOSMESSHANDLER_MAPQOS99INFOTOCLIENT, "CMmPacketQoSMessHandler::MapQoS99InfoToClient, Switch SDUErrorRatio case default" );
       
  2618 
       
  2619             aQoSR5Negotiated.iSDUErrorRatio
       
  2620                 = RPacketQoS::ESDUErrorRatioUnspecified;
       
  2621             break;
       
  2622             }
       
  2623         }
       
  2624 
       
  2625     switch ( aQoS99Info.iTrafficHandlingPriority )
       
  2626         {
       
  2627         //case GPDS_QOS99_TRHP_SUBSCRIBED is defauld value:
       
  2628 
       
  2629         case GPDS_QOS99_TRHP_1:
       
  2630             {
       
  2631             aQoSR5Negotiated.iTrafficHandlingPriority
       
  2632                 = RPacketQoS::ETrafficPriority1;
       
  2633             break;
       
  2634             }
       
  2635         case GPDS_QOS99_TRHP_2:
       
  2636             {
       
  2637             aQoSR5Negotiated.iTrafficHandlingPriority
       
  2638                 = RPacketQoS::ETrafficPriority2;
       
  2639             break;
       
  2640             }
       
  2641         case GPDS_QOS99_TRHP_3:
       
  2642             {
       
  2643             aQoSR5Negotiated.iTrafficHandlingPriority
       
  2644                 = RPacketQoS::ETrafficPriority3;
       
  2645             break;
       
  2646             }
       
  2647         default:
       
  2648             {
       
  2649 
       
  2650             TFLOGSTRING("TSY: CMmPacketQoSMessHandler::MapQoS99InfoToClient. Switch TrafficHandlingPriority case default");
       
  2651 OstTrace0( TRACE_NORMAL, DUP6_CMMPACKETQOSMESSHANDLER_MAPQOS99INFOTOCLIENT, "CMmPacketQoSMessHandler::MapQoS99InfoToClient, Switch TrafficHandlingPriority case default" );
       
  2652 
       
  2653             aQoSR5Negotiated.iTrafficHandlingPriority
       
  2654                 = RPacketQoS::ETrafficPriorityUnspecified;
       
  2655             break;
       
  2656             }
       
  2657         }
       
  2658 
       
  2659     aQoSR5Negotiated.iTransferDelay = aQoS99Info.iTransferDelay;
       
  2660     aQoSR5Negotiated.iMaxSDUSize = aQoS99Info.iMaxSDUSize;
       
  2661     aQoSR5Negotiated.iMaxRate.iUplinkRate = aQoS99Info.iMaxUplinkRate;
       
  2662     aQoSR5Negotiated.iMaxRate.iDownlinkRate = aQoS99Info.iMaxDownlinkRate;
       
  2663     aQoSR5Negotiated.iGuaranteedRate.iUplinkRate
       
  2664         = aQoS99Info.iGuaranteedUplinkRate;
       
  2665     aQoSR5Negotiated.iGuaranteedRate.iDownlinkRate
       
  2666         = aQoS99Info.iGuaranteedDownlinkRate;
       
  2667 
       
  2668     aQoS99Negotiated = aQoSR5Negotiated;
       
  2669     aQoSR5Negotiated.iSignallingIndication =
       
  2670         aQoS99Info.iSignallingIndication;
       
  2671 
       
  2672     switch ( aQoS99Info.iSourceStatisticsDescriptor )
       
  2673         {
       
  2674         case GPDS_SOURCE_UNKNOWN:
       
  2675             {
       
  2676             aQoSR5Negotiated.iSourceStatisticsDescriptor
       
  2677                 = RPacketQoS::ESourceStatisticsDescriptorUnknown;
       
  2678             break;
       
  2679             }
       
  2680         case GPDS_SOURCE_SPEECH:
       
  2681             {
       
  2682             aQoSR5Negotiated.iSourceStatisticsDescriptor
       
  2683                 = RPacketQoS::ESourceStatisticsDescriptorSpeech;
       
  2684             break;
       
  2685             }
       
  2686         case GPDS_SOURCE_DEFAULT:
       
  2687         default:
       
  2688             {
       
  2689 
       
  2690             TFLOGSTRING("TSY: CMmPacketQoSMessHandler::MapQoS99InfoToClient. Switch SourceStatisticsDescriptor case default");
       
  2691 OstTrace0( TRACE_NORMAL, DUP7_CMMPACKETQOSMESSHANDLER_MAPQOS99INFOTOCLIENT, "CMmPacketQoSMessHandler::MapQoS99InfoToClient, Switch SourceStatisticsDescriptor case default" );
       
  2692 
       
  2693             aQoSR5Negotiated.iSourceStatisticsDescriptor
       
  2694                 = RPacketQoS::ESourceStatisticsDescriptorUnknown;
       
  2695             break;
       
  2696             }
       
  2697         }
       
  2698     }
       
  2699 
       
  2700 //=============================================================================
       
  2701 
       
  2702 // OTHER EXPORTED FUNCTIONS
       
  2703 
       
  2704     // None
       
  2705 
       
  2706 // End of File