omadm/omadmextensions/adapters/nsmldinternet/src/NSmlWLanAdapter.cpp
changeset 1 4490afcb47b1
child 2 a5fecba4b1e4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/omadm/omadmextensions/adapters/nsmldinternet/src/NSmlWLanAdapter.cpp	Thu Jan 07 12:39:15 2010 +0200
@@ -0,0 +1,3952 @@
+/*
+* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:   Wlan Adapter
+*
+*/
+
+
+
+#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
+#include <commsdat_partner.h>
+#endif
+#include "NSmlWLanAdapter.h"
+#include "NSmlWlanSettings.h"
+#include "nsmldebug.h"
+#include <commdb.h>
+#include <utf.h>
+#include <cdbstore.h>
+#include <cdbcols.h>
+#include <EapType.h>
+#include <nsmldmuri.h>
+
+
+#ifndef __WINS__
+// This lowers the unnecessary compiler warning (armv5) to remark.
+// "Warning:  #174-D: expression has no effect..." is caused by 
+// DBG_ARGS8 macro in no-debug builds.
+#pragma diag_remark 174
+#endif
+
+//-----------------------------------------------------------------------------
+// CNSmlWLanAdapter* CNSmlWLanAdapter::NewL( )
+//-----------------------------------------------------------------------------
+CNSmlWLanAdapter* CNSmlWLanAdapter::NewL( MSmlDmCallback* aDmCallback,CCommsDatabase& aDatabase )
+    {
+    _DBG_FILE("CNSmlWLanAdapter::NewL(): begin");
+
+    CNSmlWLanAdapter* self = NewLC( aDmCallback, aDatabase );
+    CleanupStack::Pop( self );
+
+    _DBG_FILE("CNSmlWLanAdapter::NewL(): end");
+    return self;
+    }
+
+//-----------------------------------------------------------------------------
+// CNSmlWLanAdapter* CNSmlWLanAdapter::NewLC( )
+//-----------------------------------------------------------------------------
+CNSmlWLanAdapter* CNSmlWLanAdapter::NewLC( MSmlDmCallback* aDmCallback, CCommsDatabase& aDatabase )
+    {
+    _DBG_FILE("CNSmlWLanAdapter::NewLC(): begin");
+
+    CNSmlWLanAdapter* self = new(ELeave) CNSmlWLanAdapter(aDmCallback);
+    CleanupStack::PushL( self );
+
+    self->iCallBack = aDmCallback;
+    self->ConstructL( aDatabase );
+
+    _DBG_FILE("CNSmlWLanAdapter::NewLC(): end");
+    return self;
+    }
+
+//-----------------------------------------------------------------------------
+// void CNSmlWLanAdapter::ConstructL( )
+// Second phase constructor
+//-----------------------------------------------------------------------------
+void CNSmlWLanAdapter::ConstructL( CCommsDatabase& aDatabase )
+    {
+    _DBG_FILE("CNSmlWLanAdapter::ConstructL(): begin");
+
+    iWlanSettings = CWlanSettings::NewL( aDatabase );
+    iBuffer = new (ELeave) CArrayFixFlat <TNSmlWepKeyBufferElement> (KNSmlWepKeyGranularity);
+    iSettings = new (ELeave) TWlanSettings;
+    iEAPSettings = new (ELeave) EAPSettings;
+
+    _DBG_FILE("CNSmlWLanAdapter::ConstructL(): end");
+    }
+
+//-----------------------------------------------------------------------------
+// CNSmlWLanAdapter::CNSmlWLanAdapter( )
+// Constructor
+//-----------------------------------------------------------------------------
+CNSmlWLanAdapter::CNSmlWLanAdapter( TAny* aEcomArguments )
+    : CSmlDmAdapter(aEcomArguments)
+    {
+    _DBG_FILE("CNSmlWLanAdapter::CNSmlWLanAdapter(): begin");
+    _DBG_FILE("CNSmlWLanAdapter::CNSmlWLanAdapter(): end");
+    }
+
+//-----------------------------------------------------------------------------
+// CNSmlWLanAdapter::~CNSmlWLanAdapter( )
+// Destructor
+//-----------------------------------------------------------------------------
+CNSmlWLanAdapter::~CNSmlWLanAdapter( )
+    {
+    _DBG_FILE("CNSmlWLanAdapter::~CNSmlWLanAdapter(): begin");
+
+	if ( iBuffer )
+		{
+		
+	    for( TInt index=0; index<iBuffer->Count(); index++ )
+	        {
+	        delete iBuffer->At(index).iUri;
+	        delete iBuffer->At(index).iData;
+
+	        iBuffer->Delete(index);
+	        }
+
+	    iBuffer->Reset();
+	    delete iBuffer;
+	    
+		}
+    delete iWlanSettings;
+    delete iSettings;
+
+    TRAP_IGNORE( DeleteEAPStructL() );
+    
+    for ( TInt i = 0 ; i < iEAPBuffer.Count() ; i++ )
+    	{
+    	iEAPBuffer[i]->iStatusRefArray.Close();
+    	iEAPBuffer[i]->iEAPSettings->iEncapsulatedEAPTypes.Close();
+    	iEAPBuffer[i]->iEAPSettings->iCipherSuites.Close();    	
+    	delete iEAPBuffer[i]->iEAPSettings;
+    	iEAPBuffer[i]->iEAPSettings = NULL;
+    	}
+    iEAPBuffer.ResetAndDestroy(); 
+    
+    TInt count = iSecondaryBuffer.Count();
+    for( TInt index=0; index<count; index++ )
+        {
+        delete iSecondaryBuffer[index];
+        }
+
+    iSecondaryBuffer.Reset();
+
+
+    _DBG_FILE("CNSmlWLanAdapter::~CNSmlWLanAdapter(): end");
+    }
+
+
+//-----------------------------------------------------------------------------
+// CNSmlWLanAdapter* CNSmlWLanAdapter::DDFVersionL( CBufBase& aDDFVersion )
+//-----------------------------------------------------------------------------
+void CNSmlWLanAdapter::DDFVersionL( CBufBase& aDDFVersion )
+    {
+    _DBG_FILE("CNSmlWLanAdapter::DDFVersionL(): begin");
+
+    aDDFVersion.InsertL( 0, KNSmlWLanAdapterDDFversion );
+
+    _DBG_FILE("CNSmlWLanAdapter::DDFVersionL(): end");
+    }
+
+//-----------------------------------------------------------------------------
+// CNSmlWLanAdapter* CNSmlWLanAdapter::DDFStructureL( MSmlDmDDFObject& aDDF )
+//-----------------------------------------------------------------------------
+void CNSmlWLanAdapter::DDFStructureL( MSmlDmDDFObject& aDDF )
+    {
+    _DBG_FILE("CNSmlWLanAdapter::DDFStructureL(): begin");
+
+    TSmlDmAccessTypes *aclTypes = new (ELeave) TSmlDmAccessTypes();
+    CleanupStack::PushL(aclTypes);
+//
+// Set Get as acceptable operations
+//
+    aclTypes->SetGet();
+    aclTypes->SetAdd(); // 041208 Added
+    aclTypes->SetDelete( );
+    aclTypes->SetReplace( );
+
+    TSmlDmAccessTypes accessTypesAll;
+    accessTypesAll.SetGet( );
+    accessTypesAll.SetDelete( );
+    accessTypesAll.SetAdd( );
+    accessTypesAll.SetReplace( );
+
+    TSmlDmAccessTypes accessTypesNoDelete;
+    accessTypesNoDelete.SetGet( );
+    accessTypesNoDelete.SetAdd( );
+    accessTypesNoDelete.SetReplace( );
+
+    TSmlDmAccessTypes accessTypesGetAdd;
+    accessTypesGetAdd.SetGet( );
+    accessTypesGetAdd.SetAdd(); 
+    
+    TSmlDmAccessTypes accessTypesGetAddDel;
+    accessTypesGetAddDel.SetGet();     
+    accessTypesGetAddDel.SetAdd();
+    accessTypesGetAddDel.SetDelete();
+    //WLAN
+    MSmlDmDDFObject& rootNode = aDDF.AddChildObjectL( KNSmlWLanNodeName );
+    FillNodeInfoL( rootNode,
+    		   accessTypesGetAdd,
+               MSmlDmDDFObject::EZeroOrOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::ENode,
+               KNSmlEmpty );
+
+    //WLAN/<x>
+    MSmlDmDDFObject& wlanNode = rootNode.AddChildObjectGroupL( );
+    FillNodeInfoL( wlanNode,
+    		   accessTypesGetAddDel,
+               MSmlDmDDFObject::EOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::ENode,
+               KNSmlEmpty );
+
+    //WLAN/<x>/SSID
+    MSmlDmDDFObject& ssid = wlanNode.AddChildObjectL( KNSmlWLanSsid );
+    FillNodeInfoL( ssid,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EZeroOrOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::EChr,
+               KNSmlEmpty );
+
+    //WLAN/<x>/UsedSSID
+    MSmlDmDDFObject& usedSsid = wlanNode.AddChildObjectL( KNSmlWLanUsedSsid );
+    FillNodeInfoL( usedSsid,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EZeroOrOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::EChr,
+               KNSmlEmpty );
+               
+    //WLAN/<x>/SSIDHidden
+    MSmlDmDDFObject& ssidHidden = wlanNode.AddChildObjectL( KNSmlWLanSsidHidden );
+    FillNodeInfoL( ssidHidden,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EZeroOrOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::EBool,
+               KNSmlEmpty );
+
+    //WLAN/<x>/NetworkMode
+    MSmlDmDDFObject& networkMode = wlanNode.AddChildObjectL( KNSmlWLanNetworkMode );
+    FillNodeInfoL( networkMode,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EZeroOrOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::EChr,
+               KNSmlEmpty );               
+
+    //WLAN/<x>/SecurityMode
+    MSmlDmDDFObject& securityMode = wlanNode.AddChildObjectL( KNSmlWLanSecurityMode );
+    FillNodeInfoL( securityMode,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EZeroOrOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::EChr,
+               KNSmlEmpty );               
+
+    //WLAN/<x>/UseWPAPSK
+    MSmlDmDDFObject& useWPAPSK = wlanNode.AddChildObjectL( KNSmlWLanUseWPAPSK );
+    FillNodeInfoL( useWPAPSK,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EZeroOrOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::EBool,
+               KNSmlEmpty );
+
+    //WLAN/<x>/WPAPreSharedKey
+    MSmlDmDDFObject& wpaPreSharedKey = wlanNode.AddChildObjectL( KNSmlWLanWpaPreSharedKey );
+    FillNodeInfoL( wpaPreSharedKey,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EZeroOrOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::EBin,
+               KNSmlEmpty );               
+
+    //WLAN/<x>/WLANEAPList
+    MSmlDmDDFObject& wlanEapList = wlanNode.AddChildObjectL( KNSmlWLanEapList );
+    FillNodeInfoL( wlanEapList,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EZeroOrOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::EChr,
+               KNSmlEmpty );                       
+
+    //WLAN/<x>/WEPKeyIndex
+    MSmlDmDDFObject& wepKeyIndex = wlanNode.AddChildObjectL( KNSmlWLanWepIndex );
+    FillNodeInfoL( wepKeyIndex,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EZeroOrOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::EInt,
+               KNSmlEmpty );                       
+               
+    //WLAN/<x>/WEPAuthMode
+    MSmlDmDDFObject& wlanWepAuthMode = wlanNode.AddChildObjectL( KNSmlWLanAuthMode );
+    FillNodeInfoL( wlanWepAuthMode,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EZeroOrOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::EInt,
+               KNSmlEmpty );                       
+
+    //WLAN/<x>/WEPKey/
+    MSmlDmDDFObject& wepKeyRoot = wlanNode.AddChildObjectL( KNSmlWLanWepKey );
+    FillNodeInfoL( wepKeyRoot,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EZeroOrOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::ENode,
+               KNSmlEmpty );               
+
+    //WLAN/<x>/WEPKey/<x>
+    MSmlDmDDFObject& wepKey = wepKeyRoot.AddChildObjectGroupL( );
+    FillNodeInfoL( wepKey,
+    		   accessTypesGetAdd,
+               MSmlDmDDFObject::EOneOrN,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::ENode,
+               KNSmlEmpty );               
+
+    //WLAN/<x>/WEPKey/<x>/WEPKeyID
+    MSmlDmDDFObject& wepKeyId = wepKey.AddChildObjectL( KNSmlWLanWepKeyId );
+    FillNodeInfoL( wepKeyId,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::EInt,
+               KNSmlEmpty );                           
+
+    //WLAN/<x>/WEPKey/<x>/Data
+    MSmlDmDDFObject& data = wepKey.AddChildObjectL( KNSmlWLanWepKeyData );
+    FillNodeInfoL( data,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::EBin,
+               KNSmlEmpty );         
+
+
+    //WLAN/<x>/SecondarySSID/
+    MSmlDmDDFObject& secondarySSidRoot = wlanNode.AddChildObjectL( KNSmlWLanSecSsid );
+    FillNodeInfoL( secondarySSidRoot,
+               accessTypesGetAdd,
+               MSmlDmDDFObject::EZeroOrOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::ENode,
+               KNSmlEmpty );               
+
+    //WLAN/<x>/SecondarySSID/<x>
+    MSmlDmDDFObject& secondarySSid = secondarySSidRoot.AddChildObjectGroupL( );
+    FillNodeInfoL( secondarySSid,
+               accessTypesGetAddDel,
+               MSmlDmDDFObject::EOneOrN,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::ENode,
+               KNSmlEmpty );               
+
+    //WLAN/<x>/SecondarySSID/<x>/SSID
+    MSmlDmDDFObject& secSsidId = secondarySSid.AddChildObjectL( KNSmlWLanSsid );
+    FillNodeInfoL( secSsidId,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::EChr,
+               KNSmlEmpty );                           
+
+    //WLAN/<x>/SecondarySSID/<x>/UsedSSID
+    MSmlDmDDFObject& secUsedSsidId = secondarySSid.AddChildObjectL( KNSmlWLanUsedSsid );
+    FillNodeInfoL( secUsedSsidId,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EZeroOrOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::EChr,
+               KNSmlEmpty );                           
+
+    //WLAN/<x>/EAP/
+    MSmlDmDDFObject& eapRoot = wlanNode.AddChildObjectL( KNSmlWLanEap );
+    FillNodeInfoL( eapRoot,
+               accessTypesGetAdd,
+               MSmlDmDDFObject::EZeroOrOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::ENode,
+               KNSmlEmpty );               
+
+    //WLAN/<x>/EAP/<x>
+    MSmlDmDDFObject& eap = eapRoot.AddChildObjectGroupL( );
+    FillNodeInfoL( eap,
+               accessTypesGetAdd,
+               MSmlDmDDFObject::EOneOrN,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::ENode,
+               KNSmlEmpty );               
+
+    //WLAN/<x>/EAP/<x>/EAPType
+    MSmlDmDDFObject& eapType = eap.AddChildObjectL( KNSmlWLanEapType );
+    FillNodeInfoL( eapType,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::EChr,
+               KNSmlEmpty );                           
+
+    //WLAN/<x>/EAP/<x>/Username
+    MSmlDmDDFObject& eapUsername = eap.AddChildObjectL( KNSmlWLanUsername );
+    FillNodeInfoL( eapUsername,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EZeroOrOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::EChr,
+               KNSmlEmpty );                           
+
+    //WLAN/<x>/EAP/<x>/Password
+    MSmlDmDDFObject& eapPassword = eap.AddChildObjectL( KNSmlWLanPassword );
+    FillNodeInfoL( eapPassword,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EZeroOrOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::EChr,
+               KNSmlEmpty );                           
+
+    //WLAN/<x>/EAP/<x>/Realm
+    MSmlDmDDFObject& eapRealm = eap.AddChildObjectL( KNSmlWLanRealm );
+    FillNodeInfoL( eapRealm,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EZeroOrOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::EChr,
+               KNSmlEmpty );                           
+
+    //WLAN/<x>/EAP/<x>/UsePseudonym
+    MSmlDmDDFObject& eapPseudo = eap.AddChildObjectL( KNSmlWLanUsePseudonym );
+    FillNodeInfoL( eapPseudo,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EZeroOrOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::EBool,
+               KNSmlEmpty );                           
+
+    //WLAN/<x>/EAP/<x>/Encapsulation
+    // Encapsulation is not supported using this parameter. It is done
+    // with */EAP/EAPIdxxx-yyy/* where xxx is the encapsulated and yyy the encapsulating method.
+    /*MSmlDmDDFObject& eapEncapsulation = eap.AddChildObjectL( KNSmlWLanEncapsulation );
+    FillNodeInfoL( eapEncapsulation,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EZeroOrOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::EChr,
+               KNSmlEmpty );                           */
+
+    //WLAN/<x>/EAP/<x>/VerifyCertRealm
+    MSmlDmDDFObject& eapVerifyCertRealm = eap.AddChildObjectL( KNSmlWLanVerifyCertRealm );
+    FillNodeInfoL( eapVerifyCertRealm,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EZeroOrOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::EBool,
+               KNSmlEmpty );                           
+
+    //WLAN/<x>/EAP/<x>/RequireClientAuthentication
+    MSmlDmDDFObject& eapRequireClientAuthentication = eap.AddChildObjectL( KNSmlWLanRequireClientAuthentication );
+    FillNodeInfoL( eapRequireClientAuthentication,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EZeroOrOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::EBool,
+               KNSmlEmpty );                           
+
+    //WLAN/<x>/EAP/<x>/SessionValidityTime
+    MSmlDmDDFObject& eapSessionValidityTime = eap.AddChildObjectL( KNSmlWLanSessionValidityTime );
+    FillNodeInfoL( eapSessionValidityTime,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EZeroOrOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::EChr,
+               KNSmlEmpty );                           
+
+    //WLAN/<x>/EAP/<x>/CipherSuite
+    MSmlDmDDFObject& eapCipherSuite = eap.AddChildObjectL( KNSmlWLanCipherSuite );
+    FillNodeInfoL( eapCipherSuite,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EZeroOrOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::EChr,
+               KNSmlEmpty );                           
+
+    //WLAN/<x>/EAP/<x>/AllowPEAPv0
+    MSmlDmDDFObject& eapAllowPEAPv0 = eap.AddChildObjectL( KNSmlWLanAllowPEAPv0 );
+    FillNodeInfoL( eapAllowPEAPv0,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EZeroOrOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::EBool,
+               KNSmlEmpty );                           
+
+    //WLAN/<x>/EAP/<x>/AllowPEAPv1
+    MSmlDmDDFObject& eapAllowPEAPv1 = eap.AddChildObjectL( KNSmlWLanAllowPEAPv1 );
+    FillNodeInfoL( eapAllowPEAPv1,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EZeroOrOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::EBool,
+               KNSmlEmpty );                           
+
+    //WLAN/<x>/EAP/<x>/AllowPEAPv2
+    MSmlDmDDFObject& eapAllowPEAPv2 = eap.AddChildObjectL( KNSmlWLanAllowPEAPv2 );
+    FillNodeInfoL( eapAllowPEAPv2,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EZeroOrOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::EBool,
+               KNSmlEmpty );  
+               
+#ifdef FF_WLAN_EXTENSIONS 
+
+    //WLAN/<x>/EAP/<x>/AuthProvModeAllowed
+    MSmlDmDDFObject& authProvMode = eap.AddChildObjectL( KNSmlWLanAuthProvMode );
+    FillNodeInfoL( authProvMode,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EZeroOrOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::EBool,
+               KNSmlEmpty ); 
+                             
+    //WLAN/<x>/EAP/<x>/UnauthProvModeAllowed
+    MSmlDmDDFObject& unauthProvMode = eap.AddChildObjectL( KNSmlWLanUnauthProvMode );
+    FillNodeInfoL( unauthProvMode,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EZeroOrOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::EBool,
+               KNSmlEmpty ); 
+                                 
+    //WLAN/<x>/EAP/<x>/PACGroupReference
+    MSmlDmDDFObject& pacGroupRef = eap.AddChildObjectL( KNSmlWLanPACGroupRef );
+    FillNodeInfoL( pacGroupRef,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EZeroOrOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::EChr,
+               KNSmlEmpty );             
+               
+	//WLAN/<x>/EAP/<x>/WarnADHPNoPAC
+    MSmlDmDDFObject& warnADHPNoPAC = eap.AddChildObjectL( KNSmlWLanWarnADHPNoPAC );
+    FillNodeInfoL( warnADHPNoPAC,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EZeroOrOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::EBool,
+               KNSmlEmpty ); 
+               
+ 	//WLAN/<x>/EAP/<x>/WarnADHPNoMatchingPAC
+    MSmlDmDDFObject& warnADHPNoMatchingPAC = eap.AddChildObjectL( KNSmlWLanWarnADHPNoMatchPAC );
+    FillNodeInfoL( warnADHPNoMatchingPAC,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EZeroOrOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::EBool,
+               KNSmlEmpty ); 
+              
+    //WLAN/<x>/EAP/<x>/WarnNotDefaultServer
+    MSmlDmDDFObject& warnNoDefServ = eap.AddChildObjectL( KNSmlWLanWarnNotDefaultSrv );
+    FillNodeInfoL( warnNoDefServ,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EZeroOrOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::EBool,
+               KNSmlEmpty ); 
+               
+#endif           
+                                                 
+
+    //WLAN/<x>/EAP/<x>/Certificate
+    MSmlDmDDFObject& eapCertificateRoot = eap.AddChildObjectL( KNSmlWLanCertificate );
+    FillNodeInfoL( eapCertificateRoot,
+               accessTypesGetAdd,
+               MSmlDmDDFObject::EZeroOrOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::ENode,
+               KNSmlEmpty );                           
+
+    //WLAN/<x>/EAP/<x>/Certificate/<x>
+    MSmlDmDDFObject& eapCertificate = eapCertificateRoot.AddChildObjectGroupL( );
+    FillNodeInfoL( eapCertificate,
+               accessTypesGetAdd,
+               MSmlDmDDFObject::EOneOrMore,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::ENode,
+               KNSmlEmpty );               
+
+    //WLAN/<x>/EAP/<x>/Certificate/<x>/IssuerName
+    MSmlDmDDFObject& eapIssuerName = eapCertificate.AddChildObjectL( KNSmlWLanIssuerName );
+    FillNodeInfoL( eapIssuerName,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EZeroOrOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::EChr,
+               KNSmlEmpty );                           
+
+    //WLAN/<x>/EAP/<x>/Certificate/<x>/SubjectName
+    MSmlDmDDFObject& eapSubjectName = eapCertificate.AddChildObjectL( KNSmlWLanSubjectName );
+    FillNodeInfoL( eapSubjectName,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EZeroOrOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::EChr,
+               KNSmlEmpty );                           
+
+    //WLAN/<x>/EAP/<x>/Certificate/<x>/CertType
+    MSmlDmDDFObject& eapCertType = eapCertificate.AddChildObjectL( KNSmlWLanCertType );
+    FillNodeInfoL( eapCertType,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::EChr,
+               KNSmlEmpty );                           
+
+    //WLAN/<x>/EAP/<x>/Certificate/<x>/SerialNumber
+    MSmlDmDDFObject& eapSerialNumber = eapCertificate.AddChildObjectL( KNSmlWLanSerialNumber );
+    FillNodeInfoL( eapSerialNumber,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EZeroOrOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::EChr,
+               KNSmlEmpty );                           
+
+    //WLAN/<x>/EAP/<x>/Certificate/<x>/SubjectKeyId
+    MSmlDmDDFObject& eapSubjectKeyId = eapCertificate.AddChildObjectL( KNSmlWLanSubjectKeyId );
+    FillNodeInfoL( eapSubjectKeyId,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::EChr,
+               KNSmlEmpty );                           
+
+    //WLAN/<x>/EAP/<x>/Certificate/<x>/Fingerprint
+    MSmlDmDDFObject& eapFingerprint = eapCertificate.AddChildObjectL( KNSmlWLanFingerprint );
+    FillNodeInfoL( eapFingerprint,
+               accessTypesNoDelete,
+               MSmlDmDDFObject::EZeroOrOne,
+               MSmlDmDDFObject::EDynamic,
+               MSmlDmDDFObject::EChr,
+               KNSmlEmpty );                           
+
+	CleanupStack::PopAndDestroy(); //aclTypes
+
+    _DBG_FILE("CNSmlWLanAdapter::DDFStructureL(): end");
+    }
+
+//-----------------------------------------------------------------------------
+// CNSmlWLanAdapter* CNSmlWLanAdapter::AddLeafObjectL( const TDesC& aURI,const 
+// TDesC& aParentLUID, const TDesC8& aObject, const TDesC& aType, 
+// const TInt aStatusRef )
+//-----------------------------------------------------------------------------
+void CNSmlWLanAdapter::AddLeafObjectL( const TDesC8& aURI,
+                                       const TDesC8& aParentLUID, 
+                                       const TDesC8& aObject, 
+                                       const TDesC8& /*aType*/, 
+                                       const TInt aStatusRef )
+    {
+    DBG_ARGS8(_S8("CNSmlWLanAdapter::AddLeafObjectL - <%S> <%S> <%S>"), &aURI, &aParentLUID, &aObject );
+
+    TInt uriSegs = NumOfUriSegs( aURI );
+    TInt luid = GetIdFromLuid( aParentLUID );
+    TInt err(KErrNone);
+    TPtrC8 lastUriSeg = GetLastUriSeg( aURI );
+    
+    TInt eapIndex(0);
+    
+    TInt eapId = GetEAPIdFromUri( aURI );
+    if (eapId == KErrNotFound)
+        {
+        _DBG_FILE("CNSmlWLanAdapter::AddLeafObjectL(): Non-EAP setting.");
+        err = iWlanSettings->GetWlanSettings( luid, *iSettings );    
+        }
+    else
+       	{
+       	_DBG_FILE("CNSmlWLanAdapter::AddLeafObjectL(): EAP setting.");       	
+		TInt encapsEapId = GetEncapsEAPIdFromUri( aURI );
+        if ( encapsEapId == KErrNotFound )
+        	{
+        	_DBG_FILE("CNSmlWLanAdapter::AddLeafObjectL(): Does not have encapsulation id xx-xx.");
+        	encapsEapId = EAPSettings::EEapNone;
+        	}
+        TInt i(0);
+    	// This is EAP addition. Check if the buffer for this EAP already exists
+    	for ( i = 0 ; i < iEAPBuffer.Count() ; i++ )
+    		{
+    		if ( eapId == iEAPBuffer[i]->iEAPSettings->iEAPType
+    			&& encapsEapId == iEAPBuffer[i]->iEncapsulatingEAPId )
+    			{
+    			// The correct buffer was found.     			
+    			_DBG_FILE("CNSmlWLanAdapter::AddLeafObjectL(): Found existing buffer.");
+				eapIndex = i;
+				break;                    			
+    			}
+    		}
+    	if ( i == iEAPBuffer.Count() )
+    		{
+    		DBG_ARGS8(_S8("CNSmlWLanAdapter::AddLeafObjectL(): No buffer found. Create new: <%d>-<%d>"), eapId, encapsEapId );
+			// Buffer was not found. Create new.
+			TInt WLANServiceId = GetServiceIdFromUriL ( aURI );
+    
+	        if ( WLANServiceId == KErrNotFound )
+	        	{
+	        	_DBG_FILE("CNSmlWLanAdapter::AddLeafObjectL(): Could not find WLAN service ID from URI.");
+	        	iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound );
+	        	return;
+	        	}
+	        
+	        TNSmlEAPBufferElement* buffer = new (ELeave) TNSmlEAPBufferElement;	        
+	        CleanupStack::PushL( buffer );
+	        
+	        buffer->iEAPSettings = new (ELeave) EAPSettings;	        
+	        CleanupStack::PushL( buffer->iEAPSettings );
+	        
+	        buffer->iEAPSettings->iEAPType = static_cast<EAPSettings::TEapType> ( eapId );
+	        buffer->iWLANServiceId = WLANServiceId;
+	        buffer->iEncapsulatingEAPId = static_cast<EAPSettings::TEapType>( encapsEapId );
+	        iEAPBuffer.AppendL(buffer);
+	        
+	        CleanupStack::Pop( buffer->iEAPSettings );
+	        CleanupStack::Pop( buffer );
+	        
+	        eapIndex = iEAPBuffer.Count() - 1;			
+   			}
+       	}
+    if( err != KErrNone )
+        {
+        DBG_ARGS(_S16("CNSmlWLanAdapter::AddLeafObjectL - ErrorCode <%D>"), err );
+        iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound );
+        return;
+        }
+
+    else if( aURI.Match( _L8("AP/*/NAPDef/*/WLAN/*/WEPKey/*/*") ) != KErrNotFound && uriSegs==9 )
+        {
+        TInt wepKeyId = GetWepKeyIdFromLuid( aParentLUID );
+
+        if( wepKeyId != KErrNotFound )
+            {
+            if( lastUriSeg.Match( KNSmlWLanWepKeyData ) != KErrNotFound  )
+                {
+                switch( wepKeyId )
+                    {
+                case 1:
+                    iSettings->WepKey1 = aObject;
+                    break;
+                case 2:
+                    iSettings->WepKey2 = aObject;
+                    break;
+                case 3:
+                    iSettings->WepKey3 = aObject;
+                    break;
+                case 4:
+                    iSettings->WepKey4 = aObject;
+                    break;
+                default:
+                    iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound );
+                    return;
+                    }
+                }
+            else if( lastUriSeg.Match( KNSmlWLanWepKeyId ) != KErrNotFound )
+                {
+                iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EOk );
+                return;
+                }
+            else
+                {
+                iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound );
+                return;
+                }
+            }
+
+        else
+            {
+            TInt index = -1;
+
+            for( TInt i=0; i<iBuffer->Count(); i++ )
+                {
+                if( aURI.Find( iBuffer->At(i).iUri->Des() ) != KErrNotFound )
+                    {
+                    index = i;
+                    break;
+                    }
+                }
+            if( index < 0 )
+                {
+                wepKeyId = GetWepKeyIdFromUri( aURI );
+
+                TBuf8<80> addLUID; // AP/<x>/NapDef/<x>/WLAN/<x>/WEPKey/WKIdnnn
+                addLUID.AppendNum( wepKeyId );
+                addLUID.AppendNumFixedWidth( luid, EDecimal, 3 );
+
+                DBG_ARGS8(_S8("WLanAdapter::AddleafObject - mapping uri: <%S> to luid: <%S>"), &aURI, &addLUID );
+                DBG_ARGS8(_S8("Parametrit - <%S> <%S>"), &aURI, &addLUID );
+                iCallBack->SetMappingL(aURI, addLUID);
+                if( lastUriSeg.Match( KNSmlWLanWepKeyData ) != KErrNotFound  )
+                {
+                switch( wepKeyId )
+                    {
+                case 1:
+                    iSettings->WepKey1 = aObject;
+                    break;
+                case 2:
+                    iSettings->WepKey2 = aObject;
+                    break;
+                case 3:
+                    iSettings->WepKey3 = aObject;
+                    break;
+                case 4:
+                    iSettings->WepKey4 = aObject;
+                    break;
+                default:
+                    iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound );
+                    return;
+                    }
+                }
+            else if( lastUriSeg.Match( KNSmlWLanWepKeyId ) != KErrNotFound )
+                {
+                iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EOk );
+                return;
+                }
+            else
+                {
+                iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound );
+                return;
+                }
+                }
+            else
+                {
+                //Add WepKeyId and execute buffer
+                if( lastUriSeg.Match( KNSmlWLanWepKeyId ) != KErrNotFound )
+                    {
+                    iBuffer->At(index).iWepKeyId = DesToInt( aObject );
+                    iBuffer->At(index).iIdStatusRef = aStatusRef;
+                                       
+//                  ExecuteBufferL( ); (JPLA-6M29NR caused error in WEPkey Data if buffer is executed here)
+                    return;
+                    }
+
+                else if( lastUriSeg.Match( KNSmlWLanWepKeyData ) != KErrNotFound )
+                    {
+                    iBuffer->At(index).iData = aObject.AllocLC();
+                    iBuffer->At(index).iDataSet = ETrue;
+                    CleanupStack::Pop( ); //iBuffer->At(index).iData
+                    iBuffer->At(index).iDataStatusRef = aStatusRef;
+                    return;
+                    }
+                else
+                    {
+                    iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound );
+                    return;
+                    }
+                }
+            }
+        }
+
+    else if( aURI.Match( _L8("AP/*/NAPDef/*/WLAN/*/*") ) != KErrNotFound && uriSegs==7 )
+        {
+        if( lastUriSeg.Compare(KNSmlWLanSsid) == 0 )
+            {
+            TInt returnValue = CnvUtfConverter::ConvertToUnicodeFromUtf8( iSettings->SSID, aObject );
+            DBG_ARGS(_S16("WLanAdapter::ssid convert: <%D>"), returnValue );
+            if (returnValue != KErrNone)
+            	{
+            	// setting the default value to the network name
+            	iSettings->SSID = TPtrC(KNSmlWLanDefaultSSID);
+            	DBG_ARGS(_S16("CNSmlWLanAdapter::AddLeafObjectL SSID - ErrorCode <%D>"), returnValue );
+                iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EError );
+                return;
+            	}
+            }
+
+        else if( lastUriSeg.Compare(KNSmlWLanUsedSsid) == 0 )
+            {
+            TInt returnValue = CnvUtfConverter::ConvertToUnicodeFromUtf8( iSettings->UsedSSID, aObject );
+            DBG_ARGS(_S16("WLanAdapter::usedSsid convert: <%D>"), returnValue );
+            }
+
+        else if( lastUriSeg.Compare(KNSmlWLanSsidHidden) == 0 )
+            {
+            if( aObject.MatchF( _L8("True")) != KErrNotFound )
+                {
+                iSettings->ScanSSID = 1;
+                }
+            else
+                {
+                iSettings->ScanSSID = 0;
+                }
+            }
+
+        else if( lastUriSeg.Compare(KNSmlWLanNetworkMode) == 0 )
+            {
+            if( aObject.MatchF( _L8("ADHOC") ) != KErrNotFound )
+                {
+                iSettings->ConnectionMode = EAdhoc;
+                }
+
+            else if( aObject.MatchF( _L8("Infrastructure") ) != KErrNotFound )
+                {
+                iSettings->ConnectionMode = EInfrastructure;
+                }
+            else
+                {
+                iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EInvalidObject );
+                return;
+                }
+            }
+    
+        else if( lastUriSeg.Compare(KNSmlWLanSecurityMode) == 0 )
+            {
+            if( aObject.MatchF( _L8("NONE") ) != KErrNotFound )
+                {
+                iSettings->SecurityMode = EAllowUnsecure;
+                }
+            else if( aObject.MatchF( _L8("WEP") ) != KErrNotFound )
+                {
+                iSettings->SecurityMode = EWep;
+                }
+            else if( aObject.MatchF( _L8("8021X") ) != KErrNotFound )
+                {
+                iSettings->SecurityMode = EWlan8021x;
+                }
+            else if( aObject.MatchF( _L8("WPA") ) != KErrNotFound )
+                {
+                iSettings->SecurityMode = EWpa;
+                }
+            else if( aObject.MatchF( _L8("WPA2") ) != KErrNotFound )
+                {
+                iSettings->SecurityMode = EWpa2;
+                }
+            else
+                {
+                iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EInvalidObject );
+                return;
+                }
+            }
+
+        else if( lastUriSeg.Compare( KNSmlWLanUseWPAPSK ) == 0 )
+            {
+            if( aObject.MatchF( _L8("True")) != KErrNotFound )
+                {
+                iSettings->UseWPAPSK = 1;
+                }
+            else
+                {
+                iSettings->UseWPAPSK = 0;
+                }
+            }
+
+        else if( lastUriSeg.Compare(KNSmlWLanWpaPreSharedKey) == 0 )
+            {
+            if(aObject.Length() > KMaxPSKLength)
+            {
+            	iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ETooLargeObject );
+            	return;
+            }
+            /*else if(aObject.Length() < KMinPSKLength)
+            {
+              	iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EInvalidObject );
+            	return;
+            }*/
+            else
+            {
+                iSettings->WPAPreSharedKey = aObject;     
+            }
+            }   
+
+	    else if( lastUriSeg.Compare( KNSmlWLanEapList ) == 0 )
+    	    {
+            TInt returnValue = CnvUtfConverter::ConvertToUnicodeFromUtf8( iSettings->EapList, aObject );
+            DBG_ARGS(_S16("WLanAdapter::EapList convert: <%D>"), returnValue );            
+        	}
+
+    	else if( lastUriSeg.Compare( KNSmlWLanAuthMode ) == 0 )
+        	{
+        	if( aObject.MatchF( _L8("1")) != KErrNotFound )
+                {
+                iSettings->AuthMode = EShared;
+                }
+            else
+                {
+                iSettings->AuthMode = EOpen;
+                }            
+        	}
+
+        else if( lastUriSeg.Compare(KNSmlWLanWepIndex) == 0 )
+            {
+            TInt32 actualIndex = DesToInt( aObject );
+            if( actualIndex < 4 && actualIndex >= 0  )
+            {
+            	iSettings->WepIndex = actualIndex ;
+            }
+            else
+            {
+            	if ( actualIndex > 3)
+            	{
+				iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ETooLargeObject );
+            	}
+            	else
+            	{
+				iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EError );
+            	}
+            	return;
+            }
+            }
+
+        else
+            {
+            iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound );
+            return;
+            }
+        }
+
+    else if( aURI.Match( _L8("AP/*/NAPDef/*/WLAN/*/SecondarySSID/*/*") ) != KErrNotFound && uriSegs == 9 )
+        {
+        TSecondarySSID ssid;
+        ssid.Id = 0;
+        TUint32 id = GetSecSSIDFromUriL(aURI);
+        RArray<TSecondarySSID> secondaryList;
+        CleanupClosePushL( secondaryList );
+        iWlanSettings->GetSecondarySSIDListL(luid, secondaryList);
+        TInt count = secondaryList.Count();
+        for (TInt i=0;i<count;i++)
+            {
+            if (id == secondaryList[i].Id)
+                {
+                ssid = secondaryList[i];
+                break;
+                }
+            }
+        CleanupStack::PopAndDestroy(&secondaryList);
+        if (ssid.Id == 0)
+            {
+            
+            _DBG_FILE("CNSmlWLanAdapter::Coming to check buffer ");
+            
+            //Check if its buffered here - Divya
+            TInt index = -1;
+
+            for( TInt i=0; i<iSecondaryBuffer.Count(); i++ )
+                {
+                if( aURI.Find( iSecondaryBuffer[i]->iUri->Des() ) != KErrNotFound )
+                    {
+                    index = i;
+                    _DBG_FILE("CNSmlWLanAdapter::one indexis matched :-)");
+                    break;
+                    }
+                }
+            if( index < 0 )
+                {
+                _DBG_FILE("CNSmlWLanAdapter::one indexis matched :-)");
+                iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound );
+                return;
+                }
+            else
+                {
+                DBG_ARGS8(_S8("CWlanadaptes::Execute Buffer - copying in buffer instead of giving 404 uri: object id  : <%S>"), &aObject);
+                
+                    if( lastUriSeg.Compare(KNSmlWLanSsid) == 0 )
+                    {
+                    if ( aObject.Length() <= KMaxTextLength )
+                    	{
+                    	iSecondaryBuffer[index]->ScannedId.Copy(aObject);
+                    	}
+                    else
+                    	{
+                    	_DBG_FILE("CNSmlWLanAdapter::AddLeafObject - SecondarySSID too long");
+                        iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EError );
+                        return;
+                    	}
+                    		
+                    }
+                    else if (lastUriSeg.Compare(KNSmlWLanUsedSsid) == 0 )
+                    {
+                    iSecondaryBuffer[index]->UsedId.Copy(aObject);
+                    }
+                
+                }
+                
+            
+            }
+        
+        else
+            {
+            
+        if( lastUriSeg.Compare(KNSmlWLanSsid) == 0 )
+            {
+            ssid.ScannedId.Copy(aObject);
+            }
+        else if (lastUriSeg.Compare(KNSmlWLanUsedSsid) == 0 )
+            {
+            ssid.UsedId.Copy(aObject);
+            }
+        TInt retval = iWlanSettings->WriteSecondarySSIDL(luid, ssid, EFalse);
+        if (retval == KErrNone)
+            {
+            iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EOk );
+            }
+        else
+            {
+            iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EError );
+            }
+            }
+        }
+    else if( aURI.Match( _L8("AP/*/NAPDef/*/WLAN/*/EAP/*/*") ) != KErrNotFound && uriSegs == 9 )
+        {
+        DBG_ARGS8(_S8("CNSmlWLanAdapter::AddLeafObjectL - EAP index: <%d>"), eapIndex );
+        
+        if( lastUriSeg.Compare(KNSmlWLanEapType) == 0 )
+            {
+            // Get EAP ID from URI instead of the value because the server gives the value
+            // incorrectly as the textual representation of the EAP method instead of the IANA number.            
+            iEAPBuffer[eapIndex]->iEAPSettings->iEAPType = static_cast<EAPSettings::TEapType>(GetEAPIdFromUri(aURI));
+            }
+        else if (lastUriSeg.Compare(KNSmlWLanUsername) == 0)
+            {
+            TInt retval = CnvUtfConverter::ConvertToUnicodeFromUtf8( iEAPBuffer[eapIndex]->iEAPSettings->iUsername, aObject );
+            if (retval == KErrNone)
+            	{
+                iEAPBuffer[eapIndex]->iEAPSettings->iUsernamePresent = ETrue;
+            	}
+            else
+            	{
+            	iEAPBuffer[eapIndex]->iEAPSettings->iUsername.Zero();
+                DBG_ARGS(_S16("CNSmlWLanAdapter::AddLeafObjectL EAP username - ErrorCode <%D>"), retval );
+                iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EError );
+                return;
+            	}
+
+            }
+        else if (lastUriSeg.Compare(KNSmlWLanPassword) == 0)
+            {
+            TInt retval = CnvUtfConverter::ConvertToUnicodeFromUtf8( iEAPBuffer[eapIndex]->iEAPSettings->iPassword, aObject );
+            if (retval == KErrNone)
+            	{
+                iEAPBuffer[eapIndex]->iEAPSettings->iPasswordPresent = ETrue;
+            	}
+            else
+            	{
+            	iEAPBuffer[eapIndex]->iEAPSettings->iPassword.Zero();
+                DBG_ARGS(_S16("CNSmlWLanAdapter::AddLeafObjectL EAP password - ErrorCode <%D>"), retval );
+                iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EError );
+                return;
+            	}
+            }
+        else if (lastUriSeg.Compare(KNSmlWLanRealm) == 0)
+            {
+            TInt retval = CnvUtfConverter::ConvertToUnicodeFromUtf8( iEAPBuffer[eapIndex]->iEAPSettings->iRealm, aObject );
+            if (retval == KErrNone)
+                iEAPBuffer[eapIndex]->iEAPSettings->iRealmPresent = ETrue;
+            
+            }
+        else if (lastUriSeg.Compare(KNSmlWLanUsePseudonym) == 0)
+            {
+            if ( (aObject == KTrue) || (aObject == KTtrue) )
+                iEAPBuffer[eapIndex]->iEAPSettings->iUsePseudonyms = ETrue; 
+            else
+                iEAPBuffer[eapIndex]->iEAPSettings->iUsePseudonyms = EFalse;
+            
+            
+            iEAPBuffer[eapIndex]->iEAPSettings->iUsePseudonymsPresent = ETrue; 
+            }
+        else if (lastUriSeg.Compare(KNSmlWLanEncapsulation) == 0)
+            {           
+            TBuf8<KExpandedEAPIdLength> dummy;
+            ConvertEAPStringToIds( aObject, dummy, iEAPBuffer[eapIndex]->iEncapsulatingEAPId );
+            }
+        else if (lastUriSeg.Compare(KNSmlWLanVerifyCertRealm) == 0)
+            {
+            if ( (aObject == KTrue) || (aObject == KTtrue) )
+                iEAPBuffer[eapIndex]->iEAPSettings->iVerifyServerRealm = ETrue; 
+            else
+                iEAPBuffer[eapIndex]->iEAPSettings->iVerifyServerRealm = EFalse;
+            
+            
+            iEAPBuffer[eapIndex]->iEAPSettings->iVerifyServerRealmPresent = ETrue; 
+            
+            }
+        else if (lastUriSeg.Compare(KNSmlWLanRequireClientAuthentication) == 0)
+            {
+            if ( (aObject == KTrue) || (aObject == KTtrue) )
+                iEAPBuffer[eapIndex]->iEAPSettings->iRequireClientAuthentication = ETrue; 
+            else
+                iEAPBuffer[eapIndex]->iEAPSettings->iRequireClientAuthentication = EFalse;
+            
+            
+            iEAPBuffer[eapIndex]->iEAPSettings->iRequireClientAuthenticationPresent = ETrue; 
+            
+            }
+        else if (lastUriSeg.Compare(KNSmlWLanSessionValidityTime) == 0)
+            {
+            TLex8 lex(aObject);
+            TUint newVal;
+            TInt sesValErr = lex.Val(newVal);
+            // Check whether the conversion went ok
+            if ( sesValErr == KErrNone ) 
+            	{
+            	iEAPBuffer[eapIndex]->iEAPSettings->iSessionValidityTime = newVal;
+            	iEAPBuffer[eapIndex]->iEAPSettings->iSessionValidityTimePresent = ETrue;
+            	}
+            else 
+            	{
+            	// there were errors, let's leave the function and update status
+                DBG_ARGS(_S16("CNSmlWLanAdapter::AddLeafObjectL SessionValidityTime - ErrorCode <%D>"), sesValErr );
+                iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EInvalidObject );
+                return;
+            	}
+            }
+        else if (lastUriSeg.Compare(KNSmlWLanCipherSuite) == 0)
+            {
+            FillCipherSuitesL( aObject , eapIndex );
+            }
+        else if (lastUriSeg.Compare(KNSmlWLanAllowPEAPv0) == 0)
+            {
+            if ( (aObject == KTrue) || (aObject == KTtrue) )
+                iEAPBuffer[eapIndex]->iEAPSettings->iPEAPv0Allowed = ETrue; 
+            else
+                iEAPBuffer[eapIndex]->iEAPSettings->iPEAPv0Allowed = EFalse;
+            
+            iEAPBuffer[eapIndex]->iEAPSettings->iPEAPVersionsPresent = ETrue;
+            }
+        else if (lastUriSeg.Compare(KNSmlWLanAllowPEAPv1) == 0)
+            {
+            if ( (aObject == KTrue) || (aObject == KTtrue) )
+                iEAPBuffer[eapIndex]->iEAPSettings->iPEAPv1Allowed = ETrue; 
+            else
+                iEAPBuffer[eapIndex]->iEAPSettings->iPEAPv1Allowed = EFalse;
+
+            iEAPBuffer[eapIndex]->iEAPSettings->iPEAPVersionsPresent = ETrue;
+            
+            }
+        else if (lastUriSeg.Compare(KNSmlWLanAllowPEAPv2) == 0)
+            {
+            if ( (aObject == KTrue) || (aObject == KTtrue) )
+                iEAPBuffer[eapIndex]->iEAPSettings->iPEAPv2Allowed = ETrue; 
+            else
+                iEAPBuffer[eapIndex]->iEAPSettings->iPEAPv2Allowed = EFalse;
+            
+            iEAPBuffer[eapIndex]->iEAPSettings->iPEAPVersionsPresent = ETrue;
+            }
+            
+#ifdef FF_WLAN_EXTENSIONS 
+		else if (lastUriSeg.Compare(KNSmlWLanAuthProvMode) == 0)
+            {
+            if ( (aObject == KTrue) || (aObject == KTtrue) )
+                iEAPBuffer[eapIndex]->iEAPSettings->iAuthProvModeAllowed = ETrue; 
+            else
+                iEAPBuffer[eapIndex]->iEAPSettings->iAuthProvModeAllowed = EFalse;
+            
+            iEAPBuffer[eapIndex]->iEAPSettings->iAuthProvModeAllowedPresent = ETrue;
+            }
+            
+            
+      	else if (lastUriSeg.Compare(KNSmlWLanUnauthProvMode) == 0)
+            {
+            if ( (aObject == KTrue) || (aObject == KTtrue) )
+                iEAPBuffer[eapIndex]->iEAPSettings->iUnauthProvModeAllowed = ETrue; 
+            else
+                iEAPBuffer[eapIndex]->iEAPSettings->iUnauthProvModeAllowed = EFalse;
+            
+            iEAPBuffer[eapIndex]->iEAPSettings->iUnauthProvModeAllowedPresent = ETrue;
+            }
+            
+                        
+     	else if (lastUriSeg.Compare(KNSmlWLanPACGroupRef) == 0)
+            {
+            TInt retval = CnvUtfConverter::ConvertToUnicodeFromUtf8( iEAPBuffer[eapIndex]->iEAPSettings->iPACGroupReference, aObject );
+            if (retval == KErrNone)
+                iEAPBuffer[eapIndex]->iEAPSettings->iPACGroupReferencePresent = ETrue;
+            
+            }
+                        
+    	else if (lastUriSeg.Compare(KNSmlWLanWarnADHPNoPAC) == 0)
+            {
+            if ( (aObject == KTrue) || (aObject == KTtrue) )
+                iEAPBuffer[eapIndex]->iEAPSettings->iWarnADHPNoPAC = ETrue; 
+            else
+                iEAPBuffer[eapIndex]->iEAPSettings->iWarnADHPNoPAC = EFalse;
+            
+            iEAPBuffer[eapIndex]->iEAPSettings->iWarnADHPNoPACPresent = ETrue;
+            }
+            
+            
+    	else if (lastUriSeg.Compare(KNSmlWLanWarnADHPNoMatchPAC) == 0)
+            {
+            if ( (aObject == KTrue) || (aObject == KTtrue) )
+                iEAPBuffer[eapIndex]->iEAPSettings->iWarnADHPNoMatchingPAC = ETrue; 
+            else
+                iEAPBuffer[eapIndex]->iEAPSettings->iWarnADHPNoMatchingPAC = EFalse;
+            
+            iEAPBuffer[eapIndex]->iEAPSettings->iWarnADHPNoMatchingPACPresent = ETrue;
+            }
+            
+            
+  		else if (lastUriSeg.Compare(KNSmlWLanWarnNotDefaultSrv) == 0)
+            {
+            if ( (aObject == KTrue) || (aObject == KTtrue) )
+                iEAPBuffer[eapIndex]->iEAPSettings->iWarnNotDefaultServer = ETrue; 
+            else
+                iEAPBuffer[eapIndex]->iEAPSettings->iWarnNotDefaultServer = EFalse;
+            
+            iEAPBuffer[eapIndex]->iEAPSettings->iWarnNotDefaultServerPresent = ETrue;
+            }
+            
+
+#endif            
+        
+        // Save the status reference
+		iEAPBuffer[eapIndex]->iStatusRefArray.AppendL(aStatusRef);        
+		return;
+        }
+    else if (aURI.Match( _L8("AP/*/NAPDef/*/WLAN/*/EAP/*/Certificate/*/*") ) != KErrNotFound && uriSegs == 11)
+        {
+		TPtrC8 ptr = NSmlDmURI::ParentURI( aURI );
+
+		// Get the LUID from ptr2
+       	HBufC8* certLuid = iCallBack->GetLuidAllocL( ptr );
+		
+		TInt certIndex = GetIdFromLuid( *certLuid );
+        
+        delete certLuid;		
+        
+        DBG_ARGS8(_S8("CNSmlWLanAdapter::AddLeafObjectL - cert index: <%d>, cert count: <%d>"), 
+        	certIndex, iEAPBuffer[eapIndex]->iEAPSettings->iCertificates.Count());
+      	
+      	if ( iEAPBuffer[eapIndex]->iEAPSettings->iCertificates.Count() - 1 < certIndex )
+      		{
+      		_DBG_FILE("CNSmlWLanAdapter::AddLeafObject - Certificate buffer does not exist. Create it.");
+      		// The certificate buffer does not exist. Create a new one
+	  		CertificateEntry entry;
+			iEAPBuffer[eapIndex]->iEAPSettings->iCertificates.AppendL(entry);
+			iEAPBuffer[eapIndex]->iEAPSettings->iCertificatesPresent = ETrue;
+	        	        
+	       	certIndex = iEAPBuffer[eapIndex]->iEAPSettings->iCertificates.Count() - 1;
+	       	
+	        TBuf8<2> newLuid;
+			newLuid.Num( certIndex );
+			
+	        DBG_ARGS8(_S8("WLanAdapter::AddLeafObjectL - mapping uri: <%S> to luid: <%S>"), &aURI, &newLuid );
+	        iCallBack->SetMappingL( aURI, newLuid);	              		      		
+      		}
+      
+        if (lastUriSeg.Compare(KNSmlWLanIssuerName) == 0)
+            {
+            TInt retval = 
+                CnvUtfConverter::ConvertToUnicodeFromUtf8( 
+                	iEAPBuffer[eapIndex]->iEAPSettings->iCertificates[certIndex].iIssuerName, aObject );
+            if (retval == KErrNone)
+                iEAPBuffer[eapIndex]->iEAPSettings->iCertificates[certIndex].iIssuerNamePresent = ETrue;
+            }
+        else if (lastUriSeg.Compare(KNSmlWLanSubjectName) == 0)
+            {
+            TInt retval = CnvUtfConverter::ConvertToUnicodeFromUtf8(
+            	iEAPBuffer[eapIndex]->iEAPSettings->iCertificates[certIndex].iSubjectName, aObject );
+            if (retval == KErrNone)
+                iEAPBuffer[eapIndex]->iEAPSettings->iCertificates[certIndex].iSubjectNamePresent = ETrue;
+            }
+        else if (lastUriSeg.Compare(KNSmlWLanCertType) == 0)
+            {
+            iEAPBuffer[eapIndex]->iEAPSettings->iCertificates[certIndex].iCertType = (CertificateEntry::TCertType)DesToInt(aObject);
+            }
+        else if (lastUriSeg.Compare(KNSmlWLanSerialNumber) == 0)
+            {
+            TInt retval = CnvUtfConverter::ConvertToUnicodeFromUtf8(
+            	iEAPBuffer[eapIndex]->iEAPSettings->iCertificates[certIndex].iSerialNumber, aObject );
+            if (retval == KErrNone)
+                iEAPBuffer[eapIndex]->iEAPSettings->iCertificates[certIndex].iSerialNumberPresent = ETrue;
+            
+            }
+        else if (lastUriSeg.Compare(KNSmlWLanSubjectKeyId) == 0)
+            {
+            
+            // Define literals to search the subject key for possible 0X/0x beginning
+            _LIT(KHexIdLC, "0x");
+           	_LIT(KHexIdUC, "0X");
+           	TBuf<2> hexIdBuf;
+           	// The lenght of the key given as input
+           	TInt keyLen = aObject.Length();
+           	
+           	// setting the given key to the key buffer
+           	TBuf8<KNsmlSubjectKeyIdLength> origKey = aObject;
+           	origKey.SetLength(keyLen);
+           	TBuf<KNsmlSubjectKeyIdLength> key;
+           	TLex8 tmpByte;
+           	TUint16 byte;
+           	
+           	// Remove possible spaces from the beginning
+           	origKey.TrimLeft();
+           	
+           	// the key should be atleast two chars long
+           	if (origKey.Length() >= 2)
+                {
+            	// Copy the two left most characters in to the buffer
+            	hexIdBuf.Copy(origKey.Left(2));
+            	
+            	// If the first characters are 0x or 0X, then thet should be ignored
+            	if (hexIdBuf.Compare(KHexIdLC) == 0
+            			|| hexIdBuf.Compare(KHexIdUC) == 0)
+            		{
+            		// delete two characters
+            		origKey.Delete(0, 2);
+            		}
+                }
+            
+
+           	// looping the subject key through, removing whitespaces
+           	for (TInt i = 0; i < keyLen; i++)
+           		{
+           		// removing white spaces from the left side of the key
+           		origKey.TrimLeft();
+           		// check that there are characters left
+           		if (origKey.Length() >= 2)
+           			{
+           			// pick the two left most bytes from the key
+           			tmpByte = origKey.Left(2);
+           			// convert byte into binary format
+           			err = tmpByte.Val(byte, EHex);
+           			
+           			// check whether conversion to decimal went ok
+           			if (err != KErrNone)
+           				{
+           				// if there are problems, then leave the loop
+           				break;
+           				}
+           			
+           			// store the appended byte into the key variable
+           			key.Append(byte);
+           			// delete two characters from the left side of the character array in the buffer
+           			origKey.Delete(0, 2);
+           			}
+           		else if (	origKey.Length() == 1 )
+           			{
+           			// pick the left most byte from the key
+           			tmpByte = origKey.Left(1);
+           			// convert byte into binary format
+           			err = tmpByte.Val(byte, EHex);
+           			
+           			// check whether conversion to decimal went ok
+           			if (err != KErrNone)
+           				{
+           				// if there are problems, then leave the loop
+           				break;
+           				}
+           			
+           			// store the appended byte into the key variable
+           			key.Append(byte);
+           			// delete two characters from the left side of the character array in the buffer
+           			origKey.Delete(0, 1);
+           			}
+           		else {
+           			// leave the loop, no characters are left
+           			break;
+           			}
+           		}
+           	// store key value only if no errors occurred
+           	if (err == KErrNone) 
+           		{
+           		iEAPBuffer[eapIndex]->iEAPSettings->iCertificates[certIndex].iSubjectKeyID.Copy(key);
+           		iEAPBuffer[eapIndex]->iEAPSettings->iCertificates[certIndex].iSubjectKeyIDPresent = ETrue;
+           		}
+             else 
+            	{
+            	// there were errors, let's leave the function and update status
+                DBG_ARGS(_S16("CNSmlWLanAdapter::AddLeafObjectL - ErrorCode <%D>"), err );
+                iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EError );
+                return;
+            	}
+            }
+        else if (lastUriSeg.Compare(KNSmlWLanFingerprint) == 0)
+            {
+            TInt retval = CnvUtfConverter::ConvertToUnicodeFromUtf8( 
+            	iEAPBuffer[eapIndex]->iEAPSettings->iCertificates[certIndex].iThumbprint, aObject );
+            if (retval == KErrNone)
+                iEAPBuffer[eapIndex]->iEAPSettings->iCertificates[certIndex].iThumbprintPresent = ETrue;
+            }
+        // Save the status reference
+		iEAPBuffer[eapIndex]->iStatusRefArray.AppendL(aStatusRef);        
+		
+        return;
+        }
+        
+    if (eapId == KErrNotFound)
+        {
+        err = iWlanSettings->WriteWlanSettings( *iSettings );
+        }
+    
+    if( err != KErrNone )
+        {
+        DBG_ARGS(_S16("CNSmlWLanAdapter::AddLeafObjectL - ErrorCode <%D>"), err );
+        iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EError );
+        return;
+        }
+
+    iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EOk );
+
+    _DBG_FILE("CNSmlWLanAdapter::AddLeafObjectL(): end");
+    }
+
+//-----------------------------------------------------------------------------
+// CNSmlWLanAdapter* CNSmlWLanAdapter::UpdateLeafObjectL( const TDesC& aURI, 
+//    const TDesC& aLUID, const TDesC8& aObject, const TDesC& aType, 
+//    const TInt aStatusRef )
+//-----------------------------------------------------------------------------
+void CNSmlWLanAdapter::UpdateLeafObjectL( const TDesC8& aURI, 
+                                          const TDesC8& aLUID, 
+                                          const TDesC8& aObject, 
+                                          const TDesC8& aType, 
+                                          const TInt aStatusRef )
+    {
+    _DBG_FILE("CNSmlWLanAdapter::UpdateLeafObjectL(): begin");
+    DBG_ARGS8(_S8("WLanAdapter::UpdateLeafObjectL - <%S> <%S> <%S>"), &aURI, &aLUID, &aObject );
+
+    AddLeafObjectL( aURI, aLUID, aObject, aType, aStatusRef );
+
+    _DBG_FILE("CNSmlWLanAdapter::UpdateLeafObjectL(): end");
+    }
+
+//------------------------------------------------------------------------------
+// CNSmlWLanAdapter::UpdateLeafObjectL( const TDesC8& aURI, 
+// const TDesC8& aLUID, const TDesC8& aObject, const TDesC8& aType )
+//------------------------------------------------------------------------------
+
+void CNSmlWLanAdapter::UpdateLeafObjectL( const TDesC8& /*aURI*/, 
+                                          const TDesC8& /*aLUID*/,
+                                          RWriteStream*& /*aStream*/, 
+                                          const TDesC8& /*aType*/,
+                                          TInt aStatusRef )
+    {
+    _DBG_FILE("CNSmlWLanAdapter::UpdateLeafObjectL(): begin");
+    iCallBack->SetStatusL(aStatusRef,CSmlDmAdapter::EError);
+    _DBG_FILE("CNSmlWLanAdapter::UpdateLeafObjectL(): end");
+    }
+
+//-----------------------------------------------------------------------------
+// CNSmlWLanAdapter* CNSmlWLanAdapter::DeleteObjectL( const TDesC8& aURI, 
+// const TDesC8& aLUID, const TInt aStatusRef )
+//-----------------------------------------------------------------------------
+void CNSmlWLanAdapter::DeleteObjectL( const TDesC8& aURI, 
+                                      const TDesC8& aLUID, 
+                                      const TInt aStatusRef )
+    {
+    _DBG_FILE("CNSmlWLanAdapter::DeleteObjectL(): begin");
+    CSmlDmAdapter::TError status = CSmlDmAdapter::ENotFound;
+
+    if( aLUID.Length() == 0 )
+        {
+        iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound );
+
+        _DBG_FILE("CNSmlWLanAdapter::DeleteObjectL(): end");
+        return;
+        }
+
+	TInt luid = GetIdFromLuid( aLUID );
+
+
+    if( ( NumOfUriSegs( aURI ) < 6 )
+     	|| (aURI.Match( _L8("AP/*/NAPDef/*/WLAN/*") ) != KErrNotFound && NumOfUriSegs( aURI ) == 6 ) )
+        {
+        TInt ret = iWlanSettings->DeleteWlanSettings( luid );
+
+        if( ret == KErrNone )
+        	{
+        	status = CSmlDmAdapter::EOk;
+        	}                          
+        else
+            {
+            status = CSmlDmAdapter::EError;
+            }
+            
+        }
+    else if( aURI.Match( _L8("AP/*/NAPDef/*/WLAN/*/WEPKey") ) != KErrNotFound && NumOfUriSegs( aURI ) == 7 )
+        {
+        // Individual WLAN settings cannot be deleted and this case should never happen.
+        // These are deleted through WLAN parent nodes.
+        status = CSmlDmAdapter::EError;
+        }
+        
+    else if( aURI.Match( _L8("AP/*/NAPDef/*/WLAN/*/SecondarySSID/*"))!= KErrNotFound && NumOfUriSegs( aURI ) == 8  )
+    {
+      _DBG_FILE("CNSmlWLanAdapter::DeleteObjectL(): matching SecondarySSID/*");
+    	//Check if the secondary SSID is present , if so delete that 
+    	 TUint32 secid = GetSecSSIDFromUriL(aURI);
+    	 TInt retvalue( KErrNone );
+         _DBG_FILE("CNSmlWLanAdapter::DeleteObjectL() before call to DeleteOneSecondarySSIDL ");
+        TRAPD(ssidError, retvalue = iWlanSettings->DeleteOneSecondarySSIDL(luid,secid));
+         _DBG_FILE("CNSmlWLanAdapter::DeleteObjectL() After call to DeleteOneSecondarySSIDL ");
+         DBG_ARGS8(_S8("TRAP ERROR  ssidError : Id = %d and retvalue eror = %d"), ssidError, retvalue);
+                  
+		 if(ssidError == KErrNone )
+		 {
+		   _DBG_FILE("CNSmlWLanAdapter::DeleteObjectL() SSID trap KERRONONE");
+		 	if(retvalue == KErrNone)            
+		 	{
+		 		_DBG_FILE("CNSmlWLanAdapter::DeleteObjectL() retvalue also  KERRONONE, so its deleted");
+		 		status = CSmlDmAdapter::EOk;
+		 	}
+		 	
+			 else  if (retvalue == KErrNotFound)
+			 {
+			 	status = CSmlDmAdapter::ENotFound;
+			 	_DBG_FILE("CNSmlWLanAdapter::DeleteObjectL() retvalue KErrNotFound :-(");
+			 }
+			
+			else
+			{
+				_DBG_FILE("CNSmlWLanAdapter::DeleteObjectL() retvalue some error :-(");
+				status = CSmlDmAdapter::EError;
+			}
+				
+			
+		 }
+		 else
+		 {
+		 _DBG_FILE("CNSmlWLanAdapter::DeleteObjectL() trap error :-( ");
+		 	status = CSmlDmAdapter::EError;
+		 }  
+				 
+    }
+    
+    else if( aURI.Match( _L8("AP/*/NAPDef/*/WLAN/*/*") ) != KErrNotFound && NumOfUriSegs( aURI ) == 7 )
+        {
+        // Individual WLAN settings cannot be deleted and this case should never happen.
+        // These are deleted through WLAN parent nodes.
+        status = CSmlDmAdapter::EError;
+        }
+
+    else if( aURI.Match( _L8("AP/*/NAPDef/*/WLAN/*/WEPKey/*") ) != KErrNotFound && NumOfUriSegs( aURI ) == 8 )
+        {
+        // Individual WEP keys cannot be deleted and this case should never happen.
+        // These are deleted through WLAN parent nodes.
+        status = CSmlDmAdapter::EError;
+        }
+
+    else if( aURI.Match( _L8("AP/*/NAPDef/*/WLAN/*/WEPKey/*/Data") ) != KErrNotFound && NumOfUriSegs( aURI ) == 9 )
+        {
+    	// Individual WEP keys cannot be deleted and this case should never happen.
+    	// These are deleted through WLAN parent nodes.	
+       	status = CSmlDmAdapter::EError;        
+        }
+
+    else if( aURI.Match( _L8("AP/*/NAPDef/*/WLAN/*/EAP/*") ) != KErrNotFound && NumOfUriSegs( aURI ) == 8 )
+        {
+    	// Individual EAP settings cannot be deleted and this case should never happen.
+    	// These are deleted through WLAN parent nodes.	
+       	status = CSmlDmAdapter::EError;        
+        }
+    else if( aURI.Match( _L8("AP/*/NAPDef/*/WLAN/*/EAP/*/*") ) != KErrNotFound && NumOfUriSegs( aURI ) == 9 )
+        {
+        // Individual EAP settings cannot be deleted and this case should never happen.
+        // These are deleted through WLAN parent nodes.
+        status = CSmlDmAdapter::EError;
+        }
+    else if (aURI.Match( _L8("AP/*/NAPDef/*/WLAN/*/EAP/*/Certificate/*") ) != KErrNotFound && NumOfUriSegs( aURI ) == 10)
+        {
+        // Individual certificates are not allowed to be deleted and this case should never happen
+        // These are deleted through WLAN parent nodes.
+        status = CSmlDmAdapter::EError;
+               
+        }
+    else if (aURI.Match( _L8("AP/*/NAPDef/*/WLAN/*/EAP/*/Certificate/*/*") ) != KErrNotFound && NumOfUriSegs( aURI ) == 11)
+        {
+        // Individual certificate fields are not allowed to be deleted and this case should never happen.
+        // These are deleted through WLAN parent nodes.
+        status = CSmlDmAdapter::EError;
+		}
+
+    iCallBack->SetStatusL( aStatusRef, status );
+
+    _DBG_FILE("CNSmlWLanAdapter::DeleteObjectL(): end");
+    }
+
+//-----------------------------------------------------------------------------
+// CNSmlWLanAdapter* CNSmlWLanAdapter::FetchLeafObjectL( const TDesC8& aURI, 
+//                     const TDesC8& aLUID, const TDesC8& aType, 
+//                     const TInt aResultsRef, const TInt aStatusRef )
+// not used.
+//-----------------------------------------------------------------------------
+
+void CNSmlWLanAdapter::FetchLeafObjectSizeL( const TDesC8& /*aURI*/, 
+                                                 const TDesC8& /*aLUID*/,
+                                                 const TDesC8& /*aType*/, 
+                                                 TInt /*aResultsRef*/,
+                                                 TInt /*aStatusRef*/ )
+    {
+    _DBG_FILE("CNSmlWLanAdapter::FetchLeafObjectSizeL(): begin");
+    _DBG_FILE("CNSmlWLanAdapter::FetchLeafObjectSizeL(): end");
+    return;
+}                                                
+
+
+//-----------------------------------------------------------------------------
+// CNSmlWLanAdapter* CNSmlWLanAdapter::FetchLeafObjectL( const TDesC8& aURI, 
+//                     const TDesC8& aLUID, const TDesC8& aType, 
+//                     const TInt aResultsRef, const TInt aStatusRef )
+//-----------------------------------------------------------------------------
+void CNSmlWLanAdapter::FetchLeafObjectL( const TDesC8& /*aURI*/, 
+                                        const TDesC8& /*aLUID*/, 
+                                        const TDesC8& /*aType*/, 
+                                        const TInt /*aResultsRef*/, 
+                                        const TInt /*aStatusRef*/ )
+    {
+    _DBG_FILE("CNSmlWLanAdapter::FetchLeafObjectL(): begin");
+    _DBG_FILE("CNSmlWLanAdapter::FetchLeafObjectL(): end");
+
+    }
+    
+//-----------------------------------------------------------------------------
+// CNSmlWLanAdapter* CNSmlWLanAdapter::FetchLeafObjectL( const TDesC& aURI, 
+//                     const TDesC& aLUID, const TDesC& aType, 
+//                     const TInt aResultsRef, const TInt aStatusRef )
+//-----------------------------------------------------------------------------
+CSmlDmAdapter::TError CNSmlWLanAdapter::FetchLeafObjectL( const TDesC8& aURI, 
+                                        const TDesC8& aLUID, 
+                                        const TDesC8& aType, 
+                                        CBufBase& aObject )
+    {
+    
+    _DBG_FILE("CNSmlWLanAdapter::FetchLeafObjectL(): begin");
+    DBG_ARGS8(_S8("WLanAdapter::FetchLeafObjectL - <%S> <%S> <%S>"), &aURI, &aLUID, &aType);
+
+    if(aLUID.Length()==0)
+        {
+
+        _DBG_FILE("CNSmlWLanAdapter::FetchLeafObjectL(): ENotFound");
+        return CSmlDmAdapter::ENotFound;
+        }
+
+    CSmlDmAdapter::TError status = CSmlDmAdapter::ENotFound;
+
+	// This luid is the service table id (Found from EAP node and parents)
+	TInt luid;
+	if ( aURI.Match( _L8("AP/*/NAPDef/*/WLAN/*/EAP/*")) != KErrNotFound )
+		{
+		luid = GetServiceIdFromUriL( aURI );
+		}
+	else
+		{
+		// The luid supplied is ok
+		luid = GetIdFromLuid( aLUID );
+		}
+    
+    TPtrC8 lastUriSeg = GetLastUriSeg( aURI );
+
+    TInt err = iWlanSettings->GetWlanSettings( luid, *iSettings );
+
+    if( err == KErrNotFound )
+    {
+
+        _DBG_FILE("CNSmlWLanAdapter::FetchLeafObjectL(): ENotFound");       
+        return CSmlDmAdapter::ENotFound;
+    }
+
+    if( lastUriSeg.Compare( KNSmlWLanSsid ) == 0 )
+        {
+
+        if (aURI.Match( _L8("AP/*/NAPDef/*/WLAN/*/SecondarySSID/*")) != KErrNotFound)
+            {
+            RArray<TSecondarySSID> secondarySSIDs;
+            CleanupClosePushL( secondarySSIDs );
+            iWlanSettings->GetSecondarySSIDListL(luid, secondarySSIDs);
+            TSecondarySSID ssid;
+            ssid.Id = 0;
+            TUint32 id = GetSecSSIDFromUriL(aURI);
+            TInt count = secondarySSIDs.Count();
+            for (TInt i=0;i<count;i++)
+                {
+                if (id == secondarySSIDs[i].Id)
+                    {
+                    ssid = secondarySSIDs[i];
+                    break;
+                    }
+                }            
+            CleanupStack::PopAndDestroy(&secondarySSIDs);
+            if (ssid.Id == 0)
+                {
+                status = CSmlDmAdapter::ENotFound;
+                }
+            else
+                {
+                HBufC* data = ssid.ScannedId.AllocLC();
+                HBufC8* data8 = HBufC8::NewLC(data->Size());
+                TPtr8 dataPtr8 = data8->Des();
+                //FFS
+                CnvUtfConverter::ConvertFromUnicodeToUtf8( dataPtr8, data->Des() );
+
+                aObject.InsertL( 0, dataPtr8 );
+                status = CSmlDmAdapter::EOk;
+
+                CleanupStack::PopAndDestroy( 2 ); //data, data8
+                }
+            }
+        else
+            {
+
+        HBufC* data = iSettings->SSID.AllocLC();
+        HBufC8* data8 = HBufC8::NewLC(data->Size());
+        TPtr8 dataPtr8 = data8->Des();
+        //FFS
+        CnvUtfConverter::ConvertFromUnicodeToUtf8( dataPtr8, data->Des() );
+
+        aObject.InsertL( 0, dataPtr8 );
+        status = CSmlDmAdapter::EOk;
+
+        CleanupStack::PopAndDestroy( 2 ); //data, data8
+
+            }
+
+        }
+
+    else if( lastUriSeg.Compare( KNSmlWLanUsedSsid ) == 0 )
+        {
+
+        if (aURI.Match( _L8("AP/*/NAPDef/*/WLAN/*/SecondarySSID/*")) != KErrNotFound)
+            {
+            RArray<TSecondarySSID> secondarySSIDs;
+            CleanupClosePushL( secondarySSIDs );
+            iWlanSettings->GetSecondarySSIDListL(luid, secondarySSIDs);
+            TSecondarySSID ssid;
+            ssid.Id = 0;
+            TUint32 id = GetSecSSIDFromUriL(aURI);
+            TInt count = secondarySSIDs.Count();
+            for (TInt i=0;i<count;i++)
+                {
+                if (id == secondarySSIDs[i].Id)
+                    {
+                    ssid = secondarySSIDs[i];
+                    break;
+                    }
+                }
+            CleanupStack::PopAndDestroy(&secondarySSIDs);            
+            if (ssid.Id == 0)
+                {
+                status = CSmlDmAdapter::ENotFound;
+                }
+            else
+                {
+                HBufC* data = ssid.UsedId.AllocLC();
+                HBufC8* data8 = HBufC8::NewLC(data->Size());
+                TPtr8 dataPtr8 = data8->Des();
+                //FFS
+                CnvUtfConverter::ConvertFromUnicodeToUtf8( dataPtr8, data->Des() );
+
+                aObject.InsertL( 0, dataPtr8 );
+                status = CSmlDmAdapter::EOk;
+
+                CleanupStack::PopAndDestroy( 2 ); //data, data8
+                }
+            }
+        else
+            {
+            
+        HBufC* data = iSettings->UsedSSID.AllocLC();
+        HBufC8* data8 = HBufC8::NewLC(data->Size());
+        TPtr8 dataPtr8 = data8->Des();
+        //FFS
+        CnvUtfConverter::ConvertFromUnicodeToUtf8( dataPtr8, data->Des() );
+
+        aObject.InsertL( 0, dataPtr8 );
+        status = CSmlDmAdapter::EOk;
+
+        CleanupStack::PopAndDestroy( 2 ); //data, data8
+        
+            }
+
+        }
+        
+    else if( lastUriSeg.Compare( KNSmlWLanSsidHidden ) == 0 )
+        {
+        if ( iSettings->ScanSSID == 1 )
+            {
+            aObject.InsertL( 0, _L8("True" ) );
+            }
+        else
+            {
+            aObject.InsertL( 0, _L8("False" ) );
+            }
+        status = CSmlDmAdapter::EOk;
+        }
+
+
+    else if( lastUriSeg.Compare( KNSmlWLanNetworkMode ) == 0 )
+        {
+        status = CSmlDmAdapter::EOk;
+
+        switch( iSettings->ConnectionMode )
+            {
+        case 0:
+            aObject.InsertL( 0, KNSmlWLanAdHoc8 );
+            break;
+        case 1:
+            aObject.InsertL( 0, KNSmlWLanInfrastructure8 );
+            break;
+        default:
+            status = CSmlDmAdapter::ENotFound;
+            break;
+            }
+        }
+    else if( lastUriSeg.Compare( KNSmlWLanSecurityMode ) == 0 )
+        {
+        status = CSmlDmAdapter::EOk;
+
+        switch( iSettings->SecurityMode )
+            {
+        case EAllowUnsecure:
+            aObject.InsertL( 0, KNSmlWLanAllowUnsecure8 );
+            break;
+        case EWep:
+            aObject.InsertL( 0, KNSmlWLanWep8 );
+            break;
+        case EWlan8021x:
+            aObject.InsertL( 0, KNSmlWLan8021x8 );
+            break;
+        case EWpa:
+            aObject.InsertL( 0, KNSmlWLanWpa8 );
+            break;
+        case EWpa2:
+            aObject.InsertL( 0, KNSmlWLanWpa28 );
+            break;
+        default:
+            status = CSmlDmAdapter::ENotFound;
+            break;
+            }
+        }
+        
+    else if( lastUriSeg.Compare( KNSmlWLanWpaPreSharedKey ) == 0 )
+        {
+		aObject.InsertL( 0, iSettings->WPAPreSharedKey );
+        status = CSmlDmAdapter::EOk;
+        }
+
+    else if( lastUriSeg.Compare( KNSmlWLanUseWPAPSK ) == 0 )
+        {
+        if ( iSettings->UseWPAPSK == 1 )
+            {
+            aObject.InsertL( 0, _L8("True" ) );
+            }
+        else
+            {
+            aObject.InsertL( 0, _L8("False" ) );
+            }       
+        status = CSmlDmAdapter::EOk;
+        }
+
+    else if( lastUriSeg.Compare( KNSmlWLanWepIndex ) == 0 )
+        {
+        HBufC8* data = IntToDes8LC( iSettings->WepIndex );
+        aObject.InsertL( 0, data->Des() );
+        
+        CleanupStack::PopAndDestroy( data ); //data
+        status = CSmlDmAdapter::EOk;
+        }
+
+    else if( lastUriSeg.Compare( KNSmlWLanEapList ) == 0 )
+        {     
+        HBufC* data = iSettings->EapList.AllocLC();
+        HBufC8* data8 = HBufC8::NewLC(data->Size());
+        TPtr8 dataPtr8 = data8->Des();
+        //FFS
+        CnvUtfConverter::ConvertFromUnicodeToUtf8( dataPtr8, data->Des() );
+
+        aObject.InsertL( 0, dataPtr8 );
+        status = CSmlDmAdapter::EOk;
+
+        CleanupStack::PopAndDestroy( 2 ); //data, data8
+      
+        }
+
+    else if( lastUriSeg.Compare( KNSmlWLanAuthMode ) == 0 )
+        {
+        HBufC8* data = IntToDes8LC( iSettings->AuthMode );
+        aObject.InsertL( 0, data->Des() );
+        
+        CleanupStack::PopAndDestroy( data ); //data
+        status = CSmlDmAdapter::EOk;
+        }
+
+    else if( lastUriSeg.Compare( KNSmlWLanWepKeyData ) == 0 )
+        {
+        TInt wepKeyIndex = GetWepKeyIdFromLuid( aLUID );
+        if(wepKeyIndex == KErrNotFound)
+        {
+        	wepKeyIndex = GetWepKeyIdFromUri( aURI );
+        	TBuf8<80> addLUID; // AP/<x>/NapDef/<x>/WLAN/<x>/WEPKey/WKIdnnn
+            addLUID.AppendNum( wepKeyIndex );
+            addLUID.AppendNumFixedWidth( luid, EDecimal, 3 );
+            DBG_ARGS8(_S8("WLanAdapter::Fetchleaf object, set mapping uri: <%S> to luid: <%S>"), &aURI, &addLUID );
+            DBG_ARGS8(_S8("Parametrit - <%S> <%S>"), &aURI, &addLUID );
+           iCallBack->SetMappingL(aURI, addLUID);
+                
+        }
+        status = CSmlDmAdapter::EOk;
+        switch( wepKeyIndex )
+            {
+        case 1:
+            aObject.InsertL( 0, iSettings->WepKey1 );
+            break;
+        case 2:
+            aObject.InsertL( 0, iSettings->WepKey2 );
+            break;
+        case 3:
+            aObject.InsertL( 0, iSettings->WepKey3 );
+            break;
+        case 4:
+            aObject.InsertL( 0, iSettings->WepKey4 );
+            break;
+        default:
+            status = CSmlDmAdapter::EError;
+            }
+        }
+    else if( lastUriSeg.Compare( KNSmlWLanWepKeyId ) == 0 )
+        {
+        TInt wepKeyIndex = GetWepKeyIdFromLuid( aLUID );
+        if(wepKeyIndex == KErrNotFound)
+        {
+        	wepKeyIndex = GetWepKeyIdFromUri( aURI );
+        	TBuf8<80> addLUID; // AP/<x>/NapDef/<x>/WLAN/<x>/WEPKey/WKIdnnn
+            addLUID.AppendNum( wepKeyIndex );
+            addLUID.AppendNumFixedWidth( luid, EDecimal, 3 );
+            DBG_ARGS8(_S8("WLanAdapter::Fetchleaf object, set mapping uri: <%S> to luid: <%S>"), &aURI, &addLUID );
+            DBG_ARGS8(_S8("Parametrit - <%S> <%S>"), &aURI, &addLUID );
+           iCallBack->SetMappingL(aURI, addLUID);
+        }
+        if( wepKeyIndex > 0 )
+            {
+            HBufC8* data = IntToDes8LC( wepKeyIndex );
+            aObject.InsertL( 0, data->Des() );
+            CleanupStack::PopAndDestroy( data ); //data
+            status = CSmlDmAdapter::EOk;
+            }
+        else
+            {
+            status = CSmlDmAdapter::EError;
+            }
+        }
+
+    else if (aURI.Match( _L8("AP/*/NAPDef/*/WLAN/*/EAP/*")) != KErrNotFound)
+        {
+        TInt eapId = GetEAPIdFromUri(aURI);
+
+        // Check if the id contains encapsulating type as well
+        TInt encapsEapId = GetEncapsEAPIdFromUri( aURI );
+        if ( encapsEapId == KErrNotFound )
+        	{
+        	encapsEapId = EAPSettings::EEapNone;
+        	}
+        
+        ResetEAPStructL();
+                              
+        TInt err = iWlanSettings->GetEAPSettings( luid, eapId, encapsEapId, *iEAPSettings );
+        if (err != KErrNone || iEAPSettings == NULL)
+            {
+            status = CSmlDmAdapter::EError; 
+            }
+        else if (lastUriSeg.Compare( KNSmlWLanEapType ) == 0 )
+            {
+            aObject.InsertL(0, *IntToDes8LC((TInt)iEAPSettings->iEAPType));
+            CleanupStack::PopAndDestroy(); // IntToDes8LC
+            status = CSmlDmAdapter::EOk;
+            }
+        else if (lastUriSeg.Compare( KNSmlWLanUsername ) == 0 )
+            {
+            if (iEAPSettings->iUsernamePresent)
+                {
+                DesToBufferL(aObject, iEAPSettings->iUsername);
+                }
+            status = CSmlDmAdapter::EOk;
+            }
+        else if (lastUriSeg.Compare( KNSmlWLanPassword ) == 0 )
+            {
+            if (iEAPSettings->iPasswordPresent)
+                {
+                DesToBufferL(aObject, iEAPSettings->iPassword);
+                }
+            status = CSmlDmAdapter::EOk;
+            }
+        else if (lastUriSeg.Compare( KNSmlWLanRealm ) == 0 )
+            {
+            if (iEAPSettings->iRealmPresent)
+                {
+                DesToBufferL(aObject, iEAPSettings->iRealm);
+                }
+            status = CSmlDmAdapter::EOk;
+            }
+        else if (lastUriSeg.Compare( KNSmlWLanUsePseudonym ) == 0 )
+            {
+            if (iEAPSettings->iUsePseudonymsPresent && iEAPSettings->iUsePseudonyms)
+                {
+                aObject.InsertL(0, KTrue);
+                }
+            else
+                {
+                aObject.InsertL(0, KFalse);
+                }
+            status = CSmlDmAdapter::EOk;
+            }
+        else if (lastUriSeg.Compare( KNSmlWLanEncapsulation ) == 0 )
+            {
+            if ( encapsEapId == EAPSettings::EEapPeap )
+            	{
+            	aObject.InsertL( 0, KEAPPEAP);            	
+            	}
+            else if ( encapsEapId == EAPSettings::EEapTtls )
+            	{
+            	aObject.InsertL( 0, KEAPTTLS);
+            	}
+            status = CSmlDmAdapter::EOk;
+            }
+        else if (lastUriSeg.Compare( KNSmlWLanVerifyCertRealm ) == 0 )
+            {
+            if (iEAPSettings->iVerifyServerRealmPresent && iEAPSettings->iVerifyServerRealm)
+                {
+                aObject.InsertL(0, KTrue);
+                }
+            else
+                {
+                aObject.InsertL(0, KFalse);
+                }
+            status = CSmlDmAdapter::EOk;
+            }
+        else if (lastUriSeg.Compare( KNSmlWLanRequireClientAuthentication ) == 0 )
+            {
+            if (iEAPSettings->iRequireClientAuthenticationPresent && iEAPSettings->iRequireClientAuthentication)
+                {
+                aObject.InsertL(0, KTrue);
+                }
+            else
+                {
+                aObject.InsertL(0, KFalse);
+                }
+            status = CSmlDmAdapter::EOk;
+            }
+        else if (lastUriSeg.Compare( KNSmlWLanSessionValidityTime ) == 0 )
+            {
+            if (iEAPSettings->iSessionValidityTimePresent)
+                {
+                aObject.InsertL(0, *IntToDes8LC((TInt)iEAPSettings->iSessionValidityTime));
+                CleanupStack::PopAndDestroy(); // IntToDes8LC
+                }
+            status = CSmlDmAdapter::EOk;
+            }
+        else if (lastUriSeg.Compare( KNSmlWLanCipherSuite ) == 0 )
+            {
+            FillCipherSuiteBufferL(aObject);
+            status = CSmlDmAdapter::EOk; 
+            }
+        else if (lastUriSeg.Compare( KNSmlWLanAllowPEAPv0 ) == 0 )
+            {
+            if (iEAPSettings->iPEAPVersionsPresent && iEAPSettings->iPEAPv0Allowed)
+                {
+                aObject.InsertL(0, KTrue);
+                }
+            else
+                {
+                aObject.InsertL(0, KFalse);
+                }
+            status = CSmlDmAdapter::EOk;
+            }
+        else if (lastUriSeg.Compare( KNSmlWLanAllowPEAPv1 ) == 0 )
+            {
+            if (iEAPSettings->iPEAPVersionsPresent && iEAPSettings->iPEAPv1Allowed)
+                {
+                aObject.InsertL(0, KTrue);
+                }
+            else
+                {
+                aObject.InsertL(0, KFalse);
+                }
+            status = CSmlDmAdapter::EOk;
+            }
+        else if (lastUriSeg.Compare( KNSmlWLanAllowPEAPv2 ) == 0 )
+            {
+            if (iEAPSettings->iPEAPVersionsPresent && iEAPSettings->iPEAPv2Allowed)
+                {
+                aObject.InsertL(0, KTrue);
+                }
+            else
+                {
+                aObject.InsertL(0, KFalse);
+                }
+            status = CSmlDmAdapter::EOk;
+            }
+            
+            
+            
+#ifdef FF_WLAN_EXTENSIONS 
+		else if (lastUriSeg.Compare(KNSmlWLanAuthProvMode) == 0)
+            {
+            if (iEAPSettings->iAuthProvModeAllowedPresent && iEAPSettings->iAuthProvModeAllowed)
+                {
+                aObject.InsertL(0, KTrue);
+                }
+            else
+                {
+                aObject.InsertL(0, KFalse);
+                }
+            status = CSmlDmAdapter::EOk;
+            }
+            
+                        
+      	else if (lastUriSeg.Compare(KNSmlWLanUnauthProvMode) == 0)
+                        {
+            if (iEAPSettings->iUnauthProvModeAllowedPresent && iEAPSettings->iUnauthProvModeAllowed)
+                {
+                aObject.InsertL(0, KTrue);
+                }
+            else
+                {
+                aObject.InsertL(0, KFalse);
+                }
+            status = CSmlDmAdapter::EOk;
+            }
+                                    
+     	else if (lastUriSeg.Compare(KNSmlWLanPACGroupRef) == 0)
+            {
+            if (iEAPSettings->iPACGroupReferencePresent)
+                {
+                DesToBufferL(aObject, iEAPSettings->iPACGroupReference);
+                }
+            status = CSmlDmAdapter::EOk;
+            }
+                        
+    	else if (lastUriSeg.Compare(KNSmlWLanWarnADHPNoPAC) == 0)
+            {
+            if (iEAPSettings->iWarnADHPNoPACPresent && iEAPSettings->iWarnADHPNoPAC)
+                {
+                aObject.InsertL(0, KTrue);
+                }
+            else
+                {
+                aObject.InsertL(0, KFalse);
+                }
+            status = CSmlDmAdapter::EOk;
+            }
+            
+            
+    	else if (lastUriSeg.Compare(KNSmlWLanWarnADHPNoMatchPAC) == 0)
+            {
+            if (iEAPSettings->iWarnADHPNoMatchingPACPresent && iEAPSettings->iWarnADHPNoMatchingPAC)
+                {
+                aObject.InsertL(0, KTrue);
+                }
+            else
+                {
+                aObject.InsertL(0, KFalse);
+                }
+            status = CSmlDmAdapter::EOk;
+            }
+            
+            
+            
+  		else if (lastUriSeg.Compare(KNSmlWLanWarnNotDefaultSrv) == 0)
+            {
+            if (iEAPSettings->iWarnNotDefaultServerPresent && iEAPSettings->iWarnNotDefaultServer)
+                {
+                aObject.InsertL(0, KTrue);
+                }
+            else
+                {
+                aObject.InsertL(0, KFalse);
+                }
+            status = CSmlDmAdapter::EOk;
+            }
+            
+#endif  
+                                
+            
+        else if (lastUriSeg.Compare( KNSmlWLanIssuerName ) == 0 )
+            {
+            status = CSmlDmAdapter::ENotFound;            
+            
+            TInt certId = GetCertificateIdFromUri(aURI);
+            
+            if ( iEAPSettings->iCertificatesPresent
+            	&& iEAPSettings->iCertificates.Count() >= certId
+            	&& certId != KErrNotFound )
+                {
+                if (iEAPSettings->iCertificates[certId-1].iIssuerNamePresent)
+                	{
+                	aObject.InsertL(0, ConvertTo8LC(iEAPSettings->iCertificates[certId-1].iIssuerName));
+                   	CleanupStack::PopAndDestroy(); // ConvertTo8LC
+                   	status = CSmlDmAdapter::EOk;
+                	}
+            	}
+            }
+        else if (lastUriSeg.Compare( KNSmlWLanSubjectName ) == 0 )
+            {
+            status = CSmlDmAdapter::ENotFound;            
+            
+            TInt certId = GetCertificateIdFromUri(aURI);
+            
+            if ( iEAPSettings->iCertificatesPresent
+            	&& iEAPSettings->iCertificates.Count() >= certId
+            	&& certId != KErrNotFound )
+                {
+                if (iEAPSettings->iCertificates[certId-1].iSubjectNamePresent)
+                	{
+                    aObject.InsertL(0, ConvertTo8LC(iEAPSettings->iCertificates[certId-1].iSubjectName));
+                    CleanupStack::PopAndDestroy(); // ConvertTo8LC
+					status = CSmlDmAdapter::EOk;                  
+                	}                   
+                }
+            }
+        else if (lastUriSeg.Compare( KNSmlWLanCertType ) == 0 )
+            {
+            status = CSmlDmAdapter::ENotFound;            
+            
+            TInt certId = GetCertificateIdFromUri(aURI);
+            
+            if ( iEAPSettings->iCertificatesPresent
+            	&& iEAPSettings->iCertificates.Count() >= certId
+            	&& certId != KErrNotFound )
+                {
+                aObject.InsertL(0, *IntToDes8LC(iEAPSettings->iCertificates[certId-1].iCertType));
+                CleanupStack::PopAndDestroy(); // IntToDes8LC
+                status = CSmlDmAdapter::EOk;
+                }                            
+            }
+        else if (lastUriSeg.Compare( KNSmlWLanSerialNumber ) == 0 )
+            {
+            status = CSmlDmAdapter::ENotFound;            
+            
+            TInt certId = GetCertificateIdFromUri(aURI);
+            
+            if ( iEAPSettings->iCertificatesPresent
+            	&& iEAPSettings->iCertificates.Count() >= certId
+            	&& certId != KErrNotFound )
+                {
+                if (iEAPSettings->iCertificates[certId-1].iSerialNumberPresent)
+    	            {
+                    aObject.InsertL(0, ConvertTo8LC(iEAPSettings->iCertificates[certId-1].iSerialNumber));
+                    CleanupStack::PopAndDestroy(); // ConvertTo8LC
+	                status = CSmlDmAdapter::EOk;
+                    }
+                }
+            }
+        else if (lastUriSeg.Compare( KNSmlWLanSubjectKeyId ) == 0 )
+            {
+            status = CSmlDmAdapter::ENotFound;            
+            
+            TInt certId = GetCertificateIdFromUri(aURI);
+            
+            if ( iEAPSettings->iCertificatesPresent
+            	&& iEAPSettings->iCertificates.Count() >= certId
+            	&& certId != KErrNotFound )
+            	{         	
+                if (iEAPSettings->iCertificates[certId-1].iSubjectKeyIDPresent)
+                    {
+                    _DBG_FILE("CNSmlWLanAdapter::FetchLeafObject - Fetch subject key.");
+                    // check the lenght of the given subjectKeyId, if it is longer that 20, then we
+                    // update the status with error and will not go through the key
+                    if ((iEAPSettings->iCertificates[certId-1].iSubjectKeyID.Length()) > KKeyIdentifierLength)
+                    	{
+                    	status = CSmlDmAdapter::EError;        
+                    	}
+                    else 
+                    	{
+                    	_DBG_FILE("CNSmlWLanAdapter::FetchLeafObject - key is under max lenght");
+                    	TBuf8<KKeyIdentifierLength> binKey = iEAPSettings->iCertificates[certId-1].iSubjectKeyID;
+                    	TBuf8<2> idBuf;
+                    	TBuf8<KKeyIdentifierLength*2> key;
+                    	TUint8 byte;
+                    
+                    	// hexadecimal representation
+                    	_LIT8(KFormat, "%02x");
+                                             	
+                    	// looping the subject key through
+                    	for (TInt i = 0; i < binKey.Length(); i++)
+                    		{
+                    		_DBG_FILE("CNSmlWLanAdapter::FetchLeafObject - Loop the key through.");
+                    		// pick the next value from the buffer
+                    		byte = binKey[i];
+                    		// convert the value into hexadecimal format
+                    		idBuf.Format(KFormat, byte);		
+                    		// store the hexa value into the key variable
+                    		key.Append(idBuf);
+                    		}
+                    	// Copy the key to the aObject variable
+                    	aObject.InsertL(0, key);
+                    	status = CSmlDmAdapter::EOk;
+                    	}
+                    }
+            	}            
+            }
+        else if (lastUriSeg.Compare( KNSmlWLanFingerprint ) == 0 )
+            {
+            status = CSmlDmAdapter::ENotFound;            
+            
+            TInt certId = GetCertificateIdFromUri(aURI);
+
+            if ( iEAPSettings->iCertificatesPresent
+            	&& iEAPSettings->iCertificates.Count() >= certId
+            	&& certId != KErrNotFound )
+                {   
+                if (iEAPSettings->iCertificates[certId-1].iThumbprintPresent)
+                	{
+                    aObject.InsertL(0, ConvertTo8LC(iEAPSettings->iCertificates[certId-1].iThumbprint));
+                    CleanupStack::PopAndDestroy(); // ConvertTo8LC
+                    status = CSmlDmAdapter::EOk;
+                	}                 
+                }
+            }
+        else if (lastUriSeg.Compare( KNSmlWLanSerialNumber ) == 0 )
+            {
+            status = CSmlDmAdapter::ENotFound;            
+            
+            TInt certId = GetCertificateIdFromUri(aURI);
+            
+            if ( iEAPSettings->iCertificatesPresent
+            	&& iEAPSettings->iCertificates.Count() >= certId
+            	&& certId != KErrNotFound )
+                {   
+                if (iEAPSettings->iCertificates[certId-1].iSerialNumberPresent)
+                	{
+                    aObject.InsertL(0, ConvertTo8LC(iEAPSettings->iCertificates[certId-1].iSerialNumber));
+                    CleanupStack::PopAndDestroy(); // ConvertTo8LC
+                    status = CSmlDmAdapter::EOk;
+                	}
+               	}
+            }
+        }
+
+        
+    DBG_ARGS(_S16("CNSmlWLanAdapter::FetchLeafObjectL - Status <%D>"), status );
+    _DBG_FILE("CNSmlWLanAdapter::FetchLeafObjectL(): end");
+    return status;
+    }
+
+//-----------------------------------------------------------------------------
+// CNSmlWLanAdapter* CNSmlWLanAdapter::ChildURIListL( const TDesC& aURI, 
+// const TDesC& aLUID, const CArrayFix<TNSmlDmMappingInfo>& aPreviousURISegmentList, 
+// const TInt aResultsRef, const TInt aStatusRef )
+//-----------------------------------------------------------------------------
+void CNSmlWLanAdapter::ChildURIListL( const TDesC8& aURI, 
+                                      const TDesC8& aLUID, 
+                                      const CArrayFix<TSmlDmMappingInfo>& aPreviousURISegmentList, 
+                                      const TInt aResultsRef, 
+                                      const TInt aStatusRef )
+    {
+    _DBG_FILE("CNSmlWLanAdapter::ChildURIListL(): begin");
+    DBG_ARGS8(_S8("WLanAdapter::ChildURIListL - <%S> <%S>"), &aURI, &aLUID );
+    CBufBase* currentUriSegmentList = CBufFlat::NewL( 128 );
+    CleanupStack::PushL( currentUriSegmentList );
+
+    TInt uriSegs = NumOfUriSegs( aURI );
+    TInt luid = GetIdFromLuid( aLUID );
+
+    //AP/<x>/NAPDef/<x>/
+    if( aURI.Match( _L8("AP/*/NAPDef/*") ) != KErrNotFound && uriSegs==4 )
+        {
+        DBG_ARGS8(_S8("WLanAdapter::ChildURIListL->NAPDef - <%S> <%S>"), &aURI, &aLUID );
+        if( iWlanSettings->RecordExists( luid ) < 0 )
+            {
+            currentUriSegmentList->InsertL( 0, KNSmlNAPDefWlanNode );
+            iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EOk );
+            iCallBack->SetResultsL( aResultsRef, *currentUriSegmentList, KNullDesC8 );
+		    _DBG_FILE("CNSmlWLanAdapter::ChildURIListL(): status ok");
+            }
+        else
+            {
+            currentUriSegmentList->InsertL( 0, KNSmlNAPDefWlanNode );
+            currentUriSegmentList->InsertL( currentUriSegmentList->Size(), KNSmlWLan );
+            iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EOk );
+            iCallBack->SetResultsL( aResultsRef, *currentUriSegmentList, KNullDesC8 );
+		    _DBG_FILE("CNSmlWLanAdapter::ChildURIListL(): status ok");
+            }
+        }
+
+    //AP/<x>/NAPDef/<x>/WLAN
+    else if (aURI.Match(_L8("AP/*/NAPDef/*/WLAN")) != KErrNotFound && uriSegs == 5 ) 
+        {
+        if( aPreviousURISegmentList.Count() > 0 )
+            {
+            HBufC8 *uriSeg = HBufC8::NewLC(KNSmlMaxURISegLen);
+            TPtr8 uriSegPtr = uriSeg->Des();
+            uriSegPtr = aPreviousURISegmentList.At(0).iURISeg;
+            currentUriSegmentList->InsertL( currentUriSegmentList->Size(), uriSegPtr );
+            CleanupStack::PopAndDestroy( uriSeg ); //uriSeg
+            iCallBack->SetStatusL(aStatusRef,CSmlDmAdapter::EOk);
+        	iCallBack->SetResultsL(aResultsRef,*currentUriSegmentList,KNullDesC8);
+		    _DBG_FILE("CNSmlWLanAdapter::ChildURIListL(): status ok");
+            }
+        else
+            {
+            if( iWlanSettings->RecordExists( luid ) < 0)
+                {
+                iCallBack->SetStatusL(aStatusRef,CSmlDmAdapter::ENotFound);
+                _DBG_FILE("CNSmlWLanAdapter::ChildURIListL(): status: Not found");
+                }
+            else
+                {
+                _LIT8(Kprev,"WLId");
+                TBuf8<9> addNAME(Kprev); // WLId
+                addNAME.AppendNumFixedWidth(luid,EDecimal,3);
+
+                currentUriSegmentList->InsertL(currentUriSegmentList->Size(),addNAME);
+                currentUriSegmentList->InsertL(currentUriSegmentList->Size(),_L8("/"));
+
+                TBuf8<80> addURI; // AP/<x>/NapDef/<x>/WLAN/WLIdnnn , n=aLUID
+                addURI.Append(aURI);
+                addURI.Append(_L8("/WLId"));
+                addURI.AppendNumFixedWidth(luid,EDecimal,3);
+
+                TBuf8<16> addLUID;
+                _LIT8(KFormat,"%d");
+                addLUID.Format(KFormat,luid);
+        
+                // Also added to mapping
+                DBG_ARGS8(_S8("WLanAdapter::ChildURIListL - mapping uri: <%S> to luid: <%S>"), &addURI, &addLUID );
+                DBG_ARGS8(_S8("Parameters - <%S> <%S>"), &aURI, &aLUID );
+                iCallBack->SetMappingL(addURI,addLUID);
+                iCallBack->SetStatusL(aStatusRef,CSmlDmAdapter::EOk);
+        		iCallBack->SetResultsL(aResultsRef,*currentUriSegmentList,KNullDesC8);
+		    	_DBG_FILE("CNSmlWLanAdapter::ChildURIListL(): status ok");
+                }
+            }        
+        }
+
+    //AP/<x>/NAPDef/<x>/WLAN/<x>
+    else if( aURI.Match( _L8("AP/*/NAPDef/*/WLAN/*") ) != KErrNotFound && uriSegs==6 )
+        {
+        DBG_ARGS8(_S8("WLanAdapter::ChildURIListL->NAPDef - <%S> <%S>"), &aURI, &aLUID );
+        if( iWlanSettings->RecordExists( luid ) < 0 )
+            {
+            iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound );
+            _DBG_FILE("CNSmlWLanAdapter::ChildURIListL(): ENotFound end");
+            }
+        else
+            {
+            currentUriSegmentList->InsertL( currentUriSegmentList->Size(), KNSmlWLanListOfLeafs );
+            iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EOk );
+            iCallBack->SetResultsL( aResultsRef, *currentUriSegmentList, KNullDesC8 );
+            _DBG_FILE("CNSmlWLanAdapter::ChildURIListL(): status ok");
+            }
+        }
+
+    
+    //AP/<x>/NAPDef/<x>/WLAN/<x>/WEPKey
+    else if( aURI.Match( _L8("AP/*/NAPDef/*/WLAN/*/WEPKey") ) != KErrNotFound && uriSegs==7 )
+        {
+        DBG_ARGS8(_S8("WLanAdapter::ChildURIListL->WEPKey - <%S> <%S> <%D> <%D>"), &aURI, &aLUID, aResultsRef, aStatusRef );
+
+        for( TInt i=0; i<4; i++ )
+            {
+            if( aPreviousURISegmentList.Count()>i )
+                {
+                HBufC8 *uriSeg = HBufC8::NewLC( KNSmlMaxURISegLen) ;
+                TPtr8 uriSegPtr = uriSeg->Des();
+                uriSegPtr = aPreviousURISegmentList.At(i).iURISeg;
+                
+                currentUriSegmentList->InsertL( currentUriSegmentList->Size(),uriSegPtr );
+                currentUriSegmentList->InsertL( currentUriSegmentList->Size(),_L8( "/" ) );
+                CleanupStack::PopAndDestroy(); //uriSeg
+                }
+            else
+                {
+                TBuf8<25> addNAME;
+                addNAME.Append( _L8("WKId") );
+                addNAME.AppendNum( i+1 );
+                addNAME.Append( _L8("/") );
+
+                currentUriSegmentList->InsertL( currentUriSegmentList->Size(),addNAME );
+                }
+            }
+
+        iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EOk );
+        iCallBack->SetResultsL( aResultsRef, *currentUriSegmentList, KNullDesC8 );           
+        _DBG_FILE("CNSmlWLanAdapter::ChildURIListL(): status ok");
+        }
+
+    //AP/<x>/NAPDef/<x>/WEPKey/<x>
+    else if( aURI.Match( _L8("AP/*/NAPDef/*/WLAN/*/WEPKey/*") ) != KErrNotFound && uriSegs==8 )
+        {
+        DBG_ARGS8(_S8("WLanAdapter::ChildURIListL->WEPKey/* - <%S> <%D>"), &aURI, luid );
+        if( iWlanSettings->RecordExists( luid ) < 0 )
+            {
+            //wlan settings not found for aLUID
+            iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound );
+            _DBG_FILE("CNSmlWLanAdapter::ChildURIListL(): ENotFound end");
+            }
+        else
+            {
+            TInt wepKeyId = GetWepKeyIdFromLuid( aLUID );
+            if( wepKeyId == KErrNotFound )
+                {
+                wepKeyId = GetWepKeyIdFromUri( aURI );
+
+                TBuf8<80> addLUID; // AP/<x>/NapDef/<x>/WLAN/<x>/WEPKey/WKIdnnn
+                addLUID.AppendNum( wepKeyId );
+                addLUID.AppendNumFixedWidth( luid, EDecimal, 3 );
+
+                DBG_ARGS8(_S8("WLanAdapter::ChildURIListL - mapping uri: <%S> to luid: <%S>"), &aURI, &addLUID );
+                DBG_ARGS8(_S8("Parametrit - <%S> <%S>"), &aURI, &addLUID );
+                iCallBack->SetMappingL(aURI, addLUID);
+                }
+
+            currentUriSegmentList->InsertL( currentUriSegmentList->Size(), KNSmlWLanListOfWepKeyLeafs );
+            iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EOk );
+            iCallBack->SetResultsL( aResultsRef, *currentUriSegmentList, KNullDesC8 );
+            _DBG_FILE("CNSmlWLanAdapter::ChildURIListL(): status ok");
+            }
+        }
+
+    //AP/<x>/NAPDef/<x>/WLAN/<x>/SecondarySSID/
+    else if( aURI.Match( _L8("AP/*/NAPDef/*/WLAN/*/SecondarySSID") ) != KErrNotFound && uriSegs==7 )
+        {
+        DBG_ARGS8(_S8("WLanAdapter::ChildURIListL->EAP - <%S> <%S> <%D> <%D>"), &aURI, &aLUID, aResultsRef, aStatusRef );
+        if( aPreviousURISegmentList.Count() > 0 )
+            {
+            HBufC8 *uriSeg = HBufC8::NewLC(KNSmlMaxURISegLen);
+            TPtr8 uriSegPtr = uriSeg->Des();
+            uriSegPtr = aPreviousURISegmentList.At(0).iURISeg;
+            currentUriSegmentList->InsertL( currentUriSegmentList->Size(), uriSegPtr );
+            CleanupStack::PopAndDestroy( uriSeg ); //uriSeg
+            iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EOk );
+        	iCallBack->SetResultsL( aResultsRef, *currentUriSegmentList, KNullDesC8 );           
+        	_DBG_FILE("CNSmlWLanAdapter::ChildURIListL(): status ok");
+            }
+        else
+            {
+            if( iWlanSettings->RecordExists( luid ) < 0)
+                {
+                iCallBack->SetStatusL(aStatusRef,CSmlDmAdapter::ENotFound);
+                _DBG_FILE("CNSmlWLanAdapter::ChildURIListL(): status: Not found");
+                }
+            else
+                {
+                RArray<TSecondarySSID> secondarySSIDs;
+                CleanupClosePushL( secondarySSIDs );
+                iWlanSettings->GetSecondarySSIDListL(luid, secondarySSIDs);
+                TInt count = secondarySSIDs.Count();
+                _LIT8(KPrefixSSID,"SecSSID");
+                TBuf8<5> addNAME; // number
+                for (TInt i=0;i<count;i++)
+                    {
+                    if (i != 0) // Don't do it in first iteration, but with all the following
+                        {
+                        currentUriSegmentList->InsertL(currentUriSegmentList->Size(),_L8("/"));
+                        }
+                    currentUriSegmentList->InsertL(currentUriSegmentList->Size(),KPrefixSSID);
+                    addNAME.Zero();
+                    addNAME.AppendNumFixedWidth(secondarySSIDs[i].Id ,EDecimal,3);
+                    currentUriSegmentList->InsertL(currentUriSegmentList->Size(),addNAME);
+                    }
+                CleanupStack::PopAndDestroy(&secondarySSIDs);
+                iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EOk );
+        		iCallBack->SetResultsL( aResultsRef, *currentUriSegmentList, KNullDesC8 );           
+        		_DBG_FILE("CNSmlWLanAdapter::ChildURIListL(): status ok");
+                }
+            }       
+        }
+    //AP/<x>/NAPDef/<x>/WLAN/<x>/SecondarySSID/*
+    else if( aURI.Match( _L8("AP/*/NAPDef/*/WLAN/*/SecondarySSID/*") ) != KErrNotFound && uriSegs==8 )
+        {
+        DBG_ARGS8(_S8("WLanAdapter::ChildURIListL->SecondarySSID/* - <%S> <%D>"), &aURI, luid );
+        if( iWlanSettings->RecordExists( luid ) < 0 )
+            {
+            //wlan settings not found for aLUID
+            iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound );
+            _DBG_FILE("CNSmlWLanAdapter::ChildURIListL(): ENotFound end");
+            }
+        else
+            {
+            currentUriSegmentList->InsertL( currentUriSegmentList->Size(), KNSmlWLanListOfSecondaryLeafs );
+            iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EOk );
+            iCallBack->SetResultsL( aResultsRef, *currentUriSegmentList, KNullDesC8 );
+            _DBG_FILE("CNSmlWLanAdapter::ChildURIListL(): status ok");
+            }
+        }
+    //AP/<x>/NAPDef/<x>/WLAN/<x>/EAP
+    else if( aURI.Match( _L8("AP/*/NAPDef/*/WLAN/*/EAP") ) != KErrNotFound && uriSegs==7 )
+        {        
+        DBG_ARGS8(_S8("WLanAdapter::ChildURIListL->EAP - <%S> <%S> <%D> <%D>"), &aURI, &aLUID, aResultsRef, aStatusRef );
+        
+        // Need to get the service id from parent node
+		luid = GetServiceIdFromUriL ( aURI );
+		
+		if( iWlanSettings->RecordExists( luid ) < 0 )
+            {
+            //wlan settings not found for aLUID
+            iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound );
+            _DBG_FILE("CNSmlWLanAdapter::ChildURIListL(): ENotFound end");
+            }
+        else
+        	{
+	        iWlanSettings->InstalledEAPsL(*currentUriSegmentList);
+
+    	    iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EOk );
+	        iCallBack->SetResultsL( aResultsRef, *currentUriSegmentList, KNullDesC8 );           
+	        _DBG_FILE("CNSmlWLanAdapter::ChildURIListL(): status ok");        	
+        	}
+        }
+    //AP/<x>/NAPDef/<x>/WLAN/<x>/EAP/<x>
+    else if( aURI.Match( _L8("AP/*/NAPDef/*/WLAN/*/EAP/*") ) != KErrNotFound && uriSegs==8 )
+        {
+		// Need to get the service id from parent node
+		luid = GetServiceIdFromUriL ( aURI );
+		
+        DBG_ARGS8(_S8("WLanAdapter::ChildURIListL->EAP/* - <%S> <%D>"), &aURI, luid );
+        if( iWlanSettings->RecordExists( luid ) < 0 )
+            {
+            //wlan settings not found for aLUID
+            iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound );
+            _DBG_FILE("CNSmlWLanAdapter::ChildURIListL(): ENotFound end");
+            }
+        else
+            {
+            currentUriSegmentList->InsertL( currentUriSegmentList->Size(), KNSmlWLanListOfEAPLeafs );
+            iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EOk );
+            iCallBack->SetResultsL( aResultsRef, *currentUriSegmentList, KNullDesC8 );
+            _DBG_FILE("CNSmlWLanAdapter::ChildURIListL(): status ok");
+            }
+        }
+    //AP/<x>/NAPDef/<x>/WLAN/<x>/EAP/<x>/Certificate
+    else if( aURI.Match( _L8("AP/*/NAPDef/*/WLAN/*/EAP/*/Certificate") ) != KErrNotFound && uriSegs== 9 )
+        {
+		luid = GetServiceIdFromUriL ( aURI );
+		      
+        DBG_ARGS8(_S8("WLanAdapter::ChildURIListL->Certificate - <%S> <%D>"), &aURI, luid );
+        if( iWlanSettings->RecordExists( luid ) < 0 )
+            {
+            //wlan settings not found for aLUID
+            iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound );
+            _DBG_FILE("CNSmlWLanAdapter::ChildURIListL(): ENotFound end");
+            }
+        else
+            {
+            TInt eapId = GetEAPIdFromUri( aURI );
+            
+            // Check if the id contains encapsulating type as well
+            TInt encapsEapId = GetEncapsEAPIdFromUri( aURI );
+            if ( encapsEapId == KErrNotFound )
+            	{
+            	encapsEapId = EAPSettings::EEapNone;
+            	}
+            
+            ResetEAPStructL();
+            TInt err = iWlanSettings->GetEAPSettings(luid, eapId, encapsEapId, *iEAPSettings);
+            if (err != KErrNone || !iEAPSettings->iCertificatesPresent)
+                {
+                iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound );
+                _DBG_FILE("CNSmlWLanAdapter::ChildURIListL(): ENotFound end");
+                }
+            else
+                {
+                TInt certCount = iEAPSettings->iCertificates.Count();
+                HBufC8* pBuf = HBufC8::NewLC(KNSmlMaxURISegLen);
+                TPtr8 ptrCerts = pBuf->Des();
+                for (TInt i=0; i<certCount; i++)
+                    {
+                    ptrCerts.Append(_L8("CertId"));
+                    ptrCerts.AppendNumFixedWidth( i+1, EDecimal, 3);
+                    ptrCerts.Append( _L8("/") );
+                    }
+                
+                currentUriSegmentList->InsertL( currentUriSegmentList->Size(), ptrCerts );
+                CleanupStack::PopAndDestroy(pBuf); // pBuf
+                iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EOk );
+            	iCallBack->SetResultsL( aResultsRef, *currentUriSegmentList, KNullDesC8 );
+            	_DBG_FILE("CNSmlWLanAdapter::ChildURIListL(): status ok");
+                }
+            }
+        }
+    //AP/<x>/NAPDef/<x>/WLAN/<x>/EAP/<x>/Certificate/<x>
+    else if( aURI.Match( _L8("AP/*/NAPDef/*/WLAN/*/EAP/*/Certificate/*") ) != KErrNotFound && uriSegs==10 )
+        {
+        DBG_ARGS8(_S8("WLanAdapter::ChildURIListL->EAP/* - <%S> <%D>"), &aURI, luid );
+        TInt eapId = GetEAPIdFromUri(aURI);
+        // Check if the id contains encapsulating type as well
+        TInt encapsEapId = GetEncapsEAPIdFromUri( aURI );
+        if ( encapsEapId == KErrNotFound )
+        	{
+        	encapsEapId = EAPSettings::EEapNone;
+        	}
+
+        ResetEAPStructL();
+        TInt err = iWlanSettings->GetEAPSettings(luid, eapId, encapsEapId, *iEAPSettings);
+        if (err != KErrNone || !iEAPSettings->iCertificatesPresent)
+            {
+            iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound );
+            _DBG_FILE("CNSmlWLanAdapter::ChildURIListL(): ENotFound end");            
+            }
+        else
+          	{
+	        currentUriSegmentList->InsertL( currentUriSegmentList->Size(), KNSmlWLanListOfCertificateLeafs );
+	        iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EOk );
+	        iCallBack->SetResultsL( aResultsRef, *currentUriSegmentList, KNullDesC8 );
+	        _DBG_FILE("CNSmlWLanAdapter::ChildURIListL(): status ok");  	
+          	}                      
+        }
+
+
+    CleanupStack::PopAndDestroy( currentUriSegmentList );
+
+    _DBG_FILE("CNSmlWLanAdapter::ChildURIListL(): end");
+    }
+
+//-----------------------------------------------------------------------------
+// void CNSmlWLanAdapter::AddNodeObjectL( const TDesC& aURI, const TDesC& aParentLUID, 
+// const TInt aStatusRef )
+//-----------------------------------------------------------------------------
+void CNSmlWLanAdapter::AddNodeObjectL( const TDesC8& aURI, 
+                                       const TDesC8& aParentLUID, 
+                                       const TInt aStatusRef )
+    {
+    _DBG_FILE("CNSmlWLanAdapter::AddNodeObjectL(): begin");
+    DBG_ARGS8(_S8("WLanAdapter::AddNodeObjectL - uri: <%S> to aParentLuid: <%S>"), 
+                &aURI, &aParentLUID );
+
+    TInt uriSegs = NumOfUriSegs( aURI );
+    if( (aURI.Match (_L8( "AP/*/NAPDef/*/WLAN") ) != KErrNotFound && uriSegs == 5 )
+    	|| (aURI.Match (_L8( "AP/*/NAPDef/*/WLAN/*/EAP") ) != KErrNotFound && uriSegs == 7 )
+    	|| (aURI.Match (_L8( "AP/*/NAPDef/*/WLAN/*/EAP/*/Certificate") ) != KErrNotFound && uriSegs == 9 ) )
+        {
+        iCallBack->SetMappingL( aURI, aParentLUID );
+        iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EOk );
+        return;
+        }
+
+    //Add new wlan settings
+    else if( aURI.Match( _L8("AP/*/NAPDef/*/WLAN/*") ) != 
+            KErrNotFound && NumOfUriSegs( aURI ) == 6 )
+        {
+        iSettings->Id = 0;
+        iSettings->ServiceID = DesToInt( aParentLUID ); 
+        iSettings->ConnectionMode = 0;
+      	iSettings->SSID = TPtrC(KNSmlWLanDefaultSSID);
+        iSettings->UsedSSID = _L("");
+        iSettings->ScanSSID = 0;
+        iSettings->WepKey1 = _L8("");
+        iSettings->WepKey2 = _L8("");
+        iSettings->WepKey3 = _L8("");
+        iSettings->WepKey4 = _L8("");
+        iSettings->WepIndex = 0;
+        iSettings->SecurityMode = EAllowUnsecure;
+        iSettings->WPAPreSharedKey = _L8("");
+        iSettings->UseWPAPSK = 0;
+        iSettings->EapList = _L("");
+        iSettings->AuthMode = 0;                
+
+        TInt err = iWlanSettings->WriteWlanSettings( *iSettings );
+        if( err != KErrNone )
+            {
+            iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EError );
+            return;
+            }
+
+        DBG_ARGS8(_S8("WLanAdapter::AddNodeObjectL - mapping uri: <%S> to luid: <%S>"), &aURI, &aParentLUID );
+        iCallBack->SetMappingL( aURI, aParentLUID );
+        iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EOk );
+        }
+
+    else if( aURI.Match( _L8("AP/*/NAPDef/*/WLAN/*/WEPKey") ) != KErrNotFound && uriSegs == 7 )
+        {
+        if( iWlanSettings->RecordExists( DesToInt( aParentLUID ) ) )
+            iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EOk );
+        else
+            iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound );
+        return;
+        }
+
+    //Add wep key for existing record
+    else if( aURI.Match( _L8("AP/*/NAPDef/*/WLAN/*/WEPKey/*") ) != KErrNotFound && uriSegs == 8 )
+        {
+        for( TInt i=0; i<iBuffer->Count(); i++ )
+            {
+            if( iBuffer->At(i).iUri->Match( aURI ) != KErrNotFound )
+                {
+                iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EAlreadyExists );
+
+                _DBG_FILE("CNSmlWLanAdapter::AddNodeObjectL(): EAlreadyExists");
+                return;
+                }
+            }
+        DBG_ARGS8(_S8("WLanAdapter::Bufferiin - uri: <%S> to aParentLuid: <%S>"), &aURI, &aParentLUID );
+
+        TNSmlWepKeyBufferElement newNode;
+        newNode.iUri = aURI.AllocLC();
+        newNode.iData = 0;
+        newNode.iWepKeyId = 0;
+        //newNode.iUseWPAPSK = 0;
+        newNode.iIdStatusRef = 0;
+        newNode.iDataStatusRef = 0;
+        newNode.iLengthStatusRef = 0;
+        newNode.iNodeStatusRef = aStatusRef;
+        newNode.iExecuted = EFalse;
+        newNode.iDataSet = EFalse;
+        newNode.iLuid = DesToInt( aParentLUID );
+        iBuffer->AppendL( newNode );
+
+        CleanupStack::Pop( );   //newNode.iUri
+
+        _DBG_FILE("CNSmlWLanAdapter::AddNodeObjectL(): end");
+        return;
+        }
+
+    else if( aURI.Match( _L8("AP/*/NAPDef/*/WLAN/*/SecondarySSID/*") ) != 
+            KErrNotFound && NumOfUriSegs( aURI ) == 8 )
+        {
+        /*
+        TSecondarySSID ssid;
+        ssid.ScannedId = KNullDesC;
+        ssid.UsedId = KNullDesC;
+        TInt luid = GetIdFromLuid( aParentLUID );
+        TInt retval = iWlanSettings->WriteSecondarySSIDL(luid, ssid, ETrue);*/
+        
+        TNSmlSecondarySSIDBufferElement *newSecNode =  new (ELeave) TNSmlSecondarySSIDBufferElement;;
+        newSecNode->iUri = aURI.AllocLC();
+        newSecNode->ScannedId = KNullDesC;
+        newSecNode->UsedId = KNullDesC;
+        newSecNode->iExecuted = EFalse;
+        newSecNode->wlanLuid = GetIdFromLuid( aParentLUID );
+        iSecondaryBuffer.AppendL( newSecNode );
+        CleanupStack::Pop( );   //newNode.iUri
+        return;
+        }
+
+    else if( aURI.Match( _L8("AP/*/NAPDef/*/WLAN/*/EAP/*") ) != 
+            KErrNotFound && NumOfUriSegs( aURI ) == 8 )
+        {
+        TInt eapTypeId = GetEAPIdFromUri(aURI);
+		TInt encapsEapId = GetEncapsEAPIdFromUri( aURI );
+        if ( encapsEapId == KErrNotFound )
+        	{
+        	encapsEapId = EAPSettings::EEapNone;
+        	}
+        
+                    
+        TInt WLANServiceId = GetServiceIdFromUriL ( aURI );
+        
+        if ( WLANServiceId == KErrNotFound )
+        	{
+        	_DBG_FILE("CNSmlWLanAdapter::AddNodeObjectL(): Could not find WLAN service ID from URI.");
+        	User::Leave( KErrNotFound );
+        	}
+        
+        TInt i(0);
+        // Check if the buffer for this EAP already exists
+        for ( i = 0 ; i < iEAPBuffer.Count() ; i++ )
+            {
+            if ( eapTypeId == iEAPBuffer[i]->iEAPSettings->iEAPType
+                && encapsEapId == iEAPBuffer[i]->iEncapsulatingEAPId )
+                {
+                // The correct buffer was found.                
+                _DBG_FILE("CNSmlWLanAdapter::AddNodeObjectL(): Found existing buffer.");
+                break;                              
+                }
+            }
+        // buffer did not exist. Update the existing buffer
+        if ( i == iEAPBuffer.Count() )
+            {   
+            TNSmlEAPBufferElement* buffer = new (ELeave) TNSmlEAPBufferElement;
+            CleanupStack::PushL( buffer );
+       	
+            buffer->iEAPSettings = new (ELeave) EAPSettings;
+            CleanupStack::PushL( buffer->iEAPSettings );
+	                
+            buffer->iEAPSettings->iEAPType = static_cast<EAPSettings::TEapType> (eapTypeId);        
+            buffer->iStatusRefArray.AppendL(aStatusRef);
+            buffer->iWLANServiceId = WLANServiceId;
+            buffer->iEncapsulatingEAPId = static_cast<EAPSettings::TEapType>(encapsEapId);
+            iEAPBuffer.AppendL(buffer);       
+
+            CleanupStack::Pop( buffer->iEAPSettings );
+            CleanupStack::Pop( buffer );
+            }
+        
+        // Set the mapping luid to be the index to the iEAPBuffer
+        TBuf8<2> luid;
+        luid.Num( iEAPBuffer.Count() - 1 );
+        DBG_ARGS8(_S8("WLanAdapter::AddNodeObjectL - mapping uri: <%S> to luid: <%S>"), &aURI, &luid );
+        iCallBack->SetMappingL( aURI, luid);
+            
+        }
+    else if( aURI.Match( _L8("AP/*/NAPDef/*/WLAN/*/EAP/*/Certificate/*") ) != 
+            KErrNotFound && NumOfUriSegs( aURI ) == 10 )
+        {
+		TPtrC8 ptr = NSmlDmURI::ParentURI( aURI );
+		TPtrC8 ptr2 = NSmlDmURI::ParentURI( ptr );
+							
+       	HBufC8* eapLuidBuf = iCallBack->GetLuidAllocL( ptr2 );
+		
+		TInt index = GetIdFromLuid( *eapLuidBuf );
+        
+        delete eapLuidBuf;
+        
+  		CertificateEntry entry;
+		iEAPBuffer[index]->iEAPSettings->iCertificates.AppendL(entry);
+		iEAPBuffer[index]->iEAPSettings->iCertificatesPresent = ETrue;
+        iEAPBuffer[index]->iStatusRefArray.AppendL(aStatusRef);
+        
+        TBuf8<2> luid;
+		luid.Num( iEAPBuffer[index]->iEAPSettings->iCertificates.Count() - 1 );
+		
+        DBG_ARGS8(_S8("WLanAdapter::AddNodeObjectL - mapping uri: <%S> to luid: <%S>"), &aURI, &luid );
+        iCallBack->SetMappingL( aURI, luid);
+        }
+    _DBG_FILE("CNSmlWLanAdapter::AddNodeObjectL(): end");
+    }
+    
+//------------------------------------------------------------------------------
+// CNSmlWLanAdapter::ExecuteCommandL
+// not supported
+//------------------------------------------------------------------------------
+void CNSmlWLanAdapter::ExecuteCommandL( const TDesC8& /*aURI*/, 
+                              const TDesC8& /*aLUID*/,
+                              const TDesC8& /*aArgument*/, 
+                              const TDesC8& /*aType*/,
+                              TInt aStatusRef )
+    {
+    _DBG_FILE("CNSmlWLanAdapter::ExecuteCommandL(): begin");
+    iCallBack->SetStatusL(aStatusRef, CSmlDmAdapter::EError);
+    _DBG_FILE("CNSmlWLanAdapter::ExecuteCommandL(): end");
+    }
+
+//------------------------------------------------------------------------------
+// CNSmlWLanAdapter::ExecuteCommandL ( .. RWriteStream ..)
+// not supported
+//------------------------------------------------------------------------------
+void CNSmlWLanAdapter::ExecuteCommandL( const TDesC8& /*aURI*/, 
+                              const TDesC8& /*aLUID*/,
+                              RWriteStream*& /*aStream*/, 
+                              const TDesC8& /*aType*/,
+                              TInt aStatusref )
+    {
+    _DBG_FILE("CNSmlWLanAdapter::ExecuteCommandL(): begin");
+    iCallBack->SetStatusL(aStatusref, CSmlDmAdapter::EError);
+    _DBG_FILE("CNSmlWLanAdapter::ExecuteCommandL(): end");
+    }
+
+//------------------------------------------------------------------------------
+// CNSmlWLanAdapter::CopyCommandL
+// not supported
+//------------------------------------------------------------------------------
+void CNSmlWLanAdapter::CopyCommandL( const TDesC8& /*aTargetURI*/,
+                                     const TDesC8& /*aTargetLUID*/,
+                                     const TDesC8& /* aSourceURI*/,
+                                     const TDesC8& /*aSourceLUID*/, 
+                                     const TDesC8& /*aType*/,
+                                     TInt aStatusRef )
+    {
+    _DBG_FILE("CNSmlWLanAdapter::CopyCommandL(): begin");
+    iCallBack->SetStatusL(aStatusRef, CSmlDmAdapter::EError);
+    _DBG_FILE("CNSmlWLanAdapter::CopyCommandL(): end");
+    }
+//------------------------------------------------------------------------------
+// CNSmlWLanAdapter::StartAtomicL
+// not supported
+//------------------------------------------------------------------------------
+void CNSmlWLanAdapter::StartAtomicL()
+    {
+    _DBG_FILE("CNSmlWLanAdapter::StartAtomicL(): begin");
+    _DBG_FILE("CNSmlWLanAdapter::StartAtomicL(): end");
+    }
+
+//------------------------------------------------------------------------------
+// CNSmlWLanAdapter::CommitAtomicL
+// not supported
+//------------------------------------------------------------------------------
+void CNSmlWLanAdapter::CommitAtomicL()
+    {
+    _DBG_FILE("CNSmlWLanAdapter::CommitAtomicL(): begin");
+    _DBG_FILE("CNSmlWLanAdapter::CommitAtomicL(): end");
+    }
+
+//------------------------------------------------------------------------------
+// CNSmlWLanAdapter::RollbackAtomicL
+// returns EError
+//------------------------------------------------------------------------------
+void CNSmlWLanAdapter::RollbackAtomicL()
+    {
+    _DBG_FILE("CNSmlWLanAdapter::RollbackAtomicL(): begin");
+    _DBG_FILE("CNSmlWLanAdapter::RollbackAtomicL(): end");
+    }
+
+//------------------------------------------------------------------------------
+// CNSmlWLanAdapter::StreamingSupport
+// returns EFalse
+//------------------------------------------------------------------------------
+
+TBool CNSmlWLanAdapter::StreamingSupport( TInt& /*aItemSize*/ )
+    {
+    _DBG_FILE("CNSmlWLanAdapter::StreamingSupport(): begin");
+    _DBG_FILE("CNSmlWLanAdapter::StreamingSupport(): end");
+    return EFalse;
+    }
+
+//------------------------------------------------------------------------------
+// CNSmlWLanAdapter::StreamCommittedL
+// not used in this adapter
+//------------------------------------------------------------------------------
+
+void CNSmlWLanAdapter::StreamCommittedL()
+    {
+    _DBG_FILE("CNSmlWLanAdapter::StreamCommittedL(): begin");
+    _DBG_FILE("CNSmlWLanAdapter::StreamCommittedL(): end");
+    }
+
+//-----------------------------------------------------------------------------
+// CNSmlWLanAdapter* CNSmlWLanAdapter::CompleteOutstandingCmdsL( )
+//-----------------------------------------------------------------------------
+void CNSmlWLanAdapter::CompleteOutstandingCmdsL( )
+    {
+    _DBG_FILE("CNSmlWLanAdapter::CompleteOutStandingCmdsL(): begin");
+
+    ExecuteBufferL( ETrue );
+
+    _DBG_FILE("CNSmlWLanAdapter::CompleteOutStandingCmdsL(): end");
+    }
+
+// ------------------------------------------------------------------------------------------------
+// TPtrC8 CNSmlWLanAdapter::GetLastUriSeg(const TDesC8& aURI)
+// Returns only the last uri segemnt
+// ------------------------------------------------------------------------------------------------
+TPtrC8 CNSmlWLanAdapter::GetLastUriSeg( const TDesC8& aURI )
+    {
+    _DBG_FILE("CNSmlWLanAdapter::GetLastUriSeg(): begin");
+
+    TInt i;
+    for( i = aURI.Length()-1; i >= 0; i-- )
+        {
+        if( aURI[i] == '/' )
+            {
+            break;
+            }
+        }
+
+    if( i==0 )
+        {
+        _DBG_FILE("CNSmlWLanAdapter::GetLastUriSeg(): end");
+        return aURI;
+        }
+    else
+        {
+        _DBG_FILE("CNSmlWLanAdapter::GetLastUriSeg(): end");
+        return aURI.Mid( i+1 );
+        }
+    }
+
+
+// ------------------------------------------------------------------------------------------------
+// TPtrC16 CNSmlWLanAdapter::RemoveLastURISeg(const TDesC8& aURI)
+// returns parent uri, i.e. removes last uri segment
+// ------------------------------------------------------------------------------------------------
+TPtrC8 CNSmlWLanAdapter::RemoveLastUriSeg(const TDesC8& aURI)
+    {
+    _DBG_FILE("CNSmlWLanAdapter::RemoveLastUriSeg(): begin");
+
+    TInt i;
+    for( i = aURI.Length()-1; i >= 0; i-- )
+        {
+        if(aURI[i] == '/')
+            {
+            break;
+            }
+        }
+
+    _DBG_FILE("CNSmlWLanAdapter::RemoveLastUriSeg(): end");
+    return aURI.Left(i);
+    }
+
+
+// ------------------------------------------------------------------------------------------------
+// TInt CNSmlWLanAdapter::DesToInt( const TDesC8& aLuid )
+// Returns aLuid as integer value
+// ------------------------------------------------------------------------------------------------
+TInt CNSmlWLanAdapter::DesToInt( const TDesC8& aLuid )
+    {
+    _DBG_FILE("CNSmlWLanAdapter::DesToInt(): begin");
+
+    TLex8 lex(aLuid);
+    TInt value = 0;
+    lex.Val( value );
+
+    DBG_ARGS8(_S8("WLanAdapter::DesToInt() - Des: <%S> Int: <%D>"), &aLuid, value );
+    _DBG_FILE("CNSmlWLanAdapter::DesToInt(): end");
+    return value;
+    }
+
+
+// ------------------------------------------------------------------------------------------------
+// HBufC* CNSmlWLanAdapter::IntToDesLC(const TInt aLuid)
+// ------------------------------------------------------------------------------------------------
+HBufC* CNSmlWLanAdapter::IntToDesLC(const TInt aLuid)
+    {
+    _DBG_FILE("CNSmlWLanAdapter::IntToDesLC(): begin");
+
+    HBufC* buf = HBufC::NewLC(10);
+    TPtr ptrBuf = buf->Des();
+    ptrBuf.Num(aLuid);
+
+    _DBG_FILE("CNSmlWLanAdapter::IntToDesLC(): end");
+    return buf;
+    }
+
+// ------------------------------------------------------------------------------------------------
+// HBufC8* CNSmlWLanAdapter::IntToDes8LC(const TInt aLuid)
+// ------------------------------------------------------------------------------------------------
+HBufC8* CNSmlWLanAdapter::IntToDes8LC(const TInt aLuid)
+    {
+    _DBG_FILE("CNSmlWLanAdapter::IntToDes8LC(): begin");
+
+    HBufC8* buf = HBufC8::NewLC(10);
+    TPtr8 ptrBuf = buf->Des();
+    ptrBuf.Num(aLuid);
+    
+    _DBG_FILE("CNSmlWLanAdapter::IntToDes8LC(): end");
+    return buf;
+    }
+
+// ------------------------------------------------------------------------------------------------
+// TInt CNSmlWLanAdapter::NumOfUriSegs( const TDesC8& aUri )
+// Return count of URI segments of aUri
+// ------------------------------------------------------------------------------------------------
+TInt CNSmlWLanAdapter::NumOfUriSegs( const TDesC8& aUri )
+    {
+    _DBG_FILE("CNSmlWLanAdapter::NumOfUriSegs(): begin");
+
+    TInt count = 1;
+    for( TInt i=0; i<aUri.Length(); i++ )
+        {
+        if( aUri[i] == '/' )
+            count ++;
+        }
+
+    _DBG_FILE("CNSmlWLanAdapter::NumOfUriSegs(): end");
+    return count;
+    }
+
+
+// -------------------------------------------------------------------------------------
+// CNSmlWLanAdapter::FillNodeInfoL()
+// Fills the node info in ddf structure
+// -------------------------------------------------------------------------------------
+void CNSmlWLanAdapter::FillNodeInfoL( MSmlDmDDFObject& aNode,
+                                          TSmlDmAccessTypes aAccTypes,
+                                          MSmlDmDDFObject::TOccurence aOccurrence, 
+                                          MSmlDmDDFObject::TScope aScope, 
+                                          MSmlDmDDFObject::TDFFormat aFormat,
+                                          const TDesC8& aDescription )
+                                          
+    {
+    aNode.SetAccessTypesL(aAccTypes);
+    aNode.SetOccurenceL(aOccurrence);
+    aNode.SetScopeL(aScope);
+    aNode.SetDFFormatL(aFormat);
+    if(aFormat!=MSmlDmDDFObject::ENode)
+        {
+        aNode.AddDFTypeMimeTypeL(KNSmlMimeType);
+        }
+    aNode.SetDescriptionL(aDescription);
+    }
+
+
+
+// ------------------------------------------------------------------------------------------------
+// TInt CNSmlWLanAdapter::GetEAPIdFromUri( const TDesC8& aUri )
+// Return WLan ID number from URI
+// ------------------------------------------------------------------------------------------------
+TInt CNSmlWLanAdapter::GetEAPIdFromUri( const TDesC8& aUri )
+    {
+    DBG_ARGS8(_S8("WLanAdapter::GetEAPIdFromUri - <%S>"), &aUri );
+
+    if( aUri.Match( _L8("AP/*/NAPDef/*/WLAN/*/EAP/*") ) == KErrNotFound )
+        {
+        return KErrNotFound;
+        }
+    
+    TInt begin = aUri.Find(_L8("/EAPId")) + 6;
+    if ( begin == KErrNotFound )
+    	{
+    	return KErrNotFound;
+    	}
+
+    TInt eapId = DesToInt( aUri.Mid( begin, 3 ) );    
+    
+    return eapId;
+    }
+
+// ------------------------------------------------------------------------------------------------
+// TInt CNSmlWLanAdapter::GetEncapsEAPIdFromUri( const TDesC8& aUri )
+// Return WLan ID number from URI
+// ------------------------------------------------------------------------------------------------
+TInt CNSmlWLanAdapter::GetEncapsEAPIdFromUri( const TDesC8& aUri )
+    {
+    DBG_ARGS8(_S8("WLanAdapter::GetEncapsEAPIdFromUri - <%S>"), &aUri );
+
+    if( aUri.Match( _L8("AP/*/NAPDef/*/WLAN/*/EAP/EAPId*-*") ) == KErrNotFound )
+        {
+        return KErrNotFound;
+        }
+    
+    TInt begin = aUri.Find(_L8("/EAPId")) + 9;
+    if ( aUri[begin] != '-' )
+    	{
+    	return KErrNotFound;
+    	}
+    begin++;
+    TInt end = -1;
+    TInt count;
+
+    for( count=0; count+begin<aUri.Length(); count++ )
+        {
+        if( aUri[begin+count]=='/' )
+            {
+            end = begin+count;
+            break;
+            }
+        else if( aUri.Length() == begin+count+1 )
+            {
+            count++;
+            end = begin+count;
+            break;
+            }
+        }
+
+    if( end > 0 )
+        {
+        TInt eapId = DesToInt( aUri.Mid( begin, count ) );
+        return eapId;
+        }
+    return KErrNotFound;
+    }
+    
+// ------------------------------------------------------------------------------------------------
+// TInt CNSmlWLanAdapter::GetEAPIdFromUriL( const TDesC8& aUri )
+// Return WLan ID number from URI
+// ------------------------------------------------------------------------------------------------
+TInt CNSmlWLanAdapter::GetServiceIdFromUriL( const TDesC8& aURI)
+    {
+    DBG_ARGS8(_S8("WLanAdapter::GetServiceIdFromUriL - <%S>"), &aURI );
+
+    if( aURI.Match( _L8("AP/*/NAPDef/*/WLAN/*/EAP*") ) == KErrNotFound )
+        {
+        return KErrNotFound;
+        }
+    
+    TInt end = aURI.Find(_L8("/EAP")) + 4;
+    
+    if( end > 0 )
+        {        
+        
+       	HBufC8* luidBuf = iCallBack->GetLuidAllocL( aURI.Left( end ) );
+		
+		TInt serviceId = GetIdFromLuid( *luidBuf );
+        
+	    delete luidBuf;		
+          
+	    return serviceId;        
+        }
+ 	return KErrNotFound;        
+ }
+
+// ------------------------------------------------------------------------------------------------
+// TInt CNSmlWLanAdapter::GetSecSSIDFromUriL( const TDesC8& aUri )
+// Return WLan ID number from URI
+// ------------------------------------------------------------------------------------------------
+TUint32 CNSmlWLanAdapter::GetSecSSIDFromUriL( const TDesC8& aUri )
+    {
+    DBG_ARGS8(_S8("WLanAdapter::GetSecSSIDFromUriL - <%S>"), &aUri );
+
+    if( aUri.Match( _L8("AP/*/NAPDef/*/WLAN/*/SecondarySSID/*") ) == KErrNotFound )
+        {
+        User::Leave(KErrNotFound);
+        }
+    _LIT8(KSSIDString, "/SecondarySSID/SecSSID");
+    TInt begin = aUri.Find(KSSIDString) + KSSIDString().Length();
+    TInt end = -1;
+    TInt count;
+
+    for( count=0; count+begin<aUri.Length(); count++ )
+        {
+        if( aUri[begin+count]=='/' )
+            {
+            end = begin+count;
+            break;
+            }
+        else if( aUri.Length() == begin+count+1 )
+            {
+            count++;
+            end = begin+count;
+            break;
+            }
+        }
+
+    if( end > 0 )
+        {
+        TLex8 lex(aUri.Mid( begin, count ));
+        TUint32 value = 0;
+        lex.Val( value, EDecimal );
+        return value;
+        }
+    else
+        {
+        User::Leave(KErrNotFound);
+        }
+    return 0;
+    }
+
+
+// ------------------------------------------------------------------------------------------------
+// TInt CNSmlWLanAdapter::GetEAPIdFromUri( const TDesC8& aUri )
+// Return WLan ID number from URI
+// ------------------------------------------------------------------------------------------------
+TInt CNSmlWLanAdapter::GetCertificateIdFromUri( const TDesC8& aUri )
+    {
+    DBG_ARGS8(_S8("WLanAdapter::GetCertificateIdFromUri - <%S>"), &aUri );
+
+    if( aUri.Match( _L8("AP/*/NAPDef/*/WLAN/*/EAP/*/Certificate/*") ) == KErrNotFound )
+        {
+        return KErrNotFound;
+        }
+    _LIT8(KCertString, "/Certificate/CertId");
+    
+    TInt begin = aUri.Find(KCertString);
+    if ( begin == KErrNotFound )
+        {
+        return KErrNotFound;
+        }
+    
+    begin += KCertString().Length();
+    
+    TInt end = -1;
+    TInt count;
+
+    for( count=0; count+begin<aUri.Length(); count++ )
+        {
+        if( aUri[begin+count]=='/' )
+            {
+            end = begin+count;
+            break;
+            }
+        else if( aUri.Length() == begin+count+1 )
+            {
+            count++;
+            end = begin+count;
+            break;
+            }
+        }
+
+    if( end > 0 )
+        {
+        TInt certId = DesToInt( aUri.Mid( begin, count ) );
+        return certId;
+        }
+    return KErrNotFound;
+    }
+
+
+// ------------------------------------------------------------------------------------------------
+// TInt CNSmlWLanAdapter::GetWepKeyIdFromUri( const TDesC8& aUri )
+// Returns WepKey ID number from URI
+// ------------------------------------------------------------------------------------------------
+TInt CNSmlWLanAdapter::GetWepKeyIdFromUri( const TDesC8& aUri )
+    {
+    if( aUri.Match( _L8("AP/*/NAPDef/*/WLAN/*/WEPKey/*") ) == KErrNotFound )
+        {
+        return KErrNotFound;
+        }
+    
+    TInt begin = aUri.Find(_L8("WEPKey/WKId")) + 11;
+    TInt end = -1;
+    TInt count;
+
+    for( count=0; count<aUri.Length()-11; count++ )
+        {
+        if( aUri[begin+count]=='/' )
+            {
+            end = begin+count;
+            break;
+            }
+        
+        else if( aUri.Length() == begin+count+1 )
+            {
+            count ++;
+            end = begin+count;
+            break;
+            }
+        }
+
+    if( end > 0 )
+        {
+        TInt wlanId = DesToInt( aUri.Mid( begin, count ) );
+        return wlanId;
+        }
+    return KErrNotFound;
+    }
+
+// ------------------------------------------------------------------------------------------------
+// TInt CNSmlWLanAdapter::GetWepKeyIdFromLuid( const TDesC8& aLuid )
+// Return id number of wepkey
+// ------------------------------------------------------------------------------------------------
+TInt CNSmlWLanAdapter::GetWepKeyIdFromLuid( const TDesC8& aLuid )
+    {
+    TLex8 iLex( aLuid );
+
+    TInt luid;
+    if (iLex.Val( luid ) == KErrNone)
+        {
+        if( luid > 1000 )
+            {
+            return luid / 1000;
+            }
+        else
+            {
+            return KErrNotFound;
+            }
+        }
+    else
+        {
+        return KErrNotFound;
+        }
+    }
+
+// ------------------------------------------------------------------------------------------------
+// TInt CNSmlWLanAdapter::GetIdFromLuid( const TDesC& aLuid )
+// Return luid of wlan node
+// ------------------------------------------------------------------------------------------------
+TInt CNSmlWLanAdapter::GetIdFromLuid( const TDesC8& aLuid )
+    {
+    TLex8 iLex( aLuid );
+
+    TInt luid;
+    if( iLex.Val(luid) == KErrNone )
+        {
+        if( luid < 1000 )
+            {
+            return luid;
+            }
+        else
+            {
+            TInt tmp = luid / 1000 * 1000; //First number of luid > 1000
+            return luid - tmp;
+            }
+        }
+    else
+        {
+        return KErrNotFound;
+        }
+    }
+
+// ------------------------------------------------------------------------------------------------
+// void CNSmlWLanAdapter::ExecuteBufferL( TBool aFinal )
+// Executes buffered commands from iBuffer
+// ------------------------------------------------------------------------------------------------
+void CNSmlWLanAdapter::ExecuteBufferL( TBool aFinal )
+    {
+    for( TInt index=0; index<iBuffer->Count(); index++ )
+        {
+        DBG_ARGS8(_S8("WLanAdapter::ExecuteBuffer(): Buf count: <%D> index: <%D>"), iBuffer->Count(), index );
+
+        if( iBuffer->At(index).iExecuted )
+            {
+            continue;
+            }
+        TInt err = 0;
+
+        TInt luid = iBuffer->At(index).iLuid;
+        TInt wepKeyId = iBuffer->At(index).iWepKeyId;
+        if( ! wepKeyId && ! aFinal )
+            {
+            continue;
+            }
+
+        if( wepKeyId > 4 ||
+            ! wepKeyId && aFinal )
+            {
+            if( iBuffer->At(index).iDataStatusRef )
+                iCallBack->SetStatusL( iBuffer->At(index).iDataStatusRef, CSmlDmAdapter::EError );
+            if( iBuffer->At(index).iNodeStatusRef )
+                iCallBack->SetStatusL( iBuffer->At(index).iNodeStatusRef, CSmlDmAdapter::EError );
+            if( iBuffer->At(index).iLengthStatusRef )
+                iCallBack->SetStatusL( iBuffer->At(index).iLengthStatusRef, CSmlDmAdapter::EError );
+
+            iBuffer->At(index).iIdStatusRef = 0;
+            iBuffer->At(index).iNodeStatusRef = 0;
+            iBuffer->At(index).iDataStatusRef = 0;
+            iBuffer->At(index).iLengthStatusRef = 0;
+            iBuffer->At(index).iExecuted = ETrue;
+
+            continue;
+            }
+        
+        if( iBuffer->At(index).iDataSet &&
+            iBuffer->At(index).iWepKeyId > 0 )
+            {
+            iWlanSettings->GetWlanSettings( luid, *iSettings );
+
+            switch( wepKeyId )
+                {
+            case 1:
+                iSettings->WepKey1 = iBuffer->At(index).iData->Des();
+                break;
+            case 2:
+                iSettings->WepKey2 = iBuffer->At(index).iData->Des();
+                break;
+            case 3:
+                iSettings->WepKey3 = iBuffer->At(index).iData->Des();
+                break;
+            case 4:
+                iSettings->WepKey4 = iBuffer->At(index).iData->Des();
+                break;
+            default:
+                continue;
+                }
+
+            err = iWlanSettings->WriteWlanSettings( *iSettings );
+            if( err == KErrNone )
+                {
+                iCallBack->SetStatusL( iBuffer->At(index).iDataStatusRef, CSmlDmAdapter::EOk );
+                }
+            else
+                {
+                iCallBack->SetStatusL( iBuffer->At(index).iDataStatusRef, CSmlDmAdapter::EError );
+                }
+
+            iBuffer->At(index).iDataStatusRef = 0;
+            }
+
+        TBuf8<5> addLUID;
+        addLUID.AppendNum( wepKeyId );
+        addLUID.AppendNumFixedWidth( luid, EDecimal, 3 );
+        
+        iCallBack->SetMappingL( iBuffer->At( index).iUri->Des(), addLUID );
+        if( iBuffer->At(index).iIdStatusRef )
+            iCallBack->SetStatusL( iBuffer->At(index).iIdStatusRef, CSmlDmAdapter::EOk );
+        if( iBuffer->At(index).iNodeStatusRef )
+            iCallBack->SetStatusL( iBuffer->At(index).iNodeStatusRef, CSmlDmAdapter::EOk );
+        if( iBuffer->At(index).iLengthStatusRef )
+            iCallBack->SetStatusL( iBuffer->At(index).iLengthStatusRef, CSmlDmAdapter::EOk );
+
+        iBuffer->At(index).iIdStatusRef = 0;
+        iBuffer->At(index).iNodeStatusRef = 0;
+        iBuffer->At(index).iLengthStatusRef = 0;
+        iBuffer->At(index).iExecuted = ETrue;
+        }
+
+    //Clean executed command from buffer
+    for( TInt i=0; i<iBuffer->Count(); i++ )
+        {
+        if( iBuffer->At(i).iExecuted )
+            {
+            if( iBuffer->At(i).iUri )
+                {
+                delete iBuffer->At(i).iUri;
+                iBuffer->At(i).iUri = 0;
+                }
+            if( iBuffer->At(i).iData )
+                {
+                delete iBuffer->At(i).iData;
+                iBuffer->At(i).iData = 0;
+                }
+            iBuffer->Delete(i);
+            iBuffer->Compress();
+            }
+        }
+// Secondary SSID Buffer 
+      for( TInt index=0; index<iSecondaryBuffer.Count(); index++ )
+        {
+        DBG_ARGS8(_S8("WLanAdapter::ExecuteBuffer(): Buf count: <%D> index: <%D>"), iBuffer->Count(), index );
+
+        if( iSecondaryBuffer[index]->iExecuted )
+            {
+            continue;
+            }
+               
+        TSecondarySSID ssid;
+        ssid.ScannedId = iSecondaryBuffer[index]->ScannedId;
+        ssid.UsedId = iSecondaryBuffer[index]->UsedId;
+        
+        DBG_ARGS8(_S8("CWlanadaptes::Execute Buffer - WLAN_SEC_SSID_SCANNED_SSID uri: <%S> ad  WLAN_SEC_SSID_USED_SSID : <%S>"), &iSecondaryBuffer[index]->ScannedId, &iSecondaryBuffer[index]->UsedId );
+        
+        TInt retval = iWlanSettings->WriteSecondarySSIDL(iSecondaryBuffer[index]->wlanLuid, ssid, ETrue);
+        iSecondaryBuffer[index]->iExecuted=ETrue;
+        
+        }
+      // EAP settings
+      for( TInt i = 0 ; i < iEAPBuffer.Count() ; i++ )
+      	{
+      	// Check if this method has encapsulated methods
+      	for ( TInt j = 0; j < iEAPBuffer.Count() ; j++ )
+      		{
+      		if ( iEAPBuffer[i]->iEAPSettings->iEAPType == iEAPBuffer[j]->iEncapsulatingEAPId )
+      			{
+      			// j is encapsulated inside i
+      			iEAPBuffer[i]->iEAPSettings->iEncapsulatedEAPTypes.Append( iEAPBuffer[j]->iEAPSettings->iEAPType );
+				iEAPBuffer[i]->iEAPSettings->iEncapsulatedEAPTypesPresent = ETrue;
+      			}
+      		}
+      	
+      	TRAPD( err, iWlanSettings->GetEAPInterfaceL(iEAPBuffer[i]->iWLANServiceId, 
+      												iEAPBuffer[i]->iEncapsulatingEAPId, 
+      												static_cast<TInt> (iEAPBuffer[i]->iEAPSettings->iEAPType ) ) );
+ 		if ( err == KErrNone )
+ 			{ 			
+ 			err = iWlanSettings->WriteEAPSettings( *iEAPBuffer[i]->iEAPSettings );
+ 			}
+      											      											      	
+      	MSmlDmAdapter::TError status;
+      	switch ( err ) 
+      		{
+      			case KErrNotFound:
+      				{
+      				status = CSmlDmAdapter::ENotFound;
+      				break;
+      				}
+      			case KErrNone:
+      				{
+      				status = CSmlDmAdapter::EOk;
+      				break;
+      				}
+      			default:
+      				{
+      				status = CSmlDmAdapter::EError;      				
+      				}
+      		}
+      		
+      	for ( TInt j = 0; j < iEAPBuffer[i]->iStatusRefArray.Count() ; j++)
+      		{
+      			iCallBack->SetStatusL( iEAPBuffer[i]->iStatusRefArray[j], status );	
+      		}      	
+      	}      	
+      	for ( TInt i = 0 ; i < iEAPBuffer.Count() ; i++ )
+    		{
+    		iEAPBuffer[i]->iStatusRefArray.Close();
+    		iEAPBuffer[i]->iEAPSettings->iEncapsulatedEAPTypes.Close();
+    		iEAPBuffer[i]->iEAPSettings->iCipherSuites.Close();
+    		delete iEAPBuffer[i]->iEAPSettings;
+    		iEAPBuffer[i]->iEAPSettings = NULL;
+	    	}
+      	iEAPBuffer.ResetAndDestroy();
+    }
+
+
+//=============================================
+//      CNSmlWLanAdapter::ConvertTo8LC()
+//      Converts string value to 8-bit
+//      
+//=============================================
+TDesC8& CNSmlWLanAdapter::ConvertTo8LC( const TDesC& aSource )
+    {
+    HBufC8* buf = HBufC8::NewLC( aSource.Length()*2);
+    TPtr8 bufPtr = buf->Des();
+    CnvUtfConverter::ConvertFromUnicodeToUtf8( bufPtr, aSource );
+
+    return *buf;
+    }
+
+//=============================================
+//      CNSmlWLanAdapter::ConvertTo16LC()
+//      Converts string value to 16-bit
+//      
+//=============================================
+TDesC16& CNSmlWLanAdapter::ConvertTo16LC( const TDesC8& aSource)
+    {
+    HBufC16* buf16 = HBufC16::NewLC( aSource.Length() );
+    TPtr bufPtr16 = buf16->Des();
+
+    CnvUtfConverter::ConvertToUnicodeFromUtf8(bufPtr16, aSource);
+
+    return *buf16;
+    }
+
+void CNSmlWLanAdapter::ResetEAPStructL()
+    {
+    DeleteEAPStructL();
+    iEAPSettings = new (ELeave) EAPSettings;
+    }
+
+    
+void CNSmlWLanAdapter::DeleteEAPStructL()
+    {
+    if (iEAPSettings != NULL)
+        {        
+        if (iEAPSettings->iCertificatesPresent)
+            {
+            iEAPSettings->iCertificates.Reset();
+            }
+        iEAPSettings->iEncapsulatedEAPTypes.Close();
+        iEAPSettings->iCipherSuites.Close();
+            
+        delete iEAPSettings;
+        iEAPSettings = NULL;
+        }
+    }
+
+
+void CNSmlWLanAdapter::DesToBufferL(CBufBase& aTo, const TDesC& aFrom)
+    {
+    aTo.InsertL( 0, ConvertTo8LC(aFrom) );
+    CleanupStack::PopAndDestroy(); // ConvertTo8LC
+    }
+
+void CNSmlWLanAdapter::FillCipherSuiteBufferL(CBufBase& aBuffer)
+    {
+    if (iEAPSettings == NULL || !iEAPSettings->iCipherSuitesPresent)
+        {
+        return;
+        }
+                        // 0    5    10   15   20   25   30   35
+    _LIT8(KPlus, "+");
+    aBuffer.InsertL(0,KSuitesDefault);
+    TInt count = iEAPSettings->iCipherSuites.Count();
+    for (TInt i=count-1; i>=0;--i)
+        {
+        switch (iEAPSettings->iCipherSuites[i])
+            {
+            case RSA_3DES_SHA:
+                {
+                aBuffer.Write(0, KPlus);
+                break;
+                }
+            case DHE_RSA_3DES_SHA:
+                {
+                aBuffer.Write(5, KPlus);
+                break;
+                }
+            case DHE_DSS_3DES_SHA:
+                {
+                aBuffer.Write(10, KPlus);
+                break;
+                }
+            case RSA_AES_SHA:
+                {
+                aBuffer.Write(15, KPlus);
+                break;
+                }
+            case DHE_RSA_AES_SHA:
+                {
+                aBuffer.Write(20, KPlus);
+                break;
+                }
+            case DHE_DSS_AES_SHA:
+                {
+                aBuffer.Write(25, KPlus);
+                break;
+                }
+            case RSA_RC4_MD5:
+                {
+                aBuffer.Write(30, KPlus);
+                break;
+                }
+            case RSA_RC4_SHA:
+                {
+                aBuffer.Write(35, KPlus);
+                break;
+                }
+            default:
+                {
+                break;
+                }
+                
+            }
+        }
+        
+    }
+
+    
+void CNSmlWLanAdapter::FillCipherSuitesL(const TDesC8& aObject, const TInt aLuid)
+    {
+    if (iEAPBuffer[aLuid] == NULL)
+        {
+        return;
+        }
+    iEAPBuffer[aLuid]->iEAPSettings->iCipherSuites.Reset();
+    iEAPBuffer[aLuid]->iEAPSettings->iCipherSuitesPresent = EFalse; // init to EFalse
+    
+    TChar plus('+');
+    
+    TInt length = aObject.Length();
+    for (TInt i=0; i+3<length;i+=5)
+        {
+        if (aObject[i] == plus)
+            {
+            TLex8 lex(aObject.Mid(i+1, 3));
+            TUint suite;
+            lex.Val(suite);
+            iEAPBuffer[aLuid]->iEAPSettings->iCipherSuites.Append(suite);
+            iEAPBuffer[aLuid]->iEAPSettings->iCipherSuitesPresent = ETrue;
+            }
+        }
+    }
+
+void CNSmlWLanAdapter::ConvertEAPStringToIds( const TDesC8& aEAPString, TDes8& aExpandedId, EAPSettings::TEapType& aId)
+	{
+    if ( aEAPString == KEAPSIM )
+		{	
+		aExpandedId.Copy( KEapSimTypeId, KExpandedEAPIdLength );		
+		aId = EAPSettings::EEapSim;
+		}
+    else if( aEAPString == KEAPAKA )
+        {
+		aExpandedId.Copy( KEapAkaTypeId, KExpandedEAPIdLength );	
+		aId = EAPSettings::EEapAka;	
+        }
+    else if( aEAPString == KEAPTLS )
+        {		
+		aExpandedId.Copy( KEapTlsTypeId, KExpandedEAPIdLength );	
+		aId = EAPSettings::EEapTls;	
+        }
+    else if( aEAPString == KEAPPEAP )
+    	{   
+		aExpandedId.Copy( KEapPeapTypeId, KExpandedEAPIdLength );	
+		aId = EAPSettings::EEapPeap;	
+        }
+    else if( aEAPString == KEAPTTLS )
+        {
+		aExpandedId.Copy( KEapTtlsTypeId, KExpandedEAPIdLength );		
+		aId = EAPSettings::EEapTtls;
+        }
+   else if( aEAPString == KEAPLEAP )
+        {
+		aExpandedId.Copy( KEapLeapTypeId, KExpandedEAPIdLength );
+		aId = EAPSettings::EEapLeap;		
+        }                                    
+   else if( aEAPString == KEAPMSCHAPV2 )
+        {
+		aExpandedId.Copy( KEapMschapv2TypeId, KExpandedEAPIdLength );		
+		aId = EAPSettings::EEapMschapv2;
+        }     
+   else if( aEAPString == KMSCHAPV2 )
+        {
+		aExpandedId.Copy( KMschapv2TypeId, KExpandedEAPIdLength );		
+		aId = EAPSettings::EPlainMschapv2;
+        }     
+   else if( aEAPString == KEAPGTC )
+   		{
+   		aExpandedId.Copy( KEapGtcTypeId, KExpandedEAPIdLength );
+		aId = EAPSettings::EEapGtc;
+        }
+   else if( aEAPString == KEAPFAST )
+        {		
+		aExpandedId.Copy( KEapFastTypeId, KExpandedEAPIdLength );		
+		aId = EAPSettings::EEapFast;
+        }
+   else if( aEAPString == KEAPTTLSPAP )
+       {		
+		aExpandedId.Copy( KTtlspapTypeId, KExpandedEAPIdLength );		
+		aId = static_cast<EAPSettings::TEapType>(98);
+       }
+    else
+        {		
+		aExpandedId.Copy( KEapNoneId, KExpandedEAPIdLength );
+		aId = EAPSettings::EEapNone;
+        }
+
+	}
+
+
+// end of file