wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/inc/core_ap_data.h
changeset 0 c40eb8fe8501
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/inc/core_ap_data.h	Tue Feb 02 02:03:13 2010 +0200
@@ -0,0 +1,491 @@
+/*
+* 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 holding access point specific information
+*
+*/
+
+/*
+* %version: 23 %
+*/
+
+#ifndef CORE_AP_DATA_H
+#define CORE_AP_DATA_H
+
+#include "core_types.h"
+#include "core_scan_channels.h"
+#include "core_frame_mgmt_ie.h"
+#include "abs_core_wpx_adaptation.h"
+
+const u32_t CORE_EAPOL_WPAIE_DATA_OFFSET = 2;
+
+class core_frame_dot11_c;
+class core_frame_dot11_ie_c;
+class core_frame_rsn_ie_c;
+class core_frame_wpa_ie_c;
+class core_frame_wsc_ie_c;
+class core_frame_beacon_c;
+class core_frame_wmm_ie_parameter_c;
+class core_frame_qbss_load_ie_c;
+class core_frame_wapi_ie_c;
+
+/**
+ * Class encapsulating a single AP parsed from the scan results.
+ *
+ * @since S60 v3.1
+ */
+NONSHARABLE_CLASS( core_ap_data_c )
+    {
+
+public:
+
+    typedef enum _core_am_ap_data_capability
+        {
+        core_am_ap_data_capability_rsn_ie_present = 1,
+        core_am_ap_data_capability_wpa_ie_present = 2,
+        core_am_ap_data_capability_wmm_ie_present = 4, 
+        core_am_ap_data_capability_uapsd_supported = 8,
+        core_am_ap_data_capability_wapi_ie_present = 16
+        } core_am_ap_data_capability;
+
+    /**
+     * Factory method used for creating an instance of core_ap_data_c
+     * encapsulating the copy of the given core_ap_data_c instance.
+     *
+     * @since S60 v3.1
+     * @param copy Instance to be copied.
+     * @return Instance of the class, NULL if parsing failed.
+     */    
+    static core_ap_data_c* instance(
+        const core_ap_data_c& copy );
+
+    /**
+     * Factory method used for creating an instance of core_ap_data_c
+     * encapsulating the given beacon/probe response frame.
+     *
+     * @since S60 v3.1
+     * @param wpx_adaptation WPX adaptation.
+     * @param frame Beacon/probe response frame to be encapsulated.
+     * @param rcpi RCPI value of the frame.
+     * @param is_copied Whether the object should take a copy of the frame data.
+     * @return Instance of the class, NULL if parsing failed.
+     */
+    static core_ap_data_c* instance(
+        abs_core_wpx_adaptation_c& wpx_adaptation,
+        const core_frame_dot11_c* frame,
+        u8_t rcpi,
+        bool_t is_copied );
+
+    /**
+     * Destructor.
+     */
+    virtual ~core_ap_data_c();
+
+    /**
+     * Get BSSID of the AP.
+     *
+     * @since S60 v3.1
+     * @return BSSID of the AP.
+     */
+    core_mac_address_s bssid() const;
+
+    /**
+     * Get the SSID of the AP.
+     */
+    core_ssid_s ssid();
+
+    /**
+     * Get the capabilities field of the AP.
+     *
+     * @since S60 v3.1
+     * @return Capabilities field of the AP.
+     */
+    u16_t capabilities() const;
+    
+    /**
+     * Get the maximum allowed tx power level.
+     *
+     * @since S60 v3.1
+     * @return Maximum allowed tx power level,
+     *         MAX_TX_POWER_LEVEL_NOT_DEFINED if not defined.
+     */
+    u8_t max_tx_power_level() const;
+
+    /**
+     * Get the country information.
+     *
+     * @since S60 v5.0
+     * @return Country information, country information is zero if not defined.
+     */
+    core_country_string_s country_info() const;
+    
+    /**
+     * Get the privacy field of the AP.
+     *
+     * @since S60 v3.1
+     * @return Privacy field of the AP.
+     */
+    bool_t is_privacy_enabled() const;
+            
+    /**
+     * whether short preamble is allowed or not. If not, long must be used.
+     *
+     * @since S60 v3.1
+     * @return true if short is allowed
+     */
+    bool_t is_short_preamble_allowed() const;
+    
+    /**
+     * whether short slot time is allowed or not. If not, long must be used.
+     *
+     * @since S60 v3.1
+     * @return true if short is allowed
+     */
+    bool_t is_short_slot_time_used() const;
+    
+    /**
+     * whether accesspoint (i.e. infra) or ad hoc network
+     *
+     * @since S60 v3.1
+     * @return true if infrastrcture network
+     */
+    bool_t is_infra() const;
+
+    /**
+     * Whether radio measurement is supported.
+     *
+     * @since S60 v5.2
+     * @return Whether radio measurement is supported
+     */
+    bool_t is_radio_measurement_supported() const;
+
+    /**
+     * is WPA IE present or not
+     *
+     * @since S60 v3.1
+     * @return true if present
+     */
+    bool_t is_wpa_ie_present() const;
+
+    /**
+     * is RSN IE present or not
+     *
+     * @since S60 v3.1
+     * @return true if present
+     */
+    bool_t is_rsn_ie_present() const;
+
+    /**
+     * is WMM IE present or not
+     *
+     * @since S60 v3.2
+     * @return true if present
+     */
+    bool_t is_wmm_ie_present() const;
+
+    /**
+     * Whether U-APSD is supported.
+     * 
+     * @since S60 v3.2
+     * @return Whether U-APSD is supported.
+     */
+    bool_t is_uapsd_supported() const;    
+
+    /**
+     * Return whether Admission Control is mandatory for the given access class.
+     * @return Whether Admission Control is mandatory for the given access class.
+     */
+    bool_t is_admission_control_required(
+        core_access_class_e access_class ) const;
+
+    /**
+     * is WAPI IE present or not
+     *
+     * @since S60 v3.2
+     * @return true if present
+     */
+    bool_t is_wapi_ie_present() const;
+    
+    /**
+     * pairwise_ciphers
+     *
+     * @since S60 v3.1
+     * @return pairwise key
+     */
+    u8_t pairwise_ciphers() const;
+    
+    /**
+     * group_cipher
+     *
+     * @since S60 v3.1
+     * @return group key
+     */
+    u8_t group_cipher() const;
+
+    /**
+     * key_management_suites of the AP
+     *
+     * @since S60 v3.1
+     * @return 
+     */
+    u8_t key_management_suites() const;
+
+    /**
+     * best_pairwise_cipher
+     *
+     * @since S60 v3.1
+     * @return 
+     */
+    core_cipher_suite_e best_pairwise_cipher() const;
+    
+    /**
+     * best_group_cipher
+     *
+     * @since S60 v3.1
+     * @return 
+     */
+    core_cipher_suite_e best_group_cipher() const;
+
+    /**
+     * is wpx supported or not by the AP
+     *
+     * @since S60 v3.1
+     * @return 
+     */
+    bool_t is_wpx() const;
+
+    /**
+     * Return the WPX version.
+     *
+     * @since S60 v3.2
+     * @return The WPX version.
+     */
+    u8_t wpx_version() const;
+
+    /**
+     * channel where AP operates
+     *
+     * @since S60 v3.1
+     * @return 
+     */
+    u8_t channel() const;
+
+    /**
+     * is_wpx_fast_roam_available
+     *
+     * @since S60 v3.1
+     * @return 
+     */
+    bool_t is_wpx_fast_roam_available() const;
+
+    /**
+     * timestamp
+     *
+     * @since S60 v3.1
+     * @return 
+     */
+    core_tsf_value_s timestamp() const;
+
+    /**
+     * band
+     *
+     * @since S60 v3.1
+     * @return 
+     */
+    u8_t band() const;
+
+    /**
+     * Get RCPI value of the frame.
+     *
+     * @since S60 v3.1
+     * @return RCPI value of the frame.
+     */
+    u8_t rcpi() const;
+
+    /**
+     * Return the beacon interval of the frame.
+     * 
+     * @since S60 v3.1
+     * @return The beacon interval of the frame.
+     */
+    u16_t beacon_interval() const;
+
+    /**
+     * Return the DTIM period of the AP.
+     *
+     * @since S60 v3.2
+     * @return The DTIM period of the AP.
+     */
+    u8_t dtim_period() const;
+    
+    /**
+     * Set the DTIM period of the AP.
+     *
+     * @since S60 v3.2
+     * @param dtim_period The DTIM period of the AP.
+     */
+    void set_dtim_period(
+        u8_t dtim_period );
+
+    /**
+     * Get the actual beacon/probe response frame of the AP.
+     *
+     * @since S60 v3.1
+     * @return The actual beacon/probe response frame of the AP.
+     */
+    core_frame_beacon_c* frame() const;
+
+    /**
+     * Return an WPA IE parser instance.
+     * @return NULL if no WPA IE present, pointer to instance otherwise.
+     */
+    const core_frame_wpa_ie_c* wpa_ie();
+
+    /**
+     * Return an RSN IE parser instance.
+     * @return NULL if no RSN IE present, pointer to instance otherwise.
+     */
+    const core_frame_rsn_ie_c* rsn_ie();
+
+    /**
+     * Return an WSC IE parser instance.
+     * @return NULL if no WSC IE present, pointer to instance otherwise.
+     */
+    const core_frame_wsc_ie_c* wsc_ie();
+    
+    /**
+     * Return a WMM Parameter Element IE parser instance.
+     * @return NULL if no WMM Parameter Element IE present, pointer to instance otherwise.
+     */
+    const core_frame_wmm_ie_parameter_c* wmm_parameter_ie();    
+
+    /**
+     * Return an 802.11e QBSS Load IE parser instance.
+     * @return NULL if no 802.11e QBSS Load IE present, pointer to instance otherwise.
+     */
+    const core_frame_qbss_load_ie_c* qbss_load_ie();
+    
+    /**
+     * Process AP channel report information elements.
+     *
+     * @since S60 v5.1
+     * @return 
+     */
+    core_scan_channels_c ap_channel_report();
+
+    /**
+     * Return a WAPI IE parser instance.
+     * @return NULL if no WAPI IE present, pointer to instance otherwise.
+     */
+    const core_frame_wapi_ie_c* wapi_ie();    
+
+    /**
+     * Get an 802.11k Admission Capacities.
+     * @param admission_capacities Admission Capacities.
+     */
+    void admission_capacity(
+        medium_time_s& admission_capacities );
+    
+    /**
+     * Return power capability.
+     * @return power capability.
+     */
+    u8_t power_capability();
+
+    /**
+     * Return RRM capabilities.
+     * @return RRM capabilities.
+     */
+    u64_t rrm_capabilities();
+    
+    /**
+     * Get reported frame body.
+     * @param reported_frame_body_length Reported frame body length.
+     * @param reported_frame_body Reported frame body.
+     */
+    void get_reported_frame_body( 
+        u16_t* reported_frame_body_length,
+        u8_t* reported_frame_body );
+
+    /**
+     * Get Request IE.
+     * @param reported_frame_body_length Reported frame body length.
+     * @param reported_frame_body Reported frame body.
+     * @param ie_id_list IE ID list.
+     * @param ie_id_list_length IE ID list length.
+     */
+    void request_ie(
+        u16_t* reported_frame_body_length,
+        u8_t* reported_frame_body,
+        u8_t* ie_id_list,
+        u8_t ie_id_list_length );
+    
+    /**
+     * Assignment operator.
+     */
+    core_ap_data_c& operator=(
+        const core_ap_data_c& src );
+
+private:
+
+    /**
+     * Constructor.
+     *
+     * @param wpx_adaptation WPX adaptation.
+     */
+    core_ap_data_c(
+        abs_core_wpx_adaptation_c& wpx_adaptation );
+
+    /**
+     * Return the most secure cipher from the given list.
+     * @param ciphers List of ciphers to choose from.
+     * @return The most secure cipher from the given list. 
+     */
+    core_cipher_suite_e best_cipher(
+        u32_t ciphers ) const;
+
+private: // data
+
+    /** WPX adaptation instance. */
+    abs_core_wpx_adaptation_c& wpx_adaptation_m;
+
+    /** Beacon/Probe response frame. */
+    core_frame_beacon_c* frame_m;
+
+    /** RCPI value of the frame. */
+    u8_t rcpi_m;
+
+    /** Supported pairwise ciphers. */
+    u8_t pairwise_cipher_m;
+
+    /** Supported group ciphers. */
+    u8_t group_cipher_m;
+
+    /** Supported key management suites. */
+    u8_t key_management_m;
+
+    /** The WPX version supported by the AP. */
+    u8_t wpx_version_m;
+
+    /** Bitmap of different boolean capabilities. */
+    u8_t capabilities_bitmap_m;
+
+    /** Bitmap of AC classes that require admission control. */
+    u8_t is_ac_required_bitmap_m;
+
+    /** DTIM period. */
+    u8_t dtim_period_m;
+
+    };
+
+#endif // CORE_AP_DATA_H