wlanutilities/wlansniffer/wlaninfo/inc/wsfwlaninfo.h
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:20:32 +0100
branchRCL_3
changeset 55 f28ada11abbf
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201029 Kit: 201035

/*
* Copyright (c) 2007-2007 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:  Class header for TWsfWlanInfo
*
*/



#ifndef T_WSFWLANINFO_H
#define T_WSFWLANINFO_H

//  EXTERNAL INCLUDES
#include <e32base.h>
#include <cmpluginwlandef.h>
#include <wlanmgmtcommon.h>


// ENUMS

/**
 * Signal strength categories for UI
 */
enum TWsfWlanSignalStrengthLevel
    {
    ENoSignal,
    EPoor,
    EAverage,
    EExcelent
    };


/**
 * Connection status
 */
enum TWsfWlanConnectionState
    {
    ENotConnected,
    EConnecting,
    EConnected
    };
    

/**
 * Signal strength category boundaries in dB (absolute value).
 * Smaller value means better signal.
 */    
enum TWsfWlanSignalStrength
    {
    EWlanSignalStrengthMax = 60,
    EWlanSignalStrengthGood = 74,
    EWlanSignalStrengthLow = 87,
    EWlanSignalStrengthMin = 100,
    EWlanSignalUnavailable = 9999
    };


/**
 * Flags for different types of networks
 */
enum TWsfBrandDataDefs
    {
    EBrandedItem = 0xFF,
    EBlackListItem = 0x01,
    EUserSortListItem = 0x02,
    EFonSsid = 0x04,
    EUsesPresharedKey = 0x08
    };
    

/**
 * Maximal length of IAP name that the class should be able to store
 */    
const TInt KWlanMaxAccessPointNameLength = 50;


// FORWARD DECLARATIONS
class RReadStream;
class RWriteStream;


//  CLASS DEFINITION
/**
 * Class to encapsulate network parameters
 *
 * TWsfWlanInfo serves for transferring the WLAN network related data
 * between the different submodules of Wlan Sniffer.
 *
 * @lib wsfwlaninfo.lib
 * @since S60 5.0
 */
NONSHARABLE_CLASS( TWsfWlanInfo )
    {
    public:     // Constructors

        IMPORT_C TWsfWlanInfo();

        /**
         * Constructor.
         *
         * @since S60 5.0
         * @param aSsid SSID of the WLAN network
         * @param aStrengthLevel Signal strength in dB (absolute value)
         * @param aSecurityMode Network security mode
         * @param aVisibility ETrue for public networks, EFalse for hidden ones
         * @param aNetMode Network mode (infrastructure or adhoc)
         * @param aIapId IAP id if known, zero otherwise.
         * @param aCoverage Number of APs with the same SSID
         * @param aTransferRate Maximal transfer rate reported by the AP
         */
        IMPORT_C TWsfWlanInfo( TDesC8& aSsid,
                        TUint16 aStrengthLevel,
                        CMManager::TWlanSecMode aSecurityMode,
                        TInt aVisibility,
                        CMManager::TWlanNetMode aNetMode,
                        TUint32 aIapId,
                        TUint8 aCoverage,
                        TUint32 aTransferRate );

    public:     // New methods

        /**
        * Gets WLAN name (Ssid) as unicode format 
        * @since S60 5.0
        * @return Ssid as unicode format
        */
        IMPORT_C HBufC* GetSsidAsUnicodeLC();

        /**
        * Gets WLAN name (Ssid) as unicode format
        * @since S60 5.0
        * @return Ssid as unicode format
        */ 
        IMPORT_C static HBufC* GetSsidAsUnicodeLC( const TWlanSsid& aSsid );

        /**
        * Gets WLAN name (Ssid) as 8-bit format 
        * @since S60 5.0
        * @return Ssid as 8-bit format
        */
        IMPORT_C HBufC8* GetSsidAsUtf8LC();

        /**
        * Serializes data from the stream
        * @since S60 5.0
        * @param aStream Stream from where data is serialized
        */
        IMPORT_C void InternalizeL( RReadStream& aStream );
        
        /**
        * Serializes data to the stream
        * @since S60 5.0
        * @param aStream Stream where data will be serialized
        */
        IMPORT_C void ExternalizeL( RWriteStream& aStream ) const;

        /**
        * Get signal strength as enumeration
        * @since S60 5.0
        * @return Signal stregth as enumeration
        */
        IMPORT_C TWsfWlanSignalStrengthLevel SignalStrength(); 

        /**
        * Get signal strength as percentage
        * @since S60 5.0
        * @return Signal stregth as percentage
        */
        IMPORT_C TInt SignalStrengthPercentage();
        
        /**
        * Gets WLAN IAP name as unicode format 
        * @since S60 5.0
        * @return Ssid as unicode format
        */
        IMPORT_C HBufC* GetIapNameAsUnicodeLC();

        /**
        * Gets WLAN IAP name as 8-bit format 
        * @since S60 5.0
        * @return Ssid as 8-bit format
        */
        IMPORT_C HBufC8* GetIapNameAsUtf8LC();

        /**
        * Get WLAN connection state
        * @since S60 5.0
        * @return ETrue if connected
        */
        inline TBool Connected() const;
        
        /**
        * Get WLAN connection state
        * @since S60 5.2
        * @return TWsfWlanConnectionState
        */
        inline TWsfWlanConnectionState ConnectionStatus() const;

        /**
        * Get WLAN Known state
        * @since S60 5.0
        * @return ETrue if access point has been defined
        */
        inline TBool Known() const;

        /**
        * Get WLAN visibility state
        * @since S60 5.0
        * @return ETrue if WLAN is hidden
        */
        inline TBool Hidden() const;

        /**
        * Get WLAN security state
        * @since S60 5.0
        * @return ETrue if WLAN is secured. 
        */
        inline TBool Secure() const;

        /**
        * Set the brand id for entry
        * @since S60 5.0
        * @param aBrandId The brand id.
        */ 
        inline void SetBrand( const TInt8 aBrandId );

        /**
        * Get brand id
        * @since S60 5.0
        * @return 8-bit value representing brand id
        */
        inline TInt8 BrandId() const;

        /**
        * Set blacklist entry flag
        * @since S60 5.0
        * @param aBlackListEntry ETrue if the network is blacklisted.
        */
        inline void SetBlackListEntry( const TBool aBlackListEntry );

        /** 
        * Get blacklist flag
        * @since S60 5.0
        * @return ETrue if the entry is marked as black list entry
        */
        inline TBool BlackListEntry() const;

        /**
        * Get Fon entry flag
        * @since S60 5.0
        * @return ETrue if the network is recognised as FON.
        */
        inline TBool FonSsid() const;

        /** 
        * Set Fon flag
        * @since S60 5.0
        * @param aFonSsid ETrue if the entry is a Fon list entry
        */
        inline void SetFonSsid( const TBool aFonSsid );

        /**
        * Query preshared key flag in WPA and 802.1x security modes.
        * Note that the result is undefined in case of other security modes.
        * @since S60 5.0
        * @return ETrue, if preshared key is used.
        */
        inline TBool UsesPreSharedKey() const;

        /** 
        * Set preshared key flag for WPA and 802.1x security modes.
        * @since S60 5.0
        * @param aUsePresharedKey ETrue if the network uses preshared key
        */
        inline void SetUsesPreSharedKey( const TBool aUsePresharedKey );
        
        /**
        * Set the priority for entry
        * @since S60 5.1
        * @param aPriority The priority id.
        */ 
        inline void SetPriority( const TUint8 aPriority );

        /**
        * Get priority
        * @since S60 5.1
        * @return 8-bit value representing priority
        */
        inline TUint8 Priority() const;

        /**
        * Get WLAN security mode
        * @since S60 5.2
        * @return WLAN security mode
        */
        inline CMManager::TWlanSecMode SecurityMode() const;


    public:    // Data

        // Network name (unknown: SSID, known: IAP name)
        TWlanSsid iSsid;

        // Network strength
        TUint16 iStrengthLevel;			

        //Network encryption
        CMManager::TWlanSecMode iSecurityMode;		

        //Network visibility
        TBool iVisibility;		

        //Network capability
        CMManager::TWlanNetMode iNetMode;	

        //Internet Access Point Id. 0 if the IAP has not been defined. 
        TUint32 iIapId;

        // Available WLAN hotspots in this WLAN network
        TUint8 iCoverage;

        // Transferrate
        TUint32 iTransferRate;

        // Connection state
        TWsfWlanConnectionState iConnectionState;

        // filter flags
        TUint8 iFilterFlags;

        //brand id
        TUint8 iBrandId;
        
        // The name of the WLAN IAP
        TBuf8<KWlanMaxAccessPointNameLength> iNetworkName;
        
        //UI priority for known networks
        TUint8 iPriority;
        
        //Raw SSID - not converted
        TWlanSsid iRawSsid;
    };


#include "wsfwlaninfo.inl"


#endif // T_WSFWLANINFO_H

// End of file