<?xml version="1.0" encoding="utf-8"?>

<!--
/*
 * Copyright (C) 2022 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-->
<resources>
    <!-- Boolean indicating whether the wifi chipset has 5GHz frequency band support -->
    <bool translatable="false" name="config_wifi5ghzSupport">true</bool>

    <!-- boolean indicating whether the WiFi chipset has 6GHz band support -->
    <bool translatable="false" name ="config_wifi6ghzSupport">true</bool>

    <!-- Boolean indicating whether 802.11r Fast BSS Transition is enabled on this platform -->
    <bool translatable="false" name="config_wifi_fast_bss_transition_enabled">true</bool>

    <!-- Boolean indicating whether the wifi chipset has background scan support -->
    <bool translatable="false" name="config_wifi_background_scan_support">true</bool>

    <!-- Integer thresholds, do not connect to APs with RSSI lower than these values  -->
    <integer translatable="false" name="config_wifi_framework_wifi_score_entry_rssi_threshold_5GHz">-77</integer>
    <integer translatable="false" name="config_wifi_framework_wifi_score_entry_rssi_threshold_24GHz">-80</integer>
    <!-- Integer thresholds for low network score, should be somewhat less than the entry thresholds -->
    <integer translatable="false" name="config_wifi_framework_wifi_score_bad_rssi_threshold_5GHz">-80</integer>
    <integer translatable="false" name="config_wifi_framework_wifi_score_bad_rssi_threshold_24GHz">-83</integer>

    <!-- Boolean indicating whether or not to revert to default country code when cellular
    radio is unable to find any MCC information to infer wifi country code from -->
    <bool translatable="false" name="config_wifi_revert_country_code_on_cellular_loss">false</bool>

    <!-- Boolean indicating whether or not wifi should turn off when emergency call is made -->
    <bool translatable="false" name="config_wifi_turn_off_during_emergency_call">true</bool>

    <!-- Configure wifi tcp buffersizes in the form:
         rmem_min,rmem_def,rmem_max,wmem_min,wmem_def,wmem_max -->
    <string name="config_wifi_tcp_buffers" translatable="false">524288,2097152,8388608,262144,524288,4194304</string>

    <!-- Enable ACS (auto channel selection) for Wifi hotspot (SAP) -->
    <bool translatable="false" name="config_wifi_softap_acs_supported">true</bool>

    <!-- Enable 802.11ac for Wifi hotspot (SAP) -->
    <bool translatable="false" name="config_wifi_softap_ieee80211ac_supported">true</bool>

    <!-- True if the firmware supports connected MAC randomization -->
    <bool name="config_wifi_connected_mac_randomization_supported">true</bool>
    <bool name="config_wifiAllowNonPersistentMacRandomizationOnOpenSsids">true</bool>

    <!-- True if the firmware supports p2p MAC randomization -->
    <bool name="config_wifi_p2p_mac_randomization_supported">true</bool>

    <!-- True if the firmware supports ap MAC randomization -->
    <bool name="config_wifi_ap_mac_randomization_supported">true</bool>

    <!-- True if the firmware supports Wi-Fi link probing -->
    <bool name="config_wifi_link_probing_supported">true</bool>

    <!-- Indicates that a full bugreport should be triggered when wifi diagnostics detects an error on non-user (i.e debug) builds -->
    <bool translatable="false" name="config_wifi_diagnostics_bugreport_enabled">true</bool>

    <!-- Default access point SSID used for tethering -->
    <string name="wifi_tether_configure_ssid_default" translatable="false">Pixel</string>

    <!-- Integer indicating maximum hardware supported client number of soft ap -->
    <integer translatable="false" name="config_wifiHardwareSoftapMaxClientCount">32</integer>

    <!-- Array indicating wifi fatal firmware alert error code list from driver -->
    <array translatable="false" name="config_wifi_fatal_firmware_alert_error_code_list">
        <item>1</item>      <!-- ALERT_TX_STALL -->
        <item>2</item>      <!-- ALERT_RX_STALL -->
        <item>3</item>      <!-- ALERT_IOCTL_TIMEOUT -->
        <item>8</item>      <!-- ALERT_FW_QUEUE_STALL -->
    </array>

    <!-- Integer delay in milliseconds before set wlan interface up during watchdog recovery -->
    <integer name="config_wifi_framework_recovery_timeout_delay">3000</integer>

    <!-- Number of self recoveries to be attempted per hour. Any fatal errors beyond this will
         cause the wifi stack to turn wifi off and wait for user input.
         Set to 0 to turn off recovery attempts and always turn off wifi on failures -->
    <integer translatable="false" name="config_wifiMaxNativeFailureSelfRecoveryPerHour">10</integer>

    <!-- Wifi driver supports IEEE80211AX for softap -->
    <bool translatable="false" name="config_wifiSoftapIeee80211axSupported">true</bool>

      <!-- Indicates that 11ax mode is supported on this device
           Note that if this flag is set to true, then 11ax is assumed to be supported.
           However, if it is left to the default value of false, the 11ax support will
           be checked via NL80211 interface -->
    <bool translatable="false" name="config_wifi11axSupportOverride">true</bool>

    <!-- Wifi driver supports WPA3 Simultaneous Authentication of Equals (WPA3-SAE) for softap -->
    <bool translatable="false" name="config_wifi_softap_sae_supported">true</bool>

    <!-- Override channel utilization estimation with fixed value, disabled in brcm-based pixels -->
    <bool translatable="false" name="config_wifiChannelUtilizationOverrideEnabled">false</bool>

    <!-- Enable adding minimum confirmation duration when sending network score to connectivity service. -->
    <bool translatable="false" name="config_wifiMinConfirmationDurationSendNetworkScoreEnabled">true</bool>

    <!-- Enable concurrent STA + STA peer to peer + internet connectivity -->
    <bool translatable="false" name="config_wifiMultiStaLocalOnlyConcurrencyEnabled">true</bool>

    <!-- Enable concurrent STA + STA MBB support -->
    <bool translatable="false" name="config_wifiMultiStaNetworkSwitchingMakeBeforeBreakEnabled">true</bool>

    <!-- Enable concurrent Bridged access point (AP) support -->
    <bool translatable="false" name="config_wifiBridgedSoftApSupported">true</bool>

    <!-- Enable concurrent STA + Bridged access point (AP) support -->
    <bool translatable="false" name="config_wifiStaWithBridgedSoftApConcurrencySupported">true</bool>

    <!-- Indicates that SAE Hash-to-Element is supported on this device -->
    <bool translatable="false" name="config_wifiSaeH2eSupported">true</bool>

    <!-- Enable the default coex channel avoidance algorithm and disable the functionality of
         WifiManager#setCoexUnsafeChannels. -->
    <bool translatable="false" name="config_wifiDefaultCoexAlgorithmEnabled">true</bool>

    <!-- If the default coex channel avoidance algorithm is enabled, then avoid channels that
         conflict with GPS L1. -->
    <bool translatable="false" name="config_wifiCoexForGpsL1">true</bool>

    <!-- The distance in KHz between Wi-Fi-based interference and GPS L1 that is considered unsafe. -->
    <integer translatable="false" name="config_wifiCoexGpsL1ThresholdKhz">10000</integer>

    <!-- Whether to use the explicit vendor HAL API: IWifiStaIface.setRoamingState for disabling fw roaming. -->
    <bool translatable="false" name="config_wifiUseHalApiToDisableFwRoaming">true</bool>

    <!-- Indicate the driver doesn't support NL80211 Reg changed event -->
    <bool translatable="false" name="config_wifiDriverSupportedNl80211RegChangedEvent">false</bool>

    <!-- Indicate whether the verbose logging is always on -->
    <!-- 0: verbose logging controlled by user
         1: verbose logging on by default for userdebug
         2: verbose logging on by default for all builds -->
    <integer translatable="false" name="config_wifiVerboseLoggingAlwaysOnLevel">1</integer>

    <!-- Enable aggregation of Wifi link layer radio stats from all radios -->
    <bool translatable="false" name="config_wifiLinkLayerAllRadiosStatsAggregationEnabled">true</bool>

    <!-- Enable WPA2 to WPA3 auto-upgrade offload to capable Driver/Firmware -->
    <bool translatable="false" name="config_wifiSaeUpgradeOffloadEnabled">true</bool>

    <!-- Boolean indicating whether DTIM multiplier configuration is enabled. DTIM multiplier value
        is when the system is in the suspended mode -->
    <bool translatable="false" name="config_wifiDtimMultiplierConfigEnabled">true</bool>

    <!-- Enable the feature of adjusting link layer stats polling interval based on
    device mobility state and client mode RSSI monitoring. -->
    <bool translatable="false" name="config_wifiAdjustPollRssiIntervalEnabled">true</bool>

    <!-- Boolean indicating whether the framework updates country from scan results when there is
         no telephony country code. This is applied to all generic cases and might require the
         regulatory approval (for example, FCC pre-approval is required according to "594280 D01
         Software Configuration Control v02r01").-->
    <bool translatable="false" name ="config_wifiUpdateCountryCodeFromScanResultGeneric">true</bool>

    <!-- Boolean indicating performing a partial initial scan is enabled -->
    <bool translatable="false" name="config_wifiEnablePartialInitialScan">true</bool>

    <!-- Configure the max number of new channels to add into the initial partial scan list per network.
         If equals to 0, it means there's no limit on the max number of channels to include per network.-->
    <integer translatable="false" name="config_wifiInitialPartialScanMaxNewChannelsPerNetwork">3</integer>

    <!-- Boolean indicating whether to disable firmware roaming when the device goes into idle mode.
         true: firmware roaming will be disabled when the device goes into idle mode, and then
               re-activated when the device exits idle mode.
         false: firmware roaming will not be affected. -->
    <bool translatable="false" name ="config_wifiDisableFirmwareRoamingInIdleMode">true</bool>

</resources>
