dbcreator/commsdatcreator/Src/cdcwlandevicesettings.cpp
changeset 0 5a93021fdf25
child 12 ea6e024ea6f9
child 18 fcbbe021d614
--- /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 <cdbcols.h>
+#include <WlanCdbCols.h>
+
+#include <metadatabase.h>
+#include <commsdattypeinfov1_1.h>
+#include <commsdattypesv1_1.h>
+#include <wlancontainer.h>
+
+
+// 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