diff -r 000000000000 -r c40eb8fe8501 wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/inc/abs_core_driverif.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/inc/abs_core_driverif.h Tue Feb 02 02:03:13 2010 +0200 @@ -0,0 +1,444 @@ +/* +* 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: Interface implemented by lower adaptation. Core server uses +* these services. +* +*/ + + +#ifndef ABS_CORE_DRIVERIF_H +#define ABS_CORE_DRIVERIF_H + +#include "core_types.h" + +class abs_core_driverif_callback_c; + +/** + * Abstract adaptation layer interface class for low-level management functionality. + * + * This interface is implemented by the adaptation layer and a reference + * to the class implementing it is passed as a parameter to the core server + * constructor. + * + * @since S60 v3.1 + */ +class abs_core_driverif_c + { + +public: + + /** + * Destructor. + */ + virtual ~abs_core_driverif_c() {}; + + /** + * Initialisation between core server - driverIf + * + * @since S60 v3.1 + * @param core_callback delivers callback interface to driverIf + */ + virtual void init( + abs_core_driverif_callback_c* core_callback ) = 0; + + /** + * Start an IBSS network. + * + * @since S60 v3.1 + * @param request_id An unique identification for the request. + * @param ssid Name of the network. + * @param beacon_interval Beacon interval in TUs. + * @param channel Used channel (1 - 11). + * @param encrypt_level Used encryption level. + */ + virtual void start_ibss( + u32_t request_id, + const core_ssid_s& ssid, + u32_t beacon_interval, + u32_t channel, + core_encryption_mode_e encrypt_level ) = 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_rate Scan rate in units of 500kbit/second. + * @param scan_channels Channels to scan. + * @param scan_min_ch_time Minimum time to listen for beacons/probe responses on a channel. + * @param scan_max_ch_time Maximum time to listen for beacons/probe responses on a channel. + * @param is_split_scan Whether the scan should be performed as a split-scan. + * @note If the length of the SSID is zero, a broadcast scan is performed. + */ + virtual void scan( + u32_t request_id, + core_scan_mode_e scan_mode, + const core_ssid_s& scan_ssid, + int_t scan_rate, + const core_scan_channels_s& scan_channels, + u32_t scan_min_ch_time, + u32_t scan_max_ch_time, + bool_t is_split_scan ) = 0; + + /** + * Request an ongoing scan to be stopped. + * + * @since S60 v3.1 + * @param request_id An unique identification for the request. + */ + virtual void stop_scan( + u32_t request_id ) = 0; + + /** + * Connect (authenticate and associate) to a BSS. + * + * @since S60 v3.1 + * @param request_id An unique identification for the request. + * @param status The status code from the connection attempt is stored here. + * @param ssid Name of the network. + * @param bssid BSSID of the access point. + * @param auth_algorithm Authentication algorithm number. + * @param encryption_level Used encryption level. + * @param pairwise_key_type Pairwise cipher key type to be used. + * @param is_infra Whether the network is an IBSS or an infra network. + * @param ie_data_length Length of IE data. + * @param ie_data IE data. + * @param scan_frame_length Length of beacon/probe response frame from the BSS. + * @param scan_frame Pointer to beacon/probe response frame from the BSS. + * @param is_pairwise_key_invalidated Whether the pairwise key should be invalidated. + * @param is_group_key_invalidated Whether the group key should be invalidated + * @param is_radio_measurement_supported Whether the radio measurement is supported + */ + virtual void connect( + u32_t request_id, + core_management_status_e& status, + const core_ssid_s& ssid, + const core_mac_address_s& bssid, + u16_t auth_algorithm, + core_encryption_mode_e encryption_level, + core_cipher_key_type_e pairwise_key_type, + bool_t is_infra, + u32_t ie_data_length, + const u8_t* ie_data, + u32_t scan_frame_length, + const u8_t* scan_frame, + bool_t is_pairwise_key_invalidated, + bool_t is_group_key_invalidated, + bool_t is_radio_measurement_supported ) = 0; + + /** + * Disconnect from the current network. + * + * @since S60 v3.1 + * @param request_id An unique identification for the request. + */ + virtual void disconnect( + u32_t request_id ) = 0; + + /** + * Set WLAN power mode. + * + * @since S60 v3.1 + * @param request_id An unique identification for the request. + * @param mode Power mode to use. + */ + virtual void set_power_mode( + u32_t request_id, + const core_power_mode_s& mode ) = 0; + + /** + * Set transmission power level. + * + * @since S60 v3.1 + * @param request_id An unique identification for the request. + * @param tx_level Transmission power level in dBm. + */ + virtual void set_tx_power_level( + u32_t request_id, + u32_t tx_level ) = 0; + + /** + * Add a cipher key. + * + * @since S60 v3.1 + * @param cipher_suite The cipher suite of the key. + * @param key_index Index of the key. + * @param key_length Length of the cipher key. + * @param key_data Cipher key data. + * @param mac Defines the MAC address the key is used for. + * @param use_as_default in case of wep, whether the key is used as default cipher key + */ + virtual void add_cipher_key( + core_cipher_key_type_e cipher_suite, + u8_t key_index, + u16_t key_length, + const u8_t* key_data, + const core_mac_address_s& mac, + bool_t use_as_default ) = 0; + + /** + * Get the current RCPI value. + * + * @since S60 v3.1 + * @param request_id An unique identification for the request. + * @param rcpi The current RCPI value. + */ + virtual void get_current_rcpi( + u32_t request_id, + u32_t& rcpi ) = 0; + + /** + * Delivers multicast MAC address to drivers. + * + * @since S60 v3.1 + * @param request_id An unique identification for the request. + * @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 + */ + virtual void configure_multicast_group( + u32_t request_id, + bool_t join_group, + const core_mac_address_s& multicast_addr ) = 0; + + /** + * Set the parameters related to BSS lost indication. + * + * @since S60 v3.1 + * @param request_id Identification of the corresponding request. + * @param parameters Parameters to set. + */ + virtual void set_bss_lost_parameters( + u32_t request_id, + const core_bss_lost_parameters_s& parameters ) = 0; + + /** + * Set the parameters related to TX rate adaptation algorithm. + * + * @since S60 v3.1 + * @param request_id Identification of the corresponding request. + * @param parameters Parameters to set. + */ + virtual void set_tx_rate_adaptation_parameters( + u32_t request_id, + const core_tx_rate_adaptation_parameters_s& parameters ) = 0; + + /** + * Set the parameters related to power mode management. + * + * @since S60 v3.1 + * @param request_id Identification of the corresponding request. + * @param parameters Parameters to set. + */ + virtual void set_power_mode_mgmt_parameters( + u32_t request_id, + const core_power_mode_mgmt_parameters_s& parameters ) = 0; + + /** + * Set the parameters related to TX rate policies. + * + * @since S60 v3.2 + * @param request_id Identification of the corresponding request. + * @param policies TX rate policies to set. + * @param mappings Mappings between Access Classes and TX rate policies. + */ + virtual void set_tx_rate_policies( + u32_t request_id, + const core_tx_rate_policies_s& policies, + const core_tx_rate_policy_mappings_s& mappings ) = 0; + + /** + * Get packet statistics for the currently active connection. + * + * @since S60 v3.2 + * @param request_id Identification of the corresponding request. + * @param statistics Packet statistics for the currently active connection. + */ + virtual void get_packet_statistics( + u32_t request_id, + core_packet_statistics_by_access_category_s& statistics ) = 0; + + /** + * Set the RCPI trigger level. + * + * @since S60 v3.2 + * @param request_id Identification of the corresponding request. + * @param rcpi_trigger The RCPI trigger level. + */ + virtual void set_rcpi_trigger_level( + u32_t request_id, + u8_t rcpi_trigger ) = 0; + + /** + * Set the U-APSD settings. + * + * @since S60 v3.2 + * @param request_id Identification of the corresponding request. + * @param settings Current U-APSD settings to be set. + */ + virtual void set_uapsd_settings( + u32_t request_id, + const core_uapsd_settings_s& settings ) = 0; + + /** + * Set the power save settings. + * + * @since S60 v3.2 + * @param request_id Identification of the corresponding request. + * @param settings Current power save settings to be set. + */ + virtual void set_power_save_settings( + u32_t request_id, + const core_power_save_settings_s& settings ) = 0; + + /** + * Set the parameters of a tx queue. + * + * @since S60 v3.2 + * @param request_id Identification of the corresponding request. + * @param queue_id Queue to be configured. + * @param medium_time Medium time to be used. + * @param max_tx_msdu_lifetime Maximum Transmit MSDU Lifetime to be used. + */ + virtual void set_tx_queue_parameters( + u32_t request_id, + core_access_class_e queue_id, + u16_t medium_time, + u32_t max_tx_msdu_lifetime ) = 0; + + /** + * Allow sending of user data. + * + * @since S60 v3.1 + * @param request_id An unique identification for the request. + */ + virtual void enable_user_data( + u32_t request_id ) = 0; + + /** + * Prevent sending of user data. + * + * @since S60 v3.1 + * @param request_id An unique identification for the request. + */ + virtual void disable_user_data( + u32_t request_id ) = 0; + + /** + * Unload the drivers and power down the WLAN hardware. + * + * @since S60 v3.1 + * @param request_id An unique identification for the request. + */ + virtual void unload_drivers( + u32_t request_id ) = 0; + + /** + * Load the drivers and power up the WLAN hardware. + * + * @since S60 v3.1 + * @param request_id An unique identification for the request. + * @param rts_threshold Determines the maximum packet size that can be sent without RTS/CTS protocol. + * @param max_tx_msdu_lifetime Maximum time to (re-)send the whole MSDU packet in TUs. + * @param qos_null_frame_entry_timeout Defines the time period in microseconds which is used + * to evaluate whether QoS NULL data frame sending should be started. + * @param qos_null_frame_entry_tx_count Defines how many Voice AC packets must be sent during the time + * period defined in qos_null_frame_entry_timeout before QoS NULL + * data frame sending is started. + * @param qos_null_frame_interval Defines how often a QoS NULL data frame is sent. + * @param qos_null_frame_exit_timeout Defines how soon after the last Voice AC packet QoS NULL data + * frame sending is stopped. + * @param keep_alive_interval Defines how often NULL data frames are sent if there are no other frames + * to send. + * @param sp_rcpi_target Defines the signal predictor algorithm "target" RCPI value for roam indication. + * @param sp_time_target Defines the signal predictor algorithm "target" time for roam indication + * (in microseconds). + * @param sp_min_indication_interval Defines the minimum time interval for consecutive roam + * indications from the signal predictor algorithm (in microseconds). + */ + virtual void load_drivers( + u32_t request_id, + uint_t rts_threshold, + u32_t max_tx_msdu_lifetime, + u32_t qos_null_frame_entry_timeout, + u32_t qos_null_frame_entry_tx_count, + u32_t qos_null_frame_interval, + u32_t qos_null_frame_exit_timeout, + u32_t keep_alive_interval, + u32_t sp_rcpi_target, + u32_t sp_time_target, + u32_t sp_min_indication_interval ) = 0; + + /** + * Send a frame. + * + * @since S60 v3.1 + * @param frame_type The type of the frame to send. + * @param frame_length The length of the frame. + * @param frame_data Pointer to the frame data. + * @param frame_priority User priority to use for sending the frame. + * @param destination Destination MAC address. + * @param send_unencrypted Whether the frame must be sent unencrypted. + */ + virtual void send_frame( + core_frame_type_e frame_type, + const u16_t frame_length, + const u8_t* const frame_data, + u8_t frame_priority, + const core_mac_address_s& destination, + bool_t send_unencrypted ) = 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; + + /** + * Set the ARP filter. + * + * @since S60 v5.0 + * @param request_id Identification of the corresponding request. + * @param filter Current ARP filter to be set. + */ + virtual void set_arp_filter( + u32_t request_id, + const core_arp_filter_s& filter ) = 0; + + /** + * Set block ACK usage per traffic stream. + * + * @since S60 v5.1 + * @param request_id Identification of the corresponding request. + * @param usage Block ACK usage information. + */ + virtual void set_block_ack_usage( + u32_t request_id, + const core_block_ack_usage_s& usage ) = 0; + + /** + * Set the SNAP header of frames to receive. + */ + virtual void set_snap_header_filter( + u32_t request_id, + const core_snap_header_s& header ) = 0; + + }; + +#endif // ABS_CORE_DRIVERIF_H