===============================================================================
            U S E R  M A N U A L for Robust BT-WLAN coex (RBC)

 Copyright 2014-2020 NXP

===============================================================================

###############################

# Abbreviations and acronyms

###############################
RBC - Robust BT-WLAN co-existence
TMD - Time Distribute
SMPS - Spatial Multiplexing Power Save

###############################

# Default RBC modes:

###############################
1.  For systems where BT and WLAN have seperate antennas, RBC mode is
    automatically disabled in FW after detecting this from FEM cal data. e.g.
    For 1x1 Dual-Ant system and 2x2 3-Ant system RBC mode is disabled.
2.  For systems where BT and WLAN share an antenna, RBC mode is automatically
    enabled in FW after detecting this from FEM cal data.
    Default modes:
    1x1 single antenna system: TMD RBC
    2x2 2-antenna system: 1x1 SMPS RBC


#################################

# 2x2 2-antenna system RBC modes

#################################
There are three mutually exclusive RBC modes for a 2x2 system.
The default RBC mode is 1x1 SMPS RBC. The required RBC mode must be
configured before starting uAP or associating in-STA. The mode cannot be
changed dynamically when any of these connections is active. The modes are
described below:
1.  1x1 SMPS RBC mode: WLAN switches to 1x1 FEM when BT is turned on. Also,
    in-STA goes to SMPS mode w.r.t. ext-AP. When BT is turned off, WLAN
    switches back to 2x2 FEM setting and in-STA moves out of SMPS.
    uAP starts bss with only 1-stream even BT is off because it cannot
    dynamically move between 1-stream and 2-stream rates like in-STA. To start
    uAP with 2-stream, RBC mode has to be disabled.
2.  1x2 SMPS RBC mode: Similar as 1x1 SMPS RBC mode. WLAN switches to 1x2 FEM
    when BT is turned on. In this mode, it is expected that when BT is not
    actively transmitting, WLAN can receive on both the antennas to enhance
    the range. Note that 1-stream rates are used for receive and transmit.
3.  2x2 TMD RBC mode: WLAN uses 2x2 antenna setting and timeshares the antenna
    with BT.

###############################

# RBC mode select:

###############################

User can use robust_btc.conf and hostcmd to select different RBC mode:

hostcmd mode_get
hostcmd mode_timeshare
hostcmd mode_spatial
    This command is used to get/set Robust BT Coex.
    mode_get:       get the current mode
    mode_timeshare: set Robust BT Coex to timeshare mode  (default on 1x1 chips)
    mode_spatial:   set Robust BT Coex to spatial mode    (only for, and default on 2x2 chips)

    Usage:
        mlanconfig mlanX hostcmd config/robust_btc.conf mode_get
        mlanconfig mlanX hostcmd config/robust_btc.conf mode_timeshare
        mlanconfig mlanX hostcmd config/robust_btc.conf mode_spatial

hostcmd gpio_cfg
    This command is used to enable/disable GPIO cfg.
    gpio_cfg: enable/disable GPIO cfg for external bt request  (default is enable with High Polarity)

    Usage:
        mlanconfig mlanX hostcmd config/robust_btc.conf gpio_cfg

hostcmd generictime
hostcmd a2dptime
hostcmd inquirytime
hostcmd ap_generictime
hostcmd ap_a2dptime
hostcmd ap_inquirytime
        This command is used to configure the time slice of COEX (only works in timeshare mode)
        generictime:       configure the Bttime and Wlantime in Station Generic case
        a2dptime:          configure the Bttime and Wlantime in Station A2DP case
        inquirytime:       configure the Bttime and Wlantime in Station Inquiry case
        ap_generictime:    configure the Bttime and Wlantime in Ap Generic case
        ap_a2dptime:       configure the Bttime and Wlantime in Ap A2DP case
        ap_inquirytime:    configure the Bttime and Wlantime in Ap Inquiry case

    Usage:
                mlanutl mlanX hostcmd config/robust_btc.conf generictime
                mlanutl mlanX hostcmd config/robust_btc.conf a2dptime
                mlanutl mlanX hostcmd config/robust_btc.conf inquirytim
                mlanutl mlanX hostcmd config/robust_btc.conf ap_generictime
                mlanutl mlanX hostcmd config/robust_btc.conf ap_a2dptime
                mlanutl mlanX hostcmd config/robust_btc.conf ap_inquirytime

hostcmd external_coex_uart_gpio_config
       This command is used to configure the UART+GPIO external coex mode with following parameters
       Enabled:                configure the feature and ouutput on GPIO 0x00 disable, 0x07 enable
       ExtCoexHwIntWci2:       Enable UART for coex interface 0x00 disable, 0x01 enable

    Usase:
       mlanutl mlanX hostcmd config/robust_btc.conf external_coex_uart_gpio_config

