Revision: 201002 RCL_3 PDK_3.0.h
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 19 Feb 2010 23:55:42 +0200
branchRCL_3
changeset 8 c2bc3f8c7777
parent 4 107412708b22
child 10 dff6ebfd236f
Revision: 201002 Kit: 201007
hotspotfw/hsbrowser/src/hsbrowserloadeventobserver.cpp
hotspotfw/hsclient/src/hssmgmtscaninfoimpl.cpp
hotspotfw/hsserver/inc/802dot11.h
hotspotfw/hsserver/inc/algorithm.h
hotspotfw/hsserver/inc/hotspotclientserver.h
hotspotfw/hsserver/inc/hssscanoffsets.h
hotspotfw/hsserver/inc/pack.h
hotspotfw/hsserver/src/hotspotsession.cpp
hotspotfw/hsserver/src/hssiapsettingshandler.cpp
wlanutilities/wlansniffer/aiplugin/data/10281cae.rss
wlanutilities/wlansniffer/aiplugin/inc/wsfaiplugin.h
wlanutilities/wlansniffer/aiplugin/src/wsfaiplugin.cpp
wlanutilities/wlansniffer/engine/server/inc/wsfwlanscanner.h
wlanutilities/wlansniffer/engine/server/src/wsfwlanscanner.cpp
wlanutilities/wlansniffer/mainapplication/inc/wsfmainview.h
wlanutilities/wlansniffer/mainapplication/inc/wsfmainviewcontainer.h
wlanutilities/wlansniffer/mainapplication/src/wsfdetailsviewcontroller.cpp
wlanutilities/wlansniffer/mainapplication/src/wsfdetailsviewmodel.cpp
wlanutilities/wlansniffer/mainapplication/src/wsfmainview.cpp
wlanutilities/wlansniffer/mainapplication/src/wsfmainviewcontainer.cpp
--- a/hotspotfw/hsbrowser/src/hsbrowserloadeventobserver.cpp	Wed Feb 03 12:16:50 2010 +0000
+++ b/hotspotfw/hsbrowser/src/hsbrowserloadeventobserver.cpp	Fri Feb 19 23:55:42 2010 +0200
@@ -92,9 +92,6 @@
             // no break, fall through
         	}
 		case TBrCtlDefs::EEventNewContentDisplayed:
-        	{
-        	DEBUG( "CHsBrowserLoadEventObserver::HandleBrowserLoadEventL() EEventNewContentDisplayed" );            
-            }        
         case TBrCtlDefs::EEventNewContentStart:
             {
             DEBUG( "CHsBrowserLoadEventObserver::HandleBrowserLoadEventL() EEventNewContentStart" );            
--- a/hotspotfw/hsclient/src/hssmgmtscaninfoimpl.cpp	Wed Feb 03 12:16:50 2010 +0000
+++ b/hotspotfw/hsclient/src/hssmgmtscaninfoimpl.cpp	Fri Feb 19 23:55:42 2010 +0200
@@ -124,9 +124,9 @@
 //
 void CHssMgmtScanInfoImpl::Bssid( THssBssid& aBssid ) const
     {
-    TMacAddress bssid;
-    iScanInfo->BSSID( bssid.iMacAddress );
-    aBssid.Copy( &bssid.iMacAddress[0], KMacAddressLength );
+    TUint8 bssid[ KHssMacAddressLength ];
+    iScanInfo->BSSID( bssid );
+    aBssid.Copy( &bssid[ 0 ], KHssMacAddressLength );
     }
 
 // ---------------------------------------------------------
--- a/hotspotfw/hsserver/inc/802dot11.h	Wed Feb 03 12:16:50 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3713 +0,0 @@
-/*
-* Copyright (c) 2005-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:   Header file mainly for 802.11 specific declarations and 
-*                definitions.
-*
-*/
-
-
-
-#ifndef WLAN802DOT11_H
-#define WLAN802DOT11_H
-
-// for copy, equal and operator != support
-#include "algorithm.h"
-#include "pack.h"
-
-// returns aDest
-extern 
-TAny* os_memcpy( TAny* aDest, const TAny* aSrc, TUint32 aLengthinBytes );
-// returns 0 if equal
-extern TInt 
-os_memcmp( const TAny* aSrc1, const TAny* aSrc2, TUint aLengthinBytes );
-
-/**
- * Returns a TUint16 host byte order value in WLAN MAC layer byte order 
- * (LSB first)
- *
- * @since S60 3.1
- * @param aNw value in network byte order
- * @return value in host byte order
- */
-extern TUint16 os_Hton( TUint16 aHost );
-
-/**
- * Returns a TUint16 WLAN MAC layer byte order (LSB first) value in host byte 
- * order
- *
- * @since S60 3.1
- * @param aNw value in network byte order
- * @return value in host byte order
- */
-extern TUint16 os_Ntoh( TUint16 aNw );
-
-/**
- * Allows also unaligned reading of a TUint16 WLAN MAC layer byte order 
- * (LSB first) value and returns the result in the byte order which
- * is in use in the host
- *
- * @since S60 3.1
- * @param aNwSource where to read the WLAN MAC layer byte order value from
- * @return the value which was read, in host byte order
- */
-inline TUint16 ReadUint16Toh( const TUint16* aNwSource )
-    {
-    return ( os_Ntoh( 
-        ( static_cast<const TUint16>( 
-            ( reinterpret_cast<const TUint8*>(aNwSource) )[0] ) | 
-         ( static_cast<const TUint16>(
-            ( reinterpret_cast<const TUint8*>(aNwSource) )[1] ) << 8 ) ) ) );
-    }
-
-/**
- * Allows also unaligned writing of a TUint16 host byte order value
- * into WLAN MAC layer byte order
- *
- * @since S60 3.1
- * @param aNwTarget where to write the WLAN MAC layer byte order value to
- * @param aHostValue the host byte order value to be written
- */
-inline void WriteHtoUint16( TUint16* aNwTarget, TUint16 aHostValue )
-    {
-    TUint16 nwValue = os_Hton( aHostValue );
-    reinterpret_cast<TUint8*>(aNwTarget)[0] = 
-        ( reinterpret_cast<TUint8*>(&nwValue) )[0];
-    reinterpret_cast<TUint8*>(aNwTarget)[1] = 
-        ( reinterpret_cast<TUint8*>(&nwValue) )[1];
-    }
-
-/**
- * Reverses the byte order of a TUint16 value
- *
- * @since S60 3.1
- * @param aOriginal value whose byte order is to be reversed
- * @return the input parameter in reversed byte order
- */
-inline TUint16 ReverseUint16( TUint16 aOriginal )
-    {
-    return ( ( aOriginal >> 8 ) | ( aOriginal << 8 ) );
-    }
-
-
-/**
-* A measurement of time equal to 1024 µs.
-*/
-const TUint16 KTU = 1024;
-
-/**
-* Length of the MAC address
-*/
-const TUint8 KMacAddressLength = 6;
-
-/**
-* Length of MAC header
-*/
-const TUint8 KMacHeaderLength = 24;
-
-/**
-* Maximum number of 802.11b supported rates 
-* 1, 2, 5.5, 11 MBit/s
-*/
-const TUint8 KMaxNumberOfDot11bRates = 4; 
-
-/**
-* Maximum number of actual supported rate elements in 
-* supported rates information element
-*/
-const TUint8 KMaxNumberOfRates = 8;
-
-/**
-* Maximum number of actual 802.11 supported rate elements in 
-* extended supported rates information element
-*/
-const TUint8 KMaxNumberOfExtendedRates = 255;
-
-/**
-* Maximum number of 802.11b plus 802.11g supported rates 
-*/
-const TUint8 KMaxNumberOfDot11bAndgRates = 14; 
-
-/**
-* Bit mask for checking is supported rate element 
-* part of BSS Basic Rate Set (MSB bit is set)
-*/
-const TUint8 KBasicRateMask = 0x80;
-
-/**
-* Maximum length for a WEP key in BYTES
-*/
-const TUint32 KMaxWEPKeyLength = 29;    // 232 bits
-
-/**
-* Length of TKIP key;
-*/
-const TUint8 KTKIPKeyLength = 16;
-
-/**
-* Length of WEP Init.Vector in BYTES
-*/
-const TUint8 KWepIVLength = 4;
-
-/**
-* Length of WEP ICV in BYTES
-*/
-const TUint8 KWEPICVLength = 4;
-
-/**
-* Length of Extended IV field in bytes.
-*/
-const TUint8 KWepExtendedIVLength = 4;
-
-/**
-* Mask to determine is Ext IV bit up in WEP IV
-*/
-const TUint32 KWepExtendedIvMask = 0x20000000;
-
-/**
-* Mask for Use Protection bit in ERP Information IE
-*/
-const TUint8 KUseProtectionMask = 0x02;
-
-/**
-* Length of MIC in BYTEs
-*/
-const TUint8 KMicLength = 8;
-
-/** 
-* Length of the MIC key in BYTEs
-*/ 
-const TUint8 KMicKeyLength = 8;
-
-/**
-* Maximum length of a SSID in BYTES
-*/
-const TUint8 KMaxSSIDLength = 32;
-
-/**
-* Maximum length of an outbound RSN IE length in BYTEs
-*/
-const TUint8 KMaxTxRsnIELength = 38;
-
-/**
-* Length of ID and Length fields of an information element.
-*/
-const TUint8 KInfoElementHeaderLength = 2;
-
-/**
-* Length of the challenge text in BYTES used in shared key authentication
-*/
-const TUint8 KChallengeTextLength = 128;
-
-/**
-* Ethernet header type field identifier for Bounce type packet
-*/
-const TUint16 KBounceType = 0x8013;
-
-/**
-* Ethernet header type field identifier for EAPOL type packet (IEEE 802.1X)
-*/
-const TUint16 KEapolType = 0x888E;
-
-/**
-* Ethernet header type field identifier for IP type packet
-*/
-const TUint16 KIpType = 0x0800;
-
-/**
-* Ethernet header type field identifier for IPv6 type packet
-*/
-const TUint16 KIpv6Type = 0x86DD;
-
-/**
-* Ethernet header type field identifier for ARP type packet
-*/
-const TUint16 KArpType = 0x0806;
-
-/**
-* Maks for determining does PLCP header service field have PBCC bit set
-*/
-const TUint8 KPlcpServicePbccMask = 0x08;
-
-/**
-* Length of OUI field in SNAP header
-*/
-const TUint8 KOIULength = 3;
-
-/**
-* Maximum length of 802.11 Frame Body field
-*/
-const TUint16 KMaxDot11FrameBodyLength = 2312;
-
-/**
-* Length of trailing FCS in bytes
-*/
-const TUint32 KFcsLength = 4;
-
-/**
-* Maximum length of 802.11 frame we will transmit or receive.
-* This excludes the tailing FCS ( HW strips it )
-* and Address4 field in the MPDU header 
-* ( AP-to-AP mode frames are filtered out )
-*/
-const TUint16 KMaxDot11FrameLength = KMacHeaderLength 
-    + KMaxDot11FrameBodyLength; // 24 + 2312 = 2336
-
-/**
-* Maximum length of 802.11 frame as stated in the standard
-*/
-const TUint16 KDot11MPDUMaxLength = 2346;
-
-/**
-* Maximum length of ethernet frame
-*/
-const TUint16 KMaxEthernetFrameLength = 1514;
-
-/**
-* Maximum value in ethernet length field
-*/
-const TUint16 KMaxEthernetLengthFieldvalue = 1500;
-
-/**
-* Length of the TKIP key in BYTEs
-*/
-const TUint8 KTkIpKeyLength = 16;
-
-/**
-* Length of IPv4 address field in BYTEs
-*/
-const TUint8 KIpv4AddrLength = 4;
-
-/**
-* Length of the priority filed used in WPA MIC calculation
-*/
-const TUint32 KWpaPriorityVecLen = 4;
-
-/**
-* WPA priority field used in MIC calculation
-*/
-const TUint8 KWpaPriorityVec[KWpaPriorityVecLen] = {0,0,0,0};
-
-/**
-* Mask for frame type for frame control field.
-*/
-const TUint32 K802Dot11FrameTypeMask = 0xFFFF;
-
-/**
-* Mask to determine if U-APSD bit is up in QoS info field of WMM IE
-*/
-const TUint8 KUapsdQosInfoMask = 0x80;
-
-/**
-* Mask for parameter set count in QoS info field of WMM IE
-*/
-const TUint8 KParamSetCountQosInfoMask = 0x0F;
-
-/**
-* Length of WMM Information Element
-*/
-const TUint8 KWmmInfoElemLen = 7;
-
-/**
-* Length of OUI field in Information Elements
-*/
-const TUint8 KIeOuiLength = 3;
-
-typedef TUint8 TIeOui[KIeOuiLength];
-
-/**
-* OUI value of WMM Information Element and
-* WMM Parameter Element
-*/
-const TIeOui KWmmElemOui = { 0x00, 0x50, 0xF2 };
-
-/**
-* OUI Type value of WMM Information Element and
-* WMM Parameter Element
-*/
-const TUint8 KWmmElemOuiType = 2;
-
-/**
-* OUI Subtype value of WMM Information Element
-*/
-const TUint8 KWmmInfoElemOuiSubType = 0;
-
-/**
-* OUI Subtype value of WMM Parameter Element
-*/
-const TUint8 KWmmParamElemOuiSubtype = 1;
-
-/**
-* Version of WMM Information Element
-*/
-const TUint8 KWmmInfoElemVersion = 1;
-
-/**
-* Version of WMM Parameter Element
-*/
-const TUint8 KWmmParamElemVersion = 1;
-
-/**
-* The TXOP Limit in the AC Parameters Record of WMM Parameter Element
-* needs to be multiplied by this value to get TXOP Limit in microseconds
-*/
-const TUint8 KWmmTxOpLimitMultiplier = 32;
-
-/**
-* AC flags in QoS info field of WMM IE
-* When a flag is set the corresponding AC is both trigger and delivery enabled
-*/
-enum TQosInfoUapsdFlag
-    {
-    EAcVoUapsdFlag = 0x01, // Voice 
-    EAcViUapsdFlag = 0x02, // Video 
-    EAcBkUapsdFlag = 0x04, // Background 
-    EAcBeUapsdFlag = 0x08  // Best Effort 
-    };
-
-
-/**
-* Maximum U-APSD Service Period length. Indicates the max number of MSDUs and 
-* MMPDUs the WMM AP may deliver to a WMM STA during any service period 
-* triggered by the WMM STA.
-*/
-enum TQosInfoUapsdMaxSpLen
-    {
-    EMaxSpLenAllFrames  = 0x00,
-    EMaxSpLenTwoFrames  = 0x20,
-    EMaxSpLenFourFrames = 0x40,
-    EMaxSpLenSixFrames  = 0x60
-    };
-
-const TUint8 K802Dot11AccessCategoryMask = 0x60;
-
-/**
-* WMM Access Categories
-*/
-enum TWmmAccessCategory
-    {
-    EAcBestEffort   = 0x00, 
-    EAcBackground   = 0x20,
-    EAcVideo        = 0x40,
-    EAcVoice        = 0x60
-    };
-
-/**
-* Number of WMM Access Categories
-*/
-const TUint8 KNumOfWmmACs = 4;
-
-/**
-* Mask for the Admission Control Mandatory flag
-* in ACI/AIFSN field
-* of AC parameter Record
-* of WMM Parameter Element
-*/
-const TUint8 KWmmAdmissionCtrlMandatoryMask = 0x10;
-
-/**
-* Mask for the AIFSN subfiled
-* in ACI/AIFSN field
-* of AC parameter Record
-* of WMM Parameter Element
-*/
-const TUint8 KWmmAifsnMask = 0x0F;
-
-/**
-* Mask for the ECWmin field
-* of AC parameter Record
-* of WMM Parameter Element
-*/
-const TUint8 KWmmEcwMinMask = 0x0F;
-
-/**
-* Mask for the ECWmax field
-* of AC parameter Record
-* of WMM Parameter Element
-*/
-const TUint8 KWmmEcwMaxMask = 0xF0;
-
-/**
-* 802.11 Authentication sequence numbers
-*/
-enum T802Dot11AuthenticationSeqNmbr
-    {
-    E802Dot11AuthenticationSeqNmbr1   = 1,
-    E802Dot11AuthenticationSeqNmbr2   = 2,
-    E802Dot11AuthenticationSeqNmbr3   = 3,
-    E802Dot11AuthenticationSeqNmbr4   = 4
-    };
-
-/**
-* 802.11 WEP key ID values
-*/
-enum T802Dot11WepKeyId
-    {
-    E802Dot11WepKeyId0 = 0,
-    E802Dot11WepKeyId1 = 1,
-    E802Dot11WepKeyId2 = 2,
-    E802Dot11WepKeyId3 = 3,
-    // defined as an upper bound
-    E802Dot11WepKeyIdMax = 4
-    };
-
-/**
-* 802.11 supported rate bytes. Used e.g. in Beacon frames.
-*/
-enum T802Dot11SupportedRate
-    {
-    E802Dot11Rate1MBit              = 2,
-    E802Dot11Rate2MBit              = 4,
-    E802Dot11Rate5p5MBit            = 11,
-    E802Dot11Rate6MBit              = 12,
-    E802Dot11Rate9MBit              = 18,
-    E802Dot11Rate11MBit             = 22,
-    E802Dot11Rate12MBit             = 24,
-    E802Dot11Rate18MBit             = 36,
-    E802Dot11Rate22MBit             = 44,
-    E802Dot11Rate24MBit             = 48,
-    E802Dot11Rate33MBit             = 66,
-    E802Dot11Rate36MBit             = 72,
-    E802Dot11Rate48MBit             = 96,
-    E802Dot11Rate54MBit             = 108
-    };
-
-/**
-* Management frame information element IDs.
-*/
-enum T802Dot11InformationElementID
-    {
-    E802Dot11SsidIE                 = 0,
-    E802Dot11SupportedRatesIE       = 1,
-    E802Doi11FhParameterSetIE       = 2,
-    E802Dot11DsParameterSetIE       = 3,
-    E802Dot11CfParameterSetIE       = 4,
-    E802Dot11TimIE                  = 5,
-    E802Dot11IbssParameterSetIE     = 6,
-    E802Dot11CountryIE              = 7,
-    E802Dot11HoppingPatternParamIE  = 8,
-    E802Dot11HoppingPatternTableIE  = 9,
-    E802Dot11RequestIE              = 10,
-
-    E802Dot11ChallengeTextIE        = 16,
-    // Reserved for challenge text extension 17 - 31
-    E802Dot11ErpInformationIE       = 42,
-    E802Dot11ExtendedRatesIE        = 50,
-    E802Dot11RsnIE                  = 221,
-    E802Dot11VendorSpecificIE       = 221    
-    };
-
-/**
-* Bit masks for bit fields ín Frame Control field.
-*/
-enum T802Dot11FrameControlBitMask
-    {
-    E802Dot11FrameControlProtVersionMask= 0x0003,
-    E802Dot11FrameControlTypeMask       = 0x000C,
-    E802Dot11FrameControlSubtypeMask    = 0x00F0,
-    E802Dot11FrameControlToDsMask       = 0x0100,
-    E802Dot11FrameControlFromDsMask     = 0x0200,
-    E802Dot11FrameControlMoreFragMask   = 0x0400,
-    E802Dot11FrameControlRetryMask      = 0x0800,
-    E802Dot11FrameControlPowerMgmtMask  = 0x1000,
-    E802Dot11FrameControlMoreDataMask   = 0x2000,
-    E802Dot11FrameControlWepMask        = 0x4000,
-    E802Dot11FrameControlOrderMask      = 0x8000
-    };
-
-/**
-* Frame Control field type masks.
-*/
-enum T802Dot11FrameControlBasicTypeMask
-{
-    E802Dot11FrameBasicTypeManagement       = 0x00,
-    E802Dot11FrameBasicTypeControl          = 0x04,
-    E802Dot11FrameBasicTypeData             = 0x08
-};
-
-/**
-* Frame Control field subtype masks.
-*/
-enum T802Dot11FrameControlTypeMask
-    {
-    E802Dot11FrameTypeAssociationReq        = 0x00,
-    E802Dot11FrameTypeAssociationResp       = 0x10,
-    E802Dot11FrameTypeReassociationReq      = 0x20,
-    E802Dot11FrameTypeReassociationResp     = 0x30,
-    E802Dot11FrameTypeProbeReq              = 0x40,
-    E802Dot11FrameTypeProbeResp             = 0x50,
-    E802Dot11FrameTypeBeacon                = 0x80,
-    E802Dot11FrameTypeAtim                  = 0x90,
-    E802Dot11FrameTypeDisassociation        = 0xA0,
-    E802Dot11FrameTypeAuthentication        = 0xB0,
-    E802Dot11FrameTypeDeauthentication      = 0xC0,
-    E802Dot11FrameTypePowerSavePoll         = 0xA4,
-    E802Dot11FrameTypeReqToSend             = 0xB4,
-    E802Dot11FrameTypeClearToSend           = 0xC4,
-    E802Dot11FrameTypeAcknowledgement       = 0xD4,
-    E802Dot11FrameTypeCfEnd                 = 0xE4,
-    E802Dot11FrameTypeCfEndCfAck            = 0xF4,
-    E802Dot11FrameTypeData                  = 0x08,
-    E802Dot11FrameTypeDataCfAck             = 0x18,
-    E802Dot11FrameTypeDataCfPoll            = 0x28,
-    E802Dot11FrameTypeDataCfAckCfPoll       = 0x38,
-    E802Dot11FrameTypeDataNull              = 0x48,
-    E802Dot11FrameTypeCfAckNoData           = 0x58,
-    E802Dot11FrameTypeCfPollNoData          = 0x68,
-    E802Dot11FrameTypeCfAckCfPollNoData     = 0x78,
-    E802Dot11FrameTypeQosData               = 0x88,
-    E802Dot11FrameTypeQosDataCfAck          = 0x98,
-    E802Dot11FrameTypeQosDataCfPoll         = 0xA8,
-    E802Dot11FrameTypeQosDataCfAckCfPoll    = 0xB8,
-    E802Dot11FrameTypeQosDataNull           = 0xC8,
-
-    // not valid 802.11 types. 
-    // just used in TxCompleted function to distinct separate cases
-    E802Dot11FrameTypeAuthSeqNmbr1          = 0xFD,
-    E802Dot11FrameTypeAuthSeqNmbr3          = 0xFE,
-    E802Dot11FrameTypeDataEapol             = 0xFF,
-
-    // not valid 802.11 types. 
-    // just for test purposes
-    E802Dot11FrameTypeTestFrame             = 0xFFFF
-    };
-
-/**
-* Bit masks for Capability Information field.
-*/
-enum T802Dot11CapabilityBitMask
-    {
-    E802Dot11CapabilityEssMask          = 0x0001,
-    E802Dot11CapabilityIbssMask         = 0x0002,
-    E802Dot11CapabilityCfPollableMask   = 0x0004,
-    E802Dot11CapabilityCfPollRequestMask= 0x0008,
-    E802Dot11CapabilityPrivacyMask      = 0x0010,
-    // these little critters are from 802.11b spec
-    E802Dot11ShortPreambleMask          = 0x0020,
-    E802Dot11PbccMask                   = 0x0040,      
-    E802Dot11ChannelAgilityMask         = 0x0080,
-    E802Dot11ShortSlotTimeMask          = 0x0400
-    };
-
-/**
-* Supported authentication modes
-*/
-const TUint16 K802Dot11AuthModeOpen   = 0;
-const TUint16 K802Dot11AuthModeShared = 1;
-
-/**
-* 802.11 status codes
-*/
-enum T802Dot11ManagementStatusCode
-    {
-    E802Dot11StatusSuccess                          = 0,
-    E802Dot11StatusUnspecifiedFailure               = 1,
-    // 2 -9 reserved    
-    E802Dot11StatusUnsupportedCapabilities          = 10,
-    E802Dot11StatusReAssociationDenied              = 11,
-    E802Dot11StatusAssocDenied                      = 12,
-    E802Dot11StatusAuthAlgorithmNotSupported        = 13,
-    E802Dot11StatusAuthFrameOutOfSequence           = 14,
-    E802Dot11StatusChallengeFailure                 = 15,
-    E802Dot11StatusAuthRejectedTimeout              = 16,
-    E802Dot11StatusAssocDeniedApFull                = 17,
-    E802Dot11StatusAssocDeniedBasicRatesUnSupp      = 18,
-    // following three little critters are from 802.11b spec
-    E802Dot11StatusAssocDeniedShortPreambleUnSupp   = 19,
-    E802Dot11StatusAssocDeniedPbccUnSupp            = 20,
-    E802Dot11StatusAssocDeniedChannelAgilityUnSupp  = 21    
-    // 22 - 65,535 reserved
-    };
-
-/**
-* 802.11 reason codes
-*/
-enum T802Dot11ManagementReasonCode
-    {
-    // 0 reserved
-    E802Dot11ReasonUnspecified                = 1,
-    E802Dot11ReasonAuthNoLongerValid          = 2,
-    E802Dot11ReasonDeauthStationLeft          = 3,
-    E802Dot11ReasonDisAssocInactivity         = 4,
-    E802Dot11ReasonDisAssocAPFull             = 5,
-    E802Dot11ReasonClass2FrameWhenNotAuth     = 6,
-    E802Dot11ReasonClass3FrameWhenNotAssoc    = 7,
-    E802Dot11ReasonDisAssocStationLeft        = 8,
-    E802Dot11ReasonAssocFailNotAuth           = 9,
-    // 10 - 12 reserved    
-    // WPA stuff
-    E802Dot11ReasonInvalidIe                  = 13,
-    E802Dot11ReasonMicFailure                 = 14,
-    E802Dot11ReasonHandshakeTimeout           = 15,
-    E802Dot11ReasonGroupKeyUpdateTimeout      = 16,
-    E802Dot11ReasonIeMismatch                 = 17,
-    E802Dot11ReasonMulticastChipherNotValid   = 18,
-    E802Dot11ReasonUnicastChipherNotValid     = 19,
-    E802Dot11ReasonAkmpNotValid               = 20,
-    E802Dot11ReasonUnsupportedRsneVersion     = 21,
-    E802Dot11ReasonInvalidRsneCapabilities    = 22,
-    E802Dot11Reason1xAuthenticationFailed     = 23,
-    // 24 - 65,535 reserved    
-    };
-
-/**
-* 802.11 management frame fixed field and IE lengths in BYTEs
-*/
-const TUint32 KTimeStampFixedFieldLength                = 8;
-const TUint32 KBeaconIntervalFixedFieldLength           = 2;
-const TUint32 KCapabilityInformationFixedFieldLength    = 2;
-const TUint32 KDsParameterSetIeLength                   = 3;
-const TUint32 KIbssParameterSetIeLength                 = 4;
-
-/**
-* The one and only MAC address struct
-*/
-#pragma pack( 1 )
-struct TMacAddress
-    {
-    /** the MAC address */
-    TUint8 iMacAddress[KMacAddressLength];
-    } __PACKED; // 6 bytes
-
-/**
-* Broadcast MAC Address.
-*/
-const TMacAddress KBroadcastMacAddr = {{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }};
-
-/**
-* MAC address that all zeros
-*/
-const TMacAddress KZeroMacAddr = {{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }};
-
-/**
-* operator== for TMacAddress 
-* @param aLhs left hand side
-* @param aRhs right hand side
-* @return ETrue equal, EFalse not equal
-*/
-inline TBool operator== ( 
-    const TMacAddress& aLhs, const TMacAddress& aRhs )
-    {
-    return ( equal( (aLhs.iMacAddress),
-                    (aLhs.iMacAddress) + KMacAddressLength, 
-                    aRhs.iMacAddress) );
-    }
-
-/**
-* Sets or clears the group bit of the MAC address 
-* @param aMac the address
-* @param aSet set or clear the bit
-*/
-inline void GroupBit( TMacAddress& aMac, TBool aSet = ETrue )
-    {
-    if ( aSet )
-        {
-        aMac.iMacAddress[0] |= KBit0;
-        }
-    else
-        {
-        aMac.iMacAddress[0] &= ~KBit0;
-        }
-    }
-
-/**
-* Evaluates if the group bit of the MAC address is set
-* @param aMac the address
-* @return ETrue if group bit is set EFalse in other case
-*/
-inline TBool IsGroupBitSet( const TMacAddress& aMac )
-    {
-    return (aMac.iMacAddress[0] & KBit0);
-    }
-
-/**
-* Sets or clears the local bit of the MAC address 
-* @param aMac the address
-* @param aSet set or clear the bit
-*/
-inline void LocalBit( TMacAddress& aMac, TBool aSet = ETrue )
-    {
-    if ( aSet )
-        {
-        aMac.iMacAddress[0] |= KBit1;
-        }
-    else
-        {
-        aMac.iMacAddress[0] &= ~KBit1;
-        }
-    }
-
-/**
-* Evaluates if the local bit of the MAC address is set
-* @param aMac the address
-* @return ETrue if group bit is set EFalse in other case
-*/
-inline TBool IsLocalBitSet( const TMacAddress& aMac )
-    {
-    return (aMac.iMacAddress[0] & KBit1);
-    }
-
-/**
-* 802.11 information element header
-*/
-#pragma pack( 1 )
-struct SInformationElementHeader
-    {
-    /** the element ID */
-    const TUint8    iElementID;
-    /** length of the following IE */
-    TUint8          iLength;      
-
-    /**
-    * Ctor
-    * @param aElementID element ID used
-    */
-    explicit SInformationElementHeader( 
-        T802Dot11InformationElementID aElementID ) 
-        : iElementID( static_cast<TUint8>(aElementID) ), iLength( 0 ) {};
-    /**
-    * Ctor
-    * @param aElementID element ID used
-    * @param aLength length of the information element following this header
-    */
-    SInformationElementHeader( T802Dot11InformationElementID aElementID, 
-        const TUint8 aLength ) 
-        : iElementID( static_cast<TUint8>(aElementID) ), iLength( aLength ) {};
-
-private:
-
-    /** Prohibit assignment operator */
-    SInformationElementHeader& operator= ( const SInformationElementHeader& );
-    /** Prohibit copy constructor */
-    SInformationElementHeader( const SInformationElementHeader& );
-    } __PACKED; // 2 bytes
-
-/**
-* operator== for SInformationElementHeader
-* @param aLhs left hand side
-* @param aRhs right hand side
-* @return ETrue equal, EFalse not equal
-*/
-inline TBool operator== ( 
-    const SInformationElementHeader& aLhs, 
-    const SInformationElementHeader& aRhs )
-    {
-    return static_cast<TBool>(( aLhs.iElementID == aRhs.iElementID
-        && aLhs.iLength == aRhs.iLength ));
-    }
-
-/**
-* 802.11 SSID information element
-*/
-#pragma pack( 1 )
-struct  SSsIdIE
-    {
-    /** information element header */
-    SInformationElementHeader   iHeader;                    // 2 bytes
-    /** SSID information element */
-    TUint8                      iSsIdIe[KMaxSSIDLength];    // 32 bytes 
-
-    /**
-    * Ctor
-    */
-    inline SSsIdIE() : iHeader( E802Dot11SsidIE ) {};
-
-    /**
-    * Ctor
-    * @param aData pointer to SSID
-    * @param aLength length of aData
-    */
-    inline SSsIdIE( const TUint8* aData, TUint8 aLength );
-
-    /**
-    * Returns information elements length ( the element + its header )
-    * @return see above
-    */
-    TUint8 GetIeLength() const { return static_cast<TUint8>( 
-        (iHeader.iLength + sizeof( SInformationElementHeader ) ) ); }        
-
-private:
-
-    /** Prohibit assignment operator */
-    SSsIdIE& operator= ( const SSsIdIE& );
-    /** Prohibit copy constructor */
-    SSsIdIE( const SSsIdIE& );
-    } __PACKED; // 34 bytes
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline SSsIdIE::SSsIdIE( const TUint8* aData, TUint8 aLength ) 
-    : iHeader( E802Dot11SsidIE )
-    {
-    iHeader.iLength =  aLength;
-    os_memcpy( &(iSsIdIe[0]), aData, aLength );   
-    }       
-
-/**
-* operator== for SSsIdIE
-* @param aLhs left hand side
-* @param aRhs right hand side
-* @return ETrue equal EFalse not equal
-*/
-inline TBool operator== (
-    const SSsIdIE& aLhs,
-    const SSsIdIE& aRhs)
-    {
-    return static_cast<TBool>(( ( aLhs.iHeader == aRhs.iHeader )
-        && !(os_memcmp( aLhs.iSsIdIe, aRhs.iSsIdIe, aLhs.iHeader.iLength )) ));
-    }
-
-/**
-* 802.11 supported rates information element
-*/
-#pragma pack( 1 )
-struct SSupportedRatesIE
-    {
-    /** information element header */
-    SInformationElementHeader iHeader;                      // 2
-    /** 
-    * supported rates information element
-    * NOTE! The 802.11 standard specifies that the max length of the 
-    * information part of this IE is eight rates (eight bytes).
-    * However at least some APs seem to put all their supported rates
-    * into this element. In order to be able to associate with those
-    * APs we allocate enough space to incorporate all 802.11b/g rates
-    * in this IE. We ourselves will still always advertise max eight 
-    * rates using this IE (and the rest using the Extended Supported
-    * Rates IE).
-    */
-    TUint8 iSupportedRatesIE[KMaxNumberOfDot11bAndgRates];  // 14
-
-    /**
-    * Ctor
-    */
-    SSupportedRatesIE() 
-        : iHeader( E802Dot11SupportedRatesIE, KMaxNumberOfRates ) {};
-
-    /**
-    * operator[] to get supported rates element at given index
-    * @param aIdx index to be get
-    * @return value in given index
-    */
-    inline TUint8 operator[] ( TUint8 aIdx ) const;
-
-    /**
-    * sets IE data also sets the IE headers length field
-    * @param aIeData actual IE data
-    * @param aLength length of aIeData
-    */
-    inline void SetIeData( const TUint8* aIeData, const TUint8 aLength);
-
-    /**
-    * Returns information element's actual length 
-    * ( element's size + its header )
-    * @return see above
-    */
-    inline TUint8 GetIeLength() const; 
-
-    /**
-    * Returns only the information element's actual length ( header excluded )
-    * @return see above
-    */
-    inline TUint8 GetElementLength() const; 
-
-    /** Marks IE zero length size */
-    inline void Clear();
-
-    /**
-    * Appends a single rate element to IE
-    * @param aRate rate element to be appended
-    */
-    inline void Append( TUint8 aRate );
-
-private:
-
-    /** Prohibit assignment operator */
-    SSupportedRatesIE& operator= ( const SSupportedRatesIE& );
-    /** Prohibit copy constructor */
-    SSupportedRatesIE( const SSupportedRatesIE& );
-    } __PACKED; // 16 bytes
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SSupportedRatesIE::SetIeData( 
-    const TUint8* aIeData, 
-    const TUint8 aLength)
-    {
-    iHeader.iLength = aLength;
-    os_memcpy( iSupportedRatesIE, aIeData, aLength );
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline TUint8 SSupportedRatesIE::operator[] ( TUint8 aIdx ) const
-    {
-    return iSupportedRatesIE[aIdx];
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline TUint8 SSupportedRatesIE::GetIeLength() const 
-    { 
-    return static_cast<TUint8>( 
-        ( iHeader.iLength + sizeof( SInformationElementHeader ) ) ); 
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline TUint8 SSupportedRatesIE::GetElementLength() const
-    {
-    return iHeader.iLength;
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SSupportedRatesIE::Clear()
-    {
-    iHeader.iLength = 0;
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SSupportedRatesIE::Append( TUint8 aRate )
-    {
-    iSupportedRatesIE[iHeader.iLength] = aRate;
-    ++(iHeader.iLength);
-    }
-
-/**
-* operator== for SSupportedRatesIE
-* @param aLhs left hand side
-* @param aRhs right hand side
-* @return ETrue equal, EFalse not equal
-*/
-inline TBool operator== (
-    const SSupportedRatesIE& aLhs,
-    const SSupportedRatesIE& aRhs )
-    {
-    return static_cast<TBool>(( ( aLhs.iHeader == aRhs.iHeader )
-        && !(os_memcmp( aLhs.iSupportedRatesIE, 
-        aRhs.iSupportedRatesIE, aLhs.iHeader.iLength )) ));
-    }
-
-/**
-* 802.11 extended supported rates information element
-*/
-#pragma pack( 1 )
-struct SExtendedSupportedRatesIE
-    {
-	enum { KPad = 1 };
-    /** information element header */
-    SInformationElementHeader   iHeader;                                        // 2
-    /** supported rates information element */
-    TUint8                      iSupportedRatesIE[KMaxNumberOfExtendedRates];   // 255
-	/** padding */
-	TUint8						iPad[KPad];				                        // 1
-
-    /**
-    * Ctor
-    */
-    SExtendedSupportedRatesIE() 
-        : iHeader( E802Dot11ExtendedRatesIE, KMaxNumberOfExtendedRates ) {};
-
-    /**
-    * operator[] to get supported rates element at given index
-    * @param aIdx index to be get
-    * @return value in given index
-    */
-    inline TUint8 operator[] ( TUint8 aIdx ) const;
-
-    /**
-    * sets IE data also sets the IE headers length field
-    * @param aIeData actual IE data
-    * @param aLength length of aIeData
-    */
-    inline void SetIeData( const TUint8* aIeData, const TUint8 aLength);
-
-    /**
-    * Returns information element's actual length 
-    * ( element's size + its header )
-    * @return see above
-    */
-    inline TUint8 GetIeLength() const; 
-
-    /**
-    * Returns only the information element's actual length ( header excluded )
-    * @return see above
-    */
-    inline TUint8 GetElementLength() const; 
-
-    /** Marks IE zero length size */
-    inline void Clear();
-
-    /**
-    * Appends a single rate element to IE
-    * @param aRate rate element to be appended
-    */
-    inline void Append( TUint8 aRate );
-
-private:
-
-    /** Prohibit assignment operator */
-    SExtendedSupportedRatesIE& operator= ( const SExtendedSupportedRatesIE& );
-    /** Prohibit copy constructor */
-    SExtendedSupportedRatesIE( const SExtendedSupportedRatesIE& );
-    } __PACKED;
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SExtendedSupportedRatesIE::SetIeData( 
-    const TUint8* aIeData, 
-    const TUint8 aLength)
-    {
-    iHeader.iLength = aLength;
-    os_memcpy( iSupportedRatesIE, aIeData, aLength );
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline TUint8 SExtendedSupportedRatesIE::operator[] ( TUint8 aIdx ) const
-    {
-    return iSupportedRatesIE[aIdx];
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline TUint8 SExtendedSupportedRatesIE::GetIeLength() const 
-    { 
-    return static_cast<TUint8>( 
-        ( iHeader.iLength + sizeof( SInformationElementHeader ) ) ); 
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline TUint8 SExtendedSupportedRatesIE::GetElementLength() const
-    {
-    return iHeader.iLength;
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SExtendedSupportedRatesIE::Clear()
-    {
-    iHeader.iLength = 0;
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SExtendedSupportedRatesIE::Append( TUint8 aRate )
-    {
-    iSupportedRatesIE[iHeader.iLength] = aRate;
-    ++(iHeader.iLength);
-    }
-
-/**
-* operator== for SExtendedSupportedRatesIE
-* @param aLhs left hand side
-* @param aRhs right hand side
-* @return ETrue equal, EFalse not equal
-*/
-inline TBool operator== (
-    const SExtendedSupportedRatesIE& aLhs,
-    const SExtendedSupportedRatesIE& aRhs )
-    {
-    return static_cast<TBool>(( ( aLhs.iHeader == aRhs.iHeader )
-        && !(os_memcmp( aLhs.iSupportedRatesIE, 
-        aRhs.iSupportedRatesIE, aLhs.iHeader.iLength )) ));
-    }
-
-#pragma pack( 1 )
-struct SDsParameterSetIE
-    {
-    SInformationElementHeader   iHeader;                // 2
-    TUint8                      iValue;                 // 1                         
-
-    inline SDsParameterSetIE( const TUint32 aValue );
-
-private:
-
-    /** Prohibit assignment operator */
-    SDsParameterSetIE& operator= ( const SDsParameterSetIE& aObj );
-    /** Prohibit copy constructor */
-    SDsParameterSetIE( const SDsParameterSetIE& );
-    } __PACKED;     // 3 bytes 
-
-inline SDsParameterSetIE::SDsParameterSetIE( 
-    const TUint32 aValue )         
-    : iHeader( E802Dot11DsParameterSetIE, sizeof(iValue) )
-    {
-    iValue = aValue;
-    }
-
-#pragma pack( 1 )
-struct SIbssParameterSetIE
-    {
-    SInformationElementHeader   iHeader;                // 2
-    TUint16                     iValue;                 // 2                         
-
-    inline SIbssParameterSetIE( const TUint16 aValue );
-    
-    inline TUint16 AtimWindow() const;
-
-private:
-
-    /** Prohibit assignment operator */
-    SIbssParameterSetIE& operator= ( const SIbssParameterSetIE& aObj );
-    /** Prohibit copy constructor */
-    SIbssParameterSetIE( const SIbssParameterSetIE& );
-    } __PACKED;     // 4 bytes 
-
-inline SIbssParameterSetIE::SIbssParameterSetIE( 
-    const TUint16 aValue )         
-    : iHeader( E802Dot11IbssParameterSetIE, sizeof(iValue) )
-    {
-    WriteHtoUint16( &iValue, aValue );
-    }
-
-inline TUint16 SIbssParameterSetIE::AtimWindow() const
-    {
-    return ( ReadUint16Toh( &iValue ) );
-    }
-
-/**
-* 802.11 WiFi WPA outbound information element
-*/
-#pragma pack( 1 )
-struct STxRsnIE
-    {
-    /** information element header */
-    SInformationElementHeader   iHeader;                       // 2
-    /** RSN information element */
-    TUint8                      iTxRsnIe[KMaxTxRsnIELength];   // 38
-
-    /** Ctor */
-    STxRsnIE() 
-        : iHeader( E802Dot11VendorSpecificIE , KMaxTxRsnIELength ) {};
-
-    /**
-    * Returns information element's actual length 
-    * ( element's size + its header )
-    * @return see above
-    */
-    inline TUint8 GetIeLength() const; 
-
-    /**
-    * Sets iTxRsnIe field and IE length field
-    * @param aData data to be set
-    * @param aLength length of the data
-    */
-    inline void SetRsn( const TUint8* aData, TUint32 aLength );
-
-private:
-
-    /** Prohibit assignment operator */
-    STxRsnIE& operator= ( const STxRsnIE& aObj );
-    /** Prohibit copy constructor */
-    STxRsnIE( const STxRsnIE& );
-    } __PACKED; // 40 bytes
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline TUint8 STxRsnIE::GetIeLength() const
-    {
-    return static_cast<TUint8>( 
-        ( iHeader.iLength + sizeof( SInformationElementHeader ) ) ); 
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void STxRsnIE::SetRsn( const TUint8* aData, TUint32 aLength )
-    {
-    iHeader.iLength = static_cast<TUint8>(aLength);
-    os_memcpy( iTxRsnIe, aData, aLength );
-    }
-
-/**
-* Inbound WMM information element without IE header
-*/
-#pragma pack( 1 )
-struct SRxWmmIeData
-    {
-    TIeOui                      iOui;           // 3
-    TUint8                      iOuiType;       // 1
-    TUint8                      iOuiSubType;    // 1
-    TUint8                      iVersion;       // 1
-    /** information element */
-    TUint8                      iQosInfo;       // 1
-
-    /**
-    * Evaluates if U-APSD bit is up
-    * @return ETrue if bit is up, otherwise EFalse
-    */
-    inline TBool IsUapsdBitSet() const;
-
-    /**
-    * Gets the the parameter set count
-    * @return parameter set count
-    */
-    inline TUint8 ParameterSetCount() const;
-
-private:
-
-    /** Prohibit assignment operator */
-    SRxWmmIeData& operator= ( const SRxWmmIeData& aObj );
-    /** Prohibit copy constructor */
-    SRxWmmIeData( const SRxWmmIeData& );
-    } __PACKED;     // 7 bytes 
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline TBool SRxWmmIeData::IsUapsdBitSet() const
-    {
-    return ( (iQosInfo & KUapsdQosInfoMask )? ETrue : EFalse );
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline TUint8 SRxWmmIeData::ParameterSetCount() const
-    {
-    return ( iQosInfo & KParamSetCountQosInfoMask );
-    }
-
-
-/**
-* Outbound WMM information element
-*/
-#pragma pack( 1 )
-struct STxWmmIE
-    {
-    /** information element header */
-    SInformationElementHeader   iHeader;        // 2
-    TIeOui                      iOui;           // 3
-    TUint8                      iOuiType;       // 1
-    TUint8                      iOuiSubType;    // 1
-    TUint8                      iVersion;       // 1
-    /** information element */
-    TUint8                      iQosInfo;       // 1
-
-
-    /**
-    * Ctor
-    */
-    inline STxWmmIE() : iHeader( E802Dot11VendorSpecificIE, KWmmInfoElemLen ),
-        iOuiType( KWmmElemOuiType ), 
-        iOuiSubType( KWmmInfoElemOuiSubType ), iVersion( KWmmInfoElemVersion ),
-        iQosInfo( 0 ) 
-        { 
-        os_memcpy( iOui, KWmmElemOui, KIeOuiLength );
-        }
-
-    /**
-    * Sets the U-APSD flags for different ACs
-    * @param aFlags flag(s) to be set
-    */
-    inline void SetUapsdFlags( TQosInfoUapsdFlag aFlags );
-
-    /**
-    * Sets the maximum service period length
-    * @param aMaxSpLen length of the service period 
-    */
-    inline void SetMaxSpLen( TQosInfoUapsdMaxSpLen aMaxSpLen );
-    
-    /**
-    * Returns information elements total length, i.e.
-    * element's length + header length
-    * @return see above
-    */
-    inline TUint8 GetIeLength() const; 
-
-    /** Clears the IE content, i.e. the iQosInfo field */
-    inline void Clear();    
-
-private:
-
-    /** Prohibit assignment operator */
-    STxWmmIE& operator= ( const STxWmmIE& aObj );
-    /** Prohibit copy constructor */
-    STxWmmIE( const STxWmmIE& );
-    } __PACKED;     // 9 bytes 
-
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void STxWmmIE::SetUapsdFlags( TQosInfoUapsdFlag aFlags )
-    {
-    iQosInfo |= aFlags;
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void STxWmmIE::SetMaxSpLen( TQosInfoUapsdMaxSpLen aMaxSpLen )
-    {
-    iQosInfo |= aMaxSpLen;    
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline TUint8 STxWmmIE::GetIeLength() const
-    {
-    return static_cast<TUint8>( 
-        ( iHeader.iLength + sizeof( SInformationElementHeader ) ) ); 
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void STxWmmIE::Clear()
-    {
-    iQosInfo = 0;    
-    }
-
-/**
-* AC parameters record of WMM parameter element
-*/
-#pragma pack( 1 )
-struct SAcParamsRecord
-    {
-    
-    TUint8                      iAciAifsn;      // 1
-    TUint8                      iEcwMinMax;     // 1
-    TUint16                     iTxOpLimit;     // 2
-    
-    inline TWmmAccessCategory AccessCategory() const;
-
-    inline TBool AdmissionControlMandatory() const;
-    
-    inline TUint8 Aifsn() const;
-
-    inline TUint16 CwMin() const;
-    
-    inline TUint16 CwMax() const;
-
-    inline TUint16 TxOpLimit() const;        
-    
-private:
-
-    /** Prohibit assignment operator */
-    SAcParamsRecord& operator= ( const SAcParamsRecord& aObj );
-    /** Prohibit copy constructor */
-    SAcParamsRecord( const SAcParamsRecord& );
-    } __PACKED;     // 4 bytes 
-
-inline TWmmAccessCategory SAcParamsRecord::AccessCategory() const
-    {
-    return ( static_cast<TWmmAccessCategory>(iAciAifsn & K802Dot11AccessCategoryMask) );
-    }
-
-inline TBool SAcParamsRecord::AdmissionControlMandatory() const
-    {
-    return ( iAciAifsn & KWmmAdmissionCtrlMandatoryMask );
-    }
-
-inline TUint8 SAcParamsRecord::Aifsn() const
-    {
-    return ( iAciAifsn & KWmmAifsnMask );
-    }
-
-inline TUint16 SAcParamsRecord::CwMin() const
-    {
-    return ( ( static_cast<TUint16>( 1 ) << 
-             ( iEcwMinMax & KWmmEcwMinMask ) ) - 1 );
-    }
-
-inline TUint16 SAcParamsRecord::CwMax() const
-    {
-    return ( ( static_cast<TUint16>( 1 ) << 
-             ( ( iEcwMinMax & KWmmEcwMaxMask ) >> 4 ) ) - 1 );
-    }
-
-inline TUint16 SAcParamsRecord::TxOpLimit() const
-    {
-    return ( ReadUint16Toh( &iTxOpLimit ) );
-    }
-
-/**
-* WMM Parameter Element without element header
-*/
-#pragma pack( 1 )
-struct SWmmParamElemData
-    {
-    /** information element header */
-    TIeOui                      iOui;                    // 3
-    TUint8                      iOuiType;                // 1
-    TUint8                      iOuiSubType;             // 1
-    TUint8                      iVersion;                // 1
-    /** information element fields: */
-    TUint8                      iQosInfo;                // 1
-    TUint8                      iReserved;               // 1
-    SAcParamsRecord             iAcParams[KNumOfWmmACs]; // 16
-
-    /**
-    * Evaluates if U-APSD bit is up
-    * @return ETrue if bit is up, otherwise EFalse
-    */
-    inline TBool IsUapsdBitSet() const;
-
-    /**
-    * Gets the the parameter set count
-    * @return parameter set count
-    */
-    inline TUint8 ParameterSetCount() const;
-
-private:
-
-    /** Prohibit assignment operator */
-    SWmmParamElemData& operator= ( const SWmmParamElemData& aObj );
-    /** Prohibit copy constructor */
-    SWmmParamElemData( const SWmmParamElemData& );
-    } __PACKED;     // 24
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline TBool SWmmParamElemData::IsUapsdBitSet() const
-    {
-    return ( (iQosInfo & KUapsdQosInfoMask )? ETrue : EFalse );
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline TUint8 SWmmParamElemData::ParameterSetCount() const
-    {
-    return ( iQosInfo & KParamSetCountQosInfoMask );
-    }
-
-// capability information fixed-field 
-//
-// bit 14 - 15     13     11 - 12    10        8-9       7         6                         
-//   ----------+-------+-----------+-------+---------+----------+-------
-//    reserved | DSSS- | reserved  | short | reserved|  Channel |   PBCC   
-//             | OFDM  |           | slot  |         |  Agility |          
-//   ----------+-------+-----------+-------+---------+----------+--------
-// bit        5           4         3          2          1          0  
-//        ----------+----------+----------+----------+----------+----------+
-//           Short  |  Privacy |  CF-Poll |   CF     |   IBSS   |    ESS   |
-//          Preamble|   (WEP)  |  Request | Pollable |          |          |        
-//        ----------+----------+----------+----------+----------+----------+
-
-/**
-* 802.11 management frame body capability information fixed-field
-*/
-#pragma pack( 1 )
-struct SCapabilityInformationField
-    {
-    enum { KReservedFieldsMask = 0xEB00 };
-
-    /** capability information fixed field */
-    TUint16 iCapabilityInformationField;
-
-    /**
-    * Ctor
-    */
-    SCapabilityInformationField() 
-        : iCapabilityInformationField( 0 ) {};
-
-    /**
-    * Ctor
-    * @param aParam value used in iCapabilityInformationField field
-    */
-    explicit inline SCapabilityInformationField( const TUint16 aParam ); 
-
-    /**
-    * Assignment operator for TUint16 type
-    * @param aParam value used as iCapabilityInformationField
-    */
-    inline SCapabilityInformationField& operator= ( const TUint16 aParam );
-        
-    /**
-    * Returns the value of the Capability Information Field
-    * @return 
-    */
-    inline TUint16 CapabilityInformationField() const;
-    /**
-    * Evaluates if ESS bit is up
-    * @return ETrue if bit is up, otherwise EFalse
-    */
-    inline TBool IsEssBitSet() const;
-    /**
-    * Evaluates if IBSS bit is up
-    * @return ETrue if bit is up, otherwise EFalse
-    */
-    inline TBool IsIbssBitSet() const;
-    /**
-    * Evaluates if Privaecy bit bit is up
-    * @return ETrue if bit is up, otherwise EFalse
-    */
-    inline TBool IsPrivacyBitSet() const;
-    /**
-    * Evaluates if Short Preamble bit is up
-    * @return ETrue if bit is up, otherwise EFalse
-    */
-    inline TBool IsShortPreambleBitSet() const;
-    /**
-    * Evaluates if PBCC bit is up
-    * @return ETrue if bit is up, otherwise EFalse
-    */
-    inline TBool IsPbccBitSet() const;
-    /**
-    * Evaluates if Channel Agility bit is up
-    * @return ETrue if bit is up, otherwise EFalse
-    */
-    inline TBool IsChannelAgilityBitSet() const;
-    /**
-    * Evaluates if short slot time bit is up
-    * @return ETrue if bit is up, otherwise EFalse
-    */
-    inline TBool IsShortSlotTimeBitSet() const;
-    /**
-    * Clears both CF bits
-    */
-    inline void ClearCfFields();    
-    /**
-    * Clear CF pollable field
-    */
-    inline void ClearCfPollable();    
-    /**
-    * Clears both CF poll request field
-    */
-    inline void ClearCfPollRequest();    
-    /**
-    * Sets the short preamble bit
-    */
-    inline void SetShortPreamble();
-    /**
-    * Clears the short preamble bit
-    */
-    inline void ClearShortPreamble();
-    /**
-    * sets the pbcc bit
-    */
-    inline void SetPbcc();
-    /**
-    * sets the IBSS bit
-    */
-    inline void SetIbss();
-    /**
-    * Clear PBCC bit
-    */
-    inline void ClearPbcc();
-    /** Clear reserved fields */
-    inline void ClearReservedFields();
-    /** Set WEP bit */
-    inline void SetWepBit();
-    /** Clear WEP bit */
-    inline void ClearWepBit();
-
-private:
-
-    /** Prohibit copy constructor */
-    SCapabilityInformationField( const SCapabilityInformationField& );
-    } __PACKED; // 2 bytes
-
-
-inline SCapabilityInformationField::SCapabilityInformationField( const TUint16 aParam )
-    {
-    WriteHtoUint16( &iCapabilityInformationField, aParam );
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline SCapabilityInformationField& SCapabilityInformationField::operator= (
-    const TUint16 aParam )
-    {
-    WriteHtoUint16( &iCapabilityInformationField, aParam );
-    return (*this);
-    }
-
-// ---------------------------------------------------------
-// 
-// ---------------------------------------------------------
-//
-inline TUint16 SCapabilityInformationField::CapabilityInformationField() const
-    {
-    return ( ReadUint16Toh( &iCapabilityInformationField ) );
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline TBool SCapabilityInformationField::IsEssBitSet() const
-    {
-    return ( ( ReadUint16Toh( &iCapabilityInformationField ) & 
-        E802Dot11CapabilityEssMask )
-        ? ETrue : EFalse );
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline TBool SCapabilityInformationField::IsIbssBitSet() const
-    {
-    return ( ( ReadUint16Toh( &iCapabilityInformationField ) & 
-        E802Dot11CapabilityIbssMask )
-        ? ETrue : EFalse );
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline TBool SCapabilityInformationField::IsPrivacyBitSet() const
-    {
-    return ( ( ReadUint16Toh( &iCapabilityInformationField ) & 
-        E802Dot11CapabilityPrivacyMask )
-        ? ETrue : EFalse );    
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline TBool SCapabilityInformationField::IsShortPreambleBitSet() const
-    {
-    return ( ( ReadUint16Toh( &iCapabilityInformationField ) & 
-        E802Dot11ShortPreambleMask )
-        ? ETrue : EFalse );    
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline TBool SCapabilityInformationField::IsPbccBitSet() const
-    {
-    return ( ( ReadUint16Toh( &iCapabilityInformationField ) & 
-        E802Dot11PbccMask )
-        ? ETrue : EFalse );    
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline TBool SCapabilityInformationField::IsChannelAgilityBitSet() const
-    {
-    return ( ( ReadUint16Toh( &iCapabilityInformationField ) & 
-        E802Dot11ChannelAgilityMask )
-        ? ETrue : EFalse );    
-    }
-
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline TBool SCapabilityInformationField::IsShortSlotTimeBitSet() const
-    {
-    return ( ( ReadUint16Toh( &iCapabilityInformationField ) & 
-        E802Dot11ShortSlotTimeMask )
-        ? ETrue : EFalse );    
-    }
-
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SCapabilityInformationField::ClearCfFields()
-    {
-    ClearCfPollable();
-    ClearCfPollRequest();
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SCapabilityInformationField::ClearCfPollable()
-    {
-    WriteHtoUint16( &iCapabilityInformationField, 
-        ReadUint16Toh( &iCapabilityInformationField ) & 
-        ( ~E802Dot11CapabilityCfPollableMask ) );
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SCapabilityInformationField::ClearCfPollRequest()
-    {
-    WriteHtoUint16( &iCapabilityInformationField, 
-        ReadUint16Toh( &iCapabilityInformationField ) & 
-        ( ~E802Dot11CapabilityCfPollRequestMask ) );
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SCapabilityInformationField::SetShortPreamble()
-    {
-    WriteHtoUint16( &iCapabilityInformationField, 
-        ReadUint16Toh( &iCapabilityInformationField ) | 
-        E802Dot11ShortPreambleMask );
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SCapabilityInformationField::SetPbcc()
-    {
-    WriteHtoUint16( &iCapabilityInformationField, 
-        ReadUint16Toh( &iCapabilityInformationField ) | 
-        E802Dot11PbccMask );
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SCapabilityInformationField::SetIbss()
-    {
-    WriteHtoUint16( &iCapabilityInformationField, 
-        ReadUint16Toh( &iCapabilityInformationField ) | 
-        E802Dot11CapabilityIbssMask );
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SCapabilityInformationField::ClearShortPreamble()
-    {
-    WriteHtoUint16( &iCapabilityInformationField, 
-        ReadUint16Toh( &iCapabilityInformationField ) & 
-        ( ~E802Dot11ShortPreambleMask ) );
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SCapabilityInformationField::ClearPbcc()
-    {
-    WriteHtoUint16( &iCapabilityInformationField, 
-        ReadUint16Toh( &iCapabilityInformationField ) & 
-        ( ~E802Dot11PbccMask ) );
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SCapabilityInformationField::ClearReservedFields()
-    {
-    WriteHtoUint16( &iCapabilityInformationField, 
-        ReadUint16Toh( &iCapabilityInformationField ) & 
-        ( ~KReservedFieldsMask ) );
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SCapabilityInformationField::SetWepBit()
-    {
-    WriteHtoUint16( &iCapabilityInformationField, 
-        ReadUint16Toh( &iCapabilityInformationField ) | 
-        E802Dot11CapabilityPrivacyMask );
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SCapabilityInformationField::ClearWepBit()
-    {
-    WriteHtoUint16( &iCapabilityInformationField, 
-        ReadUint16Toh( &iCapabilityInformationField ) & 
-        ( ~E802Dot11CapabilityPrivacyMask ) );
-    }
-
-/**
-* operator== for SCapabilityInformationField
-* @param aLhs left hand side
-* @param aRhs right hand side
-* @return ETrue equal, EFalse not equal
-*/
-inline TBool operator== ( 
-    const SCapabilityInformationField& aLhs,
-    const SCapabilityInformationField& aRhs)
-    {
-    return static_cast<TBool>( aLhs.CapabilityInformationField() 
-        == aRhs.CapabilityInformationField() );
-    }
-
-/**
-* 802.11 management frame body listen interval fixed-field
-*/
-#pragma pack( 1 )
-struct SListenIntervalField
-    {
-    /** listen interval fixed field */
-    TUint16 iListenInterval;
-    
-    /**
-    * Ctor
-    */
-    SListenIntervalField() : iListenInterval( 0 ) {};
-
-    /**
-    * Ctor
-    * @param aParam value used in iListenInterval
-    */
-    explicit inline SListenIntervalField( const TUint16 aParam );
-
-    /**
-    * Returns the value of the Listen Interval
-    * @return Listen Interval
-    */
-    inline TUint16 ListenInterval() const;
-
-    /**
-    * assignment operator for TUint16 type
-    * @param aInterval listen interval fixed field
-    */
-    inline SListenIntervalField& operator= ( const TUint16 aInterval );           
-    
-private:
-
-    /** Prohibit assignment operator */
-    SListenIntervalField& operator= ( const SListenIntervalField& );
-    /** Prohibit copy constructor */
-    SListenIntervalField( const SListenIntervalField& );
-    } __PACKED; // 2 bytes
-
-inline SListenIntervalField::SListenIntervalField( const TUint16 aParam )
-    {
-    WriteHtoUint16( &iListenInterval, aParam );
-    }
-
-inline TUint16 SListenIntervalField::ListenInterval() const
-    {
-    return ( ReadUint16Toh( &iListenInterval ) );
-    }
-
-inline SListenIntervalField& SListenIntervalField::operator= (
-    const TUint16 aInterval )
-    {
-    WriteHtoUint16( &iListenInterval, aInterval );
-    return (*this);
-    }
-
-/**
-* operator== for SListenIntervalField
-* @param aLhs left hand side
-* @param aRhs right hand side
-* @return ETrue equal, EFalse not equal
-*/
-inline TBool operator== (
-    const SListenIntervalField& aLhs,
-    const SListenIntervalField& aRhs)
-    {
-    return static_cast<TBool>( aLhs.ListenInterval() == aRhs.ListenInterval() );
-    }
-
-
-/*
-        802.11 DATA Frame
-       +----------------+
-       |                |
-       |  Frame Control |
-       |    2 bytes     | 
-       +----------------+
-       |                |
-       |  Duration ID   |
-       |    2 bytes     |        
-       +----------------+
-       |                |
-       |   Address 1    |
-       |    6 bytes     |
-       +----------------+
-       |                |
-       |   Address 2    |
-       |    6 bytes     |
-       +----------------+
-       |                |
-       |   Address 3    |
-       |    6 bytes     |
-       +----------------+
-       |                |
-       | Sequence Cntrl |
-       |    2 bytes     |
-       +----------------+
-       |                |
-       |   Address 4    |
-       |    6 bytes     |
-       +----------------+
-       |  DSAP - 1 byte | = 0xAA ( SNAP )
-       +----------------+
-       |  SSAP - 1 byte | = 0xAA ( SNAP )
-       +----------------+
-       |Control - 1 byte| = 0x03 
-       +----------------+ 
-       | OUI - 3 bytes  | = 0x0
-       |                | 
-       +----------------+
-       | Type - 2 bytes |  = Ethernet type (IP=0x0800)
-       +----------------+ 
-       |                | 
-       |      Data      |
-       |                |
-       ~                ~
-       ~                ~
-       |   46 to 1500   |
-       |     bytes      |
-       |                |
-       +----------------+
-       |      FCS       |
-       |    4 bytes     |
-       +----------------+
-
-*/
-
-// FrameControl field of the 802.11 header
-//
-// |--------------------- control -----------------------|
-//
-// bit 15    14     13     12     11     10      9     8  
-// +-------+-----+------+-----+-------+------+------+----+
-// | Order | WEP | More | Pwr | Retry | More | From | To |
-// |       |     | Data | Mgmt|       | Frag | DS   | DS |
-// +-------+-----+------+-----+-------+------+------+----+
-//    1      1      1     1      1       1      1     1   
-//--------- type ------------|
-//
-//   7-4     3-2      1-0
-//---------+------+----------+
-// Subtype | Type | Protocol |
-//         |      | Version  |
-//---------+------+----------+
-//    4       2        2
-
-/**
-* 802.11 Frame Control field 
-*/
-#pragma pack( 1 )
-struct SFrameControl
-    {
-    /** type field */
-    TUint8 iType;
-    /** control filed */
-    TUint8 iControl;
-
-    /**
-    * Ctor
-    * @param aType type field
-    * @param aControl control field
-    */
-    SFrameControl( 
-        T802Dot11FrameControlTypeMask aType, 
-        T802Dot11FrameControlBitMask aControl ) 
-        : iType( static_cast<TUint8>(aType) ), 
-        iControl( static_cast<TUint8>(aControl) ) {};
-
-    /**
-    * Returns type and control fields combined as a single TUint16 value
-    * @return see above
-    */
-    inline TUint16 operator()() const;
-
-private:
-
-    /** Prohibit assignment operator */
-    SFrameControl& operator= ( const SFrameControl& aObj );    
-    /** Prohibit copy constructor */
-    SFrameControl( const SFrameControl& );
-    } __PACKED;
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline TUint16 SFrameControl::operator()() const
-    {
-    TUint16 value( iType );
-    return ( static_cast<TUint16>(( value << 8 ) + iControl ));
-    }
-
-/**
-* operator== for SFrameControl
-* @param aLhs left hand side
-* @param aRhs right hand side
-* @return ETrue equal, EFalse not equal
-*/
-inline TBool operator== (
-    const SFrameControl& aLhs,
-    const SFrameControl& aRhs)
-    {
-    return static_cast<TBool>( aLhs.iType == aRhs.iType
-        && aLhs.iControl == aRhs.iControl );
-    }
-
-
-// SequenceControl field of the 802.11 header
-//
-// bit      15 - 4         3 - 0
-// +-------------------+-----------+
-// |  Sequence Number  | Fragment  |
-// |                   |  Number   |
-// +-------------------+-----------+
-//          12              4
-
-#pragma pack( 1 )
-struct SPsPoll
-    {
-    const SFrameControl   iFrameControl;  // 2 bytes
-    TUint16               iAid;           // 2 bytes
-    const TMacAddress     iBssId;         // 6 bytes
-    const TMacAddress     iTa;            // 6 bytes
-
-    inline SPsPoll( 
-        TUint16 aAid, 
-        const TMacAddress& aBssId, 
-        const TMacAddress& aTa );
-    } __PACKED; // 16 bytes
-
-
-inline SPsPoll::SPsPoll( 
-    TUint16 aAid, 
-    const TMacAddress& aBssId, 
-    const TMacAddress& aTa )
-    : iFrameControl( E802Dot11FrameTypePowerSavePoll, 
-    static_cast<T802Dot11FrameControlBitMask>(0) ),
-    iAid( 0 ),
-    iBssId( aBssId ), iTa( aTa )
-    {
-    // AID always has the 2 most significant bits set to 1
-    WriteHtoUint16( &iAid, ( aAid | 0xC000  ) );
-    }
-
-/**
-* 802.11 data frame MAC header
-*/
-#pragma pack( 1 )
-struct SDataFrameHeader
-    {
-    /** frame control field */
-    SFrameControl   iFrameControl;  // 2 bytes
-    /** duration field */
-    const TUint16   iDuration;      // 2 bytes
-    /** address1 field */
-    TMacAddress     iAddress1;      // 6 bytes    
-    /** address2 field */
-    TMacAddress     iAddress2;      // 6 bytes
-    /** address3 field */
-    TMacAddress     iAddress3;      // 6 bytes
-    /** sequence control field */
-    const TUint16   iSeqCtl;        // 2 bytes
-    // this littly piggy is only used in AP-AP mode 
-    // which we don't do so it is omitted
-    // const TMacAddress iAddress4;      // 6 bytes   
-    
-    /**
-    * Ctor
-    */ 
-    SDataFrameHeader() 
-        : iFrameControl( E802Dot11FrameTypeData, 
-        static_cast<T802Dot11FrameControlBitMask>(0) )
-        ,iDuration( 0 ), iSeqCtl( 0 ) {};
-
-    /**
-    * Sets WEP bit from Frame Control field
-    */
-    inline void SetWepBit();
-    /**
-    * Clears WEP bit from Frame Control field
-    */
-    inline void ClearWepBit();
-    /**
-    * Sets ToDS bit from Frame Control field
-    */
-    inline void SetToDsBit();
-    /**
-    * Clears ToDS bit from Frame Control field
-    */
-    inline void ClearToDsBit();
-    /**
-    * Clears FromDS bit from Frame Control field
-    */
-    inline void ClearFromDsBit();
-    /**
-    * Evaluates is FromDS bit set from Frame Control field
-    */
-    inline TBool IsFromDsBitSet() const;
-    inline TBool IsToDsBitSet() const;
-    /**
-    * Evaluates is WEP bit set from Frame Control field
-    */
-    inline TBool IsWepBitSet() const;
-    /**
-    * Gets Frame Control field
-    * @return reference to the frame control field
-    */
-    inline const SFrameControl& GetFrameControl() const;
-
-    /**
-    * Returns Sequence Number from iSeqCtl field
-    * @return Sequence Number
-    */
-    inline TUint16 SequenceNumber() const;
-
-private:
-
-    /** Prohibit assignment operator */
-    SDataFrameHeader& operator= ( const SDataFrameHeader& aObj );    
-    /** Prohibit copy constructor */
-    SDataFrameHeader( const SDataFrameHeader& );
-    } __PACKED;
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SDataFrameHeader::SetWepBit()
-    {
-    iFrameControl.iControl |= ( E802Dot11FrameControlWepMask >> 8 );
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SDataFrameHeader::ClearWepBit()
-    {
-    iFrameControl.iControl &= ~( E802Dot11FrameControlWepMask >> 8 );
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SDataFrameHeader::SetToDsBit()
-    {
-    iFrameControl.iControl |= ( E802Dot11FrameControlToDsMask >> 8 );
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SDataFrameHeader::ClearToDsBit()
-    {
-    iFrameControl.iControl &= ~( E802Dot11FrameControlToDsMask >> 8 );
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SDataFrameHeader::ClearFromDsBit()
-    {
-    iFrameControl.iControl &= ~( E802Dot11FrameControlFromDsMask >> 8 );
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline TBool SDataFrameHeader::IsFromDsBitSet() const
-    {
-    return static_cast<TBool>( iFrameControl.iControl & ( 
-        E802Dot11FrameControlFromDsMask >> 8 ));
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline TBool SDataFrameHeader::IsToDsBitSet() const
-    {
-    return static_cast<TBool>( iFrameControl.iControl & ( 
-        E802Dot11FrameControlToDsMask >> 8 ));
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline TBool SDataFrameHeader::IsWepBitSet() const
-    {
-    return static_cast<TBool>( iFrameControl.iControl & ( 
-        E802Dot11FrameControlWepMask >> 8 ));
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline const SFrameControl& SDataFrameHeader::GetFrameControl() const
-    {
-    return iFrameControl;
-    }
-
-// ---------------------------------------------------------
-//
-// ---------------------------------------------------------
-//
-inline TUint16 SDataFrameHeader::SequenceNumber() const
-    {
-    return ( ReadUint16Toh( &iSeqCtl ) >> 4 );    
-    }
-
-
-typedef SDataFrameHeader SNullDataFrame;
-typedef SDataFrameHeader Sdot11MacHeader;
-
-typedef TUint16 T802Dot11QosControl;
-
-/**
-* According to the WiFi-WMM Test Specification v1.2 bits 3-5 of
-* the DSCP bits 0-5 of the DS field determine the user priority
-* This is a mask for those bits for IPv4 header
-*/
-const T802Dot11QosControl KWmmUserPriorityMask = 0x0007;
-
-/**
-* 802.11 QoS data frame MAC header
-*/
-#pragma pack( 1 )
-struct SQosDataFrameHeader
-    {
-    /** frame control field */
-    SDataFrameHeader iHdr;              // 24 bytes
-    /** QoS control field */
-    T802Dot11QosControl iQosControl;    // 2 bytes
-    
-    /**
-    * Resets the QoS Control field to zero
-    */
-    inline void ResetQosControl();
-
-    /**
-    * Sets the WMM user priority (3 lowest bits) of the QoS Control field
-    */
-    inline void SetUserPriority( TUint8 aPriority );
-
-    /**
-    * Returns the WMM user priority (3 lowest bits) of the QoS Control field
-    */
-    inline TUint8 UserPriority() const;
-    } __PACKED;
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SQosDataFrameHeader::ResetQosControl()
-    {
-    iQosControl = 0;
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SQosDataFrameHeader::SetUserPriority( TUint8 aPriority )
-    {
-    // clear old priority
-    WriteHtoUint16( &iQosControl, 
-        ReadUint16Toh( &iQosControl ) & 
-        ( ~KWmmUserPriorityMask ) );
-    // set new priority
-    WriteHtoUint16( &iQosControl, 
-        ReadUint16Toh( &iQosControl ) | 
-        aPriority );
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline TUint8 SQosDataFrameHeader::UserPriority() const
-    {
-    return ( ReadUint16Toh( &iQosControl ) & KWmmUserPriorityMask );
-    }
-
-typedef SQosDataFrameHeader SQosNullDataFrame;
-
-/**
-* 802.11 management frame MAC header
-*/
-#pragma pack( 1 )
-struct SManagementFrameHeader
-    {
-    /** frame control field */
-    SFrameControl   iFrameControl;  // 2 bytes 
-    /** duration field */
-    const TUint16   iDuration;      // 2 bytes
-    /** DA address field */
-    TMacAddress     iDA;            // 6 bytes frames destination = AP   
-    /** SA address field */
-    TMacAddress     iSA;            // 6 bytes source address
-    /** BSSID address field */
-    TMacAddress     iBSSID;         // 6 bytes BSS identifier = iDA
-    /** sequence control field */
-    const TUint16   iSeqCtl;        // 2 bytes
-        
-    /**
-    * Ctor 
-    * @param aTypeMask frame control type mask
-    * @param aControlMask frame control control mask
-    */
-    SManagementFrameHeader( 
-        T802Dot11FrameControlTypeMask aTypeMask, 
-        T802Dot11FrameControlBitMask aControlMask 
-        = static_cast<T802Dot11FrameControlBitMask>( 0 ) ) 
-        : iFrameControl( aTypeMask, aControlMask ), 
-        iDuration( 0 ), iSeqCtl( 0 ) {};
-
-    /**
-    * Set WEP bit from Frame Control Field
-    */
-    void SetWepBit();
-    /**
-    * Clear WEP bit from Frame Control Field
-    */
-    void ClearWepBit();
-
-private:
-
-    /** Prohibit assignment operator */
-    SManagementFrameHeader& operator= ( SManagementFrameHeader& aObj );
-    /** Prohibit copy constructor */
-    SManagementFrameHeader( const SManagementFrameHeader& );
-    } __PACKED;
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SManagementFrameHeader::SetWepBit()
-    {
-    iFrameControl.iControl |= ( E802Dot11FrameControlWepMask >> 8 );
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SManagementFrameHeader::ClearWepBit()
-    {
-    iFrameControl.iControl &= ~( E802Dot11FrameControlWepMask >> 8 );
-    }
-
-/**
-* 802.11 fixed length components required in 
-* authentication request management frame
-*/
-#pragma pack( 1 )
-struct SAuthenticationFixedFields
-    {
-    /** algorithm number */
-    TUint16   iAlgorithmNumber;     // 2 bytes
-    /** sequence number */
-    TUint16   iSequenceNmbr;        // 2 bytes
-    /** status code */
-    TUint16   iStatusCode;          // 2 bytes
-    
-    /**
-    * Ctor
-    * @param aAlgorithm authentication mode used
-    * @param aSeqNmbr sequence number used
-    * @param aStatusCode status code used
-    */
-    inline SAuthenticationFixedFields( 
-        const  TUint16 aAlgorithm = K802Dot11AuthModeOpen, 
-        const TUint16 aSeqNmbr = E802Dot11AuthenticationSeqNmbr1, 
-        const T802Dot11ManagementStatusCode aStatusCode 
-        = E802Dot11StatusSuccess );
-    
-    /**
-    * Returns the authentication transaction algorithm number
-    * @return sequence number
-    */
-    inline TUint16 AlgorithmNumber() const;
-
-    /**
-    * Sets the authentication transaction algorithm number
-    * @param aSequenceNumber value to be set
-    */
-    inline void SetAlgorithmNumber( 
-        TUint16 aAlgorithmNumber );
-
-    /**
-    * Returns the authentication transaction sequence number
-    * @return sequence number
-    */
-    inline TUint16 SequenceNumber() const;
-
-    /**
-    * Sets the authentication transaction sequence number
-    * @param aSequenceNumber value to be set
-    */
-    inline void SetSequenceNumber( TUint16 aSequenceNumber );
-
-    /**
-    * Returns the authentication transaction status code
-    * @return status code
-    */
-    inline TUint16 StatusCode() const;
-
-    } __PACKED;
-    
-inline SAuthenticationFixedFields::SAuthenticationFixedFields( 
-    const  TUint16 aAlgorithm, 
-    const TUint16 aSeqNmbr, 
-    const T802Dot11ManagementStatusCode aStatusCode )
-    {
-    WriteHtoUint16( &iAlgorithmNumber, static_cast<TUint16>( aAlgorithm ) );
-    WriteHtoUint16( &iSequenceNmbr, static_cast<TUint16>( aSeqNmbr ) );
-    WriteHtoUint16( &iStatusCode, static_cast<TUint16>( aStatusCode ) );    
-    }
-    
-inline TUint16 SAuthenticationFixedFields::AlgorithmNumber() const
-    {
-    return ( ReadUint16Toh( &iAlgorithmNumber ) );    
-    }
-
-inline void SAuthenticationFixedFields::SetAlgorithmNumber( TUint16 aAlgorithmNumber )
-    {
-    WriteHtoUint16( &iAlgorithmNumber, aAlgorithmNumber );    
-    }
-
-inline TUint16 SAuthenticationFixedFields::SequenceNumber() const
-    {
-    return ( ReadUint16Toh( &iSequenceNmbr ) );
-    }
-    
-inline void SAuthenticationFixedFields::SetSequenceNumber( 
-    TUint16 aSequenceNumber )
-    {
-    WriteHtoUint16( &iSequenceNmbr, aSequenceNumber );
-    }
-
-inline TUint16 SAuthenticationFixedFields::StatusCode() const
-    {
-    return ( ReadUint16Toh( &iStatusCode ) );
-    }    
-    
-
-/**
-* 802.11 authentication management frame
-*/
-#pragma pack( 1 )
-struct SAuthenticationFrame
-    {
-    /** management frame header */
-    SManagementFrameHeader      iHeader;                // 24 bytes
-    /** authentication frame fixed fields */
-    SAuthenticationFixedFields  iAuthenticationFields;  // 6 bytes
-
-    /** Ctor */
-    SAuthenticationFrame() 
-        : iHeader( E802Dot11FrameTypeAuthentication ) {};
-    
-    /** Increments sequnece number to next number we shall send */
-    inline void IncrementSeqNmbr();
-
-    /** Resets sequnece number to initial value */
-    inline void ResetSeqNmbr();
-
-    /**
-    * Gets the frames sequence number
-    * @return frames sequence number
-    */
-    inline TUint16 GetSeqNmbr() const;
-
-    /**
-    * Gets the frames status code field
-    * @return frames status code field
-    */
-    inline TUint16 GetStatusCode() const;
-
-    /**
-    * Gets the algorithm number 
-    * @return algorithm number
-    */
-    inline TUint16 GetAlgorithmNumber() const;
-
-    /** Sets the WEP bit from frame control field */
-    inline void SetWepBit();
-
-    /** Clears the WEP bit from frame control field */
-    inline void ClearWepBit();
-
-    /**
-    * Sets the the algorithm number field
-    * @param aAlgorithm algorithm to be used
-    */
-    inline void SetAlgorithmNmbr( TUint16 aAlgorithm );
-
-private:
-
-    /** Prohibit assignment operator */
-    SAuthenticationFrame& operator= ( const SAuthenticationFrame& );
-    /** Prohibit copy constructor */
-    SAuthenticationFrame( const SAuthenticationFrame& );
-    } __PACKED;
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SAuthenticationFrame::IncrementSeqNmbr()
-    {
-    iAuthenticationFields.SetSequenceNumber( 
-        iAuthenticationFields.SequenceNumber() + 2 );
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SAuthenticationFrame::ResetSeqNmbr()
-    {
-    iAuthenticationFields.SetSequenceNumber( E802Dot11AuthenticationSeqNmbr1 );        
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline TUint16 SAuthenticationFrame::GetSeqNmbr() const
-    {
-    return ( iAuthenticationFields.SequenceNumber() );
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline TUint16 SAuthenticationFrame::GetStatusCode() const
-    {
-    return ( iAuthenticationFields.StatusCode() );    
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SAuthenticationFrame::SetAlgorithmNmbr( 
-    TUint16 aAlgorithm )
-    {
-    iAuthenticationFields.SetAlgorithmNumber( aAlgorithm );
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline TUint16 SAuthenticationFrame::GetAlgorithmNumber() const
-    {
-    return ( iAuthenticationFields.AlgorithmNumber() );        
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SAuthenticationFrame::SetWepBit()
-    {
-    iHeader.SetWepBit();
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SAuthenticationFrame::ClearWepBit()
-    {
-    iHeader.ClearWepBit();
-    }
-
-/**
-* 802.11 fixed length components required 
-* in association request management frame
-*/
-#pragma pack( 1 )
-struct SAssociationRequestFixedFields
-    {
-    /** capability info fixed field */
-    SCapabilityInformationField iCapabilityInfo;    // 2 bytes
-    /** listeninterval fixed field */
-    SListenIntervalField iListenInterval;           // 2 bytes
-
-    /** Ctor */
-    SAssociationRequestFixedFields() {};
-
-private:
-
-    /** Prohibit assignment operator */
-    SAssociationRequestFixedFields& operator= ( 
-        const SAssociationRequestFixedFields& );
-    /** Prohibit copy constructor */
-    SAssociationRequestFixedFields( 
-        const SAssociationRequestFixedFields& );
-    } __PACKED;
-
-/**
-* operator== for SAssociationRequestFixedFields
-* @param aLhs left hand side
-* @param aRhs right hand side
-* @return ETrue equal, EFalse not equal
-*/
-inline TBool operator== (
-    const SAssociationRequestFixedFields& aLhs,
-    const SAssociationRequestFixedFields& aRhs)
-    {
-    return static_cast<TBool>( aLhs.iCapabilityInfo == aRhs.iCapabilityInfo
-        && aLhs.iListenInterval == aRhs.iListenInterval );
-    }
-
-
-/**
-* 802.11 association request management frame
-* excluding variable length information elements
-* - SSID
-* - supported rates
-*/
-#pragma pack( 1 )
-struct SAssociationRequestFrame
-    {
-    /** management frame header */
-    SManagementFrameHeader          iHeader;        // 24 bytes
-    /** association request fixed fields */
-    SAssociationRequestFixedFields  iFixedFields;   // 4 bytes
-
-    /** Ctor */
-    SAssociationRequestFrame() 
-        : iHeader( E802Dot11FrameTypeAssociationReq ),
-        iFixedFields() {}; 
-
-    /**
-    * Helper function to set short preamble bit in capability info
-    */
-    inline void SetCapabilityShortPreamble();
-
-    /**
-    * Helper function to clear short preamble bit in capability info
-    */
-    inline void ClearCapabilityShortPreamble();
-
-    /**
-    * Helper function to set PBCC bit in capability info
-    */
-    inline void SetCapabilityPbcc();
-
-    /**
-    * Helper function to clear PBCC bit in capability info
-    */
-    inline void ClearCapabilityPbcc();
-
-    /**
-    * Helper function to clear CF fields from capability info
-    */
-    inline void ClearCFfields();
-
-    /** Helper function to clear reserved fields */
-    inline void ClearReservedFields();
-
-    /** Helper function to set WEP bit from the capability info fixed field */
-    inline void SetWepBit();
-
-    /** 
-    * Helper function to clear WEP bit from 
-    * the capability info fixed field 
-    */
-    inline void ClearWepBit();
-
-private:
-
-    /** Prohibit assignment operator */
-    SAssociationRequestFrame& operator= ( 
-        const SAssociationRequestFrame& );
-    /** Prohibit copy constructor */
-    SAssociationRequestFrame( 
-        const SAssociationRequestFrame& );
-    } __PACKED; // 28 bytes
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SAssociationRequestFrame::SetCapabilityShortPreamble()
-    {
-    iFixedFields.iCapabilityInfo.SetShortPreamble();
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SAssociationRequestFrame::ClearCapabilityShortPreamble()
-    {
-    iFixedFields.iCapabilityInfo.ClearShortPreamble();
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SAssociationRequestFrame::SetCapabilityPbcc()
-    {
-    iFixedFields.iCapabilityInfo.SetPbcc();
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SAssociationRequestFrame::ClearCapabilityPbcc()
-    {
-    iFixedFields.iCapabilityInfo.ClearPbcc();
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SAssociationRequestFrame::ClearCFfields()
-    {
-    iFixedFields.iCapabilityInfo.ClearCfFields();
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SAssociationRequestFrame::ClearReservedFields()
-    {
-    iFixedFields.iCapabilityInfo.ClearReservedFields();
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SAssociationRequestFrame::SetWepBit()
-    {
-    iFixedFields.iCapabilityInfo.SetWepBit();
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SAssociationRequestFrame::ClearWepBit()
-    {
-    iFixedFields.iCapabilityInfo.ClearWepBit();
-    }
-
-/**
-* 802.11 association response frame fixed fields
-*/
-#pragma pack( 1 )
-struct SAssociationResponseFixedFields
-    {
-    /** capability info fixed field */
-    SCapabilityInformationField iCapabilityInfo;    // 2 bytes
-    /** status code fixed field */
-    TUint16                     iStatusCode;        // 2 bytes
-    /** AID fixed field */
-    TUint16                     iAID;               // 2 bytes
-    
-    /**
-    * Returns the association response status code
-    * @return status code
-    */
-    inline TUint16 StatusCode() const;
-
-    /**
-    * Returns the Association ID (AID)
-    * @return AID
-    */
-    inline TUint16 Aid() const;
-
-private:
-
-    /** Prohibit assignment operator */
-    SAssociationResponseFixedFields& operator= ( 
-        const SAssociationResponseFixedFields& );    
-    /** Prohibit copy constructor */
-    SAssociationResponseFixedFields( const SAssociationResponseFixedFields& );
-    } __PACKED;
-
-inline TUint16 SAssociationResponseFixedFields::StatusCode() const
-    {
-    return ( ReadUint16Toh( &iStatusCode ) );
-    }
-
-inline TUint16 SAssociationResponseFixedFields::Aid() const
-    {
-    return ( ReadUint16Toh( &iAID ) );
-    }
-
-
-/**
-* 802.11 fixed length components required in deauthenticate frame
-*/
-#pragma pack( 1 )
-struct SDeauthenticateFixedFields
-    {
-    /** reason code fixed field */
-    TUint16 iReasonCode;
-
-    /** Ctor */
-    SDeauthenticateFixedFields()
-        : iReasonCode( E802Dot11ReasonDeauthStationLeft ) {};
-
-    /*
-    * Returns the reason code 
-    * @return Reason code
-    */
-    inline TUint16 ReasonCode() const;
-
-    /** Setter for the reason code */
-    inline void SetReasonCode( TUint16 aReasonCode );
-    
-private:
-
-    /** Prohibit assignment operator */
-    SDeauthenticateFixedFields& operator= ( 
-        T802Dot11ManagementReasonCode aReason );
-    /** Prohibit copy constructor */
-    SDeauthenticateFixedFields( const SDeauthenticateFixedFields& );
-    } __PACKED;
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline TUint16 SDeauthenticateFixedFields::ReasonCode() const
-    {
-    return ( ReadUint16Toh( &iReasonCode ) );
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SDeauthenticateFixedFields::SetReasonCode( TUint16 aReasonCode )
-    {
-    WriteHtoUint16( &iReasonCode, aReasonCode );
-    }
-
-/**
-* operator== for SDeauthenticateFixedFields
-* @param aLhs left hand side
-* @param aRhs right hand side
-* @return ETrue equal, EFalse not equal
-*/
-inline TBool operator== (
-    const SDeauthenticateFixedFields& aLhs,
-    const SDeauthenticateFixedFields& aRhs)
-    {
-    return static_cast<TBool>( 
-        aLhs.ReasonCode() == aRhs.ReasonCode() );
-    }
-
-/**
-* 802.11 deauthenticate management frame
-*/
-#pragma pack( 1 )
-struct SDeauthenticateFrame
-    {
-    /** management frame header */
-    SManagementFrameHeader      iHeader;        // 24 bytes     
-    /** reason code fixed field  */
-    SDeauthenticateFixedFields  iReasonCode;    // 2 bytes
-
-    /** Ctor */
-    SDeauthenticateFrame() 
-        : iHeader( E802Dot11FrameTypeDeauthentication ),
-        iReasonCode() {};
-
-private:
-
-    /** Prohibit assignment operator */
-    SDeauthenticateFrame& operator= ( const SDeauthenticateFrame& );
-    /** Prohibit copy constructor */
-    SDeauthenticateFrame( const SDeauthenticateFrame& );
-    } __PACKED;
-
-/**
-* operator== for SDeauthenticateFrame
-* @param aLhs left hand side
-* @param aRhs right hand side
-* @return ETrue equal, EFalse not equal
-*/
-inline TBool operator== (
-    const SDeauthenticateFrame& aLhs,
-    const SDeauthenticateFrame& aRhs)
-    {
-    return ( aLhs == aRhs );
-    }
-
-/**
-* 802.11 fixed length components required in disassociate frame
-*/
-#pragma pack( 1 )
-struct SDisAssociateFixedFields
-    {
-    /** reason code fixed field */
-    TUint16 iReasonCode;
-
-    /** Ctor */
-    inline SDisAssociateFixedFields();
-
-    /*
-    * Returns the reason code 
-    * @return Reason code
-    */
-    inline TUint16 ReasonCode() const;
-
-    /** Setter for the reason code */
-    inline void SetReasonCode( TUint16 aReasonCode );
-    
-private:
-    // Prohibit assignment operator
-    SDisAssociateFixedFields& operator= ( const SDisAssociateFixedFields& );
-    // Prohibit copy constructor    
-    SDisAssociateFixedFields( const SDisAssociateFixedFields& );
-    } __PACKED;
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline SDisAssociateFixedFields::SDisAssociateFixedFields()
-    {
-    WriteHtoUint16( &iReasonCode, E802Dot11ReasonClass3FrameWhenNotAssoc );
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline TUint16 SDisAssociateFixedFields::ReasonCode() const
-    {
-    return ( ReadUint16Toh( &iReasonCode ) );
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SDisAssociateFixedFields::SetReasonCode( TUint16 aReasonCode )
-    {
-    WriteHtoUint16( &iReasonCode, aReasonCode );
-    }
-
-/**
-* operator== for SDisAssociateFixedFields
-* @param aLhs left hand side
-* @param aRhs right hand side
-* @return ETrue equal, EFalse not equal
-*/
-inline TBool operator== (
-    const SDisAssociateFixedFields& aLhs,
-    const SDisAssociateFixedFields& aRhs)
-    {
-    return static_cast<TBool>( 
-        aLhs.ReasonCode() == aRhs.ReasonCode() );
-    }
-
-/**
-* 802.11 disassociate management frame
-*/
-#pragma pack( 1 )
-struct SDisassociateFrame
-    {
-    /** management frame header */
-    SManagementFrameHeader      iHeader;        // 24 bytes 
-    /** reason code fixed field  */
-    SDisAssociateFixedFields    iReasonCode;    // 2 bytes
-
-    /** Ctor */
-    SDisassociateFrame()
-        : iHeader( E802Dot11FrameTypeDisassociation ),
-        iReasonCode() {};
-
-private:
-
-    /** Prohibit assignment operator */
-    SDisassociateFrame& operator= ( const SDisassociateFrame& );
-    /** Prohibit copy constructor */
-    SDisassociateFrame( const SDisassociateFrame& );
-    } __PACKED; // 26 bytes
-
-/**
-* operator== for SDisassociateFrame
-* @param aLhs left hand side
-* @param aRhs right hand side
-* @return ETrue equal, EFalse not equal
-*/
-inline TBool operator== (
-    const SDisassociateFrame& aLhs,
-    const SDisassociateFrame& aRhs)
-    {
-    return ( aLhs == aRhs );
-    }
-
-/**
-* 802.11 fixed length components required 
-* in reassociation request management frame
-*/
-#pragma pack( 1 )
-struct SReassociationRequestFixedFields
-    {
-    /** capability info fixed field */
-    SCapabilityInformationField iCapabilityInfo;    // 2 bytes
-    /** listeninterval fixed field */
-    SListenIntervalField iListenInterval;           // 2 bytes
-    /** current AP address fixed field */
-    TMacAddress iCurrentApAddress;                  // 6 bytes
-
-    /** Ctor */
-    SReassociationRequestFixedFields() {};
-
-private:
-
-    /** Prohibit assignment operator */
-    SReassociationRequestFixedFields& operator= ( 
-        const SReassociationRequestFixedFields& );
-    /** Prohibit copy constructor */
-    SReassociationRequestFixedFields( 
-        const SReassociationRequestFixedFields& );
-    } __PACKED;
-
-/**
-* operator== for SReassociationRequestFixedFields
-* @param aLhs left hand side
-* @param aRhs right hand side
-* @return ETrue equal, EFalse not equal
-*/
-inline TBool operator== (
-    const SReassociationRequestFixedFields& aLhs,
-    const SReassociationRequestFixedFields& aRhs)
-    {
-    return static_cast<TBool>( aLhs.iCapabilityInfo == aRhs.iCapabilityInfo
-                               && aLhs.iListenInterval == aRhs.iListenInterval
-                               && aLhs.iCurrentApAddress == aRhs.iCurrentApAddress );
-    }
-
-/**
-* 802.11 reassociation request management frame
-* excluding variable length information elements
-*/
-#pragma pack( 1 )
-struct SReassociationRequestFrame
-    {
-    /** management frame header */
-    SManagementFrameHeader          iHeader;        // 24 bytes
-    /** association request fixed fields */
-    SReassociationRequestFixedFields  iFixedFields; // 10 bytes
-
-    /** Ctor */
-    SReassociationRequestFrame() 
-        : iHeader( E802Dot11FrameTypeReassociationReq ),
-        iFixedFields() {}; 
-
-    /**
-    * Helper function to set short preamble bit in capability info
-    */
-    inline void SetCapabilityShortPreamble();
-
-    /**
-    * Helper function to clear short preamble bit in capability info
-    */
-    inline void ClearCapabilityShortPreamble();
-
-    /**
-    * Helper function to set PBCC bit in capability info
-    */
-    inline void SetCapabilityPbcc();
-
-    /**
-    * Helper function to clear PBCC bit in capability info
-    */
-    inline void ClearCapabilityPbcc();
-
-    /**
-    * Helper function to clear CF fields from capability info
-    */
-    inline void ClearCFfields();
-
-    /** Helper function to clear reserved fields */
-    inline void ClearReservedFields();
-
-    /** Helper function to set WEP bit from the capability info fixed field */
-    inline void SetWepBit();
-
-    /** 
-    * Helper function to clear WEP bit from 
-    * the capability info fixed field 
-    */
-    inline void ClearWepBit();
-
-private:
-
-    /** Prohibit assignment operator */
-    SReassociationRequestFrame& operator= ( 
-        const SReassociationRequestFrame& );
-    /** Prohibit copy constructor */
-    SReassociationRequestFrame( 
-        const SReassociationRequestFrame& );
-    } __PACKED; // 34 bytes
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SReassociationRequestFrame::SetCapabilityShortPreamble()
-    {
-    iFixedFields.iCapabilityInfo.SetShortPreamble();
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SReassociationRequestFrame::ClearCapabilityShortPreamble()
-    {
-    iFixedFields.iCapabilityInfo.ClearShortPreamble();
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SReassociationRequestFrame::SetCapabilityPbcc()
-    {
-    iFixedFields.iCapabilityInfo.SetPbcc();
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SReassociationRequestFrame::ClearCapabilityPbcc()
-    {
-    iFixedFields.iCapabilityInfo.ClearPbcc();
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SReassociationRequestFrame::ClearCFfields()
-    {
-    iFixedFields.iCapabilityInfo.ClearCfFields();
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SReassociationRequestFrame::ClearReservedFields()
-    {
-    iFixedFields.iCapabilityInfo.ClearReservedFields();
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SReassociationRequestFrame::SetWepBit()
-    {
-    iFixedFields.iCapabilityInfo.SetWepBit();
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline void SReassociationRequestFrame::ClearWepBit()
-    {
-    iFixedFields.iCapabilityInfo.ClearWepBit();
-    }
-
-/**
-* 802.11 reassociation response frame fixed fields
-*/
-#pragma pack( 1 )
-struct SReassociationResponseFixedFields
-    {
-    /** capability info fixed field */
-    SCapabilityInformationField iCapabilityInfo;    // 2 bytes
-    /** status code fixed field */
-    TUint16                     iStatusCode;        // 2 bytes
-    /** AID fixed field */
-    TUint16                     iAID;               // 2 bytes
-
-    /*
-    * Returns the reassociation response status code
-    * @return status code
-    */
-    inline TUint16 StatusCode() const;
-
-    /*
-    * Returns the Asociation ID (AID)
-    * @return AID
-    */
-    inline TUint16 Aid() const;
-
-private:
-
-    /** Prohibit assignment operator */
-    SReassociationResponseFixedFields& operator= ( 
-        const SReassociationResponseFixedFields& );    
-    /** Prohibit copy constructor */
-    SReassociationResponseFixedFields( const SReassociationResponseFixedFields& );
-    } __PACKED;
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline TUint16 SReassociationResponseFixedFields::StatusCode() const
-    {
-    return ( ReadUint16Toh( &iStatusCode ) );
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline TUint16 SReassociationResponseFixedFields::Aid() const
-    {
-    return ( ReadUint16Toh( &iAID ) );
-    }
-
-
-/**
-* SNAP header
-*/
-#pragma pack( 1 )
-struct SSnapHeader
-    {
-    /** destination service access point */
-    TUint8 iDSAP;
-    /** source service access point */
-    TUint8 iSSAP;
-    /** control field */
-    TUint8 iControl;
-    /** organizationally unique identifier */
-    TUint8 iOUI[KOIULength];    // 3
-    } __PACKED; // 6 bytes
-
-/**
-* operator== for SSnapHeader
-* @param aLhs left hand side
-* @param aRhs right hand side
-* @return ETrue equal, EFalse not equal
-*/
-inline TBool operator== (
-    const SSnapHeader& aLhs,
-    const SSnapHeader& aRhs)
-    {    
-    return ( equal( reinterpret_cast<const TUint8*>(&aLhs),
-                    reinterpret_cast<const TUint8*>(&aLhs) + sizeof(SSnapHeader), 
-                    reinterpret_cast<const TUint8*>(&aRhs) ));    
-    }
-
-/**
-* RFC 1042 encapsulation SNAP header
-*/
-const SSnapHeader KEncapsulatingRfc1042SnapHeader 
-    = { 0xAA, 0xAA, 0x03, { 0x00, 0x00, 0x00 } };
-
-/**
-* 802.1 h SNAP header
-*/
-const SSnapHeader KEncapsulating802_1hSnapHeader 
-    = { 0xAA, 0xAA, 0x03, { 0x00, 0x00, 0xF8 } };
-
-/**
-* 802.11 data frame encapsulation header
-*/ 
-#pragma pack( 1 )
-struct SDataFrameEncapsulationHeader
-    {
-    /** SNAP header */
-    SSnapHeader     iSnapHeader;    // 6    
-    } __PACKED;
-
-/**
-* 802.11 data frame and its encapsulation header combined
-*/ 
-#pragma pack( 1 )
-struct SDataMpduHeader
-    {
-    /** Ctor */
-    SDataMpduHeader()
-        {
-        iEncHdr.iSnapHeader = KEncapsulatingRfc1042SnapHeader;
-        }
-
-    /** 802.11 data frame header */
-    SDataFrameHeader iHdr;                  // 24 
-    /** 802.11 data frame encapsulation header */
-    SDataFrameEncapsulationHeader iEncHdr;  // 6
-    } __PACKED; // 30
-
-/*
-        802.2 SNAP DATA Frame 
-       +----------------+
-       |                |
-       |  Destination   |
-       |    6 bytes     |
-       +----------------+
-       |                |
-       |     Source     |
-       |    6 bytes     |
-       +----------------+
-       |  Frame Length  | Must be <= 1500 Dec.
-       |    2 bytes     |
-       +----------------+
-       |  DSAP - 1 byte | = 0xAA ( SNAP )
-       +----------------+
-       |  SSAP - 1 byte | = 0xAA ( SNAP )
-       +----------------+
-       |Control - 1 byte| = 0x03 
-       +----------------+ 
-       | OUI - 3 bytes  | = 0x0
-       |                | 
-       +----------------+
-       | Type - 2 bytes |  = Ethernet type (IP=0x0800)
-       +----------------+ 
-       |                | 
-       |      Data      |
-       |                |
-       ~                ~
-       ~                ~
-       |   46 to 1500   |
-       |     bytes      |
-       |                |
-       +----------------+
-       |      FCS       |
-       |    4 bytes     |
-       +----------------+
-*/
-
-/*
-This is an Ethernet Version 2 frame:
-
-       +--------------+
-       |              | The destination address is a six byte Media Access
-       | Destination  | Control (MAC) address, usually burned into the
-       |   6 bytes    | ROM of the Ethernet card.
-       +--------------+
-       |              | The source address is a six byte MAC address, and
-       |   Source     | can signify a physical station or a broadcast.
-       |   6 bytes    |
-       +--------------+
-       |     Type     | The Type field it must be grater then 1500 dec.
-       |    2 bytes   |
-       +--------------+
-       |              |  Any higher layer information is placed in the
-       |    Data      |  data field, which could contain protocol
-       |              |  information or user data.
-       ~              ~
-       ~              ~
-       |  46 to 1500  |
-       |    bytes     |
-       |              |
-       +--------------+
-       |     FCS      |  
-       |   4 bytes    |  
-       +--------------+  
-                         
-*/
-
-/**
-* 802.11 QoS data frame and its encapsulation header combined
-*/ 
-#pragma pack( 1 )
-struct SQosDataMpduHeader
-    {
-    /** Ctor */
-    SQosDataMpduHeader()
-        {
-        iEncHdr.iSnapHeader = KEncapsulatingRfc1042SnapHeader;
-        }
-
-    /** 802.11 QoS data frame header */
-    SQosDataFrameHeader iHdr;               // 26 
-    /** 802.11 data frame encapsulation header */
-    SDataFrameEncapsulationHeader iEncHdr;  // 6
-    } __PACKED; // 33
-
-const TUint16 KUint16HiByteMask = 0xFF00;
-
-/**
-* Ethernet 14-byte Header (RFC 894)
-*/
-#pragma pack( 1 )
-struct SEthernetHeader 
-    {
-    /** destination MAC address */
-    TMacAddress iDA;    // 6
-    /** source MAC address */
-    TMacAddress iSA;    // 6
-    /** ethernet type field */
-    TUint16     iType;  // 2
-
-    /**
-    * Returns the Ethernet Type
-    * @return ethernet type
-    */
-    inline TUint16 Type() const;
-    } __PACKED;
-
-// ---------------------------------------------------------------------------
-// If the type is other than EAPOL (e.g. IP or ARP), we need to reverse the 
-// byte order as the IP world uses different byter order (MSB first) as WLAN 
-// MAC layer (LSB first)
-// ---------------------------------------------------------------------------
-//
-inline TUint16 SEthernetHeader::Type() const
-    {
-    return ReverseUint16( ReadUint16Toh( &iType ) );
-    }
-
-/**
-* Ethernet 802.2/802.3 Header (RFC 1042)
-*/
-#pragma pack( 1 )
-struct SEthernet802_3Header
-    {
-    /** destination MAC address */
-    TMacAddress iDA;        // 6
-    /** source MAC address */
-    TMacAddress iSA;        // 6
-    /** length of frame */
-    TUint16     iLength;    // 2
-    /** SNAP header */
-    SSnapHeader iSnapHeader;// 6
-    /** type field */    
-    TUint16     iType;      // 2
-    } __PACKED;
-
-/**
-* Ethernet type field
-*/
-#pragma pack( 1 )
-struct SEthernetType
-    {
-    /** type field */    
-    TUint16     iType;      // 2
-
-    /**
-    * Returns the Ethernet Type
-    * @return ethernet type
-    */
-    inline TUint16 Type() const;    
-    } __PACKED;
-
-// ---------------------------------------------------------------------------
-// We need to reverse the byte order as the IP world uses different byter 
-// order (MSB first) as WLAN MAC layer (LSB first)
-// ---------------------------------------------------------------------------
-//
-inline TUint16 SEthernetType::Type() const
-    {
-    return ReverseUint16( ReadUint16Toh( &iType ) );
-    }
-
-/**
-* IP version mask
-*/
-const TUint8 KIpVersionMask = 0xF0;
-
-/**
-* The DS (differentiated services) field according to RFC 2474
-* Bits 0-5: DSCP (differentiated services codepoint)
-* Bits 6-7: CU (currently unused)
-*/
-typedef TUint8 TDsField;
-
-/**
-* According to the WiFi-WMM Test Specification v1.2 the three highest 
-* bits of the DS field determine the user priority
-* This is a mask for those bits in IPv4 header
-*/
-const TUint8 KDscpIpv4Mask = 0xE0;
-
-/**
-* Version number for IPv4
-*/
-const TUint8 KIpv4 = 4;
-
-/**
-* Version number for IPv6
-*/
-const TUint8 KIpv6 = 6;
-
-/**
-* IPv4 header (RFC 791) prefix with the Type of Service field redefined
-* as the DS field according to RFC 2474
-*/
-#pragma pack( 1 )
-struct SIpv4HeaderPrefix
-    {
-    /** Version (4 highest bits) + IHL (Internet Header Length, 4 lowest 
-    bits) */
-    TUint8 iVersionIhl;    // 1
-    /** DS field */ 
-    TDsField iDs;          // 1
-
-    /**
-    * Returns the IP protocol version
-    */
-    inline TUint8 Version() const;
-
-    /**
-    * Returns the 802.1d priority value (range 0-7)
-    */
-    inline TUint8 The802Dot1dPriority() const;
-    } __PACKED;
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline TUint8 SIpv4HeaderPrefix::Version() const
-    {
-    return ( iVersionIhl & KIpVersionMask ) >> 4;
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline TUint8 SIpv4HeaderPrefix::The802Dot1dPriority() const
-    {
-    return ( ( iDs & KDscpIpv4Mask ) >> 5 );
-    }
-
-/**
-* According to the WiFi-WMM Test Specification v1.2 the three highest 
-* bits of the DS field determine the user priority
-* This is a mask for those bits in IPv6 header
-*/
-const TUint8 KDscpIpv6Mask = 0x0E;
-
-/**
-* IPv6 header (RFC 2460) prefix with the Traffic Class field redefined
-* as the DS field according to RFC 2474
-*/
-#pragma pack( 1 )
-struct SIpv6HeaderPrefix
-    {
-    /** 
-    * Version (highest 4 bits) + highest 4 bits of the DS (in lowest 4 bits
-    * of this byte)
-    */
-    TUint8 iVersionDs;    // 1
-
-    /**
-    * Returns the 802.1d priority value (range 0-7)
-    */
-    inline TUint8 The802Dot1dPriority() const;
-    } __PACKED;
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-inline TUint8 SIpv6HeaderPrefix::The802Dot1dPriority() const
-    {
-    return ( ( iVersionDs & KDscpIpv6Mask ) >> 1 );
-    }
-
-// pop the pragma pack stack to return to normal alignment of structures
-#pragma pack( ) 
-
-/**
-* typedef for WEP key
-*/
-typedef TUint8 TWepKey[KMaxWEPKeyLength];
-
-/**
-* Struct for mapped key: key + mac address
-*/
-struct SMappedWepKey
-    {
-    TMacAddress MacAddress;
-    TWepKey WepKey;
-    };
-
-/**
-* Struct for tkip key
-*/
-struct STkipKey
-    {
-    TMacAddress MacAddress;
-    TWepKey WepKey;
-    TUint8 KeyId;
-    TUint8 KeyIndicator;
-    TUint8 KeyIndex;
-    };
-
-#endif      // WLAN802DOT11_H   
--- a/hotspotfw/hsserver/inc/algorithm.h	Wed Feb 03 12:16:50 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,283 +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:   Algorithms for HotSpot FW   
-*
-*/
-
-
-
-
-
-
-#ifndef ALGORITHM_H
-#define ALGORITHM_H
-
-/**
-* global operator!= for type T
-* @param aLhs left hand side
-* @param aRhs right hand side
-* @return ETrue equal, EFalse not equal
-*/
-template< class T >
-inline TBool operator!= (
-    const T& aLhs,
-    const T& aRhs)
-    {
-    return !( aLhs == aRhs );
-    }
-
-/**
-* global operator > for type T
-* @param aLhs left hand side
-* @param aRhs right hand side
-* @return ETrue greater, EFalse else
-*/
-template< class T >
-inline TBool operator > (
-    const T& aLhs,
-    const T& aRhs)
-    {
-    return ( aRhs < aLhs );
-    }
-
-/**
-* global operator <= for type T
-* @param aLhs left hand side
-* @param aRhs right hand side
-* @return ETrue smaller or equal, EFalse else
-*/
-template< class T >
-inline TBool operator <= (
-    const T& aLhs,
-    const T& aRhs)
-    {
-    return !( aRhs < aLhs );
-    }
-
-/**
-* global operator >= for type T
-* @param aLhs left hand side
-* @param aRhs right hand side
-* @return ETrue greater or equal, EFalse else
-*/
-template< class T >
-inline TBool operator >= (
-    const T& aLhs,
-    const T& aRhs)
-    {
-    return !( aLhs < aRhs );
-    }
-
-/**
-* Just like equal in C++ STL for testing equality for T type
-* Checks weather elements in the range [aBeg, aEnd) are equal 
-* to the elements in the range starting with aCmpBeg
-* Complexity: linear
-* @param aBeg begin of the search range
-* @param aEnd end ( one past last element ) of the search range
-* @param aCmpBeg begin of the range to be compared with
-* @return ETrue equal, EFalse not equal
-*/
-template< class T >
-inline TBool equal( 
-    const T* aBeg, 
-    const T*const aEnd, 
-    const T* aCmpBeg)
-    {
-    while ( aBeg != aEnd )
-        {
-        if ( *aBeg != *aCmpBeg )
-            {
-            return EFalse;
-            }
-        ++aBeg;
-        ++aCmpBeg;
-        }
-
-    return ETrue;
-    }
-
-/**
-* Just like find in C++ STL
-* Returns the position of the first element in the range [aBeg, aEnd)
-* that has a value equal to aValue
-* Complexity: linear
-* @param aBeg begin of range
-* @param aEnd  end ( one past last element ) of the range
-* @param aValue value to be searched
-* @return the position of the first element in the range (aBeg, aEnd]
-* that has a value equal to aValue. aEnd is returned if no matching 
-* element is found
-*/
-template< class T, class J >
-inline T* find(
-    const T* aBeg,
-    const T* const aEnd,
-    const J& aValue)
-    {
-    while ( aBeg != aEnd )
-        {
-        if ( *aBeg == aValue )
-            {
-            break;
-            }
-
-        ++aBeg;
-        }
-
-    return const_cast<T*>(aBeg);
-    }
-
-/**
-* Just like find_if in C++ STL
-* Returns the position of the first element in the range [aBeg, aEnd)
-* for which the unary predicate op(elem) yields true
-* Complexity: linear
-* @param aBeg begin of range
-* @param aEnd  end ( one past last element ) of the range
-* @param aUnaryPredicate a unary predicate
-* @return the position of the first element in the range (aBeg, aEnd]
-* for which the unary predicate op(elem) yields true. 
-* aEnd is returned if no matching element is found
-* NOTE: aUnaryPredicate should not change its state during a function call
-*/
-template< class T, class J >
-inline T* find_if(
-    const T* aBeg,
-    const T* const aEnd,
-    const J& aUnaryPredicate)
-    {
-    while ( aBeg != aEnd )
-        {
-        if ( aUnaryPredicate( *aBeg ) )
-            {
-            break;
-            }
-
-        ++aBeg;
-        }
-
-    return const_cast<T*>(aBeg);
-    }
-
-/**
-* Just like fill in C++ STL for T type
-* Assigns aValue to each element in the range [aBeg, aEnd)
-* The caller must ensure that the destination range is big enough 
-* Complexity: linear
-* @param aBeg begin of range
-* @param aEnd  end ( one past last element ) of the range
-* @param aValue value to be assigned
-*/
-template< class T, class J>
-inline void fill(
-    T* aBeg,
-    const T* const aEnd,
-    const J& aValue)
-    {
-    while ( aBeg != aEnd )
-        {
-        *aBeg = aValue;
-        ++aBeg;
-        }
-    }
-
-/**
-* Just like fill_n in C++ STL for T type
-* Assigns aValue to the first aNum elements in the range starting with aBeg
-* The caller must ensure that the destination range is big enough 
-* Complexity: linear
-* @param aBeg begin of range
-* @param aNum number of elements to be processed
-* @param aValue value to be assigned
-*/
-template< class T, class J >
-inline void fill_n(
-    T* aBeg,
-    TUint32 aNum,
-    const J& aValue)
-    {
-    while ( aNum )
-        {
-        *aBeg = aValue;
-        ++aBeg;
-        --aNum;
-        }
-    }
-
-/**
-* Just like copy in C++ STL 
-* @param aSrc begin of copy
-* @param aSrcEnd end of copy
-* @param aDest target of copy
-* @return aDest
-*/
-template<class T>
-inline T* copy(
-    const T* aSrc,
-    const T* aSrcEnd,
-    T* aDest)
-    {
-    while ( aSrc != aSrcEnd )
-        {
-        *aDest = *aSrc;
-        ++aSrc;
-        ++aDest;
-        }
-
-    return aDest;
-    }
-
-template<class T>
-inline T* reverse_copy(
-    const T* aSrcBeg,
-    const T* aSrcEnd,
-    T* aDest)
-    {
-    --aSrcEnd;
-    while ( aSrcEnd >= aSrcBeg )
-        {        
-        *aDest = *aSrcEnd;
-        --aSrcEnd;
-        ++aDest;
-        }
-
-    return aDest;
-    }
-
-/**
-* Does a looped copy for T type
-* @param aSource source of the copy
-* @param aDest destination where to copy
-* @param aCount number of iterations
-* @return aDest
-*/
-template<class T>
-inline TAny* assign(
-    const T* aSource,
-    T* aDest,
-    const TInt aCount)
-    {
-    TAny* origdest = static_cast<TAny*>(aDest);
-    for ( TInt idx = 0 ; idx != aCount ; ++idx, ++aSource, ++aDest )
-        {
-        *aDest = *aSource;
-        }
-
-    return origdest;
-    }
-
-#endif      // ALGORITHM_H
-            
-// End of File
--- a/hotspotfw/hsserver/inc/hotspotclientserver.h	Wed Feb 03 12:16:50 2010 +0000
+++ b/hotspotfw/hsserver/inc/hotspotclientserver.h	Fri Feb 19 23:55:42 2010 +0200
@@ -56,6 +56,8 @@
 
 const TUint KHssShutdown  = 777;
 
+const TUint8 KHssMacAddressLength = 6;
+
 const TUid KInternetConnectivityUid={0x10282EC5};
 const TUid K3rdPartyEcomInterfaceUid={0x10282ED1};
 
--- a/hotspotfw/hsserver/inc/hssscanoffsets.h	Wed Feb 03 12:16:50 2010 +0000
+++ b/hotspotfw/hsserver/inc/hssscanoffsets.h	Fri Feb 19 23:55:42 2010 +0200
@@ -20,44 +20,36 @@
 #ifndef HSSSCANOFFSETS_H
 #define HSSSCANOFFSETS_H
 
-#include "802dot11.h"
+
+/** Offset for RCPI value. */
+const TUint32 RX_LEVEL_OFFSET         = 0;   
 
-// Offsets for the static header.
-const TUint32 RX_LEVEL_OFFSET         = 0;                                                // 0
-const TUint32 RX_SNR_OFFSET           = RX_LEVEL_OFFSET + sizeof(TUint32);                // 4
+/** Offset for SNR value. Deprecated. */
+const TUint32 RX_SNR_OFFSET           = 4;                
 
-// Offsets for scan results.
-const TUint32 LENGTH_OFFSET           = RX_SNR_OFFSET + sizeof(TUint32);                  // 8
+/** Offset for beacon/probe response frame data length. */
+const TUint32 LENGTH_OFFSET           = 8;                  
 
-// length of the control information proceeding the DOT11 header (DOT11_BASE_OFFSET)
+/** Length of the control information header. */
 const TUint32 CNTRL_HEADER_LEN        = 12;
 
+/** Start of beacon/probe response frame data. */
 const TUint32 DOT11_BASE_OFFSET       = CNTRL_HEADER_LEN;
-// start of BSSID
+
+/** Start of BSSID field (6 octets ). */
 const TUint32 BSSID_OFFSET            = DOT11_BASE_OFFSET + 16;           
-// start of first IE in beacon of the probe response
-const TUint32 BODY_OFFSET             = DOT11_BASE_OFFSET + sizeof(SManagementFrameHeader)
-                                        + KTimeStampFixedFieldLength
-                                        + KBeaconIntervalFixedFieldLength
-                                        + KCapabilityInformationFixedFieldLength;
 
-const TUint32 BEACON_INTERVAL_OFFSET  = DOT11_BASE_OFFSET 
-                                        + sizeof(SManagementFrameHeader)
-                                        + KTimeStampFixedFieldLength;
-const TUint32 CAPABILITY_OFFSET       = BEACON_INTERVAL_OFFSET + KBeaconIntervalFixedFieldLength;
+/** Start of Timestamp field (8 octets). */
+const TUint32 TIMESTAMP_OFFSET        = DOT11_BASE_OFFSET + 24;
 
-// start of timestamp field
-const TUint32 TIMESTAMP_OFFSET        = DOT11_BASE_OFFSET + sizeof(SManagementFrameHeader);
+/** Start of Beacon Interval field (2 octets). */
+const TUint32 BEACON_INTERVAL_OFFSET  = DOT11_BASE_OFFSET + 32;
+
+/** Start of Capability field (2 octets). */
+const TUint32 CAPABILITY_OFFSET       = DOT11_BASE_OFFSET + 34;
 
-// Offsets for the static header.
-const TUint16 x30RX_LEVEL_OFFSET         = 13;
-const TUint16 x30RX_SNR_OFFSET           = 12;
-//const TUint16 FRAME_CNTRL_OFFSET      = 12;
-const TUint16 x30BSSID_OFFSET            = 0;
-const TUint16 x30BEACON_INTERVAL_OFFSET  = 52;
-const TUint16 x30CAPABILITY_OFFSET       = 54;
-const TUint16 x30STATUS_INFO_LENGTH      = 12;
-// Offsets for scan results.
-const TUint16 x30LENGTH_OFFSET           = 62;
-const TUint16 x30BODY_OFFSET             = 64 + x30STATUS_INFO_LENGTH;
+/** Start of first IE in beacon/probe response frame. */
+const TUint32 BODY_OFFSET             = DOT11_BASE_OFFSET + 36;
+
+
 #endif // HSSSCANOFFSETS_H
--- a/hotspotfw/hsserver/inc/pack.h	Wed Feb 03 12:16:50 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +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:   Pack macros for WLAN
-*
-*/
-
-
-
-
-#ifndef PACK_H
-#define PACK_H
-
-#ifdef __PACKED
-    #undef __PACKED
-#endif //__PACKED
-
-#define __PACKED
-
-#endif      // PACK_H
--- a/hotspotfw/hsserver/src/hotspotsession.cpp	Wed Feb 03 12:16:50 2010 +0000
+++ b/hotspotfw/hsserver/src/hotspotsession.cpp	Fri Feb 19 23:55:42 2010 +0200
@@ -148,29 +148,29 @@
 void CHotSpotSession::DispatchMessageL( const RMessage2& aMessage )
     {
     DEBUG( "CHotSpotSession::DispatchMessageL()" );
-    TUint value1(NULL);
-    TInt value2(NULL);
-    TInt err(KErrNone);
-    TInt indx(KErrNone);
+    TInt value( NULL );
+    TInt err( KErrNone );
+    TInt indx( KErrNone );
     TPckgBuf<TInt> iapPackage( iIapId );
     
     switch ( aMessage.Function() )
         {
         case EHssActivateNotifications :
+            DEBUG( "CHotSpotSession::ActivateNotificationsL" );
             iAllowNotifications = EFalse;
-            DEBUG( "CHotSpotSession::ActivateNotificationsL" );
+            
             if ( iNotifications == NULL )
                 {
-                DEBUG( "CHotSpotSession::DispatchMessageL activated !!!" );
-                iNotifications = new (ELeave) HssNotifications(*this);
+                iNotifications = new ( ELeave ) HssNotifications( *this );
                 iMgtClient->ActivateNotificationsL( *iNotifications );
                 }
             HandleOrderNotifications( aMessage );
             break;
         case EHssCancelNotifications :
+            DEBUG( "CHotSpotSession::CancelNotifications" );
             iAllowNotifications = EFalse;
-            DEBUG( "CHotSpotSession::CancelNotifications" );
             iMgtClient->CancelNotifications( );
+        
             if ( iNotifications != NULL )
                 {
                 delete iNotifications;
@@ -178,9 +178,6 @@
             iNotifications = NULL;
             HandleCancelNotifications( aMessage );
             break;
-        case EHssGetScanResults :
-            // Handled now in client side. Left here for future use.
-            break;
         case EHssRegister :
             ProcessRegisterL( aMessage );
             break;
@@ -189,17 +186,16 @@
             break;
         case EHssJoin :
             iAllowNotifications = EFalse;
-            // IAP id
-            value1 = ( TInt )aMessage.Int0();
-            iIapId = value1;
-            indx = iServer.FindMessage(value1, EHssStart );
+            iIapId = ( TInt )aMessage.Int0();
+     
+            indx = iServer.FindMessage( iIapId, EHssStart );
             if ( indx >= 0 )
                 {
                 iServer.CompleteMessage( indx , KErrNone );
                 }
             else
                 {
-                indx = iServer.FindMessage(value1, EHssStartAgain );
+                indx = iServer.FindMessage( iIapId, EHssStartAgain );
                 if ( indx >= 0 )
                     {
                     iServer.CompleteMessage( indx , KErrNone );
@@ -211,8 +207,8 @@
             iServer.SetLogoutFlag( ETrue );
             // Do not send association status to client
             iServer.SetAssociationFlag( EFalse ); 
-             // IAP id
             iIapId = ( TInt )aMessage.Int0();
+    
             indx = iServer.FindMessage(iIapId, EHssStart );
             if ( indx >= 0 )
                 {
@@ -226,42 +222,38 @@
                     iServer.CompleteMessage( indx , KErrAbort );
                     }
                 }
-            
             aMessage.Complete( KErrNone );
             break;
         case EHssStop :
             iAllowNotifications = EFalse;
             iServer.SetLogoutFlag( ETrue );
-                   
             iLoginTimer->Cancel();
             iLogoutTimer->Cancel();
-            // IAP id
-            value1 = ( TInt )aMessage.Int0();
-            for (TInt counter = EHssGetScanResults; counter <EHssServerShutdown ;counter++)
+            iIapId = ( TInt )aMessage.Int0();
+    
+            for ( TInt counter = EHssGetScanResults; 
+                  counter <EHssServerShutdown ;counter++ )
                 {
-                indx = iServer.FindMessage(value1, THotSpotCommands(counter ));
+                indx = iServer.FindMessage( iIapId, 
+                                            THotSpotCommands( counter ) );
                 if ( indx >= 0 )
                     {
-                    iServer.CompleteMessage( indx , KErrCancel);
+                    iServer.CompleteMessage( indx , KErrCancel );
                     }
                 }
-                        
             aMessage.Complete( KErrNone );
             break;
         case EHssLoginComplete :
             iAllowNotifications = EFalse;
-            // IAP id
-            value1 = ( TInt )aMessage.Int0();
-            // ret value
-            value2 = ( TInt )aMessage.Int1();
+            iLoginTimer->Cancel();
+            iIapId = ( TInt )aMessage.Int0();
+            value = ( TInt )aMessage.Int1();
             
-            iLoginTimer->Cancel();
-            
-            DEBUG1( "EHssLoginComplete value2: %d", value2 );
-            indx = iServer.FindMessage( value1, EHssStartLogin );
+            DEBUG1( "EHssLoginComplete return value: %d", value );
+            indx = iServer.FindMessage( iIapId, EHssStartLogin );
             if ( KErrNotFound != indx )
                 {
-                if (value2 == KErrNone)
+                if ( value == KErrNone )
                     {
                     DEBUG( "EHssLoginComplete1" );
                     iServer.CompleteMessage( indx, KErrNone );
@@ -279,11 +271,9 @@
         case EHssLogoutComplete :
             iAllowNotifications = EFalse;
             iLogoutTimer->Cancel();
+            iIapId = ( TInt )aMessage.Int0();
             
-            // IAP id
-            value1 = ( TInt )aMessage.Int0();
-            
-            indx = iServer.FindMessage( value1, EHssCloseConnection );
+            indx = iServer.FindMessage( iIapId, EHssCloseConnection );
             if ( KErrNotFound != indx )
                 {
                 iServer.CompleteMessage( indx, KErrNone );    
@@ -294,10 +284,9 @@
         case EHssStartLogin :
             // Do not send association status, since it's already done.
             iServer.SetAssociationFlag( EFalse ); 
-            // IAP id
             iIapId = ( TInt )aMessage.Int0();
-            // Network id
             iNetId = ( TInt )aMessage.Int1();
+     
             err = iServer.SaveMessage( iIapId, aMessage, EHssStartLogin ); 
             if ( KErrNone != err )
                 {
@@ -339,18 +328,17 @@
             aMessage.Complete( KErrNone );
             break;
         case EHssStart:
-            // IAP id
             iServer.SetLoginFlag( ETrue );
             iIapId = ( TInt )aMessage.Int0();
             err = iServer.SaveMessage( iIapId, aMessage, EHssStart ); 
-           if ( err != KErrNone)
+    
+            if ( err != KErrNone)
                 {
                 aMessage.Complete( err );  
                 }
             else
                 {
                 TRAPD( startLeaved, err = ProcessStartL( iIapId ) );
-                
                 if ( startLeaved != KErrNone)
                     {
                     indx = iServer.FindMessage(iIapId, EHssStart );
@@ -363,7 +351,6 @@
                         aMessage.Complete( KErrNotSupported );
                         }
                     }
-                
                 else if ( err != KErrNone)
                     {
                     indx = iServer.FindMessage(iIapId, EHssStart );
@@ -376,16 +363,14 @@
                         aMessage.Complete( KErrNotSupported );
                         }
                     }
-                // else -> client is created and called 
-                // WLAN agent waits for 30 seconds before continuing connection setup.
                 }
             break;
         case EHssStartAgain:
-            // IAP id
             iServer.SetLoginFlag( ETrue );
             iIapId = ( TInt )aMessage.Int0();
             err = iServer.SaveMessage( iIapId, aMessage, EHssStartAgain ); 
-           if ( err != KErrNone)
+            
+            if ( err != KErrNone)
                 {
                 aMessage.Complete( err );  
                 }
@@ -406,12 +391,11 @@
                     }
                 }
             break;
+        case EHssCancel:
+            iLoginTimer->Cancel();
+            iLogoutTimer->Cancel();
+            iIapId = ( TInt )aMessage.Int0();
             
-        case EHssCancel:
-               iLoginTimer->Cancel();
-            iLogoutTimer->Cancel();
-            // IAP id
-            iIapId = ( TInt )aMessage.Int0();
             if ( iServer.GetAssociationFlagValue() )
                 {
                 // We are in association phase and Agent failed it for some reason
@@ -433,17 +417,11 @@
                 {
                 iServer.CompleteMessage( indx , KErrCancel );
                 }
-            //Not needed to send Logout()
-            //iServer.SetLogoutFlag( ETrue )
-            //ProcessCloseL( iIapId )
             aMessage.Complete( KErrNone );
-        break;
-        
+            break;
         case EHssCloseConnection:
             iLoginTimer->Cancel();
             iLogoutTimer->Cancel();           
-        
-            // IAP id
             iIapId = ( TInt )aMessage.Int0();
 
             if ( iServer.GetAssociationFlagValue() )
@@ -476,21 +454,18 @@
                     }
                 }
             break;
-
         case EHssServerShutdown:
             ProcessServerShutdown( aMessage );
             break;
-            
         case EHssGetIAP:
             aMessage.WriteL( 0, iapPackage );
             aMessage.Complete( KErrNone );
             break;
-            
         case EHssUiState:
             ProcessUiState( aMessage );
             break;
         case EHssStartBrowser:
-            {   
+            {
             TInt len = aMessage.GetDesLength( 0 );
             iIapId = ( TInt )aMessage.Int1();
             iNetId = ( TInt )aMessage.Int2();
@@ -502,9 +477,8 @@
             AuthenticateL( ptr );
             
             CleanupStack::PopAndDestroy(buf);
+            break;
             }
-            break;
-            
         case EHssSetTimerValues:
             {
             TUid clientUid( TUid::Uid( aMessage.Int0() ) );
@@ -512,16 +486,13 @@
             TUint logoutTimerValue = aMessage.Int2();
             iServer.SetTimerValues( clientUid, loginTimerValue, logoutTimerValue );
             aMessage.Complete( KErrNone );
+            break;
             }
-            break;
-
         default:
             aMessage.Complete( KErrNotSupported );  
-            //PanicClient( aMessage, EBadRequest )
             break;
         }
        iAllowNotifications = TRUE;
-
     }
 
 // ---------------------------------------------------------
@@ -755,7 +726,7 @@
     iapName = iapPckg().IapName();
     
     TUint32 iapId( 0 );
-    // TRAPD needed here so that 0 can be returned if DeleteIapL leaves
+    
     TInt ret( KErrNone );
     TRAP( ret, iIapSettingsHandler->CreateClientIapL( iapName, iapId, clientUid ));
     DEBUG1( "CHotSpotSession::EHssRegister iapId: %d", iapId );
@@ -767,8 +738,6 @@
 
     else 
         {
-        // TRAP needed here so that 0 can be returned if DeleteIapL leaves
-        //TRAP(err, iIapSettingsHandler->DeleteIapL( iapId ))
         // Error, we are returning 0 to client
         // and no IAP is created
         aMessage.Complete( KErrNone );
@@ -802,9 +771,9 @@
     else
         {
         ret = KErrPermissionDenied;
-        }
-        
+        }    
     aMessage.Complete( ret ); 
+    DEBUG("CHotSpotSession::ProcessUnRegisterL DONE");
     }
 
 // -----------------------------------------------------------------------------
--- a/hotspotfw/hsserver/src/hssiapsettingshandler.cpp	Wed Feb 03 12:16:50 2010 +0000
+++ b/hotspotfw/hsserver/src/hssiapsettingshandler.cpp	Fri Feb 19 23:55:42 2010 +0200
@@ -164,8 +164,7 @@
             HBufC* ssid( NULL );
             TWlanSsid ssidConn;
             
-            wlanMgmtClient->GetConnectionSsid( ssidConn );
-            
+            User::LeaveIfError( wlanMgmtClient->GetConnectionSsid( ssidConn ) );
             ssid = HBufC::NewLC( ssidConn.Length() );
             ssid->Des().Copy( ssidConn ); 
             
--- a/wlanutilities/wlansniffer/aiplugin/data/10281cae.rss	Wed Feb 03 12:16:50 2010 +0000
+++ b/wlanutilities/wlansniffer/aiplugin/data/10281cae.rss	Fri Feb 19 23:55:42 2010 +0200
@@ -17,7 +17,7 @@
 
 //  INCLUDES
 #include "wsfaipluginuids.hrh"
-#include <aicontentpublisheruid.hrh>
+#include <hscontentpublisheruid.hrh>
 #include <ecom/registryinfov2.rh>
 
 RESOURCE REGISTRY_INFO registry_info
@@ -32,7 +32,7 @@
         INTERFACE_INFO
             {
             // UID of the implemented interface
-            interface_uid = AI_UID_ECOM_INTERFACE_CONTENTPUBLISHER;
+            interface_uid = HS_UID_ECOM_INTERFACE_CONTENTPUBLISHER;
 
             implementations =
                 {
--- a/wlanutilities/wlansniffer/aiplugin/inc/wsfaiplugin.h	Wed Feb 03 12:16:50 2010 +0000
+++ b/wlanutilities/wlansniffer/aiplugin/inc/wsfaiplugin.h	Fri Feb 19 23:55:42 2010 +0200
@@ -20,10 +20,7 @@
 #define C_WSFAIPLUGIN_H
 
 //  EXTERNAL INCLUDES
-#include <aicontentpublisher.h>
-#include <aicontentobserver.h>
-#include <aipropertyextension.h>
-#include <aieventhandlerextension.h>
+#include <hscontentpublisher.h>
 #include <e32cmn.h>
 
 //  INTERNAL INCLUDES
@@ -56,9 +53,7 @@
  * @lib wsfaiplugin.lib
  * @since S60 v5.0
  */
-NONSHARABLE_CLASS( CWsfAiPlugin ): public CAiContentPublisher,
-                                   public MAiPropertyExtension,
-                                   public MAiEventHandlerExtension,
+NONSHARABLE_CLASS( CWsfAiPlugin ): public CHsContentPublisher,
                                    public MWsfAiPublishObserver
     {
     public: // Constructors and destructor
@@ -112,99 +107,46 @@
         */                
         void CWsfAiPlugin::DoConnectingStepL();
     
-    public:     // from CAiContentPublisher
-        
-        /**
-        * This method transit the plugin to "Alive" state.
-        * The method is called by the framework to instruct plug-in that it is
-        * allowed to actively publish its data to its observers. This means the plugin
-        * is allowed to consume memory and CPU resources, e.g plug-in is able load 
-        * engines, run timers, perform asynchronous operations, etc. The method 
-        * transits the plug-in to "Alive" state. There can be many concurrent
-        * calls to resume, with different or the same reason code, this allows
-        * the plugin to properly respond to enviroment change that raise the
-        * need to re-publish content (changes like date/time change etc).
-        *
-        * @param aReason reason for state change, see TAiTransitionChange.
-        */
-        void Resume( TAiTransitionReason aReason );
+    public:     // from CHSContentPublisher
         
         /**
-        * This method transits the plug-in to "Suspendend" state.
-        * The method is called by the framework to instruct plug-in that it is
-        * not allowed to consume CPU resources, e.g plug-in MUST stop each
-        * timer, cancel outstanding asynchronous operations, etc. 
-        *
-        * @param aReason reason for state change, see TAiTransitionChange.
-        */
-        void Suspend( TAiTransitionReason aReason );
+         * @see CHsContentPublisher
+         */
+        void Start( TStartReason aReason );
+
+        /**
+         * @see CHsContentPublisher
+         */
+        void Stop( TStopReason aReason );
+
+        /**
+         * @see CHsContentPublisher
+         */    
+        void Resume( TResumeReason aReason );
+
+        /**
+         * @see CHsContentPublisher
+         */    
+        void Suspend( TSuspendReason aReason );
         
         /**
-        * This method transits the plug-in to "Idle" state.
-        * The method is called by the framework to request the plug-in free all
-        * memory and CPU resources and close all its open files, the plug-in 
-        * should unload its engines during backup operation.
-        *
-        * @param aReason reason for state change, see TAiTransitionChange.
-        */
-        void Stop( TAiTransitionReason aReason );
-        
-        /**
-        * Adds the content observer / subscriber to plug-in. The plug-in MUST
-        * maintain a registry of subscribers and send notification to all them
-        * whenever the plug-in changes state or new content available.
-        *
-        * @param aObserver content observer to register.
-        */
+         * @see CHsContentPublisher
+         */
         void SubscribeL( MAiContentObserver& aObserver );
     
         /**
-        * Configures the plug-in.
-        *
-        * @param aSettings setting items defined in the UI definition.
-        *                  This plugin takes ownership of the
-        *                  MAiPluginSettings objects in the array.
-        *                  If this method leaves the caller will handle the cleanup.
-        */
+         * @see CHsContentPublisher
+         */
         void ConfigureL( RAiSettingsItemArray& aSettings );
-        
-        /**
-        * Returns interface extension. In S60 3.2 only event & property
-        * extensions are supported. See MAiEventHandlerExtension & MAiPropertyExtension
-        * interfaces.
-        *
-        * @param  aUid - UID of the extension interface to access.
-        * @return the extension interface. Actual type depends on the passed aUid 
-        *         argument.
-        */
-        TAny* Extension( TUid aUid );
-
-    
-    public:     // from MAiPropertyExtension
     
         /**
-        * Read property of publisher plug-in.
-        *
-        * @param aProperty - identification of property.
-        * @return Pointer to property value.
-        */
-        TAny* GetPropertyL( TInt aProperty );
-    
+         * @see CHsContentPublisher
+         */
+        TAny* GetProperty( TProperty aProperty );
+
         /**
-        * Write property value.
-        *
-        * @param aProperty - identification of property.
-        * @param aValue - contains pointer to property value.
-        */
-        void SetPropertyL( TInt aProperty, TAny* aValue );
-    
-    
-    public:     // from MAiEventHandlerExtension
-    
-        /**
-        * See aieventhandlerextension.h for detailed description.
-        * @since S60 5.0
-        */
+         * @see CHsContentPublisher
+         */
         void HandleEvent( TInt aEvent, const TDesC& aParam );
 
     
@@ -352,11 +294,6 @@
         MAiContentItemIterator* iEvents;
     
         /**
-        * Information about the content publisher (this plug-in)
-        */
-        TAiPublisherInfo iInfo;
-    
-        /**
         * Pointer to CWsfModel
         * Own.
         */
--- a/wlanutilities/wlansniffer/aiplugin/src/wsfaiplugin.cpp	Wed Feb 03 12:16:50 2010 +0000
+++ b/wlanutilities/wlansniffer/aiplugin/src/wsfaiplugin.cpp	Fri Feb 19 23:55:42 2010 +0200
@@ -54,7 +54,6 @@
 LOCAL_D const TUid KUidSnifferApp = {0x10281CAA};
 LOCAL_D const TInt KRefreshStepTime = 200 * 1000;
 LOCAL_D const TInt KConnectingStepTime = 200 * 1000;
-_LIT8( KWlanWizardName, "WLANWizard" );
 
 
 
@@ -154,9 +153,6 @@
     {
     LOG_ENTERFN( "CWsfAiPlugin::ConstructL" );
     AllocateResourcesL();
-        
-    iInfo.iUid = KUidWlanWizardPlugin;
-    iInfo.iName.Copy( KWlanWizardName );
     
     iContent = AiUtility::CreateContentItemArrayIteratorL( 
                                                     KAiWizardContent );
@@ -416,68 +412,21 @@
     iResourceFileOffset = env->AddResourceFileL( resourceFile );    
     }
 
-
 // --------------------------------------------------------------------------
-// CWsfAiPlugin::Resume
+// CWsfAiPlugin::Start
 // --------------------------------------------------------------------------
 //
-void CWsfAiPlugin::Resume( TAiTransitionReason aReason )
+void CWsfAiPlugin::Start( TStartReason /*aReason*/ )
     {
-    LOG_ENTERFN( "CWsfAiPlugin::Resume" );
-    switch ( aReason ) 
-        {
-        case EAiSystemStartup:
-            {
-            LOG_WRITE( "Resume - EAiSystemStartup");
-            iStartupRefresh->CallBack();
-            break;
-            }
-            
-        case EAiIdleForeground: 
-            { 
-            // AI came to foreground -> make refresh scan 
-            if ( !iAiModel->Connected() && !iModel->IsConnecting() )
-                {
-                LOG_WRITE( "Call Refresh scan" );
-                TRAP_IGNORE( iModel->RefreshScanL() );
-                }
-            else
-                {
-                LOG_WRITE( "Connected no need to refresh scan results" );
-                }
-            break; 
-            } 
-            
-        case EAiIdleBackground:
-            {
-            // AI went to background -> dismiss open dialogs/menus
-            TRAP_IGNORE( iController.DismissDialogsL() );
-            break;
-            }
-            
-        default: 
-            { 
-            break; 
-            } 
-        } 
+    LOG_ENTERFN( "CWsfAiPlugin::Start");
+    iStartupRefresh->CallBack();
     }
 
-
-// --------------------------------------------------------------------------
-// CWsfAiPlugin::Suspend
-// --------------------------------------------------------------------------
-//
-void CWsfAiPlugin::Suspend( TAiTransitionReason /*aReason*/ )
-    {
-    LOG_ENTERFN( "CWsfAiPlugin::Suspend" );
-    }
-
-
 // --------------------------------------------------------------------------
 // CWsfAiPlugin::Stop
 // --------------------------------------------------------------------------
 //
-void CWsfAiPlugin::Stop( TAiTransitionReason /*aReason*/ )
+void CWsfAiPlugin::Stop( TStopReason /*aReason*/ )
     {
     LOG_ENTERFN( "CWsfAiPlugin::Stop" );
     TRAP_IGNORE( iController.DeInitializeL() );
@@ -490,6 +439,50 @@
         }
     }
 
+// --------------------------------------------------------------------------
+// CWsfAiPlugin::Resume
+// --------------------------------------------------------------------------
+//
+void CWsfAiPlugin::Resume( TResumeReason aReason )
+    {
+    LOG_ENTERFN( "CWsfAiPlugin::Resume" );
+    if( aReason == EForeground ) 
+        {
+        // HS came to foreground -> make refresh scan
+        if ( !iAiModel->Connected() && !iModel->IsConnecting() )
+            {
+            LOG_WRITE( "Call Refresh scan" );
+            TRAP_IGNORE( iModel->RefreshScanL() );
+            }
+        else
+            {
+            LOG_WRITE( "Connected no need to refresh scan results" );
+            }
+        }
+    }
+
+// --------------------------------------------------------------------------
+// CWsfAiPlugin::Suspend
+// --------------------------------------------------------------------------
+//
+void CWsfAiPlugin::Suspend( TSuspendReason aReason )
+    {
+    LOG_ENTERFN( "CWsfAiPlugin::Suspend" );
+    
+    if( aReason == EBackground )
+        {
+        if ( iAnimationPeriodic )
+            {
+            LOG_WRITE( "Cancel animation update" );
+            iAnimationPeriodic->Cancel();
+            delete iAnimationPeriodic;
+            iAnimationPeriodic = NULL;
+            }
+                
+        // HS went to background -> dismiss open dialogs/menus
+        TRAP_IGNORE( iController.DismissDialogsL() );
+        }
+    }
 
 // --------------------------------------------------------------------------
 // CWsfAiPlugin::SubscribeL
@@ -498,7 +491,7 @@
 void CWsfAiPlugin::SubscribeL( MAiContentObserver& aObserver )
     {
     LOG_ENTERFN( "CWsfAiPlugin::Subscribe" );
-    return iObservers.AppendL( &aObserver );
+    iObservers.AppendL( &aObserver );
     }
 
 
@@ -511,76 +504,24 @@
     LOG_ENTERFN( "CWsfAiPlugin::ConfigureL" );
     }
 
-
-// --------------------------------------------------------------------------
-// CWsfAiPlugin::Extension
-// --------------------------------------------------------------------------
-//
-TAny* CWsfAiPlugin::Extension( TUid aUid )
-    {
-    LOG_ENTERFN( "CWsfAiPlugin::Extension" );
-    if ( aUid == KExtensionUidProperty )
-        {
-        return static_cast<MAiPropertyExtension*>( this );
-        }
-    else if ( aUid == KExtensionUidEventHandler )
-        {
-        return static_cast<MAiEventHandlerExtension*>( this );
-        }
-
-    return NULL;
-    }
-
-
 // --------------------------------------------------------------------------
 // CWsfAiPlugin::GetPropertyL
 // --------------------------------------------------------------------------
 //
-TAny* CWsfAiPlugin::GetPropertyL( TInt aProperty )
+TAny* CWsfAiPlugin::GetProperty( TProperty aProperty )
     {
-    switch ( aProperty )
+    if( aProperty == EPublisherContent )
         {
-        case EAiPublisherInfo:
-            {
-            return &iInfo;
-            }
+        return iContent;
+        }
+    else if( aProperty == EPublisherEvents )
+        {
+        return iEvents;
+        }
 
-        case EAiPublisherContent:
-            {
-            return static_cast<MAiContentItemIterator*>( iContent );
-            }
-
-        case EAiPublisherEvents:
-            {
-            return static_cast<MAiContentItemIterator*>( iEvents );
-            }
-            
-        default:
-            {
-            User::Leave( KErrNotSupported );
-            }
-        }
-    
     return NULL;
     }
 
-
-// --------------------------------------------------------------------------
-// CWsfAiPlugin::SetPropertyL
-// --------------------------------------------------------------------------
-//
-void CWsfAiPlugin::SetPropertyL( TInt aProperty, TAny* aValue )
-    {
-    LOG_ENTERFN( "CWsfAiPlugin::SetProperty" );
-    if ( aValue && ( aProperty == EAiPublisherInfo ) )
-        {
-        const TAiPublisherInfo* info =
-                            static_cast<const TAiPublisherInfo*>( aValue );
-        iInfo = *info;  
-        }
-    }
-
-
 // --------------------------------------------------------------------------
 // CWsfAiPlugin::HandleEvent
 // --------------------------------------------------------------------------
@@ -734,9 +675,12 @@
             }
         else
             {
-            iAnimationPeriodic->Cancel();
-            delete iAnimationPeriodic;
-            iAnimationPeriodic = NULL;
+            if ( iAnimationPeriodic )
+                {
+                iAnimationPeriodic->Cancel();
+                delete iAnimationPeriodic;
+                iAnimationPeriodic = NULL;                
+                }
             }
         }
     iRefreshing = aRefreshing;
--- a/wlanutilities/wlansniffer/engine/server/inc/wsfwlanscanner.h	Wed Feb 03 12:16:50 2010 +0000
+++ b/wlanutilities/wlansniffer/engine/server/inc/wsfwlanscanner.h	Fri Feb 19 23:55:42 2010 +0200
@@ -496,6 +496,11 @@
         */
         TBuf8<KWlanMaxAccessPointNameLength> iConnectedSsidOrIap;
         
+		/**
+        * Array containing the available IAP IDs 
+        */
+        RArray<TUint> iAvailableIaps;
+        
     };
 
 
--- a/wlanutilities/wlansniffer/engine/server/src/wsfwlanscanner.cpp	Wed Feb 03 12:16:50 2010 +0000
+++ b/wlanutilities/wlansniffer/engine/server/src/wsfwlanscanner.cpp	Fri Feb 19 23:55:42 2010 +0200
@@ -98,6 +98,7 @@
     delete iScanArray;
     iDirectScanSsids.Close();
     iDirectScanIapIDs.Close();
+    iAvailableIaps.Close();
     iDbSession = NULL; // not owning
     iConnectionDetailsProvider = NULL;
     }
@@ -174,9 +175,9 @@
     
     /*
      * Scan logic
-     * 1. Do broadcast scan - state = EIdle
-     * 2. Get available IAPs - state = EBroadcastScan
-     * 3. Process broadcast scan results state = EBroadcastScan
+     * 1. Get available IAPs - state = EIdle
+     * 2. Do broadcast scan - state = EIdle
+     * 3. Process broadcast scan results - state = EBroadcastScan
      * 4. Do direct scans for remaining known networks
      *    from step 2. Get available IAPs - state = EDirectScan
      * 5. Add connected network - state = EFinished
@@ -196,8 +197,15 @@
             iObserver->WlanScanStarted();
             }
 
-        // do broadcast scan
+        
 #ifndef __WINS__
+        // get available iaps
+        // (this only shows iaps with security mode matching to scan results
+        // and  also finds hidden wlans for which an iap has been configured)
+        iAvailableIaps.Reset();
+        iWlanMgmtClient->GetAvailableIaps( iAvailableIaps );
+        
+		// do broadcast scan
         iWlanMgmtClient->GetScanResults( iStatus, *iScanInfo );
         SetActive();
 #else
@@ -944,12 +952,7 @@
     TInt nElem = 0;
     TBool isHidden( EFalse );
 
-    // get available iaps
-    // (this only shows iaps with security mode matching to scan results
-    // and  also finds hidden wlans for which an iap has been configured)
-    RArray<TUint> availableIaps;
-    iWlanMgmtClient->GetAvailableIaps(availableIaps);
-    TInt avIapCount = availableIaps.Count();
+    TInt avIapCount = iAvailableIaps.Count();
 
     LOG_WRITEF( "Available iap count %d", avIapCount ); 
 
@@ -958,7 +961,7 @@
         TBool addToArray( ETrue ); 
         TWsfWlanInfo* availableInfo = new ( ELeave ) TWsfWlanInfo();       
         CleanupStack::PushL( availableInfo );
-        availableInfo->iIapId = availableIaps[i];
+        availableInfo->iIapId = iAvailableIaps[i];
         TRAPD( error, GetWlanInfoFromIapL( *availableInfo ) );
 
         if ( error == KErrNotFound )
--- a/wlanutilities/wlansniffer/mainapplication/inc/wsfmainview.h	Wed Feb 03 12:16:50 2010 +0000
+++ b/wlanutilities/wlansniffer/mainapplication/inc/wsfmainview.h	Fri Feb 19 23:55:42 2010 +0200
@@ -154,13 +154,18 @@
         */
         MWsfMainViewControllerIf& Controller();
         
-        /*
+        /**
          * Sets the iSelectionKey True
          * @since S60 5.0 
          */
         void SelectionKeyPressed();
-    
-    private:
+        
+        /**
+         * Checks if Browser is using the active WLAN connection
+         */
+        void UpdateBrowserUsageInfoL();
+
+    private:  //New functions
         
         /**
         * Check if the Browser application is already running and 
@@ -169,7 +174,7 @@
         * @return EFalse if Start Web Browsing menu item should be shown
         *         ETrue if Start Web Browsing menu item should not be shown
         */
-        TBool StartWebBrowsingVisibleL();
+        TBool IsBrowserUsingWlanL();
         
     private:
 
@@ -194,6 +199,12 @@
         * Indicates FSelectionKey is pressed or not.
         */
         TBool iSelectionKey;
+        
+        /**
+         * If Browser is using the WLAN connection or not.
+         */
+        TBool iIsBrowserUsingWlan;
+        
     };
 
 
--- a/wlanutilities/wlansniffer/mainapplication/inc/wsfmainviewcontainer.h	Wed Feb 03 12:16:50 2010 +0000
+++ b/wlanutilities/wlansniffer/mainapplication/inc/wsfmainviewcontainer.h	Fri Feb 19 23:55:42 2010 +0200
@@ -28,6 +28,7 @@
 class MWsfMainViewControllerPartner;
 class CAknNavigationDecorator;
 class CAknNavigationControlContainer;
+class CWsfMainView;
 
 //  CLASS DEFINITION
 /**
@@ -44,7 +45,8 @@
          * @param aRect gives the correct TRect for construction.
          * @return instance of CWsfMainViewContainer class  
          */
-        static CWsfMainViewContainer* NewL( const TRect& aRect );
+        static CWsfMainViewContainer* NewL( const TRect& aRect,
+                CWsfMainView* aParentView );
 
         /**
          * Two-phased constructor. Leaves the object on CleanupStack
@@ -52,7 +54,8 @@
          * @param aRect gives the correct TRect for construction.
          * @return instance of CWsfMainViewContainer class  
          */
-        static CWsfMainViewContainer* NewLC( const TRect& aRect );
+        static CWsfMainViewContainer* NewLC( const TRect& aRect,
+                CWsfMainView* aParentView );
 
         /**
          * Destructor of CWsfMainViewContainer class
@@ -73,7 +76,7 @@
          * @since S60 5.0 
          * @param aRect gives the correct TRect for construction.
          */
-        void ConstructL( const TRect& aRect );
+        void ConstructL( const TRect& aRect, CWsfMainView* aParentView );
 
     public:     // New methods
 
@@ -298,7 +301,7 @@
          */
         TInt iConnectingIndex;
 
-        /*
+        /**
          * The periodic that steps the animation
          */
         CPeriodic* iAnimationPeriodic;
@@ -308,6 +311,11 @@
          * Own.
          */
         HBufC* iStatusConnecting;
+        
+        /**
+         * Reference to the parent view
+         */
+        CWsfMainView* iParentView;
 
     };
 
--- a/wlanutilities/wlansniffer/mainapplication/src/wsfdetailsviewcontroller.cpp	Wed Feb 03 12:16:50 2010 +0000
+++ b/wlanutilities/wlansniffer/mainapplication/src/wsfdetailsviewcontroller.cpp	Fri Feb 19 23:55:42 2010 +0200
@@ -218,6 +218,8 @@
     if( iContainer )        
         {
         HBufC* paneText = iModel->FormatPaneTextLC();
+        TPtr temp( paneText->Des() );
+        AknTextUtils::DisplayTextLanguageSpecificNumberConversion( temp );
         iContainer->UpdateNaviPaneL( *paneText );
         CleanupStack::PopAndDestroy( paneText );
         }
--- a/wlanutilities/wlansniffer/mainapplication/src/wsfdetailsviewmodel.cpp	Wed Feb 03 12:16:50 2010 +0000
+++ b/wlanutilities/wlansniffer/mainapplication/src/wsfdetailsviewmodel.cpp	Fri Feb 19 23:55:42 2010 +0200
@@ -18,6 +18,7 @@
 //  EXTERNAL INCLUDES
 #include <badesca.h>
 #include <StringLoader.h> 
+#include <AknUtils.h>
 #include <wlansniffer.rsg>
 #include <coemain.h>
 #include <avkon.rsg>
@@ -654,7 +655,8 @@
 
     const TInt KMaxRateStringWidth = 8;
     TBuf<KMaxRateStringWidth> rate;
-    rate.Format( KRateFmt, iWlanInfo.iTransferRate );
+    rate.Format( KRateFmt, iWlanInfo.iTransferRate );   
+    AknTextUtils::DisplayTextLanguageSpecificNumberConversion( rate );
     
     return StringLoader::LoadLC( R_QTN_SNIFFER_WLAN_MAX_DATA_RATE, 
                                  rate, iCoeEnv );
--- a/wlanutilities/wlansniffer/mainapplication/src/wsfmainview.cpp	Wed Feb 03 12:16:50 2010 +0000
+++ b/wlanutilities/wlansniffer/mainapplication/src/wsfmainview.cpp	Fri Feb 19 23:55:42 2010 +0200
@@ -147,8 +147,10 @@
             }
         case EAknSoftkeyContextOptions:
             {
+            LOG_WRITE( "CWsfMainView::HandleCommandL, Options" );
+            UpdateBrowserUsageInfoL();
             MenuBar()->SetMenuTitleResourceId( R_SNIFFER_CONTEXT_MENUBAR );
-            MenuBar()->SetMenuType( CEikMenuBar::EMenuContext ); 
+            MenuBar()->SetMenuType( CEikMenuBar::EMenuContext );
             MenuBar()->TryDisplayMenuBarL();
             MenuBar()->SetMenuTitleResourceId( R_SNIFFER_MENUBAR );
             MenuBar()->SetMenuType( CEikMenuBar::EMenuOptions ); 
@@ -174,7 +176,7 @@
     LOG_ENTERFN( "CWsfMainView::DoActivateL" );
     if ( !iContainer )
         { 
-        iContainer = CWsfMainViewContainer::NewL( ClientRect() );
+        iContainer = CWsfMainViewContainer::NewL( ClientRect(), this );
         // set icons array to list        
         iContainer->SetMopParent( this );
         iContainer->SetPartner( iController );
@@ -223,11 +225,13 @@
 void CWsfMainView::DynInitMenuPaneL( TInt aResourceId, 
                                      CEikMenuPane* aMenuPane )
     {
+    LOG_ENTERFN( "CWsfMainView::DynInitMenuPaneL" );
+    LOG_WRITEF( "resource id = %d", aResourceId );
     iController.UpdateSelectedItemL();
     
     if ( aResourceId == R_SNIFFER_MENU )
         {
-        LOG_ENTERFN( "CWsfMainView::DynInitMenuPaneL" );
+        LOG_WRITE( "CWsfMainView::DynInitMenuPaneL, R_SNIFFER_MENU" );
         const CWsfDocument* doc = static_cast<const CWsfDocument*>( 
                                                          AppUi()->Document() );
         TBool blacklistEmpty( !doc->WlanInfoBranding().BlackListItemCount() );
@@ -252,13 +256,23 @@
             return;
             }
 
-        TBool connectedAndUsed( StartWebBrowsingVisibleL() );
         TBool connected( selectedItem->Connected() );
+        TBool connectedAndUsed( EFalse );
+        if ( connected )
+            {
+            connectedAndUsed = iIsBrowserUsingWlan;
+            }
         TBool known( selectedItem->Known() );
         
         TBool selectedItemConnecting ( 
                 selectedItem->ConnectionStatus() == EConnecting );
-
+        
+        LOG_WRITEF( "connectedAndUsed = %d", connectedAndUsed );
+        LOG_WRITEF( "connected = %d", connected );
+        LOG_WRITEF( "known = %d", known );
+        LOG_WRITEF( "selectedItemConnecting = %d", selectedItemConnecting );
+        LOG_WRITEF( "connecting = %d", connecting );
+        
         aMenuPane->SetItemDimmed( ESnifferCmdStartBrowsing, 
                                   connectedAndUsed || selectedItemConnecting );
         aMenuPane->SetItemDimmed( ESnifferCmdContinueBrowsing, 
@@ -289,10 +303,11 @@
         }
     else if ( aResourceId == R_SNIFFER_CONTEXT_MENU )
         {
+        LOG_WRITE( "CWsfMainView::DynInitMenuPaneL, R_SNIFFER_CONTEXT_MENU" );
         TWsfWlanInfo *selectedItem = iController.SelectedItem();
         
         // there must be always at least one item: "Other (unlisted)..."
-        TBool connectedAndUsed( StartWebBrowsingVisibleL() );
+        TBool connectedAndUsed( EFalse );
         TBool connected( EFalse );
         TBool known( EFalse );
         TBool hidden( ETrue );
@@ -300,18 +315,30 @@
         CWsfAppUi* appui = static_cast<CWsfAppUi*>( AppUi() );
         TBool connecting( appui->SuppressingKeyEvents() );
         TBool selectedItemConnecting( EFalse );
+
         
         if ( selectedItem )
             {
             // workaround: even if the model reports no elements, we know that
             // the hidden item must always be there
             connected = selectedItem->Connected();
+            if ( connected )
+                {
+                connectedAndUsed = iIsBrowserUsingWlan;
+                }
             known = selectedItem->Known();
             hidden = selectedItem->Hidden();
             selectedItemConnecting = 
                     ( selectedItem->ConnectionStatus() == EConnecting );
             }
 
+        LOG_WRITEF( "connectedAndUsed = %d", connectedAndUsed );
+        LOG_WRITEF( "connected = %d", connected );
+        LOG_WRITEF( "known = %d", known );
+        LOG_WRITEF( "selectedItemConnecting = %d", selectedItemConnecting );
+        LOG_WRITEF( "connecting = %d", connecting );
+
+        
         aMenuPane->SetItemDimmed( ESnifferCmdStartBrowsing, 
                                   connectedAndUsed || selectedItemConnecting );
         aMenuPane->SetItemDimmed( ESnifferCmdContinueBrowsing, 
@@ -335,6 +362,8 @@
 void CWsfMainView::HandleListBoxEventL( CEikListBox* /*aListBox*/, 
                                         TListBoxEvent aEventType )
     {
+    LOG_ENTERFN( "CWsfMainView::HandleListBoxEventL" );
+    LOG_WRITEF( "aEventType = %d", aEventType );
     switch ( aEventType )
         {
         case EEventEnterKeyPressed:
@@ -358,21 +387,32 @@
     iSelectionKey = ETrue;
     }
 
+// ---------------------------------------------------------------------------
+// CWsfMainView::UpdateBrowserUsageInfoL
+// ---------------------------------------------------------------------------
+//
+void CWsfMainView::UpdateBrowserUsageInfoL()
+    {
+    LOG_ENTERFN( "CWsfMainView::UpdateBrowserUsageInfoL" );
+    iIsBrowserUsingWlan = IsBrowserUsingWlanL();
+    }
+
     
 // ---------------------------------------------------------------------------
-// CWsfMainView::StartWebBrowsingVisibleL
+// CWsfMainView::IsBrowserUsingWlanL
 // ---------------------------------------------------------------------------
 //
-TBool CWsfMainView::StartWebBrowsingVisibleL()
+TBool CWsfMainView::IsBrowserUsingWlanL()
     {
-    LOG_ENTERFN( "CWsfMainView::StartWebBrowsingVisibleL" );
+    LOG_ENTERFN( "CWsfMainView::IsBrowserUsingWlanL" );
+    
     const TInt KBrowserUid = 0x10008D39;
     TUid id( TUid::Uid( KBrowserUid ) );
     
     // Check if the Browser application is already running.
     TApaTaskList taskList( iEikonEnv->WsSession() );
     TApaTask task = taskList.FindApp( id );
-    TBool isBrowserRuning( EFalse );
+    TBool isBrowserRunning( EFalse );
     
 #ifndef __WINS__
 
@@ -381,6 +421,7 @@
         LOG_WRITE( "The Browser is running." );
         // The Browser is already running.
         // Check if the selected WLAN is connected.
+        iController.UpdateSelectedItemL();
         TWsfWlanInfo* selectedItem = iController.SelectedItem();
         TBool connected( EFalse );
         if( selectedItem )
@@ -466,7 +507,7 @@
                 
                 if ( clientBuf().iUid[i].iUid == KBrowserUid )
                     {
-                    isBrowserRuning = ETrue;
+                    isBrowserRunning = ETrue;
                     }
                 }
             CleanupStack::PopAndDestroy( waiter );
@@ -481,8 +522,8 @@
         
 #endif // __WINS__
     
-    LOG_WRITEF( "isBrowserRuning: %d", isBrowserRuning ); 
-    return isBrowserRuning;
+    LOG_WRITEF( "isBrowserRunning: %d", isBrowserRunning );
+    return isBrowserRunning;
     }
 
 
--- a/wlanutilities/wlansniffer/mainapplication/src/wsfmainviewcontainer.cpp	Wed Feb 03 12:16:50 2010 +0000
+++ b/wlanutilities/wlansniffer/mainapplication/src/wsfmainviewcontainer.cpp	Fri Feb 19 23:55:42 2010 +0200
@@ -39,6 +39,7 @@
 #include "wsfdocument.h"
 #include "wsfwlaninfoarrayvisitor.h"
 #include "wsfappui.h"
+#include "wsfmainview.h"
 #include <wlansniffer.rsg>
 
 #include "wsflogger.h"
@@ -60,10 +61,12 @@
 // CWsfMainViewContainer::NewL
 // ---------------------------------------------------------
 //
-CWsfMainViewContainer* CWsfMainViewContainer::NewL( const TRect& aRect )
+CWsfMainViewContainer* CWsfMainViewContainer::NewL( const TRect& aRect,
+        CWsfMainView* aParentView )
     {
     LOG_ENTERFN( "CWsfMainViewContainer::NewL" );
-    CWsfMainViewContainer* self = CWsfMainViewContainer::NewLC( aRect );
+    CWsfMainViewContainer* self =
+            CWsfMainViewContainer::NewLC( aRect, aParentView );
     CleanupStack::Pop( self );
     return self;
     }
@@ -72,12 +75,13 @@
 // CWsfMainViewContainer::NewLC
 // ---------------------------------------------------------
 //
-CWsfMainViewContainer* CWsfMainViewContainer::NewLC( const TRect& aRect )
+CWsfMainViewContainer* CWsfMainViewContainer::NewLC( const TRect& aRect,
+        CWsfMainView* aParentView )
     {
     LOG_ENTERFN( "CWsfMainViewContainer::NewLC" );
     CWsfMainViewContainer* self = new( ELeave ) CWsfMainViewContainer;
     CleanupStack::PushL( self );
-    self->ConstructL( aRect );
+    self->ConstructL( aRect, aParentView );
     return self;
     }
 
@@ -114,10 +118,13 @@
 // CWsfMainViewContainer::ConstructL
 // ---------------------------------------------------------
 //
-void CWsfMainViewContainer::ConstructL( const TRect& aRect )
+void CWsfMainViewContainer::ConstructL( const TRect& aRect,
+        CWsfMainView* aParentView )
     {
     LOG_ENTERFN( "CWsfMainViewContainer::ConstructL" );
-    CreateWindowL(); 
+    CreateWindowL();
+    
+    iParentView = aParentView;
    
     iListBox = new( ELeave ) CAknDoubleGraphicStyleListBox();
     TInt flags( EAknGenericListBoxFlags );
@@ -487,6 +494,9 @@
             }
         CleanupStack::PopAndDestroy(text);
         }
+    
+    iParentView->UpdateBrowserUsageInfoL();
+    
     iListBox->DrawDeferred(); 
     }