OSDN Git Service

android-x86/system-bt.git
6 years agoCancel LE Advertising related timers during shutdown
Hemant Gupta [Fri, 26 Jan 2018 19:37:48 +0000 (19:37 +0000)]
Cancel LE Advertising related timers during shutdown
am: c3049d6b6c

Change-Id: I6d5d4200e16dc2aec4e50a459cd01e61640f3318

6 years agoUse weak pointer when refering to AdvertisingManager
Jakub Pawlowski [Fri, 26 Jan 2018 19:37:39 +0000 (19:37 +0000)]
Use weak pointer when refering to AdvertisingManager
am: ce0d65f4b9

Change-Id: Ic1ec6e485cf9f66f6dd134a3757a93c4a1ff1521

6 years agoCancel LE Advertising related timers during shutdown
Hemant Gupta [Tue, 23 Jan 2018 00:54:33 +0000 (16:54 -0800)]
Cancel LE Advertising related timers during shutdown

Failure to cancel advertising timers might lead to them being executed
after AdvertisingManager is destroyed.

Test: ran all advertising tests, no regression
Fixes: 71051865
Change-Id: I4431f5e0fe82501dbdbb9ca816eb092dde7c9436

6 years agoUse weak pointer when refering to AdvertisingManager
Jakub Pawlowski [Thu, 25 Jan 2018 18:53:57 +0000 (10:53 -0800)]
Use weak pointer when refering to AdvertisingManager

In btif layer, we schedule tasks for execution on
AdvertisingManager on bta thread. Before the scheduling we check if
AdvertisingManager is initialized. We don't check if AdvertisingManager
is still valid, when the command execution is starting on the bta thread.
This is a race condition, that can cause crashes.

To fix that, always post task for execution using weak reference, rather
than raw pointer. Thanks to it, the MessageLoop will check if the
weak_ptr is valid before attempt to execute the task. The check happens
on the target thread, right before the execution, eliminating all
possible race conditions.

Test: ran all advertising tests, no regression
Bug: 71051865
Change-Id: I7fd8255879d5272d47aa79974bb79bdaacb55800

6 years agoMerge "Fixed L2CAP Buffer Length when transmit packets"
Jakub Pawlowski [Thu, 25 Jan 2018 22:53:15 +0000 (22:53 +0000)]
Merge "Fixed L2CAP Buffer Length when transmit packets"
am: 935513cbab

Change-Id: I84dd547ead33d9099ea5265a8685f137781371fa

6 years agoMerge "Fixed L2CAP Buffer Length when transmit packets"
Jakub Pawlowski [Thu, 25 Jan 2018 22:37:16 +0000 (22:37 +0000)]
Merge "Fixed L2CAP Buffer Length when transmit packets"

6 years agoFixed L2CAP Buffer Length when transmit packets
Stanley Tng [Thu, 25 Jan 2018 19:40:35 +0000 (11:40 -0800)]
Fixed L2CAP Buffer Length when transmit packets

Fixed the problem of the L2CAP buffer length is incorrect than blasting
multiple small data packets from java layer. The buffer length should be
what is actually read rather than what is possible to be read.

Test: Ran the new ACTS Tests for LE CoC
Bug: 70683224
Change-Id: I6cf4d465a41e4e936420f76b49ce2dbda20d41fb

6 years agoDon't pack and align GATT structs
Zach Johnson [Thu, 25 Jan 2018 16:46:36 +0000 (16:46 +0000)]
Don't pack and align GATT structs
am: 1eda2929c9

Change-Id: Iffeb0f1a7c85d194dcefbcaa8353918fa6f09916

6 years agoDon't pack and align GATT structs
Zach Johnson [Thu, 25 Jan 2018 02:22:14 +0000 (18:22 -0800)]
Don't pack and align GATT structs

Causes BUS_ADRALEN on some architectures.

Change-Id: I50c2e1b4ef81fa8cd223cba09285099da8d7f67d
Fixes: 70571956
Test: 100% repro on bug before change, retest and 0% repro

6 years agoGet rid of BTA_SYS_DM - use do_in_bta_thread instead
Jakub Pawlowski [Wed, 24 Jan 2018 20:55:22 +0000 (20:55 +0000)]
Get rid of BTA_SYS_DM - use do_in_bta_thread instead
am: 0d4868040f

Change-Id: I3ce30945bd3127204161d81d3a9bf3dafeb77a0a

6 years agoGet rid of BTA_SYS_DM - use do_in_bta_thread instead
Jakub Pawlowski [Tue, 23 Jan 2018 20:46:07 +0000 (12:46 -0800)]
Get rid of BTA_SYS_DM - use do_in_bta_thread instead

Test: Bond, change device name, scan for classic devices
Change-Id: If8d95976c4bb9ee6f346682590285cfc9d163ff5

6 years agoHFP: Add support for Multi-HFP (2/2)
Jack He [Wed, 24 Jan 2018 19:42:43 +0000 (19:42 +0000)]
HFP: Add support for Multi-HFP (2/2)
am: ca7d6f5912

Change-Id: Ia80e37d828827b70cab4465b8d9044dd463ee8a3

6 years agoHFP: Add support for Multi-HFP (2/2)
Jack He [Wed, 10 Jan 2018 10:34:05 +0000 (02:34 -0800)]
HFP: Add support for Multi-HFP (2/2)

* Allocate at most 6 control blocks for btif_hf and bta_ag,
  this limit is defined by BTA_AG_MAX_NUM_CLIENTS
* Allow at most 6 RFCOMM connections to be managed by bta_ag
* Allow at most 6 SDP callbacks for each bta_ag
* Reject incoming SCO connection and do not start outgoing SCO
  connection if not coming from the current active device
* Reject incoming AT+BCC request if the remote device is not an active
  device
* Support only one device by default
* Fixed a bug in BTM_CreateSco where power mode was checked for old
  device and new power mode is set for new device and caused BTM SCO
  state machine to stuck in SCO_ST_PEND_UNPARK mode
* Added logs at failure conditions to be more verbose about connection
  errors and removed logs from non-error conditions to reduce verbosity
  in normal conditions

Bug: 68952570
Test: runtest -j40 bluetooth, native unit tests, HFP regression for 1
      device, simple tests for multiple devices
Change-Id: I97d20f6a126d77a4ef3a0cd1706b48130b4a6aae

6 years agoMinor improvements in LE Create Connection handling
Jakub Pawlowski [Wed, 24 Jan 2018 15:55:08 +0000 (15:55 +0000)]
Minor improvements in LE Create Connection handling
am: 659e34f343

Change-Id: I8153117afffb8b1fca50a33b3da9d23779558cbe

6 years agoMinor improvements in LE Create Connection handling
Jakub Pawlowski [Tue, 23 Jan 2018 17:07:59 +0000 (09:07 -0800)]
Minor improvements in LE Create Connection handling

1. According to spec, controller should never send "Command Complete" event
after "LE Create Connection" or "LE Extened Create Connection" command.
Add error message in such case.

2. Parse Comand Status for LE Enhanced Create Connection.

3. Fix NPE in btm_ble_update_mode_operation, when called from
btm_ble_create_ll_conn_complete.

Test: Bond/unbond with few LE devices while connected.
Change-Id: Ic135d9a8d096634afe33997afb42d054237598c2

6 years agoMerge "Allow L2CAP first packet with partial header"
Stanley Tng [Tue, 23 Jan 2018 19:42:38 +0000 (19:42 +0000)]
Merge "Allow L2CAP first packet with partial header"
am: 8535edaade

Change-Id: I6f2bbbe5a77bd393455b2af00f473e6473d0072e

6 years agoMerge "Allow L2CAP first packet with partial header"
Treehugger Robot [Tue, 23 Jan 2018 19:00:57 +0000 (19:00 +0000)]
Merge "Allow L2CAP first packet with partial header"

6 years agoRemove L2CAP_MASK_LE_COC_CHANNEL flag in channel number
Stanley Tng [Tue, 23 Jan 2018 16:39:10 +0000 (16:39 +0000)]
Remove L2CAP_MASK_LE_COC_CHANNEL flag in channel number
am: a34e9b4823

Change-Id: Ia922c148fcaa38206cb060cbba5b897b5744fed6

6 years agoRemove L2CAP_MASK_LE_COC_CHANNEL flag in channel number
Stanley Tng [Fri, 5 Jan 2018 17:25:11 +0000 (09:25 -0800)]
Remove L2CAP_MASK_LE_COC_CHANNEL flag in channel number

Cleanup the code by removing the use of L2CAP_MASK_LE_COC_CHANNEL flag
in the channel number. This flag will be passed in the proper "flags"
parameter.

Test: Ran the new ACTS Tests for LE CoC
Bug: 70683224
Change-Id: I6ed77b46e5434bca5f2501d853ae8181c7197b4c

6 years agoUse do_in_bta_thread in BTA DM layer
Jakub Pawlowski [Tue, 23 Jan 2018 16:02:50 +0000 (16:02 +0000)]
Use do_in_bta_thread in BTA DM layer
am: 154be11f74

Change-Id: I7c7b578985b5094be304f964f371601343a70a58

6 years agoUse do_in_bta_thread in BTA DM layer
Jakub Pawlowski [Mon, 22 Jan 2018 18:22:43 +0000 (10:22 -0800)]
Use do_in_bta_thread in BTA DM layer

This patch is transforming all the trivial cases, where no variable
length data is included in the event struct. Further patches will
convert the non-trivial cases.

Bug: none
Test: scan, connect, set name, remove device
Change-Id: Ia216a8a7c3bb225aedac34375ce07b109398557c

6 years agoForward Hearing Aid UUID when discovered over LE
Jakub Pawlowski [Tue, 23 Jan 2018 00:19:27 +0000 (00:19 +0000)]
Forward Hearing Aid UUID when discovered over LE
am: 35bd37d395

Change-Id: I39945939bc5e899f0000c2a8d05eedd0e61b6249

6 years agoBTE: Allocate LogMsg buffer on the stack
Gurpreet Ghai [Mon, 22 Jan 2018 19:52:42 +0000 (19:52 +0000)]
BTE: Allocate LogMsg buffer on the stack
am: 7a3819f092

Change-Id: I54c0bf8dc64ad9c11a6d745aa64f16bbde3a9f6c

6 years agoForward Hearing Aid UUID when discovered over LE
Jakub Pawlowski [Tue, 21 Nov 2017 20:21:05 +0000 (12:21 -0800)]
Forward Hearing Aid UUID when discovered over LE

This way upper layers (Settings app) can make decision whether to connect
to the profile.

Test: none
Bug: 69623109
Change-Id: I98e93ebbf7ceadd1756e4dfd0e8c4f876544b39d

6 years agoBTE: Allocate LogMsg buffer on the stack
Gurpreet Ghai [Mon, 7 Aug 2017 06:05:22 +0000 (11:35 +0530)]
BTE: Allocate LogMsg buffer on the stack

Problem:
Due to static 1k buffer in LogMsg function is leading to a crash in
btapp as this function is called from multiple threads

Steps:
A2DP streaming or similar process that performs excessive logging

Failure: Crash occurs

Root Cause:
Static buffer being accessed and updated by different threads parallelly

Fix:
Used local buffer instead of static buffer from LogMsg function

Test: manual
Fixes: 69586278
Change-Id: I037d85c1ca0e134d1fa86308d0467f88d8ea159d

6 years agoDo SDP when HSP connection starts by remote
Satish Kodishala [Mon, 22 Jan 2018 16:57:03 +0000 (16:57 +0000)]
Do SDP when HSP connection starts by remote
am: ade654f3dc

Change-Id: If3a217646b08e2f2f184d646aa9a786851481328

6 years agoDo SDP when HSP connection starts by remote
Satish Kodishala [Thu, 11 Aug 2016 04:51:48 +0000 (10:21 +0530)]
Do SDP when HSP connection starts by remote

Test: 1. Enable only HSP profile on AG.
2. Connect to AG from BT headset supporting HSP profile only with VGS
3. VOIP call (eg. skype, hangout)
4. Control the volume using AG volume keys.

Failure:
Volume changes are not taking affect.

Rootcause:
When remote is doing SDP first, HSP AG is skipping SDP.
As a result, AG is not aware if remote supports remote
volume control feature.

Fix:
Don't skip SDP when remote does SDP first. Do SDP always
so that AG could find out if remote supports remote volume
control feature.

Fixes: 35657384

Change-Id: I73707f774dc4ec53cbd510ded15f28f87659eec3

6 years agoAllow L2CAP first packet with partial header
Stanley Tng [Wed, 10 Jan 2018 17:25:40 +0000 (09:25 -0800)]
Allow L2CAP first packet with partial header

This change will allow a fragmented and first L2CAP packet that has
partial L2CAP Header to be parsed. Only the first 2 bytes of L2CAP
header are necessary for the packet assembler to work and the subsequent
bytes of the header can be in later packets.

Test: Run RfComm and LE CoC SL4A Tests. Also verify on an OTA received packet
with the partial L2CAP CoC header.
Bug: 70683224

Change-Id: I659ebbe86eab57aa9d725f7b685525b445195e5e

6 years agoHFP: Do not use data in bta_ag_start_open if data is empty
Jack He [Mon, 22 Jan 2018 09:32:49 +0000 (09:32 +0000)]
HFP: Do not use data in bta_ag_start_open if data is empty
am: 26d45dc680

Change-Id: Ic3b3cc3edcc93d2d15b2058a61373e59f9425d6d

6 years agoHFP: Do not use data in bta_ag_start_open if data is empty
Jack He [Mon, 22 Jan 2018 07:18:05 +0000 (23:18 -0800)]
HFP: Do not use data in bta_ag_start_open if data is empty

* bta_ag_start_open() should not use data when data is empty

Change-Id: Id16d8c0ca90cbecb1b54900bd7f37a6c5c467ebd
Fixes: 72164296
Bug: 72164296
Test: make, pair and connect Bluetooth devices

6 years agoHFP: Use base::Bind instead of messages for bta_ag_api functions
Jack He [Sun, 21 Jan 2018 22:57:00 +0000 (22:57 +0000)]
HFP: Use base::Bind instead of messages for bta_ag_api functions
am: 8b699d1076

Change-Id: I8bd3327c91b9e755b95245bf3400698060164fe2

6 years agoHFP: Use base::Bind instead of messages for bta_ag_api functions
Jack He [Fri, 5 Jan 2018 23:11:39 +0000 (15:11 -0800)]
HFP: Use base::Bind instead of messages for bta_ag_api functions

Summary:
* Do not use bta_sys_sendmsg(BT_HDR) in bta/ag, use base::Bind instead
* Do not use BT_HDR in bta/ag
* Do not do memcpy during thread switch in bta/ag, instead, we use the
  default copy constructor

Details:
* Currently, bta_ag_api functions use explicit messages to cross from
  jni to bta thread. This adds unnecessary indirections that make it
  hard to figure out which methods in bta actually get called
* Instead, base::Bind can bind to methods in bta directly without
  putting parameters in an explicit struct. This greatly simplify our
  code without breaking the current threading model
* With base:Bind, we no longer rely on bta_sys_sendmsg(BT_HDR) to send
  event across threads. We can therefore get rid of BT_HDR in all
  sub-types of tBTA_AG_DATA. Instead of using BT_HDR->layer_specific
  flag to pass down handle IDs, we pass down handle ID directly,
  resulting in less confusion on the actual meaning of data

Bug: 70538124
Test: runtest bluetooth, native unit tests
Change-Id: Ic0b4498dd623d0ea31b4513d6b7861cae390bc72

6 years agoOne less copy when sending LE CoC data.
Jakub Pawlowski [Sat, 20 Jan 2018 17:07:27 +0000 (17:07 +0000)]
One less copy when sending LE CoC data.
am: 8451931236

Change-Id: Ie63ed4fa3ce9848c9285c25f037bb676370fa569

6 years agoOne less copy when sending LE CoC data.
Jakub Pawlowski [Fri, 12 Jan 2018 14:22:43 +0000 (06:22 -0800)]
One less copy when sending LE CoC data.

After this patch, data is read from socket directly into BT_HDR that is
passed down the stack, rather than copying the data later.

Test: manual
Bug: 68359837
Change-Id: I3f304e6c7e60ce64b44350678d0ba10324fc97bc

6 years agoAdd Connection Event Min/Max hint to Connection Update Request
Jakub Pawlowski [Sat, 20 Jan 2018 03:47:42 +0000 (03:47 +0000)]
Add Connection Event Min/Max hint to Connection Update Request
am: c194ec1e89

Change-Id: I6ccc959a08ecb6c25029ba9b8a03952f7066395b

6 years agoAdd Connection Event Min/Max hint to Connection Update Request
Jakub Pawlowski [Fri, 19 Jan 2018 19:29:21 +0000 (11:29 -0800)]
Add Connection Event Min/Max hint to Connection Update Request

Bug: 69623109
Test: manual on HA
Change-Id: Idc08d08029f287751fafb4a8e2379dcc118e5ac3

6 years agoMerge "a2dp_source: Use SIZE_MAX queue size for worker_thread"
Bailey Forrest [Fri, 19 Jan 2018 21:47:41 +0000 (21:47 +0000)]
Merge "a2dp_source: Use SIZE_MAX queue size for worker_thread"
am: f82e7898bb

Change-Id: If74f098483a3cb8116351718f1d53ee8fdd9b157

6 years agoMerge "a2dp_source: Use SIZE_MAX queue size for worker_thread"
Treehugger Robot [Fri, 19 Jan 2018 21:41:24 +0000 (21:41 +0000)]
Merge "a2dp_source: Use SIZE_MAX queue size for worker_thread"

6 years agoMerge "SDP: Increase heap buffer size used for A2DP/AVRC"
minwoo2.kim [Fri, 19 Jan 2018 20:32:55 +0000 (20:32 +0000)]
Merge "SDP: Increase heap buffer size used for A2DP/AVRC"
am: 434fc14ef4

Change-Id: I634d2c18a062fc1518614114619827551ea2908c

6 years agoMerge "btm_sec_disconnected Check if p_dev_rec is still in scope"
Bailey Forrest [Fri, 19 Jan 2018 20:30:27 +0000 (20:30 +0000)]
Merge "btm_sec_disconnected Check if p_dev_rec is still in scope"
am: d6dad56b4b

Change-Id: Iae71e17f3bcf081758d1b9ea85a81a9d43c341c0

6 years agoMerge "SDP: Increase heap buffer size used for A2DP/AVRC"
Treehugger Robot [Fri, 19 Jan 2018 20:27:47 +0000 (20:27 +0000)]
Merge "SDP: Increase heap buffer size used for A2DP/AVRC"

6 years agoMerge "btm_sec_disconnected Check if p_dev_rec is still in scope"
Treehugger Robot [Fri, 19 Jan 2018 20:25:28 +0000 (20:25 +0000)]
Merge "btm_sec_disconnected Check if p_dev_rec is still in scope"

6 years agoRemove casts for callbacks
Myles Watson [Fri, 19 Jan 2018 19:29:03 +0000 (19:29 +0000)]
Remove casts for callbacks
am: fc9eced9bc

Change-Id: I4b512ee541e3a32f323cc29d10f51e9e1b8971d3

6 years agoMake GAP_ConnWriteData accept BT_HDR
Jakub Pawlowski [Fri, 19 Jan 2018 19:28:45 +0000 (19:28 +0000)]
Make GAP_ConnWriteData accept BT_HDR
am: 42bdd07088

Change-Id: If4572b3d43c1076feea8ac07032454fcb1b4f535

6 years agoRemove casts for callbacks
Myles Watson [Thu, 18 Jan 2018 20:30:55 +0000 (12:30 -0800)]
Remove casts for callbacks

Casting callbacks can hide parameter mismatches from
the compiler, which makes it impossible to check
argument types.

Bug: 72005262
Test: Toggle Bluetooth, connect to a headset
Change-Id: I0c3e0653c77e829655377fbf170d1b03efa5ea32

6 years agobtm_sec_disconnected Check if p_dev_rec is still in scope
Bailey Forrest [Fri, 12 Jan 2018 23:52:14 +0000 (15:52 -0800)]
btm_sec_disconnected Check if p_dev_rec is still in scope

|btm_sec_disconnected| may call the callback
|btm_cb.api.p_auth_complete_callback| which can delete |p_dev_rec|.
After deletion, |btm_sec_disconnected| still atempts to use |p_dev_rec|.

Bug: 71913396
Test: Does not crash with a quickly terminated connection.
Change-Id: Ic28beb2888a51090283be04121d785495cf25a84

6 years agoMake GAP_ConnWriteData accept BT_HDR
Jakub Pawlowski [Thu, 18 Jan 2018 02:22:12 +0000 (18:22 -0800)]
Make GAP_ConnWriteData accept BT_HDR

This is next step towards making LE sockets work with zero copies.

Test: transfer file using OPP
Bug: 68359837
Change-Id: Iedcdd59acb223e2982f6cb96b8656f517008dee5

6 years agoRevert "HID: Update condition for checking LE HID handle validity"
Hemant Gupta [Fri, 19 Jan 2018 01:07:38 +0000 (01:07 +0000)]
Revert "HID: Update condition for checking LE HID handle validity"
am: 812d20dfd8

Change-Id: Ia541465ba62f3a0c7bb890290f1b2a03925f2756

6 years agoAdded support for new Android API for LE CoC
Stanley Tng [Thu, 18 Jan 2018 17:59:28 +0000 (17:59 +0000)]
Added support for new Android API for LE CoC
am: 49dd53cb3d

Change-Id: If4aa43d5571db2f4c41d1851a486a42804a9efca

6 years agoSDP: Increase heap buffer size used for A2DP/AVRC
minwoo2.kim [Fri, 12 Jan 2018 09:09:04 +0000 (18:09 +0900)]
SDP: Increase heap buffer size used for A2DP/AVRC

This buffer is used to save the attributes parsed from the SDP response
transferred from a peer device.

In Android O, SDP fails sometimes due to full memory from SDP DB.

The reason of this shortage seems to be the increasing of allocated
memory for tSDP_DISC_ATTR.

Android N uses a 32-bit bluetooth lib and 4 bytes of memory for
pointers.

In total, 12 bytes are used for tSDP_DISC_ATTR

Android O uses a 64-bit bluetooth lib and 8 bytes of memory for
pointers.

Now, 24 bytes are used for tSDP_DISC_ATTR.

To match this increase of memory consumption, We need to double the heap
buffer size. (from 1000 to 2000)

bug: 71005276
Test: passed the connection test performed with more than 50 BT devices
launched in the market

Signed-off-by: minwoo kim <minwoo2.kim@lge.com>
Change-Id: I24bb50810e224aa1e23141493b5b2fa3b706c495

6 years agoRevert "HID: Update condition for checking LE HID handle validity"
Hemant Gupta [Fri, 12 Jan 2018 06:25:47 +0000 (11:55 +0530)]
Revert "HID: Update condition for checking LE HID handle validity"

This reverts commit af94891aa6e66b0d4b495d60aeac2aa8091c9d33 as changes to
fix same issue already merged via commit 2e3c3d782993c475e608291896db73b0960fa9dd
so this patch is not longer required.

Test: Code analysis for aosp master

Fixes: 71842479
Change-Id: Ifbc2375ad6df7231c85ef30c5e2c5b5d8dde16f0

6 years agoa2dp_source: Use SIZE_MAX queue size for worker_thread
Bailey Forrest [Thu, 18 Jan 2018 01:57:48 +0000 (17:57 -0800)]
a2dp_source: Use SIZE_MAX queue size for worker_thread

If the queue runs out of space, we can run into a deadlock.
Explanation of the deadlock is in the bug.

If I connect and disconnect ~20 times in quick succession I would
usually run into this issue

Bug: 72121764
Test: Connect/disconnect 170 times with script, issue does not occur.
Change-Id: I0a76e51aa99481f9fe4885b879209b3d215ae5b0

6 years agoAdded support for new Android API for LE CoC
Stanley Tng [Wed, 20 Dec 2017 17:38:30 +0000 (09:38 -0800)]
Added support for new Android API for LE CoC

Added support for the new Android API including the management of the
LE_PSM values.
Also fixed a bug when de-registering the L2CAP CoC, the RCB is not
freed correctly.

Test: Ran the new ACTS Tests for LE CoC and existing ACTS for RfComm
Bug: 70683224
Change-Id: I5a545656bece667e7ba942d7b2334e3f5b49b283

6 years agoLimit data accepted by GAP_ConnWriteData to just one SDU
Jakub Pawlowski [Thu, 18 Jan 2018 13:31:31 +0000 (13:31 +0000)]
Limit data accepted by GAP_ConnWriteData to just one SDU
am: ce5f485e67

Change-Id: I6d91324e7b8347d745a358394403258d02456bae

6 years agoMerge "Make BTA_JvL2capWrite take ownership of the data buffer"
Jakub Pawlowski [Thu, 18 Jan 2018 02:16:04 +0000 (02:16 +0000)]
Merge "Make BTA_JvL2capWrite take ownership of the data buffer"
am: 00fa787f83

Change-Id: I139a9c76519330023825464558ee47e62f10ace0

6 years agoMerge "Added internal API getMaxConnectedAudioDevices()"
Pavlin Radoslavov [Thu, 18 Jan 2018 02:10:42 +0000 (02:10 +0000)]
Merge "Added internal API getMaxConnectedAudioDevices()"
am: 94b769b9f3

Change-Id: I67191c51f005479e8fc16ee24789da1bba8db4ce

6 years agoLimit data accepted by GAP_ConnWriteData to just one SDU
Jakub Pawlowski [Fri, 12 Jan 2018 11:19:33 +0000 (03:19 -0800)]
Limit data accepted by GAP_ConnWriteData to just one SDU

This limit is already enforced in BluetoothSocket.java, which is
dividing data into pieces no bigger than MTU.

This is first step towards making it accept BT_HDR with data, in order
to make LE sockets work with zero copies.

Test: transfer file using OPP
Bug: 68359837
Change-Id: I67bfd4ab5c2dc6aa8210058a742c57e1ccf845a0

6 years agoMerge "Make BTA_JvL2capWrite take ownership of the data buffer"
Treehugger Robot [Thu, 18 Jan 2018 01:49:54 +0000 (01:49 +0000)]
Merge "Make BTA_JvL2capWrite take ownership of the data buffer"

6 years agoFix buffer overflow in GAP_ConnWriteData
Jakub Pawlowski [Thu, 18 Jan 2018 01:18:45 +0000 (01:18 +0000)]
Fix buffer overflow in GAP_ConnWriteData
am: 00c922a091

Change-Id: Ice8b45329a9351542d1cecc1cb4b5e3429f45a79

6 years agoMerge "Added internal API getMaxConnectedAudioDevices()"
Treehugger Robot [Thu, 18 Jan 2018 00:46:57 +0000 (00:46 +0000)]
Merge "Added internal API getMaxConnectedAudioDevices()"

6 years agoMake BTA_JvL2capWrite take ownership of the data buffer
Jakub Pawlowski [Thu, 11 Jan 2018 15:34:39 +0000 (07:34 -0800)]
Make BTA_JvL2capWrite take ownership of the data buffer

This is first step towards making it accept BT_HDR with data, in order
to make LE sockets work with zero copies.

Bug: 68359837
Test: transfer file using OPP
Change-Id: Ib202520554bbc83cb8587bf1c4caa4b0da6b266c

6 years agoFix buffer overflow in GAP_ConnWriteData
Jakub Pawlowski [Mon, 8 Jan 2018 21:06:45 +0000 (13:06 -0800)]
Fix buffer overflow in GAP_ConnWriteData

Bug: none
Test: exchange data with MPS>11000, sent file between devices using OPP
Change-Id: Ie456a35da4764bdac329135742634ce8f0a63469

6 years agoAdded internal API getMaxConnectedAudioDevices()
Pavlin Radoslavov [Wed, 17 Jan 2018 10:19:42 +0000 (02:19 -0800)]
Added internal API getMaxConnectedAudioDevices()

The API can be used to obtain the maximum number of connected
devices for A2DP or HFP.

Test: Manual
Bug: 64767509

Change-Id: Ide01ea91bc9708b20c78266d791d4775be3f943d

6 years agoMerge "Revert "Fix buffer overflow in GAP_ConnWriteData""
Hansong Zhang [Wed, 17 Jan 2018 01:40:04 +0000 (01:40 +0000)]
Merge "Revert "Fix buffer overflow in GAP_ConnWriteData""
am: 115a92883d

Change-Id: I27c3e98dce3a2f3eb4ce44c2b7f4c0726f8fb76d

6 years agoMerge "Revert "Fix buffer overflow in GAP_ConnWriteData""
Treehugger Robot [Wed, 17 Jan 2018 01:33:46 +0000 (01:33 +0000)]
Merge "Revert "Fix buffer overflow in GAP_ConnWriteData""

6 years agoRevert "Fix buffer overflow in GAP_ConnWriteData"
Hansong Zhang [Tue, 16 Jan 2018 23:57:27 +0000 (23:57 +0000)]
Revert "Fix buffer overflow in GAP_ConnWriteData"

This reverts commit 9f9c47683e28a0cf99b308deeac04073a9528c59.

Reason for revert: Bluetooth OPP crashing.

Bug: 72049058
Change-Id: Ic9ee9f28ce480453a9e01d3273595bff2264cd2b

6 years agoMerge "Refactor l2c_lcc_get_next_xmit_sdu_seg"
Jakub Pawlowski [Fri, 12 Jan 2018 00:20:58 +0000 (00:20 +0000)]
Merge "Refactor l2c_lcc_get_next_xmit_sdu_seg"
am: 950dd0323e

Change-Id: I1051f0dfbad2dbda72f5b13f22dbffeb00975597

6 years agoMerge "L2CAP: Add parameter to indicate last piece of an SDU"
Jakub Pawlowski [Fri, 12 Jan 2018 00:20:37 +0000 (00:20 +0000)]
Merge "L2CAP: Add parameter to indicate last piece of an SDU"
am: 27a288f89b

Change-Id: Iad84b098036daf43758d0f7ae8c264412a470a57

6 years agoMerge "Refactor l2c_lcc_get_next_xmit_sdu_seg"
Treehugger Robot [Thu, 11 Jan 2018 23:28:37 +0000 (23:28 +0000)]
Merge "Refactor l2c_lcc_get_next_xmit_sdu_seg"

6 years agoMerge "L2CAP: Add parameter to indicate last piece of an SDU"
Treehugger Robot [Thu, 11 Jan 2018 23:21:44 +0000 (23:21 +0000)]
Merge "L2CAP: Add parameter to indicate last piece of an SDU"

6 years agoRefactor l2c_lcc_get_next_xmit_sdu_seg
Jakub Pawlowski [Wed, 10 Jan 2018 11:11:33 +0000 (03:11 -0800)]
Refactor l2c_lcc_get_next_xmit_sdu_seg

* use "PDU" instead of "segment" in variable names
* simplify computation of first_pdu, last_pdu, no_of_bytes_to_send
* remove unnecessary null checks

Test: manual
Bug: 68359837
Change-Id: Iecf511df2a51c2c103ecb3b524c6ed17910a7062

6 years agoL2CAP: Add parameter to indicate last piece of an SDU
Jakub Pawlowski [Wed, 10 Jan 2018 10:54:47 +0000 (02:54 -0800)]
L2CAP: Add parameter to indicate last piece of an SDU

This information will be used in future patches to notify packet
completition to upper layers.

Test: manual
Bug: 68359837
Change-Id: Ie4aa937b4da5aa83fa552a8603195a6933d64cc6

6 years agoHID: Update condition for checking LE HID handle validity
Hemant Gupta [Thu, 11 Jan 2018 19:05:11 +0000 (19:05 +0000)]
HID: Update condition for checking LE HID handle validity
am: af94891aa6

Change-Id: I9036068c749c5d35b3605a68db0f79293a3d9c37

6 years agoHID: Update condition for checking LE HID handle validity
Hemant Gupta [Thu, 11 Jan 2018 09:52:49 +0000 (15:22 +0530)]
HID: Update condition for checking LE HID handle validity

1) Pair and connect with BR/EDR HID devices and LE devices
   such that the total number of connected paired devices
   becomes 7. It is not required that connection to all devices be
   maintained, they can be disconnected as well afterwards.
2) Pair and connect with a new LE device. Connection fails
3) Retry connecting to same LE device. Connection does not go through
4) Turn BT off

Observed Result:
1) LE device cannot be connected in step 2
2) Tombstone in BT while switching off BT with below signature

backtrace:
    #00 pc 0000000000092438  /system/lib64/libc.so (ifree+88)
    #01 pc 000000000009298c  /system/lib64/libc.so (je_free+120)
    #02 pc 00000000001b266c  /system/lib64/hw/bluetooth.default.so (_Z18osi_free_and_resetPPv+84)
    #03 pc 0000000000062f84  /system/lib64/hw/bluetooth.default.so
    (_Z17bta_hh_sm_executeP14tBTA_HH_DEV_CBtP12tBTA_HH_DATA+880)
    #04 pc 0000000000063120  /system/lib64/hw/bluetooth.default.so (_Z16bta_hh_hdl_eventP6BT_HDR+296)
    #05 pc 000000000007bbc4  /system/lib64/hw/bluetooth.default.so (_Z13bta_sys_eventP6BT_HDR+60)
    #06 pc 00000000001b4d88  /system/lib64/hw/bluetooth.default.so (_ZL22internal_dequeue_readyPv+80)
    #07 pc 00000000001b96f4  /system/lib64/hw/bluetooth.default.so (_ZL11run_reactorP9reactor_ti+312)
    #08 pc 00000000001b9590  /system/lib64/hw/bluetooth.default.so (_Z13reactor_startP9reactor_t+80)
    #09 pc 00000000001baf24  /system/lib64/hw/bluetooth.default.so (_ZL10run_threadPv+256)
    #10 pc 0000000000067bc4  /system/lib64/libc.so (_ZL15__pthread_startPv+36)
    #11 pc 000000000001f264  /system/lib64/libc.so (__start_thread+68)

Root Cause:
Wrong conditional check in macro BTA_HH_IS_LE_DEV_HDL_VALID which ignores the condition that max
14 HID devices can be connected and all of them can be LE as well.

Fix:
Update the condition in macro BTA_HH_IS_LE_DEV_HDL_VALID to compare with BTA_HH_MAX_DEVICE instead of
BTA_HH_LE_MAX_KNOWN

Test: Not yet performed, only code and log analysis

Fixes: 71842479
Change-Id: I2b56b6f109787608e25c340150be313f0f5397be

6 years agoFix buffer overflow in GAP_ConnWriteData
Jakub Pawlowski [Thu, 11 Jan 2018 15:51:37 +0000 (15:51 +0000)]
Fix buffer overflow in GAP_ConnWriteData
am: 9f9c47683e

Change-Id: Iae50fac27ce79a0a8ef002f465fcf0db59119c79

6 years agoFix buffer overflow in GAP_ConnWriteData
Jakub Pawlowski [Mon, 8 Jan 2018 21:06:45 +0000 (13:06 -0800)]
Fix buffer overflow in GAP_ConnWriteData

Bug: none
Test: exchange data with MPS>11000
Change-Id: I01c60d6f08529be051e921789c41f7065f45534f

6 years agoRemove duplicated code in l2cap_sock - on_l2cap_write_fixed_done
Jakub Pawlowski [Wed, 10 Jan 2018 21:05:02 +0000 (21:05 +0000)]
Remove duplicated code in l2cap_sock - on_l2cap_write_fixed_done
am: 19d30611c4

Change-Id: I595e4b78830248ef813fc285647cfb9f4e8be30a

6 years agoRemove duplicated code in l2cap_sock - on_l2cap_write_fixed_done
Jakub Pawlowski [Mon, 8 Jan 2018 09:23:52 +0000 (01:23 -0800)]
Remove duplicated code in l2cap_sock - on_l2cap_write_fixed_done

Test: none
Bug: 68359837
Change-Id: Ic3ebe0b7eebbd0122e7f7751ab3b48d6acf62da6

6 years agoMerge "Move repeated code from l2cu_check_channel_congestion into a separate function"
Jakub Pawlowski [Wed, 10 Jan 2018 13:09:56 +0000 (13:09 +0000)]
Merge "Move repeated code from l2cu_check_channel_congestion into a separate function"
am: 8b2fed1b27

Change-Id: I51d9f87d4653d5d94ad0c1a9020de147ca092f25

6 years agoMerge "Move repeated code from l2cu_check_channel_congestion into a separate function"
Treehugger Robot [Wed, 10 Jan 2018 13:04:58 +0000 (13:04 +0000)]
Merge "Move repeated code from l2cu_check_channel_congestion into a separate function"

6 years agoMerge "Make AdvertiseManager shutdown gracefully"
Jakub Pawlowski [Wed, 10 Jan 2018 10:52:40 +0000 (10:52 +0000)]
Merge "Make AdvertiseManager shutdown gracefully"
am: b17a48392c

Change-Id: Ie59144e16b00c6949e0bbcbe2fc51cde5702f13c

6 years agoMerge "Make AdvertiseManager shutdown gracefully"
Treehugger Robot [Wed, 10 Jan 2018 10:48:27 +0000 (10:48 +0000)]
Merge "Make AdvertiseManager shutdown gracefully"

6 years agoMerge "HFP: Print human readable event and state name by default"
Jack He [Wed, 10 Jan 2018 03:55:27 +0000 (03:55 +0000)]
Merge "HFP: Print human readable event and state name by default"
am: 6d6cf5fb43

Change-Id: I1a89332766159d79f025278967021290ff2df183

6 years agoMerge "HFP: Remove used BTA call-in events and methods"
Jack He [Wed, 10 Jan 2018 03:55:02 +0000 (03:55 +0000)]
Merge "HFP: Remove used BTA call-in events and methods"
am: 5608f53c83

Change-Id: If9ab82df01142945f1e790d20278c35c0848cd36

6 years agoMerge "HFP: Print human readable event and state name by default"
Treehugger Robot [Wed, 10 Jan 2018 03:47:04 +0000 (03:47 +0000)]
Merge "HFP: Print human readable event and state name by default"

6 years agoMerge "HFP: Remove used BTA call-in events and methods"
Treehugger Robot [Wed, 10 Jan 2018 03:46:48 +0000 (03:46 +0000)]
Merge "HFP: Remove used BTA call-in events and methods"

6 years agoMerge "Fix SIGSEGV during Hands-free client SDP"
Lianchao Song [Wed, 10 Jan 2018 02:45:49 +0000 (02:45 +0000)]
Merge "Fix SIGSEGV during Hands-free client SDP"
am: 853a841341

Change-Id: I0b8496cfdcb2aa3086e7d59a3d7cb62078997f4f

6 years agoMerge "Fix SIGSEGV during Hands-free client SDP"
Treehugger Robot [Wed, 10 Jan 2018 02:40:49 +0000 (02:40 +0000)]
Merge "Fix SIGSEGV during Hands-free client SDP"

6 years agoHFP: Print human readable event and state name by default
Jack He [Sun, 7 Jan 2018 01:00:37 +0000 (17:00 -0800)]
HFP: Print human readable event and state name by default

* Debug log in HFP's BTA code is gated by BTA_AG_SCO_DEBUG and
  BTA_AG_DEBUG flags. These are non-standard flags that must be
  configured at compile time. Instead, debug logs should be gated by
  flags in bt_stack.conf only
* This change enables human readable debug output by default by removing
  these flags, and refactor the string conversion functions

Bug: 70538124
Test: runtest bluetooth, native unit tests
Change-Id: I99fd00016020a9c6b14928906f07bca4f0ea482d

6 years agoHFP: Remove used BTA call-in events and methods
Jack He [Wed, 10 Jan 2018 00:25:46 +0000 (16:25 -0800)]
HFP: Remove used BTA call-in events and methods

* Since SCO over HCI is temporarily unsupported on the stack, SCO data
  call-in methods are no longer used by the stack and thus should be
  removed. For example, bta_ag_ci_sco_data() and BTA_AG_CI_SCO_DATA_EVT.
* Since raw RFCOMM access is disabled, various RFCOMM data call-in
  methods are no longer used by the stack and thus should be removed.
  For example, bta_ag_ci_rx_data() and BTA_AG_CI_RX_WRITE_EVT

Bug: 70538124
Test: runtest bluetooth, native unit test
Change-Id: Iacd60042e97b1be5f800319723836285eb68b2b9

6 years agoHFP: Remove AG RFCOMM data pass through mode
Jack He [Wed, 10 Jan 2018 00:18:52 +0000 (00:18 +0000)]
HFP: Remove AG RFCOMM data pass through mode
am: 3f10b14ea5

Change-Id: Ic686cb919a37a9a6418ed56ce7f8d9da1d43211c

6 years agoHFP: Remove redundant AG data callout code
Jack He [Wed, 10 Jan 2018 00:18:45 +0000 (00:18 +0000)]
HFP: Remove redundant AG data callout code
am: c4829e81df

Change-Id: I11e7c92839657477654ff7838df050cbdbd1ad13

6 years agoHFP: Add isInbandRingingEnabled() API (3/4)
Jack He [Wed, 10 Jan 2018 00:18:38 +0000 (00:18 +0000)]
HFP: Add isInbandRingingEnabled() API (3/4)
am: 02b28fba44

Change-Id: I49ad1510c1bdf6c9ad44c3611ebdcb13e4ee8eb0

6 years agoHFP: Remove AG RFCOMM data pass through mode
Jack He [Sat, 6 Jan 2018 23:53:29 +0000 (15:53 -0800)]
HFP: Remove AG RFCOMM data pass through mode

* In BTA_AG_PASS_THROUGH mode defined in bta_ag_api.h, RFCOMM data is
  passed directly to the upper layer. In this case, AT commands are
  parsed in the user application instead of being parsed within the fluoride
  stack.
* However, this mode is never used on the stack as btif_hf.cc only call
  BTA_AgEnable() with BTA_AG_PARSE parameter value. Currently, AT
  commands are only parsed within the fluoride stack
* This change removes this feature since the pass through mode is
  never used, tested, nor maintained

Bug: 70538124
Test: runtest bluetooth, native unit tests, no functional change
Change-Id: I921d5ee950e4abadea8433c5b2d5882a99923cb0

6 years agoHFP: Remove redundant AG data callout code
Jack He [Sat, 6 Jan 2018 23:31:42 +0000 (15:31 -0800)]
HFP: Remove redundant AG data callout code

* Methods in bta_ag_co.cc are almost empty and should be removed
* Only bta_ag_co_init() calls BTM_WriteVoiceSettings(). This can be
  called directly from BTA. The callout wrapper is unnecessary

Bug: 70538124
Test: runtest bluetooth, native unit tests, no functional change
Change-Id: I20ab1c033d18f3405e7efb8446b44153b24f3cb0

6 years agoHFP: Add isInbandRingingEnabled() API (3/4)
Jack He [Sat, 6 Jan 2018 01:18:29 +0000 (17:18 -0800)]
HFP: Add isInbandRingingEnabled() API (3/4)

* Use BluetoothHeadset.isInbandRingingEnabled() API to check whether
  in-band ringing is currently enabled in the system when deciding on
  audio routes for ringtone
* Use this value obtained in Java layer to initialize native HFP/HSP
  stack instead of checking it in native layer

Bug: 71646213
Test: make, toggle in-band ringing from Development Settings and observe
      whether Telecom service tries to open SCO when there is an
      incoming call

Change-Id: I917537b6d17681151639ff29a56ac9c0c7e0e7e8

6 years agoFix SIGSEGV during Hands-free client SDP
Lianchao Song [Fri, 22 Dec 2017 08:55:47 +0000 (16:55 +0800)]
Fix SIGSEGV during Hands-free client SDP

Fixes: 70367002
Change-Id: I2fd7a00551157a000b87c7bbdbc8a2c93cff21c4

6 years agoRun by default the 64-bit unit tests on 64-bit devices
Pavlin Radoslavov [Tue, 9 Jan 2018 20:46:39 +0000 (20:46 +0000)]
Run by default the 64-bit unit tests on 64-bit devices
am: e07f3d084d

Change-Id: I14a2c0eeaec519df9bdefe3ada05c48efc3d3198

6 years agoDisable CFI verification for unit tests that are using gtest+gmock
Pavlin Radoslavov [Tue, 9 Jan 2018 20:46:33 +0000 (20:46 +0000)]
Disable CFI verification for unit tests that are using gtest+gmock
am: ee021ef64d

Change-Id: I8de3be780406fae5bb0142d3c51c83d38da4d9d3

6 years agoMove repeated code from l2cu_check_channel_congestion into a separate function
Jakub Pawlowski [Tue, 9 Jan 2018 11:45:09 +0000 (03:45 -0800)]
Move repeated code from l2cu_check_channel_congestion into a separate function

Test: compilation
Bug: 68359837
Change-Id: I69edf0d549633a2d9d0c73eae4efbaf47d302ab4