voipplugins/voipadapters/dmvoipadapter/src/nsmldmvoipadapter.cpp
branchRCL_3
changeset 21 f742655b05bf
parent 20 65a3ef1d5bd0
child 22 d38647835c2e
--- a/voipplugins/voipadapters/dmvoipadapter/src/nsmldmvoipadapter.cpp	Thu Aug 19 09:45:22 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5801 +0,0 @@
-/*
-* Copyright (c) 2002-2009 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:  Device Management VoIP adapter
-*
-*/
-
-
-// INCLUDE FILES
-#include <f32file.h>
-#include <sysutil.h>
-#include <settingsinternalcrkeys.h>
-#include <centralrepository.h>
-#include <wlaninternalpskeys.h> // For GetWlanacAddress and GetWlanTypeL.
-#include <badesca.h> // For CDesC8ArrayFlat used in CompleteOutstandingCmdsL.
-#include <coemain.h> // For GetPhoneModelL.
-#include <crcseprofileregistry.h>
-#include <crcseprofileentry.h>
-#include <crcseaudiocodecregistry.h>
-#include <crcseaudiocodecentry.h>
-#include <utf.h>
-#include <sipmanagedprofile.h> // For SIP User Agent Header.
-#include <sipprofileregistryobserver.h> // For SIP User Agent Header.
-#include <sipmanagedprofileregistry.h> // For SIP User Agent Header.
-#include <spdefinitions.h> // For Service Provider Settings.
-#include <spsettings.h>    // For Service Provider Settings.
-#include <spentry.h>       // For Service Provider Settings.
-#include <spproperty.h>    // For Service Provider Settings.
-#include <featmgr.h>
-#include <nsmldmiapmatcher.h> // For fetching IAP.
-#include <nsmldmuri.h> // for parsing uris
-#include <pathinfo.h> // For getting phone rom root path.
-#include <cvimpstsettingsstore.h> // For IM tone path
-#include <pressettingsset.h> // for checking if presence settings is valid
-#include <pressettingsapi.h> // for checking if presence settings is valid
-
-#include "nsmldmvoipadapter.h"
-#include "cdmvoipspsettings.h"
-#include "CSIPProfileRegistryObserver.h" // For SIP User Agent Header.
-#include "cipappphoneutils.h"            // For GetPhoneModelL, GetTerminalTypeL
-#include "cipapputilsaddressresolver.h"  // For GetWlanMacAddress
-#include "smldmvoipdebug.h"
-
-// CONSTANTS
-
-const TInt   KNSmlVoIPMaxUriLength     = 256;
-const TInt   KDefaultResultSize        = 64;
-const TInt   KNSmlVoIPMaxResultLength  = 256;
-const TInt   KNSmlDMFatMinimumFileSize = 512;
-const TUint  KTempStringlength = 200;
-_LIT8( KSpaceMark,         " " );
-_LIT8( KUserAgent,         "User-Agent" );
-_LIT8( KColonMark,         ":" );
-
-_LIT8( KNSmlDMVoIPDDFVersion,                "1.0" ); 
-_LIT8( KNSmlDMVoIPNodeName,                  "VoIP" );
-_LIT8( KNSmlDMVoIPPrefix,                    "VoIPId" );
-_LIT8( KNSmlDMVoIPDynamicNode,               "" );
-_LIT8( KNSmlDMVoIPSetID,                     "VoIPId" ); 
-_LIT8( KNSmlDMVoIPProvID,                    "ProviderName" ); 
-_LIT8( KNSmlDMVoIPName,                      "SettingsName" );
-_LIT8( KNSmlDMVoIPPreferredCodecsNode,       "PreferredCodecs" );
-
-// VoIP/x/CodecSettings
-_LIT8( KNSmlDMVoIPCodecSettingsNode,         "CodecSettings" );
-_LIT8( KNSmlDMVoIPCodecSettingsId,           "CodecSettingsId" );
-_LIT8( KNSmlDMVoIPCodecId,                   "VoIPCodecId" );
-_LIT8( KNSmlDMVoIPPreferredCodecId,          "PreferredCodecId" );
-_LIT8( KNSmlDMVoIPMediaTypeName,             "MediaTypeName" );
-_LIT8( KNSmlDMVoIPMediaSubTypeName,          "MediaSubTypeName" );
-_LIT8( KNSmlDMVoIPJitterBufferSize,          "JitterBufferSize" );
-_LIT8( KNSmlDMVoIPOctetAlign,                "OctetAlign" );
-_LIT8( KNSmlDMVoIPModeSetNode,               "ModeSet" );
-_LIT8( KNSmlDMVoIPMode,                      "Mode" );
-_LIT8( KNSmlDMVoIPModeId,                    "ModeId" );
-_LIT8( KNSmlDMVoIPModeChangePeriod,          "ModeChangePeriod" );
-_LIT8( KNSmlDMVoIPModeChangeNeighbor,        "ModeChangeNeighbor" );
-_LIT8( KNSmlDMVoIPPtime,                     "Ptime" );
-_LIT8( KNSmlDMVoIPMaxPtime,                  "MaxPtime" );
-_LIT8( KNSmlDMVoIPVAD,                       "VAD" ); 
-_LIT8( KNSmlDMVoIPAnnexB,                    "AnnexB" );
-_LIT8( KNSmlDMVoIPMaxRed,                    "MaxRed" );
-
-// VoIP/x/SettingIds node
-_LIT8( KNSmlDMVoIPSettingIdsNode,            "SettingIds" );
-_LIT8( KNSmlDMVoIPSettingId,                 "SettingId" );
-_LIT8( KNSmlDMVoIPProfileType,               "ProfileType" ); 
-_LIT8( KNSmlDMVoIPProfileId,                 "ProfileId" );
-_LIT8( KNSmlDMVoIPProfileSpecificId,         "ProfileSpecificId" );
-_LIT8( KNSmlDMVoIPProfileTypeSIP,            "SIP" );
-_LIT8( KNSmlDMVoIPProfileTypeSCCP,           "SCCP" );
-
-// VoIP/x/
-_LIT8( KNSmlDMVoIPSMPort,                    "StartMediaPort" );
-_LIT8( KNSmlDMVoIPEMPort,                    "EndMediaPort" );
-_LIT8( KNSmlDMVoIPMediaQos,                  "MediaQos" );
-_LIT8( KNSmlDMVoIPDTMFIB,                    "InbandDTMF" );
-_LIT8( KNSmlDMVoIPDTMFOB,                    "OutbandDTMF" );
-_LIT8( KNSmlDMVoIPSecureCallPref,            "SecureCallPref" );
-_LIT8( KNSmlDMVoIPRTCP,                      "RTCP" );
-_LIT8( KNSmlDMVoIPUAHTerminalType,           "UAHTerminalType" );
-_LIT8( KNSmlDMVoIPUAHWLANMAC,                "UAHWLANMAC" );
-_LIT8( KNSmlDMVoIPUAHString,                 "UAHString" );
-_LIT8( KNSmlDMVoIPProfileLockedToIAP,        "ProfileLockedToIAP" );
-_LIT8( KNSmlDMVoIPPluginUID,                 "VoIPPluginUID" );
-_LIT8( KNSmlDMVoIPAllowVoIPOverWCDMA,        "AllowVoIPOverWCDMA" );
-_LIT8( KNSmlDMVoIPVoIPDigits,                "VoIPDigits" );
-_LIT8( KNSmlDMVoIPURIDomainIgnoreRule,       "URIDomainIgnoreRule" );
-_LIT8( KNSmlDMVoIPAutoAcceptBuddyRequest,    "AutoAcceptBuddyRequest" );
-_LIT8( KNSmlDMVoIPUsedVoIPRelease,           "UsedVoIPRelease" );
-_LIT8( KNSmlDMVoIPAddUserPhone,              "AddUserPhone" );
-_LIT8( KNSmlDMVoIPProviderBookmarkUri,       "ProviderBookmarkURI" );
-_LIT8( KNSmlDMVoIPSIPConnTestUri,            "SIPConnectivityTestURI" );
-_LIT8( KNSmlDMVoIPNatFwProfileId,            "NATFWProfileId" );
-_LIT8( KNSmlDMVoIPMinSessionInterval,        "MinSessionInterval" );
-_LIT8( KNSmlDMVoIPSessionExpires,            "SessionExpires" );
-_LIT8( KNSmlDMVoIPBrandingDataUri,           "BradingDataURI" );
-_LIT8( KNSmlDMVoIPPresenceSettingsId,        "PresenceSettingsId" );
-_LIT8( KNSmlDMVoIPUsedNatProtocol,           "UsedNATProtocol" );
-_LIT8( KNSmlDMVoIPAutoEnable,                "AutoEnable" );
-_LIT8( KNSmlDMVoIPSnapProfileId,             "SNAPProfileId" );
-_LIT8( KNSmlDMVoIPEnableIm,                  "EnableIM" );
-
-// VoIP/x/VoiceMailBox
-_LIT8( KNSmlDMVoIPVmbxNode,                  "VoiceMailBox" );
-_LIT8( KNSmlDMVoIPMwiUri,                    "MWI-URI" );
-_LIT8( KNSmlDMVoIPListeningUri,              "ListeningURI" );
-_LIT8( KNSmlDMVoIPUsedIAPId,                 "UsedIAPId" );
-_LIT8( KNSmlDMVoIPReSubscribeInterval,       "ReSubscribeInterval" );
-_LIT8( KNSmlDMVoIPUsedSIPProfileId,          "UsedSIPProfileId" );
-
-// Explanations of parameters
-_LIT8( KNSmlDMVoIPNodeNameExp,               "The interior object holds all VoIP objects" );
-_LIT8( KNSmlDMVoIPDynamicNodeExp,            "Placeholder for settings ID's" );
-_LIT8( KNSmlDMVoIPSetIDExp,                  "Settings ID number" );
-_LIT8( KNSmlDMVoIPProvIDExp,                 "Provider ID" ); 
-_LIT8( KNSmlDMVoIPNameExp,                   "Name of the settings" );
-
-// CodecSettings
-_LIT8( KNSmlDMVoIPCodecOrderExp,             "Codec order" );
-_LIT8( KNSmlDMVoIPCodecSettingsNodeExp,      "CodecSettings" );
-_LIT8( KNSmlDMVoIPCodecSettingsIdExp,        "CodecSettingsID" );
-_LIT8( KNSmlDMVoIPMediaTypeNameExp,          "MediaTypeName" );
-_LIT8( KNSmlDMVoIPMediaSubTypeNameExp,       "MediaSubTypeName" );
-_LIT8( KNSmlDMVoIPJitterBufferSizeExp,       "JitterBufferSize" );
-_LIT8( KNSmlDMVoIPOctetAlignExp,             "OctetAlign" );
-_LIT8( KNSmlDMVoIPModeSetNodeExp,            "ModeSet" );
-_LIT8( KNSmlDMVoIPModeSetIdExp,              "Mode Id" );
-_LIT8( KNSmlDMVoIPModeChangePeriodExp,       "ModeChangePeriod" );
-_LIT8( KNSmlDMVoIPModeChangeNeighborExp,     "ModeChangeNeighbor" );
-_LIT8( KNSmlDMVoIPPtimeExp,                  "Ptime" );
-_LIT8( KNSmlDMVoIPMaxPtimeExp,               "MaxPtime" );
-_LIT8( KNSmlDMVoIPVADExp,                    "Voice activation detection" );
-_LIT8( KNSmlDMVoIPAnnexBExp,                 "AnnexB" );
-_LIT8( KNSmlDMVoIPMaxRedExp,                 "Max-red" );
-
-// VoIP/x/
-_LIT8( KNSmlDMVoIPSMPortExp,                 "Start media port" );
-_LIT8( KNSmlDMVoIPEMPortExp,                 "End media port" );
-_LIT8( KNSmlDMVoIPMediaQosExp,               "Media QOS" );
-_LIT8( KNSmlDMVoIPDTMFIBExp,                 "DTMF in-band" );
-_LIT8( KNSmlDMVoIPDTMFOBExp,                 "DTMF out-band" );
-_LIT8( KNSmlDMVoIPSecureCallPrefExp,         "Secure call preference");
-_LIT8( KNSmlDMVoIPRTCPExp,                   "Real-Time Control Protocol reporting" );
-_LIT8( KNSmlDMVoIPUAHTerminalTypeExp,        "SIP VoIP User Agent header: terminal type display" );
-_LIT8( KNSmlDMVoIPUAHWLANMACExp,             "SIP VoIP User Agent header: WLAN MAC address display " );
-_LIT8( KNSmlDMVoIPUAHStringExp,              "SIP VoIP User Agent header: free string" );
-_LIT8( KNSmlDMVoIPProfileLockedToIAPExp,     "Profile locked to IAP" );
-_LIT8( KNSmlDMVoIPPluginUIDExp,              "VoIP plugin UID" );
-_LIT8( KNSmlDMVoIPAllowVoIPOverWCDMAExp,     "Allow VoIP over WCDMA" );
-_LIT8( KNSmlDMVoIPVoIPDigitsExp,             "Number of meaningful VoIP digits" );
-_LIT8( KNSmlDMVoIPURIDomainIgnoreRuleExp,    "Domain part of URI ignore rule" );
-_LIT8( KNSmlDMVoIPAutoAcceptBuddyRequestExp, "Auto-accept buddy request" );
-_LIT8( KNSmlDMVoIPUsedVoIPReleaseExp,        "Used VoIP release" );
-_LIT8( KNSmlDMVoIPAddUserPhoneExp,           "Add user=phone to all numbers" );
-_LIT8( KNSmlDMVoIPProviderBookmarkUriExp,    "Provider bookmark URI" );
-_LIT8( KNSmlDMVoIPSIPConnTestUriExp,         "SIP connectivity test URI" );
-_LIT8( KNSmlDMVoIPNatFwProfileIdExp,         "NATFW profile ID" );
-_LIT8( KNSmlDMVoIPMinSessionIntervalExp,     "Minimum value for session interval" );
-_LIT8( KNSmlDMVoIPSessionExpiresExp,         "Session interval for SIP session" );
-_LIT8( KNSmlDMVoIPBrandingDataUriExp,        "Brading data URI" );
-_LIT8( KNSmlDMVoIPPresenceSettingsIdExp,     "Presence settings ID" );
-_LIT8( KNSmlDMVoIPUsedNatProtocolExp,        "Used NAT Protocol" );
-_LIT8( KNSmlDMVoIPAutoEnableExp,             "Auto enable the service" );
-_LIT8( KNSmlDMVoIPSnapProfileIdExp,          "SNAP profile ID" );
-_LIT8( KNSmlDMVoIPEnableImExp,               "Enable IM" );
-
-// VoIP/x/VoiceMailBox
-_LIT8( KNSmlDMVoIPVmbxNodeExp,               "VoiceMailBox node" );
-_LIT8( KNSmlDMVoIPMwiUriExp,                 "MWI-URI" );
-_LIT8( KNSmlDMVoIPListeningUriExp,           "Listening-URI" );
-_LIT8( KNSmlDMVoIPUsedIAPIdExp,              "Used IAP ID" );
-_LIT8( KNSmlDMVoIPReSubscribeIntervalExp,    "Re-rubscribe interval" );
-_LIT8( KNSmlDMVoIPUsedSIPProfileIdExp,       "Used SIP profile ID" );
-
-// VoIP/x/SettingIds node
-_LIT8( KNSmlDMVoIPProfileTypeExp,            "ProfileType" ); 
-_LIT8( KNSmlDMVoIPProfileIdExp,              "ProfileId" );
-_LIT8( KNSmlDMVoIPProfileSpecificExp,        "ProfileSpecificId" );
-
-// Other
-_LIT8( KNSmlDMVoIPValueTrue,                 "True" );
-_LIT8( KNSmlDMVoIPValueFalse,                "False" );
-_LIT8( KNSmlDMVoIPValueNotSet,               "NotSet" );
-_LIT8( KNSmlDefDMSIP,                        "SIP" );
-_LIT8( KNSmlDefDMSCCP,                       "SCCP/SCCPAcc" );
-_LIT8( KNSmlDMVoIPTextPlain,                 "text/plain" );
-_LIT8( KNSmlDMVoIPSeparator,                 "/" );
-_LIT8( KNSmlVoIPUriDotSlash,                 "./");
-_LIT( KOpenParenthesis,                      "(" );
-_LIT( KClosedParenthesis,                    ")" );
-_LIT8( KDefaultSettingsName,                 "DMAdapterIns" );
-_LIT8( KNSmlDMSIPSipID,                      "SIPId" );
-_LIT8( KNSmlDMSCCPSccpID,                    "SCCPId" );
-_LIT8( KNSmlDMNATFWDomain,                   "NATFW/DomainSpecific" );
-_LIT8( KNSmlDMPresence,                      "OMA_PRESENCE" );
-_LIT8( KNSmlDMSnapUriPrefix,                 "BearerManagementSNAP" );
-const TInt KSixSegs   = 6;
-const TInt KFiveSegs  = 5;
-const TInt KFourSegs  = 4;
-const TInt KThreeSegs = 3;
-const TInt KTwoSegs   = 2;
-
-const TUint8 KDMVoIPSeparator = '/';
-
-// VoiceMailBox related constants.
-const TInt KDefaultReSubscribe = 600;
-// IM related constants.
-const TUint32 KIMSubServicePluginId = 0x1027545A; // KSIPConnectivityPluginImplUid
-const TUint32 KIMLaunchUid          = 0x200255D0;
-const TInt    KIMSettingsId         = 1;
-// Default IM message tone
-_LIT( KDefaultTone,       "Message 2.aac" );
-
-// Bearer related constants
-const TUint32 KBearerNotSpecified = 0;
-const TUint32 KBearerWlanOnly = 1;
-const TUint32 KBearerCellularOnly = 2;
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::ConstructL
-// Symbian 2nd phase constructor can leave.
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVoIPAdapter::ConstructL()
-    {
-    DBG_PRINT( "CNSmlDmVoIPAdapter::ConstructL(): begin" );
-    // Check VoIP support from feature manager
-    FeatureManager::InitializeLibL();
-    TBool support = FeatureManager::FeatureSupported( KFeatureIdCommonVoip );
-    FeatureManager::UnInitializeLib();
-
-    if ( !support )
-        {
-        DBG_PRINT( "CNSmlDmVoIPAdapter::ConstructL(): no support" );        
-        User::Leave( KErrNotSupported );
-        }
-    DBG_PRINT( "CNSmlDmVoIPAdapter::ConstructL(): end" );
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter* CNSmlDmVoIPAdapter::NewL
-// Two-phased constructor.
-// ---------------------------------------------------------------------------
-//
-CNSmlDmVoIPAdapter* CNSmlDmVoIPAdapter::NewL(
-    MSmlDmCallback* aDmCallback )
-    {
-    DBG_PRINT("CNSmlDmVoIPAdapter::NewL(): begin");
-    CNSmlDmVoIPAdapter* self = new (ELeave) CNSmlDmVoIPAdapter( aDmCallback );
-    self->ConstructL();
-    self->iDmCallback = aDmCallback;
-    DBG_PRINT("CNSmlDmVoIPAdapter::NewL(): end");
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::~CNSmlDmVoIPAdapter
-// ---------------------------------------------------------------------------
-//
-CNSmlDmVoIPAdapter::~CNSmlDmVoIPAdapter()
-    {
-    DBG_PRINT("CNSmlDmVoIPAdapter::~CNSmlDmVoIPAdapter(): begin");
-
-    iCodecEntries.ResetAndDestroy();
-    iCodecEntries.Close();
-
-    iProfileEntries.ResetAndDestroy();
-    iProfileEntries.Close();
-
-    if ( iCRCSEAudioCodec )
-        {
-        delete iCRCSEAudioCodec;
-        }
-
-    if ( iCRCSEProfile )
-        {
-        delete iCRCSEProfile; 
-        }
-    delete iTempProfileIdObject;
-    iProfileModifs.Close();
-    iCodecModifs.Close();
-
-    iSPSettings.ResetAndDestroy();
-    iSPSettings.Close();
-
-    DBG_PRINT("CNSmlDmVoIPAdapter::~CNSmlDmVoIPAdapter(): end");
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::LoadProfilesL
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVoIPAdapter::LoadProfilesL()
-    {
-    DBG_PRINT("CNSmlDmVoIPAdapter::LoadProfilesL(): begin");
-
-    if ( !iCRCSEProfile )
-        {
-        iCRCSEProfile = CRCSEProfileRegistry::NewL();
-        }
-
-    if ( !iCRCSEAudioCodec )
-        {
-        iCRCSEAudioCodec = CRCSEAudioCodecRegistry::NewL();
-        }
-
-    // Load profiles to pointerarray
-    RArray<TUint32> allIds;
-    iCRCSEProfile->GetAllIdsL( allIds ); 
-    TInt idCount = allIds.Count();
-    for ( TInt counter = 0; counter < idCount; counter++ )
-        {
-        CRCSEProfileEntry* profile = CRCSEProfileEntry::NewLC();
-        iCRCSEProfile->FindL( allIds[counter], *profile );
-        // Ownership change to iProfileEntries:
-        iProfileEntries.AppendL( profile );
-        CleanupStack::Pop( profile );
-        }
-
-    allIds.Reset();
-
-    // Load audio codecs information to pointerarray
-    iCRCSEAudioCodec->GetAllCodecIdsL( allIds );
-    idCount = allIds.Count();
-    for ( TInt counter = 0; counter < idCount; counter++ )
-        {
-        CRCSEAudioCodecEntry* codec = CRCSEAudioCodecEntry::NewLC();
-        iCRCSEAudioCodec->FindL( allIds[counter], *codec );
-        // Ownership change to iCodecEntries:
-        iCodecEntries.AppendL( codec );
-        CleanupStack::Pop( codec );
-        }
-    allIds.Close();
-    DBG_PRINT("CNSmlDmVoIPAdapter::LoadProfilesL(): end");
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::CNSmlDmVoIPAdapter
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// ---------------------------------------------------------------------------
-//
-CNSmlDmVoIPAdapter::CNSmlDmVoIPAdapter( TAny* aEcomArguments ):
-    CSmlDmAdapter( aEcomArguments )
-    {
-    DBG_PRINT("CNSmlDmVoIPAdapter::CNSmlDmVoIPAdapter(aEcomArguments): begin");
-    DBG_PRINT("CNSmlDmVoIPAdapter::CNSmlDmVoIPAdapter(aEcomArguments): end");   
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::DDFVersionL
-// Inserts DDF version of the adapter to aDDFVersion
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVoIPAdapter::DDFVersionL( CBufBase& aDDFVersion )
-    {
-    DBG_PRINT("CNSmlDmVoIPAdapter::DDFVersionL(TDes& aDDFVersion): begin");
-    aDDFVersion.InsertL( 0, KNSmlDMVoIPDDFVersion );
-    DBG_PRINT("CNSmlDmVoIPAdapter::DDFVersionL(TDes& aDDFVersion): end");
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::DDFStructureL
-// Builds the DDF structure of adapter
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVoIPAdapter::DDFStructureL( MSmlDmDDFObject& aDDF )
-    {
-    DBG_PRINT("CNSmlDmVoIPAdapter::DDFStructureL(): begin");
-
-    TSmlDmAccessTypes accessTypesGet;
-    accessTypesGet.SetGet();
-
-    TSmlDmAccessTypes accessTypesGetAdd;
-    accessTypesGetAdd.SetGet();
-    accessTypesGetAdd.SetAdd();
-
-    TSmlDmAccessTypes accessTypesGetReplaceAdd;
-    accessTypesGetReplaceAdd.SetGet();
-    accessTypesGetReplaceAdd.SetReplace();
-    accessTypesGetReplaceAdd.SetAdd();
-
-    TSmlDmAccessTypes accessTypesAll;
-    accessTypesAll.SetGet();
-    accessTypesAll.SetDelete();
-    accessTypesAll.SetAdd();
-    accessTypesAll.SetReplace();
-
-    // VoIP
-    MSmlDmDDFObject& voip = aDDF.AddChildObjectL( KNSmlDMVoIPNodeName );
-    voip.SetAccessTypesL( accessTypesGetAdd );
-    voip.SetOccurenceL( MSmlDmDDFObject::EOne );
-    voip.SetScopeL( MSmlDmDDFObject::EPermanent );
-    voip.SetDFFormatL( MSmlDmDDFObject::ENode );
-    voip.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    voip.SetDescriptionL( KNSmlDMVoIPNodeNameExp );
-
-    // dynamic settings ID node
-    MSmlDmDDFObject& idNode = voip.AddChildObjectGroupL();
-    idNode.SetAccessTypesL( accessTypesAll );
-    idNode.SetOccurenceL( MSmlDmDDFObject::EZeroOrMore );
-    idNode.SetScopeL( MSmlDmDDFObject::EDynamic );
-    idNode.SetDFFormatL( MSmlDmDDFObject::ENode );
-    idNode.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    idNode.SetDescriptionL( KNSmlDMVoIPDynamicNode );
-
-    // VoIPId
-    MSmlDmDDFObject& setID = idNode.AddChildObjectL( 
-        KNSmlDMVoIPSetID );
-    setID.SetAccessTypesL( accessTypesGet );
-    setID.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    setID.SetScopeL( MSmlDmDDFObject::EDynamic );
-    setID.SetDFFormatL( MSmlDmDDFObject::EInt );
-    setID.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    setID.SetDescriptionL( KNSmlDMVoIPSetIDExp );
-
-    // ProviderName
-    MSmlDmDDFObject& provID = idNode.AddChildObjectL( 
-        KNSmlDMVoIPProvID );
-    provID.SetAccessTypesL( accessTypesGetReplaceAdd );
-    provID.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    provID.SetScopeL( MSmlDmDDFObject::EDynamic );
-    provID.SetDFFormatL( MSmlDmDDFObject::EChr );
-    provID.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    provID.SetDescriptionL( KNSmlDMVoIPProvIDExp );
-
-    // SettingsName
-    MSmlDmDDFObject& name = idNode.AddChildObjectL( 
-        KNSmlDMVoIPName );
-    name.SetAccessTypesL( accessTypesGetReplaceAdd );
-    name.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    name.SetScopeL( MSmlDmDDFObject::EDynamic );
-    name.SetDFFormatL( MSmlDmDDFObject::EChr );
-    name.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    name.SetDescriptionL( KNSmlDMVoIPNameExp );
-
-    // PreferredCodecs node
-    MSmlDmDDFObject& codecOrder = idNode.AddChildObjectL( 
-        KNSmlDMVoIPPreferredCodecsNode );
-    codecOrder.SetAccessTypesL( accessTypesGet );
-    codecOrder.SetOccurenceL( MSmlDmDDFObject::EOne );
-    codecOrder.SetScopeL( MSmlDmDDFObject::EDynamic );
-    codecOrder.SetDFFormatL( MSmlDmDDFObject::ENode );
-    codecOrder.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    codecOrder.SetDescriptionL( KNSmlDMVoIPCodecOrderExp );
-
-    // PreferredCodecs dynamic
-    MSmlDmDDFObject& codecDyn = codecOrder.AddChildObjectGroupL();
-    codecDyn.SetAccessTypesL( accessTypesGet );
-    codecDyn.SetOccurenceL( MSmlDmDDFObject::EZeroOrMore );
-    codecDyn.SetScopeL( MSmlDmDDFObject::EDynamic );
-    codecDyn.SetDFFormatL( MSmlDmDDFObject::ENode );
-    codecDyn.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    codecDyn.SetDescriptionL( KNSmlDMVoIPCodecOrderExp );
-
-    // PreferredCodecs/PreferredCodecId
-    MSmlDmDDFObject& preferredCodecID = codecDyn.AddChildObjectL( 
-        KNSmlDMVoIPPreferredCodecId );
-    preferredCodecID.SetAccessTypesL( accessTypesGetReplaceAdd );
-    preferredCodecID.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    preferredCodecID.SetScopeL( MSmlDmDDFObject::EDynamic );
-    preferredCodecID.SetDFFormatL( MSmlDmDDFObject::EInt );
-    preferredCodecID.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    preferredCodecID.SetDescriptionL( KNSmlDMVoIPCodecSettingsIdExp );
-
-    // CodecSettings node
-    MSmlDmDDFObject& codecNode = idNode.AddChildObjectL( 
-        KNSmlDMVoIPCodecSettingsNode );
-    codecNode.SetAccessTypesL( accessTypesGetAdd );
-    codecNode.SetOccurenceL( MSmlDmDDFObject::EOne );
-    codecNode.SetScopeL( MSmlDmDDFObject::EDynamic );
-    codecNode.SetDFFormatL( MSmlDmDDFObject::ENode );
-    codecNode.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    codecNode.SetDescriptionL( KNSmlDMVoIPCodecSettingsNodeExp );
-
-    // CodecSettings dynamic
-    MSmlDmDDFObject& codecSetDyn = codecNode.AddChildObjectGroupL();
-    codecSetDyn.SetAccessTypesL( accessTypesAll );
-    codecSetDyn.SetOccurenceL( MSmlDmDDFObject::EZeroOrMore );
-    codecSetDyn.SetScopeL( MSmlDmDDFObject::EDynamic );
-    codecSetDyn.SetDFFormatL( MSmlDmDDFObject::ENode );
-    codecSetDyn.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    codecSetDyn.SetDescriptionL( KNSmlDMVoIPDynamicNodeExp );
-
-    // CodecSettings/VoIPCodecId
-    MSmlDmDDFObject& codecsetID = codecSetDyn.AddChildObjectL( 
-        KNSmlDMVoIPCodecId );
-    codecsetID.SetAccessTypesL( accessTypesGet );
-    codecsetID.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    codecsetID.SetScopeL( MSmlDmDDFObject::EDynamic );
-    codecsetID.SetDFFormatL( MSmlDmDDFObject::EInt );
-    codecsetID.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    codecsetID.SetDescriptionL( KNSmlDMVoIPCodecSettingsIdExp );
-
-    // CodecSettings/MediaTypeName
-    MSmlDmDDFObject& mediaTypeName = codecSetDyn.AddChildObjectL( 
-        KNSmlDMVoIPMediaTypeName );
-    mediaTypeName.SetAccessTypesL( accessTypesGetReplaceAdd );
-    mediaTypeName.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    mediaTypeName.SetScopeL( MSmlDmDDFObject::EDynamic );
-    mediaTypeName.SetDFFormatL( MSmlDmDDFObject::EChr );
-    mediaTypeName.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    mediaTypeName.SetDescriptionL( KNSmlDMVoIPMediaTypeNameExp );
-
-    // CodecSettings/MediaSubTypeName
-    MSmlDmDDFObject& mediaSubTypeName = codecSetDyn.AddChildObjectL( 
-        KNSmlDMVoIPMediaSubTypeName );
-    mediaSubTypeName.SetAccessTypesL( accessTypesGetReplaceAdd );
-    mediaSubTypeName.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    mediaSubTypeName.SetScopeL( MSmlDmDDFObject::EDynamic );
-    mediaSubTypeName.SetDFFormatL( MSmlDmDDFObject::EChr );
-    mediaSubTypeName.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    mediaSubTypeName.SetDescriptionL( KNSmlDMVoIPMediaSubTypeNameExp );
-
-     // CodecSettings/JitterBufferSize
-    MSmlDmDDFObject& jitterBufferSize = codecSetDyn.AddChildObjectL( 
-        KNSmlDMVoIPJitterBufferSize );
-    jitterBufferSize.SetAccessTypesL( accessTypesGetReplaceAdd );
-    jitterBufferSize.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    jitterBufferSize.SetScopeL( MSmlDmDDFObject::EDynamic );
-    jitterBufferSize.SetDFFormatL( MSmlDmDDFObject::EInt );
-    jitterBufferSize.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    jitterBufferSize.SetDescriptionL( KNSmlDMVoIPJitterBufferSizeExp );
-
-     // CodecSettings/OctetAlign
-    MSmlDmDDFObject& octetAlign = codecSetDyn.AddChildObjectL( 
-        KNSmlDMVoIPOctetAlign );
-    octetAlign.SetAccessTypesL( accessTypesGetReplaceAdd );
-    octetAlign.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    octetAlign.SetScopeL( MSmlDmDDFObject::EDynamic );
-    octetAlign.SetDFFormatL( MSmlDmDDFObject::EBool );
-    octetAlign.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    octetAlign.SetDescriptionL( KNSmlDMVoIPOctetAlignExp );
-
-    // CodecSettings/ModeSet node
-    MSmlDmDDFObject& modeSetNode = codecSetDyn.AddChildObjectL( 
-        KNSmlDMVoIPModeSetNode );
-    modeSetNode.SetAccessTypesL( accessTypesGetAdd );
-    modeSetNode.SetOccurenceL( MSmlDmDDFObject::EOne );
-    modeSetNode.SetScopeL( MSmlDmDDFObject::EDynamic );
-    modeSetNode.SetDFFormatL( MSmlDmDDFObject::ENode );
-    modeSetNode.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    modeSetNode.SetDescriptionL( KNSmlDMVoIPModeSetNodeExp );
-
-    // ModeSet dynamic
-    MSmlDmDDFObject& modeSetDyn = modeSetNode.AddChildObjectGroupL();
-    modeSetDyn.SetAccessTypesL( accessTypesAll );
-    modeSetDyn.SetOccurenceL( MSmlDmDDFObject::EZeroOrMore );
-    modeSetDyn.SetScopeL( MSmlDmDDFObject::EDynamic );
-    modeSetDyn.SetDFFormatL( MSmlDmDDFObject::ENode );
-    modeSetDyn.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    modeSetDyn.SetDescriptionL( KNSmlDMVoIPModeSetIdExp );
-
-     // ModeSet/x/Mode
-    MSmlDmDDFObject& modeSetId = modeSetDyn.AddChildObjectL( 
-        KNSmlDMVoIPMode );
-    modeSetId.SetAccessTypesL( accessTypesGetReplaceAdd );
-    modeSetId.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    modeSetId.SetScopeL( MSmlDmDDFObject::EDynamic );
-    modeSetId.SetDFFormatL( MSmlDmDDFObject::EInt );  // int
-    modeSetId.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    modeSetId.SetDescriptionL( KNSmlDMVoIPModeChangePeriodExp );
-
-     // CodecSettings/ModeChangePeriod
-    MSmlDmDDFObject& modeChangePer = codecSetDyn.AddChildObjectL( 
-        KNSmlDMVoIPModeChangePeriod );
-    modeChangePer.SetAccessTypesL( accessTypesGetReplaceAdd );
-    modeChangePer.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    modeChangePer.SetScopeL( MSmlDmDDFObject::EDynamic );
-    modeChangePer.SetDFFormatL( MSmlDmDDFObject::EInt );
-    modeChangePer.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    modeChangePer.SetDescriptionL( KNSmlDMVoIPModeChangePeriodExp );
-
-     // CodecSettings/ModeChangeNeighbor
-    MSmlDmDDFObject& modeChange = codecSetDyn.AddChildObjectL( 
-        KNSmlDMVoIPModeChangeNeighbor );
-    modeChange.SetAccessTypesL( accessTypesGetReplaceAdd );
-    modeChange.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    modeChange.SetScopeL( MSmlDmDDFObject::EDynamic );
-    modeChange.SetDFFormatL( MSmlDmDDFObject::EBool );
-    modeChange.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    modeChange.SetDescriptionL( KNSmlDMVoIPModeChangeNeighborExp );
-
-     // CodecSettings/Ptime
-    MSmlDmDDFObject& ptime = codecSetDyn.AddChildObjectL( 
-        KNSmlDMVoIPPtime );
-    ptime.SetAccessTypesL( accessTypesGetReplaceAdd );
-    ptime.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    ptime.SetScopeL( MSmlDmDDFObject::EDynamic );
-    ptime.SetDFFormatL( MSmlDmDDFObject::EInt );  // int
-    ptime.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    ptime.SetDescriptionL( KNSmlDMVoIPPtimeExp );
-
-     // CodecSettings/MaxPtime
-    MSmlDmDDFObject& maxptime = codecSetDyn.AddChildObjectL( 
-        KNSmlDMVoIPMaxPtime );
-    maxptime.SetAccessTypesL( accessTypesGetReplaceAdd );
-    maxptime.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    maxptime.SetScopeL( MSmlDmDDFObject::EDynamic );
-    maxptime.SetDFFormatL( MSmlDmDDFObject::EInt );
-    maxptime.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    maxptime.SetDescriptionL( KNSmlDMVoIPMaxPtimeExp );
-
-     // CodecSettings/VAD
-    MSmlDmDDFObject& vad = codecSetDyn.AddChildObjectL( 
-        KNSmlDMVoIPVAD );
-    vad.SetAccessTypesL( accessTypesGetReplaceAdd );
-    vad.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    vad.SetScopeL( MSmlDmDDFObject::EDynamic );
-    vad.SetDFFormatL( MSmlDmDDFObject::EBool ); // bool
-    vad.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    vad.SetDescriptionL( KNSmlDMVoIPVADExp );
-
-    // CodecSettings/AnnexB
-    MSmlDmDDFObject& annexB = codecSetDyn.AddChildObjectL( 
-        KNSmlDMVoIPAnnexB );
-    annexB.SetAccessTypesL( accessTypesGetReplaceAdd );
-    annexB.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    annexB.SetScopeL( MSmlDmDDFObject::EDynamic );
-    annexB.SetDFFormatL( MSmlDmDDFObject::EBool );  // bool
-    annexB.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    annexB.SetDescriptionL( KNSmlDMVoIPAnnexBExp ); 
-
-    // CodecSettings/MaxRed
-    MSmlDmDDFObject& maxRed = codecSetDyn.AddChildObjectL(
-        KNSmlDMVoIPMaxRed );
-    maxRed.SetAccessTypesL( accessTypesGetReplaceAdd );
-    maxRed.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    maxRed.SetScopeL( MSmlDmDDFObject::EDynamic );
-    maxRed.SetDFFormatL( MSmlDmDDFObject::EInt );
-    maxRed.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    maxRed.SetDescriptionL( KNSmlDMVoIPMaxRedExp );
-
-    // SettingsIds node
-    MSmlDmDDFObject& settingIds = idNode.AddChildObjectL( 
-        KNSmlDMVoIPSettingIdsNode );
-    settingIds.SetAccessTypesL( accessTypesGetAdd );
-    settingIds.SetOccurenceL( MSmlDmDDFObject::EOne );
-    settingIds.SetScopeL( MSmlDmDDFObject::EDynamic );
-    settingIds.SetDFFormatL( MSmlDmDDFObject::ENode );
-    settingIds.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    settingIds.SetDescriptionL( KNSmlDMVoIPDynamicNode );
-
-    // settingsIds dynamic
-    MSmlDmDDFObject& settingIdsDynID = settingIds.AddChildObjectGroupL();
-    settingIdsDynID.SetAccessTypesL( accessTypesAll );
-    settingIdsDynID.SetOccurenceL( MSmlDmDDFObject::EZeroOrMore );
-    settingIdsDynID.SetScopeL( MSmlDmDDFObject::EDynamic );
-    settingIdsDynID.SetDFFormatL( MSmlDmDDFObject::ENode );
-    settingIdsDynID.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    settingIdsDynID.SetDescriptionL( KNSmlDMVoIPDynamicNodeExp );
-
-    // SettingIds/ProfileType
-    MSmlDmDDFObject& profileType = settingIdsDynID.AddChildObjectL( 
-        KNSmlDMVoIPProfileType );
-    profileType.SetAccessTypesL( accessTypesGetReplaceAdd );
-    profileType.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    profileType.SetScopeL( MSmlDmDDFObject::EDynamic );
-    profileType.SetDFFormatL( MSmlDmDDFObject::EChr );
-    profileType.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    profileType.SetDescriptionL( KNSmlDMVoIPProfileTypeExp ); 
-
-    // SettingIds/ProfileId
-    MSmlDmDDFObject& profileId = settingIdsDynID.AddChildObjectL( 
-        KNSmlDMVoIPProfileId );
-    profileId.SetAccessTypesL( accessTypesGetReplaceAdd );
-    profileId.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    profileId.SetScopeL( MSmlDmDDFObject::EDynamic );
-    profileId.SetDFFormatL( MSmlDmDDFObject::EChr );
-    profileId.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    profileId.SetDescriptionL( KNSmlDMVoIPProfileIdExp );
-
-    // SettingIds/ProfileSpecificId
-    MSmlDmDDFObject& profileSpecific = settingIdsDynID.AddChildObjectL( 
-        KNSmlDMVoIPProfileSpecificId );
-    profileSpecific.SetAccessTypesL( accessTypesGetReplaceAdd );
-    profileSpecific.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    profileSpecific.SetScopeL( MSmlDmDDFObject::EDynamic );
-    profileSpecific.SetDFFormatL( MSmlDmDDFObject::EInt );
-    profileSpecific.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    profileSpecific.SetDescriptionL( KNSmlDMVoIPProfileSpecificExp );
-
-    // VoIP/<x>/VoiceMailBox
-    MSmlDmDDFObject& vmbx = idNode.AddChildObjectL( 
-        KNSmlDMVoIPVmbxNode );
-    vmbx.SetAccessTypesL( accessTypesGetAdd );
-    vmbx.SetOccurenceL( MSmlDmDDFObject::EOne );
-    vmbx.SetScopeL( MSmlDmDDFObject::EDynamic );
-    vmbx.SetDFFormatL( MSmlDmDDFObject::ENode );
-    vmbx.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    vmbx.SetDescriptionL( KNSmlDMVoIPVmbxNodeExp );
-
-    // VoIP/<x>/VoiceMailBox/MWI-URI
-    MSmlDmDDFObject& mwiUri = vmbx.AddChildObjectL( 
-        KNSmlDMVoIPMwiUri );
-    mwiUri.SetAccessTypesL( accessTypesGetReplaceAdd );
-    mwiUri.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    mwiUri.SetScopeL( MSmlDmDDFObject::EDynamic );
-    mwiUri.SetDFFormatL( MSmlDmDDFObject::EChr );
-    mwiUri.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    mwiUri.SetDescriptionL( KNSmlDMVoIPMwiUriExp );
-
-    // VoIP/<x>/VoiceMailBox/ListeningURI
-    MSmlDmDDFObject& listenUri = vmbx.AddChildObjectL( 
-        KNSmlDMVoIPListeningUri );
-    listenUri.SetAccessTypesL( accessTypesGetReplaceAdd );
-    listenUri.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    listenUri.SetScopeL( MSmlDmDDFObject::EDynamic );
-    listenUri.SetDFFormatL( MSmlDmDDFObject::EChr );
-    listenUri.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    listenUri.SetDescriptionL( KNSmlDMVoIPListeningUriExp );
-
-    // VoIP/<x>/VoiceMailBox/UsedIAPId
-    MSmlDmDDFObject& usedIapId = vmbx.AddChildObjectL( 
-        KNSmlDMVoIPUsedIAPId );
-    usedIapId.SetAccessTypesL( accessTypesGetReplaceAdd );
-    usedIapId.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    usedIapId.SetScopeL( MSmlDmDDFObject::EDynamic );
-    usedIapId.SetDFFormatL( MSmlDmDDFObject::EChr );
-    usedIapId.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    usedIapId.SetDescriptionL( KNSmlDMVoIPUsedIAPIdExp );
-
-    // VoIP/<x>/VoiceMailBox/ReSubscribeInterval
-    MSmlDmDDFObject& reSubscribe = vmbx.AddChildObjectL( 
-        KNSmlDMVoIPReSubscribeInterval );
-    reSubscribe.SetAccessTypesL( accessTypesGetReplaceAdd );
-    reSubscribe.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    reSubscribe.SetScopeL( MSmlDmDDFObject::EDynamic );
-    reSubscribe.SetDFFormatL( MSmlDmDDFObject::EInt );
-    reSubscribe.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    reSubscribe.SetDescriptionL( KNSmlDMVoIPReSubscribeIntervalExp );
-
-    // VoIP/<x>/VoiceMailBox/UsedSIPProfileId
-    MSmlDmDDFObject& sipId = vmbx.AddChildObjectL( 
-        KNSmlDMVoIPUsedSIPProfileId );
-    sipId.SetAccessTypesL( accessTypesGetReplaceAdd );
-    sipId.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    sipId.SetScopeL( MSmlDmDDFObject::EDynamic );
-    sipId.SetDFFormatL( MSmlDmDDFObject::EChr );
-    sipId.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    sipId.SetDescriptionL( KNSmlDMVoIPUsedSIPProfileIdExp );
-
-    // StartMediaPort
-    MSmlDmDDFObject& smport = idNode.AddChildObjectL( 
-        KNSmlDMVoIPSMPort );
-    smport.SetAccessTypesL( accessTypesGetReplaceAdd );
-    smport.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    smport.SetScopeL( MSmlDmDDFObject::EDynamic );
-    smport.SetDFFormatL( MSmlDmDDFObject::EInt );
-    smport.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    smport.SetDescriptionL( KNSmlDMVoIPSMPortExp );
-
-    // EndMediaPort
-    MSmlDmDDFObject& emport = idNode.AddChildObjectL( 
-        KNSmlDMVoIPEMPort );
-    emport.SetAccessTypesL( accessTypesGetReplaceAdd );
-    emport.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    emport.SetScopeL( MSmlDmDDFObject::EDynamic );
-    emport.SetDFFormatL( MSmlDmDDFObject::EInt );
-    emport.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    emport.SetDescriptionL( KNSmlDMVoIPEMPortExp );
-
-    // MediaQos
-    MSmlDmDDFObject& mediaQos = idNode.AddChildObjectL( 
-        KNSmlDMVoIPMediaQos );
-    mediaQos.SetAccessTypesL( accessTypesGetReplaceAdd );
-    mediaQos.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    mediaQos.SetScopeL( MSmlDmDDFObject::EDynamic );
-    mediaQos.SetDFFormatL( MSmlDmDDFObject::EInt );
-    mediaQos.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    mediaQos.SetDescriptionL( KNSmlDMVoIPMediaQosExp );
-
-    // DTMFIB
-    MSmlDmDDFObject& dtmfbib = idNode.AddChildObjectL( 
-        KNSmlDMVoIPDTMFIB );
-    dtmfbib.SetAccessTypesL( accessTypesGetReplaceAdd );
-    dtmfbib.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    dtmfbib.SetScopeL( MSmlDmDDFObject::EDynamic );
-    dtmfbib.SetDFFormatL( MSmlDmDDFObject::EBool );
-    dtmfbib.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    dtmfbib.SetDescriptionL( KNSmlDMVoIPDTMFIBExp );
-
-    // DTMFOB
-    MSmlDmDDFObject& dtmfob = idNode.AddChildObjectL( 
-        KNSmlDMVoIPDTMFOB );
-    dtmfob.SetAccessTypesL( accessTypesGetReplaceAdd );
-    dtmfob.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    dtmfob.SetScopeL( MSmlDmDDFObject::EDynamic );
-    dtmfob.SetDFFormatL( MSmlDmDDFObject::EBool );
-    dtmfob.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    dtmfob.SetDescriptionL( KNSmlDMVoIPDTMFOBExp );
-
-    // SecureCallPref
-    MSmlDmDDFObject& secureCallPref = idNode.AddChildObjectL(
-        KNSmlDMVoIPSecureCallPref );
-    secureCallPref.SetAccessTypesL( accessTypesGetReplaceAdd );
-    secureCallPref.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    secureCallPref.SetScopeL( MSmlDmDDFObject::EDynamic );
-    secureCallPref.SetDFFormatL( MSmlDmDDFObject::EInt );
-    secureCallPref.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    secureCallPref.SetDescriptionL( KNSmlDMVoIPSecureCallPrefExp );
-
-    // RTCP
-    MSmlDmDDFObject& rtcp = idNode.AddChildObjectL(
-        KNSmlDMVoIPRTCP );
-    rtcp.SetAccessTypesL( accessTypesGetReplaceAdd );
-    rtcp.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    rtcp.SetScopeL( MSmlDmDDFObject::EDynamic );
-    rtcp.SetDFFormatL( MSmlDmDDFObject::EInt );
-    rtcp.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    rtcp.SetDescriptionL( KNSmlDMVoIPRTCPExp );
-
-    // UAHTerminalType
-    MSmlDmDDFObject& uahTerminalType = idNode.AddChildObjectL(
-        KNSmlDMVoIPUAHTerminalType );
-    uahTerminalType.SetAccessTypesL( accessTypesGetReplaceAdd );
-    uahTerminalType.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    uahTerminalType.SetScopeL( MSmlDmDDFObject::EDynamic );
-    uahTerminalType.SetDFFormatL( MSmlDmDDFObject::EInt );
-    uahTerminalType.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    uahTerminalType.SetDescriptionL( KNSmlDMVoIPUAHTerminalTypeExp );
-
-    // UAHWLANMAC
-    MSmlDmDDFObject& uahWLANMAC = idNode.AddChildObjectL(
-        KNSmlDMVoIPUAHWLANMAC );
-    uahWLANMAC.SetAccessTypesL( accessTypesGetReplaceAdd );
-    uahWLANMAC.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    uahWLANMAC.SetScopeL( MSmlDmDDFObject::EDynamic );
-    uahWLANMAC.SetDFFormatL( MSmlDmDDFObject::EInt );
-    uahWLANMAC.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    uahWLANMAC.SetDescriptionL( KNSmlDMVoIPUAHWLANMACExp );
-
-    // UAHString
-    MSmlDmDDFObject& uahString = idNode.AddChildObjectL(
-        KNSmlDMVoIPUAHString );
-    uahString.SetAccessTypesL( accessTypesGetReplaceAdd );
-    uahString.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    uahString.SetScopeL( MSmlDmDDFObject::EDynamic );
-    uahString.SetDFFormatL( MSmlDmDDFObject::EChr );
-    uahString.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    uahString.SetDescriptionL( KNSmlDMVoIPUAHStringExp );
-
-    // ProfileLockedToIAP
-    MSmlDmDDFObject& profileLockedToIAP = idNode.AddChildObjectL(
-        KNSmlDMVoIPProfileLockedToIAP );
-    profileLockedToIAP.SetAccessTypesL( accessTypesGetReplaceAdd );
-    profileLockedToIAP.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    profileLockedToIAP.SetScopeL( MSmlDmDDFObject::EDynamic );
-    profileLockedToIAP.SetDFFormatL( MSmlDmDDFObject::EBool );
-    profileLockedToIAP.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    profileLockedToIAP.SetDescriptionL( KNSmlDMVoIPProfileLockedToIAPExp );
-
-    // VoIPPluginUID
-    MSmlDmDDFObject& voipPluginUID = idNode.AddChildObjectL(
-        KNSmlDMVoIPPluginUID );
-    voipPluginUID.SetAccessTypesL( accessTypesGetReplaceAdd );
-    voipPluginUID.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    voipPluginUID.SetScopeL( MSmlDmDDFObject::EDynamic );
-    voipPluginUID.SetDFFormatL( MSmlDmDDFObject::EInt );
-    voipPluginUID.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    voipPluginUID.SetDescriptionL( KNSmlDMVoIPPluginUIDExp );
-
-    // AllowVoIPOverWCDMA
-    MSmlDmDDFObject& voipOverWCDMA = idNode.AddChildObjectL(
-        KNSmlDMVoIPAllowVoIPOverWCDMA );
-    voipOverWCDMA.SetAccessTypesL( accessTypesGetReplaceAdd );
-    voipOverWCDMA.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    voipOverWCDMA.SetScopeL( MSmlDmDDFObject::EDynamic );
-    voipOverWCDMA.SetDFFormatL( MSmlDmDDFObject::EBool );
-    voipOverWCDMA.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    voipOverWCDMA.SetDescriptionL( KNSmlDMVoIPAllowVoIPOverWCDMAExp );
-
-    // VoIPDigits
-    MSmlDmDDFObject& voipDigits = idNode.AddChildObjectL(
-        KNSmlDMVoIPVoIPDigits );
-    voipDigits.SetAccessTypesL( accessTypesGetReplaceAdd );
-    voipDigits.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    voipDigits.SetScopeL( MSmlDmDDFObject::EDynamic );
-    voipDigits.SetDFFormatL( MSmlDmDDFObject::EInt );
-    voipDigits.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    voipDigits.SetDescriptionL( KNSmlDMVoIPVoIPDigitsExp );
-
-    // URIDomainIgnoreRule
-    MSmlDmDDFObject& uriDomainIgn = idNode.AddChildObjectL(
-        KNSmlDMVoIPURIDomainIgnoreRule );
-    uriDomainIgn.SetAccessTypesL( accessTypesGetReplaceAdd );
-    uriDomainIgn.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    uriDomainIgn.SetScopeL( MSmlDmDDFObject::EDynamic );
-    uriDomainIgn.SetDFFormatL( MSmlDmDDFObject::EInt );
-    uriDomainIgn.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    uriDomainIgn.SetDescriptionL( KNSmlDMVoIPURIDomainIgnoreRuleExp );
-
-    // AutoAcceptBuddyRequest
-    MSmlDmDDFObject& aaBuddyReq = idNode.AddChildObjectL(
-        KNSmlDMVoIPAutoAcceptBuddyRequest );
-    aaBuddyReq.SetAccessTypesL( accessTypesGetReplaceAdd );
-    aaBuddyReq.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    aaBuddyReq.SetScopeL( MSmlDmDDFObject::EDynamic );
-    aaBuddyReq.SetDFFormatL( MSmlDmDDFObject::EBool );
-    aaBuddyReq.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    aaBuddyReq.SetDescriptionL( KNSmlDMVoIPAutoAcceptBuddyRequestExp );
-
-    // UsedVoIPRelease
-    MSmlDmDDFObject& voipRel = idNode.AddChildObjectL(
-        KNSmlDMVoIPUsedVoIPRelease );
-    voipRel.SetAccessTypesL( accessTypesGet );
-    voipRel.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    voipRel.SetScopeL( MSmlDmDDFObject::EDynamic );
-    voipRel.SetDFFormatL( MSmlDmDDFObject::EChr );
-    voipRel.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    voipRel.SetDescriptionL( KNSmlDMVoIPUsedVoIPReleaseExp );
-
-    // AddUserPhone
-    MSmlDmDDFObject& addUserPhone = idNode.AddChildObjectL(
-        KNSmlDMVoIPAddUserPhone );
-    addUserPhone.SetAccessTypesL( accessTypesGetReplaceAdd );
-    addUserPhone.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    addUserPhone.SetScopeL( MSmlDmDDFObject::EDynamic );
-    addUserPhone.SetDFFormatL( MSmlDmDDFObject::EInt );
-    addUserPhone.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    addUserPhone.SetDescriptionL( KNSmlDMVoIPAddUserPhoneExp );
-
-    // ProviderBookmarkURI
-    MSmlDmDDFObject& providerBkmarkUri = idNode.AddChildObjectL(
-        KNSmlDMVoIPProviderBookmarkUri );
-    providerBkmarkUri.SetAccessTypesL( accessTypesGetReplaceAdd );
-    providerBkmarkUri.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    providerBkmarkUri.SetScopeL( MSmlDmDDFObject::EDynamic );
-    providerBkmarkUri.SetDFFormatL( MSmlDmDDFObject::EChr );
-    providerBkmarkUri.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    providerBkmarkUri.SetDescriptionL( KNSmlDMVoIPProviderBookmarkUriExp );
-
-    // SIPConnectivityTestURI
-    MSmlDmDDFObject& sipConnTestUri = idNode.AddChildObjectL( 
-        KNSmlDMVoIPSIPConnTestUri );
-    sipConnTestUri.SetAccessTypesL( accessTypesGetReplaceAdd );
-    sipConnTestUri.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    sipConnTestUri.SetScopeL( MSmlDmDDFObject::EDynamic );
-    sipConnTestUri.SetDFFormatL( MSmlDmDDFObject::EChr );
-    sipConnTestUri.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    sipConnTestUri.SetDescriptionL( KNSmlDMVoIPSIPConnTestUriExp );
-
-    // NATFWProfileId
-    MSmlDmDDFObject& natfwId = idNode.AddChildObjectL(
-        KNSmlDMVoIPNatFwProfileId );
-    natfwId.SetAccessTypesL( accessTypesGetReplaceAdd );
-    natfwId.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    natfwId.SetScopeL( MSmlDmDDFObject::EDynamic );
-    natfwId.SetDFFormatL( MSmlDmDDFObject::EChr );
-    natfwId.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    natfwId.SetDescriptionL( KNSmlDMVoIPNatFwProfileIdExp );
-
-    // MinSessionInterval
-    MSmlDmDDFObject& minSe = idNode.AddChildObjectL(
-        KNSmlDMVoIPMinSessionInterval );
-    minSe.SetAccessTypesL( accessTypesGetReplaceAdd );
-    minSe.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    minSe.SetScopeL( MSmlDmDDFObject::EDynamic );
-    minSe.SetDFFormatL( MSmlDmDDFObject::EInt );
-    minSe.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    minSe.SetDescriptionL( KNSmlDMVoIPMinSessionIntervalExp );
-
-    // SessionExpires
-    MSmlDmDDFObject& sessionExpires = idNode.AddChildObjectL(
-        KNSmlDMVoIPSessionExpires );
-    sessionExpires.SetAccessTypesL( accessTypesGetReplaceAdd );
-    sessionExpires.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    sessionExpires.SetScopeL( MSmlDmDDFObject::EDynamic );
-    sessionExpires.SetDFFormatL( MSmlDmDDFObject::EInt );
-    sessionExpires.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    sessionExpires.SetDescriptionL( KNSmlDMVoIPSessionExpiresExp );
-
-    // BradingDataURI
-    MSmlDmDDFObject& brandingUri = idNode.AddChildObjectL(
-        KNSmlDMVoIPBrandingDataUri );
-    brandingUri.SetAccessTypesL( accessTypesGetReplaceAdd );
-    brandingUri.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    brandingUri.SetScopeL( MSmlDmDDFObject::EDynamic );
-    brandingUri.SetDFFormatL( MSmlDmDDFObject::EInt );
-    brandingUri.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    brandingUri.SetDescriptionL( KNSmlDMVoIPBrandingDataUriExp );
-
-    // PresenceSettingsID
-    MSmlDmDDFObject& presenceId = idNode.AddChildObjectL(
-        KNSmlDMVoIPPresenceSettingsId );
-    presenceId.SetAccessTypesL( accessTypesGetReplaceAdd );
-    presenceId.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    presenceId.SetScopeL( MSmlDmDDFObject::EDynamic );
-    presenceId.SetDFFormatL( MSmlDmDDFObject::EChr );
-    presenceId.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    presenceId.SetDescriptionL( KNSmlDMVoIPPresenceSettingsIdExp );
-
-    // UsedNatProtocol
-    MSmlDmDDFObject& natProtocol = idNode.AddChildObjectL(
-        KNSmlDMVoIPUsedNatProtocol );
-    natProtocol.SetAccessTypesL( accessTypesGetReplaceAdd );
-    natProtocol.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    natProtocol.SetScopeL( MSmlDmDDFObject::EDynamic );
-    natProtocol.SetDFFormatL( MSmlDmDDFObject::EInt );
-    natProtocol.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    natProtocol.SetDescriptionL( KNSmlDMVoIPUsedNatProtocolExp );
-
-    // AutoEnableService
-    MSmlDmDDFObject& autoEnable = idNode.AddChildObjectL(
-        KNSmlDMVoIPAutoEnable );
-    autoEnable.SetAccessTypesL( accessTypesGetReplaceAdd );
-    autoEnable.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    autoEnable.SetScopeL( MSmlDmDDFObject::EDynamic );
-    autoEnable.SetDFFormatL( MSmlDmDDFObject::EBool );
-    autoEnable.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    autoEnable.SetDescriptionL( KNSmlDMVoIPAutoEnableExp );
-    
-    // SNAPProfileId
-    MSmlDmDDFObject& snapId = idNode.AddChildObjectL(
-        KNSmlDMVoIPSnapProfileId );
-    snapId.SetAccessTypesL( accessTypesGetReplaceAdd );
-    snapId.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    snapId.SetScopeL( MSmlDmDDFObject::EDynamic );
-    snapId.SetDFFormatL( MSmlDmDDFObject::EChr );
-    snapId.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    snapId.SetDescriptionL( KNSmlDMVoIPSnapProfileIdExp );
-
-    // EnableIM
-    MSmlDmDDFObject& enableIm = idNode.AddChildObjectL(
-        KNSmlDMVoIPEnableIm );
-    enableIm.SetAccessTypesL( accessTypesGetReplaceAdd );
-    enableIm.SetOccurenceL( MSmlDmDDFObject::EZeroOrOne );
-    enableIm.SetScopeL( MSmlDmDDFObject::EDynamic );
-    enableIm.SetDFFormatL( MSmlDmDDFObject::EBool );
-    enableIm.AddDFTypeMimeTypeL( KNSmlDMVoIPTextPlain );
-    enableIm.SetDescriptionL( KNSmlDMVoIPEnableImExp );
-    
-    DBG_PRINT("CNSmlDmVoIPAdapter::DDFStructureL(): end");
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::UpdateLeafObjectL
-// Updates value of leaf object
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVoIPAdapter::UpdateLeafObjectL( 
-    const TDesC8& aURI, 
-    const TDesC8& aLUID, 
-    const TDesC8& aObject, 
-    const TDesC8& /*aType*/, 
-    const TInt aStatusRef )
-    {
-    DBG_PRINT("CNSmlDmVoIPAdapter::UpdateLeafObjectL(): begin");
-
-    __ASSERT_ALWAYS( iDmCallback != NULL, User::Leave( KErrArgument ) );
-
-    // Load VoIP profile information if not loaded yet
-    if ( !iProfileEntries.Count() )
-        {
-        LoadProfilesL();
-        }
-
-    CSmlDmAdapter::TError retValue = CSmlDmAdapter::EOk;
-    TPtrC8 uriSeg = LastURISeg( aURI );
-    TPtrC8 uriTmp = RemoveLastURISeg( aURI );
-    TPtrC8 secondLastUriSeg = LastURISeg( uriTmp );
-
-    // Check that luid mapping exist 
-    if ( !aLUID.Length() )
-        {
-        iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EError );
-        DBG_PRINT("CNSmlDmVoIPAdapter::UpdateLeafObjectL(): no LUID end");
-        return;
-        }
-
-     // Find profile and get settings
-    iProfileID = FindProfileLocation( aLUID );
-
-    // If profile is not found return error.
-    if ( KErrNotFound == iProfileID )
-        {
-        retValue = CSmlDmAdapter::ENotFound;
-        iDmCallback->SetStatusL( aStatusRef, retValue );
-        DBG_PRINT("CNSmlDmVoIPAdapter::UpdateLeafObjectL(): not found end");
-        return;
-        }
-
-    CDMVoIPSPSettings* spSettings = CDMVoIPSPSettings::NewLC(); // CS:1
-    spSettings->iRcseProfileId = iProfileEntries[iProfileID]->iId;
-    TInt spSettingsId( KErrNotFound );
-    // Check if service provider settings for this VoIP profile are already
-    // updated to be stored.
-    for ( TInt counter = 0; counter < iSPSettings.Count(); counter++ )
-        {
-        if ( iProfileEntries[iProfileID]->iId == 
-            iSPSettings[counter]->iRcseProfileId )
-            {
-            spSettingsId = counter;
-            }
-        }
-    TBool addSpSettings( EFalse );
-
-    // Check that profile is not already to be saved.
-    if ( KErrNotFound == iProfileModifs.Find( iProfileID ) )
-        {
-        iProfileModifs.Insert( iProfileID, iProfileModifs.Count() );
-        }
-
-    // VoIP/x/ProviderName
-    if ( KNSmlDMVoIPProvID() == uriSeg )
-        {
-        CRCSEProfileEntry* tmpEntryForProvider = CRCSEProfileEntry::NewLC();
-        tmpEntryForProvider->iProviderName.Copy( aObject );
-        CheckDuplicateProviderL( *tmpEntryForProvider );
-        iProfileEntries[iProfileID]->iProviderName.Copy( 
-            tmpEntryForProvider->iProviderName );
-        CleanupStack::PopAndDestroy( tmpEntryForProvider );
-        }
-    // VoIP/x/SettingsName
-    else if ( KNSmlDMVoIPName() == uriSeg )
-        {
-        CRCSEProfileEntry* tmpEntryForName = CRCSEProfileEntry::NewLC();
-        tmpEntryForName->iSettingsName.Copy( aObject );
-        CheckDuplicateNameL( *tmpEntryForName );
-        iProfileEntries[iProfileID]->iSettingsName.Copy( 
-            tmpEntryForName->iSettingsName );
-        CleanupStack::PopAndDestroy( tmpEntryForName ); 
-        }
-    // VoIP/x/SMPort
-    else if ( KNSmlDMVoIPSMPort() == uriSeg )
-        {
-        iProfileEntries[iProfileID]->iStartMediaPort = 
-            DesToInt( aObject );
-        }
-    // VoIP/x/EMPort
-    else if ( KNSmlDMVoIPEMPort() == uriSeg )
-        {
-        iProfileEntries[iProfileID]->iEndMediaPort = DesToInt( aObject );
-        }
-    // VoIP/x/MediaQos
-    else if ( KNSmlDMVoIPMediaQos() == uriSeg )
-        {
-        iProfileEntries[iProfileID]->iMediaQOS = DesToInt( aObject );
-        }
-    // VoIP/x/DTMFIB
-    else if ( KNSmlDMVoIPDTMFIB() == uriSeg )
-        {
-        if ( KNSmlDMVoIPValueTrue() == aObject )
-            {
-            iProfileEntries[iProfileID]->iInbandDTMF = CRCSEProfileEntry::EOn;
-            }
-        else if ( KNSmlDMVoIPValueFalse() == aObject )
-            {
-            iProfileEntries[iProfileID]->iInbandDTMF = 
-                CRCSEProfileEntry::EOff;
-            }
-        else
-            {
-            retValue = CSmlDmAdapter::EInvalidObject;   
-            }
-        }
-    // VoIP/x/DTMFOB
-    else if ( KNSmlDMVoIPDTMFOB() == uriSeg )
-        {
-        if ( KNSmlDMVoIPValueTrue() == aObject )
-            {
-            iProfileEntries[iProfileID]->iOutbandDTMF = 
-                CRCSEProfileEntry::EOn;
-            }
-        else if ( KNSmlDMVoIPValueFalse() == aObject )
-            {
-            iProfileEntries[iProfileID]->iOutbandDTMF = 
-                CRCSEProfileEntry::EOff;
-            }
-        else
-            {
-            retValue = CSmlDmAdapter::EInvalidObject;   
-            }
-        }
-    // VoIP/x/SecureCallPref
-    else if ( KNSmlDMVoIPSecureCallPref() == uriSeg )
-        {
-        iProfileEntries[iProfileID]->
-            iSecureCallPreference = DesToInt( aObject );
-        }
-    // VoIP/x/RTCP
-    else if ( KNSmlDMVoIPRTCP() == uriSeg )
-        {
-        iProfileEntries[iProfileID]->iRTCP = DesToInt( aObject );
-        }
-    // VoIP/x/UAHTerminalType
-    else if ( KNSmlDMVoIPUAHTerminalType() == uriSeg )
-        {
-        iProfileEntries[iProfileID]->
-            iSIPVoIPUAHTerminalType = DesToInt( aObject );
-        }
-    // VoIP/x/UAHWLANMAC
-    else if ( KNSmlDMVoIPUAHWLANMAC() == uriSeg )
-        {
-        iProfileEntries[iProfileID]->
-            iSIPVoIPUAHeaderWLANMAC = DesToInt( aObject );
-        }
-    // VoIP/x/UAHString
-    else if ( KNSmlDMVoIPUAHString() == uriSeg )
-        {
-        iProfileEntries[iProfileID]->
-            iSIPVoIPUAHeaderString.Copy( aObject );
-        }
-    // VoIP/x/ProfileLockedToIAP
-    else if ( KNSmlDMVoIPProfileLockedToIAP() == uriSeg )
-        {
-        if ( KNSmlDMVoIPValueTrue() == aObject )
-            {
-            iProfileEntries[iProfileID]->
-                iProfileLockedToIAP = CRCSEProfileEntry::EOn;
-            }
-        else if ( KNSmlDMVoIPValueFalse() == aObject )
-            {
-            iProfileEntries[iProfileID]->
-                iProfileLockedToIAP = CRCSEProfileEntry::EOff;
-            }
-        else
-            {
-            retValue = CSmlDmAdapter::EInvalidObject;   
-            }
-        }
-    // VoIP/x/VoIPPluginUID
-    else if ( KNSmlDMVoIPPluginUID() == uriSeg )
-        {
-        iProfileEntries[iProfileID]->iVoIPPluginUID = 
-            DesToTUint( aObject );
-        }
-    // VoIP/x/AllowVoIPOverWCDMA
-    else if ( KNSmlDMVoIPAllowVoIPOverWCDMA() == uriSeg )
-        {
-        if ( KNSmlDMVoIPValueTrue() == aObject )
-            {
-            iProfileEntries[iProfileID]->
-                iAllowVoIPoverWCDMA = CRCSEProfileEntry::EOn;
-            }
-        else if ( KNSmlDMVoIPValueFalse() == aObject )
-            {
-            iProfileEntries[iProfileID]->
-                iAllowVoIPoverWCDMA = CRCSEProfileEntry::EOff;
-            }
-        else
-            {
-            retValue = CSmlDmAdapter::EInvalidObject;   
-            }
-        iAllowVoIPOverWCDMAModified = ETrue; 
-        }
-    // VoIP/x/VoIPDigits
-    else if ( KNSmlDMVoIPVoIPDigits() == uriSeg )
-        {
-        iProfileEntries[iProfileID]->iMeanCountOfVoIPDigits = 
-            DesToInt( aObject );
-        }
-    // VoIP/x/URIDomainIgnoreRule
-    else if ( KNSmlDMVoIPURIDomainIgnoreRule() == uriSeg )
-        {
-        iProfileEntries[iProfileID]->iIgnoreAddrDomainPart = 
-            DesToInt( aObject );
-        }
-    // VoIP/x/AddUserPhone
-    else if ( KNSmlDMVoIPAddUserPhone() == uriSeg )
-        {
-        if ( KNSmlDMVoIPValueFalse() == aObject )
-            {
-            iProfileEntries[iProfileID]->iUserPhoneUriParameter =
-            CRCSEProfileEntry::EOff;
-            }
-        else if ( KNSmlDMVoIPValueTrue() == aObject )
-            {
-            iProfileEntries[iProfileID]->iUserPhoneUriParameter =
-            CRCSEProfileEntry::EOn;
-            }
-        else
-            {
-            retValue = CSmlDmAdapter::EInvalidObject;
-            }
-        }
-    // VoIP/x/ProviderBookmarkURI
-    else if ( KNSmlDMVoIPProviderBookmarkUri() == uriSeg )
-        {
-        if ( KErrNotFound == spSettingsId )
-            {
-            delete spSettings->iServiceProviderBookmark;
-            spSettings->iServiceProviderBookmark = NULL;
-            spSettings->iServiceProviderBookmark = HBufC::NewL( 
-                aObject.Length() );
-            spSettings->iServiceProviderBookmark->Des().Copy( aObject );
-            addSpSettings = ETrue;
-            }
-        else
-            {
-            delete iSPSettings[spSettingsId]->iServiceProviderBookmark;
-            iSPSettings[spSettingsId]->iServiceProviderBookmark = NULL;
-            iSPSettings[spSettingsId]->iServiceProviderBookmark = HBufC::NewL(
-                aObject.Length() );
-            iSPSettings[spSettingsId]->iServiceProviderBookmark->Des().Copy( 
-                aObject );
-            }
-        }
-    // VoIP/x/SIPConnectivityTestURI
-    else if ( KNSmlDMVoIPSIPConnTestUri() == uriSeg )
-        {
-        iProfileEntries[iProfileID]->iSIPConnTestAddress.Copy( 
-            aObject );
-        }
-    // VoIP/x/NATFWProfileId
-    else if ( KNSmlDMVoIPNatFwProfileId() == uriSeg )
-        {
-        TUint32 natId = NatFwIdL( aObject );
-        if ( KErrNone == natId )
-            {
-            retValue = CSmlDmAdapter::EInvalidObject;
-            }
-        else
-            {
-            iProfileEntries[iProfileID]->iNATSettingsStorageId = natId;
-            }
-        }
-    // VoIP/x/MinSessionInterval
-    else if ( KNSmlDMVoIPMinSessionInterval() == uriSeg )
-        {
-        iProfileEntries[iProfileID]->iSIPMinSE = DesToInt( aObject );
-        }
-    // VoIP/x/SessionExpires
-    else if ( KNSmlDMVoIPSessionExpires() == uriSeg )
-        {
-        iProfileEntries[iProfileID]->iSIPSessionExpires = 
-            DesToInt( aObject );
-        }
-    // VoIP/x/BradingDataURI
-    else if ( KNSmlDMVoIPBrandingDataUri() == uriSeg )
-        {
-        if ( KErrNotFound == spSettingsId )
-            {
-            delete spSettings->iBrandingDataUri;
-            spSettings->iBrandingDataUri = NULL;
-            spSettings->iBrandingDataUri = HBufC::NewL( aObject.Length() );
-            spSettings->iBrandingDataUri->Des().Copy( aObject );
-            addSpSettings = ETrue;
-            }
-        else
-            {
-            delete iSPSettings[spSettingsId]->iBrandingDataUri;
-            iSPSettings[spSettingsId]->iBrandingDataUri = NULL;
-            iSPSettings[spSettingsId]->iBrandingDataUri = 
-                HBufC::NewL( aObject.Length() );
-            iSPSettings[spSettingsId]->iBrandingDataUri->Des().Copy( 
-                aObject );
-            }
-        }
-    // VoIP/x/PresenceSettingsID
-    else if ( KNSmlDMVoIPPresenceSettingsId() == uriSeg )
-        {
-        if ( KErrNotFound == spSettingsId )
-            {
-            spSettings->iPresenceId = PresenceIdL( aObject );
-            addSpSettings = ETrue;
-            }
-        else
-            {
-            iSPSettings[spSettingsId]->iPresenceId = PresenceIdL( aObject );
-            }
-        }
-    // VoIP/x/UsedNATProtocol
-    else if ( KNSmlDMVoIPUsedNatProtocol() == uriSeg )
-        {
-        iProfileEntries[iProfileID]->iNATProtocol = DesToInt( aObject );
-        }
-    // VoIP/x/AutoEnable
-    else if ( KNSmlDMVoIPAutoEnable() == uriSeg )
-        {
-        if ( KErrNotFound == spSettingsId )
-            {
-            spSettings->iAutoEnableService = DesToInt( aObject );
-            addSpSettings = ETrue;
-            }
-        else
-            {
-            iSPSettings[spSettingsId]->iAutoEnableService =  
-                DesToInt( aObject );
-            }
-        }
-    // VoIP/x/SNAPProfileId
-    else if ( KNSmlDMVoIPSnapProfileId() == uriSeg )
-        {
-        if ( KErrNotFound == spSettingsId )
-            {
-            spSettings->iSnapId = SnapIdL( aObject );
-            addSpSettings = ETrue;
-            }
-        else
-            {
-            iSPSettings[spSettingsId]->iSnapId = SnapIdL( aObject );
-            }
-        }
-    // VoIP/x/EnableIM
-    else if ( KNSmlDMVoIPEnableIm() == uriSeg )
-        {
-        if ( KErrNotFound == spSettingsId )
-            {
-            if ( KNSmlDMVoIPValueFalse() == aObject )
-                {
-                spSettings->iImEnabled = EFalse;
-                addSpSettings = ETrue;
-                }
-            else if ( KNSmlDMVoIPValueTrue() == aObject )
-                {
-                spSettings->iImEnabled = ETrue;
-                addSpSettings = ETrue;
-                }
-            else
-                {
-                retValue = CSmlDmAdapter::EInvalidObject;
-                }
-            }
-        else
-            {
-            if ( KNSmlDMVoIPValueFalse() == aObject )
-                {
-                iSPSettings[spSettingsId]->iImEnabled = EFalse;
-                }
-            else if ( KNSmlDMVoIPValueTrue() == aObject )
-                {
-                iSPSettings[spSettingsId]->iImEnabled = ETrue;
-                }
-            else
-                {
-                retValue = CSmlDmAdapter::EInvalidObject;
-                }
-            }
-        }
-
-    // ==============================
-    // SettingIds node (update)
-    // ==============================
-    //
-
-    // VoIP/x/SettingIds
-    if ( KNSmlDMVoIPSettingId() == LastURISeg( aLUID ).Left( 
-        KNSmlDMVoIPSettingId().Length() ) 
-        && KFiveSegs == NumOfURISegs( aURI ) )
-        {
-        retValue = UpdateSettingIdsSpecificObjectL( aLUID, uriSeg, aObject );
-        }
-
-    // ==============================
-    // PreferredCodecs node (update)
-    // ==============================
-    //
-
-    // VoIP/x/PreferredCodecs node
-    if ( KNSmlDMVoIPPreferredCodecId() == uriSeg
-        && KFiveSegs == NumOfURISegs( aURI ) ) 
-        {
-        // Check that codec ID is found from codec entries before setting it.
-        // Preferred codec ID setting is only for knowing and changing an
-        // already existing codec priority.
-        if ( FindCodecLocation( DesToInt( aObject ) ) != KErrNotFound &&
-            DesToInt( aLUID.Right( 10 ) ) <= iProfileEntries[iProfileID]->
-            iPreferredCodecs.Count() )
-            {
-            iProfileEntries[iProfileID]->iPreferredCodecs[ 
-                DesToInt( aLUID.Right( 10 ))] = DesToInt( aObject );
-            }
-        else
-            {
-            // Codec is not found from codecsettings or
-            // invalid LUID is passed to the adapter.
-            retValue = CSmlDmAdapter::EInvalidObject;
-            }
-
-        }
-
-    // ==============================
-    // CodecSettings node (update)
-    // ==============================
-    //
-    if ( KNSmlDMVoIPCodecSettingsId() == LastURISeg( aLUID ).
-        Left( KNSmlDMVoIPCodecSettingsId().Length() )
-        && KFiveSegs == NumOfURISegs( aURI ) )
-        {
-        retValue = UpdateCodecSpecificObject( aLUID, uriSeg, aObject );
-        }
-
-    // ==============================
-    // VoiceMailBox node (update)
-    // ==============================
-    //
-    if ( KNSmlDMVoIPVmbxNode() == secondLastUriSeg && 
-        KFourSegs == NumOfURISegs( aURI ) )
-        {
-        if ( KNSmlDMVoIPMwiUri() == uriSeg )
-            {
-            if ( KErrNotFound == spSettingsId )
-                {
-                delete spSettings->iVmbxMwiUri;
-                spSettings->iVmbxMwiUri = NULL;
-                spSettings->iVmbxMwiUri = HBufC::NewL( aObject.Length() );
-                spSettings->iVmbxMwiUri->Des().Copy( aObject );
-                addSpSettings = ETrue;
-                }
-            else
-                {
-                delete iSPSettings[spSettingsId]->iVmbxMwiUri;
-                iSPSettings[spSettingsId]->iVmbxMwiUri = NULL;
-                iSPSettings[spSettingsId]->iVmbxMwiUri = HBufC::NewL( 
-                    aObject.Length() );
-                iSPSettings[spSettingsId]->iVmbxMwiUri->Des().Copy( aObject );
-                }
-            }
-        else if ( KNSmlDMVoIPListeningUri() == uriSeg )
-            {
-            if ( KErrNotFound == spSettingsId )
-                {
-                delete spSettings->iVmbxListenUri;
-                spSettings->iVmbxListenUri = NULL;
-                spSettings->iVmbxListenUri = HBufC::NewL( aObject.Length() );
-                spSettings->iVmbxListenUri->Des().Copy( aObject );
-                addSpSettings = ETrue;
-                }
-            else
-                {
-                delete iSPSettings[spSettingsId]->iVmbxListenUri;
-                iSPSettings[spSettingsId]->iVmbxListenUri = NULL;
-                iSPSettings[spSettingsId]->iVmbxListenUri = HBufC::NewL( 
-                    aObject.Length() );
-                iSPSettings[spSettingsId]->iVmbxListenUri->Des().Copy( 
-                    aObject );
-                }
-            }
-        else if ( KNSmlDMVoIPUsedIAPId() == uriSeg )
-            {
-            TInt iapId = ConRefL( aObject );
-            if ( KErrNotFound == iapId )
-                {
-                retValue = CSmlDmAdapter::EInvalidObject;
-                }
-            else
-                {
-                if ( KErrNotFound == spSettingsId )
-                    {
-                    spSettings->iVmbxIapId = iapId;
-                    addSpSettings = ETrue;
-                    }
-                else
-                    {
-                    iSPSettings[spSettingsId]->iVmbxIapId = iapId;
-                    }
-                }
-            }
-        else if ( KNSmlDMVoIPReSubscribeInterval() == uriSeg )
-            {
-            if ( KErrNotFound == spSettingsId )
-                {
-                spSettings->iReSubscribeInterval = DesToInt( aObject );
-                addSpSettings = ETrue;
-                }
-            else
-                {
-                iSPSettings[spSettingsId]->iReSubscribeInterval = 
-                    DesToInt( aObject );
-                }
-            }
-        else if ( KNSmlDMVoIPUsedSIPProfileId() == uriSeg )
-            {
-            TUint32 profileId = SetSipRefL( aObject ); 
-            if ( profileId > 0 )
-                {
-                if ( KErrNotFound == spSettingsId )
-                    {
-                    spSettings->iVmbxSipId = profileId;
-                    addSpSettings = ETrue;
-                    }
-                else
-                    {
-                    iSPSettings[spSettingsId]->iVmbxSipId = profileId;
-                    }
-                }
-            else
-                {
-                retValue = CSmlDmAdapter::EInvalidObject;
-                }
-            }
-        else if ( KNSmlDMVoIPAutoAcceptBuddyRequest() == uriSeg )
-            {
-            if ( KErrNotFound == spSettingsId )
-                {
-                spSettings->iAutoAcceptBuddy = DesToInt( aObject );
-                addSpSettings = ETrue;
-                }
-            else
-                {
-                iSPSettings[spSettingsId]->iAutoAcceptBuddy = 
-                    DesToInt( aObject );
-                }
-            }
-        else
-            {
-            retValue = CSmlDmAdapter::EInvalidObject;
-            }
-        }
-
-    if ( addSpSettings )
-        {
-        // Append Service Provider Settings to array for saving them later.
-        // iSPSettings array will own the object now. 
-        iSPSettings.AppendL( spSettings );
-        CleanupStack::Pop( spSettings ); // CS:0
-        }
-    else
-        {
-        // Local Service Provider Settings not needed.
-        CleanupStack::PopAndDestroy( spSettings ); // CS:0
-        }
-
-    iDmCallback->SetStatusL( aStatusRef, retValue );
-
-    DBG_PRINT("CNSmlDmVoIPAdapter::UpdateLeafObjectL(): end");
-    }
-    
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::UpdateCodecSpecificObject
-// Updates Codec specific object.
-// ---------------------------------------------------------------------------
-//
-CSmlDmAdapter::TError CNSmlDmVoIPAdapter::UpdateCodecSpecificObject(
-    const TDesC8& aLUID, const TDesC8& aUriSeg, const TDesC8& aObject )
-    {
-    DBG_PRINT("CNSmlDmVoIPAdapter::UpdateCodecSpecificObject(): begin");
-
-    CSmlDmAdapter::TError retValue = CSmlDmAdapter::EOk;
-
-    // Get codec ID used by these settings.
-    TUint32 codecId = DesToInt( aLUID.Right( 10 ) );
-    TInt codecPos = FindCodecLocation( codecId );
-    if ( KErrNotFound != codecPos )
-        {
-        // Add profile to be saved if not done already.
-        if ( KErrNotFound == iCodecModifs.Find( codecPos ) )
-            {
-            iCodecModifs.Insert( codecPos, iCodecModifs.Count() );
-            }
-        //CodecId
-        if ( KNSmlDMVoIPCodecId() == aUriSeg ) 
-            {
-            iCodecEntries[codecPos]->iCodecId = DesToInt( aObject );
-            }
-        //MediaTypeName
-        if ( KNSmlDMVoIPMediaTypeName() == aUriSeg ) 
-            {
-            iCodecEntries[codecPos]->iMediaTypeName.Copy( aObject );
-            }
-        //MediaSubTypeName
-        if ( KNSmlDMVoIPMediaSubTypeName() == aUriSeg ) 
-            {
-            iCodecEntries[codecPos]->
-                iMediaSubTypeName.Copy( aObject );
-            }
-        //JitterBufferSize
-        if ( KNSmlDMVoIPJitterBufferSize() == aUriSeg ) 
-            {
-            iCodecEntries[codecPos]->iJitterBufferSize = 
-                DesToInt( aObject );
-            }
-        //OctetAlign
-        if ( KNSmlDMVoIPOctetAlign() == aUriSeg ) 
-            {
-            if ( KNSmlDMVoIPValueTrue() == aObject )
-                {
-                iCodecEntries[codecPos]->iOctetAlign = 
-                    CRCSEAudioCodecEntry::EOn;
-                }
-            else if ( KNSmlDMVoIPValueFalse() == aObject )
-                {
-                iCodecEntries[codecPos]->iOctetAlign = 
-                    CRCSEAudioCodecEntry::EOff;
-                }
-            else
-                {
-                retValue = CSmlDmAdapter::EInvalidObject;
-                }
-            }
-        //ModeChangePeriod
-        if ( KNSmlDMVoIPModeChangePeriod() == aUriSeg ) 
-            {
-            iCodecEntries[codecPos]->iModeChangePeriod = 
-                DesToInt( aObject );
-            }
-        //ModeChangeNeighbor                
-        if ( KNSmlDMVoIPModeChangeNeighbor() == aUriSeg ) 
-            {
-            if ( KNSmlDMVoIPValueTrue() == aObject )
-                {
-                iCodecEntries[codecPos]->iModeChangeNeighbor = 
-                    CRCSEAudioCodecEntry::EOn;
-                }
-            else if ( KNSmlDMVoIPValueFalse() == aObject )
-                {
-                iCodecEntries[codecPos]->iModeChangeNeighbor = 
-                    CRCSEAudioCodecEntry::EOff;
-                }
-            else
-                {
-                retValue = CSmlDmAdapter::EInvalidObject;
-                }
-            }
-        //Ptime
-        if ( KNSmlDMVoIPPtime() == aUriSeg ) 
-            {
-            iCodecEntries[codecPos]->iPtime = DesToInt( aObject );
-            }
-        //Maxptime
-        if ( KNSmlDMVoIPMaxPtime() == aUriSeg ) 
-            {
-            iCodecEntries[codecPos]->iMaxptime = DesToInt( aObject );
-            }
-        //VAD                
-        if ( KNSmlDMVoIPVAD() == aUriSeg ) 
-            {
-            if ( KNSmlDMVoIPValueTrue() == aObject )
-                {
-                iCodecEntries[codecPos]->iVAD = 
-                    CRCSEAudioCodecEntry::EOn;
-                }
-            else if ( KNSmlDMVoIPValueFalse() == aObject )
-                {
-                iCodecEntries[codecPos]->iVAD = 
-                    CRCSEAudioCodecEntry::EOff;
-                }
-            else
-                {
-                retValue = CSmlDmAdapter::EInvalidObject;
-                }
-            }
-        //AnnexB                
-        if ( KNSmlDMVoIPAnnexB() == aUriSeg ) 
-            {
-            if ( KNSmlDMVoIPValueTrue() == aObject )
-                {
-                iCodecEntries[codecPos]->iAnnexb =
-                    CRCSEAudioCodecEntry::EOn;
-                }
-            else if ( KNSmlDMVoIPValueFalse() == aObject )
-                {
-                iCodecEntries[codecPos]->iAnnexb =
-                    CRCSEAudioCodecEntry::EOff;
-                }
-            else
-                {
-                retValue = CSmlDmAdapter::EInvalidObject;
-                }
-            }
-        // MaxRed
-        if ( KNSmlDMVoIPMaxRed() == aUriSeg )
-            {
-            iCodecEntries[codecPos]->iMaxRed = DesToInt( aObject );
-            }
-
-        // ==============================
-        // ModeSet node ( update )
-        // ==============================
-        //
-        if ( KNSmlDMVoIPMode() == aUriSeg )  
-            {
-            // Add profile to be saved if not done already.
-            if ( KErrNotFound == iCodecModifs.Find( codecPos ) )
-                {
-                iCodecModifs.Insert( codecPos, iCodecModifs.Count() );
-                }
-            iCodecEntries[codecPos]->iModeSet[ 
-                DesToInt( aLUID.Right( 10 ))] = DesToInt( aObject );
-            }
-        }
-    else
-        {
-        // codecsetting not found even in luid exists
-        retValue = CSmlDmAdapter::EError;
-        }
-    DBG_PRINT("CNSmlDmVoIPAdapter::UpdateCodecSpecificObject(): end");
-
-    return retValue;
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::UpdateSettingIdsSpecificObjectL
-// Updates SettingIds specific object.
-// ---------------------------------------------------------------------------
-//
-CSmlDmAdapter::TError CNSmlDmVoIPAdapter::UpdateSettingIdsSpecificObjectL(
-    const TDesC8& aLUID, const TDesC8& aUriSeg, const TDesC8& aObject )
-    {
-    DBG_PRINT("CNSmlDmVoIPAdapter::UpdateSettingIdsSpecificObjectL(): start");
-
-    CSmlDmAdapter::TError retValue = CSmlDmAdapter::EOk;
-
-    // Get SIP Specific ID used by these settings.
-
-    // Add profile to be saved if not done already.
-    if ( KErrNotFound == iProfileModifs.Find( iProfileID ) )
-        {
-        iProfileModifs.Insert( iProfileID, iProfileModifs.Count() );
-        }
-    //ProfileType
-    if ( KNSmlDMVoIPProfileType() == aUriSeg )
-        {
-        if ( KNSmlDMVoIPProfileTypeSIP() == aObject )
-            {
-            iProfileEntries[iProfileID]->iIds[DesToInt( 
-                LastURISeg( aLUID ).Right( 10 ))].iProfileType = 0;
-            // If the profile id is not saved and the string to fetch it is only temporaly stored,
-            // the profile id will be fetched from previously-stored member value and set as well 
-            // when saveing the profiletype.
-            if( iTempProfileIdObject )
-                {
-                TUint32 profileId = SetSipRefL( *iTempProfileIdObject ); 
-                if ( profileId > 0 )
-                    {
-                    // Set profileId to settingsids.
-                    iProfileEntries[iProfileID]->
-                        iIds[DesToInt( LastURISeg( aLUID ).Right( 10 ))].
-                        iProfileId = profileId;
-                    retValue = CSmlDmAdapter::EOk;
-                    }
-                else
-                    {
-                    retValue = CSmlDmAdapter::EInvalidObject;
-                    }       
-                } 
-            iIsProfileTypeSet = ETrue;
-            delete iTempProfileIdObject;
-            iTempProfileIdObject = NULL;
-            }
-        else if ( KNSmlDMVoIPProfileTypeSCCP() == aObject )
-            {
-            iProfileEntries[iProfileID]->iIds[DesToInt( 
-                LastURISeg( aLUID ).Right( 10 ))].iProfileType = 1;
-            // If the profile id is not saved and the string to fetch it is only temporaly stored,
-            // the profile id will be fetched from previously-stored member value and set as well 
-            // when saveing the profiletype.
-            if( iTempProfileIdObject )
-                {
-                TUint32 profileId = SetSccpRefL( *iTempProfileIdObject ); 
-                // profileId can be zero
-                if ( profileId > 0 || 0 == profileId )
-                    {
-                    // set profileId to settingsids
-                    iProfileEntries[iProfileID]->iIds[DesToInt( 
-                        LastURISeg( aLUID ).Right( 10 ))].
-                        iProfileId = profileId;
-                    retValue = CSmlDmAdapter::EOk;
-                    }
-                else
-                    {
-                    retValue = CSmlDmAdapter::EInvalidObject;
-                    }
-                }
-            iIsProfileTypeSet = ETrue;
-            delete iTempProfileIdObject;
-            iTempProfileIdObject = NULL;       
-            }
-        else
-            {
-            retValue = CSmlDmAdapter::EInvalidObject;   
-            }
-        }
-    // ProfileId
-    if ( KNSmlDMVoIPProfileId() == aUriSeg )
-        {
-        // Handle SIP type.
-        if ( 0 == iProfileEntries[iProfileID]->iIds[DesToInt( 
-            LastURISeg( aLUID ).Right( 10 ))].iProfileType )
-            {
-            TUint32 profileId = SetSipRefL( aObject ); 
-            if ( profileId > 0 )
-                {
-                // Set profileId to settingsids.
-                iProfileEntries[iProfileID]->
-                    iIds[DesToInt( LastURISeg( aLUID ).Right( 10 ))].
-                    iProfileId = profileId;
-                retValue = CSmlDmAdapter::EOk;
-                }
-            else
-                {
-                retValue = CSmlDmAdapter::EInvalidObject;
-                }
-            }  
-        // Handle SCCP type
-        else if ( 1 == iProfileEntries[iProfileID]->iIds[DesToInt( 
-            LastURISeg( aLUID ).Right( 10 ))].iProfileType )
-            {
-            TUint32 profileId = SetSccpRefL( aObject ); 
-
-            // profileId can be zero
-            if ( profileId > 0 || 0 == profileId )
-                {
-                // set profileId to settingsids
-                iProfileEntries[iProfileID]->iIds[DesToInt( 
-                    LastURISeg( aLUID ).Right( 10 ))].
-                    iProfileId = profileId;
-                retValue = CSmlDmAdapter::EOk;
-                }
-            else
-                {
-                retValue = CSmlDmAdapter::EInvalidObject;
-                }
-            }
-        // If the ProfileType has not been set yet,
-        // the string used to fetch ProfileId temporarily is stored to a member value. 
-        else if ( !iIsProfileTypeSet )
-            {
-            if( iTempProfileIdObject )
-            	{
-            	delete iTempProfileIdObject;
-            	iTempProfileIdObject = NULL;
-            	}
-                iTempProfileIdObject = aObject.AllocL();
-            }
-        else
-            {
-            // no SCCP or SIP type found
-            retValue = CSmlDmAdapter::EError;
-            }
-        }
-    // ProfileSpecificId
-    if ( KNSmlDMVoIPProfileSpecificId() == aUriSeg )
-        {
-        // SIPSpecific settings have been removed so set
-        // SIPSpecific ID as not found.
-        iProfileEntries[iProfileID]->iIds[DesToInt( 
-            LastURISeg( aLUID ).Right( 10 ))].
-            iProfileSpecificSettingId = KErrNotFound;
-
-        // Set status to OK so we won't break backwards compatibility.
-        // Some DM servers may react to receiving other status than OK
-        // when sending settings they think are supported.
-        retValue = CSmlDmAdapter::EOk;
-        }
-
-    DBG_PRINT("CNSmlDmVoIPAdapter::UpdateSettingIdsSpecificObjectL(): end");
-
-    return retValue;
-    }
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::DeleteObjectL
-// This deletes VoIP profiles
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVoIPAdapter::DeleteObjectL( 
-    const TDesC8& aURI, 
-    const TDesC8& aLUID, 
-    const TInt aStatusRef )
-    {
-    DBG_PRINT("CNSmlDmVoIPAdapter::DeleteObjectL( ): begin");
-
-    __ASSERT_ALWAYS( iDmCallback != NULL, User::Leave( KErrArgument ) );
-
-    // Load VoIP profile information if not loaded yet
-    if ( !iProfileEntries.Count() )
-        {
-        LoadProfilesL();
-        }
-
-    CSmlDmAdapter::TError retValue = CSmlDmAdapter::EError;
-
-    // Get URI parameters.
-    TBuf8<KNSmlVoIPMaxUriLength> uri = aURI;
-    TPtrC8 uriSeg = LastURISeg( aURI );
-    TPtrC8 uriTmp = RemoveLastURISeg( aURI );
-    TPtrC8 secondLastUriSeg = LastURISeg( uriTmp );
-
-    // Copy LUID as last segment if exists.
-    if ( 0 < aLUID.Length() )
-        {
-        uri.Copy ( aLUID );
-        }
-    iProfileID = FindProfileLocation( uri );
-    if ( KErrNotFound == iProfileID )
-        {
-        iProfileID = FindProfileLocation( aURI );
-        if ( KErrNotFound == iProfileID )
-            {
-            retValue = CSmlDmAdapter::ENotFound;
-            iDmCallback->SetStatusL( aStatusRef, retValue );
-            DBG_PRINT("CNSmlDmVoIPAdapter::DeleteObjectL( ): ENotFound end");
-            return;
-            }
-        } 
-
-    // ==============================
-    // VoIP/x (delete)
-    // ==============================
-    //
-    if ( secondLastUriSeg == KNSmlDMVoIPNodeName
-        && aLUID.Find( KNSmlDMVoIPPrefix ) != KErrNotFound )
-        {
-        // Delete profile from RCSE.
-        iCRCSEProfile->DeleteL( iProfileEntries[iProfileID]->iId );
-
-        // Delete profile also from memory and compress array.
-        delete iProfileEntries[iProfileID];
-        iProfileEntries[iProfileID] = NULL;
-        iProfileEntries.Remove( iProfileID );
-        iProfileEntries.Compress();
-        iDmCallback->SetMappingL( aURI, KNullDesC8 ); 
-        retValue = CSmlDmAdapter::EOk;
-
-        // Fall back to CS preferred when no more VoIP profiles
-        TInt profileCount = iProfileEntries.Count();
-        if ( KErrNone == profileCount )
-            {
-            SetTelephonyPreferenceL( ECSPreferred );
-            }
-        }
-
-    // ==============================
-    // CodecSettings node ( delete ) 
-    // ==============================
-    //
-    else if ( KNSmlDMVoIPCodecSettingsNode() == secondLastUriSeg  
-        && KFourSegs == NumOfURISegs( aURI ) 
-        && aLUID.Find( KNSmlDMVoIPCodecSettingsId ) != KErrNotFound )
-        {
-        // Get codec ID used by this setting.
-        TUint32 codecId = DesToInt( aLUID.Right(10) );
-        TInt codecPos = FindCodecLocation( codecId );    
-        if ( KErrNotFound != codecPos )
-            {
-            // Delete codec settings from RCSE.
-            iCRCSEAudioCodec->DeleteL( codecId );
-            TInt preferredPos = iProfileEntries[iProfileID]->
-                iPreferredCodecs.Find( codecId );
-
-            // Remove codec settings ID from profiles iPreferredCodecs.
-            iProfileEntries[iProfileID]->iPreferredCodecs.Remove(
-                preferredPos );
-            iProfileEntries[iProfileID]->iPreferredCodecs.Compress();
-
-            // Remove codec settings from iCodecEntries and update
-            // Profile back to RCSE. 
-            delete iCodecEntries[codecPos];
-            iCodecEntries[codecPos] = NULL;
-            iCodecEntries.Remove( codecPos );
-            iCodecEntries.Compress();
-            iCRCSEProfile->UpdateL( iProfileEntries[iProfileID]->
-                iId, *iProfileEntries[iProfileID] );
-            retValue = CSmlDmAdapter::EOk;
-            }
-        else
-            {
-            retValue = CSmlDmAdapter::EError;    
-            }
-        }
-
-    // ==============================
-    // VoIP/x/SettingIds ( delete ) 
-    // ==============================,
-    //
-    else if ( KNSmlDMVoIPSettingIdsNode() == secondLastUriSeg  
-        && KFourSegs == NumOfURISegs( aURI ) 
-        && aLUID.Find( KNSmlDMVoIPSettingId ) != KErrNotFound )
-        {
-        iProfileEntries[iProfileID]->iIds.Remove( 
-            DesToInt( aLUID.Right( 10 ) ) );
-        iProfileEntries[iProfileID]->iIds.Compress();
-        iCRCSEProfile->UpdateL( iProfileEntries[iProfileID]->
-            iId, *iProfileEntries[iProfileID] );
-        retValue = CSmlDmAdapter::EOk;
-        }
-
-    // ==============================
-    // VoIP/x/CodecSettings/x/ModeSet Node ( delete ) 
-    // ==============================
-    //
-    else if ( KNSmlDMVoIPModeSetNode() == secondLastUriSeg 
-        && KSixSegs == NumOfURISegs( aURI )  
-        && aLUID.Find( KNSmlDMVoIPModeId ) != KErrNotFound )
-        {
-        // get codecid used by this setting
-        TUint32 codecId = DesToInt( RemoveLastURISeg( aLUID ).Right( 10 ) );
-        TInt codecPos = FindCodecLocation( codecId );
-        if ( KErrNotFound != codecPos )
-            {
-            // remove modeset from iCodecEntries    
-            iCodecEntries[codecPos]->
-                iModeSet.Remove( DesToInt( aLUID.Right( 10 ) ) );
-            iCodecEntries[codecPos]->
-                iModeSet.Compress();
-
-            // update changes also to rcse    
-            iCRCSEAudioCodec->UpdateL( codecId, *iCodecEntries[codecPos] );
-            iDmCallback->SetMappingL( aURI, KNullDesC8 );     
-            retValue = CSmlDmAdapter::EOk;
-            }
-        else
-            {
-            retValue = CSmlDmAdapter::EError;   
-            }
-        }
-    else
-        {
-        retValue = CSmlDmAdapter::EInvalidObject;
-        }
-    iDmCallback->SetStatusL( aStatusRef, retValue ); 
-    DBG_PRINT("CNSmlDmVoIPAdapter::DeleteObjectL( ): end");
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::FetchLeafObjectL
-// Fetches the values of leaf objects.
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVoIPAdapter::FetchLeafObjectL( 
-    const TDesC8& aURI, 
-    const TDesC8& aLUID, 
-    const TDesC8& aType, 
-    const TInt aResultsRef, 
-    const TInt aStatusRef )
-    {
-    DBG_PRINT("CNSmlDmVoIPAdapter::FetchLeafObjectL(): begin");
-
-    __ASSERT_ALWAYS( iDmCallback != NULL, User::Leave( KErrArgument ) );
-
-    // Load VoIP profile information if not loaded yet
-    if ( !iProfileEntries.Count() )
-        {
-        LoadProfilesL();
-        }  
-
-    CBufBase *result = CBufFlat::NewL( KDefaultResultSize );
-    CleanupStack::PushL( result );
-    CSmlDmAdapter::TError status = FetchObjectL( aURI, aLUID, *result );
-
-    if ( CSmlDmAdapter::EOk == status )
-        {
-        iDmCallback->SetResultsL( aResultsRef, *result, aType );
-        }
-    iDmCallback->SetStatusL( aStatusRef, status );
-
-    CleanupStack::PopAndDestroy( result ); //result
-    result = NULL;
-    DBG_PRINT("CNSmlDmVoIPAdapter::FetchLeafObjectL(): end");
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::FetchObjectL()
-// Fetches the values of leaf objects.
-// ---------------------------------------------------------------------------
-//
-CSmlDmAdapter::TError CNSmlDmVoIPAdapter::FetchObjectL( 
-    const TDesC8& aURI, const TDesC8& aLUID,
-    CBufBase& result )
-    {
-    DBG_PRINT("CNSmlDmVoIPAdapter::FetchObjectL(): start");
-    CSmlDmAdapter::TError retValue = CSmlDmAdapter::EOk;
-    typedef CRCSEProfileEntry Entry;
-
-    // Check that LUID mapping exists.
-    if ( !aLUID.Length() > 0 )
-        {
-        DBG_PRINT("CNSmlDmVoIPAdapter::FetchLeafObjectL(internal)()():ENotFound end");
-        return CSmlDmAdapter::ENotFound;
-        }
-
-    TBuf8<KNSmlVoIPMaxResultLength> segmentResult;
-    TPtrC8 uriSeg = LastURISeg( aURI );
-
-    TPtrC8 uriTmp = RemoveLastURISeg( aURI );
-    TPtrC8 secondLastUriSeg = LastURISeg( uriTmp );
-
-    // Find profile and get its settings.
-    iProfileID = FindProfileLocation( aLUID );
-
-    // If profile is not found return error.
-    if ( KErrNotFound == iProfileID )
-        {
-        DBG_PRINT( "CNSmlDmVoIPAdapter::FetchObjectL(): ENotFound end" );
-        return CSmlDmAdapter::ENotFound;
-        }
-
-    // Set SPS ready for getting values.
-    CSPSettings* spSettings = CSPSettings::NewLC(); // CS:1
-    TUint32 serviceId = iProfileEntries[iProfileID]->iServiceProviderId;
-
-    //VoIP/x/VoIPId
-    if ( KNSmlDMVoIPSetID() == uriSeg )
-        {
-        segmentResult.AppendNumFixedWidthUC( 
-            iProfileEntries[iProfileID]->iId, EDecimal, 10 );
-        }
-    //VoIP/x/ProviderName
-    else if ( KNSmlDMVoIPProvID() == uriSeg )
-        {
-        segmentResult.Copy( iProfileEntries[iProfileID]->
-            iProviderName );
-        }
-    //VoIP/x/SettingsName
-    else if ( KNSmlDMVoIPName() == uriSeg )
-        {
-        segmentResult.Copy( iProfileEntries[iProfileID]->
-            iSettingsName );
-        }
-    //VoIP/x/SMPort
-    else if ( KNSmlDMVoIPSMPort() == uriSeg )
-        {
-        segmentResult.Num( iProfileEntries[iProfileID]->
-            iStartMediaPort );
-        }
-    //VoIP/x/EMPort
-    else if ( KNSmlDMVoIPEMPort() == uriSeg )
-        {
-        segmentResult.Num( iProfileEntries[iProfileID]->
-            iEndMediaPort );
-        }
-    //VoIP/x/MediaQos
-    else if ( KNSmlDMVoIPMediaQos() == uriSeg )
-        {
-        segmentResult.Num( iProfileEntries[iProfileID]->
-            iMediaQOS );
-        }
-    //VoIP/x/DTMFIB
-    else if ( KNSmlDMVoIPDTMFIB() == uriSeg )
-        {
-        if ( Entry::EOONotSet == iProfileEntries[iProfileID]->
-            iInbandDTMF )
-            {
-            segmentResult.Copy( KNSmlDMVoIPValueNotSet );
-            }
-        if ( Entry::EOn == iProfileEntries[iProfileID]->iInbandDTMF )
-            {
-            segmentResult.Copy( KNSmlDMVoIPValueTrue );
-            }
-        if ( Entry::EOff == iProfileEntries[iProfileID]->iInbandDTMF )
-            {
-            segmentResult.Copy( KNSmlDMVoIPValueFalse );
-            }
-        }
-    //VoIP/x/DTMFOB
-    else if ( KNSmlDMVoIPDTMFOB() == uriSeg )
-        {
-        if ( Entry::EOONotSet == iProfileEntries[iProfileID]->
-            iOutbandDTMF )
-            {
-            segmentResult.Copy( KNSmlDMVoIPValueNotSet );
-            }
-        if ( Entry::EOff == iProfileEntries[iProfileID]->iOutbandDTMF )
-            {
-            segmentResult.Copy( KNSmlDMVoIPValueFalse );
-            }
-        if ( Entry::EOn == iProfileEntries[iProfileID]->iOutbandDTMF )
-            {
-            segmentResult.Copy( KNSmlDMVoIPValueTrue );
-            }
-        }
-    // VoIP/x/SecureCallPref
-    else if ( KNSmlDMVoIPSecureCallPref() == uriSeg )
-        {
-        segmentResult.Num( iProfileEntries[iProfileID]->
-            iSecureCallPreference );
-        }
-    // VoIP/x/RTCP
-    else if ( KNSmlDMVoIPRTCP() == uriSeg )
-        {
-        segmentResult.Num( iProfileEntries[iProfileID]->iRTCP );
-        }
-   // VoIP/x/UAHTerminalType
-    else if ( KNSmlDMVoIPUAHTerminalType() == uriSeg )
-        {
-        segmentResult.Num( iProfileEntries[iProfileID]->
-            iSIPVoIPUAHTerminalType );
-        }
-    // VoIP/x/UAHWLANMAC
-    else if ( KNSmlDMVoIPUAHWLANMAC() == uriSeg )
-        {
-        segmentResult.Num( iProfileEntries[iProfileID]->
-            iSIPVoIPUAHeaderWLANMAC );
-        }
-    // VoIP/x/UAHString
-    else if ( KNSmlDMVoIPUAHString() == uriSeg )
-        {
-        segmentResult.Copy( iProfileEntries[iProfileID]->
-            iSIPVoIPUAHeaderString );
-        }
-    // VoIP/x/ProfileLockedToIAP
-    else if ( KNSmlDMVoIPProfileLockedToIAP() == uriSeg )
-        {
-        if ( Entry::EOONotSet == iProfileEntries[iProfileID]->
-            iProfileLockedToIAP )
-            {
-            segmentResult.Copy( KNSmlDMVoIPValueNotSet );
-            }
-        if ( Entry::EOn == iProfileEntries[iProfileID]->
-            iProfileLockedToIAP )
-            {
-            segmentResult.Copy( KNSmlDMVoIPValueTrue );
-            }
-        if ( Entry::EOff == iProfileEntries[iProfileID]->
-            iProfileLockedToIAP )
-            {
-            segmentResult.Copy( KNSmlDMVoIPValueFalse );
-            }
-        }
-    // VoIP/x/VoIPPluginUID
-    else if ( KNSmlDMVoIPPluginUID() == uriSeg )
-        {
-        segmentResult.Num( iProfileEntries[iProfileID]->iVoIPPluginUID );
-        }
-    // VoIP/x/AllowVoIPOverWCDMA
-    else if ( KNSmlDMVoIPAllowVoIPOverWCDMA() == uriSeg )
-        {
-        TInt sipProfileId(0);
-        TUint32 bearerFilttering(0);
-        
-        for ( TInt index = 0; index < iProfileEntries[iProfileID]->
-                iIds.Count(); index++ )
-            {
-            if ( iProfileEntries[iProfileID]->iIds[index].iProfileType == 0 )
-                {
-                sipProfileId = iProfileEntries[iProfileID]->
-                    iIds[index].iProfileId;
-                break;
-                }
-            }
-        
-        CSIPProfile* sipProf = NULL;
-        CSIPProfileRegistryObserver* sipRegObs =
-            CSIPProfileRegistryObserver::NewLC(); // CS:1
-        CSIPManagedProfileRegistry* sipProfReg = 
-            CSIPManagedProfileRegistry::NewLC( *sipRegObs ); // CS:2
-        TRAPD( err, ( sipProf = sipProfReg->ProfileL( sipProfileId ) ) );
-        
-        if ( KErrNone == err )
-            {
-            User::LeaveIfError( sipProf->GetParameter( 
-                KBearerType, bearerFilttering ) );
-            }
-        
-        CleanupStack::PopAndDestroy( sipProfReg ); // CS:1
-        CleanupStack::PopAndDestroy( sipRegObs ); // CS:0
-        
-        if ( bearerFilttering == KBearerWlanOnly )
-            {
-            segmentResult.Copy( KNSmlDMVoIPValueFalse );
-            }
-        
-        else if ( bearerFilttering == KBearerNotSpecified )
-            {
-            segmentResult.Copy( KNSmlDMVoIPValueTrue );
-            }
-        }
-    // VoIP/x/VoIPDigits
-    else if ( KNSmlDMVoIPVoIPDigits() == uriSeg )
-        {
-        segmentResult.Num( iProfileEntries[iProfileID]->
-            iMeanCountOfVoIPDigits );
-        }
-    // VoIP/x/URIDomainIgnoreRule
-    else if ( KNSmlDMVoIPURIDomainIgnoreRule() == uriSeg )
-        {
-        segmentResult.Num( iProfileEntries[iProfileID]->
-            iIgnoreAddrDomainPart );
-        }
-    // VoIP/x/AutoAcceptBuddyRequest
-    else if ( KNSmlDMVoIPAutoAcceptBuddyRequest() == uriSeg )
-        {
-        CSPProperty* autoAcceptBuddy = CSPProperty::NewLC();
-        TInt err = spSettings->FindPropertyL( serviceId, 
-            ESubPropertyPresenceRequestPreference, *autoAcceptBuddy );
-        if ( KErrNone != err )
-            {
-            retValue = CSmlDmAdapter::EError;
-            }
-        else
-            {
-            TInt autoAccept;
-            err = autoAcceptBuddy->GetValue( autoAccept );
-            if ( KErrNone == err )
-                {
-                segmentResult.Num( autoAccept );
-                }
-            else
-                {
-                retValue = CSmlDmAdapter::EError;
-                }
-            }
-        CleanupStack::PopAndDestroy( autoAcceptBuddy );
-        }
-    // VoIP/x/UsedVoIPRelease
-    else if ( KNSmlDMVoIPUsedVoIPRelease() == uriSeg )
-        {
-        TBuf16<KMaxUriLength> voipRelease( KNullDesC16 );
-        voipRelease.Copy( spSettings->GetSIPVoIPSWVersion() );
-        if ( !voipRelease.Length() )
-            {
-            retValue = CSmlDmAdapter::EError;
-            }
-        else
-            {
-            segmentResult.Copy( voipRelease );
-            }
-        }
-    // VoIP/x/AddUserPhone
-    else if ( KNSmlDMVoIPAddUserPhone() == uriSeg )
-        {
-        if ( Entry::EOONotSet == iProfileEntries[iProfileID]->
-            iUserPhoneUriParameter )
-            {
-            segmentResult.Copy( KNSmlDMVoIPValueNotSet );
-            }
-        else if ( Entry::EOn == iProfileEntries[iProfileID]->
-            iUserPhoneUriParameter )
-            {
-            segmentResult.Copy( KNSmlDMVoIPValueTrue );
-            }
-        else if ( Entry::EOff == iProfileEntries[iProfileID]->
-            iUserPhoneUriParameter )
-            {
-            segmentResult.Copy( KNSmlDMVoIPValueFalse );
-            }
-        }
-    // VoIP/x/ProviderBookmarkURI
-    else if ( KNSmlDMVoIPProviderBookmarkUri() == uriSeg )
-        {
-        CSPProperty* providerBkmark = CSPProperty::NewLC();
-        TInt err = spSettings->FindPropertyL( serviceId, 
-            EPropertyServiceBookmarkUri, *providerBkmark );
-        if ( KErrNone != err )
-            {
-            retValue = CSmlDmAdapter::EError;
-            }
-        else
-            {
-            TBuf16<KNSmlVoIPMaxUriLength> bkmark;
-            err = providerBkmark->GetValue( bkmark );
-            if ( KErrNone == err )
-                {
-                segmentResult.Copy( bkmark );
-                }
-            else
-                {
-                retValue = CSmlDmAdapter::EError;
-                }
-            }
-        CleanupStack::PopAndDestroy( providerBkmark );
-        }
-    // VoIP/x/SIPConnectivityTestURI
-    else if ( KNSmlDMVoIPSIPConnTestUri() == uriSeg )
-        {
-        segmentResult.Copy( iProfileEntries[iProfileID]->
-            iSIPConnTestAddress );
-        }
-    // VoIP/x/NATFWProfileId
-    else if ( KNSmlDMVoIPNatFwProfileId() == uriSeg )
-        {
-        TBuf16<KMaxUriLength> natfwProfile;
-        retValue = GetNatFwUriL( natfwProfile, 
-            iProfileEntries[iProfileID]->iNATSettingsStorageId );
-        if ( CSmlDmAdapter::EOk == retValue )
-            {
-            segmentResult.Copy( natfwProfile );
-            }
-        }
-    // VoIP/x/MinSessionInterval
-    else if ( KNSmlDMVoIPMinSessionInterval() == uriSeg )
-        {
-        segmentResult.Num( iProfileEntries[iProfileID]->iSIPMinSE );
-        }
-    // VoIP/x/SessionExpires
-    else if ( KNSmlDMVoIPSessionExpires() == uriSeg )
-        {
-        segmentResult.Num( iProfileEntries[iProfileID]->
-            iSIPSessionExpires );
-        }
-    // VoIP/x/BradingDataURI
-    else if ( KNSmlDMVoIPBrandingDataUri() == uriSeg )
-        {
-        CSPProperty* brandingUri = CSPProperty::NewLC();
-        TInt err = spSettings->FindPropertyL( serviceId, 
-            ESubPropertyVoIPBrandDataUri, *brandingUri );
-        if ( KErrNone != err )
-            {
-            retValue = CSmlDmAdapter::EError;
-            }
-        else
-            {
-            TBuf16<KNSmlVoIPMaxUriLength> brandUri;
-            err = brandingUri->GetValue( brandUri );
-            if ( KErrNone == err )
-                {
-                segmentResult.Copy( brandUri );
-                }
-            else
-                {
-                retValue = CSmlDmAdapter::EError;
-                }
-            }
-        CleanupStack::PopAndDestroy( brandingUri );
-        }
-    // VoIP/x/PresenceSettingsId
-    else if ( KNSmlDMVoIPPresenceSettingsId() == uriSeg )
-        {
-        CSPProperty* presenceId = CSPProperty::NewLC();
-        TInt err = spSettings->FindPropertyL( serviceId, 
-            ESubPropertyPresenceSettingsId, *presenceId );
-        if ( KErrNone != err )
-            {
-            retValue = CSmlDmAdapter::EError;
-            }
-        else
-            {
-            TInt presId;
-            err = presenceId->GetValue( presId );
-            if ( KErrNone == err )
-                {
-                TBuf16<KMaxUriLength> presenceUri;
-                retValue = GetPresenceUriL( presenceUri, (TUint32)presId );
-                if ( EOk == retValue )
-                    {
-                    segmentResult.Copy( presenceUri );
-                    }
-                }
-            else
-                {
-                retValue = CSmlDmAdapter::EError;
-                }
-            }
-        CleanupStack::PopAndDestroy( presenceId );
-        }
-    // VoIP/x/UsedNATProtocol
-    else if ( KNSmlDMVoIPUsedNatProtocol() == uriSeg )
-        {
-        segmentResult.Num( iProfileEntries[iProfileID]->iNATProtocol );
-        }
-    // VoIP/x/AutoEnable
-    else if ( KNSmlDMVoIPAutoEnable() == uriSeg )
-        {
-        CSPProperty* autoEnableService = CSPProperty::NewLC();
-        TInt err = spSettings->FindPropertyL( serviceId, 
-            ESubPropertyVoIPEnabled, *autoEnableService );
-        if ( KErrNone != err )
-            {
-            retValue = CSmlDmAdapter::EError;
-            }
-        else
-            {
-            TInt autoEnable;
-            err = autoEnableService->GetValue( autoEnable );
-            if ( KErrNone == err )
-                {
-                segmentResult.Num( autoEnable );
-                }
-            else
-                {
-                retValue = CSmlDmAdapter::EError;
-                }
-            }
-        CleanupStack::PopAndDestroy( autoEnableService );
-        }
-    // VoIP/x/SnapProfileId
-    else if ( KNSmlDMVoIPSnapProfileId() == uriSeg )
-        {
-        CSPProperty* snapProfileId = CSPProperty::NewLC();
-        TInt err = spSettings->FindPropertyL( serviceId, 
-            ESubPropertyVoIPPreferredSNAPId, *snapProfileId );
-        if ( KErrNone != err )
-            {
-            retValue = CSmlDmAdapter::EError;
-            }
-        else
-            {
-            TInt snapId;
-            err = snapProfileId->GetValue( snapId );
-            if ( KErrNone == err )
-                {
-                TBuf8<KMaxUriLength> snapUri;
-                retValue = GetSnapUriL( snapUri, (TUint32)snapId );
-                if ( EOk == retValue )
-                    {
-                    segmentResult.Copy( snapUri );
-                    }
-                }
-            else
-                {
-                retValue = CSmlDmAdapter::EError;
-                }
-            }
-        CleanupStack::PopAndDestroy( snapProfileId );
-        }
-    // VoIP/x/EnableIM
-    else if ( KNSmlDMVoIPEnableIm() == uriSeg )
-        {
-        CSPProperty* enableIm = CSPProperty::NewLC();
-        TInt err = spSettings->FindPropertyL( serviceId, 
-            ESubPropertyIMEnabled, *enableIm );
-        if ( KErrNotFound == err )
-            {
-            segmentResult.Copy( KNSmlDMVoIPValueFalse );
-            }
-        else if ( KErrNone != err )
-            {
-            retValue = CSmlDmAdapter::EError;
-            }
-        else
-            {
-            TInt enableValue;
-            err = enableIm->GetValue( enableValue );
-            if ( KErrNone == err && 0 < enableValue )
-                {
-                segmentResult.Copy( KNSmlDMVoIPValueTrue );
-                }
-            else if ( KErrNone == err && !enableValue )
-                {
-                segmentResult.Copy( KNSmlDMVoIPValueFalse );
-                }
-            else
-                {
-                retValue = CSmlDmAdapter::EError;
-                }
-            }
-        CleanupStack::PopAndDestroy( enableIm );
-        }
-
-    // ==============================
-    // CodecSettings node ( fetch )
-    // ==============================
-    //
-    // VoIP/x/PreferredCodecs node
-    if ( KNSmlDMVoIPPreferredCodecId() == uriSeg.Left(
-        KNSmlDMVoIPPreferredCodecId().Length() ) ) 
-        {
-        TInt preferredPos = DesToInt( LastURISeg( aLUID ).Right( 10 ) );
-        segmentResult.Num( iProfileEntries[iProfileID]->
-            iPreferredCodecs[preferredPos]);
-        }
-
-    // VoIP/x/CodecSettings node    
-    if ( KNSmlDMVoIPCodecSettingsId() == LastURISeg( aLUID ).
-        Left( KNSmlDMVoIPCodecSettingsId().Length() )
-        && KFiveSegs == NumOfURISegs( aURI ) )
-        {
-        retValue = FetchCodecObject( aLUID, uriSeg, segmentResult );
-        }
-
-    // ==============================
-    // SettingIds node ( fetch )
-    // ==============================
-    //
-    if ( KNSmlDMVoIPSettingId() == LastURISeg( aLUID ).
-        Left( KNSmlDMVoIPSettingId().Length() ) 
-        && KFiveSegs == NumOfURISegs( aURI ) )
-        {
-
-        //ProfileType
-        if ( KNSmlDMVoIPProfileType() == uriSeg )
-            {
-            if ( 0 == iProfileEntries[iProfileID]->iIds[DesToInt( 
-                LastURISeg( aLUID ).Right( 10 ))].iProfileType )
-                {
-                segmentResult.Copy( KNSmlDMVoIPProfileTypeSIP );
-                }
-            if ( 1 == iProfileEntries[iProfileID]->iIds[DesToInt( 
-                LastURISeg( aLUID ).Right( 10 ))].iProfileType )
-                {
-                segmentResult.Copy( KNSmlDMVoIPProfileTypeSCCP );
-                }
-            }
-
-        // ProfileId
-        if ( KNSmlDMVoIPProfileId() == uriSeg )
-            {
-            if ( 0 == iProfileEntries[iProfileID]->iIds[DesToInt( 
-                LastURISeg( aLUID ).Right( 10 ))].iProfileType )
-                {
-                retValue = GetSipIdL( result, iProfileEntries[iProfileID]->
-                    iIds[DesToInt( LastURISeg( aLUID ).Right( 10 ))].
-                    iProfileId );
-                }
-            if ( 1 == iProfileEntries[iProfileID]->iIds[DesToInt( 
-                LastURISeg( aLUID ).Right( 10 ))].iProfileType )
-                {
-                // Get SCCP ID from sccp adapter if exists
-                retValue = GetSccpIdL( result, iProfileEntries[iProfileID]->
-                    iIds[DesToInt( LastURISeg( aLUID ).Right( 10 ))].
-                    iProfileId );
-                }
-            }
-
-        // ProfileSpecificId
-        if ( KNSmlDMVoIPProfileSpecificId() == uriSeg )
-            {
-            segmentResult.Num( iProfileEntries[iProfileID]->iIds[
-                DesToInt( LastURISeg( aLUID ).Right( 10 ) ) ].
-                iProfileSpecificSettingId );
-            }
-        }
-
-    // ==============================
-    // VoiceMailBox node (fetch)
-    // ==============================
-    //
-    if ( KNSmlDMVoIPVmbxNode() == secondLastUriSeg &&
-        KFourSegs == NumOfURISegs( aURI ) )
-        {
-        // VoIP/x/VoiceMailBox/MWI-URI
-        if ( KNSmlDMVoIPMwiUri() == uriSeg )
-            {
-            CSPProperty* mwiUri = CSPProperty::NewLC();
-            TInt err = spSettings->FindPropertyL( serviceId, 
-                ESubPropertyVMBXMWIAddress, *mwiUri );
-            if ( KErrNone != err )
-                {
-                retValue = CSmlDmAdapter::EError;
-                }
-            else
-                {
-                TBuf16<KNSmlVoIPMaxUriLength> mwiAddr;
-                err = mwiUri->GetValue( mwiAddr );
-                if ( KErrNone == err )
-                    {
-                    segmentResult.Copy( mwiAddr );
-                    }
-                else
-                    {
-                    retValue = CSmlDmAdapter::EError;
-                    }
-                }
-            CleanupStack::PopAndDestroy( mwiUri );
-            }
-
-        // VoIP/x/VoiceMailBox/ListeningURI
-        if ( KNSmlDMVoIPListeningUri() == uriSeg )
-            {
-            CSPProperty* listeningUri = CSPProperty::NewLC();
-            TInt err = spSettings->FindPropertyL( serviceId, 
-                ESubPropertyVMBXListenAddress, *listeningUri );
-            if ( KErrNone != err )
-                {
-                retValue = CSmlDmAdapter::EError;
-                }
-            else
-                {
-                TBuf16<KNSmlVoIPMaxUriLength> listenUri;
-                err = listeningUri->GetValue( listenUri );
-                if ( KErrNone == err )
-                    {
-                    segmentResult.Copy( listenUri );
-                    }
-                else
-                    {
-                    retValue = CSmlDmAdapter::EError;
-                    }
-                }
-            CleanupStack::PopAndDestroy( listeningUri );
-            }
-
-        // VoIP/x/VoiceMailBox/UsedIAPId
-        if ( KNSmlDMVoIPUsedIAPId() == uriSeg )
-            {
-            CSPProperty* iapId = CSPProperty::NewLC();
-            TInt err = spSettings->FindPropertyL( serviceId, 
-                ESubPropertyVMBXPreferredIAPId, *iapId );
-            if ( KErrNone != err )
-                {
-                retValue = CSmlDmAdapter::EError;
-                }
-            else
-                {
-                TInt iap;
-                err = iapId->GetValue( iap );
-                if ( KErrNone == err )
-                    {
-                    retValue = GetConRefL( result, iap );
-                    if ( CSmlDmAdapter::EOk != retValue )
-                        {
-                        result.Reset();
-                        }
-                    }
-                else
-                    {
-                    retValue = CSmlDmAdapter::EError;
-                    }
-                
-                }
-            CleanupStack::PopAndDestroy( iapId );
-            }
-
-        // VoIP/x/VoiceMailBox/ReSubscribeInterval
-        if ( KNSmlDMVoIPReSubscribeInterval() == uriSeg )
-            {
-            CSPProperty* reSubscrInterval = CSPProperty::NewLC();
-            TInt err = spSettings->FindPropertyL( serviceId, 
-                ESubPropertyVMBXMWISubscribeInterval, *reSubscrInterval );
-            if ( KErrNone != err )
-                {
-                retValue = CSmlDmAdapter::EError;
-                }
-            else
-                {
-                TInt reSubscribe;
-                err = reSubscrInterval->GetValue( reSubscribe );
-                if ( KErrNone == err )
-                    {
-                    segmentResult.Num( reSubscribe );
-                    }
-                else
-                    {
-                    retValue = CSmlDmAdapter::EError;
-                    }
-                }
-            CleanupStack::PopAndDestroy( reSubscrInterval );
-            }
-
-        // VoIP/x/VoiceMailBox/UsedSIPProfileId
-        if ( KNSmlDMVoIPUsedSIPProfileId() == uriSeg )
-            {
-            CSPProperty* sipProfileId = CSPProperty::NewLC();
-            TInt err = spSettings->FindPropertyL( serviceId, 
-                ESubPropertyVMBXSettingsId, *sipProfileId );
-            if ( KErrNone != err )
-                {
-                retValue = CSmlDmAdapter::EError;
-                }
-            else
-                {
-                TInt sipId;
-                err = sipProfileId->GetValue( sipId );
-                if ( KErrNone == err )
-                    {
-                    retValue = GetSipIdL( result, sipId );
-                    if ( CSmlDmAdapter::EOk != retValue )
-                        {
-                        result.Reset();
-                        }
-                    }
-                else
-                    {
-                    retValue = CSmlDmAdapter::EError;
-                    }
-                }
-            CleanupStack::PopAndDestroy( sipProfileId );
-            }
-        }
-
-    result.InsertL( result.Size(), segmentResult );       
-    CleanupStack::PopAndDestroy( spSettings );
-
-    DBG_PRINT("CNSmlDmVoIPAdapter::FetchObjectL(): end");
-    return retValue;
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::FetchCodecObject
-// Fetches the values of Codec specific leaf objects.
-// ---------------------------------------------------------------------------
-//
-CSmlDmAdapter::TError CNSmlDmVoIPAdapter::FetchCodecObject( 
-    const TDesC8& aLUID, const TDesC8& aUriSeg, TDes8& aSegmentResult )
-    {
-    DBG_PRINT("CNSmlDmVoIPAdapter::FetchCodecObject(): begin");
-    
-    CSmlDmAdapter::TError retValue = CSmlDmAdapter::EOk;
-
-    TUint32 codecId = DesToInt( aLUID.Right( 10 ) );
-    TInt codecPos = FindCodecLocation( codecId );
-    if ( KErrNotFound != codecPos )
-        {
-        //CodecId
-        if ( KNSmlDMVoIPCodecId() == aUriSeg ) 
-            {
-            aSegmentResult.Num ( iCodecEntries[codecPos]->iCodecId );
-            }
-        //MediaTypeName
-        if ( KNSmlDMVoIPMediaTypeName() == aUriSeg ) 
-            {
-            aSegmentResult.Copy ( iCodecEntries[codecPos]->
-                iMediaTypeName );
-            }
-        //MediaSubTypeName
-        if ( KNSmlDMVoIPMediaSubTypeName() == aUriSeg ) 
-            {
-            aSegmentResult.Copy ( iCodecEntries[codecPos]->
-                iMediaSubTypeName );
-            }
-        //JitterBufferSize
-        if ( KNSmlDMVoIPJitterBufferSize() == aUriSeg ) 
-            {
-            if ( KNotSet < iCodecEntries[codecPos]->iJitterBufferSize )
-                {
-                aSegmentResult.Num ( iCodecEntries[codecPos]->
-                    iJitterBufferSize );
-                }
-            }
-        //OctetAlign            
-        if ( KNSmlDMVoIPOctetAlign() == aUriSeg ) 
-            {
-            if ( CRCSEAudioCodecEntry::EOn == 
-                iCodecEntries[codecPos]->iOctetAlign )
-                {
-                aSegmentResult.Copy( KNSmlDMVoIPValueTrue );
-                }
-            if ( CRCSEAudioCodecEntry::EOff == 
-                iCodecEntries[codecPos]->iOctetAlign )
-                {
-                aSegmentResult.Copy( KNSmlDMVoIPValueFalse );
-                }
-            }
-        //ModeChangePeriod
-        if ( KNSmlDMVoIPModeChangePeriod() == aUriSeg ) 
-            {
-            if ( KNotSet < iCodecEntries[codecPos]->
-                iModeChangePeriod )
-                {
-                aSegmentResult.Num( iCodecEntries[codecPos]->
-                    iModeChangePeriod );
-                }
-            }
-        //ModeChangeNeighbor          
-        if ( KNSmlDMVoIPModeChangeNeighbor() == aUriSeg ) 
-            {
-            if ( CRCSEAudioCodecEntry::EOn == 
-                iCodecEntries[codecPos]->iModeChangeNeighbor )
-                {
-                aSegmentResult.Copy( KNSmlDMVoIPValueTrue );
-                }
-            if ( CRCSEAudioCodecEntry::EOff == 
-                iCodecEntries[codecPos]->iModeChangeNeighbor )
-                {
-                aSegmentResult.Copy( KNSmlDMVoIPValueFalse );
-                }
-            }
-        //Ptime
-        if ( KNSmlDMVoIPPtime() == aUriSeg )  
-            {
-            if ( KNotSet < iCodecEntries[codecPos]->iPtime )
-                {
-                aSegmentResult.Num( iCodecEntries[codecPos]->iPtime );
-                }
-            }
-        //Maxptime
-        if ( KNSmlDMVoIPMaxPtime() == aUriSeg ) 
-            {
-            if ( KNotSet < iCodecEntries[codecPos]->iMaxptime )
-                {
-                aSegmentResult.Num( 
-                    iCodecEntries[codecPos]->iMaxptime );
-                }
-            }
-        //VAD                
-        if ( KNSmlDMVoIPVAD() == aUriSeg ) 
-            {
-            if ( CRCSEAudioCodecEntry::EOn ==
-                iCodecEntries[codecPos]->iVAD )
-                {
-                aSegmentResult.Copy( KNSmlDMVoIPValueTrue );
-                }
-            if ( CRCSEAudioCodecEntry::EOff == 
-                iCodecEntries[codecPos]->iVAD )
-                {
-                aSegmentResult.Copy( KNSmlDMVoIPValueFalse );
-                }
-            }
-        //AnnexB                
-        if ( KNSmlDMVoIPAnnexB() == aUriSeg ) 
-            {
-            if ( CRCSEAudioCodecEntry::EOn == 
-                iCodecEntries[codecPos]->iAnnexb )
-                {
-                aSegmentResult.Copy( KNSmlDMVoIPValueTrue );
-                }
-            if ( CRCSEAudioCodecEntry::EOff == 
-                iCodecEntries[codecPos]->iAnnexb )
-                {
-                aSegmentResult.Copy( KNSmlDMVoIPValueFalse );
-                }
-            }
-        // MaxRed
-        if ( KNSmlDMVoIPMaxRed() == aUriSeg )
-            {
-            if ( CRCSEAudioCodecEntry::EOONotSet < 
-                iCodecEntries[codecPos]->iMaxRed )                
-                {
-                aSegmentResult.Num( iCodecEntries[codecPos]->iMaxRed );
-                }
-            }
-
-        // ==============================
-        // ModeSet node ( fetch )
-        // ==============================
-        //
-        if ( KNSmlDMVoIPMode() == aUriSeg )  
-            {
-            aSegmentResult.Num ( iCodecEntries[codecPos]->
-                iModeSet[DesToInt( aLUID.Right( 10 ))] );
-            }
-        }
-    else
-        {
-        // Codec not found even if LUID exists.
-        retValue = CSmlDmAdapter::EError;    
-        }   
-
-    DBG_PRINT("CNSmlDmVoIPAdapter::FetchCodecObject(): begin");
-
-    return retValue;
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::ChildURIListL
-// Inserts the list of children objects of the node to dm-module
-// ---------------------------------------------------------------------------
-//
-void  CNSmlDmVoIPAdapter::ChildURIListL( 
-    const TDesC8& aURI,
-    const TDesC8& aLUID, 
-    const CArrayFix<TSmlDmMappingInfo>& aPreviousURISegmentList, 
-    const TInt aResultsRef, 
-    const TInt aStatusRef )
-    {
-    DBG_PRINT( "CNSmlDmVoIPAdapter::ChildURIListL(): start" );
-
-    __ASSERT_ALWAYS( iDmCallback != NULL, User::Leave( KErrArgument ) );
-
-    // Load VoIP profile information if not loaded yet
-    if ( !iProfileEntries.Count() )
-        {
-        LoadProfilesL();
-        }
-
-    CSmlDmAdapter::TError retValue = CSmlDmAdapter::EOk;
-
-    CBufBase *currentURISegmentList = CBufFlat::NewL( 1 );
-    CleanupStack::PushL( currentURISegmentList );
-
-    // get URI parameters
-    TBuf8<KNSmlVoIPMaxUriLength> uri( KNullDesC8 );
-    TBuf8<KNSmlVoIPMaxUriLength> mappingInfo( KNullDesC8 );
-    TPtrC8 uriTmp = RemoveLastURISeg( aURI );
-    TPtrC8 secondLastUriSeg = LastURISeg( uriTmp );
-    TBuf8<KSmlMaxURISegLen> segmentName;
-    TInt howManyObjects = iProfileEntries.Count();
-
-    iProfileID = FindProfileLocation( aLUID );
-
-    // VoIP
-    if ( KNSmlDMVoIPNodeName() == LastURISeg( aURI ) )   
-        {
-        for ( TInt counter = 0; counter < howManyObjects ; counter++ )
-            {
-            TBool notInList = ETrue;
-            TInt currentline = 0;
-            TUint ddId ( iProfileEntries[counter]->iId );
-            while ( notInList && currentline < aPreviousURISegmentList.Count() )
-                {
-                TInt profileLocation = FindProfileLocation(
-                    aPreviousURISegmentList.At( currentline ).iURISegLUID );
-                if ( profileLocation != KErrNotFound )
-                    {
-                    TUint32 profileID( 
-                        iProfileEntries[profileLocation]->iId );   
-                    if ( profileID == ddId ) 
-                        {
-                        notInList = EFalse;
-                        break;
-                        }
-                    }
-                currentline++;
-                }
-            if ( notInList )
-                {
-                // VoIP/x
-                segmentName.Copy( KNSmlDMVoIPPrefix );
-
-                // Add profileID number to identify profile
-                segmentName.AppendNumFixedWidthUC( 
-                    iProfileEntries[counter]->iId, EDecimal, 10 );
-                currentURISegmentList->InsertL( currentURISegmentList->
-                    Size(), segmentName );
-                currentURISegmentList->InsertL( currentURISegmentList->
-                    Size(), KNSmlDMVoIPSeparator );
-
-                // set luid mapping to dm-module
-                mappingInfo.Copy ( KNSmlDMVoIPPrefix );
-                TUint val ( iProfileEntries[counter]->iId );
-                mappingInfo.AppendNumFixedWidthUC( val, EDecimal, 10 );
-                uri.Copy( KNSmlDMVoIPNodeName );
-                uri.Append ( KNSmlDMVoIPSeparator );
-                uri.Append ( KNSmlDMVoIPPrefix );
-                uri.AppendNumFixedWidthUC( val, EDecimal, 10 );
-                iDmCallback->SetMappingL( uri, mappingInfo ); 
-                }
-            else
-                { // Add those in PreviousList which are on database
-                currentURISegmentList->InsertL( currentURISegmentList->Size(),
-                    aPreviousURISegmentList.At(currentline).iURISeg );
-                currentURISegmentList->InsertL( currentURISegmentList->Size(),
-                     KNSmlDMVoIPSeparator );
-                }
-            }
-        retValue = CSmlDmAdapter::EOk;
-        iDmCallback->SetStatusL( aStatusRef, retValue );
-        iDmCallback->SetResultsL( aResultsRef, *currentURISegmentList,
-            KNullDesC8 );
-        CleanupStack::PopAndDestroy( currentURISegmentList ); 
-        currentURISegmentList = NULL;
-        return;
-        }
-
-    if ( KErrNotFound == iProfileID )
-        {
-        retValue = CSmlDmAdapter::ENotFound;
-        iDmCallback->SetStatusL( aStatusRef, retValue );
-        CleanupStack::PopAndDestroy( currentURISegmentList ); 
-        currentURISegmentList = NULL;
-        return;
-        }
-
-    // VoIP/x/PreferredCodecs
-    if ( KNSmlDMVoIPPreferredCodecsNode() == LastURISeg( aURI ) )   
-        {
-        TInt preferredCount = iProfileEntries[iProfileID]->
-            iPreferredCodecs.Count();
-        for ( TInt counter = 0; counter < preferredCount ; counter++ )
-            { 
-            TBool inList = EFalse;
-            
-            // We need to rebuild LUID mapping if someone other has added or
-            // deleted codecs, because there is no usable link to each codec.
-            if ( aPreviousURISegmentList.Count() == preferredCount )
-                {
-                inList = ETrue;    
-                }
-            if ( !inList )
-                {
-                segmentName.Copy( KNSmlDMVoIPPreferredCodecId );
-                segmentName.AppendNumFixedWidthUC( counter + 1, EDecimal, 3 );
-                currentURISegmentList->InsertL( currentURISegmentList->
-                    Size(), segmentName );
-                currentURISegmentList->InsertL( currentURISegmentList->
-                    Size(), KNSmlDMVoIPSeparator );
-
-                // Set LUID mapping to dm-module.
-                mappingInfo.Copy ( aLUID ); 
-                mappingInfo.Append ( KNSmlDMVoIPSeparator );
-                mappingInfo.Append ( KNSmlDMVoIPPreferredCodecId );
-                mappingInfo.AppendNumFixedWidthUC( counter, EDecimal, 10 );
-                uri.Copy( aURI );
-                uri.Append ( KNSmlDMVoIPSeparator );
-                uri.Append ( KNSmlDMVoIPPreferredCodecId );
-                uri.AppendNumFixedWidthUC( counter + 1, EDecimal, 3 );
-                iDmCallback->SetMappingL( uri, mappingInfo ); 
-                }
-            else
-                { // Add those in PreviousList which are on database
-                currentURISegmentList->InsertL( currentURISegmentList->Size(),
-                    aPreviousURISegmentList.At( counter ).iURISeg );
-                currentURISegmentList->InsertL( currentURISegmentList->Size(),
-                     KNSmlDMVoIPSeparator );
-                }
-            }
-        }
-
-    // VoIP/x/PreferredCodecs/x/
-    else if ( KNSmlDMVoIPPreferredCodecsNode() == secondLastUriSeg
-        && KFourSegs == NumOfURISegs( aURI ) )
-        {
-        segmentName.Copy( KNSmlDMVoIPPreferredCodecId );
-        currentURISegmentList->InsertL( currentURISegmentList->
-                Size(), segmentName );
-        currentURISegmentList->InsertL( currentURISegmentList->
-                Size(), KNSmlDMVoIPSeparator );        
-        }
-
-    // VoIP/x/
-    else if ( KNSmlDMVoIPCodecSettingsNode() == LastURISeg( aURI ) )   
-        {
-        for ( TInt counter = 0; 
-            counter < iProfileEntries[iProfileID]->iPreferredCodecs.Count(); 
-            counter++ ) 
-            { 
-            TBool notInList = ETrue;
-            TInt currentline = 0;
-            TUint32 ddId = iProfileEntries[iProfileID]->
-                iPreferredCodecs[counter];
-            while ( notInList && currentline < 
-                aPreviousURISegmentList.Count() )
-                {
-                if ( DesToInt( aPreviousURISegmentList.At( currentline ).
-                    iURISegLUID.Right( 10 ) ) == ddId ) 
-                    {
-                    notInList = EFalse;
-                    break;
-                    }
-                currentline++;
-                }
-            if ( notInList )
-                {
-                segmentName.Copy( KNSmlDMVoIPCodecSettingsId );
-                segmentName.AppendNumFixedWidthUC( counter + 1, EDecimal, 3 );
-                currentURISegmentList->InsertL( currentURISegmentList->
-                    Size(), segmentName );
-                currentURISegmentList->InsertL( currentURISegmentList->
-                    Size(), KNSmlDMVoIPSeparator );
-
-                // Set LUID mapping to dm-module.
-                mappingInfo.Copy ( aLUID ); 
-                mappingInfo.Append ( KNSmlDMVoIPSeparator );
-                mappingInfo.Append ( KNSmlDMVoIPCodecSettingsId );
-                mappingInfo.AppendNumFixedWidthUC( ddId, EDecimal, 10 );
-                uri.Copy( aURI );
-                uri.Append ( KNSmlDMVoIPSeparator );
-                uri.Append ( KNSmlDMVoIPCodecSettingsId );
-                uri.AppendNumFixedWidthUC( counter + 1, EDecimal, 3 );
-                iDmCallback->SetMappingL( uri, mappingInfo ); 
-                }
-            else
-                { // Add those from PreviousList which are on database
-                currentURISegmentList->InsertL( currentURISegmentList->Size(),
-                    aPreviousURISegmentList.At(currentline).iURISeg );
-                currentURISegmentList->InsertL( currentURISegmentList->Size(),
-                     KNSmlDMVoIPSeparator );
-                }
-            }
-        }
-
-    // ==============================
-    // CodecSettings node
-    // ==============================
-    //
-    else if ( KNSmlDMVoIPCodecSettingsNode() == secondLastUriSeg 
-        && KFourSegs == NumOfURISegs( aURI ) )
-        {
-        CodecChildListL( currentURISegmentList );
-        }
-
-    // ==============================
-    // ModeSet node
-    // ==============================
-    //
-    else if ( KNSmlDMVoIPModeSetNode() == LastURISeg( aURI ) )   
-        {
-        TUint32 codecId;
-        codecId = DesToInt( aLUID.Right( 10 ) );
-        TInt codecPos = FindCodecLocation( codecId );    
-        if ( KErrNotFound != codecPos )
-            {
-            TInt modesetCount = iCodecEntries[codecPos]->iModeSet.Count();
-            for ( TInt counter = 0; counter < modesetCount; counter++ )
-                { 
-                TBool inList = EFalse;
-
-                // We need to rebuild LUID mapping if someone other has added
-                // or deleted, because there is no usable link to each ModeSet.
-                if ( aPreviousURISegmentList.Count() == modesetCount )
-                    {
-                    inList = ETrue;    
-                    }
-                if ( !inList )
-                    {
-                    segmentName.Copy( KNSmlDMVoIPModeId );
-                    segmentName.AppendNumFixedWidthUC( counter + 1, EDecimal,
-                        3 );
-                    currentURISegmentList->InsertL( currentURISegmentList->
-                        Size(), segmentName );
-                    currentURISegmentList->InsertL( currentURISegmentList->
-                        Size(), KNSmlDMVoIPSeparator );
-
-                    // Set LUID mapping to DM module.
-                    mappingInfo.Copy ( aLUID );
-                    mappingInfo.Append ( KNSmlDMVoIPSeparator );
-                    mappingInfo.Append ( KNSmlDMVoIPModeId );
-                    mappingInfo.AppendNumFixedWidthUC( counter, EDecimal, 10 );
-                    uri.Copy( aURI );
-                    uri.Append ( KNSmlDMVoIPSeparator );
-                    uri.Append ( KNSmlDMVoIPModeId );
-                    uri.AppendNumFixedWidthUC( counter + 1, EDecimal, 3 );
-                    iDmCallback->SetMappingL( uri, mappingInfo ); 
-                    }
-                else
-                    { // Add those in PreviousList which are on database.
-                    currentURISegmentList->InsertL( currentURISegmentList->
-                        Size(), aPreviousURISegmentList.At( counter ).iURISeg );
-                    currentURISegmentList->InsertL( currentURISegmentList->
-                        Size(), KNSmlDMVoIPSeparator );
-                    }
-                }
-            }
-        else
-            {
-            retValue = CSmlDmAdapter::EError;    
-            }    
-        
-        }       
-
-    else if ( KNSmlDMVoIPModeSetNode() == secondLastUriSeg 
-        && KSixSegs == NumOfURISegs( aURI ) )
-        {
-        segmentName.Copy( KNSmlDMVoIPMode );
-        currentURISegmentList->InsertL( currentURISegmentList->Size(), 
-            segmentName );
-        currentURISegmentList->InsertL( currentURISegmentList->Size(), 
-            KNSmlDMVoIPSeparator );
-        }       
-
-    // ==============================
-    // SettingIds node
-    // ==============================
-    //
-    // VoIP/x/SettingIds
-    else if ( KNSmlDMVoIPSettingIdsNode() == LastURISeg( aURI ) )    
-        {
-        for ( TInt counter = 0; counter < 
-            iProfileEntries[iProfileID]->iIds.Count(); counter++ )
-            { 
-            TBool inList = EFalse;
-
-            // We need to rebuild luid mapping if someone other has made
-            // some changes because there is no usable link to settingids.
-            if ( aPreviousURISegmentList.Count() == 
-                iProfileEntries[iProfileID]->iIds.Count() )
-                {
-                inList = ETrue;    
-                }
-            if ( !inList )
-                {
-                segmentName.Copy( KNSmlDMVoIPSettingId );
-                segmentName.AppendNumFixedWidthUC( counter + 1, EDecimal, 3 );
-                currentURISegmentList->InsertL( currentURISegmentList->
-                    Size(), segmentName );
-                currentURISegmentList->InsertL( currentURISegmentList->
-                    Size(), KNSmlDMVoIPSeparator );
-
-                // set luid mapping to dm-module
-                mappingInfo.Copy ( aLUID );     
-                mappingInfo.Append ( KNSmlDMVoIPSeparator );
-                mappingInfo.Append ( KNSmlDMVoIPSettingId );
-                mappingInfo.AppendNumFixedWidthUC( counter, EDecimal, 10 );
-                uri.Copy( aURI );
-                uri.Append ( KNSmlDMVoIPSeparator );
-                uri.Append ( KNSmlDMVoIPSettingId );
-                uri.AppendNumFixedWidthUC( counter + 1, EDecimal, 3 );
-                iDmCallback->SetMappingL( uri, mappingInfo ); 
-                }
-            else
-                { // Add those in PreviousList which are on database
-                currentURISegmentList->InsertL( currentURISegmentList->Size(),
-                    aPreviousURISegmentList.At( counter ).iURISeg );
-                currentURISegmentList->InsertL( currentURISegmentList->Size(),
-                     KNSmlDMVoIPSeparator );
-                }
-            }
-        }  
-
-    // ==============================
-    // SettingId leaf
-    // ==============================
-    //
-    else if ( KNSmlDMVoIPSettingIdsNode() == secondLastUriSeg
-        && KFourSegs == NumOfURISegs( aURI ) )
-        {
-        // ProfileType
-        segmentName.Copy( KNSmlDMVoIPProfileType );
-        currentURISegmentList->InsertL( currentURISegmentList->Size(), 
-            segmentName );
-        currentURISegmentList->InsertL( currentURISegmentList->Size(), 
-            KNSmlDMVoIPSeparator );
-
-        // ProfileId
-        segmentName.Copy( KNSmlDMVoIPProfileId );
-        currentURISegmentList->InsertL( currentURISegmentList->Size(), 
-            segmentName );
-        currentURISegmentList->InsertL( currentURISegmentList->Size(), 
-            KNSmlDMVoIPSeparator );
-
-        // ProfileSpecific
-        segmentName.Copy( KNSmlDMVoIPProfileSpecificId );
-        currentURISegmentList->InsertL( currentURISegmentList->Size(), 
-            segmentName );
-        currentURISegmentList->InsertL( currentURISegmentList->Size(), 
-            KNSmlDMVoIPSeparator );
-        }  
-
-    // ==============================
-    // VoIP/x/VoiceMailBox node
-    // ==============================
-    //
-    else if ( KNSmlDMVoIPVmbxNode() == LastURISeg( aURI ) && 
-        KThreeSegs == NumOfURISegs( aURI ) )
-        {
-        // VoIP/x/VoiceMailBox/MWI-URI
-        segmentName.Copy( KNSmlDMVoIPMwiUri );
-        currentURISegmentList->InsertL( currentURISegmentList->Size(),
-            segmentName );
-        currentURISegmentList->InsertL( currentURISegmentList->Size(), 
-            KNSmlDMVoIPSeparator );
-        // VoIP/x/VoiceMailBox/ListeningURI
-        segmentName.Copy( KNSmlDMVoIPListeningUri );
-        currentURISegmentList->InsertL( currentURISegmentList->Size(),
-            segmentName );
-        currentURISegmentList->InsertL( currentURISegmentList->Size(), 
-            KNSmlDMVoIPSeparator );
-        // VoIP/x/VoiceMailBox/UsedIAPId
-        segmentName.Copy( KNSmlDMVoIPUsedIAPId );
-        currentURISegmentList->InsertL( currentURISegmentList->Size(),
-            segmentName );
-        currentURISegmentList->InsertL( currentURISegmentList->Size(), 
-            KNSmlDMVoIPSeparator );
-        // VoIP/x/VoiceMailBox/ReSubscribeInterval
-        segmentName.Copy( KNSmlDMVoIPReSubscribeInterval );
-        currentURISegmentList->InsertL( currentURISegmentList->Size(),
-            segmentName );
-        currentURISegmentList->InsertL( currentURISegmentList->Size(), 
-            KNSmlDMVoIPSeparator );
-        // VoIP/x/VoiceMailBox/UsedSIPProfileId
-        segmentName.Copy( KNSmlDMVoIPUsedSIPProfileId );
-        currentURISegmentList->InsertL( currentURISegmentList->Size(),
-            segmentName );
-        currentURISegmentList->InsertL( currentURISegmentList->Size(), 
-            KNSmlDMVoIPSeparator );
-        }
-
-    // ==============================
-    // VoIP/x/ node
-    // ==============================
-    //
-    else if ( KNSmlDMVoIPNodeName() == secondLastUriSeg 
-        && KTwoSegs == NumOfURISegs( aURI ) )
-        {
-        VoipChildListL( currentURISegmentList );
-        }
-    else 
-        {
-        // if none of asked nodes found return error.
-        retValue = CSmlDmAdapter::ENotFound;
-        }
-    iDmCallback->SetStatusL( aStatusRef, retValue );
-    if ( CSmlDmAdapter::EOk == retValue )
-        {
-        iDmCallback->SetResultsL( aResultsRef, *currentURISegmentList, 
-            KNullDesC8 );
-        }
-    CleanupStack::PopAndDestroy( currentURISegmentList ); 
-    currentURISegmentList = NULL;
-    DBG_PRINT("CNSmlDmVoIPAdapter::ChildURIListL(): end");
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::CodecChildListL
-// Inserts Codec specific leaf objects.
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVoIPAdapter::CodecChildListL(
-    CBufBase* const aCurrentURISegmentList )
-    {
-    DBG_PRINT("CNSmlDmVoIPAdapter::CodecChildListL(): start");
-
-    TBuf8<KSmlMaxURISegLen> segmentName;
-
-    // VoIP/x/CodecSettings/CodecSettingsIdXXX/VoIPCodecId
-    segmentName.Copy( KNSmlDMVoIPCodecId );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/CodecSettings/CodecSettingsIdXXX/MediaTypeName
-    segmentName.Copy( KNSmlDMVoIPMediaTypeName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/CodecSettings/CodecSettingsIdXXX/MediaSubTypeName
-    segmentName.Copy( KNSmlDMVoIPMediaSubTypeName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/CodecSettings/CodecSettingsIdXXX/JitterBufferSize
-    segmentName.Copy( KNSmlDMVoIPJitterBufferSize );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/CodecSettings/CodecSettingsIdXXX/OctetAlign
-    segmentName.Copy( KNSmlDMVoIPOctetAlign );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/CodecSettings/CodecSettingsIdXXX/ModeSet
-    segmentName.Copy( KNSmlDMVoIPModeSetNode );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/CodecSettings/CodecSettingsIdXXX/ModeChangePeriod
-    segmentName.Copy( KNSmlDMVoIPModeChangePeriod );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/CodecSettings/CodecSettingsIdXXX/ModeChangeNeighbor
-    segmentName.Copy( KNSmlDMVoIPModeChangeNeighbor );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/CodecSettings/CodecSettingsIdXXX/Ptime
-    segmentName.Copy( KNSmlDMVoIPPtime );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/CodecSettings/CodecSettingsIdXXX/MaxPtime
-    segmentName.Copy( KNSmlDMVoIPMaxPtime );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/CodecSettings/CodecSettingsIdXXX/VAD
-    segmentName.Copy( KNSmlDMVoIPVAD );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/CodecSettings/CodecSettingsIdXXX/AnnexB
-    segmentName.Copy( KNSmlDMVoIPAnnexB );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(),
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/CodecSettings/CodecSettingsIdXXX/MaxRed
-    segmentName.Copy( KNSmlDMVoIPMaxRed );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(),
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(),
-        KNSmlDMVoIPSeparator );
-
-    DBG_PRINT("CNSmlDmVoIPAdapter::CodecChildListL(): end");
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::VoipChildListL
-// Inserts VoIP leaf objects.
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVoIPAdapter::VoipChildListL(
-    CBufBase* const aCurrentURISegmentList )
-    {
-    DBG_PRINT("CNSmlDmVoIPAdapter::VoipChildListL(): start");
-
-    TBuf8<KSmlMaxURISegLen> segmentName;
-
-    // VoIP/x/VoIPID
-    segmentName.Copy( KNSmlDMVoIPSetID );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(),
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/ProviderName
-    segmentName.Copy( KNSmlDMVoIPProvID );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/SettingsName
-    segmentName.Copy( KNSmlDMVoIPName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/PreferredCodecs
-    segmentName.Copy( KNSmlDMVoIPPreferredCodecsNode );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        segmentName ); 
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        KNSmlDMVoIPSeparator ); 
-
-    // VoIP/x/CodecSettings
-    segmentName.Copy( KNSmlDMVoIPCodecSettingsNode );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        segmentName ); 
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        KNSmlDMVoIPSeparator ); 
-
-    // VoIP/x/SettingIds
-    segmentName.Copy( KNSmlDMVoIPSettingIdsNode );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        segmentName ); 
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/StartMediaPort
-    segmentName.Copy( KNSmlDMVoIPSMPort );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        segmentName ); 
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/EndMediaPort
-    segmentName.Copy( KNSmlDMVoIPEMPort );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        segmentName ); 
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/VoiceMailBox
-    segmentName.Copy( KNSmlDMVoIPVmbxNode );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        segmentName ); 
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/MegiaQos
-    segmentName.Copy( KNSmlDMVoIPMediaQos );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        segmentName ); 
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/InbandDTMF
-    segmentName.Copy( KNSmlDMVoIPDTMFIB );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        segmentName ); 
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/OutbandDTMF
-    segmentName.Copy( KNSmlDMVoIPDTMFOB );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        segmentName ); 
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/SecureCallPref
-    segmentName.Copy( KNSmlDMVoIPSecureCallPref );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/RTCP
-    segmentName.Copy( KNSmlDMVoIPRTCP );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/UAHTerminalType
-    segmentName.Copy( KNSmlDMVoIPUAHTerminalType );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/UAHWLANMAC
-    segmentName.Copy( KNSmlDMVoIPUAHWLANMAC );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/UAHString
-    segmentName.Copy( KNSmlDMVoIPUAHString );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/ProfileLockedToIAP
-    segmentName.Copy( KNSmlDMVoIPProfileLockedToIAP );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/VoIPPluginUID
-    segmentName.Copy( KNSmlDMVoIPPluginUID );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/AllowVoIPoverWCDMA
-    segmentName.Copy( KNSmlDMVoIPAllowVoIPOverWCDMA );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(), 
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/VoIPDigits
-    segmentName.Copy( KNSmlDMVoIPVoIPDigits );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(),
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(),
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/URIDomainIgnoreRule
-    segmentName.Copy( KNSmlDMVoIPURIDomainIgnoreRule );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(),
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(),
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/AutoAcceptBuddyRequest
-    segmentName.Copy( KNSmlDMVoIPAutoAcceptBuddyRequest );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(),
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(),
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/UsedVoIPRelease
-    segmentName.Copy( KNSmlDMVoIPUsedVoIPRelease );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(),
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(),
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/AddUserPhone
-    segmentName.Copy( KNSmlDMVoIPAddUserPhone );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(),
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(),
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/ProviderBookmarkURI
-    segmentName.Copy( KNSmlDMVoIPProviderBookmarkUri );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(),
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(),
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/SIPConnectivityTestURI
-    segmentName.Copy( KNSmlDMVoIPSIPConnTestUri );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(),
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(),
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/NATFWProfileId
-    segmentName.Copy( KNSmlDMVoIPNatFwProfileId );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(),
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(),
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/MinSessionInterval
-    segmentName.Copy( KNSmlDMVoIPMinSessionInterval );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(),
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(),
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/SessionExpires
-    segmentName.Copy( KNSmlDMVoIPSessionExpires );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(),
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(),
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/BradingDataURI
-    segmentName.Copy( KNSmlDMVoIPBrandingDataUri );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(),
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(),
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/PresenceSettingsId
-    segmentName.Copy( KNSmlDMVoIPPresenceSettingsId );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(),
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(),
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/UsedNATProtocol
-    segmentName.Copy( KNSmlDMVoIPUsedNatProtocol );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(),
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(),
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/AutoEnable
-    segmentName.Copy( KNSmlDMVoIPAutoEnable );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(),
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(),
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/SnapProfileId
-    segmentName.Copy( KNSmlDMVoIPSnapProfileId );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(),
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(),
-        KNSmlDMVoIPSeparator );
-
-    // VoIP/x/EnableIM
-    segmentName.Copy( KNSmlDMVoIPEnableIm );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(),
-        segmentName );
-    aCurrentURISegmentList->InsertL( aCurrentURISegmentList->Size(),
-        KNSmlDMVoIPSeparator );
-
-    DBG_PRINT("CNSmlDmVoIPAdapter::VoipChildListL(): end");
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::AddNodeObjectL
-// Adds a new node.
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVoIPAdapter::AddNodeObjectL( 
-    const TDesC8& aURI, 
-    const TDesC8& aParentLUID, 
-    const TInt aStatusRef )
-    {
-    DBG_PRINT("CNSmlDmVoIPAdapter::AddNodeObjectL(): begin");
-
-    __ASSERT_ALWAYS( iDmCallback != NULL, User::Leave( KErrArgument ) );
-
-    CSmlDmAdapter::TError retValue = EOk;
-
-    // Load VoIP profile information if not loaded yet
-    if ( !iProfileEntries.Count() )
-        {
-        LoadProfilesL();
-        }
-    // Find profile from array, profile deleted from elsewhere if not found
-    if ( aParentLUID.Length() > 0 )
-        {
-        TInt profileID = FindProfileLocation ( aParentLUID );
-        if ( KErrNotFound == profileID )
-            {
-            retValue = CSmlDmAdapter::ENotFound;
-            }
-        else
-            {
-            retValue = CSmlDmAdapter::EAlreadyExists;
-            }
-        }
-
-    // Get last URI segment. 
-    TBuf8<KNSmlVoIPMaxUriLength> uri = aURI;
-    TBuf8<KNSmlVoIPMaxUriLength> mappingInfo ( KNullDesC8 );
-    TPtrC8 uriSeg = LastURISeg( aURI );
-    TPtrC8 uriTmp = RemoveLastURISeg( aURI );
-    TPtrC8 secondLastUriSeg = LastURISeg( uriTmp );
-
-     // Find profile
-    iProfileID = FindProfileLocation( aParentLUID );
-
-    // ==============================
-    // VoIP node ( add )
-    // ==============================
-    //
-    // VoIP/x/VoIP
-    if ( KNSmlDMVoIPNodeName() == secondLastUriSeg 
-        && ( EOk == retValue || ENotFound == retValue ) )
-        {
-        // Check OOD before saving new profile.
-        RFs fs;
-        User::LeaveIfError( fs.Connect() );
-        CleanupClosePushL( fs ); // CS:1
-
-        // VoIP settings are stored in three files.
-        if ( SysUtil::FFSSpaceBelowCriticalLevelL( 
-            &fs, KNSmlDMFatMinimumFileSize * 3 ) )
-            {
-            // Prevent writing in OOD.
-            CleanupStack::PopAndDestroy( &fs ); // CS:0
-            iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EDiskFull );
-            DBG_PRINT("CNSmlDmVoIPAdapter::AddNodeObjectL(): DISK FULL end");
-            return;
-            }
-        CleanupStack::PopAndDestroy( &fs ); // CS:0
-        CRCSEProfileEntry* newProfileEntry = CRCSEProfileEntry::NewLC();
-        iCRCSEProfile->GetDefaultProfile( *newProfileEntry );
-        if ( uriSeg.Length() < KMaxSettingsNameLength )
-            {
-            newProfileEntry->iSettingsName.Copy( uriSeg );
-            }
-        newProfileEntry->iProviderName.Copy( KDefaultSettingsName );
-        CheckDuplicateNameL( *newProfileEntry );
-        CheckDuplicateProviderL( *newProfileEntry );
-
-        CRCSEAudioCodecEntry* newAudioCodecEntry1 = 
-            CRCSEAudioCodecEntry::NewLC();
-        newAudioCodecEntry1->SetDefaultCodecValueSet( KAudioCodecAMRWB() );
-        newAudioCodecEntry1->iMediaSubTypeName = KAudioCodecAMRWB;
-        TUint32 codecId = iCRCSEAudioCodec->AddL( *newAudioCodecEntry1 );
-        newProfileEntry->iPreferredCodecs.Append( codecId );
-        newAudioCodecEntry1->iCodecId = codecId;
-        iCodecEntries.AppendL( newAudioCodecEntry1 );
-        CleanupStack::Pop( newAudioCodecEntry1 );
-
-        CRCSEAudioCodecEntry* newAudioCodecEntry2 = 
-            CRCSEAudioCodecEntry::NewLC();
-        newAudioCodecEntry2->SetDefaultCodecValueSet( KAudioCodecAMR() );
-        newAudioCodecEntry2->iMediaSubTypeName = KAudioCodecAMR;        
-        codecId = iCRCSEAudioCodec->AddL( *newAudioCodecEntry2 );
-        newProfileEntry->iPreferredCodecs.Append( codecId );
-        newAudioCodecEntry2->iCodecId = codecId; 
-        iCodecEntries.AppendL( newAudioCodecEntry2 );
-        CleanupStack::Pop( newAudioCodecEntry2 );
-
-        CRCSEAudioCodecEntry* newAudioCodecEntry3 = 
-            CRCSEAudioCodecEntry::NewLC();
-        newAudioCodecEntry3->SetDefaultCodecValueSet( KAudioCodecPCMU() );
-        newAudioCodecEntry3->iMediaSubTypeName = KAudioCodecPCMU;
-        codecId = iCRCSEAudioCodec->AddL( *newAudioCodecEntry3 );
-        newProfileEntry->iPreferredCodecs.Append( codecId );
-        newAudioCodecEntry3->iCodecId = codecId;
-        iCodecEntries.AppendL( newAudioCodecEntry3 );
-        CleanupStack::Pop( newAudioCodecEntry3 );
-
-        CRCSEAudioCodecEntry* newAudioCodecEntry4 = 
-            CRCSEAudioCodecEntry::NewLC();
-        newAudioCodecEntry4->SetDefaultCodecValueSet( KAudioCodecPCMA() );
-        newAudioCodecEntry4->iMediaSubTypeName = KAudioCodecPCMA;
-        codecId = iCRCSEAudioCodec->AddL( *newAudioCodecEntry4 );
-        newProfileEntry->iPreferredCodecs.Append( codecId );
-        newAudioCodecEntry4->iCodecId = codecId; 
-        iCodecEntries.AppendL( newAudioCodecEntry4 );
-        CleanupStack::Pop( newAudioCodecEntry4 );
-
-        CRCSEAudioCodecEntry* newAudioCodecEntry5 = 
-            CRCSEAudioCodecEntry::NewLC();
-        newAudioCodecEntry5->SetDefaultCodecValueSet( KAudioCodeciLBC() );
-        newAudioCodecEntry5->iMediaSubTypeName = KAudioCodeciLBC;
-        codecId = iCRCSEAudioCodec->AddL( *newAudioCodecEntry5 );
-        newProfileEntry->iPreferredCodecs.Append( codecId );
-        newAudioCodecEntry5->iCodecId = codecId; 
-        iCodecEntries.AppendL( newAudioCodecEntry5 );
-        CleanupStack::Pop( newAudioCodecEntry5 );
-
-        CRCSEAudioCodecEntry* newAudioCodecEntry6 = 
-            CRCSEAudioCodecEntry::NewLC();
-        newAudioCodecEntry6->SetDefaultCodecValueSet( KAudioCodecG729() );
-        newAudioCodecEntry6->iMediaSubTypeName = KAudioCodecG729;
-        codecId = iCRCSEAudioCodec->AddL( *newAudioCodecEntry6 );
-        newProfileEntry->iPreferredCodecs.Append( codecId );
-        newAudioCodecEntry6->iCodecId = codecId;
-        iCodecEntries.AppendL( newAudioCodecEntry6 );
-        CleanupStack::Pop( newAudioCodecEntry6 );
-
-        CRCSEAudioCodecEntry* newAudioCodecEntry7 = 
-            CRCSEAudioCodecEntry::NewLC();
-        newAudioCodecEntry7->SetDefaultCodecValueSet( KAudioCodecCN() );
-        newAudioCodecEntry7->iMediaSubTypeName = KAudioCodecCN;
-        codecId = iCRCSEAudioCodec->AddL( *newAudioCodecEntry7 );
-        newProfileEntry->iPreferredCodecs.Append( codecId );
-        newAudioCodecEntry7->iCodecId = codecId;
-        iCodecEntries.AppendL( newAudioCodecEntry7 );
-        CleanupStack::Pop( newAudioCodecEntry7 );
-
-        // Add SettingIds entry.
-        TSettingIds idEntry;
-        idEntry.iProfileType = -1;
-        // SIPSpecific not supported => ID not found.
-        idEntry.iProfileSpecificSettingId = KErrNotFound;
-        idEntry.iProfileId = -1;
-        newProfileEntry->iIds.Append( idEntry ); 
-
-        // Add new VoIP profile.
-        TUint32 profileID = iCRCSEProfile->AddL( *newProfileEntry );
-        newProfileEntry->iId = profileID;
-        iProfileEntries.AppendL( newProfileEntry );
-
-        // Add LUID mapping to first SettingIds of profile.
-        uri.Copy( aURI );
-        uri.Append( KNSmlDMVoIPSeparator );
-        uri.Append( KNSmlDMVoIPSettingIdsNode );
-        uri.Append( KNSmlDMVoIPSeparator );
-        uri.Append( KNSmlDMVoIPSettingId );
-        uri.AppendNumFixedWidthUC( 1, EDecimal, 3 );
-        mappingInfo.Copy( KNSmlDMVoIPPrefix );
-        mappingInfo.AppendNumFixedWidthUC( profileID, EDecimal, 10 );
-        mappingInfo.Append( KNSmlDMVoIPSeparator );
-        mappingInfo.Append( KNSmlDMVoIPSettingId );
-        mappingInfo.AppendNumFixedWidthUC( 0, EDecimal, 10 );
-        iDmCallback->SetMappingL( uri, mappingInfo ); 
-
-        // Add LUID mapping for CodecSettings and preferredCodecs.
-        for ( TInt counter = 0; counter < newProfileEntry->
-            iPreferredCodecs.Count(); counter++ )
-            {
-            uri.Copy( aURI );
-            uri.Append( KNSmlDMVoIPSeparator );
-            uri.Append( KNSmlDMVoIPCodecSettingsNode );
-            uri.Append( KNSmlDMVoIPSeparator );
-            uri.Append( KNSmlDMVoIPCodecSettingsId );
-            uri.AppendNumFixedWidthUC( counter + 1, EDecimal, 3 );
-            mappingInfo.Copy( KNSmlDMVoIPPrefix );
-            mappingInfo.AppendNumFixedWidthUC( profileID, EDecimal, 10 );
-            mappingInfo.Append( KNSmlDMVoIPSeparator );
-            mappingInfo.Append( KNSmlDMVoIPCodecSettingsId );
-            mappingInfo.AppendNumFixedWidthUC( newProfileEntry->
-                iPreferredCodecs[counter], EDecimal, 10 );
-            iDmCallback->SetMappingL( uri, mappingInfo ); 
-
-            uri.Copy( aURI );
-            uri.Append( KNSmlDMVoIPSeparator );
-            uri.Append( KNSmlDMVoIPPreferredCodecsNode );
-            uri.Append( KNSmlDMVoIPSeparator );
-            uri.Append( KNSmlDMVoIPPreferredCodecId );
-            uri.AppendNumFixedWidthUC( counter + 1, EDecimal, 3 );
-            mappingInfo.Copy( KNSmlDMVoIPPrefix );
-            mappingInfo.AppendNumFixedWidthUC( profileID, EDecimal, 10 );
-            mappingInfo.Append( KNSmlDMVoIPSeparator );
-            mappingInfo.Append( KNSmlDMVoIPPreferredCodecId );
-            mappingInfo.AppendNumFixedWidthUC( counter, EDecimal, 10 );
-            iDmCallback->SetMappingL( uri, mappingInfo ); 
-            }
-
-        // Set LUID mapping to DM module.
-        mappingInfo.Copy ( KNSmlDMVoIPPrefix );
-        mappingInfo.AppendNumFixedWidthUC( profileID, EDecimal, 10 );
-        iDmCallback->SetMappingL( aURI, mappingInfo ); 
-
-        CleanupStack::Pop( newProfileEntry );
-
-        retValue = CSmlDmAdapter::EOk;
-        }
-
-    if ( KErrNotFound != iProfileID )
-        {
-        // ==============================
-        // CodecSettings node (add)
-        // ==============================
-        //
-        if ( KNSmlDMVoIPCodecSettingsNode() == secondLastUriSeg &&
-            KErrNotFound == aParentLUID.Find( KNSmlDMVoIPCodecSettingsId ) )
-            {
-            CRCSEAudioCodecEntry *newAudioCodecEntry = 
-                CRCSEAudioCodecEntry::NewLC();
-            iCRCSEAudioCodec->GetDefaultCodec( *newAudioCodecEntry );
-            TUint32 codecId = iCRCSEAudioCodec->AddL( *newAudioCodecEntry );
-            newAudioCodecEntry->iCodecId = codecId;
-            iCodecEntries.AppendL( newAudioCodecEntry );
-
-            // Add new codec ID to iPreferredCodecs of current VoIP profile.
-            iProfileEntries[iProfileID]->
-                iPreferredCodecs.Append( codecId );
-
-            // Update VoIP profile back to permanent store.    
-            iCRCSEProfile->UpdateL( iProfileEntries[iProfileID]->
-                iId, *iProfileEntries[iProfileID] );
-            CleanupStack::Pop( newAudioCodecEntry );
-
-            // Add LUID mapping to new codecsettings entry.
-            mappingInfo.Copy( KNSmlDMVoIPPrefix );
-            TUint val( iProfileEntries[iProfileID]->iId );
-            mappingInfo.AppendNumFixedWidthUC( val, EDecimal, 10 );
-            mappingInfo.Append( KNSmlDMVoIPSeparator );
-            mappingInfo.Append( KNSmlDMVoIPCodecSettingsId );
-            mappingInfo.AppendNumFixedWidthUC( codecId, EDecimal, 10 );
-            iDmCallback->SetMappingL( aURI, mappingInfo );
-
-            // Add LUID mapping to new preferredcodecs entry.
-            uri.Copy( RemoveLastURISeg( RemoveLastURISeg( aURI ) ) );
-            uri.Append( KNSmlDMVoIPSeparator );
-            uri.Append( KNSmlDMVoIPPreferredCodecsNode );
-            uri.Append( KNSmlDMVoIPSeparator );
-            uri.Append( KNSmlDMVoIPPreferredCodecId );
-            uri.AppendNumFixedWidthUC( 
-                iProfileEntries[iProfileID]->iPreferredCodecs.Count(),
-                EDecimal, 3 );
-            mappingInfo.Copy( KNSmlDMVoIPPrefix );
-            mappingInfo.AppendNumFixedWidthUC( iProfileID, EDecimal, 10 );
-            mappingInfo.Append( KNSmlDMVoIPSeparator );
-            mappingInfo.Append( KNSmlDMVoIPPreferredCodecId );
-            mappingInfo.AppendNumFixedWidthUC( 
-                iProfileEntries[iProfileID]->iPreferredCodecs.Count() - 1,
-                EDecimal, 10 );
-            iDmCallback->SetMappingL( uri, mappingInfo );    
-            retValue = CSmlDmAdapter::EOk;
-            }
-
-        // ==============================
-        // ModeSet node (add)
-        // ==============================
-        //
-        if ( KNSmlDMVoIPModeSetNode() == secondLastUriSeg
-            && KErrNotFound == aParentLUID.Find( KNSmlDMVoIPModeId ) )
-            {
-            // Get codec ID used by these settings.
-            TUint32 codecId = DesToInt( aParentLUID.Right( 10 ) );
-            TInt codecPos = FindCodecLocation( codecId );
-            if ( KErrNotFound != codecPos )
-                {
-                iCodecEntries[codecPos]->iModeSet.Append( 1 );
-                iCRCSEAudioCodec->UpdateL( codecId,
-                    *iCodecEntries[codecPos] );
-
-                // All LUID mapping to new mode-set item.
-                mappingInfo.Copy( aParentLUID );
-                mappingInfo.Append( KNSmlDMVoIPSeparator );
-                mappingInfo.Append( KNSmlDMVoIPModeId );
-                mappingInfo.AppendNumFixedWidthUC( 
-                    iCodecEntries[codecPos]->iModeSet.Count() - 1,
-                    EDecimal, 10 );
-                iDmCallback->SetMappingL( aURI, mappingInfo ); 
-                retValue = CSmlDmAdapter::EOk;    
-                }
-            else
-                {
-                retValue = CSmlDmAdapter::EError;    
-                }
-            }
-
-        // ==============================
-        // SettingIds node (add)  
-        // ==============================
-        //
-        if ( KNSmlDMVoIPSettingIdsNode() == secondLastUriSeg &&
-            KErrNotFound == aParentLUID.Find( KNSmlDMVoIPSettingId ) )
-            {
-            TSettingIds idEntry;
-            idEntry.iProfileType = 0;
-            idEntry.iProfileSpecificSettingId = -1;
-            idEntry.iProfileId = 0;
-            iProfileEntries[iProfileID]->iIds.Append( idEntry ); 
-            iCRCSEProfile->UpdateL( iProfileEntries[iProfileID]->iId, 
-                *iProfileEntries[iProfileID] );
-            mappingInfo.Copy( KNSmlDMVoIPPrefix );
-            TUint val( iProfileEntries[iProfileID]->iId );
-            mappingInfo.AppendNumFixedWidthUC( val, EDecimal, 10 );
-            mappingInfo.Append( KNSmlDMVoIPSeparator );
-            mappingInfo.Append( KNSmlDMVoIPSettingId );
-            mappingInfo.AppendNumFixedWidthUC( 
-                iProfileEntries[iProfileID]->iIds.Count() - 1, EDecimal, 10 );
-            iDmCallback->SetMappingL( aURI, mappingInfo );       
-            retValue = CSmlDmAdapter::EOk;
-            }
-        }
-
-    // Return status ok for existing leaf nodes that do not need
-    // to be added separately.    
-    if ( aParentLUID.Length() > 0 && 
-        retValue != CSmlDmAdapter::ENotFound &&
-        ( KNSmlDMVoIPCodecSettingsNode() == uriSeg
-        || KNSmlDMVoIPModeSetNode() == uriSeg
-        || KNSmlDMVoIPSettingIdsNode() == uriSeg
-        || KNSmlDMVoIPSettingIdsNode() == uriSeg
-        || KNSmlDMVoIPVmbxNode() == uriSeg
-        ) )
-        {
-        retValue = CSmlDmAdapter::EOk;   
-        }
-    iDmCallback->SetStatusL( aStatusRef, retValue );
-
-    DBG_PRINT("CNSmlDmVoIPAdapter::AddNodeObjectL(): end");
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::UpdateLeafObjectL 
-// For streaming large object data.
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVoIPAdapter::UpdateLeafObjectL( 
-    const TDesC8& /*aURI*/, 
-    const TDesC8& /*aLUID*/, 
-    RWriteStream*& /*aStream*/, 
-    const TDesC8& /*aType*/, 
-    const TInt aStatusRef )
-    {
-    DBG_PRINT("CNSmlDmVoIPAdapter::UpdateLeafObjectL(): stream: begin");
-    __ASSERT_ALWAYS( iDmCallback != NULL, User::Leave( KErrArgument ) );
-    iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EError );
-    DBG_PRINT("CNSmlDmVoIPAdapter::UpdateLeafObjectL(): stream: end");
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::FetchLeafObjectSizeL
-// Fetches leaf object size of aURI.
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVoIPAdapter::FetchLeafObjectSizeL( 
-    const TDesC8& aURI, 
-    const TDesC8& aLUID, 
-    const TDesC8& aType, 
-    const TInt aResultsRef, 
-    const TInt aStatusRef )
-    {
-    DBG_PRINT("CNSmlDmVoIPAdapter::FetchLeafObjectSizeL(): begin");
-
-    __ASSERT_ALWAYS( iDmCallback != NULL, User::Leave( KErrArgument ) );
-
-    CBufBase *object = CBufFlat::NewL( 1 );
-    CleanupStack::PushL( object );
-    CSmlDmAdapter::TError retValue = FetchObjectL( aURI, aLUID, *object );
-
-    TInt objSizeInBytes = object->Size();
-    TBuf8<16> stringObjSizeInBytes;
-    stringObjSizeInBytes.Num( objSizeInBytes );
-    object->Reset();
-    object->InsertL( 0, stringObjSizeInBytes );
-
-    iDmCallback->SetStatusL( aStatusRef, retValue );
-    iDmCallback->SetResultsL( aResultsRef, *object, aType );
-    CleanupStack::PopAndDestroy( object ); 
-    object = NULL;
-    DBG_PRINT("CNSmlDmVoIPAdapter::FetchLeafObjectSizeL(): end");
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::ExecuteCommandL  
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVoIPAdapter::ExecuteCommandL( 
-    const TDesC8& /*aURI*/, 
-    const TDesC8& /*aLUID*/, 
-    const TDesC8& /*aArgument*/, 
-    const TDesC8& /*aType*/, 
-    const TInt aStatusRef )
-    {
-    DBG_PRINT("CNSmlDmVoIPAdapter::ExecuteCommandL(): begin");
-    __ASSERT_ALWAYS( iDmCallback != NULL, User::Leave( KErrArgument ) );
-    iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EError );
-    DBG_PRINT("CNSmlDmVoIPAdapter::ExecuteCommandL(): end");
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::ExecuteCommandL  
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVoIPAdapter::ExecuteCommandL( 
-    const TDesC8& /*aURI*/, 
-    const TDesC8& /*aParentLUID*/, 
-    RWriteStream*& /*aStream*/, 
-    const TDesC8& /*aType*/, 
-    const TInt aStatusRef )
-    {
-    DBG_PRINT("CNSmlDmVoIPAdapter::ExecuteCommandL(): stream: begin");
-    __ASSERT_ALWAYS( iDmCallback != NULL, User::Leave( KErrArgument ) );
-    iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EError );
-    DBG_PRINT("CNSmlDmVoIPAdapter::ExecuteCommandL(): stream: end");
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::CopyCommandL  
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVoIPAdapter::CopyCommandL( 
-    const TDesC8& /*aTargetURI*/, 
-    const TDesC8& /*aTargetLUID*/, 
-    const TDesC8& /*aSourceURI*/, 
-    const TDesC8& /*aSourceLUID*/, 
-    const TDesC8& /*aType*/, 
-    TInt aStatusRef )
-    {
-    DBG_PRINT("CNSmlDmVoIPAdapter::CopyCommandL(): begin");
-    __ASSERT_ALWAYS( iDmCallback != NULL, User::Leave( KErrArgument ) );
-    iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EError );
-    DBG_PRINT("CNSmlDmVoIPAdapter::CopyCommandL(): end");
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::StartAtomicL
-// For signaling adapter of beginning of the atomic section
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVoIPAdapter::StartAtomicL()
-    {
-    DBG_PRINT("CNSmlDmVoIPAdapter::StartAtomicL(): begin");
-    DBG_PRINT("CNSmlDmVoIPAdapter::StartAtomicL(): end");
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::CommitAtomicL
-// The CommitAtomicL call is issued only if all the commands in the Atomic were successful 
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVoIPAdapter::CommitAtomicL()
-    {
-    DBG_PRINT("CNSmlDmVoIPAdapter::CommitAtomicL(): begin");
-    DBG_PRINT("CNSmlDmVoIPAdapter::CommitAtomicL(): end");
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::RollbackAtomicL
-// For signaling adapter to roll back all atomic commands
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVoIPAdapter::RollbackAtomicL()
-    {
-    DBG_PRINT("CNSmlDmVoIPAdapter::RollbackAtomicL(): begin");
-    DBG_PRINT("CNSmlDmVoIPAdapter::RollbackAtomicL(): end");
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::StreamingSupport
-// For telling framework whether streaming large object data is supported
-// ---------------------------------------------------------------------------
-//
-TBool CNSmlDmVoIPAdapter::StreamingSupport( TInt& /*aItemSize*/ )
-    {
-    DBG_PRINT("CNSmlDmVoIPAdapter::StreamingSupport(): begin");
-    DBG_PRINT("CNSmlDmVoIPAdapter::StreamingSupport(): end");
-    return EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::StreamCommittedL()
-// For telling adapter when streaming large object is finished.
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVoIPAdapter::StreamCommittedL()
-    {
-    DBG_PRINT("CNSmlDmVoIPAdapter::StreamCommittedL(): begin");
-    DBG_PRINT("CNSmlDmVoIPAdapter::StreamCommittedL(): end");
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::CompleteOutstandingCmdsL()
-// When all buffered dm commands are sent to adapter, set SIP User Agent 
-// Header into SIPManagedProfile, and save all changes.
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVoIPAdapter::CompleteOutstandingCmdsL()
-    {
-    DBG_PRINT("CNSmlDmVoIPAdapter::CompleteOutstandingCmdsL(): begin");
-
-    // Save only profiles that have changed. If there are such profiles,
-    // save changed profiles back to permanent store
-    if ( iProfileEntries.Count() )
-        {
-        for ( TInt counter = 0; counter < iProfileModifs.Count(); counter++ )
-            {
-            for ( TInt index = 0; index < iProfileEntries[counter]->
-                iIds.Count(); index++ )
-                {
-                if ( ( 0 == iProfileEntries[counter]->
-                    iIds[index].iProfileType ) 
-                    && iProfileEntries[counter]->
-                        iIds[index].iProfileId > 0
-                    && ( iProfileEntries[counter]->
-                        iSIPVoIPUAHTerminalType ||
-                        iProfileEntries[counter]->
-                        iSIPVoIPUAHeaderWLANMAC ||
-                        iProfileEntries[counter]->
-                        iSIPVoIPUAHeaderString.Length() > 0 ||
-                        iAllowVoIPOverWCDMAModified ) )
-                    {
-                    // Create objects that allow the creation of
-                    // CSIPManagedProfile object.
-                    CSIPProfile* sipProf = NULL;
-                    CSIPProfileRegistryObserver* sipRegObs =
-                        CSIPProfileRegistryObserver::NewLC(); // CS:1
-                    CSIPManagedProfileRegistry* sipProfReg = 
-                        CSIPManagedProfileRegistry::NewLC( 
-                            *sipRegObs ); // CS:2
-                    TRAPD( err, ( sipProf = sipProfReg->ProfileL( 
-                        iProfileEntries[counter]->
-                        iIds[index].iProfileId ) ) );
-                    if ( KErrNone == err )
-                        {
-                        CSIPManagedProfile* sipManProf = 
-                            static_cast<CSIPManagedProfile*>( sipProf );
-                        CleanupStack::PushL( sipManProf ); // CS:3
-                        // Compile the User Agent Header into a TBuf string.
-                        TBuf8<KTempStringlength> userAgentHeader;
-                        TBuf<KMaxTerminalTypeLength> tempTerminalType;
-                        TBuf<KWlanMacAddressLength> tempWlanMac;
-                        TBuf<KMaxSettingsLength32> tempFreeString;
-                        tempFreeString = iProfileEntries[counter]->
-                            iSIPVoIPUAHeaderString;
-
-                        userAgentHeader.Append( KUserAgent );
-                        userAgentHeader.Append( KColonMark );
-                        userAgentHeader.Append( KSpaceMark );
-
-                        if ( iProfileEntries[counter]->
-                            iSIPVoIPUAHTerminalType )
-                            {
-                            GetTerminalTypeL( tempTerminalType );
-                            userAgentHeader.Append( tempTerminalType );
-                            userAgentHeader.Append( KSpaceMark );
-                            }
-                        if ( iProfileEntries[counter]->
-                            iSIPVoIPUAHeaderWLANMAC )
-                            {
-                            GetWlanMacAddressL( tempWlanMac );
-                            userAgentHeader.Append( tempWlanMac );
-                            userAgentHeader.Append( KSpaceMark );
-                            }
-                        if ( tempFreeString.Length() > 0 )
-                            {
-                            userAgentHeader.Append( tempFreeString );
-                            }
-
-                        // Create an array for setting the user agent header.
-                        // Granularity is 1 since only one item is appended
-                        // into the array.
-                        CDesC8ArrayFlat* uahArray = new ( ELeave ) 
-                            CDesC8ArrayFlat( 1 );
-        	            CleanupStack::PushL( uahArray ); // CS:4
-        	            uahArray->AppendL( userAgentHeader );
-                        if ( userAgentHeader.Length() > 0 )
-                            {
-                            User::LeaveIfError( 
-                                sipManProf->SetParameter( 
-                                KSIPHeaders, *uahArray ) );
-                            }
-                        
-                        if ( iAllowVoIPOverWCDMAModified )
-                            {
-                            if ( iProfileEntries[iProfileID]->
-                                    iAllowVoIPoverWCDMA == 
-                                     CRCSEProfileEntry::EOn )
-                                {
-                                User::LeaveIfError( 
-                                    sipManProf->SetParameter( 
-                                    KBearerType, KBearerNotSpecified ) );
-                                }
-                            else if ( iProfileEntries[iProfileID]->
-                                         iAllowVoIPoverWCDMA ==
-                                         CRCSEProfileEntry::EOff )
-                                {
-                                User::LeaveIfError( 
-                                    sipManProf->SetParameter( 
-                                    KBearerType, KBearerWlanOnly ) );
-                                }
-                            iAllowVoIPOverWCDMAModified = EFalse;
-                            }
-
-                        sipProfReg->SaveL( *sipManProf );
-                        uahArray->Reset();
-                        // uahArray, sipManProf 
-                        CleanupStack::PopAndDestroy( uahArray );  // CS:3
-                        CleanupStack::PopAndDestroy( sipManProf );  // CS:2
-                        }// if
-                    // sipProfReg, sipRegObs
-                    CleanupStack::PopAndDestroy( sipProfReg ); // CS:1
-                    CleanupStack::PopAndDestroy( sipRegObs ); // CS:0
-                    sipProf = NULL;
-                    }// if
-                }// for
-            iCRCSEProfile->UpdateL( 
-                iProfileEntries[iProfileModifs[counter]]->iId,
-                *iProfileEntries[iProfileModifs[counter]] );
-            }
-        iProfileModifs.Reset();
-        }
-
-    if ( iCodecEntries.Count() )
-        {
-        for ( TInt counter = 0; counter < iCodecModifs.Count(); counter++ )
-            {
-            iCRCSEAudioCodec->UpdateL( iCodecEntries[iCodecModifs[counter]]->
-                iCodecId, *iCodecEntries[iCodecModifs[counter]] );
-            }
-        iCodecModifs.Reset();
-        }  
-
-    // Since CRCSEProfileRegistry::UpdateL takes CRCSEProfileEntry as const,
-    // the service ID'S in iProfileEntries array items have not changed.
-    // Hence load all profiles again from CRCSEProfileRegistry.
-    iCodecEntries.ResetAndDestroy();
-    iProfileEntries.ResetAndDestroy();
-    LoadProfilesL();
-
-
-    const TInt spSettingsCount = iSPSettings.Count();
-    if ( spSettingsCount )
-        {
-        // Set SPS ready for setting values.
-        CSPSettings* spSettings = CSPSettings::NewLC(); // CS:1
-
-        for ( TInt counter = 0; counter < spSettingsCount; counter++ )
-            {
-            TUint32 serviceId = 
-                iProfileEntries[iProfileID]->iServiceProviderId;
-
-            TInt err( KErrNone );
-            CSPEntry* spEntry = CSPEntry::NewLC(); // CS:2
-            err = spSettings->FindEntryL( serviceId, *spEntry );
-            User::LeaveIfError( err );
-
-            CSPProperty* property = CSPProperty::NewLC(); // CS:3
-
-            // VMBX MWI-URI.
-            if ( iSPSettings[counter]->iVmbxMwiUri->Des().Length() )
-                {
-                err = property->SetName( ESubPropertyVMBXMWIAddress );
-                property->SetValue( 
-                    iSPSettings[counter]->iVmbxMwiUri->Des() );
-                if ( KErrNone == err )
-                    {
-                    err = spEntry->AddPropertyL( *property );
-                    if ( KErrAlreadyExists == err )
-                        {
-                        User::LeaveIfError( spEntry->UpdateProperty( 
-                            ESubPropertyVMBXMWIAddress, 
-                            iSPSettings[counter]->iVmbxMwiUri->Des() ) );
-                        }
-                    else
-                        {
-                        User::LeaveIfError( err );
-                        }
-                    }
-
-                // Let's check if listening URI has been or is about
-                // to be set. If not, set same as in MWI address.
-                CSPProperty* listeningUri = CSPProperty::NewLC();
-                err = spSettings->FindPropertyL( serviceId, 
-                    ESubPropertyVMBXListenAddress, *listeningUri );
-                if ( KErrNone != err && 
-                    !iSPSettings[counter]->iVmbxListenUri->Des().Length() )
-                    {
-                    delete iSPSettings[counter]->iVmbxListenUri;
-                    iSPSettings[counter]->iVmbxListenUri = NULL;
-                    iSPSettings[counter]->iVmbxListenUri = 
-                        iSPSettings[counter]->iVmbxMwiUri->Des().AllocL();
-                    }
-                CleanupStack::PopAndDestroy( listeningUri );
-
-                // Let's check if re-subscribe interval has been or is
-                // about to be set. If not, set default value.
-                CSPProperty* reSubscrInterval = CSPProperty::NewLC();
-                err = spSettings->FindPropertyL( serviceId, 
-                    ESubPropertyVMBXMWISubscribeInterval, *reSubscrInterval );
-                if ( KErrNone != err && 
-                    iSPSettings[counter]->iReSubscribeInterval == KErrNotFound )
-                    {
-                    iSPSettings[counter]->iReSubscribeInterval = 
-                        KDefaultReSubscribe;
-                    }
-                CleanupStack::PopAndDestroy( reSubscrInterval );
-                }
-
-            // VMBX ListeningURI.
-            if ( iSPSettings[counter]->iVmbxListenUri->Des().Length() )
-                {
-                err = property->SetName( ESubPropertyVMBXListenAddress );
-                property->SetValue( 
-                    iSPSettings[counter]->iVmbxListenUri->Des() );
-                if ( KErrNone == err )
-                    {
-                    err = spEntry->AddPropertyL( *property );
-                    if ( KErrAlreadyExists == err )
-                        {
-                        User::LeaveIfError( spEntry->UpdateProperty( 
-                            ESubPropertyVMBXListenAddress, 
-                            iSPSettings[counter]->iVmbxListenUri->Des() ) );
-                        }
-                    else
-                        {
-                        User::LeaveIfError( err );
-                        }
-                    }
-                }
-
-            // VMBX IAP ID.
-            if ( KErrNone != iSPSettings[counter]->iVmbxIapId )
-                {
-                err = property->SetName( ESubPropertyVMBXPreferredIAPId );
-                property->SetValue( iSPSettings[counter]->iVmbxIapId );
-                if ( KErrNone == err )
-                    {
-                    err = spEntry->AddPropertyL( *property );
-                    if ( KErrAlreadyExists == err )
-                        {
-                        User::LeaveIfError( spEntry->UpdateProperty( 
-                            ESubPropertyVMBXPreferredIAPId, 
-                            iSPSettings[counter]->iVmbxIapId ) );
-                        }
-                    else
-                        {
-                        User::LeaveIfError( err );
-                        }
-                    }
-                }
-
-            // VMBX re-SUBSCRIBE interval.
-            if ( KErrNotFound != iSPSettings[counter]->iReSubscribeInterval )
-                {
-                err = property->SetName( 
-                    ESubPropertyVMBXMWISubscribeInterval );
-                property->SetValue( 
-                    iSPSettings[counter]->iReSubscribeInterval );
-                if ( KErrNone == err )
-                    {
-                    err = spEntry->AddPropertyL( *property );
-                    if ( KErrAlreadyExists == err )
-                        {
-                        User::LeaveIfError( spEntry->UpdateProperty( 
-                            ESubPropertyVMBXMWISubscribeInterval, 
-                            iSPSettings[counter]->iReSubscribeInterval ) );
-                        }
-                    else
-                        {
-                        User::LeaveIfError( err );
-                        }
-                    }
-                }
-
-            // VMBX SIP ID.
-            if ( KErrNone != iSPSettings[counter]->iVmbxSipId )
-                {
-                err = property->SetName( ESubPropertyVMBXSettingsId );
-                property->SetValue( iSPSettings[counter]->iVmbxSipId );
-                if ( KErrNone == err )
-                    {
-                    err = spEntry->AddPropertyL( *property );
-                    if ( KErrAlreadyExists == err )
-                        {
-                        User::LeaveIfError( spEntry->UpdateProperty( 
-                            ESubPropertyVMBXSettingsId, 
-                            iSPSettings[counter]->iVmbxSipId ) );
-                        }
-                    else
-                        {
-                        User::LeaveIfError( err );
-                        }
-                    }
-                }
-
-            // Service provider bookmark URI.
-            if ( iSPSettings[counter]->iServiceProviderBookmark->
-                Des().Length() )
-                {
-                err = property->SetName( EPropertyServiceBookmarkUri );
-                property->SetValue( 
-                    iSPSettings[counter]->iServiceProviderBookmark->Des() );
-                if ( KErrNone == err )
-                    {
-                    err = spEntry->AddPropertyL( *property );
-                    if ( KErrAlreadyExists == err )
-                        {
-                        User::LeaveIfError( spEntry->UpdateProperty( 
-                            EPropertyServiceBookmarkUri, 
-                            iSPSettings[counter]->
-                            iServiceProviderBookmark->Des() ) );
-                        }
-                    else
-                        {
-                        User::LeaveIfError( err );
-                        }
-                    }
-                }
-
-            // Branding data URI.
-            if ( iSPSettings[counter]->iBrandingDataUri->Des().Length() )
-                {
-                err = property->SetName( ESubPropertyVoIPBrandDataUri );
-                property->SetValue( 
-                    iSPSettings[counter]->iBrandingDataUri->Des() );
-                if ( KErrNone == err )
-                    {
-                    err = spEntry->AddPropertyL( *property );
-                    if ( KErrAlreadyExists == err )
-                        {
-                        User::LeaveIfError( spEntry->UpdateProperty( 
-                            ESubPropertyVoIPBrandDataUri, 
-                            iSPSettings[counter]->iBrandingDataUri->Des() ) );
-                        }
-                    else
-                        {
-                        User::LeaveIfError( err );
-                        }
-                    }
-                }
-
-            // Presence settings ID.
-            if ( KErrNone != iSPSettings[counter]->iPresenceId )
-                {
-                err = property->SetName( ESubPropertyPresenceSettingsId );
-                property->SetValue( 
-                    iSPSettings[counter]->iPresenceId );
-                if ( KErrNone == err )
-                    {
-                    err = spEntry->AddPropertyL( *property );
-                    if ( KErrAlreadyExists == err )
-                        {
-                        User::LeaveIfError( spEntry->UpdateProperty( 
-                            ESubPropertyPresenceSettingsId, 
-                            iSPSettings[counter]->iPresenceId ) );
-                        }
-                    else
-                        {
-                        User::LeaveIfError( err );
-                        }
-                    }
-                }
-
-            // Presence auto accept buddy request.
-            if ( KErrNotFound != iSPSettings[counter]->iAutoAcceptBuddy )
-                {
-                TOnOff value( static_cast<TOnOff>( 
-                    iSPSettings[counter]->iAutoAcceptBuddy ) );
-                err = property->SetName( 
-                    ESubPropertyPresenceRequestPreference );
-                property->SetValue( value );
-                if ( KErrNone == err )
-                    {
-                    err = spEntry->AddPropertyL( *property );
-                    if ( KErrAlreadyExists == err )
-                        {
-                        User::LeaveIfError( spEntry->UpdateProperty( 
-                            ESubPropertyPresenceRequestPreference, value ) );
-                        }
-                    else
-                        {
-                        User::LeaveIfError( err );
-                        }
-                    }
-                }
-
-            // Auto enable service.
-            if ( KErrNotFound != iSPSettings[counter]->iAutoEnableService )
-                {
-                TOnOff value( static_cast<TOnOff>( 
-                    iSPSettings[counter]->iAutoEnableService ) );
-                err = property->SetName( ESubPropertyVoIPEnabled );
-                err = property->SetValue( value );
-                if ( KErrNone == err )
-                    {
-                    err = spEntry->AddPropertyL( *property );
-                    if ( KErrAlreadyExists == err )
-                        {
-                        User::LeaveIfError( spEntry->UpdateProperty( 
-                            ESubPropertyVoIPEnabled, value ) ) ;
-                        }
-                    else
-                        {
-                        User::LeaveIfError( err );
-                        }
-                    }
-                // enable presence
-                if ( KErrNone != iSPSettings[counter]->iPresenceId )
-                    {
-                    err = property->SetName( ESubPropertyPresenceEnabled );
-                    property->SetValue( value );
-                    if ( KErrNone == err )
-                        {
-                        err = spEntry->AddPropertyL( *property );
-                        if ( KErrAlreadyExists == err )
-                            {
-                            User::LeaveIfError( spEntry->UpdateProperty( 
-                                ESubPropertyPresenceEnabled, value ) );
-                            }
-                        else
-                            {
-                            User::LeaveIfError( err );
-                            }
-                        }
-                    }
-                // enable voicemailbox
-                if ( KErrNone != iSPSettings[counter]->iVmbxIapId )
-                    {
-                    err = property->SetName( ESubPropertyVMBXEnabled );
-                    property->SetValue( value );
-                    if ( KErrNone == err )
-                        {
-                        err = spEntry->AddPropertyL( *property );
-                        if ( KErrAlreadyExists == err )
-                            {
-                            User::LeaveIfError( spEntry->UpdateProperty( 
-                                ESubPropertyVMBXEnabled, value ) );
-                            }
-                        else
-                            {
-                            User::LeaveIfError( err );
-                            }
-                        }
-                    }
-                }
-
-            // SNAP Profile ID.
-            if ( KErrNone != iSPSettings[counter]->iSnapId )
-                {
-                err = property->SetName( ESubPropertyVoIPPreferredSNAPId );
-                property->SetValue( iSPSettings[counter]->iSnapId );
-                if ( KErrNone == err )
-                    {
-                    err = spEntry->AddPropertyL( *property );
-                    if ( KErrAlreadyExists == err )
-                        {
-                        User::LeaveIfError( spEntry->UpdateProperty( 
-                            ESubPropertyVoIPPreferredSNAPId, 
-                            iSPSettings[counter]->iSnapId ) );
-                        }
-                    else
-                        {
-                        User::LeaveIfError( err );
-                        }
-                    }
-                }
-
-            // Enable IM
-            if ( KErrNotFound != iSPSettings[counter]->iImEnabled )
-                {
-                // IM is enabled => add or set IM properties.
-                if ( iSPSettings[counter]->iImEnabled )
-                    {
-                    // IM enabled.
-                    property->SetName( ESubPropertyIMEnabled );
-                    property->SetValue( EOn );
-                    err = spEntry->AddPropertyL( *property );
-                    if ( KErrAlreadyExists == err )
-                        {
-                        User::LeaveIfError( spEntry->UpdateProperty( 
-                            ESubPropertyIMEnabled, EOn ) );
-                        }
-
-                    // IM launch UID.
-                    property->SetName( ESubPropertyIMLaunchUid );
-                    property->SetValue( KIMLaunchUid );
-                    err = spEntry->AddPropertyL( *property );
-                    if ( KErrAlreadyExists == err )
-                        {
-                        User::LeaveIfError( spEntry->UpdateProperty( 
-                            ESubPropertyIMLaunchUid, KIMLaunchUid ) );
-                        }
-
-                    // IM settings ID.
-                    property->SetName( ESubPropertyIMSettingsId );
-                    // The value only needs to be different from 0,
-                    // no-one actually uses it.
-                    property->SetValue( KIMSettingsId );
-                    err = spEntry->AddPropertyL( *property );
-                    if ( KErrAlreadyExists == err )
-                        {
-                        User::LeaveIfError( spEntry->UpdateProperty( 
-                            ESubPropertyIMSettingsId, KIMSettingsId ) );
-                        }
-
-                    // IM sub-service plugin UID.
-                    property->SetName( EPropertyIMSubServicePluginId );
-                    property->SetValue( KIMSubServicePluginId );
-                    err = spEntry->AddPropertyL( *property );
-                    if ( KErrAlreadyExists == err )
-                        {
-                        User::LeaveIfError( spEntry->UpdateProperty( 
-                            EPropertyIMSubServicePluginId, 
-                            KIMSubServicePluginId ) );
-                        }
-
-                    // IM preferred SNAP ID.
-                    const CSPProperty* snap;
-                    spEntry->GetProperty( snap, 
-                        ESubPropertyVoIPPreferredSNAPId );
-                    TInt snapId( KErrNone );
-                    err = snap->GetValue( snapId );
-                    if ( KErrNone == err )
-                        {
-                        property->SetName( ESubPropertyIMPreferredSNAPId );
-                        err = property->SetValue( snapId );
-                        if ( KErrNone == err )
-                            {
-                            err = spEntry->AddPropertyL( *property );
-                           if ( KErrAlreadyExists == err )
-                                {
-                                User::LeaveIfError( spEntry->UpdateProperty( 
-                                    ESubPropertyIMPreferredSNAPId, 
-                                    snapId ) );
-                                }
-                            }
-                        }
-
-                    // IM default tone.
-                    TFileName toneFile;
-                    toneFile.Copy( PathInfo::RomRootPath() );
-                    toneFile.Append( PathInfo::DigitalSoundsPath() );
-                    toneFile.Append( KDefaultTone );
-                    MVIMPSTSettingsStore* vimpStSettings =
-                        CVIMPSTSettingsStore::NewLC(); // CS:4
-                    User::LeaveIfError( vimpStSettings->SetL( serviceId,
-                        EServiceToneFileName, toneFile ) );
-                    // Pop vimpStSettings (can't use M object as argument).
-                    CleanupStack::PopAndDestroy(); // CS:3
-                    }
-                // IM enabled is set to false => delete IM properties.
-                else
-                    {
-                    spEntry->DeleteProperty( ESubPropertyIMEnabled );
-                    spEntry->DeleteProperty( ESubPropertyIMLaunchUid );
-                    spEntry->DeleteProperty( ESubPropertyIMSettingsId );
-                    spEntry->DeleteProperty( EPropertyIMSubServicePluginId );
-                    spEntry->DeleteProperty( ESubPropertyIMPreferredSNAPId );
-                    }
-                }
-
-            err = spSettings->UpdateEntryL( *spEntry );
-            // property, spEntry
-			CleanupStack::PopAndDestroy( property ); // CS:2
-            CleanupStack::PopAndDestroy( spEntry ); // CS:1
-            } // for
-        CleanupStack::PopAndDestroy( spSettings ); // CS:0
-        iSPSettings.ResetAndDestroy();
-        }
-
-    DBG_PRINT("CNSmlDmVoIPAdapter::CompleteOutstandingCmdsL(): end");   
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::FindProfileLocation
-// Finds profileID from aURI and returns profile location in array.
-// ---------------------------------------------------------------------------
-//
-TInt CNSmlDmVoIPAdapter::FindProfileLocation( const TDesC8& aURI ) const
-    {
-    TInt id( 0 );
-    id = aURI.Find( KNSmlDMVoIPPrefix );
-    if ( id != KErrNotFound )
-        {
-        id = DesToInt( aURI.Mid( id + KNSmlDMVoIPPrefix().Length(), 10 ) ); 
-        for ( TInt counter = 0; counter < iProfileEntries.Count(); counter++ )
-            {
-            if ( iProfileEntries[counter]->iId == id )
-                {
-                return counter;
-                }
-            }
-        }
-    return KErrNotFound;
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::DesToInt
-// Converts a 8 bit descriptor to int.
-// ---------------------------------------------------------------------------
-//
-TInt CNSmlDmVoIPAdapter::DesToInt( const TDesC8& aDes ) const
-    {
-    TLex8 lex( aDes );
-    TInt value = 0;
-    lex.Val( value );
-    return value;
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::DesToTUint
-// Converts a 8bit descriptor to TUint.
-// ---------------------------------------------------------------------------
-//
-TUint CNSmlDmVoIPAdapter::DesToTUint( const TDesC8& aDes ) const
-    {
-    TLex8 lex( aDes );
-    TUint value = 0;
-    lex.Val( value );
-    return value;
-    }
-
-// ---------------------------------------------------------------------------
-// TPtrC8 CNSmlDmVoIPAdapter::RemoveLastURISeg
-// returns parent uri, i.e. removes last uri segment
-// ---------------------------------------------------------------------------
-//
-const TPtrC8 CNSmlDmVoIPAdapter::RemoveLastURISeg( const TDesC8& aURI ) const
-    {
-    TInt i ( 0 );
-    if ( KErrNotFound != aURI.Find( KNSmlDMVoIPSeparator ) )
-        {
-        for ( i = aURI.Length() - 1; i >= 0; i-- )
-            {
-            if ( KDMVoIPSeparator == aURI[i]  )
-                {
-                break;
-                }
-            }
-        }
-    return aURI.Left( i );
-    }
-
-// ---------------------------------------------------------------------------
-// TInt CNSmlDmVoIPAdapter::NumOfURISegs
-// For getting the number of uri segs
-// ---------------------------------------------------------------------------
-//
-TInt CNSmlDmVoIPAdapter::NumOfURISegs( const TDesC8& aURI ) const
-    {
-    TInt numOfURISegs = 1;
-    for ( TInt i = 0; i < aURI.Length(); i++ )
-        {
-        if ( KDMVoIPSeparator == aURI[i]  )
-            {
-            numOfURISegs++;
-            }
-        }
-    return numOfURISegs;
-    }
-
-// ---------------------------------------------------------------------------
-// TPtrC8 CNSmlDmVoIPAdapter::LastURISeg
-// Returns only the last uri segment
-// ---------------------------------------------------------------------------
-//
-const TPtrC8 CNSmlDmVoIPAdapter::LastURISeg( const TDesC8& aURI ) const
-    {
-    TInt i( 0 );
-    if ( KErrNotFound != aURI.Find( KNSmlDMVoIPSeparator ) )
-        {
-        for ( i = aURI.Length() - 1; i >= 0; i-- )
-            {
-            if ( KDMVoIPSeparator == aURI[i] )
-                {
-                break;
-                }
-            }
-        }
-    if ( 0 == i )
-        {
-        return aURI;
-        }
-    else
-        {
-        return aURI.Mid( i + 1 );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// TPtrC8 CNSmlDmVoIPAdapter::RemoveDotSlash
-// return uri without dot and slash in start
-// ---------------------------------------------------------------------------
-//
-const TPtrC8 CNSmlDmVoIPAdapter::RemoveDotSlash( const TDesC8& aURI ) const
-    {
-    if ( 0 == aURI.Find( KNSmlVoIPUriDotSlash ) )
-        {
-        return aURI.Right( aURI.Length() - KNSmlVoIPUriDotSlash().Length() );
-        }
-    else
-        {
-        return aURI;
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::SetSipRefL
-// Set sip reference value.
-// ---------------------------------------------------------------------------
-//
-TUint32 CNSmlDmVoIPAdapter::SetSipRefL( const TDesC8& aObject ) const
-    {
-    DBG_PRINT("CNSmlDmVoIPAdapter::SetSipRef() : begin");
-    __ASSERT_ALWAYS( iDmCallback != NULL, User::Leave( KErrArgument ) );
-
-    CBufBase* fetchResult = CBufFlat::NewL( 1 );
-    CleanupStack::PushL( fetchResult );
-
-    // Make all SIP profiles known
-    CSmlDmAdapter::TError errorStatus;
-    iDmCallback->FetchLinkL( KNSmlDefDMSIP, *fetchResult, errorStatus );
-
-    // Fetch SIP profile ID.
-    TBuf8<KNSmlVoIPMaxResultLength> object; 
-    object.Copy( aObject );
-    object.Append( KNSmlDMVoIPSeparator );
-    object.Append( KNSmlDMSIPSipID );
-    iDmCallback->FetchLinkL( object, *fetchResult, errorStatus );
-    TUint32 profileId = DesToInt( fetchResult->Ptr( 0 ) );    
-    CleanupStack::PopAndDestroy( fetchResult );
-    fetchResult = NULL;
-    DBG_PRINT("CNSmlDmVoIPAdapter::SetSipRef() : end");
-    return profileId;
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::GetSipIdL
-// Get URI for given sip profile ID.
-// ---------------------------------------------------------------------------
-//
-MSmlDmAdapter::TError CNSmlDmVoIPAdapter::GetSipIdL( CBufBase& aObject,
-    TUint32 aID ) const
-    {
-    DBG_PRINT("CNSmlDmVoIPAdapter::GetSipIdL() : begin");
-
-    __ASSERT_ALWAYS( iDmCallback != NULL, User::Leave( KErrArgument ) );
-
-    CBufBase* result = CBufFlat::NewL( 1 );
-    CleanupStack::PushL( result ); 
-    CSmlDmAdapter::TError errorStatus;
-    TBuf8<KNSmlVoIPMaxResultLength> object;
-    iDmCallback->FetchLinkL( KNSmlDefDMSIP, *result, errorStatus );
-    result->Compress();
-    HBufC8* childList = HBufC8::NewLC( result->Size() );
-    TInt uriSegCount( 0 );
-    if ( result->Size() > 0 )
-        {
-        childList->Des().Copy( result->Ptr(0) );
-
-        // Delete last / mark
-        childList->Des().Delete( childList->Length() - 1, 1 );    
-        uriSegCount = NumOfURISegs( childList->Des() );
-        }
-
-    for ( TInt counter = 0; counter < uriSegCount; counter++ )
-        {
-        result->Reset();
-        object.Copy( KNSmlDefDMSIP );
-        object.Append( KNSmlDMVoIPSeparator );
-        object.Append( LastURISeg( childList->Des() ) );
-
-        // Make SIP profile settings known
-        iDmCallback->FetchLinkL( object, *result, errorStatus );
-        result->Compress();
-        result->Reset();
-
-        // Get SIP id
-        object.Append( KNSmlDMVoIPSeparator );
-        object.Append( KNSmlDMSIPSipID );
-        iDmCallback->FetchLinkL( object, *result, errorStatus );
-        if ( aID == DesToInt( result->Ptr( 0 ) ) )
-            {
-            aObject.InsertL( aObject.Size(), RemoveLastURISeg( object ) );
-            break; 
-            }
-        childList->Des().Copy( RemoveLastURISeg ( childList->Des() ) );    
-        }
-    // childList, result 
-    CleanupStack::PopAndDestroy( childList ); // CS:1
-    CleanupStack::PopAndDestroy( result ); // CS:0
-    result = NULL;
-    childList = NULL;
-    DBG_PRINT("CNSmlDmVoIPAdapter::GetSipIdL() : end");
-    return errorStatus;
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::SetSccpRefL
-// Set SCCP reference value. 
-// ---------------------------------------------------------------------------
-//
-TUint CNSmlDmVoIPAdapter::SetSccpRefL( const TDesC8& aObject ) const
-    {
-    DBG_PRINT("CNSmlDmVoIPAdapter::SetSccpRef() : begin");
-
-    __ASSERT_ALWAYS( iDmCallback != NULL, User::Leave( KErrArgument ) );
-
-    CBufBase* fetchResult = CBufFlat::NewL( 1 );
-    CleanupStack::PushL( fetchResult );
-
-    // Make all SCCP profiles known
-    CSmlDmAdapter::TError errorStatus;
-    iDmCallback->FetchLinkL( KNSmlDefDMSCCP, *fetchResult, errorStatus );
-
-    // Find profile asked
-    iDmCallback->FetchLinkL( aObject, *fetchResult, errorStatus );
-
-    // Fetch SCCP profile ID.
-    TBuf8<KNSmlVoIPMaxResultLength> object; 
-    object.Copy( aObject );
-    object.Append( KNSmlDMVoIPSeparator );
-    object.Append( KNSmlDMSCCPSccpID ); 
-    iDmCallback->FetchLinkL( object, *fetchResult, errorStatus );
-    TUint32 profileId = DesToInt( fetchResult->Ptr( 0 ) );    
-    CleanupStack::PopAndDestroy( fetchResult );
-    fetchResult = NULL;
-    DBG_PRINT("CNSmlDmVoIPAdapter::SetSccpRef() : end");
-    return profileId;
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::GetSccpIdL
-// Get URI for given sccp profile ID.
-// ---------------------------------------------------------------------------
-//
-MSmlDmAdapter::TError CNSmlDmVoIPAdapter::GetSccpIdL( CBufBase& aObject,
-    TUint32 aID ) const
-    {
-    DBG_PRINT("CNSmlDmVoIPAdapter::GetSccpIdL() : begin");
-
-    __ASSERT_ALWAYS( iDmCallback != NULL, User::Leave( KErrArgument ) );
-
-    CBufBase* result = CBufFlat::NewL( 1 );
-    CleanupStack::PushL( result ); 
-    CSmlDmAdapter::TError errorStatus;
-    TBuf8<KNSmlVoIPMaxResultLength> object;
-    iDmCallback->FetchLinkL( KNSmlDefDMSCCP, *result, errorStatus );
-    result->Compress();
-    HBufC8* childList = HBufC8::NewLC( result->Size() );
-    TInt uriSegCount ( 0 );
-    if ( result->Size() > 0 )
-        {
-        childList->Des().Copy( result->Ptr(0) );
-
-        // Delete last / mark
-        childList->Des().Delete( childList->Length() - 1, 1 );    
-        uriSegCount = NumOfURISegs( childList->Des() );
-        }
-
-    for ( TInt counter = 0; counter < uriSegCount; counter++ )
-        {
-        result->Reset();
-
-        // Make SCCP profile settings known
-        object.Copy( KNSmlDefDMSCCP );
-        object.Append( KNSmlDMVoIPSeparator );
-        object.Append( LastURISeg( childList->Des() ) );
-        iDmCallback->FetchLinkL( object, *result, errorStatus );
-        result->Compress();
-        result->Reset();
-
-        // Get SCCPId
-        object.Append( KNSmlDMVoIPSeparator );
-        object.Append( KNSmlDMSCCPSccpID );
-        iDmCallback->FetchLinkL( object, *result, errorStatus );
-        if ( aID == DesToInt ( result->Ptr( 0 ) ) )
-            {
-            aObject.InsertL( aObject.Size(), RemoveLastURISeg( object ) );
-            break; 
-            }
-        childList->Des().Copy( RemoveLastURISeg ( childList->Des() ) );    
-        }
-    // childList, result 
-    CleanupStack::PopAndDestroy( childList ); // CS:1
-    CleanupStack::PopAndDestroy( result ); // CS:0
-    result = NULL;
-    childList = NULL;
-    DBG_PRINT("CNSmlDmVoIPAdapter::GetSccpIdL() : end");
-    return errorStatus;
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::CheckDuplicateNameL
-// Checks if duplicate named sip profiles. Renames if same.
-// ---------------------------------------------------------------------------
-//
-TBool CNSmlDmVoIPAdapter::CheckDuplicateNameL( CRCSEProfileEntry& aEntry )
-    {
-    TBool isValid( EFalse );
-    HBufC* newName = HBufC::NewLC( KMaxSettingsNameLength * 2 );
-    newName->Des().Copy( aEntry.iSettingsName );
-
-    TInt count( iProfileEntries.Count() );
-
-    for ( TInt n = 0; n < count; n++ )
-        {
-        const TDesC& existingName = iProfileEntries[n]->iSettingsName;
-        if ( 0 == existingName.Compare( aEntry.iSettingsName )
-            && iProfileID != n ) // Skip the current profile.
-            {
-            TBool isUnique( EFalse );
-
-            for ( TInt i = 1; !isUnique; i++ )
-                {
-                TBool found( EFalse );
-
-                newName->Des().Copy( aEntry.iSettingsName );
-                newName->Des().Append( KOpenParenthesis() );
-                newName->Des().AppendNum( i );
-                newName->Des().Append( KClosedParenthesis() );
-                for ( TInt m = 0; m < count; m++ )
-                    {
-                    if ( 0 == iProfileEntries[m]->iSettingsName.Compare( 
-                        newName->Des() ) )
-                        {
-                        found = ETrue;
-                        }
-                    } // for
-                if ( !found )
-                    {
-                    isUnique = ETrue;
-                    }
-                } // for
-            } // if
-        } // for
-
-    // Change setting only if length is smaller than max length.
-    if ( newName->Length() < KMaxSettingsNameLength )
-        {
-        aEntry.iSettingsName.Copy( newName->Des() );
-        isValid = ETrue;
-        }
-    CleanupStack::PopAndDestroy( newName );  
-    return isValid;  
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::CheckDuplicateProviderL
-// Checks if duplicate provider name. Renames if same.
-// ---------------------------------------------------------------------------
-//
-TBool CNSmlDmVoIPAdapter::CheckDuplicateProviderL( CRCSEProfileEntry& aEntry )
-    {
-    TBool isValid( EFalse );
-    HBufC* newName = HBufC::NewLC( KMaxProviderNameLength * 2 );
-    newName->Des().Copy( aEntry.iProviderName );
-
-    TInt count( iProfileEntries.Count() );
-
-    for ( TInt n = 0; n < count; n++ )
-        {
-        const TDesC& existingName = iProfileEntries[n]->iProviderName;
-        if ( 0 == existingName.Compare( aEntry.iProviderName )
-            && iProfileID != n ) // Skip the current profile.
-            {
-            TBool isUnique( EFalse );
-
-            for ( TInt i = 1; !isUnique; i++ )
-                {
-                TBool found( EFalse );
-
-                newName->Des().Copy( aEntry.iProviderName );
-                newName->Des().Append( KOpenParenthesis() );
-                newName->Des().AppendNum( i );
-                newName->Des().Append( KClosedParenthesis() );
-                for ( TInt m = 0; m < count; m++ )
-                    {
-                    if ( 0 == iProfileEntries[m]->iProviderName.Compare( 
-                        newName->Des() ) )
-                        {
-                        found = ETrue;
-                        }
-                    }
-                if ( !found )
-                    {
-                    isUnique = ETrue;
-                    }
-                }
-            }
-        }
-
-    // Change setting only if length is smaller than max length.
-    if ( newName->Length() < KMaxProviderNameLength )
-        {
-        aEntry.iProviderName.Copy( newName->Des() );
-        isValid = ETrue;
-        }
-
-    CleanupStack::PopAndDestroy( newName ); 
-    return isValid;  
-    }
-
-// ---------------------------------------------------------------------------
-// TInt CNSmlDmVoIPAdapter::FindCodecLocation
-// For getting codec position.
-// ---------------------------------------------------------------------------
-//
-TInt CNSmlDmVoIPAdapter::FindCodecLocation( TUint32 aID ) const
-    {
-    for ( TInt i = 0; i < iCodecEntries.Count(); i++ )
-        {
-        if ( iCodecEntries[i]->iCodecId == aID )
-            {
-            return i;   
-            }
-        }
-    return KErrNotFound;
-    }
-
-// ---------------------------------------------------------------------------
-// void CNSmlDmVoIPAdapter::SetTelephonyPreferenceL
-// For setting telephony preference.
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVoIPAdapter::SetTelephonyPreferenceL ( const TTelephonyPreference& 
-    aTelephonyPreference )
-    {
-    // Central Repository for richcall settings
-    CRepository* rep = CRepository::NewLC( KCRUidRichCallSettings );
-    if ( EPSPreferred == aTelephonyPreference )
-        {
-        rep->Set( KRCSEPreferredTelephony, EPSPreferred );
-        }
-    else if ( ECSPreferred == aTelephonyPreference )
-        {
-        rep->Set( KRCSEPreferredTelephony, ECSPreferred );
-        }
-    CleanupStack::PopAndDestroy( rep );
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::GetTerminalTypeL
-// Collect terminal type used in SIP User Agent Header.
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVoIPAdapter::GetTerminalTypeL(
-    TBuf<KMaxTerminalTypeLength>& aTerminalType ) const
-    {
-    aTerminalType.Zero(); // Reset before use
-
-    CIpAppPhoneUtils* phoneUtils = CIpAppPhoneUtils::NewLC();
-    phoneUtils->GetTerminalTypeL( aTerminalType ); // Gets phone model + type
-    CleanupStack::PopAndDestroy( phoneUtils );
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::GetWlanMacAddressL
-// Gets WLAN MAC address used in SIP User Agent Header (same as *#62209526#).
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVoIPAdapter::GetWlanMacAddressL( TBuf<KWlanMacAddressLength>& 
-    aMac ) const
-    {
-    aMac.Zero(); // Reset before use
-
-    CIPAppUtilsAddressResolver* resolver = CIPAppUtilsAddressResolver::NewLC();
-
-    TBuf8<KWlanMacAddressLength> wlanmac;
-    _LIT8( KFormat, "-");
-    resolver->GetWlanMACAddress( wlanmac, KFormat );
-    //wlanmac buffer contains now the wlan mac address like 00-15-a0-99-10-ec
-    CleanupStack::PopAndDestroy( resolver );
-    aMac.Copy( wlanmac );
-
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::GetNatFwUriL
-// Get NAT/FW profile URI.
-// ---------------------------------------------------------------------------
-//
-MSmlDmAdapter::TError CNSmlDmVoIPAdapter::GetNatFwUriL( 
-    TBuf16<KMaxUriLength>& aObject, TInt aProfileId ) const
-    {
-    DBG_PRINT("CNSmlDmVoIPAdapter::GetNatFwUriL : begin");
-
-    __ASSERT_ALWAYS( iDmCallback != NULL, User::Leave( KErrArgument ) );
-
-    CBufBase* result = CBufFlat::NewL( 1 ); // CS:1
-    CleanupStack::PushL( result );
-    CSmlDmAdapter::TError errorStatus;
-
-    // Get URIs to all DomainSpecific NAT/FW settings.
-    iDmCallback->FetchLinkL( KNSmlDMNATFWDomain(), *result, errorStatus );
-
-    if ( CSmlDmAdapter::EOk != errorStatus )
-        {
-        CleanupStack::PopAndDestroy( result );
-        return errorStatus;
-        }
-
-    result->Compress();
-    HBufC8* childList = HBufC8::NewLC( result->Size() ); // CS:2
-    TInt uriSegCount( 0 );
-
-    if ( result->Size() )
-        {
-        childList->Des().Copy( result->Ptr(0) );
-        uriSegCount = NumOfURISegs( childList->Des() );
-        }
-
-    for ( TInt index = 0; index < uriSegCount; index++ )
-        {
-        HBufC8* uri = HBufC8::NewLC( ( KMaxUriLength * KTwoSegs ) );// CS:3
-        uri->Des().Copy( KNSmlDMNATFWDomain );
-        uri->Des().Append( KNSmlDMVoIPSeparator() );
-        uri->Des().Append( LastURISeg( childList->Des() ) );
-        HBufC8* luid = HBufC8::NewLC( KMaxUriLength ); // CS:4
-        luid->Des().Copy( iDmCallback->GetLuidAllocL( uri->Des() )->Des() );
-        if ( luid->Des().Length() && 
-            aProfileId == DesToTUint( LastURISeg( luid->Des() ) ) )
-            {
-            aObject.Copy( uri->Des() );
-            // luid, uri
-            CleanupStack::PopAndDestroy( luid ); // CS:3
-            CleanupStack::PopAndDestroy( uri ); // CS:2
-            break;
-            }
-        // luid, uri
-        CleanupStack::PopAndDestroy( luid ); // CS:3
-        CleanupStack::PopAndDestroy( uri ); // CS:2
-        childList->Des().Copy( RemoveLastURISeg( childList->Des() ) );
-        }
-
-    // childList, result
-    CleanupStack::PopAndDestroy( childList ); // CS:1
-    CleanupStack::PopAndDestroy( result ); // CS:0
-    DBG_PRINT("CNSmlDmVoIPAdapter::GetNatFwUriL : end");
-    return errorStatus;
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::NatFwIdL
-// Get NAT/FW profile ID.
-// ---------------------------------------------------------------------------
-//
-TUint32 CNSmlDmVoIPAdapter::NatFwIdL( const TDesC8& aObject ) const
-    {
-    DBG_PRINT("CNSmlDmVoIPAdapter::NatFwIdL : begin");
-
-    __ASSERT_ALWAYS( iDmCallback != NULL, User::Leave( KErrArgument ) );
-
-    TUint32 profileId( KErrNone );
-    HBufC8* luid = HBufC8::NewLC( KMaxUriLength ); // CS:1
-    luid->Des().Copy( iDmCallback->GetLuidAllocL( aObject )->Des() );
-    if ( luid->Des().Length() )
-        {
-        profileId = DesToTUint( LastURISeg( luid->Des() ) );
-        }
-    CleanupStack::PopAndDestroy( luid ); // CS:0
-    DBG_PRINT("CNSmlDmVoIPAdapter::NatFwIdL : end");
-    return profileId;
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::GetConRefL
-// Get DM URI for IAP.
-// ---------------------------------------------------------------------------
-//
-MSmlDmAdapter::TError CNSmlDmVoIPAdapter::GetConRefL( CBufBase& aObject, 
-    TInt aIapId ) const
-    {
-    DBG_PRINT("CNSmlDmVoIPAdapter::GetConRefL() : begin");
-
-    __ASSERT_ALWAYS( iDmCallback != NULL, User::Leave( KErrArgument ) );
-
-    TBool found = EFalse;
-    CNSmlDMIAPMatcher* iapMatch = CNSmlDMIAPMatcher::NewL( iDmCallback );
-    CleanupStack::PushL( iapMatch ); // CS:1
-    HBufC8* uri8 = iapMatch->URIFromIAPIdL( aIapId );
-    CleanupStack::PushL( uri8 ); // CS:2
-    if ( uri8 )
-        {
-        aObject.InsertL( aObject.Size(), uri8->Des() );
-        found = ETrue;
-        }
-    // uri8, iapMatch
-    CleanupStack::PopAndDestroy( uri8 ); // CS:1
-    CleanupStack::PopAndDestroy( iapMatch ); // CS:0
-    DBG_PRINT("CNSmlDmVoIPAdapter::GetConRefL() : end");
-    if ( !found )
-        {
-        return CSmlDmAdapter::ENotFound;
-        }
-    return CSmlDmAdapter::EOk;
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::ConRefL
-// Get IAP ID (connection reference value) from given URI.
-// ---------------------------------------------------------------------------
-//
-TInt CNSmlDmVoIPAdapter::ConRefL( const TDesC8& aObject ) const
-    {
-    DBG_PRINT("CNSmlDmVoIPAdapter::ConRefL() : begin");
-
-    __ASSERT_ALWAYS( iDmCallback != NULL, User::Leave( KErrArgument ) );
-
-    CNSmlDMIAPMatcher* iapMatch = CNSmlDMIAPMatcher::NewL( iDmCallback );
-    CleanupStack::PushL( iapMatch );
-    TInt iapId = iapMatch->IAPIdFromURIL( aObject );
-    CleanupStack::PopAndDestroy( iapMatch ); 
-    DBG_PRINT("CNSmlDmVoIPAdapter::ConRefL() : end");
-    return iapId;
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::GetPresenceUriL
-// Get Presence profile DM URI.
-// ---------------------------------------------------------------------------
-//
-MSmlDmAdapter::TError CNSmlDmVoIPAdapter::GetPresenceUriL( 
-    TBuf16<KMaxUriLength>& aObject, TUint32 aProfileId ) const
-    {
-    DBG_PRINT("CNSmlDmVoIPAdapter::GetPresenceUriL : begin");
-
-    __ASSERT_ALWAYS( iDmCallback != NULL, User::Leave( KErrArgument ) );
-
-    CBufBase* result = CBufFlat::NewL( 1 );
-    CleanupStack::PushL( result ); // CS:1
-    CSmlDmAdapter::TError errorStatus;
-
-    // Get URIs to all Presence settings.
-    iDmCallback->FetchLinkL( KNSmlDMPresence(), *result, errorStatus );
-
-    if ( CSmlDmAdapter::EOk != errorStatus )
-        {
-        CleanupStack::PopAndDestroy( result );
-        return errorStatus;
-        }
-
-    result->Compress();
-    HBufC8* childList = HBufC8::NewLC( result->Size() ); // CS:2
-    TInt uriSegCount( 0 );
-
-    if ( result->Size() )
-        {
-        childList->Des().Copy( result->Ptr( 0 ) );
-        uriSegCount = NumOfURISegs( childList->Des() );
-        }
-
-    // Get LUIDs for URIs.
-    for ( TInt index = 0; index < uriSegCount; index++ )
-        {
-        HBufC8* uri = HBufC8::NewLC( KMaxUriLength ); // CS:3
-        HBufC8* luid = HBufC8::NewLC( KMaxUriLength ); // CS:4
-
-        uri->Des().Copy( KNSmlDMPresence() );
-        uri->Des().Append( KNSmlDMVoIPSeparator() );
-        uri->Des().Append( LastURISeg( childList->Des() ) );
-        luid->Des().Copy( iDmCallback->GetLuidAllocL( uri->Des() )->Des() );
-        if ( luid->Des().Length() && 
-            aProfileId == DesToTUint( LastURISeg( luid->Des() ) ) )
-            {
-            aObject.Copy( uri->Des() );
-            // luid, uri
-            CleanupStack::PopAndDestroy( luid );  // CS:3
-            CleanupStack::PopAndDestroy( uri );  // CS:2
-            break;
-            }
-        childList->Des().Copy( RemoveLastURISeg( childList->Des() ) );
-        // luid, uri
-        CleanupStack::PopAndDestroy( luid );  // CS:3
-        CleanupStack::PopAndDestroy( uri );  // CS:2
-        }
-    // childList, result
-    CleanupStack::PopAndDestroy( childList );     // CS:1
-    CleanupStack::PopAndDestroy( result );     // CS:0
-    DBG_PRINT("CNSmlDmVoIPAdapter::GetPresenceUriL : end");
-    return errorStatus;
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::PresenceIdL
-// Get Presence profile ID.
-// ---------------------------------------------------------------------------
-//
-TUint32 CNSmlDmVoIPAdapter::PresenceIdL( const TDesC8& aObject ) const
-    {
-#ifdef _DEBUG
-    TBuf<KMaxDebugPrintLength> object;
-    object.Copy( aObject );
-    DBG_PRINT2("CNSmlDmVoIPAdapter::PresenceIdL : begin uri: %S", &object );
-#endif
-
-    __ASSERT_ALWAYS( iDmCallback != NULL, User::Leave( KErrArgument ) );
-    TPtrC8 uri = RemoveDotSlash( aObject );
-
-    HBufC8* luid = iDmCallback->GetLuidAllocL( uri );
-    CleanupStack::PushL( luid ); //CS:1
-    
-    // check whether above found id is valid or not
-    TUint32 profileId;
-    if ( luid->Length() == KErrNone )
-        {
-        //try to find it another way
-        if( NSmlDmURI::NumOfURISegs( uri ) > 1 )
-            {
-            TPtrC8 idSegment = NSmlDmURI::URISeg( uri, 2 );
-            TBuf<KMaxDebugPrintLength> tempSegment;
-            tempSegment.Copy( idSegment );
-            DBG_PRINT2("CNSmlDmVoIPAdapter::PresenceIdL - idSegment:%S", &tempSegment );
-            profileId = DesToTUint(idSegment);
-            if(!IsPresIDValidL(profileId))
-                {
-                CleanupStack::PopAndDestroy( luid ); // CS:0
-                DBG_PRINT("CNSmlDmVoIPAdapter::PresenceIdL : ID not valid - return KErrNone");
-                return KErrNone;
-                }
-            CleanupStack::PopAndDestroy( luid ); // CS:0
-            DBG_PRINT2("CNSmlDmVoIPAdapter::PresenceIdL - settingsId found local way:%d", profileId);
-            return profileId;
-            }
-        CleanupStack::PopAndDestroy( luid ); // CS:0
-        DBG_PRINT("CNSmlDmVoIPAdapter::PresenceIdL : ID not valid, too short uri");
-        return KErrNone;
-        }    
-    profileId = DesToTUint( *luid );
-    CleanupStack::PopAndDestroy( luid ); // CS:0
-    DBG_PRINT2("CNSmlDmVoIPAdapter::PresenceIdL : return profleId: %d", profileId );
-    return profileId;
-    }
-
-// -----------------------------------------------------------------------------
-// CPresenceDMAdapter::IsPresIDValidL
-// -----------------------------------------------------------------------------
-//
-TBool CNSmlDmVoIPAdapter::IsPresIDValidL( TUint32 aSetId ) const
-     {
-    TPresSettingsSet tempSet;
-    if ((PresSettingsApi::SettingsSetL( (TInt)aSetId,tempSet)) == KErrNone)
-        return ETrue;
-    DBG_PRINT2(" CNSmlDmVoIPAdapter::IsPresIDValidL - Invalid settings : %d", aSetId );
-    return EFalse;   
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::SnapIdL
-// Gets SNAP ID based on URI.
-// ---------------------------------------------------------------------------
-//
-TInt CNSmlDmVoIPAdapter::SnapIdL( const TDesC8& aUri )
-    {
-    DBG_PRINT( "CNSmlDmVoIPAdapter::SnapIdL - begin" );
-    TInt snapId( KErrNotFound );
-
-    HBufC8* luid = HBufC8::NewLC( KNSmlVoIPMaxUriLength ); // CS:1
-    luid->Des().Copy( iDmCallback->GetLuidAllocL( aUri )->Des() );
-
-    if ( luid->Des().Length() )
-        {
-        snapId = DesToInt( LastURISeg( luid->Des() ) );
-        }
-    CleanupStack::PopAndDestroy( luid ); // CS:0
-    DBG_PRINT( "CNSmlDmVoIPAdapter::SnapIdL - end" );
-    return snapId;
-    }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmVoIPAdapter::GetSnapUriL
-// Set SNAP URI based on SNAP ID.
-// ---------------------------------------------------------------------------
-//
-MSmlDmAdapter::TError CNSmlDmVoIPAdapter::GetSnapUriL( TDes8& aObject, 
-    TInt aSnapId )
-    {
-    __ASSERT_ALWAYS( iDmCallback != NULL, User::Leave( KErrArgument ) );
-
-    DBG_PRINT( "CNSmlDmSIPAdapter::GetSnapUriL - begin" );
-
-    CBufBase* result = CBufFlat::NewL( 1 );
-    CleanupStack::PushL( result ); // CS:1
-    CSmlDmAdapter::TError status;
-
-    // Get URIs to all SNAP settings.
-    iDmCallback->FetchLinkL( KNSmlDMSnapUriPrefix(), *result, status );
-
-    if ( CSmlDmAdapter::EOk != status )
-        {
-        CleanupStack::PopAndDestroy( result );
-        DBG_PRINT( "CNSmlDmVoIPAdapter::GetSnapUriL - Fetch SNAP error end" );
-        return status;
-        }
-
-    result->Compress();
-    HBufC8* childList = HBufC8::NewLC( result->Size() ); // CS:2
-    TInt uriSegCount( 0 );
-
-    if ( result->Size() )
-        {
-        childList->Des().Copy( result->Ptr( 0 ) );
-        uriSegCount = NumOfURISegs( childList->Des() );
-        }
-
-    // Get LUIDs for URIs.
-    for ( TInt index = 0; index < uriSegCount; index++ )
-        {
-        HBufC8* uri = HBufC8::NewLC( KNSmlVoIPMaxUriLength ); // CS:3
-        HBufC8* luid = HBufC8::NewLC( KNSmlVoIPMaxUriLength ); // CS:4
-
-        uri->Des().Copy( KNSmlDMSnapUriPrefix() );
-        uri->Des().Append( KNSmlDMVoIPSeparator() );
-        uri->Des().Append( LastURISeg( childList->Des() ) );
-        luid->Des().Copy( iDmCallback->GetLuidAllocL( uri->Des() )->Des() );
-        if ( luid->Des().Length() && 
-            aSnapId == DesToInt( LastURISeg( luid->Des() ) ) )
-            {
-            aObject.Copy( uri->Des() );
-            // luid, uri
-            CleanupStack::PopAndDestroy( luid );  // CS:3
-            CleanupStack::PopAndDestroy( uri );  // CS:2
-            break;
-            }
-        childList->Des().Copy( RemoveLastURISeg( childList->Des() ) );
-        // luid, uri
-        CleanupStack::PopAndDestroy( luid );  // CS:3
-        CleanupStack::PopAndDestroy( uri );  // CS:2
-        }
-    // childList, result
-    CleanupStack::PopAndDestroy( childList );  // CS:1
-    CleanupStack::PopAndDestroy( result );  // CS:0
-    DBG_PRINT( "CNSmlDmVoIPAdapter::GetSnapUriL - end" );
-    return status;
-    }
-
-// End of file.