--- /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