OSDN Git Service
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
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
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
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
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
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
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
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
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
Treehugger Robot [Tue, 23 Jan 2018 19:00:57 +0000 (19:00 +0000)]
Merge "Allow L2CAP first packet with partial header"
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Treehugger Robot [Fri, 19 Jan 2018 21:41:24 +0000 (21:41 +0000)]
Merge "a2dp_source: Use SIZE_MAX queue size for worker_thread"
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
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
Treehugger Robot [Fri, 19 Jan 2018 20:27:47 +0000 (20:27 +0000)]
Merge "SDP: Increase heap buffer size used for A2DP/AVRC"
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"
Myles Watson [Fri, 19 Jan 2018 19:29:03 +0000 (19:29 +0000)]
Remove casts for callbacks
am:
fc9eced9bc
Change-Id: I4b512ee541e3a32f323cc29d10f51e9e1b8971d3
Jakub Pawlowski [Fri, 19 Jan 2018 19:28:45 +0000 (19:28 +0000)]
Make GAP_ConnWriteData accept BT_HDR
am:
42bdd07088
Change-Id: If4572b3d43c1076feea8ac07032454fcb1b4f535
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
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
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
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
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
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
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
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
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
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
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
Pavlin Radoslavov [Thu, 18 Jan 2018 02:10:42 +0000 (02:10 +0000)]
Merge "Added internal API getMaxConnectedAudioDevices()"
am:
94b769b9f3
Change-Id: I67191c51f005479e8fc16ee24789da1bba8db4ce
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
Treehugger Robot [Thu, 18 Jan 2018 01:49:54 +0000 (01:49 +0000)]
Merge "Make BTA_JvL2capWrite take ownership of the data buffer"
Jakub Pawlowski [Thu, 18 Jan 2018 01:18:45 +0000 (01:18 +0000)]
Fix buffer overflow in GAP_ConnWriteData
am:
00c922a091
Change-Id: Ice8b45329a9351542d1cecc1cb4b5e3429f45a79
Treehugger Robot [Thu, 18 Jan 2018 00:46:57 +0000 (00:46 +0000)]
Merge "Added internal API getMaxConnectedAudioDevices()"
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
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
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
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
Treehugger Robot [Wed, 17 Jan 2018 01:33:46 +0000 (01:33 +0000)]
Merge "Revert "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
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
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
Treehugger Robot [Thu, 11 Jan 2018 23:28:37 +0000 (23:28 +0000)]
Merge "Refactor l2c_lcc_get_next_xmit_sdu_seg"
Treehugger Robot [Thu, 11 Jan 2018 23:21:44 +0000 (23:21 +0000)]
Merge "L2CAP: Add parameter to indicate last piece of an SDU"
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
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
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
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
Jakub Pawlowski [Thu, 11 Jan 2018 15:51:37 +0000 (15:51 +0000)]
Fix buffer overflow in GAP_ConnWriteData
am:
9f9c47683e
Change-Id: Iae50fac27ce79a0a8ef002f465fcf0db59119c79
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
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
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
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
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"
Jakub Pawlowski [Wed, 10 Jan 2018 10:52:40 +0000 (10:52 +0000)]
Merge "Make AdvertiseManager shutdown gracefully"
am:
b17a48392c
Change-Id: Ie59144e16b00c6949e0bbcbe2fc51cde5702f13c
Treehugger Robot [Wed, 10 Jan 2018 10:48:27 +0000 (10:48 +0000)]
Merge "Make AdvertiseManager shutdown gracefully"
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
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
Treehugger Robot [Wed, 10 Jan 2018 03:47:04 +0000 (03:47 +0000)]
Merge "HFP: Print human readable event and state name by default"
Treehugger Robot [Wed, 10 Jan 2018 03:46:48 +0000 (03:46 +0000)]
Merge "HFP: Remove used BTA call-in events and methods"
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
Treehugger Robot [Wed, 10 Jan 2018 02:40:49 +0000 (02:40 +0000)]
Merge "Fix SIGSEGV during Hands-free client SDP"
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
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
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
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
Jack He [Wed, 10 Jan 2018 00:18:38 +0000 (00:18 +0000)]
HFP: Add isInbandRingingEnabled() API (3/4)
am:
02b28fba44
Change-Id: I49ad1510c1bdf6c9ad44c3611ebdcb13e4ee8eb0
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
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
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
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
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
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
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
Pavlin Radoslavov [Tue, 9 Jan 2018 13:58:53 +0000 (05:58 -0800)]
Run by default the 64-bit unit tests on 64-bit devices
Bug:
71739588
Test: cd system/bt; mm -j 40; test/run_unit_tests.sh
Change-Id: Ie4206a8935456a0b62b7a4b90c7247f398a6a7ef
Pavlin Radoslavov [Tue, 9 Jan 2018 13:36:20 +0000 (05:36 -0800)]
Disable CFI verification for unit tests that are using gtest+gmock
Apparently, the CFI verification crashes unit tests that
are using gtest+gmock. Interestingly, those tests succeed for 32-bit
binaries, and fail for 64-bit binaries.
Bug:
71739588
Test: Running the 64-bit version of the unit tests in test/run_unit_tests.sh
Change-Id: Id1f6b3667b3f9eabb0719e65aea18c6950de63a8
Jakub Pawlowski [Thu, 22 Jun 2017 16:46:18 +0000 (09:46 -0700)]
Make AdvertiseManager shutdown gracefully
If the Bluetooth stack is shutdown while AdvertiseManager has a pending HCI
operation being executed, the callback to that operation might be
executed after the manager was deleted. In order to fix any potential
issues, always use a weak pointer to the advertisement manager. This will
prevent the callbacks from getting executed.
In case of callbacks that are not executed on the AdvertiseManager
instance, one can check if the weak pointer is still valid, and properly
handle the stack shutdown.
Test: BleAdvertisingManagerTest:test_cleanup_during_execution
Change-Id: I8d33de4f64267a880880082c5498375c083addef
Jakub Pawlowski [Mon, 8 Jan 2018 08:35:58 +0000 (08:35 +0000)]
Prevent LE CoC from dropping data when remote MPS>8087
am:
8452b05b1a
Change-Id: Ifae837ba653efab320d5f6b2b7a10fa15444a0c7
Jakub Pawlowski [Fri, 5 Jan 2018 10:41:36 +0000 (02:41 -0800)]
Prevent LE CoC from dropping data when remote MPS>8087
When using LE Coc through Java socket, one can read MPS from
getMaxTransmitPacketSize(). If this value is bigger than
local device L2CAP_MAX_SDU_LENGTH, data sent to remote will be
truncated. This patch fixes that by using properly big buffer for
receiving data from socket on native side.
Test: connect with device with MPS bigger than MPS, alternatively set
L2CAP_MAX_SDU_LENGTH to i.e. 30 on device during test and try to write
"remote MPS" of bytes to remote device.
Bug:
68359837
Change-Id: I02bef80f0dd0f0d6850704ac7787c5f3f5b9b3ab
Jack He [Sat, 6 Jan 2018 17:52:41 +0000 (17:52 +0000)]
HFP: Add APIs for set and get active device (3/3)
am:
9761185772
Change-Id: I1dc0936d87b7e42f68ab7919f6b8bb245fff905b
Pavlin Radoslavov [Sat, 6 Jan 2018 17:41:24 +0000 (17:41 +0000)]
Added internal API to get/set the A2DP Active Device
am:
5fd3e62821
Change-Id: Ie5ee734f1e471eebcaa4ce07abe35999a068736e