wlan_bearer/wlandbif_cd/src/wdbiflansettings.cpp
changeset 0 c40eb8fe8501
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wlan_bearer/wlandbif_cd/src/wdbiflansettings.cpp	Tue Feb 02 02:03:13 2010 +0200
@@ -0,0 +1,223 @@
+/*
+* Copyright (c) 2002-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:  Handles the LANService table in CommsDat
+*
+*/
+
+/*
+* %version: 3 %
+*/
+
+// INCLUDE FILES
+#include <e32svr.h>
+
+#include "wdbiflansettings.h"
+#include "gendebug.h"
+
+// ---------------------------------------------------------
+// Class CLanSettings
+// ---------------------------------------------------------
+
+// MEMBER FUNCTIONS
+
+// ---------------------------------------------------------
+// CLanSettings::CLanSettings()
+// C++ default constructor can NOT contain any code, that
+// might leave
+// ---------------------------------------------------------
+EXPORT_C CLanSettings::CLanSettings() : iLANServiceRecord( NULL), iDBSession( NULL)
+    {
+
+    }
+
+// Destructor
+//
+EXPORT_C CLanSettings::~CLanSettings() 
+    {
+    delete iDBSession;
+    delete iLANServiceRecord;
+    }
+
+// ---------------------------------------------------------
+// TInt CLanSettings::Connect()
+// returns KErrNone on success
+// ---------------------------------------------------------
+//
+EXPORT_C TInt CLanSettings::Connect()
+    {
+    TraceDump(WARNING_LEVEL,_L("CLanSettings::Connect()"));
+    
+    TRAPD(err,DoConnectL());
+    return err;
+    }
+
+// ---------------------------------------------------------
+// TInt CLanSettings::Disconnect()
+// ---------------------------------------------------------
+//
+EXPORT_C void CLanSettings::Disconnect()
+    {
+    TraceDump(WARNING_LEVEL,_L("CLanSettings::Disconnect()"));
+    
+    delete iDBSession;
+    iDBSession = NULL;
+    
+    delete iLANServiceRecord;
+    iLANServiceRecord = NULL;
+    }
+
+
+
+// ---------------------------------------------------------
+// TInt CLanSettings::GetLanSettings( TUint32 aId,SLanSettings &aSettings)
+// returns KErrNone on success, LAN settings in aSettings
+// ---------------------------------------------------------
+//
+EXPORT_C TInt CLanSettings::GetLanSettings( TUint32 aId,SLanSettings &aSettings)
+    {
+    TraceDump(WARNING_LEVEL,_L("CLanSettings::GetLanSettings()"));
+    
+    if( iLANServiceRecord)
+        {
+        delete iLANServiceRecord;
+        iLANServiceRecord = NULL;
+        }
+    
+    TRAPD( err, iLANServiceRecord = static_cast<CCDLANServiceRecord*>( CCDRecordBase::RecordFactoryL( KCDTIdLANServiceRecord)));
+    
+    if( !err)
+        {
+        iLANServiceRecord->SetRecordId( aId);
+        TRAP( err, iLANServiceRecord->LoadL( *iDBSession));
+        
+        if( !err)
+            {
+            aSettings.Name = iLANServiceRecord->iRecordName;
+            aSettings.Id = iLANServiceRecord->RecordId();
+            aSettings.AddrFromServer = iLANServiceRecord->iIpAddrFromServer;
+            aSettings.Addr = iLANServiceRecord->iIpAddr;
+            }
+        }
+    return err;
+    }
+
+
+
+// ---------------------------------------------------------
+// TInt CLanSettings::WriteLanSettings( SLanSettings &aSettings)
+// returns KErrNone on success, writes LAN settings from aSettings
+// ---------------------------------------------------------
+//
+EXPORT_C TInt CLanSettings::WriteLanSettings( SLanSettings &aSettings)
+    {
+    TraceDump(WARNING_LEVEL,_L("CLanSettings::WriteLanSettings()"));
+    
+    if( iLANServiceRecord)
+        {
+        delete iLANServiceRecord;
+        iLANServiceRecord = NULL;
+        }
+        
+    TRAPD( err, iLANServiceRecord = static_cast<CCDLANServiceRecord*>( CCDRecordBase::RecordFactoryL( KCDTIdLANServiceRecord)));
+    
+    if( !err)
+        {
+        if( aSettings.Id) // updating existing
+            {
+            iLANServiceRecord->SetRecordId( aSettings.Id);
+            TRAP( err, iLANServiceRecord->LoadL( *iDBSession));
+            if( err)
+                {
+                return err;
+                }
+            }
+        
+        TRAP( err, iLANServiceRecord->iRecordName.SetL( aSettings.Name));
+        if( err)
+            {
+            return err;
+            }
+        TRAP( err, iLANServiceRecord->iIpAddrFromServer.SetL( aSettings.AddrFromServer));
+        if( err)
+            {
+            return err;
+            }
+        TRAP( err, iLANServiceRecord->iIpAddr.SetL( aSettings.Addr));
+        if( err)
+            {
+            return err;
+            }
+        
+        if( aSettings.Id == 0) // create new
+            {
+            iLANServiceRecord->SetRecordId( KCDNewRecordRequest);
+            TRAP( err, iLANServiceRecord->StoreL( *iDBSession));
+            aSettings.Id = iLANServiceRecord->RecordId(); // return new id to caller
+            }
+        else
+            {
+            TRAP( err, iLANServiceRecord->ModifyL( *iDBSession));
+            }
+        
+        }
+    
+    return err;
+    }
+
+
+// ---------------------------------------------------------
+// TInt CLanSettings::DeleteLanSettings( TUint32 aId)
+// returns KErrNone on success, deletes LANService record with ID aId
+// ---------------------------------------------------------
+//
+EXPORT_C TInt CLanSettings::DeleteLanSettings( TUint32 aId)
+    {
+    TraceDump(WARNING_LEVEL,_L("CLanSettings::DeleteLanSettings()"));
+    
+    if( iLANServiceRecord)
+        {
+        delete iLANServiceRecord;
+        iLANServiceRecord = NULL;
+        }
+    
+    TRAPD( err, iLANServiceRecord = static_cast<CCDLANServiceRecord*>( CCDRecordBase::RecordFactoryL( KCDTIdLANServiceRecord)));
+    
+    if( !err)
+        {
+        iLANServiceRecord->SetRecordId( aId);
+        TRAP( err, iLANServiceRecord->DeleteL( *iDBSession));
+        }
+    return err;
+    
+    }
+
+//
+// L-methods called and trapped by the public non-leaving methods
+//
+
+// ---------------------------------------------------------
+// void CLanSettings::DoConnectL()
+// Connects to the CommsDat storage server
+// ---------------------------------------------------------
+//
+void CLanSettings::DoConnectL()
+    {
+    TraceDump(ERROR_LEVEL,_L("CLanSettings::DoConnectL()"));
+
+    if( !iDBSession)
+        {
+        iDBSession = CMDBSession::NewL( KCDCurrentVersion);
+        }
+    
+    }