Bluedroid 4.4.3 merge test commit

Squashed commit of the following:

commit f4471c7e6ca7a0bd4846b2fe4fbe78d79ef37b81
Author: Nitin Arora <niarora_qca@codeaurora.org>
Date:   Fri Feb 21 18:20:37 2014 -0800

    DO NOT MERGE Allow simultaneous LE Observe and BTM Inquiry/Scan

    This patch allows BTM inquiry and LE observe to be launched
    and overlap each others' occurance by redirecting results
    and handling states accordingly.

    CRs-Fixed: 579505

    Conflicts:
    	stack/btm/btm_ble_gap.c
    bug 12939764

    Change-Id: Ifde73f17f8d40e9ebfff3b49e409591189574ee0

commit a4611ac05f07360785adcff8640da01a3894e4c5
Author: Andre Eisenbach <andre@broadcom.com>
Date:   Wed Mar 5 15:41:53 2014 -0800

    DO NOT MERGE: cherrypick from master to fix b/13289050

    LE: Add status callback function for LE broadcasts

    Change-Id: If4342050ce1141a9c2111286e7b3cccdc012a91e

commit 07ea194ac2518e98961632c4d1909f0af0809ea9
Merge: f677f81 ad73b9c
Author: Zhihai Xu <zhihaixu@google.com>
Date:   Wed Mar 12 23:04:46 2014 +0000

    Merge "DO NOT MERGE use bluetooth HID remote device name as input device name." into klp-dev

commit ad73b9c59961a622a5ec09b22a23a93f4c7bda1b
Author: Zhihai Xu <zhihaixu@google.com>
Date:   Fri Dec 6 14:29:29 2013 -0800

    DO NOT MERGE use bluetooth HID remote device name as input device name.

    bug:12003067
    Change-Id: I74e4921047a27ee79fa1e3cd58056fde2958e60f

commit f677f81068640857f791276c472e34b08d08f3e6
Merge: 69218b1 aefcb18
Author: Matthew Xie <mattx@google.com>
Date:   Mon Mar 10 18:04:56 2014 +0000

    Merge "DO NOT MERGE Bluetooth: Cleanup bt_config.xml during BLE Scan" into klp-dev

commit 69218b169bd0ff9fdf1c5de148b3807e70de85de
Merge: 27420a0 6e8d789
Author: Zhihai Xu <zhihaixu@google.com>
Date:   Mon Mar 10 01:08:14 2014 +0000

    Merge changes I6673d478,I953b9ca6 into klp-dev

    * changes:
      DO NOT MERGE BLE stack doesn't handle multiple l2cap_conn_update requests
      DO NOT MERGE sometime the BLE connection parameter isnot updated for the first time

commit 27420a0327c04ce9407d2fe9138dde7f6dfe94e0
Merge: 14b75b7 b991273
Author: Zhihai Xu <zhihaixu@google.com>
Date:   Sun Mar 9 19:08:59 2014 +0000

    Merge "DO NOT MERGE BLE HID device connection failure due to security error." into klp-dev

commit 14b75b785b730f95ddccfc7a31b048ed0277c96b
Merge: 87f26bc ae6028a
Author: Zhihai Xu <zhihaixu@google.com>
Date:   Sun Mar 9 19:08:35 2014 +0000

    Merge "DO NOT MERGE Remove the device from le backgrond connection whitelist when it's unpaired" into klp-dev

commit 87f26bcdd92ea462266caf539edb4174834cac17
Merge: ea8acc9 1918cdd
Author: Zhihai Xu <zhihaixu@google.com>
Date:   Sun Mar 9 19:08:05 2014 +0000

    Merge "DO NOT MERGE BLE Secuity manager state machine generate wrong pairing success event." into klp-dev

commit ea8acc971f7c01427fd239e54344b43ac1a31e1c
Merge: 1e0849e 5a79e08
Author: Zhihai Xu <zhihaixu@google.com>
Date:   Sun Mar 9 19:07:33 2014 +0000

    Merge "DO NOT MERGE fix a potential native crash during bluetooth sutdown" into klp-dev

commit 1e0849e99bdd716b7e172269cdad1d78b60a7ded
Merge: 30466df 35f6b7f
Author: Zhihai Xu <zhihaixu@google.com>
Date:   Sun Mar 9 19:07:17 2014 +0000

    Merge "DO NOT MERGE the HID device state is out of sync after upair." into klp-dev

commit 30466dfd399b787ab0fca166b842c280d28feebf
Merge: 7a528bc fb10ec3
Author: Zhihai Xu <zhihaixu@google.com>
Date:   Sun Mar 9 19:06:38 2014 +0000

    Merge "DO NOT MERGE Can only support two HID report instance for BLE HID." into klp-dev

commit 7a528bc860c349b9d6ae6f8d6c86d54f9448cb0e
Merge: 7a6fad8 fb1552a
Author: Zhihai Xu <zhihaixu@google.com>
Date:   Sun Mar 9 19:05:49 2014 +0000

    Merge "DO NOT MERGE read report array out of boundary for BLE HID device." into klp-dev

commit 7a6fad896244a387901572f70b1ce3471712ae34
Merge: 91f0122 bb38497
Author: Zhihai Xu <zhihaixu@google.com>
Date:   Sun Mar 9 19:05:37 2014 +0000

    Merge "DO NOT MERGE need to increase maximum number HID report for HOGP" into klp-dev

commit 91f012208070d71e6e9e0f38aa36e78e99f2ff4e
Author: Zhihai Xu <zhihaixu@google.com>
Date:   Tue Jan 14 17:46:26 2014 -0800

    DO NOT MERGE trouble syncing with fitbit and can't turn off bluetooth.

    this is to work around broadcom firmware problem to handle
    unsolicited command complete event for HCI_LE_Create_Connection_Cancel
    and LE connection complete event with status error code (0x2)
    unknown connection identifier from bluetooth controller
    the workaround is to release the HCI connection to avoid out of sync
    with bluetooth controller, which cause BT can't be turned off.

    bug:11614046
    Change-Id: Ia5c5ad0c6c9b1a4f03253cac8a7caaf21341c88c

commit 6e8d78906338d2d961d7e4356ce4978fd58e5e63
Author: Zhihai Xu <zhihaixu@google.com>
Date:   Tue Dec 17 20:33:09 2013 -0800

    DO NOT MERGE BLE stack doesn't handle multiple l2cap_conn_update requests

    we can define 4 bits as flags:
    1. L2C_BLE_CONN_UPDATE_DISABLE:
    if set it means disable update connection parameter. otherwise enable
    2.L2C_BLE_NEW_CONN_PARAM:
    if set, it means we have new connection parameter which is needed to be configured
    if possible(after update done or enable).
    3.L2C_BLE_UPDATE_PENDING:
    if set, it means waiting for connection parameter update finished.
    this flag will be cleared in btu_ble_ll_conn_param_upd_evt.
    will be set when we call btsnd_hcic_ble_upd_ll_conn_params
    4.L2C_BLE_NOT_DEFAULT_PARAM:
    if set, it means we don't use the default connection parameter.
    so when we disable update,
    we need to configure default connection parameter.
    with these 4 flags, we can replace all these states:
    UPD_ENABLED, UPD_DISABLED, UPD_PENDING and UPD_UPDATED.
    so we can cover all the corner cases which aren't handled
    by original code.

    bug:11450715
    Change-Id: I6673d4783a8063bf9e8a213c6669800f86e67945

commit 61973be637027a4e91b99ca3e19fe964481936b2
Author: Zhihai Xu <zhihaixu@google.com>
Date:   Sat Nov 16 17:07:38 2013 -0800

    DO NOT MERGE sometime the BLE connection parameter isnot updated for the first time

    When we receive the BLE connection parameter update
    from remote device after smp_send_pair_req before
    start BLE service discovery(bta_gattc_set_discover_st).
    We will miss update this BLE connection parameter.
    The reason is we call
    L2CA_EnableUpdateBleConnParams(p_cb->pairing_bda, FALSE);
    in smp_send_pair_req ,We change the state to UPD_DISABLED.

    When we receive the new BLE connection parameter from
    remote device, we will update the state to UPD_PENDING,
    which will update the new connection parameter
    when enable the connection parameter update.

    when we start BLE service discovery
    we call L2CA_EnableUpdateBleConnParams(p_srcb->server_bda, FALSE);
    in bta_gattc_set_discover_st, We will update the state back to
     UPD_DISABLED, which will cause we miss updating
    the new connection parameter when enable the connection parameter update.

    The fix is don't change the state to UPD_DISABLED
    when the state is UPD_PENDING for disabling.

    bug:11727252
    Change-Id: I953b9ca669e3460e18b340e7779cc54e03d6305b

commit b9912730d082c7bca7d94bb9ddac4447cfad362f
Author: Zhihai Xu <zhihaixu@google.com>
Date:   Tue Nov 12 20:18:37 2013 -0800

    DO NOT MERGE BLE HID device connection failure due to security error.

    When HID BLE device start encryption, if some other GATT application
    already start encryption(but not finished yet) by calling
    gatt_security_check_start. The HID BLE device will be failed to start
    encryption, which will cause it to disconnect the BLE HID connection.
    The solution is to check whether we already started the encryption
    , If the encryption is already started, wait until the encryption
    finished, then continue to start security check for BLE HID device.
    add encrytion complete event to notify all GATT client encryption done.
    filter the event just for BTA HH LE GATT client.

    bug:11636246
    Change-Id: If58e57c623cc8cfa05208587b010bec68c71306c

commit ae6028ad26ef92f14dccaf3ea03fe07837ce50fd
Author: Zhihai Xu <zhihaixu@google.com>
Date:   Fri Nov 15 17:55:46 2013 -0800

    DO NOT MERGE Remove the device from le backgrond connection whitelist when it's unpaired

    this is due to we didn't remove the device from the white list before unpair
    Which cause a fake pair request from remote device triggered
    right after the acl is disconnected.
    The fix is to remove the BLE device from whitelist before unpair.
    Also fix a problem return wrong device handle from bta_hh_le_add_device.

    if bta_hh_le_add_device is called right after reboot, before we connect HID device.
    This is normally true for a previous paired device, which we saved in the nvram.
    The wrong device handle will cause the removing HID device from while list failed
    after unpair the HID device.

    bug:11676338
    Change-Id: Id5b45b2829da9a990dfd1dbae0c15764b16c2bfb

commit 1918cdd2b8d741a4556f5d5b20835fb2561c65b3
Author: Zhihai Xu <zhihaixu@google.com>
Date:   Fri Nov 15 18:57:28 2013 -0800

    DO NOT MERGE BLE Secuity manager state machine generate wrong pairing success event.

     we call smp_proc_release_delay to setup a timer.
    We will send a pair failure message to uplayer after the time expired.
    Right before the time expire, the l2cap connection is disconnected
    from remote device, we receive L2C_DISC, which will call smp_delay_terminate,
     smp_delay_terminate will send a pair success message to uplayer.
    The fix is not to change the status if the remote device disconnect the link

    bug:11716967
    Change-Id: I8ca63599a170ec86913785aafea552301cec37df

commit 5a79e080ef667e7c623ef46da6086915087c7488
Author: Zhihai Xu <zhihaixu@google.com>
Date:   Mon Nov 25 17:30:59 2013 -0800

    DO NOT MERGE fix a potential native crash during bluetooth sutdown

    When bluetooth is initialized which call gki_buffer_init,
    the buffer pool is allocated by GKI_os_malloc which is
    to call libc malloc function.
    When bluetooth is cleanup which call GKI_shutdown,
    the buffer pool will be  freed by GKI_os_free
    which is to call libc free function.
    So if we access the buffer, after the whole buffer pool is freed,
    we will get this native crash.
    if we call cleanup during bluetooth disabling:
    the state is still BTIF_CORE_STATE_DISABLING,
    then GKI_shutdown will call before bte_main_disable
    ( bt_hc_if->cleanup();), which is  before userial thread exit.
    Then we may trigger this native crash.

    bug:11793775
    Change-Id: Ic8ced12848d25f918a28f4d5ba29b803d6ac5bd7

commit 35f6b7f3f8b483065e9d97c18542286818e02544
Author: Zhihai Xu <zhihaixu@google.com>
Date:   Fri Nov 15 21:18:25 2013 -0800

    DO NOT MERGE the HID device state is out of sync after upair.

    the HID device state is out of sync between java layer and bluedroid stack after upair.
    This will cause the HID device can't be connected after repair.
    YOu can find the following error message
    E/HidService( 1452): Hid Device not disconnected: 00:15:9E:20:29:41

    bug:11718702
    Change-Id: I271bb77a2cc205c5a0ef396db86b87902d29966b

commit fb10ec3af9a0c690d2fbfe50c31821a7e242a26e
Author: Zhihai Xu <zhihaixu@google.com>
Date:   Wed Dec 18 14:51:52 2013 -0800

    DO NOT MERGE Can only support two HID report instance for BLE HID.

    The follwoing code cause this problem:
    BTA_HH_LE_RPT_INST_ID_MAP(s,c)=(UINT8)(((s)<<4)||(c))
    The code use || instead of |, this cause we can only generate
    two instance HID report 0 and 1(false and true).

    bug:12213520
    Change-Id: If6b7cfd9633255401aef12aafd918ee147f256b6

commit fb1552a28f067ff4af23d24a79949cb8ff309bc0
Author: Zhihai Xu <zhihaixu@google.com>
Date:   Wed Dec 18 10:06:13 2013 -0800

    DO NOT MERGE read report array out of boundary for BLE HID device.

    report array out of boundary when read HID report reference
    descriptor for BLE HID device.

    bug:12208657
    Change-Id: Ic60fd7555045f367b4fcd606510f52f60e36995e

commit bb384975d68a2a00e4a212bd905ece9996cfe587
Author: Zhihai Xu <zhihaixu@google.com>
Date:   Wed Dec 18 18:10:26 2013 -0800

    DO NOT MERGE need to increase maximum number HID report for HOGP

    The Mat mouse have more than 10 report (11),
    which exceed our limitation

    bug:12214036
    Change-Id: Id578bf7959f73dc3bd57664eccf49ab5580ec76b

commit aefcb184639ff24bf294dfa4f91bd22202d1f93e
Author: Sunny Kapdi <sunnyk@codeaurora.org>
Date:   Wed Nov 20 14:41:41 2013 -0800

    DO NOT MERGE Bluetooth: Cleanup bt_config.xml during BLE Scan

    BLE Scan needs to clean up the bt_config.xml periodically so that
    new entries could be added to bt_config.xml. Also, there is no
    need to add BLE Random bd_addr to the bt_config.xml

    Change-Id: I00ba2e50dd39a021099052cb569786f6cb2cc8b9

    b/12912008
    (cherry picked from commit 377cb1407ee6ee1ff91b15bfa7052abed1023d18)

    Change-Id: I3fa0286c96782822a8fdac14b05bbb6f98636e50

commit b74fe9e2c9fc0939f5c18282c985622f20b78d2a
Author: Andre Eisenbach <andre@broadcom.com>
Date:   Fri Nov 8 10:23:52 2013 -0800

    DO NOT MERGE LE: Add service UUIDs and data to advertising data

    Add support for UUIDs and custom service data in the advertising and
    scan response records.

    Cherry picking ble advertising changes from master to KLP MR2.
    b/13137996

    Change-Id: I6470427ad194871488cc90f3ab384b9ecf326b15

Change-Id: I42a7ae8a072644752ba9b9a8d3a19d3ae9c6ddba
Signed-off-by: Josue Rivera <prbassplayer@gmail.com>