1. 22 Mar, 2014 1 commit
    • Nitin Arora's avatar
      DO NOT MERGE Allow simultaneous LE Observe and BTM Inquiry/Scan · f4471c7e
      Nitin Arora authored
      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
      f4471c7e
  2. 19 Mar, 2014 1 commit
  3. 12 Mar, 2014 1 commit
  4. 11 Mar, 2014 1 commit
  5. 10 Mar, 2014 2 commits
  6. 09 Mar, 2014 8 commits
  7. 08 Mar, 2014 11 commits
    • Zhihai Xu's avatar
      DO NOT MERGE trouble syncing with fitbit and can't turn off bluetooth. · 91f01220
      Zhihai Xu authored
      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
      91f01220
    • Zhihai Xu's avatar
      DO NOT MERGE BLE stack doesn't handle multiple l2cap_conn_update requests · 6e8d7890
      Zhihai Xu authored
      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
      6e8d7890
    • Zhihai Xu's avatar
      DO NOT MERGE sometime the BLE connection parameter isnot updated for the first time · 61973be6
      Zhihai Xu authored
      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
      61973be6
    • Zhihai Xu's avatar
      DO NOT MERGE BLE HID device connection failure due to security error. · b9912730
      Zhihai Xu authored
      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
      b9912730
    • Zhihai Xu's avatar
      DO NOT MERGE Remove the device from le backgrond connection whitelist when it's unpaired · ae6028ad
      Zhihai Xu authored
      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
      ae6028ad
    • Zhihai Xu's avatar
      DO NOT MERGE BLE Secuity manager state machine generate wrong pairing success event. · 1918cdd2
      Zhihai Xu authored
       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
      1918cdd2
    • Zhihai Xu's avatar
      DO NOT MERGE fix a potential native crash during bluetooth sutdown · 5a79e080
      Zhihai Xu authored
      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
      5a79e080
    • Zhihai Xu's avatar
      DO NOT MERGE the HID device state is out of sync after upair. · 35f6b7f3
      Zhihai Xu authored
      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
      35f6b7f3
    • Zhihai Xu's avatar
      DO NOT MERGE Can only support two HID report instance for BLE HID. · fb10ec3a
      Zhihai Xu authored
      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
      fb10ec3a
    • Zhihai Xu's avatar
      DO NOT MERGE read report array out of boundary for BLE HID device. · fb1552a2
      Zhihai Xu authored
      report array out of boundary when read HID report reference
      descriptor for BLE HID device.
      
      bug:12208657
      Change-Id: Ic60fd7555045f367b4fcd606510f52f60e36995e
      fb1552a2
    • Zhihai Xu's avatar
      DO NOT MERGE need to increase maximum number HID report for HOGP · bb384975
      Zhihai Xu authored
      The Mat mouse have more than 10 report (11),
      which exceed our limitation
      
      bug:12214036
      Change-Id: Id578bf7959f73dc3bd57664eccf49ab5580ec76b
      bb384975
  8. 06 Mar, 2014 2 commits
    • Sunny Kapdi's avatar
      DO NOT MERGE Bluetooth: Cleanup bt_config.xml during BLE Scan · aefcb184
      Sunny Kapdi authored
      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 377cb140)
      
      Change-Id: I3fa0286c96782822a8fdac14b05bbb6f98636e50
      aefcb184
    • Andre Eisenbach's avatar
      DO NOT MERGE LE: Add service UUIDs and data to advertising data · b74fe9e2
      Andre Eisenbach authored
      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
      b74fe9e2
  9. 12 Nov, 2013 2 commits
  10. 11 Nov, 2013 1 commit
    • Zhihai Xu's avatar
      BLE is disconnected due to BLE service record discovery failure. · 72658f48
      Zhihai Xu authored
      the root cause of the problem is:
      In BLE GATT client state machine, When It is in discovery state,
      any command to access the service, characteristic and descriptor
      will be queued, these commands will be executed after BLE service
      discovery complete. When we queue the command, we will copy these
      message. The problem is we didn't copy these message correctly.
      We didn't deep copy these messages. There are pointers inside
      these messages. These pointers are still point to the old message
      which are already freed. When the messages are reused, the original
      content will lost. The queued commands will be corrupted.
      This is very serious issue, which can cause a lot of stability problem.
      
      bug:11620252
      Change-Id: I93082a9dbcc3a676f5f791c2b1ea98e49b165813
      72658f48
  11. 08 Nov, 2013 1 commit
  12. 07 Nov, 2013 7 commits
  13. 06 Nov, 2013 2 commits