diff -r 000000000000 -r c40eb8fe8501 wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/inc/core_types.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/inc/core_types.h Tue Feb 02 02:03:13 2010 +0200 @@ -0,0 +1,2152 @@ +/* +* Copyright (c) 2002-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: Type definitions and constants for core engine +* +*/ + +/* +* %version: 93 % +*/ + +#ifndef CORE_TYPES_H +#define CORE_TYPES_H + +#include "am_platform_libraries.h" + +/** The maximum length of SSID. */ +const u8_t MAX_SSID_LEN = 32; + +/** The maximum length of MAC address. */ +const u8_t MAC_ADDR_LEN = 6; + +/** The maximum length of a timestamp (TSF). */ +const u8_t TSF_VALUE_LEN = 8; + +/** + * The maximum length of a WEP key. + * + * 40-bit (64-bit) key has the length of 5. + * 104-bit (128-bit) key has the length of 13. + * 232-bit (256-bit) key has the length of 29. + **/ +const u8_t MAX_WEP_KEY_LENGTH = 29; + +/** + * The maximum length of a WPA-PSK key. + * + * WPA-PSK passphrase is limited to 8 - 63 characters + * in the range of 32 to 126 (decimal), inclusive. + * + * Length of 64 indicates the actual hashed PSK. + */ +const u8_t MAX_WPA_PSK_LENGTH = 64; + +/** The maximum length of a cipher key (256 bits). */ +const u8_t MAX_CIPHER_KEY_LENGTH = 32; + +/** The maximum length of a RSN/WPA IE. */ +const u8_t MAX_WPAIE_LENGTH = 255; + +const u8_t MAX_RATES = 40; + +const u8_t TX_RATE_BASIC_MASK = 0x80; + +/** Definitions for Capability bitmask in beacons/probe responses. */ +const u16_t CAPABILITY_BIT_MASK_ESS = 0x0001; +const u16_t CAPABILITY_BIT_MASK_IBSS = 0x0002; +const u16_t CAPABILITY_BIT_MASK_PRIVACY = 0x0010; +const u16_t CAPABILITY_BIT_MASK_PREAMBLE = 0x0020; +const u16_t CAPABILITY_BIT_MASK_SLOT_TIME = 0x0400; + +const u8_t SCAN_BAND_2DOT4GHZ = 1; +const u8_t SCAN_BAND_4DOT9GHZ = 2; +const u8_t SCAN_BAND_5GHZ = 4; + +const u8_t MAX_TX_POWER_LEVEL_NOT_DEFINED = 0xFF; +const u32_t MAX_TX_MSDU_LIFETIME_NOT_DEFINED = 0; +const u16_t ADMISSION_CAPACITY_NOT_DEFINED = 0xFFFF; + +const u32_t REQUEST_ID_CORE_INTERNAL = 0; + +const u32_t WEP_KEY1 = 1; +const u32_t WEP_KEY2 = 2; +const u32_t WEP_KEY3 = 3; +const u32_t WEP_KEY4 = 4; + +const u32_t EAP_TYPE_NONE = 0; +const u32_t EAP_ERROR_NONE = 0; + +const u8_t RCPI_VALUE_NONE = 0; + +const u8_t MAX_COUNTRY_STRING_LENGTH = 3; + +const u8_t SCAN_BAND_2DOT4GHZ_MAX_CHANNEL_FCC = 11; +const u8_t SCAN_BAND_2DOT4GHZ_MAX_CHANNEL_EURO = 13; + +/** Timer value for immediate queue execution. */ +const u32_t CORE_TIMER_IMMEDIATELY = 0; + +const u32_t SECONDS_FROM_MICROSECONDS = 1000000; +const u32_t SECONDS_FROM_MILLISECONDS = 1000; +const u32_t MILLISECONDS_FROM_MICROSECONDS = 1000; +const u32_t TIMEUNITS_FROM_MICROSECONDS = 1024; + +/** The maximum number of TX rate policies. */ +const u8_t MAX_TX_RATE_POLICY = 4; + +/** The size of MCS information in a TX rate policy. */ +const u8_t TX_RATE_POLICY_MCS_SIZE = 10; + +/** The number of QoS access classes. */ +const u8_t MAX_QOS_ACCESS_CLASS = 4; + +/** The number of QoS user priority values. */ +const u8_t MAX_QOS_USER_PRIORITY = 8; + +/** The maximum and minimum values of different integers. */ +const u32_t MAX_U32 = 0xFFFFFFFF; +const u32_t MIN_U32 = 0; +const i32_t MAX_I32 = 0x7FFFFFFF; +const i32_t MIN_I32 = static_cast( 0x80000000 ); + +const u32_t SCAN_LIST_AGE_ANY = MAX_U32; +const u32_t SCAN_LIST_AGE_LAST_SCAN = MIN_U32; + +/** The length of OUI. */ +const u8_t OUI_LENGTH = 3; + +/** The value for undefined virtual traffic stream TID. */ +const u8_t TRAFFIC_STREAM_TID_NONE = 0xFF; + +/** The number of traffic stream TID values. */ +const u8_t MAX_TRAFFIC_STREAM_TID = 8; + +typedef enum _core_scan_list_tag_e + { + core_scan_list_tag_none = 0x00, + core_scan_list_tag_scan = 0x01, + core_scan_list_tag_direct_scan = 0x02, + core_scan_list_tag_roam_scan = 0x04, + core_scan_list_tag_ibss_merge = 0x08 + } core_scan_list_tag_e; + +/** + * Defines the possible 802.11 authentication algorithms. + */ +typedef enum _core_authentication_mode_e + { + /** 802.11 Open System authentication algorithm. */ + core_authentication_mode_open = 0, + /** 802.11 Shared Key authentication algorithm. */ + core_authentication_mode_shared = 1, + } core_authentication_mode_e; + +/** + * Definitions for the possible states indicated by core engine. + */ +typedef enum _core_connection_state_e + { + /** Connection is not active. No data flow. */ + core_connection_state_notconnected, + /** Connection to an access point is active. */ + core_connection_state_infrastructure, + /** Searching an access point. No data flow. */ + core_connection_state_searching, + /** IBSS network is active. */ + core_connection_state_ibss, + /** Secure connection to an access point is active. */ + core_connection_state_secureinfra, + /** Secure IBSS network is active. */ + core_connection_state_secureibss + } core_connection_state_e; + +/** + * Security mode according to IAP definition + */ +typedef enum _core_security_mode_e + { + /** No encryption used. */ + core_security_mode_allow_unsecure, + /** Use WEP encryption with static keys. */ + core_security_mode_wep, + /** Use WEP encryption, keys are negotiated by EAPOL. */ + core_security_mode_802dot1x, + /** Use WEP/TKIP/CCMP encryption, keys are negotiated by EAPOL. */ + core_security_mode_wpa, + /** Use CCMP encryption, keys are negotiated by EAPOL. */ + core_security_mode_wpa2only, + /** Use Wi-Fi Protected Setup, keys are negotiated by EAPOL. */ + core_security_mode_protected_setup, + /** Use WAPI, keys are negotiated by EAPOL. */ + core_security_mode_wapi + } core_security_mode_e; + +/** + * Security mode of the current connection + */ +typedef enum _core_connection_security_mode_e + { + /** No security used. */ + core_connection_security_mode_open, + /** Use Open WEP encryption with static keys. */ + core_connection_security_mode_wep_open, + /** Use Shared WEP encryption with static keys. */ + core_connection_security_mode_wep_shared, + /** Use WEP/TKIP/CCMP encryption, keys are negotiated by EAPOL. */ + core_connection_security_mode_802d1x, + /** Use TKIP/CCMP encryption, keys are negotiated by EAPOL. */ + core_connection_security_mode_wpa, + /** WPA with preshared key. */ + core_connection_security_mode_wpa_psk, + /** Use CCMP encryption, keys are negotiated by EAPOL. */ + core_connection_security_mode_wpa2, + /** WPA2 with preshared key. */ + core_connection_security_mode_wpa2_psk, + /** WAPI with certificates. */ + core_connection_security_mode_wapi, + /** WAPI with preshared key. */ + core_connection_security_mode_wapi_psk + } core_connection_security_mode_e; + +/** + * The possible encryption modes. + */ +typedef enum _core_encryption_mode_e + { + /** No encryption used. */ + core_encryption_mode_disabled, + /** Use WEP encryption with static keys. */ + core_encryption_mode_wep, + /** Use WEP encryption with static keys in mixed cell. */ + core_encryption_mode_wep_mixed_cell, + /** Use WEP encryption, keys are negotiated by EAPOL. */ + core_encryption_mode_802dot1x, + /** Use WEP encryption in mixed cell, keys are negotiated by EAPOL. */ + core_encryption_mode_802dot1x_mixed_cell, + /** Use WEP/TKIP/CCMP encryption, keys are negotiated by EAPOL. */ + core_encryption_mode_wpa, + /** Use WPI encryption, keys are negotiated by EAPOL. */ + core_encryption_mode_wpi + } core_encryption_mode_e; + +/** + * Defines all the possible indications that can be received from adaptation. + */ +typedef enum _core_am_indication_e + { + /** + * AP has deauthenticated the station. + */ + core_am_indication_wlan_media_disconnect, + /** + * A fatal error has occurred in the lower layer. + */ + core_am_indication_wlan_hw_failed, + /** + * A number of consecutive beacons has been lost. + * + * @see core_bss_lost_parameters_s::beacon_lost_count + */ + core_am_indication_wlan_beacon_lost, + /** + * UMAC has not been able to perform a power mode state transition. + */ + core_am_indication_wlan_power_mode_failure, + /** + * A number of consecutive transmissions has failed. + * + * @see core_bss_lost_parameters_s::failed_tx_packet_count + */ + core_am_indication_wlan_tx_fail, + /** + * Connection to the BSS has been regained. This indication can occur after + * core_am_indication_wlan_beacon_lost, + * core_am_indication_wlan_power_mode_failure or + * core_am_indication_wlan_tx_fail. + */ + core_am_indication_wlan_bss_regained, + /** + * Decryption of a received packet failed. + */ + core_am_indication_wlan_wep_decrypt_failure, + /** + * A MIC failure has been detected on a received unicast packet. + */ + core_am_indication_wlan_pairwise_key_mic_failure, + /** + * A MIC failure has been detected on a received broadcast + * or multicast packet. + */ + core_am_indication_wlan_group_key_mic_failure, + /** + * Scan has been completed. + */ + core_am_indication_wlan_scan_complete, + /** + * Used to indicate that the RCPI trigger level has been been crossed. + * This indication is one-shot, it will not be triggered again until + * the level is set again. + * + * @see abs_core_driverif_callback_c::set_rcpi_trigger_level + */ + core_am_indication_wlan_rcpi_trigger, + /** + * Signal loss prediction algorithm has indicated an imminent signal + * loss. + */ + core_am_indication_wlan_signal_loss_prediction, + /** + * UMAC has switched to power save mode after (re-)assocation, indicating + * a possibility to run the power save test. + */ + core_am_indication_wlan_power_save_test_trigger, + /** + * The lower layer has detected problems with power save in the + * current access point. + */ + core_am_indication_wlan_ap_ps_mode_error, + /** + * Indication of an imminent power loss. + */ + core_am_indication_os_power_standby, + /** + * Bluetooth connection has been established. + */ + core_am_indication_bt_connection_established, + /** + * Bluetooth connection has been disconnected. + */ + core_am_indication_bt_connection_disconnected, + /** + * Indication that voice call is on. + */ + core_am_indication_voice_call_on, + /** + * Indication that voice call is off. + */ + core_am_indication_voice_call_off + } core_am_indication_e; + +/** + * Structure for storing a MAC address. + */ +typedef struct _core_mac_address_s + { + u8_t addr[MAC_ADDR_LEN]; + } core_mac_address_s; + +/** + * Definition for an undefined MAC address. + */ +const core_mac_address_s ZERO_MAC_ADDR = {{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }}; + +/** + * Definition for a broadcast MAC address. + */ +const core_mac_address_s BROADCAST_MAC_ADDR = {{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }}; + +/** + * Structure for storing a timestamp (TSF) from a beacon/probe response. + */ +typedef struct _core_tsf_value_s + { + u8_t tsf[TSF_VALUE_LEN]; + } core_tsf_value_s; + +/** + * Data values for operating modes. + */ +typedef enum _core_operating_mode_e + { + /** The BSS is operating in infrastructure mode. */ + core_operating_mode_infrastructure = CAPABILITY_BIT_MASK_ESS, + /** The BSS is operating in IBSS (ad-hoc) mode. */ + core_operating_mode_ibss = CAPABILITY_BIT_MASK_IBSS + } core_operating_mode_e; + +/** + * The possible scan modes. + */ +typedef enum _core_scan_mode_e + { + /** Send probe requests and listen to beacons and probe responses. */ + core_scan_mode_active, + /** Listen to beacons and probe responses. */ + core_scan_mode_passive + } core_scan_mode_e; + +/** + * Structure for storing an SSID. + */ +typedef struct _core_ssid_s + { + /** Length of the SSID. */ + u32_t length; + /** SSID data. */ + u8_t ssid[MAX_SSID_LEN]; + } core_ssid_s; + +/** + * Definition for a broadcast SSID. + */ +const core_ssid_s BROADCAST_SSID = { 0, { 0x00 }}; + +/** + * Data structure for storing a WEP key. + */ +typedef struct _core_wep_key_s + { + /** Specifies which key to add or remove. Range: 0-3. */ + u32_t key_index; + /** The length of KeyMaterial in bytes. Range: 0-29. */ + u32_t key_length; + /** Array that stores the WEP key. */ + u8_t key_data[MAX_WEP_KEY_LENGTH]; + } core_wep_key_s; + +/** + * Data structure for storing an ARP filters. + */ +typedef struct _core_arp_filter_s + { + u32_t ipv4_addr; + bool_t enable_filter; + } core_arp_filter_s; + +/** + * Defines the possible error codes core engine can return. + */ +typedef enum _core_error_e + { + core_error_ok = 0, + core_error_not_found, + core_error_general, + core_error_no_memory, + core_error_illegal_rate, + core_error_failed, + core_error_drivers_not_loaded, + core_error_in_power_save, + core_error_challenge_failure, + core_error_not_connected, + core_error_illegal_argument, + core_error_not_supported, + core_error_in_use, + core_error_timeout, + core_error_internal_error, + core_error_request_pending, + core_error_cancel, + core_error_eapol_total_failure, + core_error_eapol_failure, + core_error_eapol_canceled_by_user, + core_error_connection_already_active, + core_error_wlan_disabled, + core_error_already_exists, + core_error_eapol_auth_start_timeout, + } core_error_e; + +/** + * Defines the notification core engine can send to adaptation. + */ +typedef enum _core_notification_e + { + /** + * Indicates a change in connection state. + * + * This indication has one to four bytes of payload data. The first byte + * always contains the current connection state (core_connection_state_e). + * + * If the state is core_connection_state_notconnected, the second byte + * contains the reason connection was closed (core_release_reason_e). + * + * If the state is core_connection_state_notconnected and the release reason + * is core_release_reason_max_roam_attempts_exceeded, there are two more + * bytes of payload data. The third byte contains the reason roaming was + * attempted (core_roam_reason_e) and the fourth byte has the reason why + * roaming failed (core_roam_failed_reason_e). + */ + core_notification_connection_state_changed, + /** + * Indicates a successful roam to another AP has been done. + * + * The payload data contains the BSSID of the AP as a core_mac_address_s + * structure. + */ + core_notification_bssid_changed, + /** + * Indicates a temporary loss of connection. + */ + core_notification_bss_lost, + /** + * Indicates that connection has been regained after a + * core_notification_bss_lost indication. + */ + core_notification_bss_regained, + /** + * Indicates the currently allowed maximum tx power. + * + * The payload data is four bytes, containing the maximum tx power + * as u32_t. The value is in dBm. + */ + core_notification_tx_power_level_changed, + /** + * Indicates the RCPI indication threshold has been crossed. + * + * The first byte of payload data indicates the direction (core_rcp_class_e). + * The second byte contains the current RCPI value. + */ + core_notification_rcp_changed, + /** + * Indicates a status change in a virtual traffic stream. + * + * The first four bytes of payload data contains the ID of the affected virtual + * traffic stream. The second byte contains the status of the traffic stream + * (core_traffic_stream_status_e). + */ + core_notification_ts_status_changed, + /** + * Indicates a change in the parameters of the current AP. + * + * The payload data consists of core_ap_information_s structure. + * + * While this indication is most likely triggered by a successful roam, + * it should not be considered as an indication that a roam has happened. + */ + core_notification_ap_info_changed, + /** + * Indicates that an RCPI based roaming attempt has been started. + * + * If the roam attempt is successful, core_notification_bssid_changed and + * core_notification_rcpi_roam_attempt_completed indications will be sent. + * + * If no suitable AP to roam to is found, only core_notification_rcpi_roam_attempt_completed + * indication will be sent. + * + * If the attempt fails due to an association or authentication failure, + * core_notification_connection_state_changed( core_connection_state_searching ) + * will be sent to indicate that the terminal is no longer connected to + * the previous AP. + */ + core_notification_rcpi_roam_attempt_started, + /** + * Indicates that the RCPI based roaming attempt has been completed. + * + * See the description of core_notification_rcpi_roam_attempt_started + * for further information on this indication. + */ + core_notification_rcpi_roam_attempt_completed, + /** + * Indicates that the Broken Power Save test has failed. + * + * If the Broken Power Save test fails, the engine will not allow the any power + * save functionality to be used with this BSSID, decreasing battery life. + */ + core_notification_broken_power_save_test_failed, + /** + * Indicates the traffic mode of an access class has changed. + * + * The first byte of payload data contains the access class + * (core_access_class_e). The second byte contains the traffic mode + * of the access class (core_access_class_traffic_mode_e). + */ + core_notification_ac_traffic_mode_changed, + /** + * Indicates the traffic status of an access class has changed. + * + * The first byte of payload data contains the access class + * (core_access_class_e). The second byte contains the traffic status + * of the access class (core_access_class_traffic_status_e). + */ + core_notification_ac_traffic_status_changed + } core_notification_e; + +/** + * The possible completion statuses for a connect request. + */ +typedef enum _core_connect_status_e + { + core_connect_undefined, + core_connect_ok, + core_connect_unspecified_failure, + core_connect_network_not_found, + core_connect_mode_infra_required_but_ibss_found, + core_connect_mode_ibss_required_but_infra_found, + core_connect_ap_full, + core_connect_ap_not_whitelisted, + core_connect_ap_permanently_blacklisted, + core_connect_ap_temporarily_blacklisted, + core_connect_ap_outside_defined_region, + core_connect_ap_signal_too_weak, + core_connect_ap_has_no_admission_control, + core_connect_ap_has_no_free_admission_capability, + core_connect_iap_open_but_ap_requires_encryption, + core_connect_iap_wep_but_ap_has_no_privacy, + core_connect_iap_wep_but_ap_has_wpa_ie, + core_connect_iap_wpa_but_ap_has_no_privacy, + core_connect_wep_open_authentication_unsupported, + core_connect_wep_open_echo_test_failed, + core_connect_wep_shared_authentication_unsupported, + core_connect_wep_shared_authentication_failed, + core_connect_wpa_ie_required_but_ap_has_none, + core_connect_wpa_psk_required_but_ap_has_no_support, + core_connect_wpa_eap_required_but_ap_has_no_support, + core_connect_wpa_ap_has_no_valid_ciphers, + core_connect_wpa_counter_measures_active, + core_connect_wpa_authentication_canceled_by_user, + core_connect_wpa_eap_failure, + core_connect_wpa_psk_failure, + core_connect_802_1x_authentication_canceled_by_user, + core_connect_802_1x_authentication_algorithm_not_supported, + core_connect_802_1x_failure, + core_connect_eap_gtc_failure, + core_connect_eap_tls_failure, + core_connect_eap_tls_server_certificate_expired, + core_connect_eap_tls_server_certificate_unknown, + core_connect_eap_tls_user_certificate_expired, + core_connect_eap_tls_user_certificate_unknown, + core_connect_eap_tls_illegal_cipher_suite, + core_connect_eap_tls_user_rejected, + core_connect_eap_leap_failure, + core_connect_eap_sim_failure, + core_connect_eap_sim_identity_query_failed, + core_connect_eap_sim_user_has_not_subscribed_to_the_requested_service, + core_connect_eap_sim_users_calls_are_barred, + core_connect_eap_ttls_failure, + core_connect_eap_ttls_server_certificate_expired, + core_connect_eap_ttls_server_certificate_unknown, + core_connect_eap_ttls_user_certificate_expired, + core_connect_eap_ttls_user_certificate_unknown, + core_connect_eap_ttls_illegal_cipher_suite, + core_connect_eap_ttls_user_rejected, + core_connect_eap_aka_failure, + core_connect_eap_aka_identity_query_failed, + core_connect_eap_aka_user_has_not_subscribed_to_the_requested_service, + core_connect_eap_aka_users_calls_are_barred, + core_connect_eap_peap_failure, + core_connect_eap_peap_server_certificate_expired, + core_connect_eap_peap_server_certificate_unknown, + core_connect_eap_peap_user_certificate_expired, + core_connect_eap_peap_user_certificate_unknown, + core_connect_eap_peap_illegal_cipher_suite, + core_connect_eap_peap_user_rejected, + core_connect_eap_mschapv2_failure, + core_connect_eap_mschapv2_password_expired, + core_connect_eap_mschapv2_no_dialin_permission, + core_connect_eap_mschapv2_account_disabled, + core_connect_eap_mschapv2_restricted_logon_hours, + core_connect_eapol_auth_start_timeout, + core_connect_eap_fast_tunnel_compromise_error, + core_connect_eap_fast_unexpected_tlv_exhanged, + core_connect_eap_fast_no_pac_nor_certs_to_authenticate_with_provision_disabled, + core_connect_eap_fast_no_matching_pac_for_aid, + core_connect_eap_fast_pac_store_corrupted, + core_connect_eap_fast_authentication_failed, + core_connect_iap_wapi_but_ap_has_no_privacy, + core_connect_wapi_ie_required_but_ap_has_none, + core_connect_wapi_certificate_required_but_ap_has_no_support, + core_connect_wapi_psk_required_but_ap_has_no_support, + core_connect_wapi_ap_has_no_valid_ciphers, + core_connect_wapi_psk_failure, + core_connect_wapi_certificate_failure, + } core_connect_status_e; + +/** + * Possible completion status for a protected setup request. + */ +typedef enum _core_protected_setup_status_e + { + core_protected_setup_status_undefined, + core_protected_setup_status_ok, + core_protected_setup_status_session_overlap, + core_protected_setup_status_walktime_expired, + core_protected_setup_status_network_auth_failure, + core_protected_setup_status_network_assoc_failure, + core_protected_setup_status_OOB_interface_read_error, + core_protected_setup_status_decryption_CRC_failure, + core_protected_setup_status_RF_band_2_4_ghz_not_supported, + core_protected_setup_status_RF_band_5_0_ghz_not_supported, + core_protected_setup_status_signal_too_weak, + core_protected_setup_status_no_DHCP_response, + core_protected_setup_status_failed_DHCP_configure, + core_protected_setup_status_ip_address_conflict, + core_protected_setup_status_could_not_connect_to_registrar, + core_protected_setup_status_multiple_PBC_sessions_detected, + core_protected_setup_status_rogue_activity_suspected, + core_protected_setup_status_device_busy, + core_protected_setup_status_setup_locked, + core_protected_setup_status_message_timeout, + core_protected_setup_status_registration_session_timeout, + core_protected_setup_status_device_password_authentication_failure, + core_protected_setup_status_pin_code_authentication_not_supported, + core_protected_setup_status_push_button_authentication_not_supported + } core_protected_setup_status_e; + +typedef enum _core_rcp_class_e + { + core_rcp_normal, + core_rcp_weak + } core_rcp_class_e; + +/** + * Definitions for possible WLAN regions. + */ +typedef enum _core_wlan_region_e + { + /** Undefined region */ + core_wlan_region_undefined = 0x00, + /** Channels 1-11, USA */ + core_wlan_region_fcc = 0x10, + /** Channels 1-13, Europe */ + core_wlan_region_etsi = 0x30, + } core_wlan_region_e; + +typedef struct _core_wpa_preshared_key_s + { + /** The length of KeyMaterial in bytes. Range: 0-63 */ + uint_t key_length; + /** Array of that stores the WPA Pre-Shared Key. */ + u8_t key_data[MAX_WPA_PSK_LENGTH]; + } core_wpa_preshared_key_s; + +typedef enum _core_cipher_key_type_e + { + core_cipher_key_type_none, + core_cipher_key_type_tkip, + core_cipher_key_type_ccmp, + core_cipher_key_type_wep, + core_cipher_key_type_wpi, + } core_cipher_key_type_e; + +typedef enum _core_cipher_suite_e + { + core_cipher_suite_none = 0, + core_cipher_suite_wep40 = 1, + core_cipher_suite_wep104 = 2, + core_cipher_suite_tkip = 4, + core_cipher_suite_ccmp = 8, + core_cipher_suite_wpi = 16 + } core_cipher_suite_e; + +typedef enum _core_key_management_e + { + core_key_management_none = 0, + core_key_management_eap = 1, + core_key_management_preshared = 2, + core_key_management_wpx_fast_roam = 4, + core_key_management_wapi_certificate = 8, + core_key_management_wapi_psk = 16 + } core_key_management_e; + +/** + * Definitions for power save modes. + */ +typedef enum _core_power_save_mode_e + { + /** + * Automatic mode, wake-up mode and interval adjusted automatically. + */ + core_power_save_mode_automatic, + /** + * Continuous access mode (CAM), no power save. + */ + core_power_save_mode_none, + /** + * Power save, wake-up at every Nth beacon. + */ + core_power_save_mode_beacon, + /** + * Power save, wake-up at every Nth DTIM. + */ + core_power_save_mode_dtim, + /** + * Power save, wake-up at every Nth DTIM, where N is defined by + * DTIM skipping interval. + */ + core_power_save_mode_dtim_skipping + } core_power_save_mode_e; + +typedef enum _core_slot_time_e + { + core_slot_time_short, + core_slot_time_long + } core_slot_time_e; + +/** + * Possible 802.11b and 802.11g status codes + */ +typedef enum _core_management_status_e + { + core_management_status_success = 0, + core_management_status_unspecified_failure = 1, + // 2 - 9 are reserved. + core_management_status_unsupported_capabilities = 10, + core_management_status_reassociation_denied_other = 11, + core_management_status_association_denied_other = 12, + core_management_status_auth_algo_not_supported = 13, + core_management_status_auth_frame_out_of_sequence = 14, + core_management_status_auth_challenge_failure = 15, + core_management_status_auth_timeout = 16, + core_management_status_assoc_denied_full_ap = 17, + core_management_status_assoc_unsup_basic_rates = 18, + core_management_status_assoc_unsup_short_preamble = 19, + core_management_status_assoc_unsup_pbcc = 20, + core_management_status_assoc_unsup_channel_agility = 21, + // 22 - 24 reserved. + core_management_status_assoc_unsup_short_slot_time = 25, + core_management_status_assoc_unsup_dsss_ofdm = 26 + // 27 - 65,535 reserved + } core_management_status_e; + +/** + * The frame types the core server can send and receive. + */ +typedef enum _core_frame_type_e + { + core_frame_type_ethernet, + core_frame_type_dot11, + core_frame_type_snap, + core_frame_type_test + } core_frame_type_e; + +/** + * The possible physical medium types. + */ +typedef enum _core_phy_type_e + { + core_phy_type_ofdm, + core_phy_type_high_rate_dss, + core_phy_type_erp + } core_phy_type_e; + +/** + * operation types. + */ +typedef enum _core_operation_type_e + { + core_operation_unspecified, + core_operation_check_rcpi, + core_operation_configure_multicast_group, + core_operation_connect, + core_operation_get_available_iaps, + core_operation_get_rcpi, + core_operation_handle_bss_lost, + core_operation_handle_frame, + core_operation_handle_delete_ts, + core_operation_handle_measurement_request, + core_operation_handle_neighbor_response, + core_operation_ibss_merge, + core_operation_null, + core_operation_release, + core_operation_roam, + core_operation_scan, + core_operation_set_cipher_key, + core_operation_unload_drivers, + core_operation_update_device_settings, + core_operation_update_power_mode, + core_operation_update_rxtx_parameters, + core_operation_create_ts, + core_operation_delete_ts, + core_operation_get_statistics, + core_operation_set_uapsd_settings, + core_operation_set_power_save_settings, + core_operation_protected_setup, + core_operation_power_save_test, + core_operation_set_arp_filter, + core_operation_directed_roam, + /** Not a real operation, defined as upper bound. */ + core_operation_max + } core_operation_type_e; + +/** + * Defines the possible values of maximum service period length. + */ +typedef enum _core_max_service_period_length_e + { + core_max_service_period_length_all, + core_max_service_period_length_two, + core_max_service_period_length_four, + core_max_service_period_length_six + } core_max_service_period_length_e; + +/** + * Defines the possible QoS Access Classes. + */ +typedef enum _core_access_class_e + { + core_access_class_best_effort = 0, + core_access_class_background = 1, + core_access_class_video = 2, + core_access_class_voice = 3 + } core_access_class_e; + +/** + * Defines the possible TX rate values. + */ +typedef enum _core_tx_rate_e + { + core_tx_rate_none = 0x00000000, + core_tx_rate_1mbit = 0x00000001, + core_tx_rate_2mbit = 0x00000002, + core_tx_rate_5p5mbit = 0x00000004, + core_tx_rate_6mbit = 0x00000008, + core_tx_rate_9mbit = 0x00000010, + core_tx_rate_11mbit = 0x00000020, + core_tx_rate_12mbit = 0x00000040, + core_tx_rate_18mbit = 0x00000080, + core_tx_rate_22mbit = 0x00000100, + core_tx_rate_24mbit = 0x00000200, + core_tx_rate_33mbit = 0x00000400, + core_tx_rate_36mbit = 0x00000800, + core_tx_rate_48mbit = 0x00001000, + core_tx_rate_54mbit = 0x00002000 + } core_tx_rate_e; + +const u32_t CORE_TX_RATES_802P11B = + core_tx_rate_1mbit | + core_tx_rate_2mbit | + core_tx_rate_5p5mbit | + core_tx_rate_11mbit; + +const u32_t CORE_TX_RATES_802P11G = + core_tx_rate_6mbit | + core_tx_rate_9mbit | + core_tx_rate_12mbit | + core_tx_rate_18mbit | + core_tx_rate_22mbit | + core_tx_rate_24mbit | + core_tx_rate_33mbit | + core_tx_rate_36mbit | + core_tx_rate_48mbit | + core_tx_rate_54mbit; + +const u32_t CORE_TX_RATES_802P11BG = + CORE_TX_RATES_802P11B | + CORE_TX_RATES_802P11G; + +/** + * Define the possible TX rate value as units of 500kbit/s. + */ +typedef enum _core_tx_rate_value_e + { + core_tx_rate_value_none = 0, + core_tx_rate_value_1mbit = 2, + core_tx_rate_value_2mbit = 4, + core_tx_rate_value_5p5mbit = 11, + core_tx_rate_value_6mbit = 12, + core_tx_rate_value_9mbit = 18, + core_tx_rate_value_11mbit = 22, + core_tx_rate_value_12mbit = 24, + core_tx_rate_value_18mbit = 36, + core_tx_rate_value_22mbit = 44, + core_tx_rate_value_24mbit = 48, + core_tx_rate_value_33mbit = 66, + core_tx_rate_value_36mbit = 72, + core_tx_rate_value_48mbit = 96, + core_tx_rate_value_54mbit = 108, + } _core_tx_rate_value_e; + +/** + * The possible statuses of a virtual traffic stream. + */ +typedef enum _core_traffic_stream_status_e + { + /** + * Initialization value, never returned as a status. + */ + core_traffic_stream_status_undefined, + /** + * The traffic stream is active in the current access point. + */ + core_traffic_stream_status_active, + /** + * The traffic stream is not active in the current access point + * because the AP doesn't require admission control. + */ + core_traffic_stream_status_inactive_not_required, + /** + * The traffic stream is not active in the current access point + * because the AP has deleted the traffic stream. + */ + core_traffic_stream_status_inactive_deleted_by_ap, + /** + * The traffic stream is not active in the current access point + * because the AP has refused the traffic stream request due to + * insufficient over-the-air bandwidth. + */ + core_traffic_stream_status_inactive_no_bandwidth, + /** + * The traffic stream is not active in the current access point + * because the AP has refused the traffic stream request due to + * invalid traffic stream parameters. + */ + core_traffic_stream_status_inactive_invalid_parameters, + /** + * The traffic stream is not active in the current access point + * because the AP has refused the traffic stream request due to + * other reasons. + */ + core_traffic_stream_status_inactive_other + } core_traffic_stream_status_e; + +/** + * The possible reasons for a roam. + */ + typedef enum _core_roam_reason_e + { + /** Initial value if no roaming has been done. */ + core_roam_reason_none, + /** Initial connection attempt. */ + core_roam_reason_initial_connect, + /** Connection to the previous AP has been lost. */ + core_roam_reason_bss_lost, + /** The previous AP has deauthenticated us. */ + core_roam_reason_media_disconnect, + /** Signal strength was too low. */ + core_roam_reason_signal_strength, + /** Signal loss was predicted. */ + core_roam_reason_signal_loss_prediction, + /** Failed EAPOL reauthentication. */ + core_roam_reason_failed_reauthentication, + /** Due to directed roam request. */ + core_roam_reason_directed_roam, + /** Not a real reason, defined as an upper bound. */ + core_roam_reason_max + } core_roam_reason_e; + +/** + * The possible reasons for a failed roaming attempt. + */ + typedef enum _core_roam_failed_reason_e + { + /** Initial value if no roaming has been done. */ + core_roam_failed_reason_none, + /** Authentication or (re-)association has timed out. */ + core_roam_failed_reason_timeout, + /** No suitable AP found either due to an empty scan or blacklisting. */ + core_roam_failed_reason_no_suitable_ap, + /** AP has rejected authentication or (re-)association with a status code. */ + core_roam_failed_reason_ap_status_code, + /** EAPOL authentication has failed. */ + core_roam_failed_reason_eapol_failure, + /** Failures not covered by defined reasons above. */ + core_roam_failed_reason_other_failure, + /** Not a real reason, defined as an upper bound. */ + core_roam_failed_reason_max + } core_roam_failed_reason_e; + +/** + * The possible reasons why a connection was released. + */ + typedef enum _core_release_reason_e + { + /** Release was requested by an external party. */ + core_release_reason_external_request, + /** Maximum number of roaming attempts was exceeded. */ + core_release_reason_max_roam_attempts_exceeded, + /** Release was due to a HW failure indication. */ + core_release_reason_hw_failure, + /** Release was due to TKIP MIC failure. */ + core_release_reason_tkip_mic_failure, + /** Reasons not covered by defined reasons above. */ + core_release_reason_other, + /** Not a real reason, defined as an upper bound. */ + core_release_reason_max + } core_release_reason_e; + +/** + * The possible reasons an access point was blacklisted. + */ +typedef enum _core_ap_blacklist_reason_e + { + /** No blacklisting required. */ + core_ap_blacklist_reason_none = 0, + /** Blacklisting was requested by an external party. */ + core_ap_blacklist_reason_external = 1, + /** Blacklisting was based on failed WPA/802.1x authentication. */ + core_ap_blacklist_reason_eapol_failure = 2, + /** Blacklisting was based on association response status. */ + core_ap_blacklist_reason_association_status = 4, + /** Blacklisting due to exceeded max_ap_association_failure_count. */ + core_ap_blacklist_reason_max_association_failure_count = 8, + /** Blacklisting due to exceeded max_ap_deauthentication_count. */ + core_ap_blacklist_reason_max_deauthentication_count = 16, + /** Not a real reason, defined as an upper bound. */ + core_ap_blacklist_reason_max + } core_ap_blacklist_reason_e; + +/** + * Defines the operating modes of EAPOL stack. + */ +typedef enum _core_eapol_operating_mode_e + { + core_eapol_operating_mode_wfa, + core_eapol_operating_mode_wapi + } core_eapol_operating_mode_e; + +/** + * Definitions for possible power modes. + */ +typedef enum _core_power_mode_e + { + /** Continuous access mode (CAM), no power save. */ + core_power_mode_cam, + /** Power save mode (PS). */ + core_power_mode_ps + } core_power_mode_e; + +/** + * Definitions for power save wake-up modes. + */ +typedef enum _core_power_save_wakeup_mode_e + { + /** Wake-up at every Nth beacon. */ + core_power_save_wakeup_mode_beacon, + /** Wake-up at every Nth DTIM. */ + core_power_save_wakeup_mode_dtim + } core_power_save_wakeup_mode_e; + +/** + * Definitions for run-time feature configuration flags. + */ +typedef enum _core_feature_e + { + /** No configurable features enabled. */ + core_feature_none = 0, + /** Power save test enabled. */ + core_feature_power_save_test = 1, + /** 802.11k support enabled. */ + core_feature_802dot11k = 2 + } core_feature_e; + +/** + * Definitions for possible traffic modes for an access class. + */ +typedef enum _core_access_class_traffic_mode_e + { + /** Automatic traffic stream creation is allowed. */ + core_access_class_traffic_mode_automatic, + /** Automatic traffic stream creation is NOT allowed. */ + core_access_class_traffic_mode_manual + } core_access_class_traffic_mode_e; + +/** + * Definitions for possible traffic statuses for an access class. + */ +typedef enum _core_access_class_traffic_status_e + { + /** + * Traffic for this access class has been admitted. + */ + core_access_class_traffic_status_admitted, + /** + * Traffic for this access class has NOT been admitted, + * traffic needs to be downgraded to a lower access class. + */ + core_access_class_traffic_status_not_admitted + } core_access_class_traffic_status_e; + +/** + * Enumeration for traffic stream direction. + */ +typedef enum _core_traffic_stream_direction_e + { + /** Admission is requested for uplink traffic. */ + core_traffic_stream_direction_uplink = 0, + /** Admission is requested for downlink traffic. */ + core_traffic_stream_direction_downlink = 1, + /** Admission is requested for both uplink and downlink traffic. */ + core_traffic_stream_direction_bidirectional = 3 + } core_traffic_stream_direction_e; + +/** + * Structure for storing WLAN packet statistics. + */ +struct core_packet_statistics_s + { + /** + * Number of successfully received data frames. + */ + u32_t rx_frames; + /** + * Number of sent data frames. + */ + u32_t tx_frames; + /** + * Number of successfully received multicast data frames. + */ + u32_t rx_multicast_frames; + /** + * Number of sent multicast data frames. + */ + u32_t tx_multicast_frames; + /** + * Number of received frames with FCS errors. + */ + u32_t fcs_errors; + /** + * Total number of retransmissions done. + */ + u32_t tx_retries; + /** + * Number of data frames that could not be to delivered. + */ + u32_t tx_errors; + }; + +/** + * Structure for storing WLAN packet statistics per access category. + */ + struct core_packet_statistics_for_access_category_s + { + /** + * Number of successfully received data frames. + */ + u32_t rx_frames; + /** + * Number of sent data frames. + */ + u32_t tx_frames; + /** + * Number of successfully received multicast data frames. + */ + u32_t rx_multicast_frames; + /** + * Number of sent multicast data frames. + */ + u32_t tx_multicast_frames; + /** + * Total number of retransmissions done. + */ + u32_t tx_retries; + /** + * Number of data frames that could not be to delivered. + */ + u32_t tx_errors; + /** + * Average data frame Transmit / Media Delay in microseconds. + */ + u32_t tx_media_delay; + /** + * Average data frame Total Transmit Delay in microseconds. + */ + u32_t tx_total_delay; + /** + * Number of frame whose whose total transmit delay was <= 10ms. + */ + u32_t tx_total_delay_bin0; + /** + * Number of frame whose whose total transmit delay was ]10,20]ms. + */ + u32_t tx_total_delay_bin1; + /** + * Number of frame whose whose total transmit delay was ]20,40]ms. + */ + u32_t tx_total_delay_bin2; + /** + * Number of frame whose whose total transmit delay was > 40ms. + */ + u32_t tx_total_delay_bin3; + }; + +/** + * Structure for storing WLAN packet statistics for all the access categories. + */ + struct core_packet_statistics_by_access_category_s + { + /** + * Statistics per access category. + */ + core_packet_statistics_for_access_category_s ac[MAX_QOS_ACCESS_CLASS]; + /** + * Number of received frames with FCS errors. + */ + u32_t fcs_errors; + }; + +/** + * Structure for storing U-APSD settings for the access categories. + */ +struct core_uapsd_settings_s + { + /** + * Defines the maximum number of frames to send during a service period. + */ + core_max_service_period_length_e max_service_period; + /** + * Whether U-APSD is trigger and delivery-enabled for Voice. + */ + bool_t uapsd_enabled_for_voice; + /** + * Whether U-APSD is trigger and delivery-enabled for Video. + */ + bool_t uapsd_enabled_for_video; + /** + * Whether U-APSD is trigger and delivery-enabled for BestEffort. + */ + bool_t uapsd_enabled_for_best_effort; + /** + * Whether U-APSD is trigger and delivery-enabled for Background. + */ + bool_t uapsd_enabled_for_background; + }; + +/** + * Structure for storing parameters related to AP lost indications. + */ +struct core_bss_lost_parameters_s + { + /** + * The number of consecutive beacons that can be lost before + * core_am_indication_wlan_beacon_lost is indicated. + */ + u32_t beacon_lost_count; + /** + * The number of consecutive transmissions that can fail + * before core_am_indication_wlan_tx_fail indicated. + */ + u8_t failed_tx_packet_count; + }; + +/** + * Structure for storing parameters related to tx rate adaptation algorithm. + */ +struct core_tx_rate_adaptation_parameters_s + { + /** + * Minimum and initial rate increase checkpoint in units of frames. + */ + u8_t min_stepup_checkpoint; + /** + * Maximum rate increase checkpoint in units of frames. + */ + u8_t max_stepup_checkpoint; + /** + * Rate increase checkpoint is multiplied with this value if sending of a probe frame fails. + */ + u8_t stepup_checkpoint_factor; + /** + * After this many frames the need to decrease the rate is checked. + */ + u8_t stepdown_checkpoint; + /** + * Minimum and initial rate increase threshold percentage. + */ + u8_t min_stepup_threshold; + /** + * Maximum rate increase threshold percentage value. + */ + u8_t max_stepup_threshold; + /** + * Rate increase threshold is incremented by this value if sending of a probe frame fails. + */ + u8_t stepup_threshold_increment; + /** + * Rate decrease threshold percentage. + */ + u8_t stepdown_threshold; + /** + * If false_t, the rate adaptation algorithm handles the first frame transmitted after a + * rate increase in a special way. + */ + bool_t disable_probe_handling; + }; + +/** + * Structure for storing parameters related to power mode management algorithm. + */ +struct core_power_mode_mgmt_parameters_s + { + /** + * Time interval in microseconds after which transition from Active mode + * to Light PS mode is considered. + */ + u32_t active_to_light_timeout; + /** + * Frame count threshold used when considering transition from Active + * to Light PS mode. + */ + u16_t active_to_light_threshold; + /** + * Time interval in microseconds after which the frame counter used when + * considering transition from Light PS to Active mode is reset. + */ + u32_t light_to_active_timeout; + /** + * Frame count threshold used when considering transition from Light PS + * to Active mode. + */ + u16_t light_to_active_threshold; + /** + * Time interval in microseconds after which transition from Light PS mode + * to Deep PS mode is considered. + */ + u32_t light_to_deep_timeout; + /** + * Frame count threshold used when considering transition from Light PS + * to Deep PS mode. + */ + u16_t light_to_deep_threshold; + /** + * Received frame payload length (in bytes) threshold in U-APSD network for + * Best Effort Access Category. + */ + u16_t uapsd_rx_frame_length_threshold; + }; + +struct core_device_settings_s + { + u32_t beacon; ///< IBSS beacon interval in TUs. + u32_t long_retry; ///< How many times packets bigger than 'rts' will be resent. + u32_t short_retry; ///< How many times packets smaller than 'rts' will be resent. + u32_t rts; ///< Minimum size of a packet for CTS/RTS handshake. + u32_t tx_power_level; ///< Maximum allowed transmission power level in dBm. + u32_t scan_rate; ///< Data rate used to send probe requests. + ///< The rate is defined in units of 500kbit/s. + u32_t rcpi_trigger; ///< Roaming is attemped when RCPI value is lower than this. + u32_t active_scan_min_ch_time; ///< Min time (TUs) to listen a channel in active scanning. + u32_t active_scan_max_ch_time; ///< Max time (TUs) to listen a channel in active scanning. + u32_t passive_scan_min_ch_time; ///< Min time (TUs) to listen a channel in passive scanning. + u32_t passive_scan_max_ch_time; ///< Max time (TUs) to listen a channel in passive scanning. + u32_t max_tx_msdu_life_time; ///< Max time (TUs) to (re-)send one (fragmented) packet. + u32_t unload_driver_timer; ///< Number of seconds to wait before unloading WLAN drivers + ///< if no WLAN connection is active. + u32_t roam_timer; ///< Defines how often to search for a better AP in poor + ///< signal conditions. The value is in microseconds. + u32_t rcpi_difference; ///< Difference in dBm required between an AP and the current + ///< AP before roaming is attemped. + u32_t max_tries_to_find_nw; ///< Defines how many are made to find a suitable AP before + ///< giving up during initial connect. + u32_t delay_between_find_nw; ///< Defines the amount of microseconds to wait between + ///< initial connection attempts. + bool_t power_save_enabled; ///< true_t if WLAN power save is allowed, false_t if not. + bool_t allow_radio_measurements; ///< true_t if radio measurements are allowed, false_t if not. + u32_t max_ap_association_failure_count; ///< Number of times association may fail before the AP + ///< is blacklisted for the duration of the connection. + u32_t max_ap_authentication_failure_count; ///< Number of times authentication may fail before the AP + ///< is blacklisted for the duration of the connection. + u32_t max_ap_deauthentication_count; ///< The maximum number of times AP can deauthenticate the + ///< terminal within ap_deauthentication_timeout after a + ///< successful roam before it's blacklisted for the + ///< duration of the connection. + u32_t ap_deauthentication_timeout; ///< Deauthentication within this many microseconds after + ///< a successful roam is calculated towards AP's + ///< deauthentication count. + u32_t long_beacon_find_count; ///< Number of attempts to find an AP with long beacon + ///< interval. + u32_t qos_null_frame_interval; ///< Defines how often (in microseconds) a QoS NULL data frame + ///< is sent during a VoIP call if no other frames to send. + u32_t qos_null_frame_exit_timeout; ///< Defines how soon after the last Voice AC packet QoS NULL + ///< data frame sending is stopped (in microseconds). + u32_t 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. + u32_t 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. + u32_t keep_alive_interval; ///< How often NULL data frames are sent when nothing is being + ///< transmitted. The value is in microseconds. + u32_t scan_stop_rcpi_threshold; ///< If AP RCPI value is better than this, roaming scan can be + ///< stopped. + u32_t iap_availability_rcpi_threshold; ///< If AP RCPI value is less than this, IAP will not marked + ///< as active. + u32_t sp_rcpi_target; ///< Defines the signal predictor algorithm "target" RCPI + ///< value for roam indication. + u32_t sp_time_target; ///< Defines the signal predictor algorithm "target" time for + //// roam indication (in microseconds). + u32_t sp_min_indication_interval; ///< Defines the minimum time interval for consecutive roam + ///< indications from the signal predictor algorithm + ///< (in microseconds). + u32_t scan_list_expiration_time; ///< This value defines how long beacons/probe responses are + ///< stored in the internal scan list (in microseconds). + u32_t rcpi_roam_min_interval; ///< Minimum delay between RCPI checks (in microseconds). + u32_t rcpi_roam_max_interval; ///< Maximum delay between RCPI checks (in microseconds). + u32_t rcpi_roam_attempts_per_interval; ///< Number of times to try with the current interval value. + u32_t rcpi_roam_next_interval_factor; ///< The current interval value is multiplied by this factor + ///< to get the next interval value. + u32_t rcpi_roam_next_interval_addition; ///< This value is added to the multiplied interval value + ///< (in microseconds). + u32_t bss_lost_roam_min_interval; ///< Minimum delay between roam attempts due to BSS lost. + u32_t bss_lost_roam_max_interval; ///< Maximum delay between roam attempts due to BSS lost. + u32_t bss_lost_roam_attempts_per_interval; ///< Number of times to try with the current interval value. + u32_t bss_lost_roam_next_interval_factor; ///< The current interval value is multiplied by this factor + ///< to get the next interval value. + u32_t bss_lost_roam_next_interval_addition; ///< This value is added to the multiplied interval value + ///< (in microseconds). + u32_t bss_lost_roam_max_tries_to_find_nw; ///< Defines how many are made to find a suitable AP before + ///< giving up during BSS lost. + u32_t max_dtim_skip_interval; ///< Maximum amount of microseconds to sleep when waking up + ///< on DTIMs. Zero value means waking up on every DTIM. + u32_t ps_active_to_light_timeout; ///< Time interval in microseconds after which transition + ///< from Active mode to Light PS mode is considered. + u16_t ps_active_to_light_threshold; ///< Frame count threshold used when considering transition + ///< from Active to Light PS mode. + u32_t ps_light_to_active_timeout; ///< Time interval in microseconds after which the frame counter + ///< used when considering transition from Light PS to Active mode is reset. + u16_t ps_light_to_active_threshold; ///< Frame count threshold used when considering transition + ///< from Light PS to Active mode. + u32_t ps_light_to_deep_timeout; ///< Time interval in microseconds after which transition + ///< from Light PS mode to Deep PS mode is considered. + u16_t ps_light_to_deep_threshold; ///< Frame count threshold used when considering transition + ///< from Light PS to Deep PS mode. + u16_t ps_uapsd_rx_frame_length; ///< Received frame payload length (in bytes) threshold in + ///< U-APSD network for Best Effort Access Category. + u32_t rrm_min_measurement_interval; ///< This value defines how often 802.11k Measurement Request are accepted. + ///< The value is in microseconds. If zero, request coming with any + ///< interval are accepted. + }; + +struct core_iap_data_s + { + /** ID of the IAP in CommsDB. */ + u32_t id; + /** Is the connection mode IBSS or Infrastructure. */ + core_operating_mode_e op_mode; + /** Name of the network. */ + core_ssid_s ssid; + /** Is SSID hidden */ + bool_t is_hidden; + /** WEP key 1. */ + core_wep_key_s wep_key1; + /** WEP key 2. */ + core_wep_key_s wep_key2; + /** WEP key 3. */ + core_wep_key_s wep_key3; + /** WEP key 4. */ + core_wep_key_s wep_key4; + /** Default WEP key id. */ + u32_t default_wep_key; + /** Security mode. */ + core_security_mode_e security_mode; + /** Authentication mode (open, shared). */ + core_authentication_mode_e authentication_mode; + /** Is preshared key in use (ETrue) or not (EFalse). */ + bool_t wpa_preshared_key_in_use; + /** Is WPA settings overriden or not. */ + bool_t is_wpa_overriden; + /** Overridden WPA PSK */ + core_wpa_preshared_key_s wpa_preshared_key; + /** Used channel in IBSS (ad-hoc) mode */ + u32_t used_adhoc_channel; + /** Is IP address configured dynamically. */ + bool_t is_dynamic_ip_addr; + /** Is roaming between APs allowed. */ + bool_t is_roaming_allowed; + /** ID of the IAP. */ + u32_t iap_id; + }; + +/** + * Struct containing SSIDs related to secondary SSID feature. + */ +struct core_ssid_entry_s + { + /** ID of the IAP this entry refers to. */ + u32_t id; + /** Defines the SSID to look for in the scan results. */ + core_ssid_s ssid; + /** Defines the SSID used for connecting. */ + core_ssid_s used_ssid; + }; + +struct core_scan_channels_s + { + u8_t band; ///< 1 = 2.4GHz, 2 = 4.9GHz, 4 = 5GHz + u8_t channels2dot4ghz[2]; + u8_t channels4dot9ghz[3]; + u8_t channels5ghz[26]; + }; + +const core_scan_channels_s SCAN_CHANNELS_2DOT4GHZ_US = + { SCAN_BAND_2DOT4GHZ, { 0xFF, 0x07 }, { 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }; + +const core_scan_channels_s SCAN_CHANNELS_2DOT4GHZ_ETSI = + { SCAN_BAND_2DOT4GHZ, { 0xFF, 0x1F }, { 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }; + +/** + * Structure for storing 802.11d country strings. + */ +struct core_country_string_s + { + u8_t country[MAX_COUNTRY_STRING_LENGTH]; + }; + +/** Definition for an empty country string. */ +const core_country_string_s COUNTRY_STRING_NONE = { 0, 0, 0 }; + +/** AP country information for Canada, North America, Taiwan, Brazil, Argentina, Mexico and Colombia. */ +const core_country_string_s country_info_table[] = { {'C','A','0'}, {'U','S','0'}, {'V','I','0'}, {'T','W','0'}, {'B','R','0'}, {'A','R','0'}, {'M','X','0'}, {'C','O','0'} }; +const u8_t country_info_table_length = 8; + +/** + * Structure for storing a single TX rate policy. + */ +struct core_tx_rate_policy_s + { + /** Number of attempts to transmit at 54 Mbits/s. */ + u8_t tx_policy_54; + /** Number of attempts to transmit at 48 Mbits/s. */ + u8_t tx_policy_48; + /** Number of attempts to transmit at 36 Mbits/s. */ + u8_t tx_policy_36; + /** Number of attempts to transmit at 33 Mbits/s. */ + u8_t tx_policy_33; + /** Number of attempts to transmit at 24 Mbits/s. */ + u8_t tx_policy_24; + /** Number of attempts to transmit at 22 Mbits/s. */ + u8_t tx_policy_22; + /** Number of attempts to transmit at 18 Mbits/s. */ + u8_t tx_policy_18; + /** Number of attempts to transmit at 12 Mbits/s. */ + u8_t tx_policy_12; + /** Number of attempts to transmit at 11 Mbits/s. */ + u8_t tx_policy_11; + /** Number of attempts to transmit at 9 Mbits/s. */ + u8_t tx_policy_9; + /** Number of attempts to transmit at 6 Mbits/s. */ + u8_t tx_policy_6; + /** Number of attempts to transmit at 5.5 Mbits/s. */ + u8_t tx_policy_5p5; + /** Number of attempts to transmit at 2 Mbits/s. */ + u8_t tx_policy_2; + /** Number of attempts to transmit at 1 Mbits/s. */ + u8_t tx_policy_1; + /** Number of retransmissions to packets that are smaller than RTS. */ + u8_t short_retry_limit; + /** Number of retransmissions to packets that are bigger than RTS. */ + u8_t long_retry_limit; + /** Flags defined in HAL API that apply to this policy. */ + u32_t flags; + /** Initial TX rate used for transmitting. */ + core_tx_rate_e initial_tx_rate; + /** TX rate mask for auto rate policy. */ + u32_t tx_auto_rate_policy; + /** Bitmap of enabled 802.11n modulation and coding schemes. */ + u8_t mcs_set[TX_RATE_POLICY_MCS_SIZE]; + }; + +/** + * Structure for storing a group of TX rate policies. + */ +struct core_tx_rate_policies_s + { + /** Number of TX rate policies in the array. */ + u8_t policy_count; + /** Array of TX rate policies. */ + core_tx_rate_policy_s policy[MAX_TX_RATE_POLICY]; + }; + +/** + * Structure for storing mappings between QoS Access Classes and TX rate policies. + */ +struct core_tx_rate_policy_mappings_s + { + u8_t policy_for_best_effort; + u8_t policy_for_background; + u8_t policy_for_video; + u8_t policy_for_voice; + }; + +/** + * Structure for storing traffic stream parameters. + */ +struct core_traffic_stream_params_s + { + /** + * Whether the traffic pattern is periodic or aperiodic. + */ + bool_t is_periodic_traffic; + /** + * Traffic stream direction. + */ + core_traffic_stream_direction_e direction; + /** + * The current value of Nominal MSDU Size. + */ + u16_t nominal_msdu_size; + /** + * The current value of Maximum MSDU Size. + */ + u16_t maximum_msdu_size; + /** + * The current value of Minimum Service Interval. + */ + u32_t minimum_service_interval; + /** + * The current value of Maximum Service Interval. + */ + u32_t maximum_service_interval; + /** + * The current value of Inactivity Interval. + */ + u32_t inactivity_interval; + /** + * The current value of Suspension Interval. + */ + u32_t suspension_interval; + /** + * The current value of Service Start Time. + */ + u32_t service_start_time; + /** + * The current value of Minimum Data Rate. + */ + u32_t minimum_data_rate; + /** + * The current value of Mean Data Rate. + */ + u32_t mean_data_rate; + /** + * The current value of Peak Data Rate. + */ + u32_t peak_data_rate; + /** + * The current value of Maximum Burst Size. + */ + u32_t maximum_burst_size; + /** + * The current value of Delay Bound + */ + u32_t delay_bound; + /** + * The current value of Minimum PHY Rate. + */ + u32_t minimum_phy_rate; + /** + * The current value of Nominal PHY Rate in units + */ + core_tx_rate_e nominal_phy_rate; + /** + * The current value of Bandwidth Allowance. + */ + u16_t surplus_bandwidth_allowance; + /** + * Whether re-creation of traffic streams is allowed. + */ + bool_t is_retry_allowed; + /** + * The current value of Medium Time. + */ + u16_t medium_time; + /** + * The tx rates to be used with this AC, 0 if defaults are used. + */ + u32_t override_rates; + /** + * The Maximum Transmit MSDU Lifetime, 0 if default is used. + */ + u32_t override_max_tx_msdu_lifetime; + }; + +/** + * Structure for storing information about channels that have + * APs with long beacon intervals. + */ +struct core_long_beacon_interval_channels_s + { + u8_t channel_scan_count[SCAN_BAND_2DOT4GHZ_MAX_CHANNEL_EURO]; + }; + +/** + * Structure for storing power save settings for the access categories. + */ +struct core_power_save_settings_s + { + /** Whether the terminal stays in U-APSD power save when using Voice. */ + bool_t stay_in_uapsd_power_save_for_voice; + /** Whether the terminal stays in U-APSD power save when using Video. */ + bool_t stay_in_uapsd_power_save_for_video; + /** Whether the terminal stays in U-APSD power save when using BestEffort. */ + bool_t stay_in_uapsd_power_save_for_best_effort; + /** Whether the terminal stays in U-APSD power save when using Background. */ + bool_t stay_in_uapsd_power_save_for_background; + /** Whether the terminal stays in legacy power save when using Voice. */ + bool_t stay_in_legacy_power_save_for_voice; + /** Whether the terminal stays in legacy power save when using Video. */ + bool_t stay_in_legacy_power_save_for_video; + /** Whether the terminal stays in legacy power save when using BestEffort. */ + bool_t stay_in_legacy_power_save_for_best_effort; + /** Whether the terminal stays in legacy power save when using Background. */ + bool_t stay_in_legacy_power_save_for_background; + }; + +/** + * Structure for storing RCPI roam interval parameters. + */ +struct core_rcpi_roam_interval_s + { + /** Number of times the current interval has been tried. */ + u32_t count; + /** The current interval value. */ + u32_t interval; + }; + +/** + * Structure for storing information about an access point. + */ +struct core_ap_information_s + { + /** The SSID of the AP. */ + core_ssid_s ssid; + /** The BSSID of the AP. */ + core_mac_address_s bssid; + /** Capabilities of the AP. */ + u16_t capabilities; + /** The channel AP is on. */ + u8_t channel; + /** The received channel power indicator (RCPI). */ + u8_t rcpi; + /** Basic rates of the AP. */ + u32_t basic_rates; + /** Supported rates of the AP. */ + u32_t supported_rates; + /** The security mode of the AP. */ + core_connection_security_mode_e security_mode; + /** Whether the AP supports WPX. */ + bool_t is_wpx; + /** Whether Admission Control must be used with Voice. */ + bool_t is_ac_required_for_voice; + /** Whether Admission Control must be used with Video. */ + bool_t is_ac_required_for_video; + /** Whether Admission Control must be used with BestEffort. */ + bool_t is_ac_required_for_best_effort; + /** Whether Admission Control must be used with Background. */ + bool_t is_ac_required_for_background; + }; + +/** + * Structure for storing roaming metrics information. + */ +struct core_roam_metrics_s + { + /** Connection attempt total counter. */ + u32_t connection_attempt_total_count; + /** Unsuccesfull connection attempt counter. */ + u32_t unsuccesfull_connection_attempt_count; + /** Roaming counter. */ + u32_t roaming_counter; + /** Coverage loss counter. */ + u32_t coverage_loss_count; + + /** The total duration (ms) of the last roaming (= data path broken time + scanning time). */ + u32_t last_roam_total_duration; + /** The duration (ms) how long the data path was broken during the last roaming. */ + u32_t last_roam_data_path_broken_duration; + /** The cause for the last roaming. */ + core_roam_reason_e last_roam_reason; + }; + +/** + * Structure for storing parameters related to power save mode. + */ +struct core_power_save_mode_s + { + /** The power save mode to use. */ + core_power_save_mode_e mode; + /** + * The wake-up interval. + * @note This parameter is only applicable if the mode is + * core_power_save_mode_beacon or core_power_save_mode_dtim, + * otherwise it should set to zero. + */ + u8_t wakeup_interval; + }; + +const core_power_save_mode_s CORE_POWER_SAVE_MODE_EVERY_BEACON = + { core_power_save_mode_beacon, 1 }; +const core_power_save_mode_s CORE_POWER_SAVE_MODE_EVERY_DTIM = + { core_power_save_mode_dtim, 1 }; +const core_power_save_mode_s CORE_POWER_SAVE_MODE_NONE = + { core_power_save_mode_none, 0 }; +const core_power_save_mode_s CORE_POWER_SAVE_MODE_AUTOMATIC = + { core_power_save_mode_automatic, 0 }; +const core_power_save_mode_s CORE_POWER_SAVE_MODE_DTIM_SKIPPING = + { core_power_save_mode_dtim_skipping, 0 }; + +/** + * Structure for storing parameters related to power mode. + */ +struct core_power_mode_s + { + /** The power mode to use. */ + core_power_mode_e mode; + /** Disable dynamic power save management. */ + bool_t disable_dynamic_ps; + /** Defines the wake-up mode for Light PS mode. */ + core_power_save_wakeup_mode_e wakeup_mode_light; + /** Defines the wake-up interval (N) for Light PS mode. */ + u8_t wakeup_interval_light; + /** Defines the wake-up mode for Deep PS mode. */ + core_power_save_wakeup_mode_e wakeup_mode_deep; + /** Defines the wake-up interval (N) for Deep PS mode. */ + u8_t wakeup_interval_deep; + }; + +const core_power_mode_s CORE_POWER_MODE_CAM = + { core_power_mode_cam, true_t, core_power_save_wakeup_mode_beacon, 1, core_power_save_wakeup_mode_beacon, 1 }; +const core_power_mode_s CORE_POWER_MODE_PS = + { core_power_mode_ps, false_t, core_power_save_wakeup_mode_beacon, 1, core_power_save_wakeup_mode_dtim, 1 }; +const core_power_mode_s CORE_POWER_MODE_PS_BEACON = + { core_power_mode_ps, true_t, core_power_save_wakeup_mode_beacon, 1, core_power_save_wakeup_mode_beacon, 1 }; +const core_power_mode_s CORE_POWER_MODE_PS_DTIM = + { core_power_mode_ps, true_t, core_power_save_wakeup_mode_dtim, 1, core_power_save_wakeup_mode_dtim, 1 }; + +/** + * Structure for storing an access point blacklist entry. + */ +struct core_ap_blacklist_entry_s + { + /** BSSID of the AP. */ + core_mac_address_s bssid; + /** Reason the AP was blacklisted. */ + core_ap_blacklist_reason_e reason; + }; + +/** + * Structure for storing block ACK usage information. + */ +struct core_block_ack_usage_s + { + /** Bitmap of TIDs where TX block ACK is allowed. */ + u8_t tx_usage; + /** Bitmap of TIDs where RX block ACK is allowed. */ + u8_t rx_usage; + }; + +/** + * Structure for storing a SNAP header. + */ +struct core_snap_header_s + { + /** Destination Service Access Point. */ + u8_t dsap; + /** Source Service Access Point. */ + u8_t ssap; + /** Control Field. */ + u8_t control; + /** Organizationally Unique Identifier (OUI). */ + u8_t oui[OUI_LENGTH]; + }; + +/** + * Structure for access class traffic statuses and traffic modes. + */ +struct core_ac_traffic_information_s + { + /** Current traffic status for Voice. */ + core_access_class_traffic_status_e status_for_voice; + /** Current traffic status for Video. */ + core_access_class_traffic_status_e status_for_video; + /** Current traffic status for BestEffort. */ + core_access_class_traffic_status_e status_for_best_effort; + /** Current traffic status for Background. */ + core_access_class_traffic_status_e status_for_background; + /** Current traffic mode for Voice. */ + core_access_class_traffic_mode_e mode_for_voice; + /** Current traffic mode for Video. */ + core_access_class_traffic_mode_e mode_for_video; + /** Current traffic mode for BestEffort. */ + core_access_class_traffic_mode_e mode_for_best_effort; + /** Current traffic mode for Background. */ + core_access_class_traffic_mode_e mode_for_background; + }; + +/** + * Enums for WLAN Engine - EAPOL interface datatypes. + */ + +typedef enum _wlan_eapol_if_eap_protocol_layer_e + { + wlan_eapol_if_eap_protocol_layer_none, + wlan_eapol_if_eap_protocol_layer_general, + wlan_eapol_if_eap_protocol_layer_internal_type, + wlan_eapol_if_eap_protocol_layer_am_eap_type, + wlan_eapol_if_eap_protocol_layer_radius, + wlan_eapol_if_eap_protocol_layer_eap_type, + wlan_eapol_if_eap_protocol_layer_eap, + wlan_eapol_if_eap_protocol_layer_eapol, + wlan_eapol_if_eap_protocol_layer_eapol_key, + wlan_eapol_if_eap_protocol_layer_ethernet, + wlan_eapol_if_eap_protocol_layer_wlan_authentication, + wlan_eapol_if_eap_protocol_layer_authentication_server, + wlan_eapol_if_eap_protocol_layer_wapi + } wlan_eapol_if_eap_protocol_layer_e; + +typedef enum _wlan_eapol_if_eapol_key_authentication_mode_e + { + wlan_eapol_if_eapol_key_authentication_mode_none, + wlan_eapol_if_eapol_key_authentication_mode_open, + wlan_eapol_if_eapol_key_authentication_mode_shared, + wlan_eapol_if_eapol_key_authentication_mode_wpx, + } wlan_eapol_if_eapol_key_authentication_mode_e; + +typedef enum _wlan_eapol_if_eapol_key_authentication_type_e + { + wlan_eapol_if_eapol_key_authentication_type_none, + wlan_eapol_if_eapol_key_authentication_type_rsna_eap, + wlan_eapol_if_eapol_key_authentication_type_rsna_psk, + wlan_eapol_if_eapol_key_authentication_type_wpa_eap, + wlan_eapol_if_eapol_key_authentication_type_wpa_psk, + wlan_eapol_if_eapol_key_authentication_type_802_1x, + wlan_eapol_if_eapol_key_authentication_type_wpx_fast_roam, + wlan_eapol_if_eapol_key_authentication_type_wfa_sc, + wlan_eapol_if_eapol_key_authentication_type_wapi_psk, + wlan_eapol_if_eapol_key_authentication_type_wapi + } wlan_eapol_if_eapol_key_authentication_type_e; + +typedef enum _wlan_eapol_if_eapol_key_type_e + { + wlan_eapol_if_eapol_key_type_broadcast, + wlan_eapol_if_eapol_key_type_unicast, + wlan_eapol_if_eapol_key_type_wpx_fast_roam_krk, + wlan_eapol_if_eapol_key_type_wpx_fast_roam_btk, + wlan_eapol_if_eapol_key_type_pmkid, + } wlan_eapol_if_eapol_key_type_e; + +typedef enum _wlan_eapol_if_eapol_tkip_mic_failure_type_e + { + wlan_eapol_if_eapol_tkip_mic_failure_type_group_key, + wlan_eapol_if_eapol_tkip_mic_failure_type_pairwise_key, + } wlan_eapol_if_eapol_tkip_mic_failure_type_e; + +typedef enum _wlan_eapol_if_eapol_wlan_authentication_state_e + { + wlan_eapol_if_eapol_wlan_authentication_state_none, + wlan_eapol_if_eapol_wlan_authentication_state_association_ok, + wlan_eapol_if_eapol_wlan_authentication_state_this_ap_failed, + wlan_eapol_if_eapol_wlan_authentication_state_failed_completely, + wlan_eapol_if_eapol_wlan_authentication_state_802_11_auth_algorithm_not_supported, + wlan_eapol_if_eapol_wlan_authentication_state_obsolete, // <- Do not use this value. + wlan_eapol_if_eapol_wlan_authentication_state_eap_authentication_running, + wlan_eapol_if_eapol_wlan_authentication_state_no_response, + wlan_eapol_if_eapol_wlan_authentication_state_4_way_handshake_running, + wlan_eapol_if_eapol_wlan_authentication_state_authentication_successfull, + wlan_eapol_if_eapol_wlan_authentication_state_authentication_cancelled, + wlan_eapol_if_eapol_wlan_authentication_state_immediate_reconnect, + wlan_eapol_if_eapol_wlan_authentication_state_wapi_authentication_running + } wlan_eapol_if_eapol_wlan_authentication_state_e; + +typedef enum _wlan_eapol_if_error_e + { + wlan_eapol_if_error_ok, + wlan_eapol_if_error_pending_request, + wlan_eapol_if_error_allocation_error, + wlan_eapol_if_error_illegal_parameter, + wlan_eapol_if_error_process_general_error, + } wlan_eapol_if_error_e; + +typedef enum _wlan_eapol_if_rsna_cipher_e + { + wlan_eapol_if_rsna_cipher_none, + wlan_eapol_if_rsna_cipher_ccmp, + wlan_eapol_if_rsna_cipher_tkip, + wlan_eapol_if_rsna_cipher_wep_40, + wlan_eapol_if_rsna_cipher_wep_104, + wlan_eapol_if_wapi_cipher_wpi + } wlan_eapol_if_rsna_cipher_e; + +typedef enum _wlan_eapol_ethernet_type_e + { + wlan_eapol_ethernet_type_none = 0, + wlan_eapol_ethernet_type_pae = 0x888e, ///< Ethernet type Port Access Entity (PAE) + wlan_eapol_ethernet_type_preauthentication = 0x88c7, ///< Ethernet type Preauthentication + wlan_eapol_ethernet_type_wapi = 0x88b4 ///< Ethernet type WAPI + } wlan_eapol_ethernet_type_e; + +typedef enum _wlan_eapol_if_eap_type_e + { + wlan_eapol_if_eap_type_none = 0, ///< This is internal value for no type case. + wlan_eapol_if_eap_type_tls = 13, ///< This is Transport Layer Security (TLS) type. + wlan_eapol_if_eap_type_leap = 17, ///< This is LEAP type. + wlan_eapol_if_eap_type_gsmsim = 18, ///< This is SIM type. + wlan_eapol_if_eap_type_ttls = 21, ///< This is tunneled TLS. + wlan_eapol_if_eap_type_aka = 23, ///< This is AKA type. + wlan_eapol_if_eap_type_peap = 25, ///< This is PEAP type. + wlan_eapol_if_eap_type_mschapv2 = 26, ///< This is MsChapv2 type. + wlan_eapol_if_eap_type_fast = 43, ///< This is EAP-FAST type. + } wlan_eapol_if_eap_type_e; + +typedef enum _wlan_eapol_if_eap_status_e + { + wlan_eapol_if_eap_status_none = 0, + wlan_eapol_if_eap_status_authentication_failure = 14, + wlan_eapol_if_eap_status_illegal_cipher_suite = 70, + wlan_eapol_if_eap_status_bad_certificate = 71, + wlan_eapol_if_eap_status_unsupported_certificate = 72, + wlan_eapol_if_eap_status_certificate_revoked = 73, + wlan_eapol_if_eap_status_certificate_expired = 74, + wlan_eapol_if_eap_status_user_certificate_unknown = 76, + wlan_eapol_if_eap_status_identity_query_failed = 94, + wlan_eapol_if_eap_status_user_has_not_subscribed_to_the_requested_service = 96, + wlan_eapol_if_eap_status_users_calls_are_barred = 97, + wlan_eapol_if_eap_status_restricted_logon_hours = 98, + wlan_eapol_if_eap_status_account_disabled = 99, + wlan_eapol_if_eap_status_no_dialin_permission = 100, + wlan_eapol_if_eap_status_password_expired = 101, + wlan_eapol_if_eap_status_OOB_interface_read_error = 103, + wlan_eapol_if_eap_status_decryption_CRC_failure = 104, + wlan_eapol_if_eap_status_RF_band_2_4_ghz_not_supported = 105, + wlan_eapol_if_eap_status_RF_band_5_0_ghz_not_supported = 106, + wlan_eapol_if_eap_status_signal_too_weak = 107, + wlan_eapol_if_eap_status_network_authentication_failure = 108, + wlan_eapol_if_eap_status_network_association_failure = 109, + wlan_eapol_if_eap_status_no_DHCP_response = 110, + wlan_eapol_if_eap_status_failed_DHCP_configure = 111, + wlan_eapol_if_eap_status_ip_address_conflict = 112, + wlan_eapol_if_eap_status_could_not_connect_to_registrar = 113, + wlan_eapol_if_eap_status_multiple_PBC_sessions_detected = 114, + wlan_eapol_if_eap_status_rogue_activity_suspected = 115, + wlan_eapol_if_eap_status_device_busy = 116, + wlan_eapol_if_eap_status_setup_locked = 117, + wlan_eapol_if_eap_status_message_timeout = 118, + wlan_eapol_if_eap_status_registration_session_timeout = 119, + wlan_eapol_if_eap_status_device_password_authentication_failure = 120, + wlan_eapol_if_eap_status_pin_code_authentication_not_supported = 121, + wlan_eapol_if_eap_status_push_button_authentication_not_supported = 122, + wlan_eapol_if_eap_status_tunnel_compromise_error = 124, + wlan_eapol_if_eap_status_unexpected_tlv_exhanged = 125, + wlan_eapol_if_eap_status_no_pac_nor_certs_to_authenticate_with_provision_disabled = 126, + wlan_eapol_if_eap_status_no_matching_pac_for_aid = 127, + wlan_eapol_if_eap_status_pac_store_corrupted = 128, + } wlan_eapol_if_eap_status_e; + +enum wlan_eapol_if_eap_state_e + { + wlan_eapol_if_eap_state_general_authentication_error = 4, + wlan_eapol_if_eap_state_authentication_terminated_unsuccessfully = 7, + }; + +/** + * Structure for storing medium time by user priority. + */ +typedef u16_t medium_time_by_user_priority[MAX_QOS_USER_PRIORITY]; + +/** + * Structure for storing medium time by access class. + */ +typedef u16_t medium_time_by_access_class[MAX_QOS_ACCESS_CLASS]; + +/** + * Structure for storing medium time by user priority and by access class. + */ +typedef struct _medium_time_s + { + /** Admission capacity by user priority. */ + medium_time_by_user_priority up; + /** Admission capacity by access class. */ + medium_time_by_access_class ac; + } medium_time_s; + +const medium_time_s ADMISSION_CAPACITIES_NOT_DEFINED = { 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF }; +const medium_time_s MEDIUM_TIME_NOT_DEFINED = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + +#endif // CORE_TYPES_H