wlan_bearer/wlanldd/wlan_common/umac_common/src/UmacWsaScan.cpp
changeset 0 c40eb8fe8501
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wlan_bearer/wlanldd/wlan_common/umac_common/src/UmacWsaScan.cpp	Tue Feb 02 02:03:13 2010 +0200
@@ -0,0 +1,169 @@
+/*
+* Copyright (c) 2002-2007 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:   Implementation of the WlanWsaScan class
+*
+*/
+
+/*
+* %version: 15 %
+*/
+
+#include "config.h"
+#include "UmacWsaScan.h"
+#include "UmacContextImpl.h"
+
+#ifndef NDEBUG 
+const TInt8 WlanWsaScan::iName[] = "wsa-scan";
+#endif
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+//
+WlanWsaScan::~WlanWsaScan() 
+    {
+    iChannels = NULL;
+    iSsid = NULL;    
+    }
+
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+//
+void WlanWsaScan::Entry( WlanContextImpl& aCtxImpl )
+    {
+    // mark WSA cmd active
+    aCtxImpl.ActivateWsaCmd();
+
+    OsTracePrint( KWsaCmdStateDetails, 
+        (TUint8*)("UMAC: WlanWsaScan::Entry: iMaxTransmitRate: 0x%08x"), 
+        iMaxTransmitRate );
+    OsTracePrint( KWsaCmdStateDetails, 
+        (TUint8*)("UMAC: WlanWsaScan::Entry: iScanType: %d"), iScanType );
+    OsTracePrint( KWsaCmdStateDetails, 
+        (TUint8*)("UMAC: WlanWsaScan::Entry: iNumOfProbeRequests: %d"),  
+        iNumOfProbeRequests );
+    OsTracePrint( KWsaCmdStateDetails, 
+        (TUint8*)("UMAC: WlanWsaScan::Entry: iSplitScan: %d"), iSplitScan );
+    OsTracePrint( KWsaCmdStateDetails, 
+        (TUint8*)("UMAC: WlanWsaScan::Entry: iNumOfSSID: %d"), iNumOfSSID );
+
+#ifndef NDEBUG 
+    if ( iNumOfSSID )
+        {
+        TUint8 ssidTraceBuf[KMaxSSIDLength + 1]; // + 1 for NULL termination
+
+        OsTracePrint( KWsaCmdStateDetails, 
+            (TUint8*)("UMAC: WlanWsaScan::Entry: SSIDs:") );
+
+        const WHA::SSSID* ssid_end = iSsid + iNumOfSSID;     
+
+        for ( const WHA::SSSID* ssid_ptr = iSsid 
+            ; ssid_ptr != ssid_end ; ++ssid_ptr )
+            {
+            // trace the SSIDs 
+        
+            os_memset( ssidTraceBuf, 0, sizeof( ssidTraceBuf ) );
+            os_memcpy( ssidTraceBuf, ssid_ptr->iSSID, ssid_ptr->iSSIDLength );
+            
+            OsTracePrint( KWsaCmdStateDetails, (TUint8*)
+                ("UMAC: WlanWsaScan::Entry: SSID length: %d, SSID:"),
+                ssid_ptr->iSSIDLength );
+            OsTracePrint( KWsaCmdStateDetails, ssidTraceBuf );
+            }
+        }
+#endif // !NDEBUG 
+
+    OsTracePrint( KWsaCmdState, (TUint8*)
+        ("UMAC: WHA-CMD-Scan") );
+            
+    // execute the command
+    aCtxImpl.Wha().Scan( 
+        iMaxTransmitRate, 
+        iBand,
+        iNumOfChannels,
+        iChannels, 
+        iScanType, 
+        iNumOfProbeRequests, 
+        iSplitScan, 
+        iNumOfSSID, 
+        iSsid );
+    }
+
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+//
+void WlanWsaScan::Set(             
+    WlanContextImpl& /*aCtxImpl*/,
+    TUint32 aMaxTransmitRate, 
+    WHA::TBand aBand,
+    TUint8 aNumOfChannels,
+    const WHA::SChannels* aChannels, 
+    WHA::TScanType aScanType,
+    TUint8 aNumOfProbeRequests,
+    TBool aSplitScan,
+    TUint8 aNumOfSSID,
+    const WHA::SSSID* aSSID )
+    {
+    iMaxTransmitRate = aMaxTransmitRate;
+    iBand = aBand;
+    iNumOfChannels = aNumOfChannels;
+    iChannels = aChannels;
+    iScanType = aScanType;
+    iNumOfProbeRequests = aNumOfProbeRequests;
+    iSplitScan = aSplitScan;
+    iNumOfSSID = aNumOfSSID;
+    iSsid = aSSID;
+    }
+
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+//
+void WlanWsaScan::CommandResponse( 
+    WlanContextImpl& aCtxImpl, 
+    WHA::TCommandId aCommandId, 
+    WHA::TStatus aStatus,
+    const WHA::UCommandResponseParams& aCommandResponseParams )
+    {
+    OsTracePrint( KWsaCmdState, 
+        (TUint8*)("UMAC* WlanWsaScan::CommandResponse()") );    
+
+    if ( aCommandId == WHA::EScanCommandResponse )
+        {
+        TraverseToHistoryState( aCtxImpl, 
+            aCommandId, aStatus, aCommandResponseParams );           
+        }
+    else
+        {
+        OsTracePrint( KErrorLevel, 
+            (TUint8*)("UMAC: aCommandId: %d"), aCommandId );
+        OsAssert( (TUint8*)("UMAC * panic"), (TUint8*)(WLAN_FILE), __LINE__ );
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+//
+#ifndef NDEBUG 
+const TInt8* WlanWsaScan::GetStateName( TUint8& aLength ) const
+    {
+    aLength = sizeof( iName );
+    return iName;
+    }
+#endif