adaptationlayer/tsy/nokiatsy_dll/src/cmmpacketmesshandlercontextlist.cpp
changeset 0 63b37f68c1ce
child 5 8ccc39f9d787
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/adaptationlayer/tsy/nokiatsy_dll/src/cmmpacketmesshandlercontextlist.cpp	Fri Nov 06 17:28:23 2009 +0000
@@ -0,0 +1,2222 @@
+/*
+* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+
+
+// INCLUDE FILES
+#include "cmmpacketmesshandlercontextlist.h"
+#include "cmmpacketservicemesshandler.h"
+#include <gpdsisi.h>
+#include "tsylogger.h"
+#include "osttracedefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmmpacketmesshandlercontextlisttraces.h"
+#endif
+
+// EXTERNAL DATA STRUCTURES
+    //None
+
+// EXTERNAL FUNCTION PROTOTYPES
+    //None
+
+// CONSTANTS
+    //None
+
+// MACROS
+    //None
+
+// LOCAL CONSTANTS AND MACROS
+    //None
+
+// MODULE DATA STRUCTURES
+    //None
+
+// LOCAL FUNCTION PROTOTYPES
+    //None
+
+// FORWARD DECLARATIONS
+    //None
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+    //None
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::CMmPacketContextMesshandlerList
+// C++ default constructor can NOT contain any code, that might leave.
+// -----------------------------------------------------------------------------
+//
+CMmPacketContextMesshandlerList::CMmPacketContextMesshandlerList()
+    {
+
+    TFLOGSTRING("TSY: CMmPacketContextMesshandlerList::CMmPacketContextMesshandlerList");
+OstTrace0( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_CMMPACKETCONTEXTMESSHANDLERLIST, "CMmPacketContextMesshandlerList::CMmPacketContextMesshandlerList" );
+
+    //None
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CMmPacketContextMesshandlerList* CMmPacketContextMesshandlerList::NewL()
+    {
+
+    TFLOGSTRING("TSY: CMmPacketContextMesshandlerList::NewL");
+OstTrace0( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_NEWL, "CMmPacketContextMesshandlerList::NewL" );
+
+    CMmPacketContextMesshandlerList* const contextList =
+        new ( ELeave ) CMmPacketContextMesshandlerList();
+
+    CleanupStack::PushL( contextList );
+    contextList->ConstructL();
+    CleanupStack::Pop( contextList );
+
+    return contextList;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CMmPacketContextMesshandlerList::ConstructL()
+    {
+
+    TFLOGSTRING("TSY: CMmPacketContextMesshandlerList::ConstructL");
+OstTrace0( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_CONSTRUCTL, "CMmPacketContextMesshandlerList::ConstructL" );
+
+    InitAttributesAndLists();
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::InitAttributesAndLists
+// Initialize used lists and attributes.
+// -----------------------------------------------------------------------------
+//
+void CMmPacketContextMesshandlerList::InitAttributesAndLists()
+    {
+
+    TFLOGSTRING("TSY: CMmPacketContextMesshandlerList::InitAttributesAndLists");
+OstTrace0( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_INITATTRIBUTESANDLISTS, "CMmPacketContextMesshandlerList::InitAttributesAndLists" );
+
+    // A list for defined proxy ids ( see IscNokiaDefinitions.h )
+    // Max number of supported contexts is limited to be 11
+    // Get defined proxy ids
+    const TUint8 definedProxyIds[KMmMaxNumberOfContexts] = {
+        KMmPacketContextProxy1_DOS, KMmPacketContextProxy2_DOS,
+        KMmPacketContextProxy3_DOS, KMmPacketContextProxy4_DOS,
+        KMmPacketContextProxy5_DOS, KMmPacketContextProxy6_DOS,
+        KMmPacketContextProxy7_DOS, KMmPacketContextProxy8_DOS,
+        KMmPacketContextProxy9_DOS, KMmPacketContextProxy10_DOS,
+        KMmPacketContextProxy11_DOS };
+
+    for ( TInt i = 0; i < KMmMaxNumberOfContexts; i++ )
+        {
+        iProxyIdList[i].iChannelId = definedProxyIds[i];
+
+        // Mark proxy id free
+        iProxyIdList[i].iIsFree = ETrue;
+
+        // Initialize context info list
+        iContextInfoArray[i].iContextId = GPDS_CID_VOID;
+
+        iContextInfoArray[i].iChannelId = KTUint8NotDefined;
+
+        iContextInfoArray[i].iContextName.Zero();
+        iContextInfoArray[i].iHostContextName.Zero();
+        iContextInfoArray[i].iPipeStatus = PN_PIPE_DISABLE;
+        iContextInfoArray[i].iPipeHandle = KInvalidPipeHandle;
+        iContextInfoArray[i].iCreateContextIdTransId = KTUint8NotDefined;
+        iContextInfoArray[i].iPipeCreateTransId = KTUint8NotDefined;
+        iContextInfoArray[i].iContextType = GPDS_CONT_TYPE_NORMAL ;
+        iContextInfoArray[i].iInitialiseStarted = EFalse;
+        iContextInfoArray[i].iContextConfigurationType = KTIntNotDefined;
+        iContextInfoArray[i].iActivationTraId = KTUint8NotDefined;
+        iContextInfoArray[i].iPipeResetTraId = KTUint8NotDefined;
+        iContextInfoArray[i].iDeleteTraId = KTUint8NotDefined;
+        iContextInfoArray[i].iChannelOpened = EFalse;
+        }
+
+    iNumberOfCreatedContexts = 0;
+
+    iDialUpContextId = GPDS_CID_VOID;
+    iDialUpContextName.Zero();
+
+    iSecondaryDialUpContextId = GPDS_CID_VOID;
+    iSecondaryDialUpContextName.Zero();
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::~CMmPacketContextMesshandlerList
+// Destructor, deletes all allocated resources.
+// -----------------------------------------------------------------------------
+//
+CMmPacketContextMesshandlerList::~CMmPacketContextMesshandlerList()
+    {
+
+    TFLOGSTRING("TSY: CMmPacketContextMesshandlerList::~CMmPacketContextMesshandlerList" );
+OstTrace0( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_CMMPACKETCONTEXTMESSHANDLERLIST, "CMmPacketContextMesshandlerList::~CMmPacketContextMesshandlerList" );
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        iContextInfoArray[i].iIscApi.Close();
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::AddObject
+// Adds new context info to the info list.
+// Sets used proxy id reserved in proxy id list.
+// -----------------------------------------------------------------------------
+//
+TInt CMmPacketContextMesshandlerList::AddObject(
+    const TInt aObjectId,
+    const TUint8 aChannelId,
+    const TInfoName& aContextName,
+    const TInfoName& aHostContextName )
+    {
+
+    TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::AddObject. Object Id: %d", aObjectId );
+OstTrace1( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_ADDOBJECT, "CMmPacketContextMesshandlerList::AddObject;aObjectId=%d", aObjectId );
+
+    TInt ret( KErrArgument );
+
+    if( 0 != aContextName.Compare( KStringExternal ) ||
+        0 != aContextName.Compare( KStringExternal2 ) )
+        {
+        if ( KMmMaxNumberOfContexts > iNumberOfCreatedContexts )
+            {
+            // Find given proxy id from proxy id list
+            for (  TInt i = 0; i < KMmMaxNumberOfContexts; i++  )
+                {
+                if ( ( aChannelId == iProxyIdList[i].iChannelId ) &&
+                     iProxyIdList[i].iIsFree )
+                    {
+                    iContextInfoArray[iNumberOfCreatedContexts].iChannelId =
+                        aChannelId;
+                    iContextInfoArray[iNumberOfCreatedContexts].iContextName =
+                        aContextName;
+                    iContextInfoArray[iNumberOfCreatedContexts].iHostContextName =
+                        aHostContextName;
+                    iContextInfoArray[iNumberOfCreatedContexts].iObjectId =
+                        aObjectId;
+                    // Set proxy id reserved
+                    iProxyIdList[i].iIsFree = EFalse;
+                    // Increase number of created contexts
+                    iNumberOfCreatedContexts++;
+                    // proxy id found, break
+                    i = KMmMaxNumberOfContexts;
+
+                    ret = KErrNone;
+                    }
+                // no else
+                }
+            }
+        // no else
+        }
+    // no else
+
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::RemoveObject
+// Removes context info from the info list.
+// Sets used proxy id released in proxy id list.
+// -----------------------------------------------------------------------------
+//
+TInt CMmPacketContextMesshandlerList::RemoveObject(
+    TUint8 aContextId )
+    {
+
+    TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::RemoveObject. Context Id: %d", aContextId );
+OstTraceExt1( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_REMOVEOBJECT, "CMmPacketContextMesshandlerList::RemoveObject;aContextId=%hhu", aContextId );
+
+    // Set ret to KErrArgument to check that context is in list
+    TInt ret( KErrArgument );
+
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        // Find aContext from context info list
+        if ( aContextId == iContextInfoArray[i].iContextId )
+            {
+            for ( TInt j = 0; j < KMmMaxNumberOfContexts; j++ )
+                {
+                if ( ( iContextInfoArray[i].iChannelId ==
+                        iProxyIdList[j].iChannelId ) &&
+                    ( EFalse == iProxyIdList[j].iIsFree ) )
+                    {
+
+                    TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::RemoveObject. Context Name: %S", &iContextInfoArray[i].iContextName );
+OstTraceExt1( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_REMOVEOBJECT, "CMmPacketContextMesshandlerList::RemoveObject;Context Name=%S", iContextInfoArray[i].iContextName );
+                    // Release Proxy id
+                    iProxyIdList[j].iIsFree = ETrue;
+                    // Get index to last reserved cell in the list
+                    const TInt lastContext( iNumberOfCreatedContexts - 1 );
+                    // If not already last object
+                    if ( i < lastContext )
+                        {
+                        // Replace object to be remove by last object
+                        iContextInfoArray[i].iContextId =
+                            iContextInfoArray[lastContext].iContextId;
+                        iContextInfoArray[i].iChannelId =
+                            iContextInfoArray[lastContext].iChannelId;
+                        iContextInfoArray[i].iContextName =
+                            iContextInfoArray[lastContext].iContextName;
+                        iContextInfoArray[i].iHostContextName =
+                           iContextInfoArray[lastContext].iHostContextName;
+                        iContextInfoArray[i].iPipeStatus =
+                           iContextInfoArray[lastContext].iPipeStatus;
+                        iContextInfoArray[i].iPipeHandle =
+                           iContextInfoArray[lastContext].iPipeHandle;
+                        iContextInfoArray[i].iCreateContextIdTransId =
+                           iContextInfoArray[lastContext].iCreateContextIdTransId;
+                        iContextInfoArray[i].iPipeCreateTransId =
+                           iContextInfoArray[lastContext].iPipeCreateTransId;
+                        iContextInfoArray[i].iContextType =
+                           iContextInfoArray[lastContext].iContextType;
+                        iContextInfoArray[i].iInitialiseStarted =
+                           iContextInfoArray[lastContext].iInitialiseStarted;
+                        iContextInfoArray[i].iContextConfigurationType =
+                            iContextInfoArray[lastContext].iContextConfigurationType;
+                        iContextInfoArray[i].iActivationTraId =
+                            iContextInfoArray[lastContext].iActivationTraId;
+                        iContextInfoArray[i].iPipeResetTraId =
+                            iContextInfoArray[lastContext].iPipeResetTraId;
+                        iContextInfoArray[i].iDeleteTraId =
+                            iContextInfoArray[lastContext].iDeleteTraId;
+                        }
+                    // no else
+
+                    // Reset object information of the last object
+                    iContextInfoArray[lastContext].iChannelId =
+                        KTUint8NotDefined;
+                    iContextInfoArray[lastContext].iContextName.Zero();
+                    iContextInfoArray[lastContext].iContextId = GPDS_CID_VOID;
+                    iContextInfoArray[lastContext].iHostContextName.Zero();
+                    iContextInfoArray[lastContext].iPipeStatus =
+                       PN_PIPE_DISABLE;
+                    iContextInfoArray[lastContext].iPipeHandle =
+                       KInvalidPipeHandle;
+                    iContextInfoArray[lastContext].iCreateContextIdTransId =
+                        KTUint8NotDefined;
+                    iContextInfoArray[lastContext].iPipeCreateTransId =
+                        KTUint8NotDefined;
+                    iContextInfoArray[lastContext].iContextType =
+                        GPDS_CONT_TYPE_NORMAL;
+                    iContextInfoArray[lastContext].iInitialiseStarted = EFalse;
+                    iContextInfoArray[lastContext].iContextConfigurationType =
+                        KTIntNotDefined;
+                    iContextInfoArray[lastContext].iActivationTraId =
+                        KTUint8NotDefined;
+                    iContextInfoArray[lastContext].iPipeResetTraId =
+                        KTUint8NotDefined;
+                    iContextInfoArray[lastContext].iDeleteTraId =
+                        KTUint8NotDefined;
+
+                    // Decrease number of created contexts
+                    iNumberOfCreatedContexts--;
+
+                    // Proxy id found, break
+                    j = KMmMaxNumberOfContexts;
+                    }
+                // no else
+                }
+            // aContext found, break
+            i = iNumberOfCreatedContexts;
+            }
+        // no else
+        }
+
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::NumberOfContexts
+// This function returns the number of created contexts.
+// -----------------------------------------------------------------------------
+//
+TInt CMmPacketContextMesshandlerList::NumberOfContexts() const
+    {
+
+    TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::NumberOfContexts, %d", iNumberOfCreatedContexts );
+OstTrace1( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_NUMBEROFCONTEXTS, "CMmPacketContextMesshandlerList::NumberOfContexts;iNumberOfCreatedContexts=%d", iNumberOfCreatedContexts );
+
+    return iNumberOfCreatedContexts;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::GenerateNewContextNameAndProxyId
+// Generates new proxy id.
+// -----------------------------------------------------------------------------
+//
+TInt CMmPacketContextMesshandlerList::GenerateProxyId(
+    TUint8& aProxyId )
+    {
+
+    TFLOGSTRING("TSY: CMmPacketContextMesshandlerList::GenerateProxyId");
+OstTrace0( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_GENERATEPROXYID, "CMmPacketContextMesshandlerList::GenerateProxyId" );
+
+    TInt ret( KErrOverflow );
+
+    // Find first free proxy id from the list
+    for ( TInt i = 0; i < KMmMaxNumberOfContexts; i++ )
+        {
+        if ( iProxyIdList[i].iIsFree )
+            {
+            aProxyId = iProxyIdList[i].iChannelId;
+
+            // Proxy id selected, set ret to KErrNone
+            ret = KErrNone;
+            // Free proxy id found, break
+            i = KMmMaxNumberOfContexts;
+            }
+        // no else
+        }
+
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::SetContextId
+// Sets context id to the context info list.
+// -----------------------------------------------------------------------------
+//
+TInt CMmPacketContextMesshandlerList::SetContextId(
+    const TUint8 aContextId,
+    const TUint8 aTransactionId )
+    {
+
+    TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::SetContextId. ContextId: %d", aContextId );
+OstTraceExt1( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_SETCONTEXTID, "CMmPacketContextMesshandlerList::SetContextId;aContextId=%hhu", aContextId );
+
+    TInt ret( KErrNotFound );
+
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        // Find object from the list
+        if ( aTransactionId == iContextInfoArray[i].iCreateContextIdTransId )
+            {
+
+            TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::SetContextId. ContextName: %S", &iContextInfoArray[i].iContextName );
+OstTraceExt1( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_SETCONTEXTID, "CMmPacketContextMesshandlerList::SetContextId;ContextName=%S", iContextInfoArray[i].iContextName );
+            // Set context id to the context info list
+            iContextInfoArray[i].iContextId = aContextId;
+            // Object found, return KErrNone
+            ret = KErrNone;
+            }
+        // no else
+        }
+    // Object not found, return KErrNotFound
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::GetContextNameByContextId
+// This function returns context name by context id.
+// -----------------------------------------------------------------------------
+//
+TInt CMmPacketContextMesshandlerList::GetContextNameByContextId(
+    const TUint8 aContextId,
+    TInfoName& aContextName )
+    {
+
+    TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::GetContextNameByContextId. ContextId: %d", aContextId );
+OstTraceExt1( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_GETCONTEXTNAMEBYCONTEXTID, "CMmPacketContextMesshandlerList::GetContextNameByContextId;aContextId=%hhu", aContextId );
+
+    TInt ret( KErrArgument );
+
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        // Find object from the list
+        if ( aContextId == iContextInfoArray[i].iContextId )
+            {
+            TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::GetContextNameByContextId. ContextName: %S", &iContextInfoArray[i].iContextName );
+OstTraceExt1( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_GETCONTEXTNAMEBYCONTEXTID, "CMmPacketContextMesshandlerList::GetContextNameByContextId;ContextName=%S", iContextInfoArray[i].iContextName );
+            // Set context name to aName
+            aContextName = iContextInfoArray[i].iContextName;
+            // Context id found, return KErrNone
+            ret = KErrNone;
+            i = iNumberOfCreatedContexts;
+            }
+        // no else
+        }
+    // Context id not found, return KErrArgument
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::PipeHandleByContextName
+// This function returns pipehandle by context name.
+// -----------------------------------------------------------------------------
+//
+TUint8 CMmPacketContextMesshandlerList::PipeHandleByContextName(
+    const TInfoName* aContextName )
+    {
+
+    TFLOGSTRING("TSY: CMmPacketContextMesshandlerList::PipeHandleByContextName");
+OstTrace0( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_PIPEHANDLEBYCONTEXTNAME, "CMmPacketContextMesshandlerList::PipeHandleByContextName" );
+
+    TUint8 pipeHandle( KInvalidPipeHandle );
+
+    // Find context pipehandle from context info list
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        if ( *aContextName == iContextInfoArray[i].iContextName )
+            {
+
+            TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::PipeHandleByContextName, PipeHandle: %d", iContextInfoArray[i].iPipeHandle );
+OstTrace1( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_PIPEHANDLEBYCONTEXTNAME, "CMmPacketContextMesshandlerList::PipeHandleByContextName;PipeHandle=%d", iContextInfoArray[i].iPipeHandle );
+            // Return object from the context info list
+            pipeHandle = iContextInfoArray[i].iPipeHandle;
+            }
+        // no else
+        }
+    // Valid values to return are, 0x00, 0x01, 0xFF = KInvalidPipeHandle
+    return pipeHandle;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::ProxyIdByContextName
+// This function returns proxy id by context name.
+// -----------------------------------------------------------------------------
+//
+TUint8 CMmPacketContextMesshandlerList::ProxyIdByContextName(
+    const TInfoName* aContextName )
+    {
+
+    TFLOGSTRING("TSY: CMmPacketContextMesshandlerList::ProxyIdByContextName");
+OstTrace0( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_PROXYIDBYCONTEXTNAME, "CMmPacketContextMesshandlerList::ProxyIdByContextName" );
+
+    TUint8 proxyId( KTUint8NotDefined );
+
+    // Find context proxyId from context info list
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        if ( *aContextName == iContextInfoArray[i].iContextName )
+            {
+
+            TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::ProxyIdByContextName, ProxyId: %d", iContextInfoArray[i].iChannelId );
+OstTrace1( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_PROXYIDBYCONTEXTNAME, "CMmPacketContextMesshandlerList::ProxyIdByContextName;ProxyId=%d", iContextInfoArray[i].iChannelId );
+
+            proxyId = iContextInfoArray[i].iChannelId;
+            }
+        // no else
+        }
+    // Valid values to return are, 0x00, 0x01, 0xFF = Not defined
+    return proxyId;
+    }
+
+TUint8 CMmPacketContextMesshandlerList::ProxyIdByPipeHandle(
+    TUint8 aPipeHandle
+    )
+    {
+    TFLOGSTRING2("TSY CMmPacketContextMesshandlerList::ProxyIdByPipeHandle 0x%x>", aPipeHandle );
+    OstTraceExt1( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_PROXYIDBYPIPEHANDLE, "CMmPacketContextMesshandlerList::ProxyIdByPipeHandle;aPipeHandle=%hhx", aPipeHandle );
+
+    TUint8 proxyId( KTUint8NotDefined );
+    // Find context proxyId from context info list
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        if ( aPipeHandle == iContextInfoArray[i].iPipeHandle )
+            {
+            TFLOGSTRING3("TSY CMmPacketContextMesshandlerList::ProxyIdByPipeHandle found 0x%x for pipehandle 0x%x", proxyId, aPipeHandle );
+            OstTraceExt2( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_PROXYIDBYPIPEHANDLE, "CMmPacketContextMesshandlerList::ProxyIdByPipeHandle;proxyId=%hhx;aPipeHandle=%hhx", proxyId, aPipeHandle );
+            proxyId = iContextInfoArray[i].iChannelId;
+            i = iNumberOfCreatedContexts;
+            }
+        // no else
+        }
+
+    // Valid values to return are, 0x00, 0x01, 0xFF = Not defined
+    return proxyId;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::OpenChannel
+// Opens channel with the specified id.
+// -----------------------------------------------------------------------------
+//
+TInt CMmPacketContextMesshandlerList::OpenChannel( TUint8 aChannelId )
+    {
+    TFLOGSTRING2("TSY: MmPacketContextMesshandlerList::OpenChannel;aChannelId=%x", aChannelId);
+    OstTraceExt1( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_OPENCHANNEL, "CMmPacketContextMesshandlerList::OpenChannel;aChannelId=%hhu", aChannelId );
+    TInt ret( KErrNotReady );
+
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++)
+        {
+        if ( aChannelId == iContextInfoArray[i].iChannelId )
+            {
+            if ( !iContextInfoArray[i].iChannelOpened )
+                {
+                TRequestStatus status( KRequestPending );
+                iContextInfoArray[i].iIscApi.Open( aChannelId, status );
+                User::WaitForRequest( status );
+                ret = status.Int();
+                if ( KErrNone == ret )
+                    {
+                    iContextInfoArray[i].iChannelOpened = ETrue;
+                    }
+                }
+            else
+                {
+                ret = KErrAlreadyExists;
+                }
+            i = iNumberOfCreatedContexts;
+            }
+        }
+
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::CloseChannel
+// Closes channel with the specified id.
+// -----------------------------------------------------------------------------
+//
+TInt CMmPacketContextMesshandlerList::CloseChannel( TUint8 aChannelId )
+    {
+    TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::CloseChannel;aChannelId=%x", aChannelId);
+    OstTraceExt1( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_CLOSECHANNEL, "CMmPacketContextMesshandlerList::CloseChannel;aChannelId=%hhu", aChannelId );
+    TInt ret( KErrNotFound );
+
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        if ( aChannelId == iContextInfoArray[i].iChannelId )
+            {
+            // closing of closed channel is OK
+            iContextInfoArray[i].iIscApi.Close();
+            ret = KErrNone;
+            iContextInfoArray[i].iChannelOpened = EFalse;
+            i = iNumberOfCreatedContexts;
+            }
+        }
+
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::ContextNameByProxyId
+// This function returns context name by proxy id.
+// -----------------------------------------------------------------------------
+//
+TInt CMmPacketContextMesshandlerList::ContextNameByProxyId(
+    const TUint8 aProxyId,
+    TInfoName& aContextName )
+    {
+
+    TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::ContextNameByProxyId. ProxyId: %d", aProxyId );
+OstTraceExt1( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_CONTEXTNAMEBYPROXYID, "CMmPacketContextMesshandlerList::ContextNameByProxyId;aProxyId=%hhu", aProxyId );
+
+    TInt ret( KErrArgument );
+
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        if ( aProxyId == iContextInfoArray[i].iChannelId )
+            {
+
+            TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::ContextNameByProxyId. ContextName: %S", &iContextInfoArray[i].iContextName );
+OstTraceExt1( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_CONTEXTNAMEBYPROXYID, "CMmPacketContextMesshandlerList::ContextNameByProxyId;ContextName=%S", iContextInfoArray[i].iContextName );
+            // Set context name to aName
+            aContextName = iContextInfoArray[i].iContextName;
+            // Context id found, return KErrNone
+            ret = KErrNone;
+            i = iNumberOfCreatedContexts;
+            }
+        // no else
+        }
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::GetContextTypeByName
+// This function returns context type by context name.
+// -----------------------------------------------------------------------------
+//
+TUint8 CMmPacketContextMesshandlerList::GetContextTypeByName(
+    const TInfoName* const aContextName )
+    {
+
+    TFLOGSTRING("TSY: CMmPacketContextMesshandlerList::GetContextTypeByName");
+OstTrace0( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_GETCONTEXTTYPEBYNAME, "CMmPacketContextMesshandlerList::GetContextTypeByName" );
+
+    TUint8 ret( GPDS_CONT_TYPE_NORMAL );
+
+    // Find context proxyId from context info list
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        if ( *aContextName == iContextInfoArray[i].iContextName )
+            {
+            // Return object from the context info list
+            // return iContextInfoArray[i].iContextType;
+            if( 0 != iContextInfoArray[i].iHostContextName.Length() )
+                {
+                 ret = GPDS_CONT_TYPE_SEC;
+                }
+            // no else
+
+            TFLOGSTRING3("TSY: CMmPacketContextMesshandlerList::GetContextTypeByName. ContextName: %S, ContextType: %d", &iContextInfoArray[i].iContextName, ret );
+
+OstTraceExt2( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_GETCONTEXTTYPEBYNAME, "CMmPacketContextMesshandlerList::GetContextTypeByName;ContextName=%S;ContextType=%hhu", iContextInfoArray[i].iContextName, ret );
+            }
+        // no else
+        }
+
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::SetCreateContextIdTransId
+// Sets iCreateContextIdTransId of the specified context by context name.
+// -----------------------------------------------------------------------------
+//
+TInt CMmPacketContextMesshandlerList::SetCreateContextIdTransId(
+    const TUint8 aTransactionId,
+    const TInfoName* aContextName )
+    {
+
+    TFLOGSTRING("TSY: CMmPacketContextMesshandlerList::SetCreateContextIdTransId");
+OstTrace0( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_SETCREATECONTEXTIDTRANSID, "CMmPacketContextMesshandlerList::SetCreateContextIdTransId" );
+
+    TInt ret( KErrNotFound );
+
+    // Find context proxyId from context info list
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        if ( *aContextName == iContextInfoArray[i].iContextName )
+            {
+
+            TFLOGSTRING3("TSY: CMmPacketContextMesshandlerList::SetCreateContextIdTransId. ContextName: %S, IdTransId: %d", &iContextInfoArray[i].iContextName, aTransactionId );
+
+OstTraceExt2( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_SETCREATECONTEXTIDTRANSID, "CMmPacketContextMesshandlerList::SetCreateContextIdTransId;ContextName=%S;aTransactionId=%d", iContextInfoArray[i].iContextName, aTransactionId );
+            // Return object from the context info list
+            iContextInfoArray[i].iCreateContextIdTransId = aTransactionId;
+            ret = KErrNone;
+            i = iNumberOfCreatedContexts;
+            }
+        // no else
+        }
+
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::SetPipeCreateTransId
+// Sets iPipeCreateTransId of the specified context by context name.
+// -----------------------------------------------------------------------------
+//
+TInt CMmPacketContextMesshandlerList::SetPipeCreateTransId(
+    const TUint8 aTransactionId,
+    const TInfoName* aContextName )
+    {
+
+    TFLOGSTRING("TSY: CMmPacketContextMesshandlerList::SetPipeCreateTransId");
+OstTrace0( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_SETPIPECREATETRANSID, "CMmPacketContextMesshandlerList::SetPipeCreateTransId" );
+
+    TInt ret( KErrNotFound );
+
+    // Find context proxyId from context info list
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        if ( *aContextName == iContextInfoArray[i].iContextName )
+            {
+
+            TFLOGSTRING3("TSY: CMmPacketContextMesshandlerList::SetPipeCreateTransId. ContextName: %S, CreateTransId: %d", &iContextInfoArray[i].iContextName, aTransactionId );
+
+OstTraceExt2( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_SETPIPECREATETRANSID, "CMmPacketContextMesshandlerList::SetPipeCreateTransId;ContextName=%S;aTransactionId=%hhu", iContextInfoArray[i].iContextName, aTransactionId );
+            // Return object from the context info list
+            iContextInfoArray[i].iPipeCreateTransId = aTransactionId;
+            ret = KErrNone;
+            i = iNumberOfCreatedContexts;
+            }
+        // no else
+        }
+
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::SetGpdsLlConfigureTraId
+// Sets iGpdsLlConfigureTraId of the specified context by context Id.
+// -----------------------------------------------------------------------------
+//
+TInt CMmPacketContextMesshandlerList::SetGpdsLlConfigureTraId(
+    const TUint8 aTransactionId,
+    const TUint8 aContextId )
+    {
+
+    TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::SetGpdsLlConfigureTraId. ContextId: %d", aContextId );
+OstTraceExt1( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_SETGPDSLLCONFIGURETRAID, "CMmPacketContextMesshandlerList::SetGpdsLlConfigureTraId;aContextId=%hhu", aContextId );
+
+    TInt ret( KErrNotFound );
+
+    // Find context proxyId from context info list
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        if ( aContextId == iContextInfoArray[i].iContextId )
+            {
+
+            TFLOGSTRING3("TSY: CMmPacketContextMesshandlerList::SetGpdsLlConfigureTraId. ContextName: %S, L1ConfigureTransId: %d", &iContextInfoArray[i].iContextName, aTransactionId );
+OstTraceExt2( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_SETGPDSLLCONFIGURETRAID, "CMmPacketContextMesshandlerList::SetGpdsLlConfigureTraId;ContextName=%S;aTransactionId=%hhu", iContextInfoArray[i].iContextName, aTransactionId );
+
+            // Return object from the context info list
+            iContextInfoArray[i].iGpdsLlConfigureTraId = aTransactionId;
+            ret = KErrNone;
+            i = iNumberOfCreatedContexts;
+            }
+        // no else
+        }
+
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::SetRemovePipeTraId
+// Sets the iPipeRemoveTraId specified by pipe handle.
+// -----------------------------------------------------------------------------
+//
+TInt CMmPacketContextMesshandlerList::SetRemovePipeTraId(
+    const TUint8 aTransactionId,
+    const TInt aPipeHandle )
+    {
+
+    TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::SetRemovePipeTraId. PipeHandle: %d", aPipeHandle );
+OstTrace1( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_SETREMOVEPIPETRAID, "CMmPacketContextMesshandlerList::SetRemovePipeTraId;aPipeHandle=%d", aPipeHandle );
+
+    TInt ret( KErrNotFound );
+
+    // Find context proxyId from context info list
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        if ( aPipeHandle == iContextInfoArray[i].iPipeHandle )
+            {
+
+            TFLOGSTRING3("TSY: CMmPacketContextMesshandlerList::SetRemovePipeTraId. ContextName: %S, RemovePipeTraId: %d", &iContextInfoArray[i].iContextName, aTransactionId );
+OstTraceExt2( TRACE_NORMAL, DUP2_CMMPACKETCONTEXTMESSHANDLERLIST_SETREMOVEPIPETRAID, "CMmPacketContextMesshandlerList::SetRemovePipeTraId;ContextName=%S;aTransactionId=%hhu", iContextInfoArray[i].iContextName, aTransactionId );
+
+            // Return object from the context info list
+            iContextInfoArray[i].iRemovePipeTraId = aTransactionId;
+            ret = KErrNone;
+            i = iNumberOfCreatedContexts;
+            }
+        // no else
+        }
+
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::SetActivationTraId
+// Sets the iActivationTraId specified by context id.
+// -----------------------------------------------------------------------------
+//
+TInt CMmPacketContextMesshandlerList::SetActivationTraId(
+    const TUint8 aContextId,
+    const TUint8 aTransactionId )
+    {
+
+    TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::SetActivationTraId. ContextId: %d", aContextId );
+OstTraceExt1( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_SETACTIVATIONTRAID, "CMmPacketContextMesshandlerList::SetActivationTraId;aContextId=%hhu", aContextId );
+
+    TInt ret( KErrNotFound );
+
+    // Find context proxyId from context info list
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        if ( aContextId == iContextInfoArray[i].iContextId )
+            {
+
+            TFLOGSTRING3("TSY: CMmPacketContextMesshandlerList::SetActivationTraId. ContextName: %S, ActivationTraId: %d", &iContextInfoArray[i].iContextName, aTransactionId );
+OstTraceExt2( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_SETACTIVATIONTRAID, "CMmPacketContextMesshandlerList::SetActivationTraId;ContextName=%S;aTransactionId=%hhu", iContextInfoArray[i].iContextName, aTransactionId );
+
+            // Return object from the context info list
+            iContextInfoArray[i].iActivationTraId = aTransactionId;
+            ret = KErrNone;
+            i = iNumberOfCreatedContexts;
+            }
+        // no else
+        }
+
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::GetAndResetActivationTraId
+// Resets the iActivationTraId and returns saved iActivationTraId
+// specified by context Id.
+// -----------------------------------------------------------------------------
+//
+TUint8 CMmPacketContextMesshandlerList::GetAndResetActivationTraId(
+    const TUint8 aContextId )
+    {
+
+    TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::GetAndResetActivationTraId. ContextId: %d", aContextId );
+OstTraceExt1( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_GETANDRESETACTIVATIONTRAID, "CMmPacketContextMesshandlerList::GetAndResetActivationTraId;aContextId=%hhu", aContextId );
+
+    TUint8 transId( KTUint8NotDefined );
+
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        if ( aContextId == iContextInfoArray[i].iContextId )
+            {
+            // Return object from the context info list
+            transId = iContextInfoArray[i].iActivationTraId;
+            iContextInfoArray[i].iActivationTraId = KTUint8NotDefined;
+
+            TFLOGSTRING3("TSY: CMmPacketContextMesshandlerList::GetAndResetActivationTraId. ContextName: %S, ActivationTraId: %d", &iContextInfoArray[i].iContextName, transId );
+
+OstTraceExt2( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_GETANDRESETACTIVATIONTRAID, "CMmPacketContextMesshandlerList::GetAndResetActivationTraId;ContextName=%S;transId=%hhu", iContextInfoArray[i].iContextName, transId );
+            }
+        // no else
+        }
+
+    return transId;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::SetDeletionTraId
+// Sets the iDeleteTraId specified by context id.
+// -----------------------------------------------------------------------------
+//
+TInt CMmPacketContextMesshandlerList::SetDeletionTraId(
+    const TUint8 aContextId,
+    const TUint8 aTransactionId )
+    {
+
+    TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::SetDeletionTraId. ContextId: %d", aContextId );
+OstTraceExt1( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_SETDELETIONTRAID, "CMmPacketContextMesshandlerList::SetDeletionTraId;aContextId=%hhu", aContextId );
+
+    TInt ret( KErrNotFound );
+
+    // Find context proxyId from context info list
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        if ( aContextId == iContextInfoArray[i].iContextId )
+            {
+
+            TFLOGSTRING3("TSY: CMmPacketContextMesshandlerList::SetDeletionTraId. ContextName: %S, DeleteTraId: %d", &iContextInfoArray[i].iContextName, aTransactionId );
+
+OstTraceExt2( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_SETDELETIONTRAID, "CMmPacketContextMesshandlerList::SetDeletionTraId;ContextName=%S;aTransactionId=%hhu", iContextInfoArray[i].iContextName, aTransactionId );
+            // Return object from the context info list
+            iContextInfoArray[i].iDeleteTraId= aTransactionId;
+            ret = KErrNone;
+            i = iNumberOfCreatedContexts;
+            }
+        // no else
+        }
+
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::GetAndResetDeletionTraId
+// Resets the iDeleteTraId and returns saved iDeleteTraId
+// specified by context Id.
+// -----------------------------------------------------------------------------
+//
+TUint8 CMmPacketContextMesshandlerList::GetAndResetDeletionTraId(
+    const TUint8 aContextId )
+    {
+
+    TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::GetAndResetDeletionTraId. ContextId: %d", aContextId );
+OstTraceExt1( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_GETANDRESETDELETIONTRAID, "CMmPacketContextMesshandlerList::GetAndResetDeletionTraId;aContextId=%hhu", aContextId );
+
+    TUint8 transId( KTUint8NotDefined );
+
+     for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        if ( aContextId == iContextInfoArray[i].iContextId )
+            {
+            // Return object from the context info list
+            transId = iContextInfoArray[i].iDeleteTraId;
+            iContextInfoArray[i].iDeleteTraId = KTUint8NotDefined;
+
+            TFLOGSTRING3("TSY: CMmPacketContextMesshandlerList::GetAndResetActivationTraId. ContextName: %S, DeleteTraId: %d", &iContextInfoArray[i].iContextName, transId );
+
+OstTraceExt2( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_GETANDRESETDELETIONTRAID, "CMmPacketContextMesshandlerList::GetAndResetDeletionTraId;ContextName=%s;transId=%hhu", iContextInfoArray[i].iContextName, transId );
+            }
+        // no else
+        }
+
+    return transId;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::CreateContextIdTransIdByPipeHandle
+// Gets create context id transaction id by pipehandle.
+// -----------------------------------------------------------------------------
+//
+TUint8 CMmPacketContextMesshandlerList::CreateContextIdTransIdByPipeHandle(
+    const TInt aPipeHandle  )
+    {
+
+    TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::CreateContextIdTransIdByPipeHandle. PipeHandle: %d", aPipeHandle );
+OstTrace1( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_CREATECONTEXTIDTRANSIDBYPIPEHANDLE, "CMmPacketContextMesshandlerList::CreateContextIdTransIdByPipeHandle;aPipeHandle=%d", aPipeHandle );
+
+    TUint8 transId( KTUint8NotDefined );
+
+    // Find context pipehandle from context info list
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        if ( aPipeHandle == iContextInfoArray[i].iPipeHandle )
+            {
+            // Return object from the context info list
+            transId = iContextInfoArray[i].iCreateContextIdTransId;
+
+            TFLOGSTRING3("TSY: CMmPacketContextMesshandlerList::CreateContextIdTransIdByPipeHandle. ContextName: %S, CreateContextIdTransId: %d", &iContextInfoArray[i].iContextName, transId );
+
+OstTraceExt2( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_CREATECONTEXTIDTRANSIDBYPIPEHANDLE, "CMmPacketContextMesshandlerList::CreateContextIdTransIdByPipeHandle;ContextName=%S;transId=%hhu", iContextInfoArray[i].iContextName, transId );
+            }
+        // no else
+        }
+
+    // Valid values to return are, 0x00, 0x01, 0xFF = Not defined
+    return transId;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::CreateContextIdTraIdByContextId
+// Gets create context id transaction id by context id.
+// -----------------------------------------------------------------------------
+//
+TUint8 CMmPacketContextMesshandlerList::CreateContextIdTraIdByContextId(
+    const TUint8 aContextId )
+    {
+
+    TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::CreateContextIdTraIdByContextId. ContextId: %d", aContextId );
+OstTraceExt1( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_CREATECONTEXTIDTRAIDBYCONTEXTID, "CMmPacketContextMesshandlerList::CreateContextIdTraIdByContextId;aContextId=%hhu", aContextId );
+
+    TUint8 transId( KTUint8NotDefined );
+
+    // Find context pipehandle from context info list
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        if ( aContextId == iContextInfoArray[i].iContextId )
+            {
+            // Return object from the context info list
+            transId = iContextInfoArray[i].iCreateContextIdTransId;
+
+            TFLOGSTRING3("TSY: CMmPacketContextMesshandlerList::CreateContextIdTraIdByContextId. ContextName: %S, CreateContextIdTransId: %d", &iContextInfoArray[i].iContextName, transId );
+
+OstTraceExt2( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_CREATECONTEXTIDTRAIDBYCONTEXTID, "CMmPacketContextMesshandlerList::CreateContextIdTraIdByContextId;ContextName=%S;transId=%hhu", iContextInfoArray[i].iContextName, transId );
+            }
+        // no else
+        }
+
+    // Valid values to return are, 0x00, 0x01, 0xFF = Not defined
+    return transId;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::PipeHandleByContextId
+// Gets pipehandle specified by context Id.
+// -----------------------------------------------------------------------------
+//
+TUint8 CMmPacketContextMesshandlerList::PipeHandleByContextId(
+    const TUint8 aContextId )
+    {
+
+    TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::PipeHandleByContextId. ContextId: %d", aContextId );
+OstTraceExt1( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_PIPEHANDLEBYCONTEXTID, "CMmPacketContextMesshandlerList::PipeHandleByContextId;aContextId=%hhu", aContextId );
+
+    TUint8 pipeHandle( KInvalidPipeHandle );
+
+    // Find context pipehandle from context info list
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        if ( aContextId == iContextInfoArray[i].iContextId )
+            {
+            // Return object from the context info list
+            pipeHandle = iContextInfoArray[i].iPipeHandle;
+
+            TFLOGSTRING3("TSY: CMmPacketContextMesshandlerList::PipeHandleByContextId. ContextName: %S, PipeHandle: %d", &iContextInfoArray[i].iContextName, pipeHandle );
+
+OstTraceExt2( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_PIPEHANDLEBYCONTEXTID, "CMmPacketContextMesshandlerList::PipeHandleByContextId;ContextName=%S;pipeHandle=%hhu", iContextInfoArray[i].iContextName, pipeHandle );
+            }
+        // no else
+        }
+
+    // Valid values to return are, 0x00, 0x01, 0xFF = KInvalidPipeHandle
+    return pipeHandle;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::PipeCreateTransIdOkByTransId
+// Checks if transaction id created early match with given.
+// -----------------------------------------------------------------------------
+//
+TInt CMmPacketContextMesshandlerList::PipeCreateTransIdOkByTransId(
+    const TUint8 aTransId )
+    {
+
+    TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::PipeCreateTransIdOkByTransId. TransId: %d", aTransId );
+OstTraceExt1( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_PIPECREATETRANSIDOKBYTRANSID, "CMmPacketContextMesshandlerList::PipeCreateTransIdOkByTransId;aTransId=%hhu", aTransId );
+
+    TInt ret( KErrNotFound );
+
+    // Find context pipehandle from context info list
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        if ( aTransId == iContextInfoArray[i].iPipeCreateTransId )
+            {
+
+            TFLOGSTRING("TSY: CMmPacketContextMesshandlerList::PipeCreateTransIdOkByTransId. TransId Matched");
+OstTrace0( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_PIPECREATETRANSIDOKBYTRANSID, "CMmPacketContextMesshandlerList::PipeCreateTransIdOkByTransId, TransId Matched" );
+
+            ret = KErrNone;
+            }
+        // no else
+        }
+
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::CreateContextIdTraIdOK
+// Checks if transaction id created early match with given.
+// -----------------------------------------------------------------------------
+//
+TInt CMmPacketContextMesshandlerList::CreateContextIdTraIdOK(
+    const TUint8 aTransId )
+    {
+
+    TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::CreateContextIdTraIdOK. TransId: %d", aTransId );
+OstTraceExt1( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_CREATECONTEXTIDTRAIDOK, "CMmPacketContextMesshandlerList::CreateContextIdTraIdOK;aTransId=%hhu", aTransId );
+
+    TInt ret( KErrNotFound );
+
+    // Find context pipehandle from context info list
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        if ( aTransId == iContextInfoArray[i].iCreateContextIdTransId )
+            {
+
+            TFLOGSTRING("TSY: CMmPacketContextMesshandlerList::CreateContextIdTraIdOK. TransId Matched");
+OstTrace0( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_CREATECONTEXTIDTRAIDOK, "CMmPacketContextMesshandlerList::CreateContextIdTraIdOK, TransId Matched" );
+
+            ret = KErrNone;
+            }
+        // no else
+        }
+
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::GpdsLlConfigureTraIdOK
+// Checks if transaction id created early match with given.
+// -----------------------------------------------------------------------------
+//
+TInt CMmPacketContextMesshandlerList::GpdsLlConfigureTraIdOK(
+    const TUint8 aTransId )
+    {
+
+    TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::GpdsLlConfigureTraIdOK. TransId: %d", aTransId );
+OstTraceExt1( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_GPDSLLCONFIGURETRAIDOK, "CMmPacketContextMesshandlerList::GpdsLlConfigureTraIdOK;aTransId=%hhu", aTransId );
+
+    TInt ret( KErrNotFound );
+
+    // Find context pipehandle from context info list
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        if ( aTransId == iContextInfoArray[i].iGpdsLlConfigureTraId )
+            {
+
+            TFLOGSTRING("TSY: CMmPacketContextMesshandlerList::GpdsLlConfigureTraIdOK. TransId Matched");
+OstTrace0( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_GPDSLLCONFIGURETRAIDOK, "CMmPacketContextMesshandlerList::GpdsLlConfigureTraIdOK, TransId Matched" );
+
+            ret = KErrNone;
+            i= iNumberOfCreatedContexts;
+            }
+        // no else
+        }
+
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::SetPipeHandle
+// Sets pipehandle specified by pipe create transaction Id.
+// -----------------------------------------------------------------------------
+//
+TInt CMmPacketContextMesshandlerList::SetPipeHandle(
+    const TUint8 aTransactionId,
+    const TUint8 aPipeHandle )
+    {
+
+    TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::SetPipeHandle. TransId: %d", aTransactionId );
+OstTraceExt1( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_SETPIPEHANDLE, "CMmPacketContextMesshandlerList::SetPipeHandle;aTransactionId=%hhu", aTransactionId );
+
+    TInt ret( KErrNotFound );
+
+    // Find context pipehandle from context info list
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        if ( aTransactionId == iContextInfoArray[i].iPipeCreateTransId )
+            {
+
+            TFLOGSTRING3("TSY: CMmPacketContextMesshandlerList::SetPipeHandle. ContextName: %S, PipeHandle: %d", &iContextInfoArray[i].iContextName, aPipeHandle );
+OstTraceExt2( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_SETPIPEHANDLE, "CMmPacketContextMesshandlerList::SetPipeHandle;ContextName=%S;aPipeHandle=%hhu", iContextInfoArray[i].iContextName, aPipeHandle );
+
+            iContextInfoArray[i].iPipeHandle = aPipeHandle;
+            ret = KErrNone;
+            }
+        // no else
+        }
+
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::SetPipeStatus
+// Sets pipe status specified by pipe handle.
+// -----------------------------------------------------------------------------
+//
+TBool CMmPacketContextMesshandlerList::SetPipeStatus(
+    const TUint8 aPipeHandle,
+    const TInt aPipeStatus )
+    {
+
+    TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::SetPipeStatus. PipeHandle: %d", aPipeHandle );
+OstTraceExt1( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_SETPIPESTATUS, "CMmPacketContextMesshandlerList::SetPipeStatus;aPipeHandle=%hhu", aPipeHandle );
+
+    TBool ret( EFalse );
+
+    // Find context pipehandle from context info list
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        if ( aPipeHandle == iContextInfoArray[i].iPipeHandle )
+            {
+
+            TFLOGSTRING3("TSY: CMmPacketContextMesshandlerList::SetPipeStatus. ContextName: %S, PipeStatus: %d", &iContextInfoArray[i].iContextName, aPipeStatus );
+OstTraceExt2( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_SETPIPESTATUS, "CMmPacketContextMesshandlerList::SetPipeStatus;ContextName=%S;aPipeStatus=%d", iContextInfoArray[i].iContextName, aPipeStatus );
+
+            iContextInfoArray[i].iPipeStatus = aPipeStatus ;
+            ret = ETrue;
+            }
+        // no else
+        }
+
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::GetPipeStatus
+// Gets pipe status specified by context Id.
+// -----------------------------------------------------------------------------
+//
+TInt CMmPacketContextMesshandlerList::GetPipeStatus(
+    const TUint8 aContextId )
+    {
+
+    TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::GetPipeStatus. ContextId: %d", aContextId );
+OstTraceExt1( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_GETPIPESTATUS, "CMmPacketContextMesshandlerList::GetPipeStatus;aContextId=%hhu", aContextId );
+
+    TInt pipeStatus( PN_PIPE_DISABLE );
+
+    // Find context pipehandle from context info list
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        if ( aContextId == iContextInfoArray[i].iContextId )
+            {
+            pipeStatus = iContextInfoArray[i].iPipeStatus;
+
+            TFLOGSTRING3("TSY: CMmPacketContextMesshandlerList::GetPipeStatus. ContextName: %S, PipeStatus: %d", &iContextInfoArray[i].iContextName, pipeStatus );
+
+OstTraceExt2( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_GETPIPESTATUS, "CMmPacketContextMesshandlerList::GetPipeStatus;ContextName=%S;pipeStatus=%d", iContextInfoArray[i].iContextName, pipeStatus );
+            }
+        // no else
+        }
+
+    return pipeStatus;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::GetContextIdByContextName
+// Gets context Id specified by context name.
+// -----------------------------------------------------------------------------
+//
+TUint8 CMmPacketContextMesshandlerList::GetContextIdByContextName(
+    TInfoName* const aContextName )
+    {
+
+    TFLOGSTRING("TSY: CMmPacketContextMesshandlerList::GetContextIdByContextName");
+OstTrace0( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_GETCONTEXTIDBYCONTEXTNAME, "CMmPacketContextMesshandlerList::GetContextIdByContextName" );
+
+    TUint contextId( GPDS_CID_VOID );
+
+    // Find name from context info list
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        if ( *aContextName == iContextInfoArray[i].iContextName )
+            {
+
+            TFLOGSTRING3("TSY: CMmPacketContextMesshandlerList::GetContextIdByContextName. ContextName: %S, ContextId: %d", &iContextInfoArray[i].iContextName, iContextInfoArray[i].iContextId );
+OstTraceExt2( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_GETCONTEXTIDBYCONTEXTNAME, "CMmPacketContextMesshandlerList::GetContextIdByContextName;ContextName=%S;contextId=%d", iContextInfoArray[i].iContextName, iContextInfoArray[i].iContextId );
+
+            // Name found, return object
+            contextId = iContextInfoArray[i].iContextId;
+            }
+        // no else
+        }
+
+    return contextId;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::GetHostCidName
+// Gets host context name by context name.
+// -----------------------------------------------------------------------------
+//
+TInfoName CMmPacketContextMesshandlerList::GetHostCidName(
+    TInfoName* aContextName ) const
+    {
+
+    TFLOGSTRING("TSY: CMmPacketContextMesshandlerList::GetHostCidName");
+OstTrace0( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_GETHOSTCIDNAME, "CMmPacketContextMesshandlerList::GetHostCidName" );
+
+    TInfoName hostName;
+    hostName.Zero();
+
+    // Find name from context info list
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        if ( *aContextName == iContextInfoArray[i].iContextName )
+            {
+
+            TFLOGSTRING3("TSY: CMmPacketContextMesshandlerList::GetHostCidName. ContextName: %S, HostContextName: %S", &iContextInfoArray[i].iContextName, &iContextInfoArray[i].iHostContextName );
+
+OstTraceExt2( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_GETHOSTCIDNAME, "CMmPacketContextMesshandlerList::GetHostCidName;ContextName=%S;HostContextName=%S", iContextInfoArray[i].iContextName, iContextInfoArray[i].iHostContextName );
+            // Name found
+            hostName.Copy( iContextInfoArray[i].iHostContextName );
+            }
+        // no else
+        }
+
+    return hostName;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::RemoveContextId
+// Reset Context id to GPDS_CID_VOID.
+// -----------------------------------------------------------------------------
+//
+TInt CMmPacketContextMesshandlerList::RemoveContextId(
+    const TUint8 aContextId )
+    {
+
+    TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::RemoveContextId. ContextId: %d", aContextId );
+OstTraceExt1( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_REMOVECONTEXTID, "CMmPacketContextMesshandlerList::RemoveContextId;aContextId=%hhu", aContextId );
+
+    TInt ret( KErrNotFound );
+
+    // Find name from context info list
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        if ( aContextId == iContextInfoArray[i].iContextId )
+            {
+
+            TFLOGSTRING3("TSY: CMmPacketContextMesshandlerList::RemoveContextId. ContextName: %S, ContextId: %d", &iContextInfoArray[i].iContextName, aContextId );
+
+OstTraceExt2( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_REMOVECONTEXTID, "CMmPacketContextMesshandlerList::RemoveContextId;ContextName=%S;aContextId=%hhu", iContextInfoArray[i].iContextName, aContextId );
+            // Name found
+            iContextInfoArray[i].iContextId = GPDS_CID_VOID;
+            i = iNumberOfCreatedContexts;
+            ret = KErrNone;
+            }
+        // no else
+        }
+
+    //if dialup context
+    if( KErrNotFound == ret )
+        {
+        if( aContextId == iDialUpContextId )
+            {
+
+            TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::RemoveContextId. Dial-Up Context, ContextId: %d", aContextId );
+OstTraceExt1( TRACE_NORMAL, DUP2_CMMPACKETCONTEXTMESSHANDLERLIST_REMOVECONTEXTID, "CMmPacketContextMesshandlerList::RemoveContextId;Dial-Up Context, ContextId=%hhu", aContextId );
+            iDialUpContextId = GPDS_CID_VOID;
+            iDialUpContextName.Zero();
+            ret = KErrNone;
+            }
+        // no else
+
+        if( aContextId == iSecondaryDialUpContextId )
+            {
+
+            TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::RemoveContextId. Secondary Dial-Up Context, ContextId: %d", aContextId );
+OstTraceExt1( TRACE_NORMAL, DUP3_CMMPACKETCONTEXTMESSHANDLERLIST_REMOVECONTEXTID, "CMmPacketContextMesshandlerList::RemoveContextId;Secondary Dial-Up Context, ContextId=%hhu", aContextId );
+            iSecondaryDialUpContextId = GPDS_CID_VOID;
+            iSecondaryDialUpContextName.Zero();
+            ret = KErrNone;
+            }
+        // no else
+        }
+    // no else
+
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::ResetPipeHandleAndStatus
+// Reset pipe handle and status by pipehandle.
+// -----------------------------------------------------------------------------
+//
+TInt CMmPacketContextMesshandlerList::ResetPipeHandleAndStatus(
+    const TUint8 aPipeHandle )
+    {
+
+    TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::ResetPipeHandleAndStatus. PipeHandle: %d", aPipeHandle );
+OstTraceExt1( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_RESETPIPEHANDLEANDSTATUS, "CMmPacketContextMesshandlerList::ResetPipeHandleAndStatus;aPipeHandle=%hhu", aPipeHandle );
+
+    TInt ret( KErrNotFound );
+
+    // Find name from context info list
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        if ( aPipeHandle == iContextInfoArray[i].iPipeHandle )
+            {
+
+            TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::ResetPipeHandleAndStatus. ContextName: %S", &iContextInfoArray[i].iContextName );
+OstTraceExt1( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_RESETPIPEHANDLEANDSTATUS, "CMmPacketContextMesshandlerList::ResetPipeHandleAndStatus;ContextName=%S", iContextInfoArray[i].iContextName );
+
+            // Pipe found
+            iContextInfoArray[i].iPipeHandle = KInvalidPipeHandle;
+            iContextInfoArray[i].iPipeStatus = PN_PIPE_DISABLE;
+            i = iNumberOfCreatedContexts;
+            ret = KErrNone;
+            }
+        // no else
+        }
+
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::SetInitialiseMember
+// Sets initialisation member for specific context identified by context Id.
+// -----------------------------------------------------------------------------
+//
+TBool CMmPacketContextMesshandlerList::SetInitialiseMember(
+    const TUint8 aContextId,
+    const TBool aFlag )
+    {
+
+    TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::SetInitialiseMember. ContextId: %d", aContextId );
+OstTraceExt1( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_SETINITIALISEMEMBER, "CMmPacketContextMesshandlerList::SetInitialiseMember;aContextId=%hhu", aContextId );
+
+    TBool ret( EFalse );
+
+    // Find context pipehandle from context info list
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        if ( aContextId == iContextInfoArray[i].iContextId )
+            {
+
+            TFLOGSTRING3("TSY: CMmPacketContextMesshandlerList::SetInitialiseMember. ContextName: %S, InitialiseStarted: %d", &iContextInfoArray[i].iContextName, aFlag );
+
+OstTraceExt2( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_SETINITIALISEMEMBER, "CMmPacketContextMesshandlerList::SetInitialiseMember;ContextName=%S;aFlag=%hhu", iContextInfoArray[i].iContextName, aFlag );
+            // Return object from the context info list
+            iContextInfoArray[i].iInitialiseStarted = aFlag;
+            ret = ETrue;
+            }
+        // no else
+        }
+
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::GetInitialiseMember
+// Gets initialisation member for specific context identified by pipehandle.
+// -----------------------------------------------------------------------------
+//
+TBool CMmPacketContextMesshandlerList::GetInitialiseMember(
+    const TInt aPipeHandle )
+    {
+
+    TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::GetInitialiseMember. PipeHandle: %d", aPipeHandle );
+OstTrace1( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_GETINITIALISEMEMBER, "CMmPacketContextMesshandlerList::GetInitialiseMember;aPipeHandle=%d", aPipeHandle );
+
+    TBool ret( EFalse );
+
+    // Find name from context info list
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        if ( aPipeHandle == iContextInfoArray[i].iPipeHandle )
+            {
+
+            TFLOGSTRING3("TSY: CMmPacketContextMesshandlerList::GetInitialiseMember. ContextName: %S, InitialiseStarted: %d", &iContextInfoArray[i].iContextName, iContextInfoArray[i].iInitialiseStarted );
+OstTraceExt2( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_GETINITIALISEMEMBER, "CMmPacketContextMesshandlerList::GetInitialiseMember;ContextName=%S;InitialiseStarted=%hhu", iContextInfoArray[i].iContextName, iContextInfoArray[i].iInitialiseStarted );
+
+            ret = iContextInfoArray[i].iInitialiseStarted;
+            }
+        // no else
+        }
+
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::ContextIdByPipeHandle
+// Gets contextId of the specified context by Pipehandle.
+// -----------------------------------------------------------------------------
+//
+TUint8 CMmPacketContextMesshandlerList::ContextIdByPipeHandle(
+    const TInt aPipeHandle )
+    {
+
+    TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::ContextIdByPipeHandle. PipeHandle: %d", aPipeHandle );
+OstTrace1( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_CONTEXTIDBYPIPEHANDLE, "CMmPacketContextMesshandlerList::ContextIdByPipeHandle;aPipeHandle=%d", aPipeHandle );
+
+    TUint8 contextId( GPDS_CID_VOID );
+
+    // Find context pipehandle from context info list
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        if ( aPipeHandle == iContextInfoArray[i].iPipeHandle )
+            {
+
+            TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::ContextIdByPipeHandle. ContextId: %d", iContextInfoArray[i].iContextId );
+OstTraceExt1( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_CONTEXTIDBYPIPEHANDLE, "CMmPacketContextMesshandlerList::ContextIdByPipeHandle;ContextId=%hhu", iContextInfoArray[i].iContextId );
+
+            // Return object from the context info list
+            contextId = iContextInfoArray[i].iContextId;
+            }
+        // no else
+        }
+
+    // Valid values to return are, 0x00, 0x01, 0xFF = GPDS_CID_VOID
+    return contextId;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::SetContextConfigurationType
+// Sets configuration type by contextId.
+// -----------------------------------------------------------------------------
+//
+TBool CMmPacketContextMesshandlerList::SetContextConfigurationType(
+    const TUint8 aContextId,
+    const TInt aConfigType )
+    {
+
+    TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::SetContextConfigurationType. ContextId: %d", aContextId );
+OstTraceExt1( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_SETCONTEXTCONFIGURATIONTYPE, "CMmPacketContextMesshandlerList::SetContextConfigurationType;aContextId=%hhu", aContextId );
+
+    TBool ret( EFalse );
+
+     // Find context pipehandle from context info list
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        if ( aContextId == iContextInfoArray[i].iContextId )
+            {
+
+            TFLOGSTRING3("TSY: CMmPacketContextMesshandlerList::SetContextConfigurationType. ContextName: %S, ConfigType: %d", &iContextInfoArray[i].iContextName, aConfigType );
+OstTraceExt2( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_SETCONTEXTCONFIGURATIONTYPE, "CMmPacketContextMesshandlerList::SetContextConfigurationType;ContextName=%S;aConfigType=%d", iContextInfoArray[i].iContextName, aConfigType );
+
+            // Return object from the context info list
+            iContextInfoArray[i].iContextConfigurationType = aConfigType;
+            ret = ETrue;
+            }
+        // no else
+        }
+
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::GetContextConfigurationType
+// Gets configuration type by contextId.
+// -----------------------------------------------------------------------------
+//
+TInt CMmPacketContextMesshandlerList::GetContextConfigurationType(
+    const TUint8 aContextId )
+    {
+
+    TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::GetContextConfigurationType. ContextId: %d", aContextId );
+OstTraceExt1( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_GETCONTEXTCONFIGURATIONTYPE, "CMmPacketContextMesshandlerList::GetContextConfigurationType;aContextId=%hhu", aContextId );
+
+    TInt ret( KTIntNotDefined );
+
+    // Find context pipehandle from context info list
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        if ( aContextId == iContextInfoArray[i].iContextId )
+            {
+            // Return object from the context info list
+            ret = iContextInfoArray[i].iContextConfigurationType;
+
+            TFLOGSTRING3("TSY: CMmPacketContextMesshandlerList::GetContextConfigurationType. ContextName: %S, ConfigType: %d", &iContextInfoArray[i].iContextName, ret );
+
+OstTraceExt2( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_GETCONTEXTCONFIGURATIONTYPE, "CMmPacketContextMesshandlerList::GetContextConfigurationType;ContextName=%S;ret=%d", iContextInfoArray[i].iContextName, ret );
+            }
+        // no else
+        }
+
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::SaveConfig
+// Saves configuration for specific context.
+// -----------------------------------------------------------------------------
+//
+TInt CMmPacketContextMesshandlerList::SaveConfig(
+    const TUint8 aContextId,
+    const TInt aConfigurationType,
+    RPacketContext::TContextConfigGPRS* aConfig,
+    RPacketContext::TContextConfigR99_R4* aConfig99 )
+    {
+
+    TFLOGSTRING("TSY: CMmPacketContextMesshandlerList::SaveConfig");
+OstTrace0( TRACE_NORMAL, DUP3_CMMPACKETCONTEXTMESSHANDLERLIST_SAVECONFIG, "CMmPacketContextMesshandlerList::SaveConfig" );
+
+    TInt ret( KErrArgument );
+
+     // Find context pipehandle from context info list
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        if ( aContextId == iContextInfoArray[i].iContextId )
+            {
+
+            TFLOGSTRING3("TSY: CMmPacketContextMesshandlerList::SaveConfig. ContextName: %S, ContextId: %d", &iContextInfoArray[i].iContextName, aContextId );
+
+OstTraceExt2( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_SAVECONFIG, "CMmPacketContextMesshandlerList::SaveConfig;ContextName=%S;aContextId=%hhu", iContextInfoArray[i].iContextName, aContextId );
+            // Return object from the context info list
+            if( TPacketDataConfigBase::KConfigGPRS == aConfigurationType )
+                {
+
+                TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::SaveConfig. ConfigType: %d", aConfigurationType );
+
+OstTrace1( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_SAVECONFIG, "CMmPacketContextMesshandlerList::SaveConfig;aConfigurationType=%d", aConfigurationType );
+                iContextInfoArray[i].iConfig = *aConfig;
+                iContextInfoArray[i].iContextConfigurationType =
+                    aConfigurationType;
+                ret = KErrNone;
+                }
+
+            else if( TPacketDataConfigBase::KConfigRel99Rel4 ==
+                aConfigurationType )
+                {
+
+                TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::SaveConfig. ConfigType: %d", aConfigurationType );
+
+OstTrace1( TRACE_NORMAL, DUP2_CMMPACKETCONTEXTMESSHANDLERLIST_SAVECONFIG, "CMmPacketContextMesshandlerList::SaveConfig;aConfigurationType=%d", aConfigurationType );
+                iContextInfoArray[i].iConfig99 =
+                    *aConfig99;
+                iContextInfoArray[i].iContextConfigurationType =
+                    aConfigurationType;
+                ret = KErrNone;
+                }
+            // no else
+
+            i = iNumberOfCreatedContexts;
+            }
+        // no else
+        }
+
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::SaveConfig
+// Get configuration for specific context by context Id and configuration type.
+// -----------------------------------------------------------------------------
+//
+TPacketDataConfigBase* CMmPacketContextMesshandlerList::GetConfig(
+    const TUint8 aContextId,
+    const TInt aConfigurationType )
+    {
+
+    TFLOGSTRING("TSY: CMmPacketContextMesshandlerList::GetConfig");
+OstTrace0( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_GETCONFIG, "CMmPacketContextMesshandlerList::GetConfig" );
+
+    TPacketDataConfigBase* config;
+    config = NULL;
+
+    // Find context pipehandle from context info list
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        if ( aContextId == iContextInfoArray[i].iContextId )
+            {
+
+            TFLOGSTRING3("TSY: CMmPacketContextMesshandlerList::GetConfig. ContextName: %S, ContextId: %d", &iContextInfoArray[i].iContextName, aContextId );
+
+OstTraceExt2( TRACE_NORMAL, DUP3_CMMPACKETCONTEXTMESSHANDLERLIST_GETCONFIG, "CMmPacketContextMesshandlerList::GetConfig;ContextName=%S;aContextId=%hhu", iContextInfoArray[i].iContextName, aContextId );
+            // Return object from the context info list
+            if( TPacketDataConfigBase::KConfigGPRS == aConfigurationType )
+                {
+
+                TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::GetConfig. ConfigType: %d", aConfigurationType );
+
+OstTrace1( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_GETCONFIG, "CMmPacketContextMesshandlerList::GetConfig;aConfigurationType=%d", aConfigurationType );
+                // Return object from the context info list
+                config = &( iContextInfoArray[i].iConfig );
+                }
+
+            else if( TPacketDataConfigBase::KConfigRel99Rel4 ==
+                aConfigurationType )
+                {
+
+                TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::GetConfig. ConfigType: %d", aConfigurationType );
+OstTrace1( TRACE_NORMAL, DUP2_CMMPACKETCONTEXTMESSHANDLERLIST_GETCONFIG, "CMmPacketContextMesshandlerList::GetConfig;aConfigurationType=%d", aConfigurationType );
+                // Return object from the context info list
+                config = &( iContextInfoArray[i].iConfig99 );
+                }
+            // no else
+            }
+        // no else
+        }
+
+    return config;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::SetPipeResetTraId
+// Sets pipe reset transaction id for specific context by context Id.
+// -----------------------------------------------------------------------------
+//
+TInt CMmPacketContextMesshandlerList::SetPipeResetTraId(
+    const TUint8 aContextId,
+    const TUint8 aTransId )
+    {
+
+    TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::SetPipeResetTraId. ContextId: %d",  aContextId );
+OstTraceExt1( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_SETPIPERESETTRAID, "CMmPacketContextMesshandlerList::SetPipeResetTraId;aContextId=%hhu", aContextId );
+
+    TInt ret( KErrNotFound );
+
+    // Find context pipehandle from context info list
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        if ( aContextId == iContextInfoArray[i].iContextId )
+            {
+
+            TFLOGSTRING3("TSY: CMmPacketContextMesshandlerList::SetPipeResetTraId. ContextName: %S, PipeResetTraId: %d", &iContextInfoArray[i].iContextName, aTransId );
+
+OstTraceExt2( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_SETPIPERESETTRAID, "CMmPacketContextMesshandlerList::SetPipeResetTraId;ContextName=%S;aTransId=%hhu", iContextInfoArray[i].iContextName, aTransId );
+            // Return object from the context info list
+            iContextInfoArray[i].iPipeResetTraId = aTransId;
+            i = iNumberOfCreatedContexts;
+            ret = KErrNone;
+            }
+        // no else
+        }
+
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::CheckAndResetPipeResetTraId
+// Checks and resets pipe reset transaction id early saved.
+// -----------------------------------------------------------------------------
+//
+TInt CMmPacketContextMesshandlerList::CheckAndResetPipeResetTraId(
+    const TUint8 aTransId )
+    {
+
+    TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::CheckAndResetPipeResetTraId. TransId: %d", aTransId );
+OstTraceExt1( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_CHECKANDRESETPIPERESETTRAID, "CMmPacketContextMesshandlerList::CheckAndResetPipeResetTraId;aTransId=%hhu", aTransId );
+
+    TInt ret( KErrNotFound );
+
+    // Find context pipehandle from context info list
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        if ( aTransId == iContextInfoArray[i].iPipeResetTraId )
+            {
+
+            TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::CheckAndResetPipeResetTraId. ContextName: %S", &iContextInfoArray[i].iContextName );
+OstTraceExt1( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_CHECKANDRESETPIPERESETTRAID, "CMmPacketContextMesshandlerList::CheckAndResetPipeResetTraId;ContextName=%S", iContextInfoArray[i].iContextName );
+
+            ret = KErrNone;
+            i = iNumberOfCreatedContexts;
+            iContextInfoArray[i].iPipeResetTraId = KTUint8NotDefined;
+            }
+        // no else
+        }
+
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::ProxyIdByContextId
+// Gets proxy Id specified by context Id.
+// -----------------------------------------------------------------------------
+//
+TUint8 CMmPacketContextMesshandlerList::ProxyIdByContextId(
+    const TUint8 aContextId )
+    {
+
+    TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::ProxyIdByContextId. ContextId: %d", aContextId );
+OstTraceExt1( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_PROXYIDBYCONTEXTID, "CMmPacketContextMesshandlerList::ProxyIdByContextId;aContextId=%hhu", aContextId );
+
+    TUint channelId( KTUint8NotDefined );
+
+    // Find context proxyId from context info list
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        if ( aContextId == iContextInfoArray[i].iContextId )
+            {
+
+            TFLOGSTRING3("TSY: CMmPacketContextMesshandlerList::ProxyIdByContextId. ContextName: %S, ChannelId: %d", &iContextInfoArray[i].iContextName, iContextInfoArray[i].iChannelId );
+OstTraceExt2( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_PROXYIDBYCONTEXTID, "CMmPacketContextMesshandlerList::ProxyIdByContextId;ContextName=%S;ChannelId=%hhu", iContextInfoArray[i].iContextName, iContextInfoArray[i].iChannelId );
+
+            channelId = iContextInfoArray[i].iChannelId;
+            }
+        // no else
+        }
+
+    // Valid values to return are, 0x00, 0x01, 0xFF = Not defined
+    return channelId;
+
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::ProxyIdByContextId
+// Sets context Id and name for dial-up context.
+// -----------------------------------------------------------------------------
+//
+void CMmPacketContextMesshandlerList::SetDialUpContextId(
+    const TUint8 aContextId )
+    {
+
+    if( 0 == iDialUpContextName.Compare( KStringExternal ) )
+        {
+
+        TFLOGSTRING("TSY: CMmPacketContextMesshandlerList::SetDialUpContextId iSecondaryDialUpContextName.");
+OstTrace0( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_SETDIALUPCONTEXTID, "CMmPacketContextMesshandlerList::SetDialUpContextId, iSecondaryDialUpContextName" );
+
+        iSecondaryDialUpContextName = KStringExternal2;
+        iSecondaryDialUpContextId = aContextId;
+        }
+    else
+        {
+
+        TFLOGSTRING("TSY: CMmPacketContextMesshandlerList::SetDialUpContextId iDialUpContextId.");
+OstTrace0( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_SETDIALUPCONTEXTID, "CMmPacketContextMesshandlerList::SetDialUpContextId, iDialUpContextId" );
+
+        iDialUpContextId = aContextId;
+        iDialUpContextName = KStringExternal;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::GetDialUpContextId
+// Gets context Id for dial-up context.
+// -----------------------------------------------------------------------------
+//
+TUint8 CMmPacketContextMesshandlerList::GetDialUpContextId()
+    {
+
+    TFLOGSTRING("TSY: CMmPacketContextMesshandlerList::GetDialUpContextId");
+OstTrace0( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_GETDIALUPCONTEXTID, "CMmPacketContextMesshandlerList::GetDialUpContextId" );
+
+    return iDialUpContextId;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::DialUpContextName
+// Gets dial-up context name specified by context Id.
+// -----------------------------------------------------------------------------
+//
+TInt CMmPacketContextMesshandlerList::DialUpContextName(
+    const TUint8 aContextId,
+    TInfoName& aContextName )
+    {
+
+    TFLOGSTRING("TSY: CMmPacketContextMesshandlerList::DialUpContextName");
+OstTrace0( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_DIALUPCONTEXTNAME, "CMmPacketContextMesshandlerList::DialUpContextName" );
+
+    TInt ret( KErrNotFound );
+
+    if( aContextId == iDialUpContextId )
+        {
+
+        TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::DialUpContextName. DialUpContextId: %d", aContextId );
+OstTraceExt1( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_DIALUPCONTEXTNAME, "CMmPacketContextMesshandlerList::DialUpContextName;DialUpContextId=%hhu", aContextId );
+        aContextName = iDialUpContextName;
+        ret = KErrNone;
+        }
+    // no else
+
+    if( aContextId == iSecondaryDialUpContextId )
+        {
+
+        TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::DialUpContextName. SecondaryDialUpContextId: %d", aContextId );
+OstTraceExt1( TRACE_NORMAL, DUP2_CMMPACKETCONTEXTMESSHANDLERLIST_DIALUPCONTEXTNAME, "CMmPacketContextMesshandlerList::DialUpContextName;DialUpContextName=%hhu", aContextId );
+        aContextName = iSecondaryDialUpContextName;
+        ret = KErrNone;
+        }
+    // no else
+
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::GetDialUpContextIdByName
+// Gets dial-up context id specified by context name.
+// -----------------------------------------------------------------------------
+//
+TUint8 CMmPacketContextMesshandlerList::GetDialUpContextIdByName(
+    TInfoName* const aContextName )
+    {
+
+    TFLOGSTRING("TSY: CMmPacketContextMesshandlerList::GetDialUpContextIdByName");
+OstTrace0( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_GETDIALUPCONTEXTIDBYNAME, "CMmPacketContextMesshandlerList::GetDialUpContextIdByName" );
+
+    TUint8 contextId( GPDS_CID_VOID );
+
+    if ( *aContextName == iDialUpContextName )
+        {
+
+        TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::GetDialUpContextIdByName. DialUpContextId: %d", iDialUpContextId );
+OstTraceExt1( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_GETDIALUPCONTEXTIDBYNAME, "CMmPacketContextMesshandlerList::GetDialUpContextIdByName;DialUpContextId=%hhu", contextId );
+        // Name found, return object
+        contextId = iDialUpContextId;
+        }
+    // no else
+
+    if ( *aContextName == iSecondaryDialUpContextName )
+        {
+        // Name found, return object
+        contextId = iSecondaryDialUpContextId;
+
+        TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::GetDialUpContextIdByName. SecondaryDialUpContextId: %d", contextId );
+
+OstTraceExt1( TRACE_NORMAL, DUP2_CMMPACKETCONTEXTMESSHANDLERLIST_GETDIALUPCONTEXTIDBYNAME, "CMmPacketContextMesshandlerList::GetDialUpContextIdByName;SecondaryDialUpContextId=%hhu", contextId );
+        }
+    // no else
+
+    return contextId;
+
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::RemoveObjectByName
+// Removes buffered data belonging to a context specified by name.
+// -----------------------------------------------------------------------------
+//
+void CMmPacketContextMesshandlerList::RemoveObjectByName(
+    TInfoName* aContextName )
+    {
+
+    TFLOGSTRING("TSY: CMmPacketContextMesshandlerList::RemoveObjectByName");
+OstTrace0( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_REMOVEOBJECTBYNAME, "CMmPacketContextMesshandlerList::RemoveObjectByName" );
+
+    // Set ret to KErrArgument to check that context is in list
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        // Find aContext from context info list
+        if ( *aContextName == iContextInfoArray[i].iContextName )
+            {
+
+            for ( TInt j = 0; j < KMmMaxNumberOfContexts; j++ )
+                {
+
+                if ( ( iContextInfoArray[i].iChannelId ==
+                     iProxyIdList[j].iChannelId ) && ( EFalse ==
+                     iProxyIdList[j].iIsFree ) )
+                    {
+
+                    TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::RemoveObjectByName. Context Name: %S", &iContextInfoArray[i].iContextName );
+OstTraceExt1( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_REMOVEOBJECTBYNAME, "CMmPacketContextMesshandlerList::RemoveObjectByName;ContextName=%S", iContextInfoArray[i].iContextName );
+                    // Release Proxy id
+                    iProxyIdList[j].iIsFree = ETrue;
+
+                    // Get index to last reserved cell in the list
+                    const TInt lastContext( iNumberOfCreatedContexts - 1 );
+
+                    // If not already last object
+                    if ( i < lastContext )
+                        {
+                        // Replace object to be remove by last object
+                        iContextInfoArray[i].iContextId =
+                            iContextInfoArray[lastContext].iContextId;
+
+                        iContextInfoArray[i].iChannelId =
+                            iContextInfoArray[lastContext].iChannelId;
+
+                        iContextInfoArray[i].iContextName =
+                            iContextInfoArray[lastContext].iContextName;
+
+                        iContextInfoArray[i].iHostContextName =
+                           iContextInfoArray[lastContext].iHostContextName;
+                        iContextInfoArray[i].iPipeStatus =
+                           iContextInfoArray[lastContext].iPipeStatus;
+                        iContextInfoArray[i].iPipeHandle =
+                           iContextInfoArray[lastContext].iPipeHandle;
+                        iContextInfoArray[i].iCreateContextIdTransId =
+                           iContextInfoArray[lastContext].iCreateContextIdTransId;
+                        iContextInfoArray[i].iPipeCreateTransId =
+                           iContextInfoArray[lastContext].iPipeCreateTransId;
+                        iContextInfoArray[i].iContextType =
+                           iContextInfoArray[lastContext].iContextType;
+                        iContextInfoArray[i].iInitialiseStarted =
+                           iContextInfoArray[lastContext].iInitialiseStarted;
+                        iContextInfoArray[i].iContextConfigurationType =
+                            iContextInfoArray[lastContext].iContextConfigurationType;
+                        iContextInfoArray[i].iActivationTraId =
+                            iContextInfoArray[lastContext].iActivationTraId;
+                        iContextInfoArray[i].iPipeResetTraId =
+                            iContextInfoArray[lastContext].iPipeResetTraId;
+                        iContextInfoArray[i].iDeleteTraId =
+                            iContextInfoArray[lastContext].iDeleteTraId;
+                        }
+                    // no else
+
+                    // Reset object information of the last object
+                    iContextInfoArray[lastContext].iChannelId =
+                        KTUint8NotDefined;
+                    iContextInfoArray[lastContext].iContextName.Zero();
+                    iContextInfoArray[lastContext].iContextId = GPDS_CID_VOID;
+                    iContextInfoArray[lastContext].iHostContextName.Zero();
+                    iContextInfoArray[lastContext].iPipeStatus =
+                       PN_PIPE_DISABLE;
+                    iContextInfoArray[lastContext].iPipeHandle =
+                       KInvalidPipeHandle;
+                    iContextInfoArray[lastContext].iCreateContextIdTransId =
+                        KTUint8NotDefined;
+                    iContextInfoArray[lastContext].iPipeCreateTransId =
+                        KTUint8NotDefined;
+                    iContextInfoArray[lastContext].iContextType =
+                        GPDS_CONT_TYPE_NORMAL;
+                    iContextInfoArray[lastContext].iInitialiseStarted = EFalse;
+                    iContextInfoArray[lastContext].iContextConfigurationType =
+                        KTIntNotDefined;
+                    iContextInfoArray[lastContext].iActivationTraId =
+                        KTUint8NotDefined;
+                    iContextInfoArray[lastContext].iPipeResetTraId =
+                        KTUint8NotDefined;
+                    iContextInfoArray[lastContext].iDeleteTraId =
+                        KTUint8NotDefined;
+                    // Decrease number of created contexts
+                    iNumberOfCreatedContexts--;
+                    // Proxy id found, break
+                    j = KMmMaxNumberOfContexts;
+                    }
+                // no else
+                }
+
+            // aContext found, break
+            i = iNumberOfCreatedContexts;
+            }
+        // no else
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::SetDNSAddressInfoToContextInfo
+// Adds DNS related information to context info array.
+// -----------------------------------------------------------------------------
+//
+TInt CMmPacketContextMesshandlerList::SetDNSAddressInfoToContextInfo(
+    TUint8 aContextId )
+    {
+
+    TFLOGSTRING("TSY: CMmPacketContextMesshandlerList::SetDNSAddressInfoToContextInfo");
+OstTrace0( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_SETDNSADDRESSINFOTOCONTEXTINFO, "CMmPacketContextMesshandlerList::SetDNSAddressInfoToContextInfo" );
+
+    TInt ret( KErrNotFound );
+
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        // Find aContext from context info list
+        if ( aContextId == iContextInfoArray[i].iContextId )
+            {
+
+            TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::SetDNSAddressInfoToContextInfo. ContextId: %d", aContextId );
+OstTraceExt1( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_SETDNSADDRESSINFOTOCONTEXTINFO, "CMmPacketContextMesshandlerList::SetDNSAddressInfoToContextInfo;aContextId=%hhu", aContextId );
+
+            iContextInfoArray[i].iAddDNSAddress = ETrue;
+            ret = KErrNone;
+            }
+        // no else
+        }
+
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::GetDNSAddressInfoToContextInfo
+// Gets DNS related information from context info array.
+// -----------------------------------------------------------------------------
+//
+TBool CMmPacketContextMesshandlerList::GetDNSAddressInfoToContextInfo(
+    TUint8 aContextId )
+    {
+
+    TFLOGSTRING("TSY: CMmPacketContextMesshandlerList::GetDNSAddressInfoToContextInfo");
+OstTrace0( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_GETDNSADDRESSINFOTOCONTEXTINFO, "CMmPacketContextMesshandlerList::GetDNSAddressInfoToContextInfo" );
+
+    TBool addDNSAddress( EFalse );
+
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        // Find aContext from context info list
+        if ( aContextId == iContextInfoArray[i].iContextId )
+            {
+
+            TFLOGSTRING3("TSY: CMmPacketContextMesshandlerList::GetDNSAddressInfoToContextInfo. ContextId: %d, AddDNSAddress: %d", aContextId, iContextInfoArray[i].iAddDNSAddress );
+OstTraceExt2( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_GETDNSADDRESSINFOTOCONTEXTINFO, "CMmPacketContextMesshandlerList::GetDNSAddressInfoToContextInfo;aContextId=%hhu;AddDNSAddress=%hhu", aContextId, iContextInfoArray[i].iAddDNSAddress );
+
+            addDNSAddress = iContextInfoArray[i].iAddDNSAddress;
+            }
+        // no else
+        }
+
+    return addDNSAddress;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::SetPCSCFAddressInfoToContextInfo
+// Adds PCSCF related information to context info array.
+// -----------------------------------------------------------------------------
+//
+TInt CMmPacketContextMesshandlerList::SetPCSCFAddressInfoToContextInfo(
+    TUint8 aContextId )
+    {
+
+    TFLOGSTRING("TSY: CMmPacketContextMesshandlerList::SetPCSCFAddressInfoToContextInfo");
+OstTrace0( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_SETPCSCFADDRESSINFOTOCONTEXTINFO, "CMmPacketContextMesshandlerList::SetPCSCFAddressInfoToContextInfo" );
+
+    TInt ret( KErrNotFound );
+
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        // Find aContext from context info list
+        if ( aContextId == iContextInfoArray[i].iContextId )
+            {
+
+            TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::SetPCSCFAddressInfoToContextInfo. ContextId: %d", aContextId );
+OstTraceExt1( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_SETPCSCFADDRESSINFOTOCONTEXTINFO, "CMmPacketContextMesshandlerList::SetPCSCFAddressInfoToContextInfo;aContextId=%hhu", aContextId );
+
+            iContextInfoArray[i].iAddPCSCFAddress = ETrue;
+            ret = KErrNone;
+            }
+        // no else
+        }
+
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::GetPCSCFAddressInfoToContextInfo
+// Gets PCSCF related information from context info array.
+// -----------------------------------------------------------------------------
+//
+TBool CMmPacketContextMesshandlerList::GetPCSCFAddressInfoToContextInfo(
+    TUint8 aContextId )
+    {
+
+    TFLOGSTRING("TSY: CMmPacketContextMesshandlerList::GetPCSCFAddressInfoToContextInfo");
+OstTrace0( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_GETPCSCFADDRESSINFOTOCONTEXTINFO, "CMmPacketContextMesshandlerList::GetPCSCFAddressInfoToContextInfo" );
+
+    TBool addPCSCFAddress( EFalse );
+
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        // Find aContext from context info list
+        if ( aContextId == iContextInfoArray[i].iContextId )
+            {
+
+            TFLOGSTRING3("TSY: CMmPacketContextMesshandlerList::GetPCSCFAddressInfoToContextInfo. ContextId: %d, AddPCSCFAddress: %d", aContextId, iContextInfoArray[i].iAddPCSCFAddress );
+OstTraceExt2( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_GETPCSCFADDRESSINFOTOCONTEXTINFO, "CMmPacketContextMesshandlerList::GetPCSCFAddressInfoToContextInfo;aContextId=%hhu;AddPCSCFAddress=%hhu", aContextId, iContextInfoArray[i].iAddPCSCFAddress );
+
+            addPCSCFAddress = iContextInfoArray[i].iAddPCSCFAddress;
+            }
+        // no else
+        }
+
+    return addPCSCFAddress;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::ContextIdByListIndex
+// Gets context id of the specified context by list index.
+// -----------------------------------------------------------------------------
+//
+TUint8 CMmPacketContextMesshandlerList::ContextIdByListIndex(
+    const TInt aListIndex )
+    {
+
+    TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::ContextIdByListIndex, Index: %d", aListIndex );
+OstTrace1( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_CONTEXTIDBYLISTINDEX, "CMmPacketContextMesshandlerList::ContextIdByListIndex;aListIndex=%d", aListIndex );
+
+    TUint8 contextId( GPDS_CID_VOID );
+
+    if ( aListIndex < iNumberOfCreatedContexts )
+        {
+        // Return context id from the context info list
+        contextId = iContextInfoArray[aListIndex].iContextId;
+
+        TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::ContextIdByListIndex. ContextId: %d", contextId );
+
+OstTraceExt1( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_CONTEXTIDBYLISTINDEX, "CMmPacketContextMesshandlerList::ContextIdByListIndex;contextId=%hhu", contextId );
+        }
+    // no else
+
+    // Valid values to return are, 0x00, 0x01, 0xFF = GPDS_CID_VOID
+    return contextId;
+    }
+
+// -----------------------------------------------------------------------------
+// CMmPacketContextMesshandlerList::GetContextTypeById
+// This function returns context type by context id.
+// -----------------------------------------------------------------------------
+//
+TUint8 CMmPacketContextMesshandlerList::GetContextTypeById(
+    const TUint8 aContextId )
+    {
+
+    TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::GetContextTypeByName, ContextId: %d", aContextId );
+OstTraceExt1( TRACE_NORMAL, CMMPACKETCONTEXTMESSHANDLERLIST_GETCONTEXTTYPEBYID, "CMmPacketContextMesshandlerList::GetContextTypeById;aContextId=%hhu", aContextId );
+
+    TUint8 ret( GPDS_CONT_TYPE_NORMAL );
+
+    // Find context id from context info list
+    for ( TInt i = 0; i < iNumberOfCreatedContexts; i++ )
+        {
+        if ( aContextId == iContextInfoArray[i].iContextId )
+            {
+            // if host context is defined => context is secondary context
+            if( 0 != iContextInfoArray[i].iHostContextName.Length() )
+                {
+                 ret = GPDS_CONT_TYPE_SEC;
+                }
+            // no else
+
+            TFLOGSTRING2("TSY: CMmPacketContextMesshandlerList::GetContextTypeById, ContextType: %d", ret );
+
+OstTraceExt1( TRACE_NORMAL, DUP1_CMMPACKETCONTEXTMESSHANDLERLIST_GETCONTEXTTYPEBYID, "CMmPacketContextMesshandlerList::GetContextTypeById;ContextType=%hhu", ret );
+            }
+        // no else
+        }
+
+    return ret;
+    }
+
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+
+    //None
+
+
+//  End of File