diff -r 000000000000 -r 5a93021fdf25 dbcreator/commsdatcreator/Src/cdcwlandevicesettings.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dbcreator/commsdatcreator/Src/cdcwlandevicesettings.cpp Thu Dec 17 08:55:21 2009 +0200 @@ -0,0 +1,279 @@ +/* +* Copyright (c) 2004 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 of the class CWlanDeviceSettings +* +*/ + + + +// INCLUDE FILES +#include "cdcwlandevicesettings.h" +#include "cdclogger.h" + +#include +#include + +#include +#include +#include +#include + + +// CONSTANTS +// WLAN Device Settings table - default settings +const TUint32 KDefaultBGScanInterval = 0; // No background scan +const TBool KDefaultUseDefSettings = ETrue; +const TUint32 KDefaultLongRetry = 4; +const TUint32 KDefaultShortRetry = 7; +const TUint32 KDefaultRTS = 2347; +const TUint32 KDefaultTxPowerLevel = 100; //mW +const TBool KDefaultRadioMeasurements = ETrue; +const TBool KDefaultWlanPowerMode = ETrue; + +// Increase version every time the content of the table changes +const TUint32 KWlanDeviceSettingsTableVersion = 9; + + +// ================= MEMBER FUNCTIONS ====================== + +// --------------------------------------------------------- +// Constructor +// --------------------------------------------------------- +// +CWlanDeviceSettings::CWlanDeviceSettings() + { + } + + +// --------------------------------------------------------- +// Symbian 2nd phase constructor can leave. +// --------------------------------------------------------- +// +void CWlanDeviceSettings::ConstructL() + { + DEBUG( "CWlanDeviceSettings::ConstructL()" ) + + iSession = CMDBSession::NewL( CMDBSession::LatestVersion() ); + + // Open the WLAN device settings table. + if( !iSession->IsInTransaction() ) + { + iSession->OpenTransactionL(); + } + OpenTableL(); + iSession->CommitTransactionL(); + DEBUG( "CWlanDeviceSettings::ConstructL() Tables opened ok." ) + } + + +// --------------------------------------------------------- +// Static constructor. +// --------------------------------------------------------- +// +CWlanDeviceSettings* CWlanDeviceSettings::NewL() + { + DEBUG( "CWlanDeviceSettings::NewL()" ) + + CWlanDeviceSettings* self = new (ELeave) CWlanDeviceSettings; + + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + + return self; + } + + +// --------------------------------------------------------- +// Destructor +// --------------------------------------------------------- +// +CWlanDeviceSettings::~CWlanDeviceSettings() + { + DEBUG( "CWlanDeviceSettings::~CWlanDeviceSettings()" ) + + if ( iSession ) + { + iSession->Close(); + delete iSession; + } + } + + +// --------------------------------------------------------- +// CWlanDeviceSettings::GetDefaultSettings +// --------------------------------------------------------- +// +void CWlanDeviceSettings::GetDefaultSettings( SWlanDeviceSettings& aSettings ) + { + DEBUG( "CWlanDeviceSettings::GetDefaultSettings()" ) + + aSettings.backgroundScanInterval = KDefaultBGScanInterval; + aSettings.savedBgScanInterval = KDefaultBGScanInterval; + aSettings.useDefaultSettings = KDefaultUseDefSettings; + aSettings.longRetry = KDefaultLongRetry; + aSettings.shortRetry = KDefaultShortRetry; + aSettings.rts = KDefaultRTS; + aSettings.txPowerLevel = KDefaultTxPowerLevel; + aSettings.radioMeasurements = KDefaultRadioMeasurements; + aSettings.powerMode = KDefaultWlanPowerMode; + } + + +// --------------------------------------------------------- +// CWlanDeviceSettings::OpenTableL +// --------------------------------------------------------- +// +void CWlanDeviceSettings::OpenTableL() + { + DEBUG( "CWlanDeviceSettings::OpenTableL()" ) + + // See if there is a record whose device settings type is + // 'WLAN default settings' + CMDBGenericRecord* deviceSettingsTable = static_cast< CMDBGenericRecord* > + ( CCDRecordBase::RecordFactoryL( 0 ) ); + CleanupStack::PushL( deviceSettingsTable ); + deviceSettingsTable->InitializeL( TPtrC( WLAN_DEVICE_SETTINGS ), NULL ); + deviceSettingsTable->LoadL( *iSession ); + + CMDBElement* tableType = deviceSettingsTable->GetFieldByIdL + ( KCDTIdWlanDeviceSettingsType ); + CMDBField< TUint32 >* tableTypeField = + static_cast< CMDBField< TUint32 >* >( tableType ); + tableTypeField->SetL( KWlanDefaultSettings ); + + if( !deviceSettingsTable->FindL( *iSession ) ) + { + // If not, store empty record + deviceSettingsTable->SetRecordId( KCDNewRecordRequest ); + deviceSettingsTable->StoreL( *iSession ); + // And fill it with data + FillRecordL( KWlanDefaultSettings, deviceSettingsTable ); + deviceSettingsTable->ModifyL( *iSession ); + } + CleanupStack::PopAndDestroy( deviceSettingsTable ); + + // See if there is a record whose device settings type is + // 'WLAN user settings' + deviceSettingsTable = static_cast< CMDBGenericRecord* > + ( CCDRecordBase::RecordFactoryL( 0 ) ); + CleanupStack::PushL( deviceSettingsTable ); + deviceSettingsTable->InitializeL( TPtrC( WLAN_DEVICE_SETTINGS ), NULL ); + deviceSettingsTable->LoadL( *iSession ); + + tableType = deviceSettingsTable->GetFieldByIdL( KCDTIdWlanDeviceSettingsType ); + tableTypeField = static_cast< CMDBField< TUint32 >* >( tableType ); + tableTypeField->SetL( KWlanUserSettings ); + + if( !deviceSettingsTable->FindL( *iSession ) ) + { + // If not, store empty record + deviceSettingsTable->SetRecordId( KCDNewRecordRequest ); + deviceSettingsTable->StoreL( *iSession ); + // And fill it with data + FillRecordL( KWlanUserSettings, deviceSettingsTable ); + deviceSettingsTable->ModifyL( *iSession ); + } + CleanupStack::PopAndDestroy( deviceSettingsTable ); + } + + +// --------------------------------------------------------- +// CWlanDeviceSettings::FillRecordL +// --------------------------------------------------------- +// + +void CWlanDeviceSettings::FillRecordL( TUint32 aTableType, + CMDBGenericRecord* aRecord ) + { + DEBUG1( "CWlanDeviceSettings::NewRecordL() Type=%d", aTableType ) + + SWlanDeviceSettings settings; + GetDefaultSettings( settings ); + + // Device Settings Type + CMDBElement* tableType = aRecord->GetFieldByIdL + ( KCDTIdWlanDeviceSettingsType ); + CMDBField< TUint32 >* tableTypeField = + static_cast< CMDBField< TUint32 >* >( tableType ); + tableTypeField->SetL( aTableType ); + + // Table Version + CMDBElement* tableVersion = aRecord->GetFieldByIdL + ( KCDTIdTableVersion ); + CMDBField< TUint32 >* tableVersionField = + static_cast< CMDBField< TUint32 >* >( tableVersion ); + + tableVersionField->SetL( KWlanDeviceSettingsTableVersion ); + + // BG Scan Interval + CMDBElement* bgScanInterval = aRecord->GetFieldByIdL + ( KCDTIdBgScanInterval ); + CMDBField< TUint32 >* bgScanIntervalField = + static_cast< CMDBField< TUint32 >* >( bgScanInterval ); + bgScanIntervalField->SetL( settings.backgroundScanInterval ); + + // Saved BG Scan Interval + CMDBElement* savedBgScanInterval = aRecord->GetFieldByIdL + ( KCDTIdSavedBgScanInterval ); + CMDBField< TUint32 >* savedBgScanIntervalField = + static_cast< CMDBField< TUint32 >* >( savedBgScanInterval ); + savedBgScanIntervalField->SetL( settings.savedBgScanInterval ); + + // Use Default Settings + CMDBElement* useDefaultSettings = aRecord->GetFieldByIdL + ( KCDTIdUseDefaultSettings ); + CMDBField< TBool >* useDefaultSettingsField = + static_cast< CMDBField< TBool >* >( useDefaultSettings ); + useDefaultSettingsField->SetL( settings.useDefaultSettings ); + + // Long Retry + CMDBElement* longRetry = aRecord->GetFieldByIdL( KCDTIdWlanLongRetry ); + CMDBField< TUint32 >* longRetryField = + static_cast< CMDBField< TUint32 >* >( longRetry ); + longRetryField->SetL( settings.longRetry ); + + // Short Retry + CMDBElement* shortRetry = aRecord->GetFieldByIdL( KCDTIdWlanShortRetry ); + CMDBField< TUint32 >* shortRetryField = + static_cast< CMDBField< TUint32 >* >( shortRetry ); + shortRetryField->SetL( settings.shortRetry ); + + // RTS Threshold + CMDBElement* rts = aRecord->GetFieldByIdL( KCDTIdWlanRTSThreshold ); + CMDBField< TUint32 >* rtsField = + static_cast< CMDBField< TUint32 >* >( rts ); + rtsField->SetL( settings.rts ); + + // TX Power Level + CMDBElement* txPowerLevel = aRecord->GetFieldByIdL( KCDTIdTxPowerLevel ); + CMDBField< TUint32 >* txPowerLevelField = + static_cast< CMDBField< TUint32 >* >( txPowerLevel ); + txPowerLevelField->SetL( settings.txPowerLevel ); + + // Radio Measurements + CMDBElement* radioMeasurements = aRecord->GetFieldByIdL + ( KCDTIdAllowRadioMeasurements ); + CMDBField< TBool >* radioMeasurementsField = + static_cast< CMDBField< TBool >* >( radioMeasurements ); + radioMeasurementsField->SetL( settings.radioMeasurements ); + + // Power Mode + CMDBElement* powerMode = aRecord->GetFieldByIdL( KCDTIdWlanPowerMode ); + CMDBField< TBool >* powerModeField = + static_cast< CMDBField< TBool >* >( powerMode ); + powerModeField->SetL( settings.powerMode ); + } + +// End of File