wlan_bearer/wlandbif_cd/src/wdbiflansettings.cpp
changeset 0 c40eb8fe8501
equal deleted inserted replaced
-1:000000000000 0:c40eb8fe8501
       
     1 /*
       
     2 * Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  Handles the LANService table in CommsDat
       
    15 *
       
    16 */
       
    17 
       
    18 /*
       
    19 * %version: 3 %
       
    20 */
       
    21 
       
    22 // INCLUDE FILES
       
    23 #include <e32svr.h>
       
    24 
       
    25 #include "wdbiflansettings.h"
       
    26 #include "gendebug.h"
       
    27 
       
    28 // ---------------------------------------------------------
       
    29 // Class CLanSettings
       
    30 // ---------------------------------------------------------
       
    31 
       
    32 // MEMBER FUNCTIONS
       
    33 
       
    34 // ---------------------------------------------------------
       
    35 // CLanSettings::CLanSettings()
       
    36 // C++ default constructor can NOT contain any code, that
       
    37 // might leave
       
    38 // ---------------------------------------------------------
       
    39 EXPORT_C CLanSettings::CLanSettings() : iLANServiceRecord( NULL), iDBSession( NULL)
       
    40     {
       
    41 
       
    42     }
       
    43 
       
    44 // Destructor
       
    45 //
       
    46 EXPORT_C CLanSettings::~CLanSettings() 
       
    47     {
       
    48     delete iDBSession;
       
    49     delete iLANServiceRecord;
       
    50     }
       
    51 
       
    52 // ---------------------------------------------------------
       
    53 // TInt CLanSettings::Connect()
       
    54 // returns KErrNone on success
       
    55 // ---------------------------------------------------------
       
    56 //
       
    57 EXPORT_C TInt CLanSettings::Connect()
       
    58     {
       
    59     TraceDump(WARNING_LEVEL,_L("CLanSettings::Connect()"));
       
    60     
       
    61     TRAPD(err,DoConnectL());
       
    62     return err;
       
    63     }
       
    64 
       
    65 // ---------------------------------------------------------
       
    66 // TInt CLanSettings::Disconnect()
       
    67 // ---------------------------------------------------------
       
    68 //
       
    69 EXPORT_C void CLanSettings::Disconnect()
       
    70     {
       
    71     TraceDump(WARNING_LEVEL,_L("CLanSettings::Disconnect()"));
       
    72     
       
    73     delete iDBSession;
       
    74     iDBSession = NULL;
       
    75     
       
    76     delete iLANServiceRecord;
       
    77     iLANServiceRecord = NULL;
       
    78     }
       
    79 
       
    80 
       
    81 
       
    82 // ---------------------------------------------------------
       
    83 // TInt CLanSettings::GetLanSettings( TUint32 aId,SLanSettings &aSettings)
       
    84 // returns KErrNone on success, LAN settings in aSettings
       
    85 // ---------------------------------------------------------
       
    86 //
       
    87 EXPORT_C TInt CLanSettings::GetLanSettings( TUint32 aId,SLanSettings &aSettings)
       
    88     {
       
    89     TraceDump(WARNING_LEVEL,_L("CLanSettings::GetLanSettings()"));
       
    90     
       
    91     if( iLANServiceRecord)
       
    92         {
       
    93         delete iLANServiceRecord;
       
    94         iLANServiceRecord = NULL;
       
    95         }
       
    96     
       
    97     TRAPD( err, iLANServiceRecord = static_cast<CCDLANServiceRecord*>( CCDRecordBase::RecordFactoryL( KCDTIdLANServiceRecord)));
       
    98     
       
    99     if( !err)
       
   100         {
       
   101         iLANServiceRecord->SetRecordId( aId);
       
   102         TRAP( err, iLANServiceRecord->LoadL( *iDBSession));
       
   103         
       
   104         if( !err)
       
   105             {
       
   106             aSettings.Name = iLANServiceRecord->iRecordName;
       
   107             aSettings.Id = iLANServiceRecord->RecordId();
       
   108             aSettings.AddrFromServer = iLANServiceRecord->iIpAddrFromServer;
       
   109             aSettings.Addr = iLANServiceRecord->iIpAddr;
       
   110             }
       
   111         }
       
   112     return err;
       
   113     }
       
   114 
       
   115 
       
   116 
       
   117 // ---------------------------------------------------------
       
   118 // TInt CLanSettings::WriteLanSettings( SLanSettings &aSettings)
       
   119 // returns KErrNone on success, writes LAN settings from aSettings
       
   120 // ---------------------------------------------------------
       
   121 //
       
   122 EXPORT_C TInt CLanSettings::WriteLanSettings( SLanSettings &aSettings)
       
   123     {
       
   124     TraceDump(WARNING_LEVEL,_L("CLanSettings::WriteLanSettings()"));
       
   125     
       
   126     if( iLANServiceRecord)
       
   127         {
       
   128         delete iLANServiceRecord;
       
   129         iLANServiceRecord = NULL;
       
   130         }
       
   131         
       
   132     TRAPD( err, iLANServiceRecord = static_cast<CCDLANServiceRecord*>( CCDRecordBase::RecordFactoryL( KCDTIdLANServiceRecord)));
       
   133     
       
   134     if( !err)
       
   135         {
       
   136         if( aSettings.Id) // updating existing
       
   137             {
       
   138             iLANServiceRecord->SetRecordId( aSettings.Id);
       
   139             TRAP( err, iLANServiceRecord->LoadL( *iDBSession));
       
   140             if( err)
       
   141                 {
       
   142                 return err;
       
   143                 }
       
   144             }
       
   145         
       
   146         TRAP( err, iLANServiceRecord->iRecordName.SetL( aSettings.Name));
       
   147         if( err)
       
   148             {
       
   149             return err;
       
   150             }
       
   151         TRAP( err, iLANServiceRecord->iIpAddrFromServer.SetL( aSettings.AddrFromServer));
       
   152         if( err)
       
   153             {
       
   154             return err;
       
   155             }
       
   156         TRAP( err, iLANServiceRecord->iIpAddr.SetL( aSettings.Addr));
       
   157         if( err)
       
   158             {
       
   159             return err;
       
   160             }
       
   161         
       
   162         if( aSettings.Id == 0) // create new
       
   163             {
       
   164             iLANServiceRecord->SetRecordId( KCDNewRecordRequest);
       
   165             TRAP( err, iLANServiceRecord->StoreL( *iDBSession));
       
   166             aSettings.Id = iLANServiceRecord->RecordId(); // return new id to caller
       
   167             }
       
   168         else
       
   169             {
       
   170             TRAP( err, iLANServiceRecord->ModifyL( *iDBSession));
       
   171             }
       
   172         
       
   173         }
       
   174     
       
   175     return err;
       
   176     }
       
   177 
       
   178 
       
   179 // ---------------------------------------------------------
       
   180 // TInt CLanSettings::DeleteLanSettings( TUint32 aId)
       
   181 // returns KErrNone on success, deletes LANService record with ID aId
       
   182 // ---------------------------------------------------------
       
   183 //
       
   184 EXPORT_C TInt CLanSettings::DeleteLanSettings( TUint32 aId)
       
   185     {
       
   186     TraceDump(WARNING_LEVEL,_L("CLanSettings::DeleteLanSettings()"));
       
   187     
       
   188     if( iLANServiceRecord)
       
   189         {
       
   190         delete iLANServiceRecord;
       
   191         iLANServiceRecord = NULL;
       
   192         }
       
   193     
       
   194     TRAPD( err, iLANServiceRecord = static_cast<CCDLANServiceRecord*>( CCDRecordBase::RecordFactoryL( KCDTIdLANServiceRecord)));
       
   195     
       
   196     if( !err)
       
   197         {
       
   198         iLANServiceRecord->SetRecordId( aId);
       
   199         TRAP( err, iLANServiceRecord->DeleteL( *iDBSession));
       
   200         }
       
   201     return err;
       
   202     
       
   203     }
       
   204 
       
   205 //
       
   206 // L-methods called and trapped by the public non-leaving methods
       
   207 //
       
   208 
       
   209 // ---------------------------------------------------------
       
   210 // void CLanSettings::DoConnectL()
       
   211 // Connects to the CommsDat storage server
       
   212 // ---------------------------------------------------------
       
   213 //
       
   214 void CLanSettings::DoConnectL()
       
   215     {
       
   216     TraceDump(ERROR_LEVEL,_L("CLanSettings::DoConnectL()"));
       
   217 
       
   218     if( !iDBSession)
       
   219         {
       
   220         iDBSession = CMDBSession::NewL( KCDCurrentVersion);
       
   221         }
       
   222     
       
   223     }