--- a/omadm/omadmextensions/adapters/nsmldinternet/src/NSmlWlanSettings.cpp Tue Feb 02 00:03:17 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1732 +0,0 @@
-/*
-* Copyright (c) 2002-2006 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: Wlan Adapter DB handler
-*
-*/
-
-
-
-
-#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
-#include <commsdat_partner.h>
-#endif
-#include <WlanCdbCols.h>
-#include "NSmlWlanSettings.h"
-#include "NSmlWLanAdapter.h"
-#include "nsmldebug.h"
-#include <comms-infras/commdb/protection/protectdb.h>
-#include <SettingEnforcementInfo.h> // vsettingenforcementinfo
-#include <featmgr.h>
-
-#ifndef __WINS__
-// This lowers the unnecessary compiler warning (armv5) to remark.
-// "Warning: #174-D: expression has no effect..." is caused by
-// DBG_ARGS8 macro in no-debug builds.
-#pragma diag_remark 174
-#endif
-
-const TUint KEAPListBufferSize = 128;
-const TUint KLengthOfOldStyleEAPListEntry = 5; // "+xxx,"
-
-const TInt KBeginTransRetryDelay = 1000000; // Delay for comms db begintransaction retry (microseconds)
-const TInt KBeginTransRetryCount = 7; // Maximum number of retries
-//-----------------------------------------------------------------------------
-// CWlanAdapter::CWlanSettings( CCommsDatabase& aDatabase )
-//-----------------------------------------------------------------------------
-CWlanSettings::CWlanSettings( CCommsDatabase& aDatabase ) : iDatabase( aDatabase ), iExpandedEAPTypeFieldsUsed( ETrue )
- {
- _DBG_FILE("CWlanSettings::CWlanSettings(): begin");
-
- iTableView = 0;
- iEapType = NULL;
- iSecondaryView = NULL;
-
-
- _DBG_FILE("CWlanSettings::CWlanSettings(): end");
- }
-
-//-----------------------------------------------------------------------------
-// CWlanAdapter::~CWlanSettings( )
-//-----------------------------------------------------------------------------
-CWlanSettings::~CWlanSettings( )
- {
-
- delete iEapType;
- delete iSecondaryView;
- delete iTableView;
- }
-
-//-----------------------------------------------------------------------------
-// CWlanSettings* CWlanSettings::NewL( CCommsDatabase& aDatabase )
-//-----------------------------------------------------------------------------
-CWlanSettings* CWlanSettings::NewL( CCommsDatabase& aDatabase )
- {
- _DBG_FILE("CWlanSettings::NewL(): begin");
-
- CWlanSettings* self = new(ELeave) CWlanSettings( aDatabase );
-
- CleanupStack::PushL( self );
- self->ConstructL( );
- CleanupStack::Pop( self );
-
- _DBG_FILE("CWlanSettings::NewL(): end");
- return self;
- }
-
-//-----------------------------------------------------------------------------
-// void CWlanSettings::ConstructL( )
-//-----------------------------------------------------------------------------
-void CWlanSettings::ConstructL( )
-{
- _DBG_FILE("CWlanSettings::ConstructL(): begin");
- _DBG_FILE("CWlanSettings::ConstructL(): end");
-}
-
-
-//-----------------------------------------------------------------------------
-// TInt CWlanSettings::GetWlanSettings( TUint32 aLuid, TWlanSettings& aWlanSettings )
-//-----------------------------------------------------------------------------
-TInt CWlanSettings::GetWlanSettings( TUint32 aLuid, TWlanSettings& aWlanSettings )
- {
- _DBG_FILE("CWlanSettings::GetWlanSettings(): begin");
-
- TRAPD( err, ConnectToDatabaseL() );
- if( err == KErrNone )
- {
- err = GoToRecord( aLuid );
-
- if( err == KErrNone )
- {
- TRAP( err, GetDataFromRecordL( &aWlanSettings ) );
- }
- }
-
- _DBG_FILE("CWlanSettings::GetWlanSettings(): end");
- return err;
- }
-
-
-//-----------------------------------------------------------------------------
-// TInt CWlanSettings::GetEapSettings( TInt aId, TWlanSettings& aWlanSettings )
-//-----------------------------------------------------------------------------
-TInt CWlanSettings::GetEAPSettings( const TInt aId, const TInt aEapType, const TInt aTunnelingType, EAPSettings& aEapSettings )
- {
- _DBG_FILE("CWlanSettings::GetEapSettings(): begin");
- DBG_ARGS(_S16("aId=%d, eEapType=%d"), aId, aEapType);
-
- TRAPD( err, GetEAPInterfaceL(aId, aTunnelingType, aEapType) );
- DBG_ARGS(_S16("GetEAPInterfaceL leaved with %d"), err);
- if( err == KErrNone )
- {
- TRAP(err, iEapType->GetConfigurationL(aEapSettings));
- DBG_ARGS(_S16("iEapType->GetConfigurationL leaved with %d"), err);
- }
-
- _DBG_FILE("CWlanSettings::GetEAPSettings(): end");
- return err;
- }
-
-
-//-----------------------------------------------------------------------------
-// TInt CWlanSettings::DeleteWlanSettings( TUint32 aLuid )
-//-----------------------------------------------------------------------------
-TInt CWlanSettings::DeleteWlanSettings( TUint32 aLuid )
- {
- _DBG_FILE("CWlanSettings::DeleteWlanSettings(): begin");
- TBool wlanEnforce = EFalse;
- TInt tableLockError= KErrNone;
-
- if(FeatureManager::FeatureSupported(KFeatureIdSapPolicyManagement))
- {
- TInt enError = KErrNone;
- TRAP(enError, wlanEnforce=CheckEnforcementL());
- DBG_ARGS(_S16("CWlanSettings::DeleteWLANSettings, check enforcement failed. error: <%D>"), enError );
- if(wlanEnforce)
- {
- _DBG_FILE("CWlanSettings::WriteWlanSettings(): wlan enforce is ON ");
- TRAPD(lockError,tableLockError = PerformLockWLANTablesL(EFalse));
- if(lockError == KErrNone && tableLockError == KErrNone)
- {
- _DBG_FILE("CWlanSettings::WriteWlanSettings(): Table unlcoked successfully ");
- iWLANRelock = ETrue;
- }
- }
- }
-
- TRAPD( err, ConnectToDatabaseL() );
- if( err == KErrNone )
- {
- err = GoToRecord( aLuid );
- if( err == KErrNone )
- {
-
- if(FeatureManager::FeatureSupported(KFeatureIdSapPolicyManagement))
- {
- if(wlanEnforce)
- {
- ((CCommsDbProtectTableView*)iTableView)->UnprotectRecord();
- }
- }
-
-
- TInt err = iTableView->UpdateRecord( );
- if( err == KErrLocked )
- {
- _DBG_FILE("DeleteWlanSettings: UpdateRecord was locked.");
- TInt retry = KBeginTransRetryCount;
- while ( retry > 0 && err == KErrLocked )
- {
- User::After(KBeginTransRetryDelay);
- _DBG_FILE("DeleteWlanSettings: Slept 1 second. Try again");
- err = iTableView->UpdateRecord();
- retry--;
- }
- if( err != KErrNone )
- {
- _DBG_FILE("DeleteWlanSettings: UpdateRecord was unsuccessful");
- }
- else
- {
- _DBG_FILE("DeleteWlanSettings: UpdateRecord was successful");
- }
- }
-
- if( err == KErrNone )
- {
- TRAP( err, iTableView->WriteUintL( TPtrC(WLAN_SERVICE_ID), 0 ) );
- if( err != KErrNone )
- {
- if(FeatureManager::FeatureSupported(KFeatureIdSapPolicyManagement))
- {
- TInt tableLockError= KErrNone;
- if(iWLANRelock)
- {
- TInt lockError = KErrNone;
- TRAP(lockError,tableLockError = PerformLockWLANTablesL(ETrue));
- ((CCommsDbProtectTableView*)iTableView)->ProtectRecord();
- DBG_ARGS(_S16("CWlanSettings::DeleteWLANSettings, WLAN table Lock error. error: <%D>, <%D> "), lockError,tableLockError );
- iWLANRelock =EFalse;
- }
- if ( tableLockError != KErrNone ) // to remove warnings
- {
- tableLockError = KErrNone;
- }
- }
- return err;
- }
- }
- err = iTableView->PutRecordChanges( );
- if( err == KErrLocked )
- {
- _DBG_FILE("DeleteWlanSettings: PutRecordChanges was locked.");
- TInt retry = KBeginTransRetryCount;
- while ( retry > 0 && err == KErrLocked )
- {
- User::After(KBeginTransRetryDelay);
- _DBG_FILE("DeleteWlanSettings: Slept 1 second. Try again");
- err = iTableView->PutRecordChanges();
- retry--;
- }
- if( err != KErrNone )
- {
- _DBG_FILE("DeleteWlanSettings: PutRecordChanges was unsuccessful");
- }
- else
- {
- _DBG_FILE("DeleteWlanSettings: PutRecordChanges was successful");
- }
- }
-
- if(FeatureManager::FeatureSupported(KFeatureIdSapPolicyManagement))
- {
- TInt tableLockError= KErrNone;
- if(iWLANRelock)
- {
- TInt lockError = KErrNone;
- TRAP(lockError,tableLockError = PerformLockWLANTablesL(ETrue));
- DBG_ARGS(_S16("CWlanSettings::DeleteWLANSettings, WLAN table Lock error. error: <%D>, <%D> "), lockError,tableLockError );
- ((CCommsDbProtectTableView*)iTableView)->ProtectRecord();
- iWLANRelock =EFalse;
- }
- if ( tableLockError != KErrNone ) // to remove warnings
- {
- tableLockError = KErrNone;
- }
- }
-
-
- if ( err == KErrNone )
- {
- // Ignore err on purpose
- TRAP( err, DeleteSecondarySSIDsL( aLuid ) );
-
- TRAP( err, DeleteWlanEapSettingsL( aLuid ) );
- }
- }
- }
-
-
- _DBG_FILE("CWlanSettings::DeleteWlanSettings(): end");
- if(FeatureManager::FeatureSupported(KFeatureIdSapPolicyManagement))
- {
- if(iWLANRelock)
- {
- TInt lockError = KErrNone;
- TRAP(lockError,tableLockError = PerformLockWLANTablesL(ETrue));
- DBG_ARGS(_S16("CWlanSettings::DeleteWLANSettings, WLAN table Lock error. error: <%D>, <%D> "), lockError,tableLockError );
- ((CCommsDbProtectTableView*)iTableView)->ProtectRecord();
- iWLANRelock =EFalse;
- }
- }
-
- if (wlanEnforce)
- wlanEnforce = EFalse; // to get rid of warnings
- return err;
- }
-
-
-
-
-TInt CWlanSettings::DeleteOneSecondarySSIDL( TUint32 aWLANId , TUint32 asecId)
-{
-
- TInt retval = KErrNone;
- SetSecondaryViewToRecordL(aWLANId);
- retval = iSecondaryView->GotoFirstRecord();
-
- while (retval == KErrNone)
- {
- TSecondarySSID ssid;
- TRAP(retval, iSecondaryView->ReadUintL( TPtrC(WLAN_SEC_SSID_ID ), ssid.Id ));
- if(ssid.Id == asecId)
- {
- //retval = iSecondaryView->UpdateRecord();
- //if( retval==KErrNone )
- // {
- if(FeatureManager::FeatureSupported(KFeatureIdSapPolicyManagement))
- {
- TBool wlanEnforce = EFalse;
- TInt enError = KErrNone;
- TRAP(enError, wlanEnforce=CheckEnforcementL());
- DBG_ARGS(_S16("CWlanSettings::DeleteWLANSettings, check enforcement failed. error: <%D>"), enError );
- if(wlanEnforce)
- {
- ((CCommsDbProtectTableView*)iSecondaryView)->UnprotectRecord();
- }
- }
-
- retval = iSecondaryView->DeleteRecord();
- if( retval == KErrLocked )
- {
- _DBG_FILE("DeleteOneSecondarySSIDL: DeleteRecord was locked.");
- TInt retry = KBeginTransRetryCount;
- while ( retry > 0 && retval == KErrLocked )
- {
- User::After(KBeginTransRetryDelay);
- _DBG_FILE("DeleteOneSecondarySSIDL: Slept 1 second. Try again");
- retval = iSecondaryView->DeleteRecord();
- retry--;
- }
- if( retval != KErrNone )
- {
- _DBG_FILE("DeleteOneSecondarySSIDL: DeleteRecord was unsuccessful");
- }
- else
- {
- _DBG_FILE("DeleteOneSecondarySSIDL: DeleteRecord was successful");
- }
- }
- DBG_ARGS(_S16("CWlanSettings::DeleteOneSecondarySSIDL, Secondaryssid delete error: <%D> "), retval );
-
- // iTableView->PutRecordChanges( );
- //}
-
- break;
- }
-
- retval = iSecondaryView->GotoNextRecord();
- }
-
- return retval;
-}
-
-TInt CWlanSettings::DeleteSecondarySSIDsL( TUint32 aWLANId )
- {
- TInt retVal(KErrNone);
- if (iSecondaryView == NULL)
- {
- SetSecondaryViewToRecordL(aWLANId);
- }
- else
- {
- retVal = iSecondaryView->GotoFirstRecord();
- TUint32 secId = 0;
- if (retVal == KErrNone)
- {
- iSecondaryView->ReadUintL( TPtrC(WLAN_SEC_SSID_SERVICE_ID), secId );
- }
- if (secId != aWLANId)
- {
- SetSecondaryViewToRecordL(aWLANId);
- }
- }
-
- TInt err = iSecondaryView->GotoFirstRecord();
- while (err == KErrNone)
- {
- if(FeatureManager::FeatureSupported(KFeatureIdSapPolicyManagement))
- {
- TBool wlanEnforce = EFalse;
- TInt enError = KErrNone;
- TRAP(enError, wlanEnforce=CheckEnforcementL());
- DBG_ARGS(_S16("CWlanSettings::DeleteSecondarySSIDsL, check enforcement failed. error: <%D>"), enError );
- if(wlanEnforce)
- {
- ((CCommsDbProtectTableView*)iSecondaryView)->UnprotectRecord();
- }
- }
- retVal = iSecondaryView->DeleteRecord();
- if( retVal == KErrLocked )
- {
- _DBG_FILE("DeleteSecondarySSIDsL: DeleteRecord was locked.");
- TInt retry = KBeginTransRetryCount;
- while ( retry > 0 && retVal == KErrLocked )
- {
- User::After(KBeginTransRetryDelay);
- _DBG_FILE("DeleteSecondarySSIDsL: Slept 1 second. Try again");
- retVal = iSecondaryView->DeleteRecord();
- retry--;
- }
- if( retVal != KErrNone )
- {
- _DBG_FILE("DeleteSecondarySSIDsL: DeleteRecord was unsuccessful");
- }
- else
- {
- _DBG_FILE("DeleteSecondarySSIDsL: DeleteRecord was successful");
- }
- }
- DBG_ARGS(_S16("CWlanSettings::DeleteSecondarySSIDsL, Secondaryssid delete error: <%D> "), retVal );
-
- err = iSecondaryView->GotoNextRecord();
- }
-
- return retVal;
- }
-//-----------------------------------------------------------------------------
-// TInt CWlanSettings::DeleteEapSettings( TInt aWlanId, TInt aEapType )
-//-----------------------------------------------------------------------------
-TInt CWlanSettings::DeleteEAPSettings( TInt aWlanId, TInt aEapType )
- {
- _DBG_FILE("CWlanSettings::DeleteEAPSettings(): begin");
-
- TRAPD( err, GetEAPInterfaceL(aWlanId, EAPSettings::EEapNone, aEapType) );
- if( err == KErrNone )
- {
- TRAP( err, iEapType->DeleteConfigurationL());
- if( err != KErrNone )
- {
- DBG_ARGS(_S16("CWlanSettings::DeleteEAPSettings, delete failed, error: <%D> "), err );
- return err;
- }
- }
-
- _DBG_FILE("CWlanSettings::DeleteEAPSettings(): end");
- return err;
- }
-
-//-----------------------------------------------------------------------------
-// TInt CWlanSettings::DeleteWlanEapSettings( TInt aWlanId )
-// Deletes all EAPs from a Wlan
-//-----------------------------------------------------------------------------
-void CWlanSettings::DeleteWlanEapSettingsL( TInt aWlanId )
- {
- _DBG_FILE("CWlanSettings::DeleteWlanEapSettings(): begin");
- TInt retVal( KErrNone );
- TInt err( KErrNone );
-
- // List EAP implementations and call deletion for those that are not encapsulated
-
- RImplInfoPtrArray ecomInfoArray;
- REComSession::ListImplementationsL( KEapTypeInterfaceUid, ecomInfoArray );
- TUint eapId;
- for (TInt i = 0; i < ecomInfoArray.Count(); i++)
- {
- if ( !CEapType::IsDisallowedOutsidePEAP( *ecomInfoArray[i] ) )
- {
- // Not encapsulated method. Settings can be deleted.
- if ( ecomInfoArray[i]->DataType().Length() == KExpandedEAPIdLength)
- {
- // The EAP ID is in expanded type format
- eapId = ecomInfoArray[i]->DataType()[7];
- }
- else
- {
- // The EAP ID is in old 8-bit format (as string)
- TLex8 lex( ecomInfoArray[i]->DataType() );
- lex.Val( eapId );
- }
- err = DeleteEAPSettings( aWlanId, eapId );
- if ( err != KErrNone )
- {
- retVal = err;
- }
- }
- }
- ecomInfoArray.ResetAndDestroy();
- User::LeaveIfError (retVal);
-
- _DBG_FILE("CWlanSettings::DeleteWlanEapSettings(): end");
- }
-
-
-
-//-----------------------------------------------------------------------------
-// TInt CWlanSettings::WriteWlanSettings( TWlanSettings& aWlanSettings )
-//-----------------------------------------------------------------------------
-TInt CWlanSettings::WriteWlanSettings( TWlanSettings& aWlanSettings )
- {
- _DBG_FILE("CWlanSettings::WriteWlanSettings(): begin");
-
- TInt err = 0;
- TInt enError= KErrNone;
- iServiceID = aWlanSettings.ServiceID;
- TBool wlanEnforce = EFalse;
-
- if(FeatureManager::FeatureSupported(KFeatureIdSapPolicyManagement))
- {
- TRAP(enError, wlanEnforce=CheckEnforcementL());
- DBG_ARGS(_S16("CWlanSettings::WriteWlanSettings, check enforcement . error: <%D>"), enError );
- if(wlanEnforce)
- {
- TRAPD(lockError,enError = PerformLockWLANTablesL(EFalse));
- if(lockError == KErrNone && enError == KErrNone)
- {
- iWLANRelock = ETrue;
- }
- }
- }
-
- if( RecordExists( aWlanSettings.ServiceID ) <= 0 )
- {
- err = iTableView->InsertRecord( aWlanSettings.Id );
- if( err == KErrLocked )
- {
- _DBG_FILE("WriteWlanSettings InsertRecord: CommsDat was locked.");
- TInt retry = KBeginTransRetryCount;
- while ( retry > 0 && err == KErrLocked )
- {
- User::After(KBeginTransRetryDelay);
- _DBG_FILE("WriteWlanSettings: Slept 1 second. Try again");
- err = iTableView->InsertRecord( aWlanSettings.Id );
- retry--;
- }
- }
-
- if( err != KErrNone )
- {
- DBG_ARGS(_S16("CWlanSettings::WriteWlanSettings(): - InsertRecord failed. error: <%D>"), err );
-
- if(FeatureManager::FeatureSupported(KFeatureIdSapPolicyManagement))
- {
- TInt tableLockError= KErrNone;
- if(iWLANRelock)
- {
- TInt lockError = KErrNone;
- TRAP(lockError,tableLockError = PerformLockWLANTablesL(ETrue));
- DBG_ARGS(_S16("CWlanSettings::WriteWlanSettings, WLAN table Lock error. error: <%D>, <%D> "), lockError,tableLockError );
- iWLANRelock =EFalse;
- }
- if ( tableLockError != KErrNone ) // to remove warnings
- {
- tableLockError = KErrNone;
- }
- }
- return err;
- }
- TRAP( err, InitialiseRecordL() );
- if( err != KErrNone )
- {
- DBG_ARGS(_S16("CWlanSettings::WriteWlanSettings(): - InitialiseRecord failed. error: <%D>"), err );
-
- if(FeatureManager::FeatureSupported(KFeatureIdSapPolicyManagement))
- {
- TInt tableLockError= KErrNone;
- if(iWLANRelock)
- {
- TInt lockError = KErrNone;
- TRAP(lockError,tableLockError = PerformLockWLANTablesL(ETrue));
- DBG_ARGS(_S16("CWlanSettings::WriteWlanSettings, WLAN table Lock error. error: <%D>, <%D> "), lockError,tableLockError );
- iWLANRelock =EFalse;
- }
- if ( tableLockError != KErrNone ) // to remove warnings
- {
- tableLockError = KErrNone;
- }
- }
- return err;
- }
- }
- else
- {
- err = GoToRecord( aWlanSettings.ServiceID );
- if( err == KErrNone )
- {
-
- if(FeatureManager::FeatureSupported(KFeatureIdSapPolicyManagement))
- {
- if ( wlanEnforce )
- {
- _DBG_FILE("CWlanSettings::WriteWlanSettings(): unprotect wlan");
- ((CCommsDbProtectTableView*)iTableView)->UnprotectRecord();
- }
- }
-
-
- err = iTableView->UpdateRecord( );
- if( err == KErrLocked )
- {
- _DBG_FILE("WriteWlanSettings: UpdateRecord was locked.");
- TInt retry = KBeginTransRetryCount;
- while ( retry > 0 && err == KErrLocked )
- {
- User::After(KBeginTransRetryDelay);
- _DBG_FILE("WriteWlanSettings: Slept 1 second. Try again");
- err = iTableView->UpdateRecord();
- retry--;
- }
- if( err != KErrNone )
- {
- _DBG_FILE("WriteWlanSettings: UpdateRecord was unsuccessful");
- }
- else
- {
- _DBG_FILE("WriteWlanSettings: UpdateRecord was successful");
- }
- }
-
- if( err != KErrNone )
- {
- DBG_ARGS(_S16("CWlanSettings::WriteWlanSettings(): - UpdateRecord failed. error: <%D>"), err );
-
- if(FeatureManager::FeatureSupported(KFeatureIdSapPolicyManagement))
- {
- TInt tableLockError= KErrNone;
- if(iWLANRelock)
- {
- TInt lockError = KErrNone;
- TRAP(lockError,tableLockError = PerformLockWLANTablesL(ETrue));
- DBG_ARGS(_S16("CWlanSettings::WriteWlanSettings, WLAN table Lock error. error: <%D>, <%D> "), lockError,tableLockError );
- ((CCommsDbProtectTableView*)iTableView)->ProtectRecord();
- iWLANRelock =EFalse;
- }
- if ( tableLockError != KErrNone ) // to remove warnings
- {
- tableLockError = KErrNone;
- }
- }
- return err;
- }
- }
- }
-
- TRAP( err, WriteDataToRecordL( &aWlanSettings ) );
-
- if( err == KErrNone )
- {
- _DBG_FILE("CWlanSettings::WriteWlanSettings(): PutRecordChanges");
- err = iTableView->PutRecordChanges();
- if( err == KErrLocked )
- {
- _DBG_FILE("WriteWlanSettings: PutRecordChanges was locked.");
- TInt retry = KBeginTransRetryCount;
- while ( retry > 0 && err == KErrLocked )
- {
- User::After(KBeginTransRetryDelay);
- _DBG_FILE("WriteWlanSettings: Slept 1 second. Try again");
- err = iTableView->PutRecordChanges();
- retry--;
- }
- }
- if( err != KErrNone )
- {
- _DBG_FILE("WriteWlanSettings: PutRecordChanges was unsuccessful");
- }
- else
- {
- _DBG_FILE("WriteWlanSettings: PutRecordChanges was successful");
- }
- }
- if(FeatureManager::FeatureSupported(KFeatureIdSapPolicyManagement))
- {
- if(iWLANRelock)
- {
- TInt lockError = KErrNone;
- TRAP(lockError,enError = PerformLockWLANTablesL(ETrue));
- DBG_ARGS(_S16("CWlanSettings::WriteWlanSettings, WLAN table Lock error. error: <%D>, <%D> "), lockError,enError );
- iWLANRelock =EFalse;
- }
- }
- DBG_ARGS(_S16("CWlanSettings::WriteWlanSettings(): end. err: <%D>"), err );
- return err;
- }
-
-
-
-//-----------------------------------------------------------------------------
-// TInt CWlanSettings::WriteWlanSettings( TWlanSettings& aWlanSettings )
-//-----------------------------------------------------------------------------
-TInt CWlanSettings::WriteSecondarySSIDL( TUint32 aWlanID, TSecondarySSID& aSettings, TBool aNew )
- {
-
- _DBG_FILE("CWlanSettings::WriteSecondarySSIDL(): begin");
-
- TUint32 id = 0;
- delete iSecondaryView;
- iSecondaryView = NULL;
-
- TInt retval = KErrNone;
- TInt reLock = EFalse;
- TBool apEnforce=EFalse;
-
- if(FeatureManager::FeatureSupported(KFeatureIdSapPolicyManagement))
- {
- TRAPD(eError,apEnforce=CheckEnforcementL())
- DBG_ARGS8(_S8("CNSmlInternetAdapter::WriteSecondarySSIDL(): EError %d , APEnforcement is %d"),eError,apEnforce);
- if(eError==KErrNone && apEnforce)
- {
- _DBG_FILE("CWlanSettings::WriteSecondarySSIDL(): set db protect");
- TInt enError=KErrNone;
- TInt lockError = KErrNone;
- TRAP(lockError,enError = PerformLockWLANTablesL(EFalse));
- reLock = ETrue;
- if ( enError != KErrNone ) // to remove warnings
- {
- enError = KErrNone;
- }
- }
- }
-
-
- if (aNew)
- {
- _DBG_FILE("CWlanSettings::WriteSecondarySSIDL(): new table inserted");
- iSecondaryView = iDatabase.OpenTableLC( TPtrC( WLAN_SECONDARY_SSID ) );
- CleanupStack::Pop(iSecondaryView); // iSecondaryView
- retval = iSecondaryView->InsertRecord(id);
-
- if( retval == KErrLocked )
- {
- _DBG_FILE("WriteSecondarySSIDL: InsertRecord was locked.");
- TInt retry = KBeginTransRetryCount;
- while ( retry > 0 && retval == KErrLocked )
- {
- User::After(KBeginTransRetryDelay);
- _DBG_FILE("WriteSecondarySSIDL: Slept 1 second. Try again");
- retval = iSecondaryView->InsertRecord(id);
- retry--;
- }
- }
- if( retval != KErrNone )
- {
- _DBG_FILE("WriteSecondarySSIDL: InsertRecord was unsuccessful");
- }
- else
- {
- _DBG_FILE("WriteSecondarySSIDL: InsertRecord was successful");
- }
-
- DBG_ARGS8(_S8("CNSmlInternetAdapter::WriteSecondarySSIDL(): Add record, error %d"), retval);
- if ( retval == KErrNone )
- {
- _DBG_FILE("CWlanSettings::WriteSecondarySSIDL(): table insertion went ok");
- iSecondaryView->WriteUintL(TPtrC(WLAN_SEC_SSID_SERVICE_ID), aWlanID );
- iSecondaryView->WriteUintL(TPtrC(WLAN_SEC_SSID_ID), id );
- }
- }
- else
- {
- _DBG_FILE("CWlanSettings::WriteSecondarySSIDL(): table exists, find it");
- iSecondaryView = iDatabase.OpenViewMatchingUintLC(TPtrC(WLAN_SECONDARY_SSID),
- TPtrC(WLAN_SEC_SSID_ID),
- aSettings.Id);
- CleanupStack::Pop(iSecondaryView); // iSecondaryView
- TInt err = iSecondaryView->GotoFirstRecord();
- if (err != KErrNone)
- {
- _DBG_FILE("CWlanSettings::WriteSecondarySSIDL(): go to first record failed");
- // most likely KErrNotFound, something wrong with the URI parsing probably
- return err;
- }
- if(FeatureManager::FeatureSupported(KFeatureIdSapPolicyManagement))
- {
- if ( apEnforce )
- {
- ((CCommsDbProtectTableView*)iSecondaryView)->UnprotectRecord();
- }
- }
- retval = iSecondaryView->UpdateRecord();
- if( retval == KErrLocked )
- {
- _DBG_FILE("WriteSecondarySSIDL: UpdateRecord was locked.");
- TInt retry = KBeginTransRetryCount;
- while ( retry > 0 && retval == KErrLocked )
- {
- User::After(KBeginTransRetryDelay);
- _DBG_FILE("WriteSecondarySSIDL: Slept 1 second. Try again");
- retval = iSecondaryView->UpdateRecord();
- retry--;
- }
- }
- if( retval != KErrNone )
- {
- _DBG_FILE("WriteSecondarySSIDL: UpdateRecord was unsuccessful");
- }
- else
- {
- _DBG_FILE("WriteSecondarySSIDL: UpdateRecord was successful");
- }
- }
- if ( retval == KErrNone )
- {
- DBG_ARGS8(_S8("CWlanSettings::writesecondaryssids - WLAN_SEC_SSID_SCANNED_SSID uri: <%S> ad WLAN_SEC_SSID_USED_SSID : <%S>"), &aSettings.ScannedId, &aSettings.UsedId );
- iSecondaryView->WriteTextL(TPtrC(WLAN_SEC_SSID_SCANNED_SSID), aSettings.ScannedId);
- iSecondaryView->WriteTextL(TPtrC(WLAN_SEC_SSID_USED_SSID), aSettings.UsedId);
-
- retval = iSecondaryView->PutRecordChanges();
- if( retval == KErrLocked )
- {
- _DBG_FILE("WriteSecondarySSIDL: PutRecordChanges was locked.");
- TInt retry = KBeginTransRetryCount;
- while ( retry > 0 && retval == KErrLocked )
- {
- User::After(KBeginTransRetryDelay);
- _DBG_FILE("WriteSecondarySSIDL: Slept 1 second. Try again");
- retval = iSecondaryView->PutRecordChanges();
- retry--;
- }
- }
- if( retval != KErrNone )
- {
- _DBG_FILE("WriteSecondarySSIDL: PutRecordChanges was unsuccessful");
- }
- else
- {
- _DBG_FILE("WriteSecondarySSIDL: PutRecordChanges was successful");
- }
- }
-
- if(FeatureManager::FeatureSupported(KFeatureIdSapPolicyManagement))
- {
- if ( reLock )
- {
- TInt enError=KErrNone;
- TInt lockError = KErrNone;
- TRAP(lockError,enError = PerformLockWLANTablesL(ETrue));
- if ( iSecondaryView != NULL )
- {
- ((CCommsDbProtectTableView*)iSecondaryView)->ProtectRecord();
- }
- if ( enError != KErrNone ) // to remove warnings
- {
- enError = KErrNone;
- }
- }
- }
-
-
- // This makes sure that there will be no calling to GotoFirstRecord()
- // before secondaryview is reinitialized, (causes a panic if that would happen)
- delete iSecondaryView;
- iSecondaryView = NULL;
-
- if ( reLock&&apEnforce )
- {
- reLock = EFalse; // to get rid of warnings
- apEnforce = EFalse;
- }
-
- return retval;
-
- }
-
-TInt CWlanSettings::WriteEAPSettings( EAPSettings& aEapSettings)
- {
- TRAPD(err, iEapType->SetConfigurationL(aEapSettings));
- return err;
- }
-
-
-//-----------------------------------------------------------------------------
-// void CWlanSettings::ConnectToDatabaseL( )
-//-----------------------------------------------------------------------------
-void CWlanSettings::ConnectToDatabaseL( )
- {
- _DBG_FILE("CWlanSettings::ConnectToDatabaseL(): begin");
-
- if( !iTableView )
- {
- iTableView = iDatabase.OpenTableLC( TPtrC( WLAN_SERVICE ) );
-
- if( iTableView == NULL )
- {
- _DBG_FILE("CWlanSettings::ConnectToDatabaseL(): could not open table");
- User::Leave( KErrCouldNotConnect );
- }
-
- CleanupStack::Pop( iTableView ); //iTableView
- }
-
- _DBG_FILE("CWlanSettings::ConnectToDatabaseL(): end");
- }
-
-
-void CWlanSettings::GetEAPInterfaceL(const TInt aId, const TInt aTunnelingType, const TInt aType)
- {
- if ( aId < 0 )
- {
- // Illegal input
- User::Leave( KErrArgument );
- }
-
- if ( iEapType )
- {
- delete iEapType;
- iEapType = NULL;
- }
-
- TInt err = KErrNone;
- TUint8 expandedEapId[] = {0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-
- TBuf8<KExpandedEAPIdLength> cue;
-
- // First try loading EAP type using the expanded id and if that fails
- // try the 8-bit id. If that succeeds then set the flag so that subsequent
- // EAP method loads are always done using the 8-bit id.
- if ( iExpandedEAPTypeFieldsUsed )
- {
- _DBG_FILE("CWlanSettings::GetEAPInterfaceL(): iExpandedEAPTypeFieldsUsed == True.");
- // Set-up 64-bit expanded EAP id
- if ( ( aType == KMschapv2TypeId[7] ) || ( aType == KTtlspapTypeId[7] ) )
- {
- // This is plain MSCHAPv2. Set vendor ID correctly
- expandedEapId[1] = KMschapv2TypeId[1];
- expandedEapId[2] = KMschapv2TypeId[2];
- expandedEapId[3] = KMschapv2TypeId[3];
- }
-
- expandedEapId[KExpandedEAPIdLength - 1] = static_cast<TUint8> ( aType );
-
- cue.Copy( expandedEapId, KExpandedEAPIdLength );
-
- // Try loading EAP ECOM module
- TRAP( err, iEapType = CEapType::NewL( cue, ELan, aId ));
- if ( err != KErrNone )
- {
- _DBG_FILE("CWlanSettings::GetEAPInterfaceL(): Expanded EAP type loading failed. Trying old style.");
- // It failed. Try old style
- cue.Format( _L8("%d"), aType );
- iEapType = CEapType::NewL( cue, ELan, aId );
- _DBG_FILE("CWlanSettings::GetEAPInterfaceL(): Old style loading successful.");
- // Succeeded (because didn't leave). Set the flag so that subsequent trys
- // are directly using the old format.
- iExpandedEAPTypeFieldsUsed = EFalse;
- }
- }
- else
- {
- // Use the old 8-bit format
- _DBG_FILE("CWlanSettings::GetEAPInterfaceL(): iExpandedEAPTypeFieldsUsed == False.");
- cue.Format( _L8("%d"), aType );
- iEapType = CEapType::NewL( cue, ELan, aId );
- _DBG_FILE("CWlanSettings::GetEAPInterfaceL(): Old style loading successful.");
- }
-
- // Set tunneling type
- if (aTunnelingType != EAPSettings::EEapNone)
- {
- iEapType->SetTunnelingType(aTunnelingType);
- }
-}
-
-
-
-//-----------------------------------------------------------------------------
-// TInt CWlanSettings::GoToRecord( TUint32 aId )
-// Moves iTableView to point record whose id-number equals to aId
-//-----------------------------------------------------------------------------
-TInt CWlanSettings::GoToRecord( TUint32 aId )
-{
- _DBG_FILE("CWlanSettings::GoToRecord(): begin");
- DBG_ARGS(_S16("CWlanSettings::GoToRecord(): begin Search record id: <%D>"), aId );
-
- TInt err = iTableView->GotoFirstRecord( );
- if( err != KErrNone )
- {
- DBG_ARGS(_S16("CWlanSettings::GoToRecord(): end, GotoFirstRecord. err: <%D>"), err );
- return err;
- }
-
- TUint32 id = 0;
- TRAP( err, iTableView->ReadUintL( TPtrC(WLAN_SERVICE_ID), id ) );
- if( err != KErrNone )
- {
- DBG_ARGS(_S16("CWlanSettings::GoToRecord(): end, ReadUintL. err: <%D>"), err );
- return err;
- }
-
- while( aId != id )
- {
- err = iTableView->GotoNextRecord( );
- if( err != KErrNone )
- {
- DBG_ARGS(_S16("CWlanSettings::GoToRecord(): end, GotoNextRecord. err: <%D>"), err );
- return err;
- }
-
- TRAP( err, iTableView->ReadUintL( TPtrC(WLAN_SERVICE_ID), id ) );
-
- if( err == KErrNone )
- {
- DBG_ARGS(_S16("CWlanSettings::GoToRecord(): Found service id: <%D>"), id );
- }
- else
- {
- DBG_ARGS(_S16("CWlanSettings::GoToRecord(): end, ReadUintL next. err: <%D>"), err );
- return err;
- }
- }
-
- TRAP(err, SetSecondaryViewToRecordL(aId));
-
-
- DBG_ARGS(_S16("CWlanSettings::GoToRecord(): end. Final record id: <%D>"), id );
-
- return err;
- }
-
-
-
-void CWlanSettings::SetSecondaryViewToRecordL( TUint32 aId )
- {
- // optional secondarySSID
- if (iSecondaryView)
- {
- delete iSecondaryView;
- iSecondaryView = NULL;
- }
-
- // first open a view to secondary ssid table, with all the rows with service id
- // matching the wlan service id (count can be zero)
- iSecondaryView = iDatabase.OpenViewMatchingUintLC( TPtrC(WLAN_SECONDARY_SSID),
- TPtrC(WLAN_SEC_SSID_SERVICE_ID),
- aId);
- if( iSecondaryView == NULL )
- {
- // this should not happen in a normal situation
- User::Leave( KErrCouldNotConnect );
- }
- CleanupStack::Pop( iSecondaryView );
- }
-
-
-//-----------------------------------------------------------------------------
-// void CWlanSettings::GetDataFromRecordL( TWlanSettings* aWlanSettings )
-// Read settings from database to aWlanSettings structure
-//-----------------------------------------------------------------------------
-void CWlanSettings::GetDataFromRecordL( TWlanSettings* aWlanSettings )
- {
- _DBG_FILE("CWlanSettings::GetDataFromRecordL(): begin");
-
- TInt leavecode = 0;
-
- aWlanSettings->ServiceID = 0;
- aWlanSettings->ConnectionMode = 0;
- aWlanSettings->SSID = _L("");
- aWlanSettings->UsedSSID = _L("");
- aWlanSettings->ScanSSID = 0;
- aWlanSettings->WepKey1 = _L8("");
- aWlanSettings->WepKey2 = _L8("");
- aWlanSettings->WepKey3 = _L8("");
- aWlanSettings->WepKey4 = _L8("");
- aWlanSettings->WepIndex = 0;
- aWlanSettings->SecurityMode = EAllowUnsecure;
- aWlanSettings->WPAPreSharedKey = _L8("");
- aWlanSettings->UseWPAPSK = 0;
- aWlanSettings->EapList = _L("");
- aWlanSettings->AuthMode = 0;
-
- TRAP( leavecode, iTableView->ReadUintL( TPtrC( WLAN_SERVICE_ID ), aWlanSettings->ServiceID ) );
- if ( leavecode != KErrNone )
- {
- DBG_ARGS(_S16("CWlanSettings::GetDataFromRecordL(): WLAN_SERVICE_ID read error: <%D>"), leavecode );
- }
-
- TRAP( leavecode, iTableView->ReadUintL( TPtrC( WLAN_CONNECTION_MODE ), aWlanSettings->ConnectionMode ) );
- if ( leavecode != KErrNone )
- {
- DBG_ARGS(_S16("CWlanSettings::GetDataFromRecordL(): WLAN_CONNECTION_MODE read error: <%D>"), leavecode );
- }
-
- TRAP( leavecode, iTableView->ReadUintL( TPtrC( NU_WLAN_AUTHENTICATION_MODE ), aWlanSettings->AuthMode ) );
- if ( leavecode != KErrNone )
- {
- DBG_ARGS(_S16("CWlanSettings::GetDataFromRecordL(): NU_WLAN_AUTHENTICATION_MODE read error: <%D>"), leavecode );
- }
-
- TRAP( leavecode, iTableView->ReadUintL( TPtrC( WLAN_WEP_INDEX ), aWlanSettings->WepIndex ) );
- if ( leavecode != KErrNone )
- {
- DBG_ARGS(_S16("CWlanSettings::GetDataFromRecordL(): WLAN_WEP_INDEX read error: <%D>"), leavecode );
- }
-
- TRAP( leavecode, iTableView->ReadUintL( TPtrC( WLAN_SECURITY_MODE ), aWlanSettings->SecurityMode ) );
- if ( leavecode != KErrNone )
- {
- DBG_ARGS(_S16("CWlanSettings::GetDataFromRecordL(): WLAN_SECURITY_MODE read error: <%D>"), leavecode );
- }
-
- TRAP( leavecode, iTableView->ReadUintL( TPtrC( WLAN_ENABLE_WPA_PSK ), aWlanSettings->UseWPAPSK ) );
- if ( leavecode != KErrNone )
- {
- DBG_ARGS(_S16("CWlanSettings::GetDataFromRecordL(): WLAN_ENABLE_WPA_PSK read error: <%D>"), leavecode );
- }
-
- TBuf8<KCommsDbSvrMaxFieldLength> columnValue8;
- TRAP(leavecode, iTableView->ReadTextL( TPtrC(NU_WLAN_WEP_KEY1 ), columnValue8 ));
- if ( ( leavecode == KErrNone ) && ( columnValue8.Length() > 0 ) )
- {
- aWlanSettings->WepKey1 = columnValue8;
- }
- else
- {
- DBG_ARGS(_S16("CWlanSettings::GetDataFromRecordL(): NU_WLAN_WEP_KEY1 read error: <%D>"), leavecode );
- }
-
- TRAP(leavecode, iTableView->ReadTextL( TPtrC(NU_WLAN_WEP_KEY2 ), columnValue8 ));
- if ( ( leavecode == KErrNone ) && ( columnValue8.Length() > 0 ) )
- {
- aWlanSettings->WepKey2 = columnValue8;
- }
- else
- {
- DBG_ARGS(_S16("CWlanSettings::GetDataFromRecordL(): NU_WLAN_WEP_KEY2 read error: <%D>"), leavecode );
- }
-
- TRAP(leavecode, iTableView->ReadTextL( TPtrC(NU_WLAN_WEP_KEY3 ), columnValue8 ));
- if ( ( leavecode == KErrNone ) && ( columnValue8.Length() > 0 ) )
- {
- aWlanSettings->WepKey3 = columnValue8;
- }
- else
- {
- DBG_ARGS(_S16("CWlanSettings::GetDataFromRecordL(): NU_WLAN_WEP_KEY3 read error: <%D>"), leavecode );
- }
-
- TRAP(leavecode, iTableView->ReadTextL( TPtrC(NU_WLAN_WEP_KEY4 ), columnValue8 ));
- if ( ( leavecode == KErrNone ) && ( columnValue8.Length() > 0 ) )
- {
- aWlanSettings->WepKey4 = columnValue8;
- }
- else
- {
- DBG_ARGS(_S16("CWlanSettings::GetDataFromRecordL(): NU_WLAN_WEP_KEY4 read error: <%D>"), leavecode );
- }
-
- TBuf8<KMaxPSKLength> precolumnValue8;
- TBuf<KCommsDbSvrMaxFieldLength> columnValue;
-
- _DBG_FILE("CWlanSettings::GetDataFromRecordL(): Before getting WLAN_WPA_PRE_SHARED_KEY ");
- TRAP(leavecode, iTableView->ReadTextL( TPtrC(WLAN_WPA_PRE_SHARED_KEY ), precolumnValue8 ));
- DBG_ARGS(_S16("CWlanSettings::ReadTextL( TPtrC(WLAN_WPA_PRE_SHARED_KEY ),length of key: <%D>"), precolumnValue8.Length() );
- if ( ( leavecode == KErrNone ) && ( precolumnValue8.Length() > 0 ) )
- {
- aWlanSettings->WPAPreSharedKey = precolumnValue8;
- }
- else
- {
- DBG_ARGS(_S16("CWlanSettings::GetDataFromRecordL(): WLAN_WPA_PRE_SHARED_KEY read error: <%D>"), leavecode );
- }
-
- TRAP(leavecode, iTableView->ReadTextL( TPtrC(NU_WLAN_SSID ), columnValue ));
- if ( ( leavecode == KErrNone ) && ( columnValue.Length() > 0 ) )
- {
- aWlanSettings->SSID = columnValue;
- }
- else
- {
- DBG_ARGS(_S16("CWlanSettings::GetDataFromRecordL(): NU_WLAN_SSID read error: <%D>"), leavecode );
- }
-
- TRAP(leavecode, iTableView->ReadTextL( TPtrC(WLAN_USED_SSID ), columnValue ));
- if ( ( leavecode == KErrNone ) && ( columnValue.Length() > 0 ) )
- {
- aWlanSettings->UsedSSID = columnValue;
- _DBG_FILE("CWlanSettings::GetDataFromRecordL(): WLAN_USED_SSID reading ok");
- }
- else
- {
- DBG_ARGS(_S16("CWlanSettings::GetDataFromRecordL(): WLAN_USED_SSID read error: <%D>"), leavecode );
- }
-
- iTableView->ReadTextL( TPtrC(WLAN_USED_SSID), aWlanSettings->UsedSSID );
- _DBG_FILE("CWlanSettings::GetDataFromRecordL(): WLAN_USED_SSID");
-
- TRAP(leavecode, iTableView->ReadUintL( TPtrC(WLAN_SCAN_SSID ), aWlanSettings->ScanSSID ));
- if ( leavecode != KErrNone )
- {
- DBG_ARGS(_S16("CWlanSettings::GetDataFromRecordL(): WLAN_SCAN_SSID read error: <%D>"), leavecode );
- }
-
- TInt retval = iSecondaryView->GotoFirstRecord();
- if (retval == KErrNone)
- {
- aWlanSettings->SecondarySSIDsExisting = ETrue;
- }
- else
- {
- aWlanSettings->SecondarySSIDsExisting = EFalse;
- }
-
- // Try to read the old EAPList field
- HBufC* eapList = iTableView->ReadLongTextLC( TPtrC( WLAN_EAPS ) );
- if ( eapList->Length() > 0 )
- {
- // The old field was valid and there was content
- aWlanSettings->EapList = *eapList;
- }
- else
- {
- // Old list was invalid or empty. Try the new fields:
- // enabled EAP types
- TBuf8<KEAPListBufferSize> enabledTypes;
- TBuf8<KEAPListBufferSize> disabledTypes;
- iTableView->ReadTextL( TPtrC( WLAN_ENABLED_EAPS ), enabledTypes);
- iTableView->ReadTextL( TPtrC( WLAN_DISABLED_EAPS ), disabledTypes);
-
- // Calculate the number of EAP types altogether
- TUint numEapTypes = enabledTypes.Length() / KExpandedEAPIdLength;
- numEapTypes += disabledTypes.Length() / KExpandedEAPIdLength;
-
- if (numEapTypes > 0)
- {
- // One EAP type reserves maximum of 5 bytes: "+xxx,"
- HBufC* outputBuf = HBufC::NewLC( numEapTypes * KLengthOfOldStyleEAPListEntry );
-
- TPtr output = outputBuf->Des();
- _LIT( KFormat, "%03d" );
- for ( TInt i = (KExpandedEAPIdLength - 1) ; i < enabledTypes.Length() ; i += KExpandedEAPIdLength)
- {
-
- output.Append(TChar( '+' ));
- output.AppendFormat( KFormat, enabledTypes[i] );
- output.Append(TChar( ',' ));
- }
-
- for ( TInt i = (KExpandedEAPIdLength - 1) ; i < disabledTypes.Length() ; i += KExpandedEAPIdLength)
- {
- output.Append(TChar( '-' ));
- output.AppendFormat( KFormat, disabledTypes[i] );
- output.Append(TChar( ',' ));
- }
- // Strip the final ','
- output.Delete( output.Length() - 1, 1 );
-
- aWlanSettings->EapList = *outputBuf;
- CleanupStack::PopAndDestroy( outputBuf );
- }
- }
-
- CleanupStack::PopAndDestroy( eapList );
-
- _DBG_FILE("CWlanSettings::GetDataFromRecordL(): WLAN_EAPS");
-
-
- _DBG_FILE("CWlanSettings::GetDataFromRecordL(): end");
- }
-
-
-
-//-----------------------------------------------------------------------------
-// void CWlanSettings::GetSecondarySSIDListL(TUint32 aId, RArray<TSecondarySSID>& aSecondarySSIDs)
-// Fills the array with secondarySSIDs, which are associated with given WLANID
-//-----------------------------------------------------------------------------
-void CWlanSettings::GetSecondarySSIDListL(TUint32 aWlanId, RArray<TSecondarySSID>& aSecondarySSIDs)
- {
- if (iSecondaryView == NULL)
- {
- // views haven't been initialized, in case of incorrect usage
- User::Leave(KErrNotReady);
- }
-
- // set the view pointer into the first record
- TInt retval = iSecondaryView->GotoFirstRecord();
- if (retval != KErrNone)
- {
- return;
- }
-
- // check that given id matches the current rowset. If not, then reinitialize
- TUint32 id;
- TInt err(KErrNone);
- TRAP(err, iSecondaryView->ReadUintL( TPtrC(WLAN_SEC_SSID_SERVICE_ID ), id ));
- if (id != aWlanId)
- {
- SetSecondaryViewToRecordL(aWlanId);
- retval = iSecondaryView->GotoFirstRecord();
- }
-
- TBuf<KMaxTextLength> columnValue;
-
- while (retval == KErrNone)
- {
- TSecondarySSID ssid;
- TRAP(retval, iSecondaryView->ReadUintL( TPtrC(WLAN_SEC_SSID_ID ), ssid.Id ));
- TRAP(retval, iSecondaryView->ReadTextL( TPtrC(WLAN_SEC_SSID_SCANNED_SSID ), ssid.ScannedId ));
- TRAP(retval, iSecondaryView->ReadTextL( TPtrC(WLAN_SEC_SSID_USED_SSID ), ssid.UsedId ));
- aSecondarySSIDs.Append(ssid);
- retval = iSecondaryView->GotoNextRecord();
- }
- }
-
-
-
-
-//-----------------------------------------------------------------------------
-// void CWlanSettings::WriteDataToRecordL( TWlanSettings* aWlanSettings )
-// Writes settings to database from aWlanSettings structure
-//-----------------------------------------------------------------------------
-void CWlanSettings::WriteDataToRecordL( TWlanSettings* aWlanSettings )
- {
- _DBG_FILE("CWlanSettings::WriteDataToRecordL(): begin");
-
- iTableView->WriteUintL( TPtrC(WLAN_SERVICE_ID), aWlanSettings->ServiceID );
- iTableView->WriteUintL( TPtrC(WLAN_CONNECTION_MODE), aWlanSettings->ConnectionMode );
- iTableView->WriteUintL( TPtrC(WLAN_WEP_INDEX), aWlanSettings->WepIndex );
- iTableView->WriteUintL( TPtrC(WLAN_SECURITY_MODE), aWlanSettings->SecurityMode );
- iTableView->WriteUintL( TPtrC(WLAN_ENABLE_WPA_PSK), aWlanSettings->UseWPAPSK );
- iTableView->WriteUintL( TPtrC(NU_WLAN_AUTHENTICATION_MODE), aWlanSettings->AuthMode );
- iTableView->WriteTextL( TPtrC(NU_WLAN_SSID), aWlanSettings->SSID );
- iTableView->WriteTextL( TPtrC(WLAN_USED_SSID), aWlanSettings->UsedSSID );
- iTableView->WriteUintL( TPtrC(WLAN_SCAN_SSID), aWlanSettings->ScanSSID );
-
- iTableView->WriteTextL( TPtrC(NU_WLAN_WEP_KEY1), aWlanSettings->WepKey1 );
- iTableView->WriteTextL( TPtrC(NU_WLAN_WEP_KEY2), aWlanSettings->WepKey2 );
- iTableView->WriteTextL( TPtrC(NU_WLAN_WEP_KEY3), aWlanSettings->WepKey3 );
- iTableView->WriteTextL( TPtrC(NU_WLAN_WEP_KEY4), aWlanSettings->WepKey4 );
- iTableView->WriteUintL( TPtrC(WLAN_WEP_KEY1_FORMAT ), 1 ); // 0 = Eascii, 1 = EHexadecimal
- iTableView->WriteUintL( TPtrC(WLAN_WEP_KEY2_FORMAT ), 1 );
- iTableView->WriteUintL( TPtrC(WLAN_WEP_KEY3_FORMAT ), 1 );
- iTableView->WriteUintL( TPtrC(WLAN_WEP_KEY4_FORMAT ), 1 );
-
- iTableView->WriteTextL( TPtrC(WLAN_WPA_PRE_SHARED_KEY), aWlanSettings->WPAPreSharedKey );
- iTableView->WriteUintL( TPtrC(WLAN_WPA_KEY_LENGTH), aWlanSettings->WPAPreSharedKey.Length() );
-
- // Expanded EAP types in use. Write the eap list to the new columns.
-
- // generate appropriate entries in the new enabled and disabled list,
- // overwriting those values
-
- // count the + and - signs to determine the size of enabled and
- // disabled descriptors
- TLex lex( aWlanSettings->EapList );
-
- TInt numPlus = 0;
- TInt numMinus = 0;
- TChar ch;
- while ( !lex.Eos() )
- {
- ch = lex.Get();
- if ( ch == '+' ) ++numPlus;
- else if ( ch == '-' ) ++numMinus;
- }
-
- // each entry consumes 8 bytes in binary format
- HBufC8* enabledEAPPlugin = HBufC8::NewL( 8 * numPlus );
- CleanupStack::PushL( enabledEAPPlugin );
-
- HBufC8* disabledEAPPlugin = HBufC8::NewL( 8 * numMinus );
- CleanupStack::PushL( disabledEAPPlugin );
-
- lex.Assign( aWlanSettings->EapList );
-
- while ( !lex.Eos() )
- {
- // beginning of implementation UID
- TInt16 implUid = 0;
-
- if ( lex.Val( implUid ) != KErrNone || !implUid )
- {
- // if the old string is corrupted, null out both lists
- enabledEAPPlugin->Des().Zero();
- disabledEAPPlugin->Des().Zero();
- break;
- }
-
- // append it to the appropriate list ('+' enabled, '-' disabled)
- _LIT8( KPadding, "\xFE\0\0\0\0\0\0" );
- _LIT8( KMsChapV2Padding, "\xFE\xFF\xFF\xFF\0\0\0");
- const TInt KPlainMsChapV2ImplUid = 99;
- const TInt KTtlspapImplUid = 98;
-
- // Check whether eap is inluded or not +/-
- if ( implUid > 0 )
- {
- // check whether plain mschap or ttlspap in question
- if ( Abs( implUid ) == KPlainMsChapV2ImplUid || Abs( implUid ) == KTtlspapImplUid )
- {
- enabledEAPPlugin->Des().Append( KMsChapV2Padding );
- }
- else
- {
- enabledEAPPlugin->Des().Append( KPadding );
- }
- enabledEAPPlugin->Des().Append( Abs( implUid ) );
- }
- else if (implUid < 0 )
- {
- // check whether plain mschap or ttlspap in question
- if ( Abs( implUid ) == KPlainMsChapV2ImplUid || Abs( implUid ) == KTtlspapImplUid )
- {
- disabledEAPPlugin->Des().Append( KMsChapV2Padding );
- }
- else
- {
- disabledEAPPlugin->Des().Append( KPadding );
- }
- disabledEAPPlugin->Des().Append( Abs( implUid ) );
- }
-
- // swallow the delimiter (',')
- lex.Get();
- }
-
-
-
- iTableView->WriteTextL( TPtrC( WLAN_ENABLED_EAPS ),
- enabledEAPPlugin?
- (const TDesC8&)*enabledEAPPlugin:
- (const TDesC8&)KNullDesC8 );
-
- iTableView->WriteTextL( TPtrC( WLAN_DISABLED_EAPS ),
- disabledEAPPlugin?
- (const TDesC8&)*disabledEAPPlugin:
- (const TDesC8&)KNullDesC8 );
- CleanupStack::PopAndDestroy( disabledEAPPlugin );
- CleanupStack::PopAndDestroy( enabledEAPPlugin );
-
- _DBG_FILE("CWlanSettings::WriteDataToRecordL(): end");
- }
-
-//-----------------------------------------------------------------------------
-// TInt CWlanSettings::RecordExists( TUint32 aLuid )
-// Returns ETrue if record exists in database
-//-----------------------------------------------------------------------------
-TInt CWlanSettings::RecordExists( TUint32 aLuid )
- {
- _DBG_FILE("CWlanSettings::RecordExists(): begin");
-
- TInt err = KErrNone;
- TRAP( err, ConnectToDatabaseL() );
-
- // If the connection went ok, then we can go to the record
- if( err == KErrNone )
- {
- err = GoToRecord( aLuid );
- }
-
- if( err == KErrNone )
- {
- DBG_ARGS(_S16("CWlanSettings::RecordExists(): end. GoToRecord OK err: <%D>"), err );
- return ETrue;
- }
- else
- {
- DBG_ARGS(_S16("CWlanSettings::RecordExists(): end. GoToRecord error err: <%D>"), err );
- return err;
- }
- }
-
-//-----------------------------------------------------------------------------
-// void CWlanSettings::InitialiseRecordL( )
-// Inserts mandatory values for commsdb
-//-----------------------------------------------------------------------------
-void CWlanSettings::InitialiseRecordL( )
- {
- _DBG_FILE("CWlanSettings::InitialiseRecordL(): begin");
-
- iTableView->WriteUintL( TPtrC(WLAN_WPA_KEY_LENGTH), 0 );
- iTableView->WriteUintL( TPtrC(NU_WLAN_AUTHENTICATION_MODE), 0 );
-
- _DBG_FILE("CWlanSettings::InitialiseRecordL(): end");
- }
-
-
-TInt CWlanSettings::InstalledEAPsL(CBufBase& aEAPList)
- {
- _DBG_FILE("CWlanSettings::InstalledEAPsL(): begin");
-
- RImplInfoPtrArray ecomInfoArray;
- REComSession::ListImplementationsL(KEapTypeInterfaceUid, ecomInfoArray);
-
- TUint eapId( 0 );
-
- // First sort the EAPIds
- for (TInt i = 0; i < ecomInfoArray.Count(); i++)
- {
- if ( ecomInfoArray[i]->DataType().Length() == KExpandedEAPIdLength)
- {
- // The EAP ID is in expanded type format
- // Only handle the vendor type of 0
- if ( (ecomInfoArray[i]->DataType()[1] != 0
- || ecomInfoArray[i]->DataType()[2] != 0
- || ecomInfoArray[i]->DataType()[3] != 0 )
- && ( ( ecomInfoArray[i]->DataType()[7] != KMschapv2TypeId[7] ) &&
- ( ecomInfoArray[i]->DataType()[7] != KTtlspapTypeId[7] ) ) )
- {
- // This is some other vendor type than IETF
- continue;
- }
- eapId = ecomInfoArray[i]->DataType()[7];
- _DBG_FILE("CWlanSettings::InstalledEAPsL(): Expanded EAP id found.");
- }
- else
- {
- // The EAP ID is in old 8-bit format (as string)
- TLex8 lex( ecomInfoArray[i]->DataType() );
- if ( lex.Val( eapId ) != KErrNone )
- {
- // Unsupported format. Ignore this.
- _DBG_FILE("CWlanSettings::InstalledEAPsL(): Unsupported EAP id found.");
- continue;
- }
- _DBG_FILE("CWlanSettings::InstalledEAPsL(): Old style EAP id found.");
- }
-
- if ( !CEapType::IsDisallowedOutsidePEAP( *ecomInfoArray[i] ) )
- {
- aEAPList.InsertL(aEAPList.Size(), KNSmlWLanEapId); // EAPId
- TBuf8<3> cue; // Max EAPId == 255
- cue.AppendNumFixedWidth( eapId, EDecimal, 3 );
- aEAPList.InsertL(aEAPList.Size(), cue);
- aEAPList.InsertL(aEAPList.Size(), KSlash);
- }
-
- // Check if the method is allowed inside PEAP
- if ( !CEapType::IsDisallowedInsidePEAP( *ecomInfoArray[i] ) )
- {
- aEAPList.InsertL(aEAPList.Size(), KNSmlWLanEapId); // EAPId
- TBuf8<3> cue; // Max EAPId == 255
- cue.AppendNumFixedWidth( eapId, EDecimal, 3 );
- aEAPList.InsertL(aEAPList.Size(), cue);
- aEAPList.InsertL(aEAPList.Size(), KDash);
- cue.Zero();
- cue.AppendNumFixedWidth( KEapPeapTypeId[7], EDecimal, 3 );
- aEAPList.InsertL(aEAPList.Size(), cue);
- aEAPList.InsertL(aEAPList.Size(), KSlash);
-
-#ifdef FF_WLAN_EXTENSIONS
- // same additions for EAP-FAST
- aEAPList.InsertL(aEAPList.Size(), KNSmlWLanEapId); // EAPId
- cue.Zero(); // Max EAPId == 255
- cue.AppendNumFixedWidth( eapId, EDecimal, 3 );
- aEAPList.InsertL(aEAPList.Size(), cue);
- aEAPList.InsertL(aEAPList.Size(), KDash);
- cue.Zero();
- cue.AppendNumFixedWidth( KEapFastTypeId[7], EDecimal, 3 );
- aEAPList.InsertL(aEAPList.Size(), cue);
- aEAPList.InsertL(aEAPList.Size(), KSlash);
-#endif
- }
- // Check if the method is allowed inside TTLS
- if ( !CEapType::IsDisallowedInsideTTLS( *ecomInfoArray[i] ) )
- {
- aEAPList.InsertL(aEAPList.Size(), KNSmlWLanEapId); // EAPId
- TBuf8<3> cue; // Max EAPId == 255
- cue.AppendNumFixedWidth( eapId, EDecimal, 3 );
- aEAPList.InsertL(aEAPList.Size(), cue);
- aEAPList.InsertL(aEAPList.Size(), KDash);
- cue.Zero();
- cue.AppendNumFixedWidth( KEapTtlsTypeId[7], EDecimal, 3 );
- aEAPList.InsertL(aEAPList.Size(), cue);
- aEAPList.InsertL(aEAPList.Size(), KSlash);
- }
- }
- // ECOM array is no longer needed.
- ecomInfoArray.ResetAndDestroy();
-
- // Cut the last slash
- aEAPList.ResizeL( aEAPList.Size() -1);
-
- _DBG_FILE("CWlanSettings::InstalledEAPsL(): end");
- return KErrNone;
- }
-
-
-
-//-----------------------------------------------------------------------------
-// TBool CWlanSettings::CheckEnforcementL( )
-// Checks if wlan enforcement is On or Off
-//-----------------------------------------------------------------------------
- TBool CWlanSettings::CheckEnforcementL()
- {
- CSettingEnforcementInfo* info = CSettingEnforcementInfo::NewL();
- CleanupStack::PushL(info);
- TBool enforceWLANActive ( EFalse );
- User::LeaveIfError(info->EnforcementActive(EWLANEnforcement, enforceWLANActive));
- CleanupStack::PopAndDestroy(info);
- return ( enforceWLANActive) ;
- }
-
-//-----------------------------------------------------------------------------
-// TBool CWlanSettings::CheckAPEnforcementL( )
-// Checks if AP enforcement is On or Off
-//-----------------------------------------------------------------------------
-
-TBool CWlanSettings::CheckAPEnforcementL()
- {
- CSettingEnforcementInfo* info = CSettingEnforcementInfo::NewL();
- CleanupStack::PushL(info);
- TBool enforceAPActive ( EFalse );
- User::LeaveIfError(info->EnforcementActive(EAPEnforcement, enforceAPActive));
- CleanupStack::PopAndDestroy(info);
- return ( enforceAPActive) ;
- }
-//-----------------------------------------------------------------------------
-// TInt CWlanSettings::PerformLockWLANTablesL( )
-// Locks or unlocks the wlan tables depending on the
-// aProtect value
-//-----------------------------------------------------------------------------
- TInt CWlanSettings::PerformLockWLANTablesL(TBool aProtect)
- {
-
- _DBG_FILE("CWlanSettings::PerformLockWLANTablesL(): BEGIN ");
- CCommsDatabaseProtect* dbprotect = CCommsDatabaseProtect::NewL();
- CleanupStack::PushL(dbprotect);
- RArray<TPtrC> wlanTableList;
- CleanupClosePushL( wlanTableList );
- TBuf<KCommsDbSvrMaxFieldLength> serviceType;
- TBool apEnforce = EFalse;
- TInt err = KErrNone;
-
- TRAP_IGNORE( apEnforce=CheckAPEnforcementL() );
- if(apEnforce)
- {
- _DBG_FILE("CWlanSettings::PerformLockWLANTablesL(): AP enforcement is TRUE");
- wlanTableList.AppendL( TPtrC( WAP_ACCESS_POINT ) );
- wlanTableList.AppendL( TPtrC( WAP_IP_BEARER ) );
- wlanTableList.AppendL( TPtrC( IAP ) );
- //condition when only ap is enforced and not wlan then its not
- //necessary to add wlanservice table
- RDbRowSet::TAccess checkAccessType;
- checkAccessType = dbprotect->GetTableAccessL(TPtrC(WLAN_DEVICE_SETTINGS));
- switch(checkAccessType)
- {
- case RDbRowSet::EReadOnly :
- {
- wlanTableList.AppendL( TPtrC(WLAN_SERVICE) );
- wlanTableList.AppendL(TPtrC(WLAN_SECONDARY_SSID) );
- }
- default :
- {
- break;
- }
- }
-
- }
- else
- {
- _DBG_FILE("CWlanSettings::PerformLockWLANTablesL() Only wlan enforcement is ON");
- wlanTableList.AppendL( TPtrC(WLAN_SERVICE) );
- wlanTableList.AppendL(TPtrC(WLAN_SECONDARY_SSID) );
- }
-
- iDatabase.CommitTransaction();
-
- for ( TInt i( 0 ); i < wlanTableList.Count(); i++ )
- {
- if(!aProtect)
- {
- err = dbprotect->UnProtectTable( wlanTableList[ i ] );
- DBG_ARGS(_S16("CWlanSettings::PerformLockWLANTablesL(): Unprotect error %D"), err);
- //Check if current AP is locked , if yes , unprotect
- // lock = EFalse;
- }
- else
- {
- err = dbprotect->ProtectTable( wlanTableList[ i ] );
- //Check if current ServiceID is not locked , if yes , protect
- // lock = ETrue;
- }
- } //for loop
-
- CleanupStack::PopAndDestroy(&wlanTableList);
- CleanupStack::PopAndDestroy( dbprotect );
- CCommsDatabase* commsDataBase = CCommsDatabase::NewL();
- CleanupStack::PushL( commsDataBase );
-
- // Open the IAP from IAP Table and protect
-
- TUint32 apIAPID = 0;
- CCommsDbTableView* iapViews = commsDataBase->OpenViewMatchingUintLC(TPtrC(IAP),
- TPtrC(IAP_SERVICE),
- iServiceID);
- err = iapViews->GotoFirstRecord();
- // Service ID can be same for GPRS or WLAN, hence check service type and get the iAPID
- while (err == KErrNone )
- {
- iapViews->ReadTextL(TPtrC(IAP_SERVICE_TYPE), serviceType);
- if(serviceType == TPtrC(LAN_SERVICE))
- {
- iapViews->ReadUintL(TPtrC(COMMDB_ID), apIAPID);
- DBG_ARGS(_S16("CWlanSettings::PerformLockWLANTablesL(): IAPId %D"), apIAPID);
- break;
- }
- err = iapViews->GotoNextRecord();
- }
-
- //iapViews->ReadUintL(TPtrC(COMMDB_ID), apIAPID);
- DBG_ARGS(_S16("CWlanSettings::PerformLockWLANTablesL(): end. IAP ID being locked %d "), apIAPID );
- if(err == KErrNone)
- {
- CCommsDbTableView* iapUpdate = commsDataBase->OpenViewMatchingUintLC(TPtrC(IAP),TPtrC(COMMDB_ID),apIAPID);
- TInt iapExists = iapUpdate->GotoFirstRecord();
-
- if(!aProtect)
- {
- ((CCommsDbProtectTableView*)iapViews)->UnprotectRecord();
- if (iapExists)
- {
- ((CCommsDbProtectTableView*)iapUpdate)->UnprotectRecord();
- }
- }
- else
- {
- ((CCommsDbProtectTableView*)iapViews)->ProtectRecord();
- if (iapExists)
- {
- ((CCommsDbProtectTableView*)iapUpdate)->ProtectRecord();
- }
- }
- CleanupStack::PopAndDestroy(); // iapUpdate
- }
-
- CleanupStack::PopAndDestroy( iapViews );
- CleanupStack::PopAndDestroy( commsDataBase );
-
- iDatabase.BeginTransaction();
- return err;
- }
-
-