--- a/richcallsettingsengine/rcse2/src/crcseprofileregistry.cpp Thu Aug 19 09:45:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1764 +0,0 @@
-/*
-* Copyright (c) 2002-2010 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: Stores and loads CRCSEProfileEntry to/from data storage.
-*
-*/
-
-
-
-// INCLUDE FILES
-#include <sipmanagedprofileregistry.h>
-#include <sipprofile.h>
-
-#include <spsettings.h>
-#include <spentry.h>
-#include <spproperty.h>
-#include <spdefinitions.h>
-#include <featmgr.h>
-
-#include <cenrepdatabaseutil.h>
-#include <cenrepdatabaseproperty.h>
-
-#include <mmf/common/mmfcontrollerpluginresolver.h>
-
-#include "crcseprofileregistry.h"
-#include "crcseprofileentry.h"
-#include "crcseaudiocodecregistry.h"
-#include "rcsepanic.h"
-#include "rcseconstants.h"
-#include "rcsedefaults.h"
-#include "rcseprivatecrkeys.h"
-#include "rcselogger.h"
-
-
-const TInt KArrayInitSize = 2;
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CRCSEProfileRegistry::CRCSEProfileRegistry
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CRCSEProfileRegistry::CRCSEProfileRegistry()
- : CRCSERegistryBase( EVoIPProfile ),
- iSIPRegistry( NULL )
- {
- }
-
-// -----------------------------------------------------------------------------
-// CRCSEProfileRegistry::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CRCSEProfileRegistry::ConstructL()
- {
- // Check VoIP support from feature manager
- FeatureManager::InitializeLibL();
- TBool support = FeatureManager::FeatureSupported( KFeatureIdCommonVoip );
- FeatureManager::UnInitializeLib();
- if ( !support )
- {
- User::Leave( KErrNotSupported );
- }
-
- BaseConstructL();
- iSIPRegistry = CSIPManagedProfileRegistry::NewL( *this );
- }
-
-// -----------------------------------------------------------------------------
-// CRCSEProfileRegistry::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CRCSEProfileRegistry* CRCSEProfileRegistry::NewL()
- {
- CRCSEProfileRegistry* self = CRCSEProfileRegistry::NewLC();
- CleanupStack::Pop( self );
- return self;
- }
-
-// -----------------------------------------------------------------------------
-// CRCSEProfileRegistry::NewLC
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CRCSEProfileRegistry* CRCSEProfileRegistry::NewLC()
- {
- CRCSEProfileRegistry* self = new( ELeave ) CRCSEProfileRegistry;
- CleanupStack::PushL( self );
- self->ConstructL();
- return self;
- }
-
-// -----------------------------------------------------------------------------
-// Destructor
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CRCSEProfileRegistry::~CRCSEProfileRegistry()
- {
- RCSELOGSTRING( "CRCSEProfileRegistry::~CRCSEProfileRegistry() - IN" );
-
- delete iSIPRegistry;
- iSIPProfiles.ResetAndDestroy();
-
- RCSELOGSTRING( "CRCSEProfileRegistry::~CRCSEProfileRegistry() - OUT" );
- }
-
-// -----------------------------------------------------------------------------
-// CRCSEProfileRegistry::FindL
-// Start search of profile entry by provider name.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CRCSEProfileRegistry::FindL(
- const TDesC& aProviderName,
- CRCSEProfileEntry& aFoundEntry )
- {
- RCSELOGSTRING2( "CRCSEProfileRegistry::FindL(%S) - IN", &aProviderName );
-
- BeginL();
-
- RArray<TUint32> entryIds;
- CleanupClosePushL( entryIds );
-
- // Search IDs of entries that have this service ID
- FindIdsByValueL( KColProviderName,
- aProviderName,
- entryIds );
-
- // Search whole entry if ID was found
- if ( 0 < entryIds.Count() )
- {
- FindEntryL( entryIds[ 0 ], aFoundEntry );
- }
- else
- {
- User::Leave( KErrNotFound );
- }
-
- // Check that SIP Ids are valid
- UpdateSIPProfileLinksL( aFoundEntry );
-
- CleanupStack::PopAndDestroy( &entryIds );
-
- EndL();
-
- RCSELOGSTRING2( "CRCSEProfileRegistry::FindL(%S) - OUT", &aProviderName );
- }
-
-// -----------------------------------------------------------------------------
-// CRCSEProfileRegistry::FindL
-// Start search of profile entry by ID.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CRCSEProfileRegistry::FindL(
- TUint32 aProfileId,
- CRCSEProfileEntry& aFoundEntry )
- {
- RCSELOGSTRING2( "CRCSEProfileRegistry::FindL(id=%d) - IN", aProfileId );
-
- BeginL();
-
- FindEntryL( aProfileId, aFoundEntry );
-
- // Check that SIP Ids are valid
- UpdateSIPProfileLinksL( aFoundEntry );
-
- EndL();
-
- RCSELOGSTRING2( "CRCSEProfileRegistry::FindL(id=%d) - OUT", aProfileId );
- }
-
-// -----------------------------------------------------------------------------
-// CRCSEProfileRegistry::AddL
-// Start addition of profile entry.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TUint32 CRCSEProfileRegistry::AddL(
- const CRCSEProfileEntry& aNewEntry )
- {
- RCSELOGSTRING( "CRCSEProfileRegistry::AddL() - IN" );
-
- BeginL();
-
- TUint32 id( KNoEntryId );
-
- // Add entry to storage
- AddOrUpdateEntryL( id, aNewEntry );
-
- __ASSERT_ALWAYS( KNoEntryId < id, User::Leave( KErrCorrupt ) );
-
- // Create service settings or use existing
- CRCSEProfileEntry& modifyEntry
- = const_cast<CRCSEProfileEntry&>( aNewEntry );
-
- // New service settings entry...
- if( ( CRCSEProfileEntry::EOONotSet == modifyEntry.iNewServiceTableEntry ||
- CRCSEProfileEntry::EOn == modifyEntry.iNewServiceTableEntry ) )
- {
- CreateDefaultServiceSettingsL( modifyEntry );
- if ( modifyEntry.iServiceProviderId != KRCSEDefServiceProviderId )
- {
- UpdateServiceIdL( id, modifyEntry.iServiceProviderId );
- }
- }
-
- // Use existing service settings entry if
- // - given service id is valid
- // - service id is not used by another profile
- // - provider name is valid
- else if( CRCSEProfileEntry::EOff == modifyEntry.iNewServiceTableEntry &&
- KSPNoId < modifyEntry.iServiceProviderId )
- {
- // Check that provide name is valid
- TBool providerExist(
- NameExistsInServiceTableL( modifyEntry.iProviderName ) );
-
- if( !providerExist )
- {
- User::Leave( KErrNotFound );
- }
-
- // Check that service id is not used by another profile
- LeaveIfServiceIdInUseL( modifyEntry );
- }
-
- // Fail all other cases
- else
- {
- User::Leave( KErrArgument );
- }
-
- EndL();
-
- RCSELOGSTRING( "CRCSEProfileRegistry::AddL() - OUT" );
-
- return id;
- }
-
-// -----------------------------------------------------------------------------
-// CRCSEProfileRegistry::DeleteL
-// Deletes a profile entry which profile id is aProfileId.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CRCSEProfileRegistry::DeleteL(
- TUint32 aProfileId )
- {
- RCSELOGSTRING( "CRCSEProfileRegistry::DeleteL() - IN" );
-
- // Delete referenced settings first
- DeleteReferenceSettingsL( aProfileId );
-
- // Start transaction here since referenced settings are
- // deleted in own separate transaction
- BeginL();
-
- // Delete actual profile
- iCenRepDb->DeleteEntryL( aProfileId );
-
- EndL();
-
- RCSELOGSTRING( "CRCSEProfileRegistry::DeleteL() - OUT" );
- }
-
-// -----------------------------------------------------------------------------
-// CRCSEProfileRegistry::UpdateL
-// Updates profile entry, which profile identifier is aId.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CRCSEProfileRegistry::UpdateL(
- TUint32 aId, const CRCSEProfileEntry& aUpdateData )
- {
- RCSELOGSTRING2( "CRCSEProfileRegistry::UpdateL(%d) - IN", aId );
-
- __ASSERT_ALWAYS( KNoEntryId < aId, User::Leave( KErrArgument ) );
-
- BeginL();
-
- AddOrUpdateEntryL( aId, aUpdateData );
-
- // Update also service settings if needed
- if ( aUpdateData.iIds.Count() &&
- aUpdateData.iIds[0].iProfileType == CRCSEProfileEntry::EProtocolSIP )
- {
- if ( aUpdateData.iServiceProviderId == KRCSEDefServiceProviderId )
- {
- CRCSEProfileEntry* entry = CRCSEProfileEntry::NewLC();
- CopyEntryValues( aUpdateData, *entry );
- CreateDefaultServiceSettingsL( *entry );
- UpdateServiceSettingsL( *entry );
- AddOrUpdateEntryL( aId, *entry );
- CleanupStack::PopAndDestroy( entry );
- }
- else
- {
- UpdateServiceSettingsL( aUpdateData );
- }
- }
-
- EndL();
-
- RCSELOGSTRING2( "CRCSEProfileRegistry::UpdateL(%d) - OUT", aId );
- }
-
-// -----------------------------------------------------------------------------
-// CRCSEProfileRegistry::GetDefaultProfile
-// Resets a default profile values.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CRCSEProfileRegistry::GetDefaultProfile(
- CRCSEProfileEntry& aDefaultProfile ) const
- {
- aDefaultProfile.ResetDefaultValues();
- }
-
-// -----------------------------------------------------------------------------
-// CRCSEProfileRegistry::GetAllIdsL
-// Gets all profile identifiers.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CRCSEProfileRegistry::GetAllIdsL( RArray<TUint32>& aAllIds )
- {
- RCSELOGSTRING( "CRCSEProfileRegistry::GetAllIdsL() - IN" );
-
- BeginL();
-
- FindAllIdsL( aAllIds );
-
- EndL();
-
- RCSELOGSTRING( "CRCSEProfileRegistry::GetAllIdsL() - OUT" );
- }
-
-
-// -----------------------------------------------------------------------------
-// CRCSEProfileRegistry::FindByServiceIdL
-// Gets all profiles matching to service ID.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CRCSEProfileRegistry::FindByServiceIdL( TUint32 aServiceId,
- RPointerArray<CRCSEProfileEntry>& aFoundEntries )
- {
- RCSELOGSTRING( "CRCSEProfileRegistry::FindByServiceIdL() - IN" );
-
- CleanupResetAndDestroyPushL( aFoundEntries );
-
- BeginL();
-
- TBuf<KDesLength128> des;
-
- RArray<TUint32> entryIds;
- CleanupClosePushL( entryIds );
-
- // Search IDs of entries that have this service ID
- FindIdsByValueL( KColServiceProviderId,
- ToDes( aServiceId, des ),
- entryIds );
-
- const TInt count( entryIds.Count() );
- RCSELOGSTRING2( " - Entries found: %d", count );
-
- // Search entries using found IDs
- for ( TInt i( 0 ); i < count; i++ )
- {
- CRCSEProfileEntry* entry = CRCSEProfileEntry::NewLC();
- TRAPD( e, FindEntryL( entryIds[ i ], *entry ) );
-
- if ( KErrNone == e )
- {
- aFoundEntries.AppendL( entry );
- CleanupStack::Pop( entry );
- }
- else
- {
- CleanupStack::PopAndDestroy( entry );
- }
- }
-
- CleanupStack::PopAndDestroy( &entryIds );
-
- // Update SIP profile links
- const TInt entryCount( aFoundEntries.Count() );
- for ( TInt k( 0 ); k < entryCount; ++k )
- {
- UpdateSIPProfileLinksL( *aFoundEntries[k] );
- }
-
- EndL();
-
- CleanupStack::Pop( &aFoundEntries );
-
- RCSELOGSTRING( "CRCSEProfileRegistry::FindByServiceIdL() - OUT" );
- }
-
-
-// -----------------------------------------------------------------------------
-// CRCSEProfileRegistry::FindBySIPSprofileIdL
-// Gets all profiles based on SIP profile ID.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CRCSEProfileRegistry::FindBySIPProfileIdL( TUint32 aSipProfileId,
- RPointerArray<CRCSEProfileEntry>& aFoundEntries )
- {
- RCSELOGSTRING( "CRCSEProfileRegistry::FindBySIPProfileIdL() - IN" );
-
- CleanupResetAndDestroyPushL( aFoundEntries );
-
- BeginL();
-
- // Find all profile IDs
- RArray<TUint32> voipIds;
- CleanupClosePushL( voipIds );
- FindAllIdsL( voipIds );
-
- // Check protocol ids (iIds) from each found profile ID.
- // Leave only those profile IDs where match found.
- CCenRepDatabaseProperty* property = CCenRepDatabaseProperty::NewLC();
- TInt count( voipIds.Count() );
-
- RArray<TSettingIds> prIds;
- CleanupClosePushL( prIds );
-
- for ( TInt i( 0 ); i < count; i++ )
- {
- iCenRepDb->FindPropertyL( voipIds[ i ], KColProtocolIds, *property );
-
- const TDesC& value = property->GetDesValue();
-
- ExtractProtocoIdsL( value, prIds );
-
- TBool found( EFalse );
- TInt prIdCount( prIds.Count() );
- for ( TInt j( 0 ); j < prIdCount && !found; j++ )
- {
- if ( prIds[ j ].iProfileType == CRCSEProfileEntry::EProtocolSIP &&
- prIds[ j ].iProfileId == aSipProfileId )
- {
- found = ETrue;
- }
- }
-
- // Search profile if match found
- if ( found )
- {
- CRCSEProfileEntry* entry = CRCSEProfileEntry::NewLC();
- TRAPD( e, FindEntryL( voipIds[ i ], *entry ) );
-
- if ( KErrNone == e )
- {
- aFoundEntries.AppendL( entry );
- CleanupStack::Pop( entry );
- }
- else
- {
- CleanupStack::PopAndDestroy( entry );
- }
- }
- }
-
-
- CleanupStack::PopAndDestroy( &prIds );
- CleanupStack::PopAndDestroy( property );
-
-
- // Update SIP profile links
- TInt entryCount( aFoundEntries.Count() );
- for ( TInt k( 0 ); k < entryCount; ++k )
- {
- UpdateSIPProfileLinksL( *aFoundEntries[k] );
- }
-
- CleanupStack::PopAndDestroy( &voipIds );
- EndL();
-
- CleanupStack::Pop( &aFoundEntries );
-
- RCSELOGSTRING( "CRCSEProfileRegistry::FindBySIPProfileIdL() - OUT" );
- }
-
-// ---------------------------------------------------------------------------
-// CRCSEProfileRegistry::AddL
-// Add bunch of entries to store
-// ---------------------------------------------------------------------------
-//
-void CRCSEProfileRegistry::AddL(
- RPointerArray<CRCSEProfileEntry>& aEntries )
- {
- RCSELOGSTRING2(
- "CRCSEProfileRegistry::AddL( %d entries) - IN", aEntries.Count() );
-
- BeginL();
-
- TInt count( aEntries.Count() );
-
- for ( TInt i( 0 ); i < count; ++i )
- {
- // Create service settings if service ID is not available for entry
- if ( KRCSEDefServiceProviderId == aEntries[ i ]->iServiceProviderId )
- {
- CreateDefaultServiceSettingsL( *aEntries[ i ] );
- }
-
- TUint32 id( KNoEntryId );
- AddOrUpdateEntryL( id, *aEntries[ i ] );
- aEntries[ i ]->iId = id;
- }
-
-
- EndL();
-
- RCSELOGSTRING( "CRCSEProfileRegistry::AddL(entries) - OUT" );
- }
-
-// -----------------------------------------------------------------------------
-// CRCSEProfileRegistry::FindEntryL
-// Do actual search of profile entry
-// -----------------------------------------------------------------------------
-//
-void CRCSEProfileRegistry::FindEntryL(
- TUint32 aProfileId,
- CRCSEProfileEntry& aFoundEntry )
- {
- RCSELOGSTRING2( "CRCSEProfileRegistry::FindEntryL(id=%d) - IN", aProfileId );
-
- RIpAppPropArray properties;
- TCleanupItem cleanup( CRCSERegistryBase::CleanupDbPropArray, &properties );
- CleanupStack::PushL( cleanup );
-
- User::LeaveIfError( iCenRepDb->FindEntryL( aProfileId, properties ) );
- ConvertPropertiesToEntryL( aFoundEntry, properties );
- aFoundEntry.iId = aProfileId;
-
- CleanupStack::PopAndDestroy( &properties );
-
- RCSELOGSTRING2( "CRCSEProfileRegistry::FindEntryL(id=%d) - OUT", aProfileId );
- }
-
-// -----------------------------------------------------------------------------
-// CRCSEProfileRegistry::AddOrUpdateEntryL
-// Adds new entry or updates values of existing enry
-// -----------------------------------------------------------------------------
-//
-void CRCSEProfileRegistry::AddOrUpdateEntryL(
- TUint32& aId,
- const CRCSEProfileEntry& aEntry )
- {
- RCSELOGSTRING( "CRCSEProfileRegistry::AddOrUpdateEntryL() - IN" );
-
- TInt id( aId );
-
- RIpAppPropArray properties;
- TCleanupItem cleanup( CRCSERegistryBase::CleanupDbPropArray, &properties );
- CleanupStack::PushL( cleanup );
-
- ConvertEntryToPropertiesL( aEntry, properties );
-
- if ( KNoEntryId == id ) // Add new one
- {
- RCSELOGSTRING( "-- Add --" );
- iCenRepDb->AddEntryL( id, properties );
- }
- else // Update existing entry
- {
- RCSELOGSTRING( "-- Update --" );
- User::LeaveIfError( iCenRepDb->UpdateEntryL( id, properties ) );
- }
-
- aId = id;
-
- CleanupStack::PopAndDestroy( &properties );
-
- RCSELOGSTRING( "CRCSEProfileRegistry::AddOrUpdateEntryL() - OUT" );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CRCSEProfileRegistry::ConvertPropertiesToEntryL(
- CRCSEProfileEntry& aEntry,
- RIpAppPropArray& aProperties )
- {
- RCSELOGSTRING( "CRCSEProfileRegistry::ConvertPropertiesToEntryL() - IN" );
-
- aEntry.ResetDefaultValues();
-
- TBuf<KDesLength256> value;
-
- GetPropertyValueL( KColProviderName, aEntry.iProviderName, aProperties );
-
- GetPropertyValueL( KColSettingsName, aEntry.iSettingsName, aProperties );
-
- GetPropertyValueL( KColPreferredCodecs, value, aProperties );
-
- TLex lex2( value );
- while( !lex2.Eos() )
- {
- // Extract the number as unsigned int 32, which can be
- // converted to value wanted (template)
- TUint32 num;
- lex2.Val( num, EDecimal );
- aEntry.iPreferredCodecs.AppendL( static_cast<TUint32>( num ) );
- // Skip characters to space char.
- lex2.SkipCharacters();
- if ( !lex2.Eos() ) // Check that End of string is not next char.
- {
- // Go over the space character.
- lex2.Inc( 1 );
- }
- }
-
- GetPropertyValueL( KColStartMediaPort, value, aProperties );
- aEntry.iStartMediaPort = ToTInt32L( value );
-
- GetPropertyValueL( KColEndMediaPort, value, aProperties );
- aEntry.iEndMediaPort = ToTInt32L( value );
-
- GetPropertyValueL( KColSiqnalingQOS, value, aProperties );
- aEntry.iSiqnalingQOS = ToTInt32L( value );
-
- GetPropertyValueL( KColMediaQOS, value, aProperties );
- aEntry.iMediaQOS = ToTInt32L( value );
-
- GetPropertyValueL( KColInbandDtmf, value, aProperties );
- aEntry.iInbandDTMF = static_cast<CRCSEProfileEntry::TOnOff>( ToTInt32L( value ) );
-
- GetPropertyValueL( KColOutbandDtmf, value, aProperties );
- aEntry.iOutbandDTMF = static_cast<CRCSEProfileEntry::TOnOff>( ToTInt32L( value ) );
-
- GetPropertyValueL( KColHoldRingBack, value, aProperties );
- aEntry.iHoldRingBack = ToTInt32L( value );
-
- GetPropertyValueL( KColAutoComplete, value, aProperties );
- aEntry.iAutoComplete = static_cast<CRCSEProfileEntry::TOnOff>( ToTInt32L( value ) );
-
- GetPropertyValueL( KColCFNoAnswer, value, aProperties );
- aEntry.iCFNoAnswer = static_cast<CRCSEProfileEntry::TOnOff>( ToTInt32L( value ) );
-
- GetPropertyValueL( KColCFBusy, value, aProperties );
- aEntry.iCFBusy = static_cast<CRCSEProfileEntry::TOnOff>( ToTInt32L( value ) );
-
- GetPropertyValueL( KColCFUnconditional, value, aProperties );
- aEntry.iCFUnconditional = static_cast<CRCSEProfileEntry::TOnOff>( ToTInt32L( value ) );
-
- GetPropertyValueL( KColRedundancy, value, aProperties );
- aEntry.iRedundancy = static_cast<CRCSEProfileEntry::TOnOff>( ToTInt32L( value ) );
-
- GetPropertyValueL( KColProtocolIds, value, aProperties );
- ExtractProtocoIdsL( value, aEntry.iIds );
-
- GetPropertyValueL( KColSecureCallPreference, value, aProperties );
- aEntry.iSecureCallPreference = ToTUint32L( value );
-
- GetPropertyValueL( KColVoIPProfileLock, value, aProperties );
- aEntry.iVoIPProfileLock = ToTUint32L( value );
-
- GetPropertyValueL( KColAdhocAllowed, value, aProperties );
- aEntry.iAdhocAllowed = ToTUint32L( value );
-
- GetPropertyValueL( KColSIPServerType, value, aProperties );
- aEntry.iSIPServerType.Copy( value );
-
- GetPropertyValueL( KColSBCType, value, aProperties );
- aEntry.iSBCType.Copy( value );;
-
- GetPropertyValueL( KColSTUNServerType, value, aProperties );
- aEntry.iSTUNServerType.Copy( value );
-
- GetPropertyValueL( KColWLANAPType, value, aProperties );
- aEntry.iWLANAPType.Copy( value );
-
- GetPropertyValueL( KColPSTNGatewayType, value, aProperties );
- aEntry.iPSTNGatewayType.Copy( value );
-
- GetPropertyValueL( KColSecurityGatewayType, value, aProperties );
- aEntry.iSecurityGatewayType.Copy( value );
-
- GetPropertyValueL( KColRTCP, value, aProperties );
- aEntry.iRTCP = ToTUint32L( value );
-
- GetPropertyValueL( KColSIPVoIPUAHTerminalType, value, aProperties );
- aEntry.iSIPVoIPUAHTerminalType = ToTUint32L( value );
-
- GetPropertyValueL( KColSIPVoIPUAHeaderWLANMAC, value, aProperties );
- aEntry.iSIPVoIPUAHeaderWLANMAC = ToTUint32L( value );
-
- GetPropertyValueL( KColSIPVoIPUAHeaderString, value, aProperties );
- aEntry.iSIPVoIPUAHeaderString.Copy( value );
-
- GetPropertyValueL( KColProfileLockedToIAP, value, aProperties );
- aEntry.iProfileLockedToIAP = static_cast<CRCSEProfileEntry::TOnOff>( ToTInt32L( value ) );
-
- GetPropertyValueL( KColVoIPPluginUID, value, aProperties );
- aEntry.iVoIPPluginUID = ToTInt32L( value );
-
- GetPropertyValueL( KColAllowVoIPoverWCDMA, value, aProperties );
- aEntry.iAllowVoIPoverWCDMA = static_cast<CRCSEProfileEntry::TOnOff>( ToTInt32L( value ) );
-
- GetPropertyValueL( KColAllowVoIPoverBT, value, aProperties );
- aEntry.iAllowVoIPoverBT = static_cast<CRCSEProfileEntry::TOnOff>( ToTInt32L( value ) );
-
- GetPropertyValueL( KColMeanCountOfVoIPDigits, value, aProperties );
- aEntry.iMeanCountOfVoIPDigits = ToTInt32L( value );
-
- GetPropertyValueL( KColIgnoreAddrDomainPart, value, aProperties );
- aEntry.iIgnoreAddrDomainPart = ToTInt32L( value );
-
- GetPropertyValueL( KColHandoverDialect, value, aProperties );
- aEntry.iHandoverDialect = ToTInt32L( value );
-
- GetPropertyValueL( KColPSTelephonyHOPreference, value, aProperties );
- aEntry.iPSTelephonyHOPreference = ToTInt32L( value );
-
- GetPropertyValueL( KColHOThresholdValueLL, value, aProperties );
- aEntry.iHOThresholdValueLL = ToTInt32L( value );
-
- GetPropertyValueL( KColHOThresholdValueHL, value, aProperties );
- aEntry.iHOThresholdValueHL = ToTInt32L( value );
-
- GetPropertyValueL( KColNumberOfMeasurementsAbove, value, aProperties );
- aEntry.iNumberOfMeasurementsAbove = ToTInt32L( value );
-
- GetPropertyValueL( KColNumberOfMeasurementsBelow, value, aProperties );
- aEntry.iNumberOfMeasurementsBelow = ToTInt32L( value );
-
- GetPropertyValueL( KColSmartScannInterParaHigh, value, aProperties );
- aEntry.iSmartScannInterParaHigh = ToTInt32L( value );
-
- GetPropertyValueL( KColSmartScannInterParaMedium, value, aProperties );
- aEntry.iSmartScannInterParaMedium = ToTInt32L( value );
-
- GetPropertyValueL( KColSmartScannInterParaLow, value, aProperties );
- aEntry.iSmartScannInterParaLow = ToTInt32L( value );
-
- GetPropertyValueL( KColSmartScannInterParaStatic, value, aProperties );
- aEntry.iSmartScannInterParaStatic = ToTInt32L( value );
-
- GetPropertyValueL( KColSmartScannDurationHighMode, value, aProperties );
- aEntry.iSmartScannDurationHighMode = ToTInt32L( value );
-
- GetPropertyValueL( KColSmartScannDurationMediumMode, value, aProperties );
- aEntry.iSmartScannDurationMediumMode = ToTInt32L( value );
-
- GetPropertyValueL( KColSmartScannDurationLowMode, value, aProperties );
- aEntry.iSmartScannDurationLowMode = ToTInt32L( value );
-
- GetPropertyValueL( KColHandoffNumber, value, aProperties );
- aEntry.iHandoffNumber = ToTInt32L( value );
-
- GetPropertyValueL( KColHandbackNumber, value, aProperties );
- aEntry.iHandbackNumber = ToTInt32L( value );
-
- GetPropertyValueL( KColHysterisisTimer, value, aProperties );
- aEntry.iHysterisisTimer = ToTInt32L( value );
-
- GetPropertyValueL( KColHandOffProcessTimer, value, aProperties );
- aEntry.iHandOffProcessTimer = ToTInt32L( value );
-
- GetPropertyValueL( KColDisconnectProcessTimer, value, aProperties );
- aEntry.iDisconnectProcessTimer = ToTInt32L( value );
-
- GetPropertyValueL( KColHandoffPrefix, value, aProperties );
- aEntry.iHandoffPrefix.Copy( value );
-
- GetPropertyValueL( KColHandbackPrefix, value, aProperties );
- aEntry.iHandbackPrefix.Copy( value );
-
- GetPropertyValueL( KColHandoverTones, value, aProperties );
- aEntry.iHandoverTones = ToTInt32L( value );
-
- GetPropertyValueL( KColSupportSMSoverWLAN, value, aProperties );
- aEntry.iSupportSMSoverWLAN = ToTInt32L( value );
-
- GetPropertyValueL( KColServiceProviderId, value, aProperties );
- aEntry.iServiceProviderId = ToTUint32L( value );
-
- GetPropertyValueL( KColUserPhoneUriParam, value, aProperties );
- aEntry.iUserPhoneUriParameter = static_cast<CRCSEProfileEntry::TOnOff>( ToTInt32L( value ) );
-
- GetPropertyValueL( KColSIPConnTestAddress, value, aProperties );
- aEntry.iSIPConnTestAddress.Copy( value );
-
- GetPropertyValueL( KColNATSettingsStorageId, value, aProperties );
- aEntry.iNATSettingsStorageId = ToTUint32L( value );
-
- GetPropertyValueL( KColSIPMinSE, value, aProperties );
- aEntry.iSIPMinSE = ToTInt32L( value );
-
- GetPropertyValueL( KColSIPSessionExpires, value, aProperties );
- aEntry.iSIPSessionExpires = ToTInt32L( value );
-
- GetPropertyValueL( KColNATProtocol, value, aProperties );
- aEntry.iNATProtocol = ToTInt32L( value );
-
- GetPropertyValueL( KColNewServiceTable, value, aProperties );
- aEntry.iNewServiceTableEntry = static_cast<CRCSEProfileEntry::TOnOff>( ToTInt32L( value ) );
-
- GetPropertyValueL( KColSNAPId, value, aProperties );
- aEntry.iSNAPId = ToTUint32L( value );
-
- GetPropertyValueL( KColCreationUrl, value, aProperties );
- aEntry.iAccountCreationUrl.Copy( value );
-
- RCSELOGSTRING( "CRCSEProfileRegistry::ConvertPropertiesToEntryL() - OUT" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CRCSEProfileRegistry::ConvertEntryToPropertiesL(
- const CRCSEProfileEntry& aEntry,
- RIpAppPropArray& aProperties )
- {
- RCSELOGSTRING( "CRCSEProfileRegistry::ConvertEntryToPropertiesL() - IN" );
-
- // Descriptor for value conversion
- TBuf<KDesLength128> des;
-
- CreatePropertyL( KColProviderName,
- aEntry.iProviderName,
- aProperties );
-
- CreatePropertyL( KColSettingsName,
- aEntry.iSettingsName,
- aProperties );
-
- TInt count = aEntry.iPreferredCodecs.Count();
- des.Zero();
- for ( TInt j( 0 ); j < count; j++ )
- {
- des.AppendNum( static_cast<TUint32>( aEntry.iPreferredCodecs[j] ) );
- if ( j < count - 1 )
- {
- des.Append( KSpace );
- }
- }
-
- CreatePropertyL( KColPreferredCodecs,
- des,
- aProperties );
-
- CreatePropertyL( KColStartMediaPort,
- ToDes( aEntry.iStartMediaPort, des ),
- aProperties );
-
- CreatePropertyL( KColEndMediaPort,
- ToDes( aEntry.iEndMediaPort, des ),
- aProperties );
-
- CreatePropertyL( KColSiqnalingQOS,
- ToDes( aEntry.iSiqnalingQOS, des ),
- aProperties );
-
- CreatePropertyL( KColMediaQOS,
- ToDes( aEntry.iMediaQOS, des ),
- aProperties );
-
- TInt32 inbandDTMF( aEntry.iInbandDTMF ); // TOnOff
- CreatePropertyL( KColInbandDtmf,
- ToDes( inbandDTMF, des ),
- aProperties );
-
- TInt32 outbandDTMF( aEntry.iOutbandDTMF ); // TOnOff
- CreatePropertyL( KColOutbandDtmf,
- ToDes( outbandDTMF, des ),
- aProperties );
-
- TInt32 holdRingBack( aEntry.iHoldRingBack ); // TOnOff
- CreatePropertyL( KColHoldRingBack,
- ToDes( holdRingBack, des ),
- aProperties );
-
- TInt32 autoComplete = aEntry.iAutoComplete; // TOnOff
- CreatePropertyL( KColAutoComplete,
- ToDes( autoComplete, des ),
- aProperties );
-
- TInt32 cfNoAnswer( aEntry.iCFNoAnswer ); // TOnOff
- CreatePropertyL( KColCFNoAnswer,
- ToDes( cfNoAnswer, des ),
- aProperties );
-
- TInt32 cfBusy( aEntry.iCFBusy ); // TOnOff
- CreatePropertyL( KColCFBusy,
- ToDes( cfBusy, des ),
- aProperties );
-
- TInt32 cfUnconditional( aEntry.iCFUnconditional ); // TOnOff
- CreatePropertyL( KColCFUnconditional,
- ToDes( cfUnconditional, des ),
- aProperties );
-
- TInt32 redundancy( aEntry.iRedundancy ); // TOnOff
- CreatePropertyL( KColRedundancy,
- ToDes( redundancy, des ),
- aProperties );
-
- des.Zero();
- TBuf<KDesLength15> intDes; // for SIP profile ID
- count = aEntry.iIds.Count();
-
- if ( count )
- {
- for( TInt i = 0; i < count; i++ )
- {
- intDes.Zero();
-
- TInt profileType = aEntry.iIds[i].iProfileType;
- intDes.Num( profileType );
- des.Append( intDes );
- des.Append( KSpace );
-
- TInt profileId = aEntry.iIds[i].iProfileId;
- intDes.Num( profileId );
- des.Append( intDes );
- des.Append( KSpace );
-
- TInt profileSpecificId = aEntry.iIds[i].iProfileSpecificSettingId;
- intDes.Num( profileSpecificId );
- des.Append( intDes );
- des.Append( KSpace );
- }
- }
-
- CreatePropertyL( KColProtocolIds,
- des,
- aProperties );
-
- CreatePropertyL( KColSecureCallPreference,
- ToDes( aEntry.iSecureCallPreference, des ),
- aProperties );
-
- CreatePropertyL( KColVoIPProfileLock,
- ToDes( aEntry.iVoIPProfileLock, des ),
- aProperties );
-
- CreatePropertyL( KColAdhocAllowed,
- ToDes( aEntry.iAdhocAllowed, des ),
- aProperties );
-
- CreatePropertyL( KColSIPServerType,
- aEntry.iSIPServerType,
- aProperties );
-
- CreatePropertyL( KColSBCType,
- aEntry.iSBCType,
- aProperties );
-
- CreatePropertyL( KColSTUNServerType,
- aEntry.iSTUNServerType,
- aProperties );
-
- CreatePropertyL( KColWLANAPType,
- aEntry.iWLANAPType,
- aProperties );
-
- CreatePropertyL( KColPSTNGatewayType,
- aEntry.iPSTNGatewayType,
- aProperties );
-
- CreatePropertyL( KColSecurityGatewayType,
- aEntry.iSecurityGatewayType,
- aProperties );
-
- CreatePropertyL( KColRTCP,
- ToDes( aEntry.iRTCP, des ),
- aProperties );
-
- CreatePropertyL( KColSIPVoIPUAHTerminalType,
- ToDes( aEntry.iSIPVoIPUAHTerminalType, des ),
- aProperties );
-
- CreatePropertyL( KColSIPVoIPUAHeaderWLANMAC,
- ToDes( aEntry.iSIPVoIPUAHeaderWLANMAC, des ),
- aProperties );
-
- CreatePropertyL( KColSIPVoIPUAHeaderString,
- aEntry.iSIPVoIPUAHeaderString,
- aProperties );
-
- TInt32 profileLockedToIAP( aEntry.iProfileLockedToIAP ); // TOnOff
- CreatePropertyL( KColProfileLockedToIAP,
- ToDes( profileLockedToIAP, des ),
- aProperties );
-
- CreatePropertyL( KColVoIPPluginUID,
- ToDes( aEntry.iVoIPPluginUID, des ),
- aProperties );
-
- TInt32 allowVoIPoverWCDMA( aEntry.iAllowVoIPoverWCDMA ); // TOnOff
- CreatePropertyL( KColAllowVoIPoverWCDMA,
- ToDes( allowVoIPoverWCDMA, des ),
- aProperties );
-
- TInt32 allowVoIPoverBT( aEntry.iAllowVoIPoverBT ); // TOnOff
- CreatePropertyL( KColAllowVoIPoverBT,
- ToDes( allowVoIPoverBT, des ),
- aProperties );
-
- CreatePropertyL( KColMeanCountOfVoIPDigits,
- ToDes( aEntry.iMeanCountOfVoIPDigits, des ),
- aProperties );
-
- CreatePropertyL( KColIgnoreAddrDomainPart,
- ToDes( aEntry.iIgnoreAddrDomainPart, des ),
- aProperties );
-
- CreatePropertyL( KColHandoverDialect,
- ToDes( aEntry.iHandoverDialect, des ),
- aProperties );
-
- CreatePropertyL( KColPSTelephonyHOPreference,
- ToDes( aEntry.iPSTelephonyHOPreference, des ),
- aProperties );
-
- CreatePropertyL( KColHOThresholdValueLL,
- ToDes( aEntry.iHOThresholdValueLL, des ),
- aProperties );
-
- CreatePropertyL( KColHOThresholdValueHL,
- ToDes( aEntry.iHOThresholdValueHL, des ),
- aProperties );
-
- CreatePropertyL( KColNumberOfMeasurementsAbove,
- ToDes( aEntry.iNumberOfMeasurementsAbove, des ),
- aProperties );
-
- CreatePropertyL( KColNumberOfMeasurementsBelow,
- ToDes( aEntry.iNumberOfMeasurementsBelow, des ),
- aProperties );
-
- CreatePropertyL( KColSmartScannInterParaHigh,
- ToDes( aEntry.iSmartScannInterParaHigh, des ),
- aProperties );
-
- CreatePropertyL( KColSmartScannInterParaMedium,
- ToDes( aEntry.iSmartScannInterParaMedium, des ),
- aProperties );
-
- CreatePropertyL( KColSmartScannInterParaLow,
- ToDes( aEntry.iSmartScannInterParaLow, des ),
- aProperties );
-
- CreatePropertyL( KColSmartScannInterParaStatic,
- ToDes( aEntry.iSmartScannInterParaStatic, des ),
- aProperties );
-
- CreatePropertyL( KColSmartScannDurationHighMode,
- ToDes( aEntry.iSmartScannDurationHighMode, des ),
- aProperties );
-
- CreatePropertyL( KColSmartScannDurationMediumMode,
- ToDes( aEntry.iSmartScannDurationMediumMode, des ),
- aProperties );
-
- CreatePropertyL( KColSmartScannDurationLowMode,
- ToDes( aEntry.iSmartScannDurationLowMode, des ),
- aProperties );
-
- CreatePropertyL( KColHandoffNumber,
- ToDes( aEntry.iHandoffNumber, des ),
- aProperties );
-
- CreatePropertyL( KColHandbackNumber,
- ToDes( aEntry.iHandbackNumber, des ),
- aProperties );
-
- CreatePropertyL( KColHysterisisTimer,
- ToDes( aEntry.iHysterisisTimer, des ),
- aProperties );
-
- CreatePropertyL( KColHandOffProcessTimer,
- ToDes( aEntry.iHandOffProcessTimer, des ),
- aProperties );
-
- CreatePropertyL( KColDisconnectProcessTimer,
- ToDes( aEntry.iDisconnectProcessTimer, des ),
- aProperties );
-
- CreatePropertyL( KColHandoffPrefix,
- aEntry.iHandoffPrefix,
- aProperties );
-
- CreatePropertyL( KColHandbackPrefix,
- aEntry.iHandbackPrefix,
- aProperties );
-
- CreatePropertyL( KColHandoverTones,
- ToDes( aEntry.iHandoverTones, des ),
- aProperties );
-
- CreatePropertyL( KColSupportSMSoverWLAN,
- ToDes( aEntry.iSupportSMSoverWLAN, des ),
- aProperties );
-
- CreatePropertyL( KColServiceProviderId,
- ToDes( aEntry.iServiceProviderId, des ),
- aProperties );
-
- TInt32 userPhoneUriParameter( aEntry.iUserPhoneUriParameter ); // TOnOff
- CreatePropertyL( KColUserPhoneUriParam,
- ToDes( userPhoneUriParameter, des ),
- aProperties );
-
- CreatePropertyL( KColSIPConnTestAddress,
- aEntry.iSIPConnTestAddress,
- aProperties );
-
- CreatePropertyL( KColNATSettingsStorageId,
- ToDes( aEntry.iNATSettingsStorageId, des ),
- aProperties );
-
- CreatePropertyL( KColSIPMinSE,
- ToDes( aEntry.iSIPMinSE, des ),
- aProperties );
-
- CreatePropertyL( KColSIPSessionExpires,
- ToDes( aEntry.iSIPSessionExpires, des ),
- aProperties );
-
- CreatePropertyL( KColNATProtocol,
- ToDes( aEntry.iNATProtocol, des ),
- aProperties );
-
- TInt32 newServiceTable( aEntry.iNewServiceTableEntry ); // TOnOff
- CreatePropertyL( KColNewServiceTable,
- ToDes( newServiceTable, des ),
- aProperties );
-
- CreatePropertyL( KColSNAPId,
- ToDes( aEntry.iSNAPId, des ),
- aProperties );
-
- CreatePropertyL( KColCreationUrl,
- aEntry.iAccountCreationUrl,
- aProperties );
-
- RCSELOGSTRING( "CRCSEProfileRegistry::ConvertEntryToPropertiesL() - OUT" );
- }
-
-// -----------------------------------------------------------------------------
-// CRCSEProfileRegistry::
-// -----------------------------------------------------------------------------
-//
-void CRCSEProfileRegistry::ExtractProtocoIdsL(
- const TDesC& aDes, RArray<TSettingIds>& aArray )
- {
- CleanupClosePushL( aArray );
-
- TLex lex( aDes );
-
- TSettingIds value;
-
- // Reset original array
- aArray.Reset();
-
- while( !lex.Eos() )
- {
- lex.Val( value.iProfileType );
- // Skip characters to space char.
- lex.SkipCharacters();
- lex.Inc( 1 );
- lex.Val( value.iProfileId );
- lex.SkipCharacters();
- lex.Inc( 1 );
- lex.Val( value.iProfileSpecificSettingId );
-
- aArray.AppendL( value );
- if ( !lex.Eos() ) // Check that End of string is not next char.
- {
- // Go over the space character.
- lex.Inc( 1 );
- }
- }
-
- CleanupStack::Pop( &aArray );
- }
-
-// -----------------------------------------------------------------------------
-// CRCSEProfileRegistry::UpdateSIPProfileLinksL
-// Validates profile's SIP profile IDs and updates if necessary
-// -----------------------------------------------------------------------------
-//
-void CRCSEProfileRegistry::UpdateSIPProfileLinksL( CRCSEProfileEntry& aEntry )
- {
- RCSELOGSTRING( "CRCSEProfileRegistry::UpdateSIPProfileLinksL - IN" );
- const TInt count( aEntry.iIds.Count() );
- TSettingIds value;
- RCSELOGSTRING2( "Protocol link count=%d", count );
-
- if ( 0 < count )
- {
- iSIPProfiles.ResetAndDestroy();
-
- TInt err(0);
- // Check the existence of linked SIP profiles
- for ( TInt i( count-1 ); 0 <= i ; i-- )
- {
- value = aEntry.iIds[i];
-
- if ( CRCSEProfileEntry::EProtocolSIP == value.iProfileType )
- {
- CSIPProfile* profile = NULL;
- TRAP( err, profile = iSIPRegistry->ProfileL( value.iProfileId ) );
- if ( KErrNotFound == err )
- {
- aEntry.iIds.Remove( i );
- delete profile;
- profile = NULL;
- RCSELOGSTRING2( "SIP link removed, id=%d", value.iProfileId );
- }
- else if ( KErrNone == err )
- {
- err = iSIPProfiles.Append( profile );
- }
- else
- {
- delete profile;
- profile = NULL;
- }
- }
- }
-
- // Check that all profiles have same AOR.
- // If some AOR differs leave only the first link
- TInt profCount( iSIPProfiles.Count() );
- RCSELOGSTRING2( "SIP link count=%d", profCount );
- TBool ok( ETrue );
- if ( 1 < profCount )
- {
- const TDesC8* aor1;
- HBufC8* empty = KNullDesC8().AllocLC();
- err = iSIPProfiles[0]->GetParameter( KSIPUserAor, aor1 );
-
- if ( KErrNotFound == err )
- {
- aor1 = empty;
- }
-
- for ( TInt j( 1 ); j < profCount; j++ )
- {
- const TDesC8* aor2;
- err = iSIPProfiles[j]->GetParameter( KSIPUserAor, aor2 );
-
- if ( KErrNotFound == err )
- {
- if ( aor1->Compare( KNullDesC8() ) != 0 )
- {
- ok = EFalse;
- }
- }
- else
- {
- if ( aor1->Compare( *aor2 ) != 0 )
- {
- ok = EFalse;
- }
- }
- }
- CleanupStack::PopAndDestroy( empty );
-
- if ( !ok )
- {
- RCSELOGSTRING( "AOR changed" );
- TInt newCount = aEntry.iIds.Count();
- TBool first( ETrue );
- for ( TInt k( 0 ); k < newCount; k++ )
- {
- value = aEntry.iIds[k];
- if ( CRCSEProfileEntry::EProtocolSIP == value.iProfileType )
- {
- if ( first )
- {
- first = EFalse;
- RCSELOGSTRING2( "Leave SIP link, index=%d", k );
- }
- else
- {
- aEntry.iIds.Remove( k );
- newCount--;
- k--;
- RCSELOGSTRING2( "Remove SIP link, index=%d", k );
- }
- }
- }
- }
- }
-
- iSIPProfiles.ResetAndDestroy();
-
- // Update entry if count of ids have changed
- if ( count != aEntry.iIds.Count() )
- {
- RCSELOGSTRING3( "Link ID count: initial=%d, final=%d",
- count, aEntry.iIds.Count() );
-
- AddOrUpdateEntryL( aEntry.iId, aEntry );
-
- RCSELOGSTRING( "Entry updated" );
- }
- }
-
- RCSELOGSTRING( "CRCSEProfileRegistry::UpdateSIPProfileLinksL - OUT" );
- }
-
-// -----------------------------------------------------------------------------
-// Local helper method for searching default values of properties from service
-// table and adding them to given service entry.
-// -----------------------------------------------------------------------------
-//
-void FindAndAddDefaultPropertyL(
- CSPSettings& aTable,
- CSPEntry& aEntry,
- CSPProperty& aProperty,
- TServicePropertyName aName )
- {
- TInt err = aTable.FindPropertyL( KDefaultVoIPService, aName, aProperty );
-
- if ( KErrNone == err )
- {
- err = aEntry.AddPropertyL( aProperty );
- if ( KErrNone != err )
- {
- RCSELOGSTRING2(
- "CRCSEProfileRegistry::FindAndAddDefaultPropertyL - add property err: %d",
- err );
- }
- }
- }
-
-// -----------------------------------------------------------------------------
-// CRCSEProfileRegistry::CreateDefaultServiceSettingsL
-// Creates a voip-sip service entry with default content and return
-// service ID for new profile
-// -----------------------------------------------------------------------------
-//
-void CRCSEProfileRegistry::CreateDefaultServiceSettingsL(
- CRCSEProfileEntry& aNewEntry )
- {
- RCSELOGSTRING(
- "CRCSEProfileRegistry::CreateDefaultServiceSettingsL - IN" );
-
- // Do not create service if there is no SIP linkage.
- if ( !aNewEntry.iIds.Count() )
- {
- return;
- }
- else if ( aNewEntry.iIds[0].iProfileType !=
- CRCSEProfileEntry::EProtocolSIP )
- {
- return;
- }
-
- TInt err( KErrNone );
-
- // Service table API
- CSPSettings* table = CSPSettings::NewLC();
-
- // New service entry for this provider name
- CSPEntry* entry = CSPEntry::NewLC();
- entry->SetServiceName( aNewEntry.iProviderName );
-
- CSPProperty* property = CSPProperty::NewLC();
-
- // Service Setup plug-in UID ( if VoIP plugin UID set )
- if ( KRCSEDefaultVoIPPluginUID != aNewEntry.iVoIPPluginUID )
- {
- property->SetName( EPropertyServiceSetupPluginId );
- property->SetValue( aNewEntry.iVoIPPluginUID );
- err = entry->AddPropertyL( *property );
- if ( KErrAlreadyExists == err )
- {
- User::LeaveIfError(
- entry->UpdateProperty( EPropertyServiceSetupPluginId,
- aNewEntry.iVoIPPluginUID ) );
- }
- else
- {
- User::LeaveIfError( err );
- }
- }
-
- // This property is needed by clients to check if VoIP service is used
- property->SetName( ESubPropertyVoIPSettingsId );
- property->SetValue( KVoIPSettingsID );
- err = entry->AddPropertyL( *property );
- if ( KErrAlreadyExists == err )
- {
- User::LeaveIfError( entry->UpdateProperty( ESubPropertyVoIPSettingsId,
- KVoIPSettingsID ) );
- }
- else
- {
- User::LeaveIfError( err );
- }
-
- // Service Attribute Mask
- FindAndAddDefaultPropertyL(
- *table, *entry, *property, EPropertyServiceAttributeMask );
-
- // Phone Application CLI plug-in UID
- FindAndAddDefaultPropertyL(
- *table, *entry, *property, EPropertyCLIPluginId );
-
- // Phone Application Call Logging plug-in UID.
- FindAndAddDefaultPropertyL(
- *table, *entry, *property, EPropertyCallLoggingPluginId );
-
- // Phone Application Call State Indicator plug-in UID.
- FindAndAddDefaultPropertyL(
- *table, *entry, *property, EPropertyCallStateIndicatorPluginId );
-
- // Phone Application Call Menu Handler plug-in UID.
- FindAndAddDefaultPropertyL(
- *table, *entry, *property, EPropertyCallMenuHandlerPluginId );
-
- // Converged Call Engine Call Provider plug-in UID.
- FindAndAddDefaultPropertyL(
- *table, *entry, *property, EPropertyCallProviderPluginId );
-
- // Virtual Phonebook Contact Store ID.
- FindAndAddDefaultPropertyL(
- *table, *entry, *property, EPropertyContactStoreId );
-
- // Contact View plug-in UID
- FindAndAddDefaultPropertyL(
- *table, *entry, *property, EPropertyContactViewPluginId );
-
- // Converged Connection Handler (CCH) VoIP Subservice plug-in UID
- FindAndAddDefaultPropertyL(
- *table, *entry, *property, EPropertyVoIPSubServicePluginId );
-
- // Converged Connection Handler (CCH) VMBX Subservice plug-in UID
- FindAndAddDefaultPropertyL(
- *table, *entry, *property, EPropertyVMBXSubServicePluginId );
-
- // Brand ID for VoIP
- FindAndAddDefaultPropertyL(
- *table, *entry, *property, EPropertyBrandId );
-
- // Presence Service Connectivity plugin UID
- FindAndAddDefaultPropertyL(
- *table, *entry, *property, EPropertyPCSPluginId );
-
- // Maximum Lenght of Log Contact Link
- FindAndAddDefaultPropertyL(
- *table, *entry, *property, EPropertyLogCntLinkMaxLength );
-
- // Field Type of Presence Presentity ID
- FindAndAddDefaultPropertyL(
- *table, *entry, *property, ESubPropertyPresencePresentityIDFieldType );
-
- // Add entry to store and set service ID
- User::LeaveIfError( table->AddEntryL( *entry ) );
- aNewEntry.iServiceProviderId
- = static_cast<TUint32>( entry->GetServiceId() );
-
- CleanupStack::PopAndDestroy( property );
- CleanupStack::PopAndDestroy( entry );
- CleanupStack::PopAndDestroy( table );
-
- RCSELOGSTRING(
- "CRCSEProfileRegistry::CreateDefaultServiceSettingsL - OUT" );
- }
-
-// ---------------------------------------------------------------------------
-// CRCSEProfileRegistry::DeleteReferenceSettingsL
-// ---------------------------------------------------------------------------
-//
-void CRCSEProfileRegistry::DeleteReferenceSettingsL( TUint32 aProfileId )
- {
- RCSELOGSTRING( "CRCSEProfileRegistry::DeleteReferenceSettingsL - IN" );
-
- CRCSEProfileEntry* profileInfo = CRCSEProfileEntry::NewLC();
-
- TRAPD( e, FindL( aProfileId, *profileInfo ) );
-
- __ASSERT_ALWAYS( KErrNone == e || KErrNotFound == e, User::Leave( e ) );
-
- // Delete related audio codecs
- CRCSEAudioCodecRegistry* codecReg = CRCSEAudioCodecRegistry::NewLC();
- codecReg->DeleteL( profileInfo->iPreferredCodecs );
- CleanupStack::PopAndDestroy( codecReg );
-
- // Delete related service settings
- if( CRCSEProfileEntry::EOONotSet == profileInfo->iNewServiceTableEntry ||
- CRCSEProfileEntry::EOn == profileInfo->iNewServiceTableEntry )
- {
- RCSELOGSTRING( "Delete related service settings" );
- CSPSettings* serviceSettings = CSPSettings::NewLC();
- serviceSettings->DeleteEntryL( profileInfo->iServiceProviderId );
- CleanupStack::PopAndDestroy( serviceSettings );
- }
-
- CleanupStack::PopAndDestroy( profileInfo );
-
- RCSELOGSTRING( "CRCSEProfileRegistry::DeleteReferenceSettingsL - OUT" );
- }
-// -----------------------------------------------------------------------------
-// CRCSEProfileRegistry::NameExistsInServiceTableL
-// -----------------------------------------------------------------------------
-//
-TBool CRCSEProfileRegistry::NameExistsInServiceTableL(
- const TDesC& aProviderName ) const
- {
- RCSELOGSTRING( "CRCSEProfileRegistry::NameExistsInServiceTableL- IN" );
- TBool result( EFalse );
-
- RIdArray serviceIds;
- CleanupClosePushL( serviceIds );
- CDesCArray* serviceNames =
- new ( ELeave ) CDesCArrayFlat( KArrayInitSize );
- CleanupStack::PushL( serviceNames );
- CSPSettings* serviceSettings = CSPSettings::NewLC();
- TInt err(KErrNone);
- err = serviceSettings->FindServiceIdsL( serviceIds );
- if ( KErrNotFound == err )
- {
- CleanupStack::PopAndDestroy( serviceSettings );
- CleanupStack::PopAndDestroy( serviceNames );
- CleanupStack::PopAndDestroy( &serviceIds );
- return EFalse;
- }
- User::LeaveIfError( err );
- User::LeaveIfError(
- serviceSettings->FindServiceNamesL( serviceIds, *serviceNames ) );
- CleanupStack::PopAndDestroy( serviceSettings );
- TBool serviceFound( EFalse );
- for ( TInt i( 0 ) ; i < serviceNames->MdcaCount() && !serviceFound ; i++ )
- {
- if ( !aProviderName.Compare( serviceNames->MdcaPoint( i) ) )
- {
- result = ETrue;
- serviceFound = ETrue;
- }
- }
- CleanupStack::PopAndDestroy( serviceNames );
- CleanupStack::PopAndDestroy( &serviceIds );
-
- RCSELOGSTRING( "CRCSEProfileRegistry::NameExistsInServiceTableL- OUT" );
- return result;
- }
-
-// -----------------------------------------------------------------------------
-// CRCSEProfileRegistry::LeaveIfServiceIdInUseL
-// -----------------------------------------------------------------------------
-//
-void CRCSEProfileRegistry::LeaveIfServiceIdInUseL(
- const CRCSEProfileEntry& aEntry )
- {
- RCSELOGSTRING( "CRCSEProfileRegistry::LeaveIfServiceIdInUseL - IN" );
-
- // Find all profile IDs
- RArray<TUint32> voipIds;
- CleanupClosePushL( voipIds );
- FindAllIdsL( voipIds );
-
-
- // Check service id from each profile
- CCenRepDatabaseProperty* property = CCenRepDatabaseProperty::NewLC();
- TBuf<KDesLength256> value;
- TInt count( voipIds.Count() );
-
- for ( TInt i( 0 ); i < count; i++ )
- {
- iCenRepDb->FindPropertyL( voipIds[ i ], KColProtocolIds, *property );
-
- __ASSERT_ALWAYS(
- aEntry.iServiceProviderId != ToTUint32L( property->GetDesValue() ),
- User::Leave( KErrAlreadyExists ) );
- }
-
- CleanupStack::PopAndDestroy( property );
- CleanupStack::PopAndDestroy( &voipIds );
-
- RCSELOGSTRING( "CRCSEProfileRegistry::LeaveIfServiceIdInUseL - OUT" );
- }
-
-// -----------------------------------------------------------------------------
-// CRCSEProfileRegistry::UpdateServiceSettingsL
-// -----------------------------------------------------------------------------
-//
-void CRCSEProfileRegistry::UpdateServiceSettingsL(
- const CRCSEProfileEntry& aEntry )
- {
- RCSELOGSTRING( "CRCSEProfileRegistry::UpdateServiceSettingsL - IN" );
-
- // Do not update service if there is no SIP linkage.
- if ( !aEntry.iIds.Count() )
- {
- return;
- }
- else if ( aEntry.iIds[0].iProfileType !=
- CRCSEProfileEntry::EProtocolSIP )
- {
- return;
- }
-
- CSPSettings* serviceSettings = CSPSettings::NewLC();
- CSPEntry* serviceEntry = CSPEntry::NewLC();
-
- User::LeaveIfError(
- serviceSettings->FindEntryL(
- aEntry.iServiceProviderId, *serviceEntry ) );
-
- // Update service settings if service name has been changed
- if ( aEntry.iProviderName != serviceEntry->GetServiceName() )
- {
- serviceEntry->SetServiceName( aEntry.iProviderName );
- User::LeaveIfError( serviceSettings->UpdateEntryL( *serviceEntry ) );
- }
-
- CleanupStack::PopAndDestroy( serviceEntry );
- CleanupStack::PopAndDestroy( serviceSettings );
-
- RCSELOGSTRING( "CRCSEProfileRegistry::UpdateServiceSettingsL - OUT" );
- }
-
-// -----------------------------------------------------------------------------
-// CRCSEProfileRegistry::UpdateServiceIdL
-// -----------------------------------------------------------------------------
-//
-void CRCSEProfileRegistry::UpdateServiceIdL( TUint32 aId, TUint32 aServiceId )
- {
- RCSELOGSTRING( "CRCSEProfileRegistry::UpdateServiceIdL - IN" );
-
- TBuf<KDesLength128> des;
-
- RIpAppPropArray properties;
-
- CreatePropertyL( KColServiceProviderId,
- ToDes( aServiceId, des ),
- properties );
-
- iCenRepDb->AddOrUpdatePropertiesL( aId, properties );
-
- properties.ResetAndDestroy();
-
- RCSELOGSTRING( "CRCSEProfileRegistry::UpdateServiceIdL - OUT" );
- }
-
-// ---------------------------------------------------------------------------
-// From MSIPProfileRegistryObserver
-// CRCSEProfileRegistry::ProfileRegistryEventOccurred
-// SIP profile event
-// ---------------------------------------------------------------------------
-//
-void CRCSEProfileRegistry::ProfileRegistryEventOccurred(
- TUint32 /*aSIPProfileId*/,
- TEvent /*aEvent*/ )
- {
- RCSELOGSTRING( "CRCSEProfileRegistry::ProfileRegistryEventOccurred" );
- // Have to be implemented because MSIPProfileRegistryObserver
- // is passed to CSIPManagedProfileRegistry.
- }
-
-// ---------------------------------------------------------------------------
-// From MSIPProfileRegistryObserver
-// CRCSEProfileRegistry::ProfileRegistryErrorOccured
-// An asynchronous error has occurred related to SIP profile
-// ---------------------------------------------------------------------------
-//
-void CRCSEProfileRegistry::ProfileRegistryErrorOccurred(
- TUint32 /*aProfileId*/,
- TInt /*aError*/ )
- {
- RCSELOGSTRING( "CRCSEProfileRegistry::ProfileRegistryErrorOccurred" );
- // Have to be implemented because MSIPProfileRegistryObserver
- // is passed to CSIPManagedProfileRegistry.
- }
-
-// -----------------------------------------------------------------------------
-// CRCSEProfileRegistry::ResetAndDestroyEntries
-// -----------------------------------------------------------------------------
-//
-void CRCSEProfileRegistry::ResetAndDestroyEntries( TAny* anArray )
- {
- RCSELOGSTRING( "CRCSEProfileRegistry::ResetAndDestroyEntries - IN" );
-
- RPointerArray<CRCSEProfileEntry>* array =
- reinterpret_cast<RPointerArray<CRCSEProfileEntry>*>( anArray );
- if (array)
- {
- array->ResetAndDestroy();
- array->Close();
- }
- RCSELOGSTRING( "CRCSEProfileRegistry::ResetAndDestroyEntries - OUT" );
- }
-
-// -----------------------------------------------------------------------------
-// CRCSEProfileRegistry::CopyEntryValues
-// -----------------------------------------------------------------------------
-//
-void CRCSEProfileRegistry::CopyEntryValues(
- const CRCSEProfileEntry& aSourceEntry,
- CRCSEProfileEntry& aDestinationEntry )
- {
- aDestinationEntry.ResetDefaultValues();
- aDestinationEntry.iIds.Reset();
- for ( TInt i = 0; i < aSourceEntry.iIds.Count(); i++ )
- {
- aDestinationEntry.iIds.Append( aSourceEntry.iIds[i] );
- }
- aDestinationEntry.iId = aSourceEntry.iId;
- aDestinationEntry.iProviderName = aSourceEntry.iProviderName;
- aDestinationEntry.iSettingsName = aSourceEntry.iSettingsName;
- aDestinationEntry.iPreferredCodecs.Reset();
- for ( TInt i = 0; i < aSourceEntry.iPreferredCodecs.Count(); i++ )
- {
- aDestinationEntry.iPreferredCodecs.Append(
- aSourceEntry.iPreferredCodecs[i] );
- }
- aDestinationEntry.iStartMediaPort = aSourceEntry.iStartMediaPort;
- aDestinationEntry.iEndMediaPort = aSourceEntry.iEndMediaPort;
- aDestinationEntry.iMediaQOS = aSourceEntry.iMediaQOS;
- aDestinationEntry.iInbandDTMF = aSourceEntry.iInbandDTMF;
- aDestinationEntry.iOutbandDTMF = aSourceEntry.iOutbandDTMF;
- aDestinationEntry.iSecureCallPreference =
- aSourceEntry.iSecureCallPreference;
- aDestinationEntry.iRTCP = aSourceEntry.iRTCP;
- aDestinationEntry.iSIPVoIPUAHTerminalType =
- aSourceEntry.iSIPVoIPUAHTerminalType;
- aDestinationEntry.iSIPVoIPUAHeaderWLANMAC =
- aSourceEntry.iSIPVoIPUAHeaderWLANMAC;
- aDestinationEntry.iSIPVoIPUAHeaderString =
- aSourceEntry.iSIPVoIPUAHeaderString;
- aDestinationEntry.iProfileLockedToIAP = aSourceEntry.iProfileLockedToIAP;
- aDestinationEntry.iVoIPPluginUID = aSourceEntry.iVoIPPluginUID;
- aDestinationEntry.iAllowVoIPoverWCDMA = aSourceEntry.iAllowVoIPoverWCDMA;
- aDestinationEntry.iMeanCountOfVoIPDigits =
- aSourceEntry.iMeanCountOfVoIPDigits;
- aDestinationEntry.iIgnoreAddrDomainPart =
- aSourceEntry.iIgnoreAddrDomainPart;
- aDestinationEntry.iServiceProviderId = aSourceEntry.iServiceProviderId;
- aDestinationEntry.iUserPhoneUriParameter =
- aSourceEntry.iUserPhoneUriParameter;
- aDestinationEntry.iSIPConnTestAddress = aSourceEntry.iSIPConnTestAddress;
- aDestinationEntry.iNATSettingsStorageId =
- aSourceEntry.iNATSettingsStorageId;
- aDestinationEntry.iSIPMinSE = aSourceEntry.iSIPMinSE;
- aDestinationEntry.iSIPSessionExpires = aSourceEntry.iSIPSessionExpires;
- aDestinationEntry.iNATProtocol = aSourceEntry.iNATProtocol;
- aDestinationEntry.iNewServiceTableEntry =
- aSourceEntry.iNewServiceTableEntry;
- aDestinationEntry.iSNAPId = aSourceEntry.iSNAPId;
- aDestinationEntry.iAccountCreationUrl = aSourceEntry.iAccountCreationUrl;
- }
-
-// End of File
-
-