wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/inc/abs_core_server.h
changeset 0 c40eb8fe8501
child 7 0abc8c98be24
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/inc/abs_core_server.h	Tue Feb 02 02:03:13 2010 +0200
@@ -0,0 +1,495 @@
+/*
+* 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:  Interface implemented by core server.
+*                Adaptation layer can use core services through this interface.
+*
+*/
+
+/*
+* %version: 30 %
+*/
+
+#ifndef ABS_CORE_SERVER_H
+#define ABS_CORE_SERVER_H
+
+#include "am_platform_libraries.h"
+#include "core_types.h"
+#include "core_type_list.h"
+
+class ScanList;
+
+/**
+ * Abstract core server interface class for WLAN management functionality.
+ *
+ * This interface is implemented by the core server and it provides
+ * methods for the adaptation layer.
+ *
+ * @since S60 v3.1
+ */
+class abs_core_server_c
+    {
+
+public:
+
+    /**
+     * Destructor.
+     */
+    virtual ~abs_core_server_c() {};
+
+    /**
+     * Asynchronous methods that the core server will complete by calling
+     * abs_core_server_callback_c::request_complete.
+     */
+
+    /**
+     * Connect to a network.
+     *
+     * @since S60 v3.1
+     * @param request_id An unique identification for the request.
+     * @param settings The settings used for establishing the connection.
+     * @param connect_status contains the error code of connection attempt
+     *        on completion
+     * @param ssid_list List of possible secondary SSIDs.
+     */
+    virtual void connect(
+        u32_t request_id,
+        const core_iap_data_s& settings,
+        core_connect_status_e& connect_status,
+        core_type_list_c<core_ssid_entry_s>* ssid_list = NULL ) = 0;
+
+    /**
+     * Disconnect an active connection.
+     * 
+     * @since S60 v3.1
+     * @param request_id An unique identification for the request.
+     */
+    virtual void release(
+        u32_t request_id ) = 0;
+
+    /**
+     * Request available networks with the given SSID.
+     * 
+     * @since S60 v3.1
+     * @param request_id An unique identification for the request.
+     * @param scan_mode Defines whether active or passive scan is performed.
+     * @param scan_ssid Name of the network to scan for.
+     * @param scan_channels Channels to scan.
+     * @param scan_data Scan results are stored here.
+     * @param scan_max_age Maximum age of returned scan results in seconds.
+     * @param is_current_ap_added Whether the current AP needs to be added during an ongoing
+     *                            connection if not otherwise found in the scan.
+     * @note If the length of the SSID is zero, a broadcast scan is performed.
+     */
+    virtual void get_scan_result(
+        u32_t request_id,
+        core_scan_mode_e scan_mode,
+        const core_ssid_s& scan_ssid,
+        const core_scan_channels_s& scan_channels,
+        u8_t scan_max_age,
+        ScanList& scan_data,
+        bool_t is_current_ap_added = true_t ) = 0;
+
+    /**
+     * Find which iaps from the given list are currently available.
+     * @since S60 v3.1
+     * @param request_id An unique identification for the request.
+     * @param is_active_scan_allowed specifies whether active scanning is allowed.
+     * @param iap_data_list containing list of iap data structures.
+     * @param iap_id_list list of iap ids are stored here on completion.
+     * @param iap_ssid_list List of possible secondary SSIDs.
+     * @param scan_data contains the scan results
+     */
+    virtual void get_available_iaps(
+        u32_t request_id,
+        bool_t is_active_scan_allowed,
+        core_type_list_c<core_iap_data_s>& iap_data_list,
+        core_type_list_c<u32_t>& iap_id_list,
+        core_type_list_c<core_ssid_entry_s>* iap_ssid_list,
+        ScanList& scan_data ) = 0;
+
+    /**
+     * Get the current RCPI value of the connection.
+     * 
+     * @since S60 v3.1
+     * @param request_id An unique identification for the request.
+     * @param rcpi Current channel power indicator (RCPI).
+     */
+    virtual void get_current_rcpi(
+        u32_t request_id,
+        u32_t& rcpi ) = 0;
+
+    /**
+     * Disable all WLAN activity.
+     *
+     * Disconnects the active connection and prevents any further
+     * WLAN activity until enable_wlan() is called.
+     *
+     * @since S60 v3.1
+     * @param request_id An unique identification for the request.
+     */        
+    virtual void disable_wlan(
+        u32_t request_id ) = 0;
+        
+    /**
+     * Allow WLAN activity after disabled_wlan().
+     *
+     * @since S60 v3.1     
+     * @param request_id An unique identification for the request.
+     */
+    virtual void enable_wlan(
+        u32_t request_id ) = 0;
+
+    /**
+     * Get packet statistics of the current connection.
+     *
+     * @since S60 v3.2
+     * @param request_id An unique identification for the request.
+     * @param statistics Packet statistics of the current connection.     
+     */
+    virtual void get_packet_statistics(
+        u32_t request_id,
+        core_packet_statistics_s& statistics ) = 0;
+
+    /**
+     * Request creation of a virtual traffic stream.
+     *
+     * @since S60 v3.2
+     * @param request_id An unique identification for the request.
+     * @param tid TID of the virtual traffic stream.
+     * @param user_priority User Priority of the virtual traffic stream.
+     * @param is_automatic_stream Whether the virtual traffic stream
+     *                            has been created automatically.
+     * @param params Parameters of the virtual traffic stream.
+     * @param stream_id ID assigned to this virtual traffic stream on
+     *                  successful completion.
+     * @param stream_status Status of the virtual traffic stream on
+     *                      successful completion. 
+     * @note If the TID has been defined as TRAFFIC_STREAM_ID_NONE,
+     *       core server will select the next free ID.
+     */
+    virtual void create_traffic_stream(
+        u32_t request_id,
+        u8_t tid,
+        u8_t user_priority,
+        bool_t is_automatic_stream,
+        const core_traffic_stream_params_s& params,
+        u32_t& stream_id,
+        core_traffic_stream_status_e& stream_status ) = 0;
+
+    /**
+     * Request deletion of a virtual traffic stream.
+     *
+     * @since S60 v3.2
+     * @param request_id An unique identification for the request.
+     * @param stream_id ID of the virtual traffic stream.
+     */
+    virtual void delete_traffic_stream(
+        u32_t request_id,
+        u32_t stream_id ) = 0;
+
+    /**
+     * Start Protected Setup.
+     * 
+     * @since S60 v3.2
+     * @param request_id An unique identification for the request.
+     * @param iap_data IAP data used for running Protected Setup.
+     * @param iap_data_list IAP data results from a successful Protected Setup operation.
+     * @param protected_setup_status contains the error code of Protected Setup attempt
+     *        on completion.
+     */
+    virtual void run_protected_setup(
+        u32_t request_id,
+        const core_iap_data_s& iap_data,
+        core_type_list_c<core_iap_data_s>& iap_data_list,
+        core_protected_setup_status_e& protected_setup_status ) = 0;
+
+    /**
+     * Initiate a roam to the given BSSID.
+     * 
+     * @since S60 v3.2
+     * @param request_id An unique identification for the request.
+     * @param bssid BSSID to roam to. If BSSID is set to BROADCAST_MAC_ADDR,
+     *              search for a better BSS is initiated.
+     * @note This method does not guarantee that the a roam to the given BSSID
+     *       will occur. If the roam succeeds, the request will be completed
+     *       with core_error_ok, otherwise with an error code.  
+     */
+    virtual void directed_roam(
+        u32_t request_id,
+        const core_mac_address_s& bssid ) = 0;
+
+    /**
+     * Synchronous methods.
+     */
+    
+    /**
+     * Get the BSSID of the access point currently connected to.
+     * 
+     * @since S60 v3.1
+     * @param bssid BSSID of the access point.
+     * @return core_error_ok if success, an error code otherwise.
+     */
+    virtual core_error_e get_current_bssid(
+        core_mac_address_s& bssid ) = 0;
+
+    /**
+     * Get the name of the network (SSID) currently connected to.
+     * 
+     * @since S60 v3.1
+     * @param ssid Current SSID.
+     * @return core_error_ok if success, an error code otherwise.
+     */
+    virtual core_error_e get_current_ssid(
+        core_ssid_s& ssid ) = 0;
+
+    /**
+     * Get the current security mode of the connection.
+     * 
+     * @since S60 v3.1
+     * @param mode Current security mode.
+     * @return core_error_ok if success, an error code otherwise.
+     */
+    virtual core_error_e get_current_security_mode(
+        core_connection_security_mode_e& mode ) = 0;
+
+    /**
+     * Get the current connection state.
+     * 
+     * @since S60 v3.1
+     * @param state Current connection state.
+     * @return core_error_ok if success, an error code otherwise.
+     */
+    virtual core_error_e get_current_connection_state(
+        core_connection_state_e& state ) = 0;
+
+    /**
+     * Inform core server about updated device settings.
+     * 
+     * @since S60 v3.1     
+     * @param settings Updated device settings.
+     * @return core_error_ok if success, an error code otherwise.
+     * @note This method does not guarantee that the new parameters
+     *       are taken into use immediately.
+     */
+    virtual core_error_e update_device_settings(
+        core_device_settings_s& settings ) = 0;
+
+    /**
+     * Set the preferred power save mode.
+     * 
+     * @since S60 v3.1
+     * @param mode Preferred power save mode.
+     * @return core_error_ok if success, an error code otherwise.
+     * @note This method does not guarantee that the new parameters
+     *       are taken into use immediately.
+     */
+    virtual core_error_e set_power_save_mode(
+        const core_power_save_mode_s& mode ) = 0;
+
+    /**
+     * Add a BSSID to the rogue list.
+     *
+     * Prevents roaming to the given BSSID and hides it from
+     * the scan results.
+     *
+     * @since S60 v3.1
+     * @param bssid BSSID to add to the list.
+     * @return core_error_ok if success, an error code otherwise.
+     * @note The list entry will be persistent, meaning it will not
+     *       be cleared when the connection is closed.
+     */
+    virtual core_error_e add_bssid_to_rogue_list(
+        const core_mac_address_s& bssid ) = 0;
+
+    /**
+     * Remove a BSSID from the rogue list.
+     *
+     * @since S60 v3.1
+     * @param bssid BSSID to remove from the list.
+     * @return core_error_ok if success, an error code otherwise.
+     */
+    virtual core_error_e remove_bssid_from_rogue_list(
+        const core_mac_address_s& bssid ) = 0;
+
+    /**
+     * Return a list of BSSIDs on the rogue list.
+     *
+     * @since S60 v3.2
+     * @param rogue_list List of BSSIDs on the rogue list.
+     * @return core_error_ok if success, an error code otherwise.
+     */
+    virtual core_error_e get_rogue_list(
+        core_type_list_c<core_mac_address_s>& rogue_list ) = 0;
+
+    /**
+     * Set the RCP level notification boundary.
+     *
+     * When the signal strength is getting worse (RCPI value is getting smaller),
+     * the core server will indicate core_notification_e::core_notification_rcp_changed
+     * when the RCPI value gets smaller than the the rcp_level_boundary value.
+     *
+     * When the signal strength is getting better, the core server will indicate
+     * core_notification_e::core_notification_rcp_changed when the RCPI value
+     * gets bigger than the combined value of rcp_level_boundary and hysteresis.
+     *
+     * @since S60 v3.1
+     * @param rcp_level_boundary RCP level notification boundary.
+     * @param hysteresis Specifies the difference between boundaries when 
+     *        the RCP level is rising vs. descending
+     * @return core_error_ok if success, an error code otherwise.
+     */
+    virtual core_error_e set_rcp_level_notification_boundary(
+        const i32_t rcp_level_boundary,
+        const i32_t hysteresis ) = 0;
+
+    /**
+     * Clear packet statistics of the current connection.
+     *
+     * @since S60 v3.2
+     * @return core_error_ok if success, an error code otherwise.
+     */
+    virtual core_error_e clear_packet_statistics() = 0;
+
+    /**
+     * Get the current U-APSD settings.
+     *
+     * @since S60 v3.2
+     * @param settings Current U-APSD settings.
+     * @return core_error_ok if success, an error code otherwise.
+     */
+    virtual core_error_e get_uapsd_settings(
+        core_uapsd_settings_s& settings ) = 0;
+
+    /**
+     * Set the U-APSD settings.
+     *
+     * @since S60 v3.2
+     * @param settings Current U-APSD settings to be set.
+     * @return core_error_ok if success, an error code otherwise.
+     * @note This method does not guarantee that the new parameters
+     *       are taken into use immediately.
+     */
+    virtual core_error_e set_uapsd_settings(
+        const core_uapsd_settings_s& settings ) = 0;
+
+    /**
+     * Get the current power save settings.
+     *
+     * @since S60 v3.2
+     * @param settings Current power save settings.
+     * @return core_error_ok if success, an error code otherwise.
+     */
+    virtual core_error_e get_power_save_settings(
+        core_power_save_settings_s& settings ) = 0;
+
+    /**
+     * Set the power save settings.
+     *
+     * @since S60 v3.2
+     * @param settings Current power save settings to be set.
+     * @return core_error_ok if success, an error code otherwise.
+     * @note This method does not guarantee that the new parameters
+     *       are taken into use immediately.
+     */
+    virtual core_error_e set_power_save_settings(
+        const core_power_save_settings_s& settings ) = 0;
+
+    /**
+     * Get information about the current AP.
+     *
+     * @since S60 v3.2
+     * @param info Information about the current AP.
+     * @return core_error_ok if success, an error code otherwise.
+     */
+    virtual core_error_e get_current_ap_info(
+        core_ap_information_s& info ) = 0;
+
+    /**
+     * Get roam metrics of the current connection.
+     *
+     * @since S60 v3.2
+     * @param roam_metrics Roam metrics of the current connection.
+     */
+    virtual void get_roam_metrics(
+        core_roam_metrics_s& roam_metrics ) = 0;
+
+    /**
+     * Set the arp filter.
+     *
+     * @since S60 v5.0
+     * @param filter Current ARP filter to be set.
+     * @return core_error_ok if success, an error code otherwise.
+     * @note This method does not guarantee that the new filter
+     *       is taken into use immediately.
+     */
+    virtual core_error_e set_arp_filter(
+        const core_arp_filter_s& filter ) = 0;
+
+    /**
+     * Delivers multicast MAC address to drivers.
+     *
+     * @since S60 v3.1
+     * @param join_group is set true_t if adding a multicast address
+     *        otherwise the address will be removed.
+     * @param multicast_addr contains the MAC address to add/remove
+     * @return core_error_ok if success, an error code otherwise.
+     * @note This method does not guarantee that the new address
+     *       is taken into use immediately.
+     */
+    virtual core_error_e configure_multicast_group(
+        bool_t join_group,
+        const core_mac_address_s& multicast_addr ) = 0;
+
+    /**
+     * Get information about current traffic statuses and traffic modes for
+     * access classes.
+     *
+     * @since S60 v3.2
+     * @param info Information about the current traffic statuses and traffic modes.
+     * @return core_error_ok if success, an error code otherwise.
+     */
+    virtual core_error_e get_current_ac_traffic_info(
+        core_ac_traffic_information_s& info ) = 0;
+
+    /**
+     * Schedule an immediate driver unload.
+     *
+     * @since S60 v3.1     
+     * @return core_error_ok if success, an error code otherwise.
+     */
+    virtual core_error_e unload_drivers() = 0;
+
+    /**
+     * An asynchronous request from the core server has been completed.
+     *
+     * @since S60 v3.1
+     * @param request_id Identification of the corresponding request.
+     * @param status Completion status of the request.
+     */
+    virtual void request_complete(
+        u32_t request_id,
+        core_error_e status ) = 0;
+
+    /**
+     * Cancel a pending asynchronous request.
+     * 
+     * @since S60 v3.1
+     * @param request_id Identification of the corresponding request.
+     */
+    virtual void cancel_request(
+        u32_t request_id ) = 0;
+
+    };
+
+#endif // ABS_CORE_SERVER_H