diff -r 000000000000 -r c40eb8fe8501 wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/inc/abs_core_server.h --- /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* 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& iap_data_list, + core_type_list_c& iap_id_list, + core_type_list_c* 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& 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& 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