diff -r 000000000000 -r c40eb8fe8501 wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/inc/core_frame_dot11_ie.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/inc/core_frame_dot11_ie.h Tue Feb 02 02:03:13 2010 +0200 @@ -0,0 +1,165 @@ +/* +* 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: Class parsing 802.11 IEs. +* +*/ + + +#ifndef CORE_FRAME_DOT11_IE_H +#define CORE_FRAME_DOT11_IE_H + +#include "core_types.h" + +const u8_t CORE_FRAME_DOT11_IE_HEADER_LENGTH = 2; + +/** + * Class parsing 802.11 IEs. + * + * This class acts as a base class for the various IE parsers. + * + * @since S60 v3.1 + */ +NONSHARABLE_CLASS( core_frame_dot11_ie_c ) + { + +public: + + enum core_frame_dot11_ie_element_id_e + { + core_frame_dot11_ie_element_id_ssid = 0, + core_frame_dot11_ie_element_id_supported_rates = 1, + core_frame_dot11_ie_element_id_fh_parameter_set = 2, + core_frame_dot11_ie_element_id_ds_parameter_set = 3, + core_frame_dot11_ie_element_id_cf_paremeter_set = 4, + core_frame_dot11_ie_element_id_tim = 5, + core_frame_dot11_ie_element_id_ibss_parameter_set = 6, + core_frame_dot11_ie_element_id_country = 7, + core_frame_dot11_ie_element_id_hopping_pattern = 8, + core_frame_dot11_ie_element_id_hopping_pattern_table = 9, + core_frame_dot11_ie_element_id_request = 10, + core_frame_dot11_ie_element_id_qbss_load = 11, + core_frame_dot11_ie_element_id_challenge_text = 16, + // Reserved for challenge text extension 17 - 31 + core_frame_dot11_ie_element_id_power_constraint = 32, + core_frame_dot11_ie_element_id_power_capability = 33, + core_frame_dot11_ie_element_id_measurement_req = 38, + core_frame_dot11_ie_element_id_measurement_resp = 39, + core_frame_dot11_ie_element_id_erp_information = 42, + core_frame_dot11_ie_element_id_rsn = 48, + core_frame_dot11_ie_element_id_extended_rates = 50, + core_frame_dot11_ie_element_id_ap_channel_report = 51, + core_frame_dot11_ie_element_id_neighbor_report = 52, + core_frame_dot11_ie_element_id_admission_capacity = 67, + core_frame_dot11_ie_element_id_wapi = 68, + core_frame_dot11_ie_element_id_rrm_capabilities = 70, + core_frame_dot11_ie_element_id_wpa = 221, + core_frame_dot11_ie_element_id_wmm_parameter = 221, + core_frame_dot11_ie_element_id_wmm_tspec = 221 + }; + + /** + * Factory for creating a parser instance. + * + * @since S60 v3.1 + * @param data_length Length of the IE data. + * @param data Pointer to the IE data. + * @param is_copied Whether the object should take a copy of the frame data. Default value is false_t. + * @return Pointer to the created parser instance. + */ + static core_frame_dot11_ie_c* instance( + u16_t data_length, + const u8_t* data, + bool_t is_copied = false_t ); + + /** + * Destructor. + */ + virtual ~core_frame_dot11_ie_c(); + + /** + * Return the element ID field of the IE. + * + * @since S60 v3.1 + * @return The element ID field of the IE. + */ + u8_t element_id() const; + + /** + * Return the length field of the IE. + * + * @since S60 v3.1 + * @return The length field of the IE. + */ + u8_t length() const; + + /** + * Return the data of the IE, including the IE headers. + * + * @since S60 v3.1 + * @return The total length of the IE. + */ + u16_t data_length() const; + + /** + * Return a pointer to the IE data. + * + * @since S60 v3.1 + * @return A pointer to the IE data. + */ + const u8_t* data() const; + +protected: + + /** + * Generate a IE header. + * + * @param element_id The element ID field of the header. + */ + void generate( + u8_t element_id ); + + /** + * Set the total length of the IE to the given value. + * + * @param length The total length of the IE. + */ + void set_length( + u8_t length ); + + /** + * Constructor + * + * @param data_length Length of the IE data. + * @param data Pointer to the IE data. + * @param max_data_length + */ + core_frame_dot11_ie_c( + u16_t data_length, + const u8_t* data, + u16_t max_data_length ); + +protected: + + /** The length of the IE data. */ + u16_t data_length_m; + + /** Pointer to the IE data. */ + u8_t* data_m; + + /** The maximum IE length when generating an IE. */ + u16_t max_data_length_m; + + }; + +#endif // CORE_FRAME_DOT11_IE_H