• Andre Guedes's avatar
    Bluetooth: Introduce LE auto connection infrastructure · a4790dbd
    Andre Guedes authored
    This patch introduces the LE auto connection infrastructure which
    will be used to implement the LE auto connection options.
    
    In summary, the auto connection mechanism works as follows: Once the
    first pending LE connection is created, the background scanning is
    started. When the target device is found in range, the kernel
    autonomously starts the connection attempt. If connection is
    established successfully, that pending LE connection is deleted and
    the background is stopped.
    
    To achieve that, this patch introduces the hci_update_background_scan()
    which controls the background scanning state. This function starts or
    stops the background scanning based on the hdev->pend_le_conns list. If
    there is no pending LE connection, the background scanning is stopped.
    Otherwise, we start the background scanning.
    
    Then, every time a pending LE connection is added we call hci_update_
    background_scan() so the background scanning is started (in case it is
    not already running). Likewise, every time a pending LE connection is
    deleted we call hci_update_background_scan() so the background scanning
    is stopped (in case this was the last pending LE connection) or it is
    started again (in case we have more pending LE connections). Finally,
    we also call hci_update_background_scan() in hci_le_conn_failed() so
    the background scan is restarted in case the connection establishment
    fails. This way the background scanning keeps running until all pending
    LE connection are established.
    
    At this point, resolvable addresses are not support by this
    infrastructure. The proper support is added in upcoming patches.
    Signed-off-by: default avatarAndre Guedes <andre.guedes@openbossa.org>
    Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
    a4790dbd
hci_event.c 93.6 KB