diff -r 000000000000 -r c40eb8fe8501 wlan_bearer/wlanldd/wlan_common/umac_common/inc/umacelementlocator.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wlan_bearer/wlanldd/wlan_common/umac_common/inc/umacelementlocator.h Tue Feb 02 02:03:13 2010 +0200 @@ -0,0 +1,187 @@ +/* +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Declaration of the WlanElementLocator class. +* +*/ + +/* +* %version: 8 % +*/ + +#ifndef WLAN_ELEMENT_LOCATOR_H +#define WLAN_ELEMENT_LOCATOR_H + + +/** + * Provides methods to locate 802.11 information elements. + * + * @lib wlanumac.lib + * @since S60 v3.1 + */ +class WlanElementLocator + { + +public: + + enum TWlanLocateStatus + { + EWlanLocateOk, + EWlanLocateElementNotFound + }; + + /** + * Constructor. + * + * @since S60 3.1 + * @param aStart (IN) beginning of the area from where to locate + * elements + * @param aLength (IN) length of the area to search + */ + WlanElementLocator( const TUint8* aStart, TUint16 aLength ); + + /** + * Return requested information element data. + * @param aIeId Id of the requested IE data. See 802dot11.h + * @param aIeLength (OUT) Length of the IE. Zero if IE not found. + * @param aIeData (OUT) Pointer to the beginning of the IE data. + * NULL if IE not found. + * @param aValidateLength (IN) If ETrue, the indicated length of the IE + * data part is checked for validity against the relevant + * specification. + * If EFalse, the validity check is not done. + * @return Locate status. + */ + TWlanLocateStatus InformationElement( + TUint8 aIeId, + TUint8& aIeLength, + const TUint8** aIeData, + TBool aValidateLength = ETrue ); + + /** + * Return requested information element data. + * + * @since S60 3.2 + * @param aIeId (IN) Id of the requested IE data. See 802dot11.h + * @param aIeOui (IN) OUI of the requested IE data. See 802dot11.h + * @param aIeOuiType (IN) OUI Type of the requested IE data. + * See 802dot11.h + * @param aIeLength (OUT) Length of the IE. Zero if IE not found. + * @param aIeData (OUT) Pointer to the beginning of the IE data. + * NULL if IE not found. + * @return Locate status. + */ + TWlanLocateStatus InformationElement( + TUint8 aIeId, + const TIeOui& aIeOui, + TUint8 aIeOuiType, + TUint8& aIeLength, + const TUint8** aIeData ); + + /** + * Return requested information element data. + * @param aIeId (IN) Id of the requested IE data. See 802dot11.h + * @param aIeOui (IN) OUI of the requested IE data. See 802dot11.h + * @param aIeOuiType (IN) OUI Type of the requested IE data. + * See 802dot11.h + * @param aIeOuiSubtype (IN) OUI Subtype of the requested IE data. + * See 802dot11.h + * @param aIeLength (OUT) Length of the IE. Zero if IE not found. + * @param aIeData (OUT) Pointer to the beginning of the IE data. + * NULL if IE not found. + * @return Locate status. + */ + TWlanLocateStatus InformationElement( + TUint8 aIeId, + const TIeOui& aIeOui, + TUint8 aIeOuiType, + TUint8 aIeOuiSubtype, + TUint8& aIeLength, + const TUint8** aIeData ); + +private: + + /** + * Return the first information element data. + * @param aIeId (OUT) Id of the IE. See 802dot11.h. + * @param aIeLength (OUT) Length of the IE. Zero if IE not found. + * @param aIeData (OUT) Pointer to the beginning of the IE data. + * NULL if IE not found. + * @return Locate status. + */ + TWlanLocateStatus FirstIE( + TUint8& aIeId, + TUint8& aIeLength, + const TUint8** aIeData ); + + /** + * Return next information element data. + * @param aIeId (OUT) Id of the IE. See 802dot11.h. + * @param aIeLength (OUT) Length of the IE. Zero if IE not found. + * @param aIeData (OUT) Pointer to the beginning of the IE data. + * NULL if IE not found. + * @return Locate status. + */ + TWlanLocateStatus NextIE( + TUint8& aIeId, + TUint8& aIeLength, + const TUint8** aIeData ); + + /** + * Return current information element data. + * @param aIeId (OUT) Id of the IE. See 802dot11.h. + * @param aIeLength (OUT) Length of the IE. Zero if IE not found. + * @param aIeData (OUT) Pointer to the beginning of the IE data. + * NULL if IE not found. + * @return Locate status. + */ + TWlanLocateStatus CurrentIE( + TUint8& aIeId, + TUint8& aIeLength, + const TUint8** aIeData ) const; + + /** + * Validates the indicated length of the IE data part (aIeLength) against + * the relevant specification. + * @param aIeId (IN) Id of the IE. See 802dot11.h. + * @param aIeLength (IN) Length of the IE. + * @param aIeData (IN) Pointer to the beginning of the IE data. NULL + * if not relevant for the validity check. + * @param aIeOuiType (IN) OUI Type of the IE (if relevant) + * @param aIeOuiSubtype (IN) OUI Subtype of the IE (if relevant) + * @return + */ + WlanElementLocator::TWlanLocateStatus ValidIE( + TUint8 aIeId, + TUint8 aIeLength, + const TUint8* aIeData = 0, + TUint8 aIeOuiType = KWmmElemOuiType, + TUint8 aIeOuiSubtype = KWmmInfoElemOuiSubType ) const; + + // Prohibit copy constructor. + WlanElementLocator( const WlanElementLocator& ); + // Prohibit assigment operator. + WlanElementLocator& operator= + ( const WlanElementLocator& ); + +private: // data + + /** start of the search area */ + const TUint8* iStart; + /** length of the search area */ + TUint16 iLength; + /** Iterator for going through elements */ + const TUint8* iIterator; + }; + +#endif // WLAN_ELEMENT_LOCATOR_H