diff -r 000000000000 -r c40eb8fe8501 wlan_bearer/wlanengine/wlan_symbian/wlanengine_symbian_3.1/src/wlanscaninfoimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wlan_bearer/wlanengine/wlan_symbian/wlanengine_symbian_3.1/src/wlanscaninfoimpl.cpp Tue Feb 02 02:03:13 2010 +0200 @@ -0,0 +1,327 @@ +/* +* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: Scan info +* +*/ + + +// INCLUDE FILES +#include +#include "gendebug.h" +#include "genscaninfo.h" +#include "wlanscaninfoimpl.h" + +// ================= MEMBER FUNCTIONS ======================= + +// C++ default constructor can NOT contain any code, that +// might leave. +// +CWlanScanInfoImpl::CWlanScanInfoImpl() + { + TraceDump( INFO_LEVEL, ( _L( "CWlanScanInfoImpl::CWlanScanInfoImpl()" ) ) ); + } + +// Symbian 2nd phase constructor can leave. +void CWlanScanInfoImpl::ConstructL() + { + TraceDump( INFO_LEVEL, ( _L( "CWlanScanInfoImpl::ConstructL()" ) ) ); + + iScanInfo = new(ELeave) ScanInfo( iScanList ); + } + +// Static constructor. +CWlanScanInfoImpl* CWlanScanInfoImpl::NewL() + { + TraceDump( INFO_LEVEL, ( _L( "CWlanScanInfoImpl::NewL()" ) ) ); + + CWlanScanInfoImpl* self = new (ELeave) CWlanScanInfoImpl; + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// Destructor +CWlanScanInfoImpl::~CWlanScanInfoImpl() + { + TraceDump( INFO_LEVEL, ( _L( "CWlanScanInfoImpl::~CWlanScanInfoImpl()" ) ) ); + delete iScanInfo; + } + +// --------------------------------------------------------- +// CWlanScanInfoImpl::Size +// --------------------------------------------------------- +// +TUint16 CWlanScanInfoImpl::Size() const + { + return iScanInfo->Size(); + } + +// --------------------------------------------------------- +// CWlanScanInfoImpl::First +// --------------------------------------------------------- +// +const TWlanScanInfoFrame* CWlanScanInfoImpl::First() + { + return iScanInfo->First(); + } + +// --------------------------------------------------------- +// CWlanScanInfoImpl::Next +// --------------------------------------------------------- +// +const TWlanScanInfoFrame* CWlanScanInfoImpl::Next() + { + return iScanInfo->Next(); + } + +// --------------------------------------------------------- +// CWlanScanInfoImpl::Current +// --------------------------------------------------------- +// +const TWlanScanInfoFrame* CWlanScanInfoImpl::Current() const + { + return iScanInfo->Current(); + } + +// --------------------------------------------------------- +// CWlanScanInfoImpl::IsDone +// --------------------------------------------------------- +// +TBool CWlanScanInfoImpl::IsDone() const + { + return iScanInfo->IsDone(); + } + +// --------------------------------------------------------- +// CWlanScanInfoImpl::RXLevel +// --------------------------------------------------------- +// +TUint8 CWlanScanInfoImpl::RXLevel() const + { + TUint8 rssiValue = 110 - ( iScanInfo->RXLevel() / 2 ); + TraceDump( INFO_LEVEL, ( _L( "CWlanScanInfoImpl::RXLevel(): (RCP, RSS) == (%u, %u )" ), iScanInfo->RXLevel(), rssiValue ) ); + return rssiValue; + } + +// --------------------------------------------------------- +// CWlanScanInfoImpl::Bssid +// --------------------------------------------------------- +// +void CWlanScanInfoImpl::Bssid( TWlanBssid& aBssid ) const + { + TMacAddress bssid={0}; + iScanInfo->BSSID( bssid.iMacAddress ); + aBssid.Copy( &bssid.iMacAddress[0], KMacAddressLength ); + } + +// --------------------------------------------------------- +// CWlanScanInfoImpl::BeaconInterval +// --------------------------------------------------------- +// +TUint16 CWlanScanInfoImpl::BeaconInterval() const + { + return iScanInfo->BeaconInterval(); + } + +// --------------------------------------------------------- +// CWlanScanInfoImpl::Capability +// --------------------------------------------------------- +// +TUint16 CWlanScanInfoImpl::Capability() const + { + return iScanInfo->Capability(); + } + +// --------------------------------------------------------- +// CWlanScanInfoImpl::SecurityMode +// Status : Draft +// --------------------------------------------------------- +// +TWlanConnectionSecurityMode CWlanScanInfoImpl::SecurityMode() const + { + TWlanConnectionSecurityMode securityMode; + switch( iScanInfo->SecurityMode() ) + { + case WlanSecurityModeWep: + securityMode = EWlanConnectionSecurityWep; + break; + case WlanSecurityMode802_1x: // Fallthrough on purpose + case WlanSecurityModeWapi: // Fallthrough on purpose + case WlanSecurityModeWapiPsk: + securityMode = EWlanConnectionSecurity802d1x; + break; + case WlanSecurityModeWpaEap: // Fallthrough on purpose + case WlanSecurityModeWpa2Eap: + securityMode = EWlanConnectionSecurityWpa; + break; + case WlanSecurityModeWpaPsk: // Fallthrough on purpose + case WlanSecurityModeWpa2Psk: + securityMode = EWlanConnectionSecurityWpaPsk; + break; + default: + securityMode = EWlanConnectionSecurityOpen; + break; + } + return securityMode; + } + +// --------------------------------------------------------- +// CWlanScanInfoImpl::InformationElement +// --------------------------------------------------------- +// +TInt CWlanScanInfoImpl::InformationElement( TUint8 aIE, + TUint8& aLength, + const TUint8** aData ) + { + return ConvertErrorCode( iScanInfo->InformationElement( aIE, aLength, aData ) ); + } + +// --------------------------------------------------------- +// CWlanScanInfoImpl::WpaIE +// --------------------------------------------------------- +// +TInt CWlanScanInfoImpl::WpaIE( TUint8& aLength, + const TUint8** aData ) + { + return ConvertErrorCode( iScanInfo->WpaIE( aLength, aData ) ); + } + +// --------------------------------------------------------- +// CWlanScanInfoImpl::FirstIE +// --------------------------------------------------------- +// +TInt CWlanScanInfoImpl::FirstIE( TUint8& aIE, + TUint8& aLength, + const TUint8** aData ) + { + return ConvertErrorCode( iScanInfo->FirstIE( aIE, aLength, aData ) ); + } + +// --------------------------------------------------------- +// CWlanScanInfoImpl::NextIE +// --------------------------------------------------------- +// +TInt CWlanScanInfoImpl::NextIE( TUint8& aIE, + TUint8& aLength, + const TUint8** aData ) + { + return ConvertErrorCode( iScanInfo->NextIE( aIE, aLength, aData ) ); + } + +// --------------------------------------------------------- +// CWlanScanInfoImpl::GetInternalList +// --------------------------------------------------------- +// +ScanList& CWlanScanInfoImpl::GetInternalList() + { + return iScanList; + } + +// --------------------------------------------------------- +// CWlanScanInfoImpl::UpdateResults +// --------------------------------------------------------- +// +TInt CWlanScanInfoImpl::UpdateResults() + { + ScanInfo* info = new ScanInfo( iScanList ); + if ( !info ) + { + return KErrNoMemory; + } + + delete iScanInfo; + iScanInfo = info; + + return KErrNone; + } + +// --------------------------------------------------------- +// CWlanScanInfoImpl::IsProtectedSetupSupported +// --------------------------------------------------------- +// +TBool CWlanScanInfoImpl::IsProtectedSetupSupported() + { + return (iScanInfo->IsProtectedSetupSupported() ? ETrue : EFalse); + } + +// --------------------------------------------------------- +// CWlanScanInfoImpl::ExtendedSecurityMode +// --------------------------------------------------------- +// +TWlanConnectionExtentedSecurityMode CWlanScanInfoImpl::ExtendedSecurityMode() const + { + TWlanConnectionExtentedSecurityMode securityMode; + switch( iScanInfo->SecurityMode() ) + { + case WlanSecurityModeWep: + /** + * It's impossible to determine whether the AP requires open or shared + * authentication based on scan results, assume open. + */ + securityMode = EWlanConnectionExtentedSecurityModeWepOpen; + break; + case WlanSecurityMode802_1x: + securityMode = EWlanConnectionExtentedSecurityMode802d1x; + break; + case WlanSecurityModeWpaEap: + securityMode = EWlanConnectionExtentedSecurityModeWpa; + break; + case WlanSecurityModeWpa2Eap: + securityMode = EWlanConnectionExtentedSecurityModeWpa2; + break; + case WlanSecurityModeWpaPsk: + securityMode = EWlanConnectionExtentedSecurityModeWpaPsk; + break; + case WlanSecurityModeWpa2Psk: + securityMode = EWlanConnectionExtentedSecurityModeWpa2Psk; + break; + case WlanSecurityModeWapi: + securityMode = EWlanConnectionExtentedSecurityModeWapi; + break; + case WlanSecurityModeWapiPsk: + securityMode = EWlanConnectionExtentedSecurityModeWapiPsk; + break; + default: + securityMode = EWlanConnectionExtentedSecurityModeOpen; + break; + } + return securityMode; + } + +// --------------------------------------------------------- +// CWlanScanInfoImpl::ConvertErrorCode +// --------------------------------------------------------- +// +TInt CWlanScanInfoImpl::ConvertErrorCode( TInt aCode ) const + { + TInt errorCode( KErrGeneral ); + + switch( aCode ) + { + case WlanScanError_Ok: + { + errorCode = KErrNone; + break; + } + case WlanScanError_IeNotFound: + { + errorCode = KErrNotFound; + break; + } + } + return errorCode; + } + +// End of File