--- a/callcontinuity/nsmldmvccadapter/src/nsmldmvccadapter.cpp Tue Feb 02 00:05:57 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1478 +0,0 @@
-/*
-* Copyright (c) 2007 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: Implementation file for nsmldmvccadapter
-*
-*/
-
-
-#include <e32std.h>
-#include <escapeutils.h>
-#include <spentry.h>
-#include <spproperty.h>
-#include <nsmldmuri.h>
-#include <crcseprofileentry.h>
-#include <crcseprofileregistry.h>
-
-#include "nsmldmvccadapter.h"
-#include "vccspsettings.h"
-#include "vccmiscutils.h"
-#include "rubydebug.h"
-
-
-const TInt KNSmlDMVCC_DefaultResultSize = 255;
-
-/** VCC DDF keywords */
-_LIT8( KNSmlDMVCC_DDFVersion, "1.0" );
-_LIT8( KNSmlDMVCC_Node, "VCC001" );
-_LIT( KNSmlDMVCC_ServiceName, "VCC" );
-
-/** VCC */
-_LIT8( KNSmlDMVCC_Name, "Name" );
-_LIT8( KNSmlDMVCC_VDI, "VDI" );
-_LIT8( KNSmlDMVCC_VDN, "VDN" );
-_LIT8( KNSmlDMVCC_PreferredDomain, "Preferred Domain" );
-_LIT8( KNSmlDMVCC_ImmediateDT, "Immediate DT" );
-_LIT8( KNSmlDMVCC_DTCsToIM, "DT CS-to-IM CN direction" );
-_LIT8( KNSmlDMVCC_DTIMToCs, "DT IM CN-to-CS direction" );
-_LIT8( KNSmlDMVCC_DTHeldWaitingCalls, "DT in held_waiting calls" );
-
-_LIT8( KNSmlDMVCC_WlanHOTreshold, "WLAN HO Treshold" );
-_LIT8( KNSmlDMVCC_WlanHOHysteresis, "WLAN HO Hysteresis" );
-_LIT8( KNSmlDMVCC_WlanHysteresisTimerLow, "WLAN Hysteresis Timer Low" );
-_LIT8( KNSmlDMVCC_WlanHysteresisTimerHigh, "WLAN Hysteresis Timer High" );
-_LIT8( KNSmlDMVCC_CSHOTreshold, "CS HO Treshold" );
-_LIT8( KNSmlDMVCC_CSHOHysteresis, "CS HO Hysteresis" );
-_LIT8( KNSmlDMVCC_CSHysteresisTimerLow, "CS Hysteresis Timer Low" );
-_LIT8( KNSmlDMVCC_CSHysteresisTimerHigh, "CS Hysteresis Timer High" );
-_LIT8( KNSmlDMVCC_VoipServiceId, "VoIP" );
-_LIT8( KNSmlDMVCC_DtAllowedWhenCsOriginated,"DT Allowed When CS Originated" );
-
-_LIT8( KNSmlDMVCC_NodeExp, "Main node for VCC settings" );
-_LIT8( KNSmlDMVCC_NameExp, "Name for the Communication Continuity settings" );
-_LIT8( KNSmlDMVCC_VDIExp, "VCC Transfer URI " );
-_LIT8( KNSmlDMVCC_VDNExp, "VCC Transfer Number" );
-_LIT8( KNSmlDMVCC_PreferredDomainExp, "Preferred domain for UE originated calls/sessions" );
-_LIT8( KNSmlDMVCC_ImmediateDTExp, "Initiate a VCC DT immediately when domain available or not" );
-_LIT8( KNSmlDMVCC_DTCsToIMExp, "DT from CS domain to PS is restricted or not" );
-_LIT8( KNSmlDMVCC_DTIMToCsExp, "DT from PS domain to CS is restricted or not" );
-_LIT8( KNSmlDMVCC_DTHeldWaitingCallsExp, "DT restricted during active and a held/waiting call/session" );
-_LIT8( KNSmlDMVCC_WlanHOTresholdExp, "Handover signal strength treshold value for WLAN" );
-_LIT8( KNSmlDMVCC_WlanHOHysteresisExp, "Handover hysteresis value for WLAN" );
-_LIT8( KNSmlDMVCC_WlanHysteresisTimerLowExp,"Handover hysteresis timer value for WLAN used below treshold" );
-_LIT8( KNSmlDMVCC_WlanHysteresisTimerHighExp, "Handover hysteresis timer value for WLAN used above treshold" );
-_LIT8( KNSmlDMVCC_CSHOTresholdExp, "Handover signal strength treshold value for CS" );
-_LIT8( KNSmlDMVCC_CSHOHysteresisExp, "Handover hysteresis value for CS" );
-_LIT8( KNSmlDMVCC_CSHysteresisTimerLowExp, "Handover hysteresis timer value for CS used below treshold" );
-_LIT8( KNSmlDMVCC_CSHysteresisTimerHighExp, "Handover hysteresis timer value for CS used above treshold" );
-_LIT8( KNSmlDMVCC_VoipServiceIdExp, "VoIP Service Id to be associated with VCC" );
-_LIT8( KNSmlDMVCC_DmToConRef, "ToConRef" );
-_LIT8( KNSmlDMVCC_DmConRef, "ConRef" );
-_LIT8( KNSmlDMVCC_DmToConRefExp, "Refers to a collection of connectivity definitions" );
-_LIT8( KNSmlDMVCC_DmConRefExp, "Indicates the linkage to connectivity parameters" );
-
-_LIT8( KNSmlDMVCC_DmVoipLinkPrefix, "./VoIP");
-_LIT8( KNSmlDMVCC_DmVoipId, "VoIPId");
-_LIT8( KNSmlDMVCC_DmVoip, "VoIP");
-_LIT( KVccServiceName, "VCC" );
-
-
-/** Others */
-_LIT8( KNSmlDMVCCTextPlain, "text/plain" );
-_LIT8( KNSmlDMVCCSeparator, "/" );
-_LIT( KNSmlDMVCCValueNullDesc, "" );
-_LIT( KNSmlDMVCCValueZero, "0" );
-
-const TInt KNSmlDMVCCSeparatorChar = '/';
-const TInt KNSmlDMVCCDefaultResultSize = 64;
-const TInt KNSmlDMVCCMaxResultLength = 256;
-const TInt KNSmlDMVCCMaxUriLength = 100;
-
-
-// ======== LOCAL FUNCTIONS ========
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// C++ Constructor
-// ---------------------------------------------------------------------------
-//
-CNSmlDmVCCAdapter::CNSmlDmVCCAdapter( TAny* aEcomArguments )
-: CSmlDmAdapter( aEcomArguments )
- {
- RUBY_DEBUG_BLOCK( "CNSmlDmVCCAdapter::CNSmlDmVCCAdapter" );
- }
-
-
-// ---------------------------------------------------------------------------
-// Second phase constructor
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVCCAdapter::ConstructL()
- {
- RUBY_DEBUG_BLOCKL( "CNSmlDmVCCAdapter::ConstructL" );
- iVCCSettings = CVccSPSettings::NewL();
- iVCCSettings->SetServiceNameL( KNSmlDMVCC_ServiceName );
- iVCCSettings->ReadSettingsL( KVccServiceName );
- }
-
-
-// ---------------------------------------------------------------------------
-// Two-phased constructor
-// ---------------------------------------------------------------------------
-//
-CNSmlDmVCCAdapter* CNSmlDmVCCAdapter::NewL( MSmlDmCallback* aDmCallback )
- {
- RUBY_DEBUG_BLOCKL( "CNSmlDmVCCAdapter::NewL" );
- CNSmlDmVCCAdapter* self = CNSmlDmVCCAdapter::NewLC( aDmCallback );
- CleanupStack::Pop( self );
- return self;
- }
-
-
-// ---------------------------------------------------------------------------
-// Two-phased constructor
-// ---------------------------------------------------------------------------
-//
-CNSmlDmVCCAdapter* CNSmlDmVCCAdapter::NewLC( MSmlDmCallback* aDmCallback )
- {
- RUBY_DEBUG0( "CNSmlDmVCCAdapter::NewLC --Start" );
- CNSmlDmVCCAdapter* self = new( ELeave ) CNSmlDmVCCAdapter( aDmCallback );
- CleanupStack::PushL( self );
- self->ConstructL();
- RUBY_DEBUG0( "CNSmlDmVCCAdapter::NewLC --End" );
- return self;
- }
-
-
-// ---------------------------------------------------------------------------
-// Destructor
-// ---------------------------------------------------------------------------
-//
-CNSmlDmVCCAdapter::~CNSmlDmVCCAdapter()
- {
- RUBY_DEBUG0( "CNSmlDmVCCAdapter::~CNSmlDmVCCAdapter() - ENTER" );
- delete iVCCSettings;
- delete iTempBuf;
- RUBY_DEBUG0( "CNSmlDmVCCAdapter::~CNSmlDmVCCAdapter() - EXIT" );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVCCAdapter::DDFVersionL( CBufBase& aVersion )
- {
- RUBY_DEBUG_BLOCK( "CNSmlDmVCCAdapter::DDFVersionL" );
- aVersion.InsertL( 0,KNSmlDMVCC_DDFVersion );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVCCAdapter::DDFStructureL( MSmlDmDDFObject& aDDF )
- {
- RUBY_DEBUG_BLOCK( "CNSmlDmVCCAdapter::DDFStructureL" );
-
- TSmlDmAccessTypes accessTypesGet;
- accessTypesGet.SetGet();
-
- TSmlDmAccessTypes accessTypesGetReplace;
- accessTypesGetReplace.SetGet();
- accessTypesGetReplace.SetReplace();
-
-
- // Main node
- MSmlDmDDFObject& vccNode = aDDF.AddChildObjectL( KNSmlDMVCC_Node );
- vccNode.SetAccessTypesL( accessTypesGet );
- vccNode.SetOccurenceL( MSmlDmDDFObject::EOneOrMore );
- vccNode.SetScopeL( MSmlDmDDFObject::EPermanent );
- vccNode.SetDFFormatL( MSmlDmDDFObject::ENode );
- vccNode.SetDescriptionL( KNSmlDMVCC_NodeExp );
-
- // Name leaf -read only
- MSmlDmDDFObject& vccName = vccNode.AddChildObjectL( KNSmlDMVCC_Name );
- vccName.SetAccessTypesL( accessTypesGet );
- vccName.SetOccurenceL( MSmlDmDDFObject::EZeroOrMore );
- vccName.SetScopeL( MSmlDmDDFObject::EPermanent );
- vccName.SetDFFormatL( MSmlDmDDFObject::EChr );
- vccName.AddDFTypeMimeTypeL( KNSmlDMVCCTextPlain );
- vccName.SetDescriptionL( KNSmlDMVCC_NameExp );
-
- // VDI leaf
- MSmlDmDDFObject& vccVDI = vccNode.AddChildObjectL( KNSmlDMVCC_VDI );
- vccVDI.SetAccessTypesL( accessTypesGetReplace );
- vccVDI.SetOccurenceL( MSmlDmDDFObject::EOne );
- vccVDI.SetScopeL( MSmlDmDDFObject::EPermanent );
- vccVDI.SetDFFormatL( MSmlDmDDFObject::EChr );
- vccVDI.SetDescriptionL( KNSmlDMVCC_VDIExp );
-
- // VDN leaf
- MSmlDmDDFObject& vccVDN = vccNode.AddChildObjectL( KNSmlDMVCC_VDN );
- vccVDN.SetAccessTypesL( accessTypesGetReplace );
- vccVDN.SetOccurenceL( MSmlDmDDFObject::EOne );
- vccVDN.SetScopeL( MSmlDmDDFObject::EPermanent );
- vccVDN.SetDFFormatL( MSmlDmDDFObject::EChr );
- vccVDN.SetDescriptionL( KNSmlDMVCC_VDNExp );
-
- // Preferred domain leaf
- MSmlDmDDFObject& vccPD =
- vccNode.AddChildObjectL( KNSmlDMVCC_PreferredDomain );
- vccPD.SetAccessTypesL( accessTypesGetReplace );
- vccPD.SetOccurenceL( MSmlDmDDFObject::EOne );
- vccPD.SetScopeL( MSmlDmDDFObject::EPermanent );
- vccPD.SetDFFormatL( MSmlDmDDFObject::EChr );
- vccPD.AddDFTypeMimeTypeL( KNSmlDMVCCTextPlain );
- vccPD.SetDescriptionL( KNSmlDMVCC_PreferredDomainExp );
-
- // Immediate DT leaf
- MSmlDmDDFObject& vccIDT = vccNode.AddChildObjectL( KNSmlDMVCC_ImmediateDT );
- vccIDT.SetAccessTypesL( accessTypesGetReplace );
- vccIDT.SetOccurenceL( MSmlDmDDFObject::EOne );
- vccIDT.SetScopeL( MSmlDmDDFObject::EPermanent );
- vccIDT.SetDFFormatL( MSmlDmDDFObject::EChr );
- vccIDT.AddDFTypeMimeTypeL( KNSmlDMVCCTextPlain );
- vccIDT.SetDescriptionL( KNSmlDMVCC_ImmediateDTExp );
-
- // CS to PS leaf
- MSmlDmDDFObject& vccDTCS = vccNode.AddChildObjectL( KNSmlDMVCC_DTCsToIM );
- vccDTCS.SetAccessTypesL( accessTypesGetReplace );
- vccDTCS.SetOccurenceL( MSmlDmDDFObject::EOne );
- vccDTCS.SetScopeL( MSmlDmDDFObject::EPermanent );
- vccDTCS.SetDFFormatL( MSmlDmDDFObject::EChr );
- vccDTCS.AddDFTypeMimeTypeL( KNSmlDMVCCTextPlain );
- vccDTCS.SetDescriptionL( KNSmlDMVCC_DTCsToIMExp );
-
- // PS to CS leaf
- MSmlDmDDFObject& vccDTIM = vccNode.AddChildObjectL( KNSmlDMVCC_DTIMToCs );
- vccDTIM.SetAccessTypesL( accessTypesGetReplace );
- vccDTIM.SetOccurenceL( MSmlDmDDFObject::EOne );
- vccDTIM.SetScopeL( MSmlDmDDFObject::EPermanent );
- vccDTIM.SetDFFormatL( MSmlDmDDFObject::EChr );
- vccDTIM.AddDFTypeMimeTypeL( KNSmlDMVCCTextPlain );
- vccDTIM.SetDescriptionL( KNSmlDMVCC_DTIMToCsExp );
-
- // DT restricted while held or waiting calls leaf
- MSmlDmDDFObject& vccDTHeld =
- vccNode.AddChildObjectL( KNSmlDMVCC_DTHeldWaitingCalls );
- vccDTHeld.SetAccessTypesL( accessTypesGetReplace );
- vccDTHeld.SetOccurenceL( MSmlDmDDFObject::EOne );
- vccDTHeld.SetScopeL( MSmlDmDDFObject::EPermanent );
- vccDTHeld.SetDFFormatL( MSmlDmDDFObject::EChr );
- vccDTHeld.AddDFTypeMimeTypeL( KNSmlDMVCCTextPlain );
- vccDTHeld.SetDescriptionL( KNSmlDMVCC_DTHeldWaitingCallsExp );
-
- // DT Allowed when CS Originated Call
- MSmlDmDDFObject& vccDTAllowedWhenCsOrig =
- vccNode.AddChildObjectL( KNSmlDMVCC_DtAllowedWhenCsOriginated );
- vccDTAllowedWhenCsOrig.SetAccessTypesL( accessTypesGetReplace );
- vccDTAllowedWhenCsOrig.SetOccurenceL( MSmlDmDDFObject::EOne );
- vccDTAllowedWhenCsOrig.SetScopeL( MSmlDmDDFObject::EPermanent );
- vccDTAllowedWhenCsOrig.SetDFFormatL( MSmlDmDDFObject::EChr );
- vccDTAllowedWhenCsOrig.AddDFTypeMimeTypeL( KNSmlDMVCCTextPlain );
- vccDTAllowedWhenCsOrig.SetDescriptionL( KNSmlDMVCC_DtAllowedWhenCsOriginated );
-
-
- // WLAN HO treshold leaf
- MSmlDmDDFObject& vccWLANHotreshold =
- vccNode.AddChildObjectL( KNSmlDMVCC_WlanHOTreshold );
- vccWLANHotreshold.SetAccessTypesL( accessTypesGetReplace );
- vccWLANHotreshold.SetOccurenceL( MSmlDmDDFObject::EOne );
- vccWLANHotreshold.SetScopeL( MSmlDmDDFObject::EPermanent );
- vccWLANHotreshold.SetDFFormatL( MSmlDmDDFObject::EChr );
- vccWLANHotreshold.AddDFTypeMimeTypeL( KNSmlDMVCCTextPlain );
- vccWLANHotreshold.SetDescriptionL( KNSmlDMVCC_WlanHOTresholdExp );
-
- // WLAN HO hysteresis leaf
- MSmlDmDDFObject& vccWLANHoHysteresis =
- vccNode.AddChildObjectL( KNSmlDMVCC_WlanHOHysteresis );
- vccWLANHoHysteresis.SetAccessTypesL( accessTypesGetReplace );
- vccWLANHoHysteresis.SetOccurenceL( MSmlDmDDFObject::EOne );
- vccWLANHoHysteresis.SetScopeL( MSmlDmDDFObject::EPermanent );
- vccWLANHoHysteresis.SetDFFormatL( MSmlDmDDFObject::EChr );
- vccWLANHoHysteresis.AddDFTypeMimeTypeL( KNSmlDMVCCTextPlain );
- vccWLANHoHysteresis.SetDescriptionL( KNSmlDMVCC_WlanHOHysteresisExp );
-
- // WLAN HO hysteresis timer low leaf
- MSmlDmDDFObject& vccWLANHoHysteresisTimerLow =
- vccNode.AddChildObjectL( KNSmlDMVCC_WlanHysteresisTimerLow );
- vccWLANHoHysteresisTimerLow.SetAccessTypesL( accessTypesGetReplace );
- vccWLANHoHysteresisTimerLow.SetOccurenceL( MSmlDmDDFObject::EOne );
- vccWLANHoHysteresisTimerLow.SetScopeL( MSmlDmDDFObject::EPermanent );
- vccWLANHoHysteresisTimerLow.SetDFFormatL( MSmlDmDDFObject::EChr );
- vccWLANHoHysteresisTimerLow.AddDFTypeMimeTypeL( KNSmlDMVCCTextPlain );
- vccWLANHoHysteresisTimerLow.SetDescriptionL( KNSmlDMVCC_WlanHysteresisTimerLowExp );
-
- // WLAN HO hysteresis timer high leaf
- MSmlDmDDFObject& vccWLANHoHysteresisTimerHigh =
- vccNode.AddChildObjectL( KNSmlDMVCC_WlanHysteresisTimerHigh );
- vccWLANHoHysteresisTimerHigh.SetAccessTypesL( accessTypesGetReplace );
- vccWLANHoHysteresisTimerHigh.SetOccurenceL( MSmlDmDDFObject::EOne );
- vccWLANHoHysteresisTimerHigh.SetScopeL( MSmlDmDDFObject::EPermanent );
- vccWLANHoHysteresisTimerHigh.SetDFFormatL( MSmlDmDDFObject::EChr );
- vccWLANHoHysteresisTimerHigh.AddDFTypeMimeTypeL( KNSmlDMVCCTextPlain );
- vccWLANHoHysteresisTimerHigh.SetDescriptionL( KNSmlDMVCC_WlanHysteresisTimerHighExp );
-
- // CS HO treshold leaf
- MSmlDmDDFObject& vccCSHotreshold =
- vccNode.AddChildObjectL( KNSmlDMVCC_CSHOTreshold );
- vccCSHotreshold.SetAccessTypesL( accessTypesGetReplace );
- vccCSHotreshold.SetOccurenceL( MSmlDmDDFObject::EOne );
- vccCSHotreshold.SetScopeL( MSmlDmDDFObject::EPermanent );
- vccCSHotreshold.SetDFFormatL( MSmlDmDDFObject::EChr );
- vccCSHotreshold.AddDFTypeMimeTypeL( KNSmlDMVCCTextPlain );
- vccCSHotreshold.SetDescriptionL( KNSmlDMVCC_CSHOTresholdExp );
-
- // CS HO hysteresis leaf
- MSmlDmDDFObject& vccCSHoHysteresis =
- vccNode.AddChildObjectL( KNSmlDMVCC_CSHOHysteresis );
- vccCSHoHysteresis.SetAccessTypesL( accessTypesGetReplace );
- vccCSHoHysteresis.SetOccurenceL( MSmlDmDDFObject::EOne );
- vccCSHoHysteresis.SetScopeL( MSmlDmDDFObject::EPermanent );
- vccCSHoHysteresis.SetDFFormatL( MSmlDmDDFObject::EChr );
- vccCSHoHysteresis.AddDFTypeMimeTypeL( KNSmlDMVCCTextPlain );
- vccCSHoHysteresis.SetDescriptionL( KNSmlDMVCC_CSHOHysteresisExp );
-
- // CS HO hysteresis timer low leaf
- MSmlDmDDFObject& vccCSHoHysteresisTimerLow =
- vccNode.AddChildObjectL( KNSmlDMVCC_CSHysteresisTimerLow );
- vccCSHoHysteresisTimerLow.SetAccessTypesL( accessTypesGetReplace );
- vccCSHoHysteresisTimerLow.SetOccurenceL( MSmlDmDDFObject::EOne );
- vccCSHoHysteresisTimerLow.SetScopeL( MSmlDmDDFObject::EPermanent );
- vccCSHoHysteresisTimerLow.SetDFFormatL( MSmlDmDDFObject::EChr );
- vccCSHoHysteresisTimerLow.AddDFTypeMimeTypeL( KNSmlDMVCCTextPlain );
- vccCSHoHysteresisTimerLow.SetDescriptionL( KNSmlDMVCC_CSHysteresisTimerLowExp );
-
- // CS HO hysteresis timer high leaf
- MSmlDmDDFObject& vccCSHoHysteresisTimerHigh =
- vccNode.AddChildObjectL( KNSmlDMVCC_CSHysteresisTimerHigh );
- vccCSHoHysteresisTimerHigh.SetAccessTypesL( accessTypesGetReplace );
- vccCSHoHysteresisTimerHigh.SetOccurenceL( MSmlDmDDFObject::EOne );
- vccCSHoHysteresisTimerHigh.SetScopeL( MSmlDmDDFObject::EPermanent );
- vccCSHoHysteresisTimerHigh.SetDFFormatL( MSmlDmDDFObject::EChr );
- vccCSHoHysteresisTimerHigh.AddDFTypeMimeTypeL( KNSmlDMVCCTextPlain );
- vccCSHoHysteresisTimerHigh.SetDescriptionL( KNSmlDMVCC_CSHysteresisTimerHighExp );
-
- // ./VCC001/ToConRef/
-
- MSmlDmDDFObject& toConRefNode = vccNode.AddChildObjectL(KNSmlDMVCC_DmToConRef);
- toConRefNode.SetAccessTypesL( accessTypesGet );
- toConRefNode.SetOccurenceL( MSmlDmDDFObject::EOne );
- toConRefNode.SetScopeL( MSmlDmDDFObject::EDynamic );
- toConRefNode.SetDFFormatL( MSmlDmDDFObject::ENode );
- toConRefNode.SetDescriptionL( KNSmlDMVCC_DmToConRefExp );
-
- // ./VCC001/ToConRef/VoIP
-
- MSmlDmDDFObject& voipNode = toConRefNode.AddChildObjectL( KNSmlDMVCC_VoipServiceId );
- voipNode.SetAccessTypesL( accessTypesGet );
- voipNode.SetOccurenceL( MSmlDmDDFObject::EOne );
- voipNode.SetScopeL( MSmlDmDDFObject::EDynamic );
- voipNode.SetDFFormatL( MSmlDmDDFObject::ENode );
- voipNode.SetDescriptionL( KNSmlDMVCC_VoipServiceIdExp );
-
- // ./VCC001/ToConRef/VoIP/ConRef
-
- MSmlDmDDFObject& conRefVoipNode = voipNode.AddChildObjectL(KNSmlDMVCC_DmConRef);
- conRefVoipNode.SetAccessTypesL( accessTypesGetReplace );
- conRefVoipNode.SetOccurenceL( MSmlDmDDFObject::EOne );
- conRefVoipNode.SetScopeL( MSmlDmDDFObject::EDynamic );
- conRefVoipNode.SetDFFormatL( MSmlDmDDFObject::EChr );
- conRefVoipNode.SetDescriptionL( KNSmlDMVCC_DmConRefExp );
-
- // !NOTE! Ext node not inserted yet
- }
-
-// ---------------------------------------------------------------------------
-// Note: HBufC* buf points to member iTempBuf that is deleted every time
-// ConvertToUnicodeL is called and in class' destructor.
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVCCAdapter::UpdateLeafObjectL( const TDesC8& aURI,
- const TDesC8& /*aLUID*/, const TDesC8& aObject,
- const TDesC8& /*aType*/, TInt aStatusRef )
- {
- RUBY_DEBUG_BLOCK( "CNSmlDmVCCAdapter::UpdateLeafObjectL" );
- RUBY_DEBUG0( "ReadSPSettings" );
- iVCCSettings->ReadSettingsL( KVccServiceName );
- CSmlDmAdapter::TError retValue = CSmlDmAdapter::EOk;
- HBufC* buf = ConvertToUnicodeL( aObject );
-
- // Find the last leaf in URI
- TPtrC8 uriSeg( LastURISeg( aURI ) );
-
- if ( KNSmlDMVCC_Name() == uriSeg )
- {
- // Don't do anything at the moment
- //iVCCSettings->SetNameL( aObject );
- }
- else if ( KNSmlDMVCC_VDI() == uriSeg )
- {
- if ( KErrNone != iVCCSettings->SetVdiL( buf->Des() ) )
- {
- retValue = CSmlDmAdapter::EInvalidObject;
- }
- }
- else if ( KNSmlDMVCC_VDN() == uriSeg )
- {
- if ( !( iVCCSettings->SetVdnL( buf->Des() ) ) )
- {
- retValue = CSmlDmAdapter::EInvalidObject;
- }
- }
- else if ( KNSmlDMVCC_PreferredDomain() == uriSeg )
- {
- TInt value = iVCCSettings->ConvertToIntL( buf->Des() );
-
- switch ( value )
- {
- case 0:
- case 1:
- case 2:
- case 3:
- iVCCSettings->SetPreferredDomainL( buf->Des() );
- break;
- default:
- retValue = CSmlDmAdapter::EInvalidObject;
- break;
- }
- }
- else if ( KNSmlDMVCC_ImmediateDT() == uriSeg )
- {
- TInt value = iVCCSettings->ConvertToIntL( buf->Des() );
-
- switch ( value )
- {
- case 0:
- case 1:
- iVCCSettings->SetImmediateDtL( buf->Des() );
- break;
- default:
- retValue = CSmlDmAdapter::EInvalidObject;
- break;
- }
- }
- else if ( KNSmlDMVCC_DTCsToIM() == uriSeg )
- {
- TInt value = iVCCSettings->ConvertToIntL( buf->Des() );
-
- switch ( value )
- {
- case 0:
- case 1:
- iVCCSettings->SetDtCsToPsAllowedL( buf->Des() );
- break;
- default:
- retValue = CSmlDmAdapter::EInvalidObject;
- break;
- }
- }
- else if ( KNSmlDMVCC_DTIMToCs() == uriSeg )
- {
- TInt value = iVCCSettings->ConvertToIntL( buf->Des() );
-
- switch ( value )
- {
- case 0:
- case 1:
- iVCCSettings->SetDtPsToCsAllowedL( buf->Des() );
- break;
- default:
- retValue = CSmlDmAdapter::EInvalidObject;
- break;
- }
- }
- else if ( KNSmlDMVCC_DtAllowedWhenCsOriginated() == uriSeg )
- {
- TInt value = iVCCSettings->ConvertToIntL( buf->Des() );
-
- switch ( value )
- {
- case 0:
- case 1:
- iVCCSettings->SetDtAllowedWhenCsOriginated( buf->Des() );
- break;
- default:
- retValue = CSmlDmAdapter::EInvalidObject;
- break;
- }
- }
-
- else if ( KNSmlDMVCC_DTHeldWaitingCalls() == uriSeg )
- {
- TInt value = iVCCSettings->ConvertToIntL( buf->Des() );
-
- switch ( value )
- {
- case 0:
- case 1:
- iVCCSettings->SetDtHeldWaitingCallsAllowedL( buf->Des() );
- break;
- default:
- retValue = CSmlDmAdapter::EInvalidObject;
- break;
- }
- }
-
- else if ( KNSmlDMVCC_WlanHOTreshold() == uriSeg )
- {
- iVCCSettings->SetDtWlanHoTresholdL( buf->Des() );
- }
- else if ( KNSmlDMVCC_WlanHOHysteresis() == uriSeg )
- {
- iVCCSettings->SetDtWlanHoHysteresisL( buf->Des() );
- }
- else if ( KNSmlDMVCC_WlanHysteresisTimerLow() == uriSeg )
- {
- iVCCSettings->SetDtWlanHoHysteresisTimerLowL( buf->Des() );
- }
- else if ( KNSmlDMVCC_WlanHysteresisTimerHigh() == uriSeg )
- {
- iVCCSettings->SetDtWlanHoHysteresisTimerHighL( buf->Des() );
- }
-
- else if ( KNSmlDMVCC_CSHOTreshold() == uriSeg )
- {
- iVCCSettings->SetDtCsHoTresholdL( buf->Des() );
- }
- else if ( KNSmlDMVCC_CSHOHysteresis() == uriSeg )
- {
- iVCCSettings->SetDtCsHoHysteresisL( buf->Des() );
- }
- else if ( KNSmlDMVCC_CSHysteresisTimerLow() == uriSeg )
- {
- iVCCSettings->SetDtCsHoHysteresisTimerLowL( buf->Des() );
- }
- else if ( KNSmlDMVCC_CSHysteresisTimerHigh() == uriSeg )
- {
- iVCCSettings->SetDtCsHoHysteresisTimerHighL( buf->Des() );
- }
- else if ( KNSmlDMVCC_DmConRef() == uriSeg )
- {
- retValue = UpdateVoipConRefL(aURI, aObject);
- }
-
- else
- { // No recognized leaf object found
- retValue = CSmlDmAdapter::EInvalidObject;
- }
-
- if ( CSmlDmAdapter::EOk == retValue )
- {
- RUBY_DEBUG0( "StoreSPSettings" );
- // Set operation successfull, store changes into SP Settings table
- iVCCSettings->StoreL();
- }
-
- Callback().SetStatusL( aStatusRef, retValue );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVCCAdapter::UpdateLeafObjectL( const TDesC8& /*aURI*/,
- const TDesC8& /*aLUID*/,
- RWriteStream*& /*aStream*/, const TDesC8& /*aType*/,
- TInt aStatusRef )
- {
- RUBY_DEBUG_BLOCK( "CNSmlDmVCCAdapter::UpdateLeafObjectL -stream" );
- Callback().SetStatusL( aStatusRef, CSmlDmAdapter::EOk );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVCCAdapter::DeleteObjectL( const TDesC8& aURI,
- const TDesC8& /*aLUID*/,
- TInt aStatusRef )
- {
- RUBY_DEBUG_BLOCK( "CNSmlDmVCCAdapter::DeleteObjectL" );
- iVCCSettings->ReadSettingsL( KVccServiceName );
-
- CSmlDmAdapter::TError retValue = CSmlDmAdapter::EOk;
- TPtrC8 uriSeg( LastURISeg( aURI ) );
-
- if ( KNSmlDMVCC_Name() == uriSeg )
- {
- // Don't do anything at the moment
- //iVCCSettings->SetNameL( KNSmlDMVCCValueNullDesc );
- }
- else if ( KNSmlDMVCC_VDI() == uriSeg )
- {
- iVCCSettings->SetVdiL( KNSmlDMVCCValueNullDesc );
- }
- else if ( KNSmlDMVCC_VDN() == uriSeg )
- {
- iVCCSettings->SetVdnL( KNSmlDMVCCValueNullDesc );
- }
- else if ( KNSmlDMVCC_PreferredDomain() == uriSeg )
- {
- iVCCSettings->SetPreferredDomainL( KNSmlDMVCCValueZero );
- }
- else if ( KNSmlDMVCC_ImmediateDT() == uriSeg )
- {
- iVCCSettings->SetImmediateDtL( KNSmlDMVCCValueZero );
- }
- else if ( KNSmlDMVCC_DTCsToIM() == uriSeg )
- {
- iVCCSettings->SetDtCsToPsAllowedL( KNSmlDMVCCValueZero );
- }
- else if ( KNSmlDMVCC_DTIMToCs() == uriSeg )
- {
- iVCCSettings->SetDtPsToCsAllowedL( KNSmlDMVCCValueZero );
- }
- else if ( KNSmlDMVCC_DTHeldWaitingCalls() == uriSeg )
- {
- iVCCSettings->SetDtHeldWaitingCallsAllowedL( KNSmlDMVCCValueZero );
- }
- else if ( KNSmlDMVCC_WlanHOTreshold() == uriSeg )
- {
- iVCCSettings->SetDtWlanHoTresholdL( KNSmlDMVCCValueZero );
- }
- else if ( KNSmlDMVCC_WlanHOHysteresis() == uriSeg )
- {
- iVCCSettings->SetDtWlanHoHysteresisL( KNSmlDMVCCValueZero );
- }
- else if ( KNSmlDMVCC_WlanHysteresisTimerLow() == uriSeg )
- {
- iVCCSettings->SetDtWlanHoHysteresisTimerLowL( KNSmlDMVCCValueZero );
- }
- else if ( KNSmlDMVCC_WlanHysteresisTimerHigh() == uriSeg )
- {
- iVCCSettings->SetDtWlanHoHysteresisTimerHighL( KNSmlDMVCCValueZero );
- }
- else if ( KNSmlDMVCC_CSHOTreshold() == uriSeg )
- {
- iVCCSettings->SetDtCsHoTresholdL( KNSmlDMVCCValueZero );
- }
- else if ( KNSmlDMVCC_CSHOHysteresis() == uriSeg )
- {
- iVCCSettings->SetDtCsHoHysteresisL( KNSmlDMVCCValueZero );
- }
- else if ( KNSmlDMVCC_CSHysteresisTimerLow() == uriSeg )
- {
- iVCCSettings->SetDtCsHoHysteresisTimerLowL( KNSmlDMVCCValueZero );
- }
- else if ( KNSmlDMVCC_CSHysteresisTimerHigh() == uriSeg )
- {
- iVCCSettings->SetDtCsHoHysteresisTimerHighL( KNSmlDMVCCValueZero );
- }
- else if ( KNSmlDMVCC_DmConRef() == uriSeg )
- {
- iVCCSettings->SetVoipServiceIdL( KNSmlDMVCCValueZero );
- }
- else if ( KNSmlDMVCC_DtAllowedWhenCsOriginated() == uriSeg )
- {
- iVCCSettings->SetDtAllowedWhenCsOriginated( KNSmlDMVCCValueZero );
- }
- else
- {
- retValue = CSmlDmAdapter::EInvalidObject;
- }
-
- if ( CSmlDmAdapter::EOk == retValue )
- {
- iVCCSettings->StoreL();
- }
-
- Callback().SetStatusL( aStatusRef, retValue );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVCCAdapter::FetchLeafObjectL( const TDesC8& aURI,
- const TDesC8& /*aLUID*/, const TDesC8& aType,
- TInt aResultsRef, TInt aStatusRef )
- {
- RUBY_DEBUG_BLOCK( "CNSmlDmVCCAdapter::FetchLeafObjectL" );
-
- CBufBase* result = CBufFlat::NewL( KNSmlDMVCCDefaultResultSize );
- CleanupStack::PushL( result );
- CSmlDmAdapter::TError status = FetchObjectL( aURI, *result );
-
- if ( status == CSmlDmAdapter::EOk )
- {
- Callback().SetResultsL( aResultsRef, *result, aType );
- }
-
- Callback().SetStatusL( aStatusRef, status );
-
- CleanupStack::PopAndDestroy( result );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVCCAdapter::FetchLeafObjectSizeL( const TDesC8& /*aURI*/,
- const TDesC8& /*aLUID*/, const TDesC8& /*aType*/,
- TInt /*aResultsRef*/, TInt aStatusRef )
- {
- RUBY_DEBUG_BLOCK( "CNSmlDmVCCAdapter::FetchLeafObjectSizeL" );
-
- // Not supported
- Callback().SetStatusL( aStatusRef, CSmlDmAdapter::EError );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVCCAdapter::ChildURIListL( const TDesC8& aURI,
- const TDesC8& /*aLUID*/,
- const CArrayFix<TSmlDmMappingInfo>& /*aPreviousURISegmentList*/,
- TInt aResultsRef, TInt aStatusRef )
- {
- RUBY_DEBUG_BLOCK( "CNSmlDmVCCAdapter::ChildURIListL" );
-
- CSmlDmAdapter::TError status = CSmlDmAdapter::EError;
-
- CBufBase *currentURISegmentList = CBufFlat::NewL( KNSmlDMVCCDefaultResultSize );
- CleanupStack::PushL( currentURISegmentList );
- TBuf8<KNSmlDMVCCMaxUriLength> mappingInfo( KNullDesC8 );
- TBuf8<KNSmlDMVCCMaxUriLength> uri = aURI;
- TBuf8<KSmlMaxURISegLen> segmentName;
-
- if ( KNSmlDMVCC_Node() == LastURISeg( aURI ) )
- {
- // Name
- segmentName.Copy( KNSmlDMVCC_Name );
- currentURISegmentList->InsertL( currentURISegmentList->Size(),
- segmentName );
- currentURISegmentList->InsertL( currentURISegmentList->Size(),
- KNSmlDMVCCSeparator );
- // VDI
- segmentName.Copy( KNSmlDMVCC_VDI );
- currentURISegmentList->InsertL( currentURISegmentList->Size(),
- segmentName );
- currentURISegmentList->InsertL( currentURISegmentList->Size(),
- KNSmlDMVCCSeparator );
- // VDN
- segmentName.Copy( KNSmlDMVCC_VDN );
- currentURISegmentList->InsertL( currentURISegmentList->Size(),
- segmentName );
- currentURISegmentList->InsertL( currentURISegmentList->Size(),
- KNSmlDMVCCSeparator );
- // Preferred domain
- segmentName.Copy( KNSmlDMVCC_PreferredDomain );
- currentURISegmentList->InsertL( currentURISegmentList->Size(),
- segmentName );
- currentURISegmentList->InsertL( currentURISegmentList->Size(),
- KNSmlDMVCCSeparator );
- // Immediate dt
- segmentName.Copy( KNSmlDMVCC_ImmediateDT );
- currentURISegmentList->InsertL( currentURISegmentList->Size(),
- segmentName );
- currentURISegmentList->InsertL( currentURISegmentList->Size(),
- KNSmlDMVCCSeparator );
- // DT CS to PS
- segmentName.Copy( KNSmlDMVCC_DTCsToIM );
- currentURISegmentList->InsertL( currentURISegmentList->Size(),
- segmentName );
- currentURISegmentList->InsertL( currentURISegmentList->Size(),
- KNSmlDMVCCSeparator );
- // DT PS to CS
- segmentName.Copy( KNSmlDMVCC_DTIMToCs );
- currentURISegmentList->InsertL( currentURISegmentList->Size(),
- segmentName );
- currentURISegmentList->InsertL( currentURISegmentList->Size(),
- KNSmlDMVCCSeparator );
- // DT Held waiting calls
- segmentName.Copy( KNSmlDMVCC_DTHeldWaitingCalls );
- currentURISegmentList->InsertL( currentURISegmentList->Size(),
- segmentName );
- currentURISegmentList->InsertL( currentURISegmentList->Size(),
- KNSmlDMVCCSeparator );
-
- // Wlan Ho Treshold
- segmentName.Copy( KNSmlDMVCC_WlanHOTreshold );
- currentURISegmentList->InsertL( currentURISegmentList->Size(),
- segmentName );
- currentURISegmentList->InsertL( currentURISegmentList->Size(),
- KNSmlDMVCCSeparator );
-
- // Wlan Ho Hysteresis
- segmentName.Copy( KNSmlDMVCC_WlanHOHysteresis );
- currentURISegmentList->InsertL( currentURISegmentList->Size(),
- segmentName );
- currentURISegmentList->InsertL( currentURISegmentList->Size(),
- KNSmlDMVCCSeparator );
-
- // Wlan Ho Hysteresis Timer Low
- segmentName.Copy( KNSmlDMVCC_WlanHysteresisTimerLow );
- currentURISegmentList->InsertL( currentURISegmentList->Size(),
- segmentName );
- currentURISegmentList->InsertL( currentURISegmentList->Size(),
- KNSmlDMVCCSeparator );
-
- // Wlan Ho Hysteresis Timer High
- segmentName.Copy( KNSmlDMVCC_WlanHysteresisTimerHigh );
- currentURISegmentList->InsertL( currentURISegmentList->Size(),
- segmentName );
- currentURISegmentList->InsertL( currentURISegmentList->Size(),
- KNSmlDMVCCSeparator );
-
- // CS Ho Treshold
- segmentName.Copy( KNSmlDMVCC_CSHOTreshold );
- currentURISegmentList->InsertL( currentURISegmentList->Size(),
- segmentName );
- currentURISegmentList->InsertL( currentURISegmentList->Size(),
- KNSmlDMVCCSeparator );
-
- // CS Ho Hysteresis
- segmentName.Copy( KNSmlDMVCC_CSHOHysteresis );
- currentURISegmentList->InsertL( currentURISegmentList->Size(),
- segmentName );
- currentURISegmentList->InsertL( currentURISegmentList->Size(),
- KNSmlDMVCCSeparator );
-
- // CS Ho Hysteresis Timer Low
- segmentName.Copy( KNSmlDMVCC_CSHysteresisTimerLow );
- currentURISegmentList->InsertL( currentURISegmentList->Size(),
- segmentName );
- currentURISegmentList->InsertL( currentURISegmentList->Size(),
- KNSmlDMVCCSeparator );
-
- // CS Ho Hysteresis Timer High
- segmentName.Copy( KNSmlDMVCC_CSHysteresisTimerHigh );
- currentURISegmentList->InsertL( currentURISegmentList->Size(),
- segmentName );
- currentURISegmentList->InsertL( currentURISegmentList->Size(),
- KNSmlDMVCCSeparator );
-
- // DT Allowed When CS Originated
- segmentName.Copy( KNSmlDMVCC_DtAllowedWhenCsOriginated );
- currentURISegmentList->InsertL( currentURISegmentList->Size(),
- segmentName );
- currentURISegmentList->InsertL( currentURISegmentList->Size(),
- KNSmlDMVCCSeparator );
-
-
- status = CSmlDmAdapter::EOk;
- }
- else if( KNSmlDMVCC_DmToConRef() == LastURISeg( aURI ) ) // ./VCC001/ToConRef
- {
- segmentName.Copy( KNSmlDMVCC_VoipServiceId );
- currentURISegmentList->InsertL( currentURISegmentList->Size(), segmentName );
- currentURISegmentList->InsertL( currentURISegmentList->Size(), KNSmlDMVCCSeparator );
- status = CSmlDmAdapter::EOk;
- }
- else if( KNSmlDMVCC_VoipServiceId() == LastURISeg( aURI ) ) // ./VCC001/ToConRef/VoIP
- {
- segmentName.Copy( KNSmlDMVCC_DmConRef );
- currentURISegmentList->InsertL( currentURISegmentList->Size(), segmentName );
- currentURISegmentList->InsertL( currentURISegmentList->Size(), KNSmlDMVCCSeparator );
- status = CSmlDmAdapter::EOk;
- }
-
-
- Callback().SetStatusL( aStatusRef, status );
- Callback().SetResultsL( aResultsRef, *currentURISegmentList, KNullDesC8 );
- CleanupStack::PopAndDestroy( currentURISegmentList );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVCCAdapter::AddNodeObjectL( const TDesC8& /*aURI*/,
- const TDesC8& /*aParentLUID*/, TInt aStatusRef )
- {
- RUBY_DEBUG_BLOCK( "CNSmlDmVCCAdapter::AddNodeObjectL" );
-
- // Not supported
- Callback().SetStatusL( aStatusRef, CSmlDmAdapter::EOk );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVCCAdapter::ExecuteCommandL( const TDesC8& /*aURI*/,
- const TDesC8& /*aLUID*/, const TDesC8& /*aArgument*/,
- const TDesC8& /*aType*/, TInt aStatusRef )
- {
- RUBY_DEBUG_BLOCK( "CNSmlDmVCCAdapter::ExecuteCommandL" );
-
- // Not supported
- Callback().SetStatusL( aStatusRef, CSmlDmAdapter::EError );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVCCAdapter::ExecuteCommandL( const TDesC8& /*aURI*/,
- const TDesC8& /*aLUID*/, RWriteStream*& /*aStream*/,
- const TDesC8& /*aType*/, TInt aStatusRef )
- {
- RUBY_DEBUG_BLOCK( "CNSmlDmVCCAdapter::ExecuteCommandL -stream" );
-
- // Not supported
- Callback().SetStatusL( aStatusRef, CSmlDmAdapter::EError );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVCCAdapter::CopyCommandL( const TDesC8& /*aTargetURI*/,
- const TDesC8& /*aTargetLUID*/, const TDesC8& /*aSourceURI*/,
- const TDesC8& /*aSourceLUID*/, const TDesC8& /*aType*/,
- TInt aStatusRef )
- {
- RUBY_DEBUG_BLOCK( "CNSmlDmVCCAdapter::CopyCommandL" );
-
- // Not supported
- Callback().SetStatusL( aStatusRef, CSmlDmAdapter::EError );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVCCAdapter::StartAtomicL()
- {
- RUBY_DEBUG_BLOCK( "CNSmlDmVCCAdapter::StartAtomicL()" );
- // Not supported
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVCCAdapter::CommitAtomicL()
- {
- RUBY_DEBUG_BLOCK( "CNSmlDmVCCAdapter::CommitAtomicL()" );
- // Not supported
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVCCAdapter::RollbackAtomicL()
- {
- RUBY_DEBUG_BLOCK( "CNSmlDmVCCAdapter::RollbackAtomicL()" );
- // Not supported
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TBool CNSmlDmVCCAdapter::StreamingSupport( TInt& /*aItemSize*/ )
- {
- RUBY_DEBUG_BLOCK( "CNSmlDmVCCAdapter::StreamingSupport" );
- return EFalse;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVCCAdapter::StreamCommittedL()
- {
- RUBY_DEBUG_BLOCK( "CNSmlDmVCCAdapter::StreamCommittedL" );
- // Not supported
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CNSmlDmVCCAdapter::CompleteOutstandingCmdsL()
- {
- RUBY_DEBUG_BLOCK( "CNSmlDmVCCAdapter::CompleteOutstandingCmdsL()" );
-
- iVCCSettings->StoreL();
- }
-
-// ---------------------------------------------------------------------------
-// Returns only the last uri segment.
-// ---------------------------------------------------------------------------
-//
-const TPtrC8 CNSmlDmVCCAdapter::LastURISeg( const TDesC8& aURI )
- {
- RUBY_DEBUG_BLOCK( "CNSmlDmVCCAdapter::LastURISeg" );
- TInt offset = aURI.LocateReverse( KNSmlDMVCCSeparatorChar );
-
- RUBY_DEBUG1( " - offset == %d", offset );
-
- TInt i;
- for ( i=aURI.Length()-1; i >= 0; i-- )
- {
- if ( aURI[i]=='/' )
- {
- break;
- }
- }
- if ( i==0 )
- {
- return aURI;
- }
- else
- {
- return aURI.Mid( i + 1 );
- }
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CSmlDmAdapter::TError CNSmlDmVCCAdapter::FetchObjectL( const TDesC8& aURI,
- CBufBase& aResult )
- {
- RUBY_DEBUG_BLOCK( "CNSmlDmVCCAdapter::FetchObjectL" );
- TInt composeResult = ETrue;
- iVCCSettings->ReadSettingsL( KVccServiceName );
-
- CSmlDmAdapter::TError retValue = CSmlDmAdapter::EOk;
- TInt err( KErrNone );
- TPtrC8 lastUriSeg = LastURISeg( aURI );
- CSPEntry* entry = CSPEntry::NewLC();
-
- iVCCSettings->FindServiceEntryL( KNSmlDMVCC_ServiceName, *entry );
-
- if ( entry->PropertyCount() > 0 )
- {
- RUBY_DEBUG0( "- Service Entry found" );
- TServiceId serviceId = entry->GetServiceId();
- CSPProperty* property = CSPProperty::NewLC();
-
- if ( KNSmlDMVCC_Name() == lastUriSeg )
- {
- RUBY_DEBUG0( "- Name" );
- err = iVCCSettings->FindPropertyL( serviceId, ESubPropertyVccName,
- *property );
- }
- else if ( KNSmlDMVCC_VDI() == lastUriSeg )
- {
- RUBY_DEBUG0( "- VDI" );
- err = iVCCSettings->FindPropertyL( serviceId, ESubPropertyVccVDI,
- *property );
- }
- else if ( KNSmlDMVCC_VDN() == lastUriSeg )
- {
- RUBY_DEBUG0( "- VDN" );
- err = iVCCSettings->FindPropertyL( serviceId, ESubPropertyVccVDN,
- *property );
- }
- else if ( KNSmlDMVCC_PreferredDomain() == lastUriSeg )
- {
- RUBY_DEBUG0( "- Preferred Domain" );
- err = iVCCSettings->FindPropertyL( serviceId,
- ESubPropertyVccPreferredDomain,
- *property );
- }
- else if ( KNSmlDMVCC_ImmediateDT() == lastUriSeg )
- {
- RUBY_DEBUG0( "- Immediate DT" );
- err = iVCCSettings->FindPropertyL( serviceId,
- ESubPropertyVccImmediateDomainTransfer,
- *property );
- }
- else if ( KNSmlDMVCC_DTCsToIM() == lastUriSeg )
- {
- RUBY_DEBUG0( "- CS to PS" );
- err = iVCCSettings->FindPropertyL( serviceId,
- ESubPropertyVccDtCstoPsAllowed,
- *property );
- }
- else if ( KNSmlDMVCC_DTIMToCs() == lastUriSeg )
- {
- RUBY_DEBUG0( "- PS to CS" );
- err = iVCCSettings->FindPropertyL( serviceId,
- ESubPropertyVccDtPstoCsAllowed,
- *property );
- }
- else if ( KNSmlDMVCC_DTHeldWaitingCalls() == lastUriSeg )
- {
- RUBY_DEBUG0( "- Held waiting calls" );
- err = iVCCSettings->FindPropertyL( serviceId,
- ESubPropertyVccDtHeldWaitingCallsAllowed,
- *property );
- }
-
- else if ( KNSmlDMVCC_WlanHOTreshold() == lastUriSeg )
- {
- RUBY_DEBUG0( "- WlanHOTreshold" );
- err = iVCCSettings->FindPropertyL( serviceId,
- ESubPropertyVccDtWLANHoTriggerLevel,
- *property );
- }
- else if ( KNSmlDMVCC_WlanHOHysteresis() == lastUriSeg )
- {
- RUBY_DEBUG0( "- WlanHOHysteresis" );
- err = iVCCSettings->FindPropertyL( serviceId,
- ESubPropertyVccDtWLANHoHysteresis,
- *property );
- }
-
- else if ( KNSmlDMVCC_WlanHysteresisTimerLow() == lastUriSeg )
- {
- RUBY_DEBUG0( "- _WlanHysteresisTimerLow" );
- err = iVCCSettings->FindPropertyL( serviceId,
- ESubPropertyVccDtWLANHoHysteresisTimerLow,
- *property );
- }
-
- else if ( KNSmlDMVCC_WlanHysteresisTimerHigh() == lastUriSeg )
- {
- RUBY_DEBUG0( "- WlanHysteresisTimerHigh" );
- err = iVCCSettings->FindPropertyL( serviceId,
- ESubPropertyVccDtCSHoHysteresisTimerHigh,
- *property );
- }
-
- else if ( KNSmlDMVCC_CSHOTreshold() == lastUriSeg )
- {
- RUBY_DEBUG0( "- CSHOTreshold" );
- err = iVCCSettings->FindPropertyL( serviceId,
- ESubPropertyVccDtCSHoTriggerLevel,
- *property );
- }
- else if ( KNSmlDMVCC_CSHOHysteresis() == lastUriSeg )
- {
- RUBY_DEBUG0( "- CSHOHysteresis" );
- err = iVCCSettings->FindPropertyL( serviceId,
- ESubPropertyVccDtCSHoHysteresis,
- *property );
- }
-
- else if ( KNSmlDMVCC_CSHysteresisTimerLow() == lastUriSeg )
- {
- RUBY_DEBUG0( "- CSHysteresisTimerLow" );
- err = iVCCSettings->FindPropertyL( serviceId,
- ESubPropertyVccDtCSHoHysteresisTimerLow,
- *property );
- }
-
- else if ( KNSmlDMVCC_CSHysteresisTimerHigh() == lastUriSeg )
- {
- RUBY_DEBUG0( "- CSHysteresisTimerHigh" );
- err = iVCCSettings->FindPropertyL( serviceId,
- ESubPropertyVccDtCSHoHysteresisTimerHigh,
- *property );
- }
-
- else if( KNSmlDMVCC_DmConRef() == lastUriSeg )
- {
- TPtrC8 conRefUri = NSmlDmURI::RemoveLastSeg(aURI);
- TPtrC8 lastConRefSeg = NSmlDmURI::LastURISeg(conRefUri);
- composeResult = EFalse;
- if(KNSmlDMVCC_VoipServiceId() == lastConRefSeg )
- {
- // Voip ConRef
- retValue= FetchVoipConRefL(aURI, aResult);
-
- }
- else
- {
- retValue = CSmlDmAdapter::ENotFound;
- }
- }
- else if ( KNSmlDMVCC_DtAllowedWhenCsOriginated() == lastUriSeg )
- {
- RUBY_DEBUG0( "- DT allowed when CS originated" );
- err = iVCCSettings->FindPropertyL( serviceId,
- ESubPropertyVccDtAllowedWhenCsOriginated,
- *property );
- }
- else
- {
- RUBY_DEBUG0( "- Invalid object" );
- retValue = CSmlDmAdapter::EInvalidObject;
- }
-
- if ( KErrNone == err && composeResult )
- {
- RUBY_DEBUG0( "- Result handling STARTt" );
- // Get result from property
- TBuf<KNSmlDMVCCMaxResultLength> buf;
- err = property->GetValue( buf );
-
- // Insert result into result buffer
- TBuf8<KNSmlDMVCCMaxResultLength> buf8;
- buf8.Append( buf );
- aResult.InsertL( 0, buf8 );
- RUBY_DEBUG0( "- Result handling STOP" );
- }
-
- CleanupStack::PopAndDestroy( property );
- }
- else
- {
- RUBY_DEBUG0( "- Service not found" );
- // Service not found
- retValue = CSmlDmAdapter::ENotFound;
- }
-
- if ( KErrNone != err )
- {
- RUBY_DEBUG1( "- Other error occurred [%d]", err );
- // Other error occurred
- retValue = CSmlDmAdapter::EError;
- }
-
- CleanupStack::PopAndDestroy( entry );
-
- return retValue;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-HBufC* CNSmlDmVCCAdapter::ConvertToUnicodeL( const TDesC8& aSource )
- {
- if ( iTempBuf )
- {
- delete iTempBuf;
- iTempBuf = NULL;
- }
-
- HBufC* temp = EscapeUtils::ConvertToUnicodeFromUtf8L( aSource );
- CleanupStack::PushL( temp );
- iTempBuf = temp->AllocL();
- CleanupStack::PopAndDestroy( temp );
-
- //return static_cast<const TDesC&>(*iTempPtr);
- return iTempBuf;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CSmlDmAdapter::TError CNSmlDmVCCAdapter::FetchVoipConRefL( const TDesC8& /*aUri*/,
- CBufBase& aObject )
- {
- RUBY_DEBUG_BLOCK( "CNSmlDmVCCAdapter::FetchVoipConRefL" );
- CSmlDmAdapter::TError status( CSmlDmAdapter::EOk );
-
- iVCCSettings->ReadSettingsL( KVccServiceName );
-
- // Fetch correct id here
- RUBY_DEBUG1( "ServiceId=%d", iVCCSettings->VoipServiceId() );
- CRCSEProfileRegistry* cRCSEProfileRegistry = CRCSEProfileRegistry::NewLC(); // CS: 1
- RPointerArray<CRCSEProfileEntry> foundEntries;
- CleanupStack::PushL( TCleanupItem( ResetAndDestroyEntries, &foundEntries ) ); // CS: 2
-
- cRCSEProfileRegistry->FindByServiceIdL( (TUint32)iVCCSettings->VoipServiceId(),
- foundEntries );
-
- RUBY_DEBUG1( "ProfileCount=%d", foundEntries.Count() );
- if ( foundEntries.Count() > 0 )
- {
- RUBY_DEBUG1( "VoipId=%d", foundEntries[0]->iId );
- TInt voipId = foundEntries[0]->iId;
-
- CBufBase* result = CBufFlat::NewL( 1 );
- CleanupStack::PushL( result ); // CS: 3
-
- // Request all VoIP identifiers
- Callback().FetchLinkL( KNSmlDMVCC_DmVoipLinkPrefix, *result, status );
-
- if( status == CSmlDmAdapter::EOk )
- {
- TInt resultSize( result->Size() );
- HBufC8* linkList = HBufC8::NewLC( resultSize ); // CS: 4
- TPtr8 linkListPtr( linkList->Des() );
- TInt numOfUriSegs( KErrNone );
-
- if( resultSize > 0 )
- {
- linkListPtr.Copy( result->Ptr(0) );
- RemoveLastSeparator( linkListPtr );
- numOfUriSegs = NSmlDmURI::NumOfURISegs( linkListPtr );
- }
-
- // Find correct VoIP profile
- while( numOfUriSegs )
- {
- TBuf8<KNSmlDMVCC_DefaultResultSize> object;
-
- // Build URI: ./VoIP/<X>/VoIPId
- object.Copy( KNSmlDMVCC_DmVoipLinkPrefix );
- object.Append( KNSmlDMVCCSeparator );
- object.Append( NSmlDmURI::LastURISeg( linkListPtr ) );
- object.Append( KNSmlDMVCCSeparator );
- object.Append( KNSmlDMVCC_DmVoipId );
-
- // Fetch VoIPId from URI
- result->Reset();
- Callback().FetchLinkL( object, *result, status );
-
- if( status == CSmlDmAdapter::EOk )
- {
- // Check if VoIPId match
- TLex8 lex( result->Ptr( 0 ) );
- TInt voipIdFromVoipAdapter( KErrNotFound );
- lex.Val( voipIdFromVoipAdapter );
-
- if( voipId == voipIdFromVoipAdapter )
- {
- aObject.InsertL( 0, NSmlDmURI::RemoveLastSeg( object ) );
- break;
- }
- }
-
- // VoIPId did not match --> continue
- linkListPtr.Copy( NSmlDmURI::RemoveLastSeg( linkListPtr ) );
-
- --numOfUriSegs;
- }
- CleanupStack::PopAndDestroy( linkList ); // CS: 3
- }
- CleanupStack::PopAndDestroy( result ); // CS: 2
- }
- else
- {
- RUBY_DEBUG0("Profiles not found");
- status = CSmlDmAdapter::ENotFound;
- }
- CleanupStack::PopAndDestroy(); // CS: 1
- CleanupStack::PopAndDestroy( cRCSEProfileRegistry ); // CS: 0
- return status;
- }
-
-// -----------------------------------------------------------------------------
-// CNSmlDmVCCAdapter::UpdateVoipConRefL
-// -----------------------------------------------------------------------------
-//
-CSmlDmAdapter::TError CNSmlDmVCCAdapter::UpdateVoipConRefL(const TDesC8& /*aUri*/,
- const TDesC8& aObject)
- {
- RUBY_DEBUG_BLOCK("CNSmlDmVCCAdapter::UpdateVoipConRefL");
-
- CSmlDmAdapter::TError status( CSmlDmAdapter::EOk );
-
- CBufBase* result = CBufFlat::NewL(1);
- CleanupStack::PushL(result); // CS: 1
-
- // Request all voip settings identifiers
- Callback().FetchLinkL(KNSmlDMVCC_DmVoip, *result, status);
-
- if( status == CSmlDmAdapter::EOk )
- {
- RUBY_DEBUG0("Voip profiles found");
- // Fetch VoIP profile id
- TBuf8<KNSmlDMVCC_DefaultResultSize> object;
- object.Copy( aObject );
- object.Append( KNSmlDMVCCSeparator );
- object.Append( KNSmlDMVCC_DmVoipId );
-
- result->Reset();
- Callback().FetchLinkL( object, *result, status );
-
- if( status == CSmlDmAdapter::EOk )
- {
- RUBY_DEBUG0("Voip Link fetched ok");
-
- // Convert VoipId to ServiceID
- CRCSEProfileRegistry* cRCSEProfileRegistry = CRCSEProfileRegistry::NewLC(); // CS: 2
-
- TInt voipProfileId;
- TLex8 temp( result->Ptr( 0 ) );
- TInt res = temp.Val(voipProfileId) ;
-
- RUBY_DEBUG1( "VoipId=%d", voipProfileId );
- if (res == KErrNone )
- {
- CRCSEProfileEntry* foundEntry = CRCSEProfileEntry::NewLC(); // CS: 3
- TRAP( res, cRCSEProfileRegistry->FindL( voipProfileId, *foundEntry ) );
-
- RUBY_DEBUG1( "ServiceId=%d", foundEntry->iServiceProviderId );
- if (res==KErrNone)
- {
- // And save
- iVCCSettings->SetVoipServiceIdL(foundEntry->iServiceProviderId);
- }
- else
- {
- RUBY_DEBUG0("Service id not found");
- status = CSmlDmAdapter::EError;
- }
- CleanupStack::PopAndDestroy( foundEntry ); // CS: 2
- }
- else
- {
- RUBY_DEBUG0("Voip id fetch failed");
- status = CSmlDmAdapter::EError;
- }
- CleanupStack::PopAndDestroy( cRCSEProfileRegistry ); // CS: 1
- }
- else
- {
- RUBY_DEBUG0("Voip link not found");
- status = CSmlDmAdapter::EError;
- }
- }
- else
- {
- RUBY_DEBUG0("Voip profiles not found");
- status = CSmlDmAdapter::ENotFound;
- }
-
- CleanupStack::PopAndDestroy(result); // CS: 0
- return status;
- }
-
-
-// -----------------------------------------------------------------------------
-// CNSmlDmVCCAdapter::RemoveLastSeparator
-// -----------------------------------------------------------------------------
-//
-void CNSmlDmVCCAdapter::RemoveLastSeparator( TPtr8& aURI )
- {
-
- if( aURI.Length() > 0 )
- {
- TChar separator( '/' );
- TInt lastchar( aURI.Length() - 1 );
-
- // Check if last character is separator.
- if( aURI[lastchar] == separator )
- {
- // Delete separator.
- aURI.Delete( lastchar, 1 );
- }
- }
- }
-
-// -----------------------------------------------------------------------------
-// CNSmlDmVCCAdapter::ResetAndDestroyEntries
-// -----------------------------------------------------------------------------
-//
-void CNSmlDmVCCAdapter::ResetAndDestroyEntries( TAny* anArray )
- {
-
- RPointerArray<CRCSEProfileEntry>* array =
- reinterpret_cast<RPointerArray<CRCSEProfileEntry>*>( anArray );
-
- if (array)
- {
- array->ResetAndDestroy();
- array->Close();
- }
- }
-
-// End of File
-