wlan_bearer/wlanengine/wlan_symbian/wlanengine_symbian_3.1/src/wlanscaninfoimpl.cpp
changeset 0 c40eb8fe8501
--- /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 <e32std.h>
+#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