wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/inc/core_eapol_handler.h
changeset 0 c40eb8fe8501
child 24 e717b8f55620
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/inc/core_eapol_handler.h	Tue Feb 02 02:03:13 2010 +0200
@@ -0,0 +1,269 @@
+/*
+* Copyright (c) 2005-2006 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:  handler to EAPOL callbacks.
+*
+*/
+
+
+#ifndef CORE_EAPOL_HANDLER_H
+#define CORE_EAPOL_HANDLER_H
+
+#include "abs_wlan_eapol_callback_interface.h"
+#include "abs_wlan_eapol_callback.h"
+#include "am_platform_libraries.h"
+#include "core_types.h"
+
+class core_server_c;
+class abs_core_driverif_c;
+class abs_core_server_callback_c;
+class abs_core_protected_setup_handler_c;
+class network_id_c;
+
+/**
+ * This class acts as handler to EAPOL callbacks.
+ *
+ * @since S60 v3.1
+ */
+NONSHARABLE_CLASS( core_eapol_handler_c ) :
+    public abs_wlan_eapol_callback_interface_c,
+    public abs_wlan_eapol_callback_c
+    {
+
+public:
+
+    /**
+     * constructor
+     *
+     * @since S60 v3.1
+     * @param server pointer to core_server
+     * @param drivers pointer to lower adaptation
+     * @param adaptation pointer to upper adaptation
+     */
+    core_eapol_handler_c(
+        core_server_c* server,
+        abs_core_driverif_c* drivers,
+        abs_core_server_callback_c* adaptation );
+
+    /**
+     * destructor
+     */
+    virtual ~core_eapol_handler_c();
+
+    /**
+     * eapol_handler
+     * @since S60 v3.1
+     * @return handler for EAPOL callbacks.
+     */
+    abs_wlan_eapol_callback_interface_c* eapol_handler();
+
+    /**
+     * Function to convert core_error_e to interface status
+     * @since S60 v3.2
+     * @param core_error
+     * @return interface status
+     */
+    static u32_t convert_core_error_to_if_status(
+        core_error_e core_error );
+
+    /**
+     * Direct the callbacks from EAPOL to the given handler.
+     *
+     * @since S60 v3.1
+     * @param New handler of EAPOL callbacks.
+     */   
+    void set_eapol_handler(
+        abs_wlan_eapol_callback_interface_c* handler );
+
+    /**
+     * Direct the Protected Setup events to the given handler.
+     *
+     * @since S60 v3.2
+     * @param New handler of Protected Setup events.
+     */  
+    void set_protected_setup_handler(
+        abs_core_protected_setup_handler_c* handler );
+
+// from base class abs_wlan_eapol_callback_interface_c  
+
+    /**
+     * packet_send sends a frame given by EAPOL
+     *
+     * @since S60 v3.1
+     * @param send_network_id
+     * @param packet_data contains the data of the frame
+     * @param packet_data_length contains the length of the data
+     * @param send_unencrypted Whether the frame must be sent unencrypted.
+     * @return status value
+     */
+    core_error_e packet_send(
+        network_id_c * send_network_id,
+        u8_t * packet_data,
+        u32_t packet_data_length,
+        bool_t send_unencrypted );
+
+    /**
+     * associate
+     *
+     * @since S60 v3.1
+     * @param authentication_mode
+     * @return status value
+     */
+    core_error_e associate(
+        wlan_eapol_if_eapol_key_authentication_mode_e authentication_mode );
+		
+    /**
+     * disassociate
+     *
+     * @since S60 v3.1
+     * @param receive_network_id
+     * @param self_disassociation
+     * @return status value
+     */
+    core_error_e disassociate(
+        network_id_c * receive_network_id,
+	    const bool_t self_disassociation );
+		  
+    /**
+     * packet_data_session_key
+     *
+     * @since S60 v3.1
+     * @param send_network_id
+     * @param key
+     * @return status value
+     */        
+    core_error_e packet_data_session_key(
+        network_id_c * send_network_id,
+        session_key_c * key );
+
+    /**
+     * state_notification
+     *
+     * @since S60 v3.1
+     * @param state
+     */        
+    void state_notification(
+        state_notification_c * state );
+
+    /**
+     * reassociate
+     *
+     * @since S60 v3.1
+     * @param send_network_id
+     * @param authentication_type
+     * @param PMKID
+     * @param PMKID_length
+     * @return status value
+     */
+    virtual core_error_e reassociate(
+        network_id_c * send_network_id,
+        const wlan_eapol_if_eapol_key_authentication_type_e authentication_type,
+        u8_t * PMKID,
+        u32_t PMKID_length );
+
+    /**
+     * From abs_wlan_eapol_callback_interface_c
+     */
+    virtual core_error_e complete_check_pmksa_cache(
+        core_type_list_c<network_id_c> & network_id_list );
+
+    /**
+     * From abs_wlan_eapol_callback_interface_c
+     */
+    virtual core_error_e complete_start_wpx_fast_roam_reassociation(
+        network_id_c * receive_network_id,
+        u8_t * reassociation_request_ie,
+        u32_t reassociation_request_ie_length );
+
+    /**
+     * From abs_wlan_eapol_callback_interface_c
+     */
+    virtual core_error_e new_protected_setup_credentials(
+        core_type_list_c< protected_setup_credential_c > & credential_list );
+
+    /**
+     * From abs_wlan_eapol_callback_interface_c
+     */
+    virtual void handle_error(
+        wlan_eapol_if_error_e errorcode,
+        wlan_eapol_if_message_type_function_e function );
+
+
+// from base class abs_wlan_eapol_callback_c
+
+    /**
+     * Callback interface to partner.
+     *
+     * @since S60 v3.2
+     * @param data Pointer to the data to be sent.
+     * @param length Length of the data to be sent.
+     * @return Return value is specified in interface specification.
+     */
+    u32_t send_data(
+        const void * const data, 
+        const u32_t length );
+
+private:
+
+    /**
+     * Handle a authentication state notification.
+     *
+     * @param state Current EAPOL authentication state.
+     * @param bssid The BSSID the notification is about.
+     */
+    void handle_wlan_authentication_state(
+        u32_t state,
+        const core_mac_address_s& bssid );        
+
+    /**
+     * Convert an EAPOL state notification to a core error code.
+     *
+     * @param state State notification to be converted.
+     * @return Core error code.
+     */
+    core_error_e eapol_wlan_authentication_state_to_error(
+        u32_t state ) const;
+
+    /**
+     * Check whether the given EAPOL state notification is an error.
+     */
+    bool_t is_eapol_wlan_authentication_state_failure(
+        u32_t state ) const;
+
+    /**
+     * Check whether the given EAPOL state notification is a success.
+     */
+    bool_t is_eapol_wlan_authentication_state_success(
+        u32_t state ) const;
+
+
+private: // data
+
+    /** Handle to the core server. */
+    core_server_c* server_m;
+
+    /** Handle to adaptation interface. */
+    abs_core_driverif_c* drivers_m;
+    
+    /** Handle to WLM. */
+    abs_core_server_callback_c* adaptation_m;
+    
+    /** The actual handler of EAPOL callbacks. */
+    abs_wlan_eapol_callback_interface_c* handler_m;
+    
+    /** Handler for protected setup indications. */
+    abs_core_protected_setup_handler_c* protected_setup_handler_m;
+
+    };
+
+#endif // CORE_EAPOL_HANDLER_H