diff -r 65a3ef1d5bd0 -r f742655b05bf richcallsettingsengine/rcse2/src/rcsedbimporter.cpp --- a/richcallsettingsengine/rcse2/src/rcsedbimporter.cpp Thu Aug 19 09:45:22 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,998 +0,0 @@ -/* -* Copyright (c) 2009-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: RCSE Settings Import from DBMS -* -*/ - - -#include "rcsedbimporter.h" -#include "rcseconstants.h" -#include "crcseprofileregistry.h" -#include "crcseaudiocodecregistry.h" -#include "rcsedefaultdbnames.h" -#include "rcselogger.h" - - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// Default constructor -// --------------------------------------------------------------------------- -// -CRCSEDbImporter::CRCSEDbImporter() - { - } - - -// --------------------------------------------------------------------------- -// ConstructL -// --------------------------------------------------------------------------- -// -void CRCSEDbImporter::ConstructL() - { - RCSELOGSTRING( "CRCSEDbImporter::ConstructL() - IN" ); - User::LeaveIfError( iDbSession.Connect() ); - RCSELOGSTRING( "CRCSEDbImporter::ConstructL() - OUT" ); - } - - -// --------------------------------------------------------------------------- -// NewL -// --------------------------------------------------------------------------- -// -CRCSEDbImporter* CRCSEDbImporter::NewL() - { - CRCSEDbImporter* self = CRCSEDbImporter::NewLC(); - CleanupStack::Pop( self ); - return self; - } - - -// --------------------------------------------------------------------------- -// NewLC -// --------------------------------------------------------------------------- -// -CRCSEDbImporter* CRCSEDbImporter::NewLC() - { - CRCSEDbImporter* self = new( ELeave ) CRCSEDbImporter; - CleanupStack::PushL( self ); - self->ConstructL(); - return self; - } - - -// --------------------------------------------------------------------------- -// Destructor -// --------------------------------------------------------------------------- -// -CRCSEDbImporter::~CRCSEDbImporter() - { - ReleaseImportLock(); - - iDb.Close(); - iDbSession.Close(); - iProfiles.ResetAndDestroy(); - iCodecs.ResetAndDestroy(); - iCodecIds.Close(); - } - -// --------------------------------------------------------------------------- -// Check if imported (restored) database file exists. -// --------------------------------------------------------------------------- -// -TBool CRCSEDbImporter::ImportExists() - { - RCSELOGSTRING( "CRCSEDbImporter::ImportExists() - IN" ); - - TBool profileImport( EFalse ); - TBool codecImport( EFalse ); - - RDbs dbSession; - RDbNamedDatabase db; - - TInt err( dbSession.Connect() ); - - if ( KErrNone != err ) - { - return EFalse; - } - else - { - // Check voip profiles - err = db.Open( dbSession, KDbName, KDatabaseUID ); - db.Close(); - - if ( KErrNone == err ) - { - profileImport = ETrue; - } - - // Check audio codecs - err = db.Open( dbSession, KDbCodecName, KDatabaseUID ); - db.Close(); - - if ( KErrNone == err ) - { - codecImport = ETrue; - } - } - - dbSession.Close(); - - RCSELOGSTRING2( "CRCSEDbImporter::ImportExists(%d) - OUT", - profileImport && codecImport ); - - // Return ETrue only when both of imports exist - return profileImport && codecImport; - } - - -// --------------------------------------------------------------------------- -// Check if import is already running. -// --------------------------------------------------------------------------- -// -TBool CRCSEDbImporter::IsImportRunning() - { - RCSELOGSTRING( "CRCSEDbImporter::IsImportRunning() - IN" ); - - TBool ret( EFalse ); - - RDbs dbSession; - RDbNamedDatabase db; - - TInt err( dbSession.Connect() ); - - if ( KErrNone != err ) - { - ret = EFalse; - } - else - { - // Check if temporary table exists - err = db.Open( dbSession, KDbTempName, KDatabaseUID ); - db.Close(); - - if ( KErrNone == err ) - { - ret = ETrue; - } - } - - dbSession.Close(); - - RCSELOGSTRING2( "CRCSEDbImporter::IsImportRunning(%d) - OUT", ret ); - - return ret; - } - - -// --------------------------------------------------------------------------- -// Imports RCSE entries from db file and stores them to repository. -// --------------------------------------------------------------------------- -// -void CRCSEDbImporter::ImportAndStoreL() - { - RCSELOGSTRING( "CRCSEDbImporter::ImportL() - IN" ); - - SetImportLock(); - - // Import settings data - ImportVoIPProfilesL(); - ImportAudioCodecsL(); - - // Store audio codecs - StoreAudioCodecsL(); - - // Update and store VoIP profiles - UpdatePreferredCodecs(); - StoreVoIPProfilesL(); - - DeleteImports(); - ReleaseImportLock(); - - RCSELOGSTRING( "CRCSEDbImporter::ImportL() - OUT" ); - } - - -// --------------------------------------------------------------------------- -// Set locking data base file to prevent disturb during the import operation. -// --------------------------------------------------------------------------- -// -void CRCSEDbImporter::SetImportLock() - { - RCSELOGSTRING( "CRCSEDbImporter::SetImportLock() - IN" ); - - // Create temporary db that indicates ongoing operation - iDb.Create( iDbSession, KDbTempName, KDatabaseUID ); - iDb.Close(); - - RCSELOGSTRING( "CRCSEDbImporter::SetImportLock() - OUT" ); - } - - -// --------------------------------------------------------------------------- -// Release locking data base file. -// --------------------------------------------------------------------------- -// -void CRCSEDbImporter::ReleaseImportLock() - { - RCSELOGSTRING( "CRCSEDbImporter::ReleaseImportLock() - IN" ); - - // Delete temporary locking db - TInt err( iDb.Open( iDbSession, KDbTempName, KDatabaseUID ) ); - - if ( KErrNone == err ) - { - iDb.Destroy(); - iDb.Close(); - RCSELOGSTRING( "Temporary db deleted" ); - } - else - { - RCSELOGSTRING2( "Temporary db not deleted, err=%d", err ); - } - - RCSELOGSTRING( "CRCSEDbImporter::ReleaseImportLock() - OUT" ); - } - - -// --------------------------------------------------------------------------- -// Import VoIP profiles from database to array. -// --------------------------------------------------------------------------- -// -void CRCSEDbImporter::ImportVoIPProfilesL() - { - RCSELOGSTRING( "CRCSEDbImporter::ImportVoIPProfilesL() - IN" ); - User::LeaveIfError( iDb.Open( iDbSession, KDbName, KDatabaseUID ) ); - - // Create sql statement - HBufC* statement = HBufC::NewLC( - KSQLSelectAllStatement().Length() + - KProfileTableName().Length() ); - - statement->Des().Format( - KSQLSelectAllStatement, &KProfileTableName ); - - // Launch query - RDbView view; - User::LeaveIfError( view.Prepare( iDb, *statement ) ); - CleanupClosePushL( view ); - User::LeaveIfError( view.EvaluateAll() ); - view.FirstL(); - - // Browse all result rows trough - while ( view.AtRow() ) - { - view.GetL(); // Get the data row - const TInt cols( view.ColCount() + 1 ); - - CRCSEProfileEntry* entry = CRCSEProfileEntry::NewLC(); - - // Map the data from current row to profile entry. - for( TInt i = 1; i < cols; i++ ) - { - MapColumnToEntryL( i, view, *entry ); - } - - iProfiles.AppendL( entry ); - CleanupStack::Pop( entry ); - view.NextL(); - } - - CleanupStack::PopAndDestroy( &view ); - CleanupStack::PopAndDestroy( statement ); - - iDb.Close(); - RCSELOGSTRING( "CRCSEDbImporter::ImportVoIPProfilesL() - OUT" ); - } - -// --------------------------------------------------------------------------- -// Import audio codecs from database to array. -// --------------------------------------------------------------------------- -// -void CRCSEDbImporter::ImportAudioCodecsL() - { - RCSELOGSTRING( "CRCSEDbImporter::ImportAudioCodecsL() - IN" ); - - User::LeaveIfError( iDb.Open( iDbSession, KDbCodecName, KDatabaseUID ) ); - - // Create sql statement - HBufC* statement = HBufC::NewLC( - KSQLSelectAllStatement().Length() + - KAudioCodecTableName().Length() ); - - statement->Des().Format( - KSQLSelectAllStatement, &KAudioCodecTableName ); - - // Launch query - RDbView view; - User::LeaveIfError( view.Prepare( iDb, *statement ) ); - CleanupClosePushL( view ); - User::LeaveIfError( view.EvaluateAll() ); - view.FirstL(); - - // Browse all result rows trough - while ( view.AtRow() ) - { - view.GetL(); // Get the data row - const TInt cols( view.ColCount() + 1 ); - - CRCSEAudioCodecEntry* entry = CRCSEAudioCodecEntry::NewLC(); - - // Map the data from current row to audio codec entry. - for( TInt i = 1; i < cols; i++ ) - { - MapColumnToEntryL( i, view, *entry ); - } - - // Append entry and its ID - iCodecs.AppendL( entry ); - - TRCSEIdPair idPair; - idPair.iOldId = entry->iCodecId; - iCodecIds.Append( idPair ); - - CleanupStack::Pop( entry ); - view.NextL(); - } - - CleanupStack::PopAndDestroy( &view ); - CleanupStack::PopAndDestroy( statement ); - - iDb.Close(); - - RCSELOGSTRING( "CRCSEDbImporter::ImportAudioCodecsL() - OUT" ); - } - - -// --------------------------------------------------------------------------- -// Delete imported (restored) rcse database files. -// --------------------------------------------------------------------------- -// -void CRCSEDbImporter::DeleteImports() - { - RCSELOGSTRING( "CRCSEDbImporter::DeleteImports() - IN" ); - - TInt err( 0 ); - - // Delete VoIP profile import - err = iDb.Open( iDbSession, KDbName, KDatabaseUID ); - - if ( KErrNone == err ) - { - iDb.Destroy(); - iDb.Close(); - RCSELOGSTRING( "Profile import deleted" ); - } - else - { - RCSELOGSTRING2( "Profile import not deleted, err=%d", err ); - } - - // Delete audio codec import - err = iDb.Open( iDbSession, KDbCodecName, KDatabaseUID ); - - if ( KErrNone == err ) - { - iDb.Destroy(); - iDb.Close(); - RCSELOGSTRING( "Codec import deleted" ); - } - else - { - RCSELOGSTRING2( "Codec import not deleted, err=%d", err ); - } - - RCSELOGSTRING( "CRCSEDbImporter::DeleteImports() - OUT" ); - } - - -// --------------------------------------------------------------------------- -// Map query result from a given column to profile entry. -// ----------------------------------------------------------------------------- -// -void CRCSEDbImporter::MapColumnToEntryL( - TInt aColumnIndex, - const RDbView& aView, - CRCSEProfileEntry& aEntry ) - { - // Get the column definition - const TDbCol col( aView.ColDef( aColumnIndex ) ); - - // Maps the values using the names of columns - if ( col.iName == KProfileId ) - { - aEntry.iId = aView.ColUint32( aColumnIndex ); - } - else if ( col.iName == KProtocolIds ) - { - const TDesC& ids = aView.ColDes( aColumnIndex ); - // Extracts the numbers from ids to iIds. - GetProfileIdsFromDescriptorL( ids, aEntry.iIds ); - } - else if ( col.iName == KProviderName ) - { - aEntry.iProviderName.Copy( aView.ColDes( aColumnIndex ) ); - } - else if ( col.iName == KSettingsName ) - { - aEntry.iSettingsName.Copy( aView.ColDes( aColumnIndex ) ); - } - else if ( col.iName == KAutoComplete ) - { - aEntry.iAutoComplete = static_cast( - aView.ColInt32( aColumnIndex ) ); - } - else if ( col.iName == KEndMediaPort ) - { - aEntry.iEndMediaPort = aView.ColInt32( aColumnIndex ); - } - else if ( col.iName == KHoldRingBack ) - { - aEntry.iHoldRingBack = aView.ColInt32( aColumnIndex ); - } - else if ( col.iName == KInbandDtmf) - { - aEntry.iInbandDTMF = static_cast( - aView.ColInt32( aColumnIndex ) ); - } - else if ( col.iName == KMediaQOS ) - { - aEntry.iMediaQOS = aView.ColInt32( aColumnIndex ); - } - else if ( col.iName == KOutbandDtmf ) - { - aEntry.iOutbandDTMF = static_cast - ( aView.ColInt32( aColumnIndex ) ); - } - else if ( col.iName == KPreferredCodecs ) - { - const TDesC& codecs = aView.ColDes( aColumnIndex ); - // Extracts the numbers from codecs to iPreferredCodecs. - GetNumbersFromDescriptorL( codecs, aEntry.iPreferredCodecs ); - } - else if ( col.iName == KSiqnalingQOS ) - { - aEntry.iSiqnalingQOS = aView.ColInt32( aColumnIndex ); - } - else if ( col.iName == KStartMediaPort ) - { - aEntry.iStartMediaPort = aView.ColInt32( aColumnIndex ); - } - else if ( col.iName == KCFNoAnswer ) - { - aEntry.iCFNoAnswer = static_cast - ( aView.ColInt32( aColumnIndex ) ); - } - else if ( col.iName == KCFBusy ) - { - aEntry.iCFBusy = static_cast - ( aView.ColInt32( aColumnIndex ) ); - } - else if ( col.iName == KCFUnconditional ) - { - aEntry.iCFUnconditional = static_cast( - aView.ColInt32( aColumnIndex ) ); - } - else if ( col.iName == KRedundancy ) - { - aEntry.iRedundancy = static_cast( - aView.ColInt32( aColumnIndex ) ); - } - else if ( col.iName == KSecureCallPreference ) - { - aEntry.iSecureCallPreference = aView.ColUint32( aColumnIndex ); - } - else if ( col.iName == KVoIPProfileLock ) - { - aEntry.iVoIPProfileLock = aView.ColUint32( aColumnIndex ); - } - else if ( col.iName == KAdhocAllowed ) - { - aEntry.iAdhocAllowed = aView.ColUint32( aColumnIndex ); - } - else if ( col.iName == KSIPServerType ) - { - aEntry.iSIPServerType.Copy( aView.ColDes( aColumnIndex ) ); - } - else if ( col.iName == KSBCType ) - { - aEntry.iSBCType.Copy( aView.ColDes( aColumnIndex ) ); - } - else if ( col.iName == KSTUNServerType ) - { - aEntry.iSTUNServerType.Copy( aView.ColDes( aColumnIndex ) ); - } - else if ( col.iName == KWLANAPType ) - { - aEntry.iWLANAPType.Copy( aView.ColDes( aColumnIndex ) ); - } - else if ( col.iName == KPSTNGatewayType ) - { - aEntry.iPSTNGatewayType.Copy( aView.ColDes( aColumnIndex ) ); - } - else if ( col.iName == KSecurityGatewayType ) - { - aEntry.iSecurityGatewayType.Copy( aView.ColDes( aColumnIndex ) ); - } - else if ( col.iName == KRTCP ) - { - aEntry.iRTCP = aView.ColUint32( aColumnIndex ); - } - else if ( col.iName == KSIPVoIPUAHTerminalType ) - { - aEntry.iSIPVoIPUAHTerminalType = aView.ColUint32( aColumnIndex ); - } - else if ( col.iName == KSIPVoIPUAHeaderWLANMAC ) - { - aEntry.iSIPVoIPUAHeaderWLANMAC = aView.ColUint32( aColumnIndex ); - } - else if ( col.iName == KSIPVoIPUAHeaderString ) - { - aEntry.iSIPVoIPUAHeaderString.Copy( aView.ColDes( aColumnIndex ) ); - } - else if ( col.iName == KProfileLockedToIAP ) - { - aEntry.iProfileLockedToIAP = static_cast( - aView.ColInt32( aColumnIndex ) ); - } - else if ( col.iName == KVoIPPluginUID ) - { - aEntry.iVoIPPluginUID = aView.ColInt32( aColumnIndex ); - } - else if ( col.iName == KAllowVoIPoverWCDMA ) - { - aEntry.iAllowVoIPoverWCDMA = static_cast( - aView.ColInt32( aColumnIndex ) ); - } - else if ( col.iName == KAllowVoIPoverBT ) - { - aEntry.iAllowVoIPoverBT = static_cast( - aView.ColInt32( aColumnIndex ) ); - } - else if ( col.iName == KMeanCountOfVoIPDigits ) - { - aEntry.iMeanCountOfVoIPDigits = aView.ColInt32( aColumnIndex ); - } - else if ( col.iName == KIgnoreAddrDomainPart ) - { - aEntry.iIgnoreAddrDomainPart = aView.ColInt32( aColumnIndex ); - } - - else if ( col.iName == KHandoverDialect ) - { - aEntry.iHandoverDialect = aView.ColInt32( aColumnIndex ); - } - else if ( col.iName == KPSTelephonyHOPreference ) - { - aEntry.iPSTelephonyHOPreference = aView.ColInt32( aColumnIndex ); - } - else if ( col.iName == KHOThresholdValueLL ) - { - aEntry.iHOThresholdValueLL = aView.ColInt32( aColumnIndex ); - } - else if ( col.iName == KHOThresholdValueHL ) - { - aEntry.iHOThresholdValueHL = aView.ColInt32( aColumnIndex ); - } - else if ( col.iName == KNumberOfMeasurementsAbove ) - { - aEntry.iNumberOfMeasurementsAbove = aView.ColInt32( aColumnIndex ); - } - else if ( col.iName == KNumberOfMeasurementsBelow ) - { - aEntry.iNumberOfMeasurementsBelow = aView.ColInt32( aColumnIndex ); - } - else if ( col.iName == KSmartScannInterParaHigh ) - { - aEntry.iSmartScannInterParaHigh = aView.ColInt32( aColumnIndex ); - } - else if ( col.iName == KSmartScannInterParaMedium ) - { - aEntry.iSmartScannInterParaMedium = aView.ColInt32( aColumnIndex ); - } - else if ( col.iName == KSmartScannInterParaLow ) - { - aEntry.iSmartScannInterParaLow = aView.ColInt32( aColumnIndex ); - } - else if ( col.iName == KSmartScannInterParaStatic ) - { - aEntry.iSmartScannInterParaStatic = aView.ColInt32( aColumnIndex ); - } - - else if ( col.iName == KSmartScannDurationHighMode ) - { - aEntry.iSmartScannDurationHighMode = aView.ColInt32( aColumnIndex ); - } - else if ( col.iName == KSmartScannDurationMediumMode ) - { - aEntry.iSmartScannDurationMediumMode = aView.ColInt32( aColumnIndex ); - } - else if ( col.iName == KSmartScannDurationLowMode ) - { - aEntry.iSmartScannDurationLowMode = aView.ColInt32( aColumnIndex ); - } - else if ( col.iName == KHandoffNumber ) - { - aEntry.iHandoffNumber = aView.ColInt32( aColumnIndex ); - } - else if ( col.iName == KHandbackNumber ) - { - aEntry.iHandbackNumber = aView.ColInt32( aColumnIndex ); - } - else if ( col.iName == KHysterisisTimer ) - { - aEntry.iHysterisisTimer = aView.ColInt32( aColumnIndex ); - } - else if ( col.iName == KHandOffProcessTimer ) - { - aEntry.iHandOffProcessTimer = aView.ColInt32( aColumnIndex ); - } - else if ( col.iName == KDisconnectProcessTimer ) - { - aEntry.iDisconnectProcessTimer = aView.ColInt32( aColumnIndex ); - } - else if ( col.iName == KHandoffPrefix ) - { - aEntry.iHandoffPrefix.Copy( aView.ColDes( aColumnIndex ) ); - } - else if ( col.iName == KHandbackPrefix ) - { - aEntry.iHandbackPrefix.Copy( aView.ColDes( aColumnIndex ) ); - } - else if ( col.iName == KHandoverTones ) - { - aEntry.iHandoverTones = aView.ColInt32( aColumnIndex ); - } - else if ( col.iName == KSupportSMSoverWLAN ) - { - aEntry.iSupportSMSoverWLAN = aView.ColInt32( aColumnIndex ); - } - else if ( col.iName == KServiceProviderId ) - { - aEntry.iServiceProviderId = aView.ColUint32( aColumnIndex ); - } - else if ( col.iName == KUserPhoneUriParam ) - { - aEntry.iUserPhoneUriParameter = static_cast( - aView.ColInt32( aColumnIndex ) ); - } - else if ( col.iName == KSIPConnTestAddress ) - { - aEntry.iSIPConnTestAddress.Copy( aView.ColDes( aColumnIndex ) ); - } - else if ( col.iName == KNATSettingsStorageId ) - { - aEntry.iNATSettingsStorageId = aView.ColUint32( aColumnIndex ); - } - else if ( col.iName == KSIPMinSE ) - { - aEntry.iSIPMinSE = aView.ColInt32( aColumnIndex ); - } - else if ( col.iName == KSIPSessionExpires ) - { - aEntry.iSIPSessionExpires = aView.ColInt32( aColumnIndex ); - } - else if ( col.iName == KNATProtocol ) - { - aEntry.iNATProtocol = aView.ColInt32( aColumnIndex ); - } - else if ( col.iName == KNewServiceTable ) - { - aEntry.iNewServiceTableEntry = static_cast( - aView.ColInt32( aColumnIndex ) ); - } - else if ( col.iName == KSNAPId ) - { - aEntry.iSNAPId = aView.ColUint32( aColumnIndex ); - } - else - { - // Skip unknown column. - RCSELOGSTRING2( - "CRCSEProfileRegistry::MapColumnToEntryL() - unknown %d", - aColumnIndex ); - } - - } - - -// ----------------------------------------------------------------------------- -// Map query result from a given column to audio codec entry. -// ----------------------------------------------------------------------------- -// -void CRCSEDbImporter::MapColumnToEntryL( - TInt aColumnIndex, - const RDbView& aView, - CRCSEAudioCodecEntry& aCodecEntry ) - { - // Get the column definition - const TDbCol col( aView.ColDef( aColumnIndex ) ); - - // Maps the values using the names of columns - if ( col.iName == KAudioCodecId ) - { - aCodecEntry.iCodecId = aView.ColUint32( aColumnIndex ); - } - else if ( col.iName == KMediaTypeName ) - { - aCodecEntry.iMediaTypeName.Copy( aView.ColDes( aColumnIndex ) ); - } - else if ( col.iName == KMediaSubTypeName ) - { - aCodecEntry.iMediaSubTypeName.Copy( aView.ColDes( aColumnIndex ) ); - } - else if ( col.iName == KJitterBufferSize ) - { - aCodecEntry.iJitterBufferSize = aView.ColInt32( aColumnIndex ); - } - else if ( col.iName == KOctetAlign ) - { - aCodecEntry.iOctetAlign = static_cast( - aView.ColInt32( aColumnIndex ) ); - } - else if ( col.iName == KModeSet ) - { - const TDesC& modeset = aView.ColDes( aColumnIndex ); - GetNumbersFromDescriptorL( modeset, aCodecEntry.iModeSet ); - } - else if ( col.iName == KModeChangePeriod ) - { - aCodecEntry.iModeChangePeriod = aView.ColInt32( aColumnIndex ); - } - else if ( col.iName == KModeChangeNeighbor ) - { - aCodecEntry.iModeChangeNeighbor = static_cast( - aView.ColInt32( aColumnIndex ) ); - } - else if ( col.iName == KPtime ) - { - aCodecEntry.iPtime = aView.ColInt32( aColumnIndex ); - } - else if ( col.iName == KMaxptime ) - { - aCodecEntry.iMaxptime = aView.ColInt32( aColumnIndex ); - } - else if ( col.iName == KCrc ) - { - aCodecEntry.iCrc = static_cast( - aView.ColInt32( aColumnIndex ) ); - } - else if ( col.iName == KRobustSorting ) - { - aCodecEntry.iRobustSorting = static_cast( - aView.ColInt32( aColumnIndex ) ); - } - else if ( col.iName == KInterLeaving ) - { - aCodecEntry.iInterLeaving = aView.ColInt32( aColumnIndex ); - } - else if ( col.iName == KChannels ) - { - const TDesC& channels = aView.ColDes( aColumnIndex ); - GetNumbersFromDescriptorL( channels, aCodecEntry.iChannels ); - } - else if ( col.iName == KVAD ) - { - aCodecEntry.iVAD = static_cast( - aView.ColInt32( aColumnIndex ) ); - } - else if ( col.iName == KDTX ) - { - aCodecEntry.iDTX = static_cast( - aView.ColInt32( aColumnIndex ) ); - } - else if ( col.iName == KSamplingRate ) - { - aCodecEntry.iSamplingRate = aView.ColInt32( aColumnIndex ); - } - else if ( col.iName == KAnnexb ) - { - aCodecEntry.iAnnexb = static_cast( - aView.ColInt32( aColumnIndex) ); - } - else if ( col.iName == KModeChangeCapability ) - { - aCodecEntry.iModeChangeCapability = aView.ColInt32( aColumnIndex ); - } - else if ( col.iName == KMaxRed ) - { - aCodecEntry.iMaxRed = aView.ColInt32( aColumnIndex ); - } - else - { - // Skip unknown column. - RCSELOGSTRING2( - "CRCSEAudioCodecRegistry::MapColumnToEntryL() - unknown %d", - aColumnIndex ); - } - - } - -// ----------------------------------------------------------------------------- -// Read TSettingIds structs from given descriptor to array. -// ----------------------------------------------------------------------------- -// -void CRCSEDbImporter::GetProfileIdsFromDescriptorL( - const TDesC& aNumbers, - RArray& aArray ) - { - CleanupClosePushL( aArray ); - - TLex lex( aNumbers ); - - 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 ); - } - - -// ----------------------------------------------------------------------------- -// Read IDs from given descriptor to array. -// ----------------------------------------------------------------------------- -// -template -void CRCSEDbImporter::GetNumbersFromDescriptorL( - const TDesC& aNumbers, - RArray& aArray ) - { - CleanupClosePushL( aArray ); - TLex lex( aNumbers ); - - // Reset original array - aArray.Reset(); - - while( !lex.Eos() ) - { - // Extract the number as unsigned int 32, which can be - // converted to value wanted (template) - TUint32 value; - lex.Val( value, EDecimal ); - aArray.AppendL( static_cast( value ) ); - // Skip characters to space char. - lex.SkipCharacters(); - if ( !lex.Eos() ) // Check that End of string is not next char. - { - // Go over the space character. - lex.Inc( 1 ); - } - } - - CleanupStack::Pop( &aArray ); - } - - -// ----------------------------------------------------------------------------- -// Update new preferred audio codec IDs to imported VoIP profiles. -// ----------------------------------------------------------------------------- -// -void CRCSEDbImporter::UpdatePreferredCodecs() - { - RCSELOGSTRING( "CRCSEDbImporter::UpdatePreferredCodecs() - IN" ); - - // Update preferred codec IDs for each profile - const TInt count( iProfiles.Count() ); - for( TInt i( 0 ); i < count; ++i ) - { - // Browse preferred codecs array - const TInt codecCount( iProfiles[i]->iPreferredCodecs.Count() ); - for ( TInt j( 0 ); j < codecCount; ++j ) - { - // Search new codec ID from array - TUint32 oldId = iProfiles[i]->iPreferredCodecs[j]; - TBool found( EFalse ); - - const TInt idCount( iCodecIds.Count() ); - for ( TInt k( 0 ); k < idCount && !found; ++k ) - { - found = ( oldId == iCodecIds[k].iOldId ); - - // Set new ID if it was found - if ( found ) - { - iProfiles[i]->iPreferredCodecs[j] = iCodecIds[k].iNewId; - RCSELOGSTRING4( - "Match %d. Codec index %d updated for %d. profile", - k, j, i + 1 ); - } - else - { - RCSELOGSTRING2( "Skip %d", k ); - } - } - } - } - - RCSELOGSTRING( "CRCSEDbImporter::UpdatePreferredCodecs() - OUT" ); - } - - - -// ----------------------------------------------------------------------------- -// Store imported voip profiles. -// ----------------------------------------------------------------------------- -// -void CRCSEDbImporter::StoreVoIPProfilesL() - { - RCSELOGSTRING( "CRCSEDbImporter::StoreVoIPProfilesL() - IN" ); - - CRCSEProfileRegistry* reg = CRCSEProfileRegistry::NewLC(); - reg->AddL( iProfiles ); - CleanupStack::PopAndDestroy( reg ); - - RCSELOGSTRING( "CRCSEDbImporter::StoreVoIPProfilesL() - OUT" ); - } - - -// ----------------------------------------------------------------------------- -// Store imported audio codecs. -// ----------------------------------------------------------------------------- -// -void CRCSEDbImporter::StoreAudioCodecsL() - { - RCSELOGSTRING( "CRCSEDbImporter::StoreAudioCodecsL() - IN" ); - - CRCSEAudioCodecRegistry* reg = CRCSEAudioCodecRegistry::NewLC(); - reg->AddL( iCodecs ); - CleanupStack::PopAndDestroy( reg ); - - // Update codec ID pairs - const TInt codecCount( iCodecs.Count() ); - const TInt codecIdCount( iCodecIds.Count() ); - - __ASSERT_ALWAYS( codecCount == codecIdCount, User::Leave( KErrCorrupt ) ); - - for ( TInt i( 0 ); i < codecCount; ++i ) - { - iCodecIds[ i ].iNewId = iCodecs[i]->iCodecId; - } - - RCSELOGSTRING( "CRCSEDbImporter::StoreAudioCodecsL() - OUT" ); - } - - - - - - - - - - - - - -