OSDN Git Service

android-x86/system-bt.git
6 years agoMerge "Empty list check to stop Bluetooth stack crash in btif_rc"
Treehugger Robot [Wed, 14 Mar 2018 01:18:17 +0000 (01:18 +0000)]
Merge "Empty list check to stop Bluetooth stack crash in btif_rc"

6 years agoMerge "Fix gatt_is_bda_in_the_srv_chg_clt_list always return NULL"
Treehugger Robot [Wed, 14 Mar 2018 01:08:49 +0000 (01:08 +0000)]
Merge "Fix gatt_is_bda_in_the_srv_chg_clt_list always return NULL"

6 years agoEmpty list check to stop Bluetooth stack crash in btif_rc
Pulkit Bhuwalka [Sat, 20 Jan 2018 01:37:45 +0000 (17:37 -0800)]
Empty list check to stop Bluetooth stack crash in btif_rc

Remote devices sometimes poorly send 0 capabilities response when
connecting AVRCP. The stack currently crashes in response to this. We
should not crash and continue. Typically the remote device will send
proper packets in the future and continue to work properly.

Bug: 70140873
Test: Faked 0 capabilities, made stack crash. Added fix, stack stopped
crashing. Verified Bluetooth streaming working.

Change-Id: Id51f0593bc0ddcd3c3085b0d1b1fae136baecceb

6 years agoAdd the AVRCP Target Service to btif
Ajay Panicker [Mon, 12 Mar 2018 23:41:21 +0000 (16:41 -0700)]
Add the AVRCP Target Service to btif

This class provides a management interface for the AVRCP Target Service.

Bug: 68854188
Test: Compiles
Change-Id: Id639ca6530ea986b5d67203f448ae7a0eecc6f8a

6 years agoMerge "BLE: Don't access freed buffer in log message"
Treehugger Robot [Tue, 13 Mar 2018 18:16:22 +0000 (18:16 +0000)]
Merge "BLE: Don't access freed buffer in log message"

6 years agoBLE: Don't access freed buffer in log message
Nitin Shivpure [Tue, 6 Feb 2018 12:48:37 +0000 (18:18 +0530)]
BLE: Don't access freed buffer in log message

When GATT fail to write data on L2CAP, buffer is freed by L2CAP.
Accessing the buffer leads to fatal failure while printing the message info.

Test: BLE discover services and BT off test cases

Fixes: 73018520
Change-Id: I661398fd1321f6e68026b3720db4965fd6584d70

6 years agoA2DP Offload support
Sunny Kapdi [Tue, 13 Feb 2018 05:52:50 +0000 (21:52 -0800)]
A2DP Offload support

The encoding of the A2DP data packets if offloaded
to platform specific HAL. The communication with the
HAL is enabled by IBluetoothAudioOffload and
IBluetoothAudioHost interfaces. Bluetooth stack is
still responsible for A2DP control path.

Bug: 72242910
Test: Manual; TestTracker/148125
Change-Id: Ie6e9c233ca431d0ab8cf15d10c30836e41bbdcb7
(cherry picked from commit c013d10798f674fd4a73f03b9178952928294b1e)

6 years agoMerge "Get rid of BTM_IS_PUBLIC_BDA"
Treehugger Robot [Fri, 9 Mar 2018 23:29:05 +0000 (23:29 +0000)]
Merge "Get rid of BTM_IS_PUBLIC_BDA"

6 years agoMerge "Enable AVDTP Delay reports by default."
Treehugger Robot [Fri, 9 Mar 2018 20:56:50 +0000 (20:56 +0000)]
Merge "Enable AVDTP Delay reports by default."

6 years agoMerge "Add the AVRCP Connection Handler"
Treehugger Robot [Fri, 9 Mar 2018 05:12:32 +0000 (05:12 +0000)]
Merge "Add the AVRCP Connection Handler"

6 years agoGet rid of BTM_IS_PUBLIC_BDA
Jakub Pawlowski [Fri, 9 Mar 2018 04:11:41 +0000 (20:11 -0800)]
Get rid of BTM_IS_PUBLIC_BDA

One can't really guess address type based on last bits.
Instead, for new devices always assume public address.

Test: scan, toggle bluetooth, try connecting to device with public
      address
Bug: 74413120

Change-Id: Id558260798e717c214a5a817cea0c204c5f4858e

6 years agoAVRCP: Fix size for Register Notification Response packets
Ajay Panicker [Tue, 6 Mar 2018 19:16:23 +0000 (11:16 -0800)]
AVRCP: Fix size for Register Notification Response packets

Bug: 68854188
Test: ./run_host_unit_tests.py && ./run_unit_test.sh net_test_btpackets
Change-Id: I62d864e2c27d809944f160dc45906b90cbb84f3d

6 years agoAdd the AVRCP Connection Handler
Ajay Panicker [Wed, 28 Feb 2018 04:51:47 +0000 (20:51 -0800)]
Add the AVRCP Connection Handler

This class handles connecting and disconnecting AVRCP Devices as well as
SDP lookups and feature selection.

Bug: 68854188
Test: run_host_unit_tests.py && run_unit_tests.sh net_test_avrcp
Change-Id: I950587123d2875c4333b415c379c7c1fb0c29ca5

6 years agoEnable AVDTP Delay reports by default.
Ajay Panicker [Wed, 7 Mar 2018 23:22:29 +0000 (15:22 -0800)]
Enable AVDTP Delay reports by default.

Bug: 32755225
Test: See that delay reports are enabled when connecting to device
Change-Id: I03bd216eb1725ee3e2e5da4e0baae61007ba2dcf
Merged-In: I03bd216eb1725ee3e2e5da4e0baae61007ba2dcf

6 years agoAdd missing audio_hearing_aid_hw in Android.bp
Jakub Pawlowski [Wed, 7 Mar 2018 00:31:41 +0000 (16:31 -0800)]
Add missing audio_hearing_aid_hw in Android.bp

Bug: 69623109
Test: compile, verify audio.hearing_aid.default is built
Change-Id: Ia246a6b7b026d1e6d698e9a7832ead0e584b621d

6 years agoPrecompute the RTP Header marker bit only for A2DP Source encoder
Pavlin Radoslavov [Tue, 6 Mar 2018 22:44:27 +0000 (14:44 -0800)]
Precompute the RTP Header marker bit only for A2DP Source encoder

The RTP Header marker bit is used only by the A2DP Source encoder,
and should be computed only when the local device is A2DP Source.

Test: Manual - disconnect, reconnect A2DP headset, play Audio
Bug: 74250013
Change-Id: I6510eeb9a34397e6623e5bc36675fc833b96ad7d

6 years agoMerge "Fix crash in l2c_rcv_acl_data during LE CoC SL4A Test"
Stanley Tng [Tue, 6 Mar 2018 22:02:21 +0000 (22:02 +0000)]
Merge "Fix crash in l2c_rcv_acl_data during LE CoC SL4A Test"

6 years agoFix crash in l2c_rcv_acl_data during LE CoC SL4A Test
Stanley Tng [Tue, 6 Mar 2018 18:56:12 +0000 (10:56 -0800)]
Fix crash in l2c_rcv_acl_data during LE CoC SL4A Test

When the incoming ACL messages is not setup yet, we should not further
processed it after we queue it. Otherwise, we will get be accessing the
null data structure for the connection.

Bug: 74240858
Test: Run SL4A test: act.py -c $MY_SL4A_CONFIG -tc BleCocTest:test_coc_secured_connection_throughput
Change-Id: I12e6d5dd30f05a74807afe6b4af1b9599c59886a

6 years agoMetrics: Move bluetooth.proto to one place
Jack He [Sat, 3 Mar 2018 08:03:25 +0000 (00:03 -0800)]
Metrics: Move bluetooth.proto to one place

* Move bluetooth.proto to proto/ and compile it for both Java LITE
  runtime and C++ LITE runtime so that it can be shared between Java
  and native code
* Remove redundant comments in bluetooth.proto

Bug: 33693818
Test: make, toggle Bluetooth, clearcut server-client E2E test
      adb shell dumpsys bluetooth_manager --proto-bin
      ACTS tests: BtMetricsTest, BtFunhausMetricsTest
Change-Id: I7cd5e1b4fb8fcc197272ef8161ff384e53022424

6 years agoMerge "Use proper sockets for A2DP and Hearing Aid HAL"
Treehugger Robot [Tue, 6 Mar 2018 02:17:56 +0000 (02:17 +0000)]
Merge "Use proper sockets for A2DP and Hearing Aid HAL"

6 years agoHearing Aid Audio Source 24000 sample rate support
Jakub Pawlowski [Mon, 5 Mar 2018 22:22:34 +0000 (14:22 -0800)]
Hearing Aid Audio Source 24000 sample rate support

Bug: 69623109
Test: compile, connect to hearing aid
Change-Id: I8751be8b92d2a902407726b6ec7fc1c8ecbcaebb

6 years agoUse proper sockets for A2DP and Hearing Aid HAL
Jakub Pawlowski [Fri, 2 Mar 2018 10:22:33 +0000 (02:22 -0800)]
Use proper sockets for A2DP and Hearing Aid HAL

Test: bond both Hearing Aid and Headset, try to stream to devices separately
Bug: 69623109
Change-Id: I81c9baa65d2ef114d4e964db29beb85def2629ae

6 years agoMerge "Add the AVRCP Device class for the AVRCP Refactor"
Treehugger Robot [Sat, 3 Mar 2018 02:32:56 +0000 (02:32 +0000)]
Merge "Add the AVRCP Device class for the AVRCP Refactor"

6 years agoHearingAidAudioSource implementation
Hansong Zhang [Fri, 19 Jan 2018 20:23:57 +0000 (12:23 -0800)]
HearingAidAudioSource implementation

Test: none
Bug: 69623109
Change-Id: Iaadd337ed5a8152db54b7515d55e0358f413f937

6 years agoMerge "Keep UIPC in local variable, rather than global struct."
Treehugger Robot [Fri, 2 Mar 2018 19:05:58 +0000 (19:05 +0000)]
Merge "Keep UIPC in local variable, rather than global struct."

6 years agoKeep UIPC in local variable, rather than global struct.
Jakub Pawlowski [Fri, 2 Mar 2018 00:23:58 +0000 (16:23 -0800)]
Keep UIPC in local variable, rather than global struct.

We will need multiple instances of UIPC.

Bug: 69623109
Test: play music using A2DP
Change-Id: Ie95f5272c92b5540034ebd166dbe10ea5b2b86a1

6 years agoAdd new sample rate BTAV_A2DP_CODEC_SAMPLE_RATE_24000
Jakub Pawlowski [Fri, 2 Mar 2018 09:56:09 +0000 (01:56 -0800)]
Add new sample rate BTAV_A2DP_CODEC_SAMPLE_RATE_24000

Test: compilation
Bug: 69623109
Change-Id: Ieffdd6e27ada8cbf221cfa7d1c0648aeb1c89be1

6 years agoHearing Aid BTIF interface implementation
Jakub Pawlowski [Thu, 1 Mar 2018 06:44:42 +0000 (22:44 -0800)]
Hearing Aid BTIF interface implementation

Boilerplate code - thread switching, logging and attaching to BTIF
infrastructure.

Test: manual with hearing aid
Bug: 69623109
Change-Id: I34a6542827a581a2fbe0b53e7220b7ff7ecbf540

6 years agoMerge "Multi-A2DP: stop or flush the A2DP queue only for Active peer"
Treehugger Robot [Thu, 1 Mar 2018 23:27:53 +0000 (23:27 +0000)]
Merge "Multi-A2DP: stop or flush the A2DP queue only for Active peer"

6 years agoMerge "Hearing Aid BTA interface"
Treehugger Robot [Thu, 1 Mar 2018 23:06:08 +0000 (23:06 +0000)]
Merge "Hearing Aid BTA interface"

6 years agoMerge "Call BTA_VendorCleanup on proper thread"
Treehugger Robot [Thu, 1 Mar 2018 22:21:29 +0000 (22:21 +0000)]
Merge "Call BTA_VendorCleanup on proper thread"

6 years agoMulti-A2DP: stop or flush the A2DP queue only for Active peer
Pavlin Radoslavov [Thu, 1 Mar 2018 16:26:43 +0000 (08:26 -0800)]
Multi-A2DP: stop or flush the A2DP queue only for Active peer

The A2DP queue should be flushed or the A2DP Tx/Rx operations
should be stopped only for the Active peer.
Otherwise, disconnecting a non-active A2DP Peer stops audio
output for the Active peer.

Bug: 73956686
Test: Manual: Connect two A2DP Sink devices, play music on the
      Active device, disconnect the non-Active device
Change-Id: I32a624c012ef2cd9ef0057f7289a6ed713f88039

6 years agoHearing Aid BTA interface
Jakub Pawlowski [Thu, 1 Mar 2018 06:59:32 +0000 (22:59 -0800)]
Hearing Aid BTA interface

This is the interface between the btif and bta layer, and also between
the profile implementation and audio source.
Submitting it in separate CL allows us to split the work on those
submodules.

Bug: 64038649
Test: compilation
Change-Id: I40663df4e3d8cfb401f9da6084b7212b7bdbcc8c

6 years agoCall BTA_VendorCleanup on proper thread
Jakub Pawlowski [Thu, 1 Mar 2018 19:54:16 +0000 (11:54 -0800)]
Call BTA_VendorCleanup on proper thread

Right now this function is running on any thread that call it, i.e. one
of Binder threads. This is introducing race condition during shutdown.

Test: restart bluetooth 10 times
Fix: 74075027
Change-Id: I426284792901e6a9540cb6420a7e27a340a3fe1d

6 years agoMerge "Pre-compute the RTP Header Marker Bit by using the correct peer address"
Treehugger Robot [Thu, 1 Mar 2018 20:01:02 +0000 (20:01 +0000)]
Merge "Pre-compute the RTP Header Marker Bit by using the correct peer address"

6 years agoRemove unused adjustAvrcpAbsoluteVolume
Ajay Panicker [Wed, 28 Feb 2018 19:38:26 +0000 (11:38 -0800)]
Remove unused adjustAvrcpAbsoluteVolume

The AudioManager now handles all calculations for volume stepping now
and no longer uses adjustAvrcpAbsoluteVolume.

Bug: 68812037
Test: Compile and test Absolute Volume on a device that supports it
Change-Id: I34f27d27b4c5c3959a84a6dc438edfed45a0b3e3

6 years agoHearing Aid Audio HAL
Jakub Pawlowski [Fri, 23 Feb 2018 21:55:48 +0000 (13:55 -0800)]
Hearing Aid Audio HAL

The code is cloned from the existing A2DP Audio HAL.
In the future it will expand to include hearing-aid specific
mechanism.

Test: code compilation
Bug: 64038649
Change-Id: I976aa189929c3051b83615d1536315a099f31a67

6 years agoMerge "Add new sample rate BTAV_A2DP_CODEC_SAMPLE_RATE_16000"
Treehugger Robot [Thu, 1 Mar 2018 10:25:39 +0000 (10:25 +0000)]
Merge "Add new sample rate BTAV_A2DP_CODEC_SAMPLE_RATE_16000"

6 years agoPre-compute the RTP Header Marker Bit by using the correct peer address
Pavlin Radoslavov [Thu, 1 Mar 2018 07:34:28 +0000 (23:34 -0800)]
Pre-compute the RTP Header Marker Bit by using the correct peer address

The RTP Header Marker Bit is computed by using the peer address
to lookup the corresponding codec instead of using the codec
for the current active peer.

Also, the pre-computed result is stored in the SCB for the peer instead
of storing a pointer to the current codec config.

Bug: 73897470
Test: Manual - disconnect, reconnect A2DP headsets
Change-Id: Id015de7be2a297b86ac945c7b7c64e6bc13ffc42

6 years agoAdd new sample rate BTAV_A2DP_CODEC_SAMPLE_RATE_16000
Jakub Pawlowski [Thu, 1 Mar 2018 02:40:33 +0000 (18:40 -0800)]
Add new sample rate BTAV_A2DP_CODEC_SAMPLE_RATE_16000

Test: compilation
Bug: 69623109
Change-Id: Ib7c94c538d8636719658814d2a73bc997ab6dddc

6 years agoAdd the AVRCP Device class for the AVRCP Refactor
Ajay Panicker [Thu, 22 Feb 2018 05:04:24 +0000 (21:04 -0800)]
Add the AVRCP Device class for the AVRCP Refactor

The AVRCP Device class handles all the state tracking for each connected
device as well as handling all the different message responses.

Bug: 68854188
Test: run_host_unit_tests.py && run_unit_tests.sh net_test_avrcp
Change-Id: Ic39337eff3e404ca3c2d96f48e79948fac83d7cb

6 years agoHearing Aid BTIF interface
Jakub Pawlowski [Wed, 22 Nov 2017 00:35:49 +0000 (16:35 -0800)]
Hearing Aid BTIF interface

This is first version of Hearing Aid interface.

Test: compilation
Bug: 69623109
Change-Id: I157dc8d1481c1f034c15aac7dd33a5103cf5ea14

6 years agoMerge changes from topics "bt-a2dp-remove-redundant-alarm-free", "bt-a2dp-codec-init...
Treehugger Robot [Tue, 27 Feb 2018 08:37:13 +0000 (08:37 +0000)]
Merge changes from topics "bt-a2dp-remove-redundant-alarm-free", "bt-a2dp-codec-init-same-thread"

* changes:
  Removed redundant alarm_free() call on the wrong thread
  Perform all codec-related init operations on the same thread

6 years agoRemoved redundant alarm_free() call on the wrong thread
Pavlin Radoslavov [Tue, 27 Feb 2018 07:16:43 +0000 (23:16 -0800)]
Removed redundant alarm_free() call on the wrong thread

Bug: 73741079
Bug: 73892830
Test: Manual - A2DP connect/disconnect; audio streaming
Change-Id: I3e553245ef5ac10835d08b78e52a3fbd945914ee

6 years agoPerform all codec-related init operations on the same thread
Pavlin Radoslavov [Tue, 27 Feb 2018 06:44:30 +0000 (22:44 -0800)]
Perform all codec-related init operations on the same thread

Renamed btif_a2dp_source_encoder_init_event() to
btif_a2dp_source_setup_codec_delayed() and moved the
peer parameter fetching from btif_a2dp_source_setup_codec()
to btif_a2dp_source_setup_codec_delayed()

Test: Manual - A2DP connect/disconnect; audio streaming
Change-Id: Ib29dd6b2bef3045be3727122e1f8608780921d98

6 years agoClear the A2DP active device within the native stack during cleanup
Pavlin Radoslavov [Tue, 27 Feb 2018 06:53:05 +0000 (22:53 -0800)]
Clear the A2DP active device within the native stack during cleanup

Use explicit SetActivePeer(RawAddress::kEmpty) for BtifAvSource and
BtifAvSink during Cleanup()

Also, replaced incorrectly classified BTIF_TRACE_WARNING() log messages
with LOG_INFO().

Bug: 73832547
Test: Manual - A2DP streaming, enable Location -> Bluetooth scanning,
      restart Bluetooth in Quick Settings
Change-Id: Ieeae8915a45dc0c98cd68bd4bb113424c2de74d9

6 years agoInitialize max number of connected A2DP devices in the native stack via JNI
Pavlin Radoslavov [Tue, 27 Feb 2018 03:16:05 +0000 (19:16 -0800)]
Initialize max number of connected A2DP devices in the native stack via JNI

Pass the maximum number of connected A2DP devices from Java to the
native stack as a parameter to the init() call.

Bug: 72351654
Test: Manual: Connect to multiple A2DP devices, check the log messages
Change-Id: I0647c36fe7c6a2df2c42a60b53b5cf505160b1e6

6 years agoMerge "Add/update the BTIF A2DP log messages"
Treehugger Robot [Tue, 27 Feb 2018 01:02:21 +0000 (01:02 +0000)]
Merge "Add/update the BTIF A2DP log messages"

6 years agoHCI: Set a timer to abort after a timeout
Myles Watson [Sat, 24 Feb 2018 01:28:23 +0000 (17:28 -0800)]
HCI: Set a timer to abort after a timeout

Add code to clean up the timer and close the file whether
abort gets called or not.

Bug: 72719600
Bug: 72474659
Test: Cause an HCI timeout and wait for the firmware dump
Change-Id: I713f440d77bfad4c9f17dfc57f98ba5bada37fff

6 years agoAdd/update the BTIF A2DP log messages
Pavlin Radoslavov [Mon, 26 Feb 2018 20:08:22 +0000 (12:08 -0800)]
Add/update the BTIF A2DP log messages

 * Added new log messages where needed
 * Updated existing log messages so the message format is more aligned
   with the rest of the messages

Test: Manual: A2DP streaming
Change-Id: I9f953c43df1ff415379bb7d7fb61f0d33760df30

6 years agoUse assigned UUID for Hearing Aid Service
Jakub Pawlowski [Thu, 22 Feb 2018 23:02:25 +0000 (15:02 -0800)]
Use assigned UUID for Hearing Aid Service

Test: manual
Bug: 64038649
Change-Id: Ie5b39d74d245373142be31027cccb5f51f8586bf

6 years agoMerge "Add explicit init/cleanup steps for A2DP Source and Sink"
Treehugger Robot [Sat, 24 Feb 2018 04:49:57 +0000 (04:49 +0000)]
Merge "Add explicit init/cleanup steps for A2DP Source and Sink"

6 years agoAdd explicit init/cleanup steps for A2DP Source and Sink
Pavlin Radoslavov [Fri, 23 Feb 2018 17:04:57 +0000 (09:04 -0800)]
Add explicit init/cleanup steps for A2DP Source and Sink

The startup/shutdown steps for A2DP Source and Sink
are done when setting/resetting the Active device, and this
implies the device has been connected.

The operations that must be done before the remote device
is connected are moved to init (and cleanup for the reverse operations)

Bug: 73832547
Test: Manual - Connect/disconnect/play A2DP to Headset
Change-Id: Iaa55c2d27443646111f07a53d2c5163bca9e256d

6 years agoL2CAP: Discard pending requests on link disconnect
Manoj Babulal [Thu, 13 Jul 2017 07:04:09 +0000 (12:34 +0530)]
L2CAP: Discard pending requests on link disconnect

Scenario: A connection request packet is admitted to link tx queue in
L2CAP but before it could be transmitted (host busy), ACL link can get
disconnected (idle timeout) and the link tx queue is not flushed during
link disconnect handling. In such scenario, subsequent connection
attempt by host is seen to fail. This is because host is found to send
multiple connection requests (one connect request packet from the queue
and a new connection request packet per new request). Remote accepts old
connection request packet and waits for connection response from host.
For next connection request seen by remote, remote responds with 'No
PSM' resource error (as it already admitted one connection request and
it is in progress). Here when the connection response arrives from
remote, host ignores it because it sees packet id mismatch (host had
sent old connection request first and later information request/response
packets were exchanged. Remote had sent connection response copying
stale packet id picked from old connection request).

Drop queued packets as part of link disconnection handling.
This was already done in BLE transport case and is now being done
unconditionally.

Fixes: 73050475
Test: back-to-back PAN connect-disconnect iterations amidst ongoing
      OPP file transfer and AV streaming
Change-Id: I42cc7ae90cc1152f1781282698529fe50f0ebf89

6 years agoUprev to AVDTP 1.3 and Implement AVDTP delay reports
Ajay Panicker [Wed, 21 Dec 2016 23:37:34 +0000 (15:37 -0800)]
Uprev to AVDTP 1.3 and Implement AVDTP delay reports

Implement receiving the delay report message which requires AVDTP 1.3.
Also start keeping track of total number of audio bytes sent over the
air. We now will report both of these values to the audio HAL so that
they can adjust audio playback using these values.

Bug: 32755225
Test: Manual test with a device that supports delay reporting
      Testtracker: 145280
Change-Id: I22c1c6401e4912efab06fa56fb582faae4b38eaf

6 years agoMerge "Remove unreachable code"
Treehugger Robot [Fri, 23 Feb 2018 18:32:54 +0000 (18:32 +0000)]
Merge "Remove unreachable code"

6 years agoFree the A2DP Source media alarm on the A2DP Source worker thread
Pavlin Radoslavov [Fri, 23 Feb 2018 11:35:37 +0000 (03:35 -0800)]
Free the A2DP Source media alarm on the A2DP Source worker thread

Move the alarm_free() for the A2DP Source media alarm from
btif_a2dp_source_shutdown() to btif_a2dp_source_shutdown_delayed().
The latter is executed on the btif_a2dp_source_thread.
This avoids a race condition with btif_a2dp_source_audio_tx_stop_event()
that also might attempt to free the same alarm.

Test: Manual - unpair A2DP device while A2DP streaming.
Bug: 73741079
Change-Id: Ia871fcbeaae7c351878228e7605e65307a3d1583

6 years agoCorrect the value for BT_RC_NUM_APP for Multi-A2DP / Multi-AVRCP
Pavlin Radoslavov [Sat, 10 Feb 2018 23:23:49 +0000 (15:23 -0800)]
Correct the value for BT_RC_NUM_APP for Multi-A2DP / Multi-AVRCP

The original value of BT_RC_NUM_APP was incorrectly increased from
1 to 12 for the purpose of supporting up to 6 AVRCP connected devices.

The new BT_RC_NUM_APP value is corrected to 6:
  BT_RC_NUM_APP -> 1 -> 12 -> 6 (AVRCP-related - MaxDevices)

Test: Manual - connected to multiple headsets and selected each
      headset to play audio.
Bug: 70350399
Change-Id: I53e350c2bf1717b1f031a7a265adf3417cf3c513

6 years agoReplace AVRC callback function pointers with base::Callback
Ajay Panicker [Sun, 26 Nov 2017 00:27:33 +0000 (16:27 -0800)]
Replace AVRC callback function pointers with base::Callback

Replace function pointers with base::Callback for AVRCP to make
interfacing with the new AVRCP service easier.

Bug: 68812037
Test: Connect headset and see that Absolute volume and passthrough
commands still work.

Change-Id: I2ab20b7b59186aea413a736f43e926e17915a139

6 years agoRevert "Remove A2DP Source/Sink startup calls during A2DP initialization"
Andre Eisenbach [Wed, 21 Feb 2018 02:38:52 +0000 (02:38 +0000)]
Revert "Remove A2DP Source/Sink startup calls during A2DP initialization"

This reverts commit 83255478b0457f291d6a78795444ff3b895d4a90.

Reason for revert:
Prevents audio routing due to stale active device record if
Bluetooth is toggled without the process stopping completely
(ex. LE-only mode).

Bug: 72701090
Change-Id: Ifa798e63df14855b5bf0bd45e1557315cd51034d
Fixes: 73601288

6 years agoAdd packet classes needed for AVRCP Absolute Volume
Ajay Panicker [Sat, 17 Feb 2018 19:22:48 +0000 (11:22 -0800)]
Add packet classes needed for AVRCP Absolute Volume

Add the Register Notification Request packet as well as the
packets Set Absolute Volume packet.

Bug: 68854188
Test: run host native test net_test_packets
Change-Id: Ie0d1f1fb23254c1353b6a73529ca93e92f231ed5

6 years agoRemove unreachable code
Yi Kong [Tue, 20 Feb 2018 17:48:09 +0000 (12:48 -0500)]
Remove unreachable code

The conditionals can never be true, as they are outside of the bounds of
their data types. Fixes tautological-constant-compare warning.

Bug: 72331526
Test: m
Change-Id: I74063fe19b319ee32e4c1c8b3a5fc7ed612586e3

6 years agoOSI: Protect cutils/properties.h from direct calls
Myles Watson [Fri, 16 Feb 2018 21:11:04 +0000 (13:11 -0800)]
OSI: Protect cutils/properties.h from direct calls

Bug: None
Test: compile, no calls to property_get outside of libosi
      change PROPERTY_VALUE_MAX in osi/include/properties.h
      -> doesn't compile
Change-Id: I18c7b861782b1df4878da032ae3f0340dffdecab

6 years agoGet rid of BTA_HOST_INTERLEAVE_SEARCH
Jakub Pawlowski [Fri, 16 Feb 2018 21:21:58 +0000 (13:21 -0800)]
Get rid of BTA_HOST_INTERLEAVE_SEARCH

Test: compilation
Change-Id: I6f91cd783fc1dd46cda55d3456a67eb78ba4c7ae

6 years agoMerge "Make STREAM_TO_UINT64 globally available"
Treehugger Robot [Fri, 16 Feb 2018 05:49:15 +0000 (05:49 +0000)]
Merge "Make STREAM_TO_UINT64 globally available"

6 years agoMerge "Add btif_config_(get/set)_uint64"
Treehugger Robot [Fri, 16 Feb 2018 04:49:38 +0000 (04:49 +0000)]
Merge "Add btif_config_(get/set)_uint64"

6 years agoAdd btif_config_(get/set)_uint64
Jakub Pawlowski [Thu, 15 Feb 2018 18:09:03 +0000 (10:09 -0800)]
Add btif_config_(get/set)_uint64

Bug: 69623109
Test: added ConfigTest.config_get_uint64
Change-Id: Id2285a6f961f72d28912defad66663ddd05fb741

6 years agoReduce spammy error log in gatt_attr.cc, plus minor logging improvements
Jakub Pawlowski [Thu, 15 Feb 2018 23:38:39 +0000 (15:38 -0800)]
Reduce spammy error log in gatt_attr.cc, plus minor logging improvements

Test: compilation, observe colored log output on startup
Change-Id: I6671f5a900f15a57cc9b38b01aaec296002ad233

6 years agoMake STREAM_TO_UINT64 globally available
Jakub Pawlowski [Thu, 15 Feb 2018 18:18:29 +0000 (10:18 -0800)]
Make STREAM_TO_UINT64 globally available

Bug: 69623109
Change-Id: I38958dc16d42ab2396d3acd7605b63ec6a6c2dd8

6 years agoMerge "Final IBluetoothHearingAid.aidl improvements"
Treehugger Robot [Thu, 15 Feb 2018 04:14:43 +0000 (04:14 +0000)]
Merge "Final IBluetoothHearingAid.aidl improvements"

6 years agoFinal IBluetoothHearingAid.aidl improvements
Jakub Pawlowski [Wed, 14 Feb 2018 22:04:56 +0000 (14:04 -0800)]
Final IBluetoothHearingAid.aidl improvements

Use HiSyncId instead of CustomerId for unique hearing aid id, use proper
data type for it (64bit).
Make setVolume, adjustVolume return void, like for AVRCP.

Bug: 69623109
Test: compliance with the spec
Change-Id: I5fd51514793052d4ee2c3f9029eb75491145cc25

6 years agoRemove A2DP Source/Sink startup calls during A2DP initialization
Pavlin Radoslavov [Wed, 14 Feb 2018 18:26:13 +0000 (10:26 -0800)]
Remove A2DP Source/Sink startup calls during A2DP initialization

Don't call btif_a2dp_source_startup() / btif_a2dp_sink_startup()
inside BtifAvSource::Init() / BtifAvSink::Init() .
Those calls are already happening at the right time later during
BtifAvSource::SetActivePeer() / BtifAvSink::SetActivePeer()

Bug: 72701090
Test: Manual with multiple headsets
Change-Id: I634a2c90a7758891565c97e86b83335608ffab69

6 years agoUse correct call btif_a2dp_sink_startup() for Sink peers
Pavlin Radoslavov [Wed, 14 Feb 2018 12:12:54 +0000 (04:12 -0800)]
Use correct call btif_a2dp_sink_startup() for Sink peers

Replaced an incorrect call to btif_a2dp_source_startup() with
btif_a2dp_sink_startup() inside BtifAvSink::SetActivePeer()

Also, minor cleanup: fix log messages, add missing description for
some of the methods.

Bug: 72701090
Test: Manual with Headet
Change-Id: I0620833b02bd9012fea63ce2ce5e3c4c74d27bf7

6 years agoA2DP: Cleanup UIPC when no active device
Hansong Zhang [Fri, 2 Feb 2018 02:02:53 +0000 (18:02 -0800)]
A2DP: Cleanup UIPC when no active device

* Modified UIPC to support multiple users
* A2DP now calls UIPC_Close() when it has no active device, and calls
  UIPC_Init() when it has an active device

Bug: 72701090
Test: Carkits with A2DP
Change-Id: Ic1b4b1be2aa01c9896883e3cb2a668d7a43316f9

6 years agoMerge "Add AVRCP Browse packets to the completed packets."
Treehugger Robot [Wed, 14 Feb 2018 03:48:51 +0000 (03:48 +0000)]
Merge "Add AVRCP Browse packets to the completed packets."

6 years agoMerge "btif: Remove unused synchronization in event_cleanup_stack"
Treehugger Robot [Wed, 14 Feb 2018 03:06:38 +0000 (03:06 +0000)]
Merge "btif: Remove unused synchronization in event_cleanup_stack"

6 years agoMerge "IBluetoothHearingAid.aidl"
Treehugger Robot [Wed, 14 Feb 2018 02:13:41 +0000 (02:13 +0000)]
Merge "IBluetoothHearingAid.aidl"

6 years agoAdd AVRCP Browse packets to the completed packets.
Ajay Panicker [Tue, 30 Jan 2018 18:36:45 +0000 (10:36 -0800)]
Add AVRCP Browse packets to the completed packets.

Also add class representations for the following packet types:
  AVRCP Browse Packet
    AVRCP Change Path
    AVRCP Get Folder Items
    AVRCP Get Item Attributes
    AVRCP Set Browsed Player
    AVRCP Get Total Number of Items
    AVRCP Play Item

Bug: 68854188
Test: run host native test net_test_packets
Change-Id: I0bc682b11ec9181cfe1ed92678bb869ff3ef5740

6 years agoMerge "Adjust buffer length to fit in sdp_copy_raw_data()"
Treehugger Robot [Wed, 14 Feb 2018 01:20:48 +0000 (01:20 +0000)]
Merge "Adjust buffer length to fit in sdp_copy_raw_data()"

6 years agobtif: Remove unused synchronization in event_cleanup_stack
Manu Viswanadhan [Fri, 14 Oct 2016 11:35:35 +0000 (17:05 +0530)]
btif: Remove unused synchronization in event_cleanup_stack

Use Case: Repeated BT ON/OFF

Failure: FD leak is observed with ON/OFF stress test
which eventually leads to crash due to unavailability
of FDs.

Steps:
BT ON/OFF

Root Cause: During stack cleanup an unused future
structure is created which is not freed, leading to FD
leak.

Fix: Remove the creation of the future structure

Test: BT ON/OFF
Fixes: 36019324
Change-Id: Id5945da87f00eb7ab77a5f217c95cc43f0136e06

6 years agoIBluetoothHearingAid.aidl
Jakub Pawlowski [Tue, 13 Feb 2018 18:12:00 +0000 (10:12 -0800)]
IBluetoothHearingAid.aidl

Bug: 69623109
Test: Spec was reviewed, tests will be included with client/server implementation
Change-Id: I8c972ac0e4aa908a14893c957ae07dd2244abbfe

6 years agoAdjust buffer length to fit in sdp_copy_raw_data()
Venkata Jagadeesh Garaga [Thu, 15 Sep 2016 10:21:40 +0000 (15:51 +0530)]
Adjust buffer length to fit in sdp_copy_raw_data()

Align copy length with source buffer offset so that copy length will be
in boundary of the allocated buffer size

Test: Manual tested with DECK speaker.
Fixes: 35864526
Change-Id: If1a49e46e2948346226fbc96d7c2b56244cd60cc

6 years agoFactor out libchrome_support_defaults
Myles Watson [Tue, 13 Feb 2018 18:33:54 +0000 (10:33 -0800)]
Factor out libchrome_support_defaults

Disable Mac support for host binaries in one place, since
the dependency is based on libchrome support.

Test: build
Change-Id: I6641e18deffdff5205da181ad97e8b2892073a8f

6 years agoMerge "Remove libbluetooth-system requirement."
Treehugger Robot [Tue, 13 Feb 2018 17:34:05 +0000 (17:34 +0000)]
Merge "Remove libbluetooth-system requirement."

6 years agoAdd more details in native Bluetooth debug logs
Stanley Tng [Thu, 8 Feb 2018 20:26:51 +0000 (12:26 -0800)]
Add more details in native Bluetooth debug logs

As part of debugging a security/pairing issue, these logs are modified
to give better debug information.

Test: compiled
Bug: 71364658
Change-Id: I742cc7dda0afc6350e881c22d03bdc1c69d37d88

6 years agoMake loghex properly count numer length
Jakub Pawlowski [Mon, 12 Feb 2018 21:18:33 +0000 (13:18 -0800)]
Make loghex properly count numer length

Test: manual logs observation
Change-Id: I7ea8d4afa5ea980f11067a8dd920a1735cf28993

6 years agoRemove libbluetooth-system requirement.
Steven Moreland [Mon, 12 Feb 2018 22:40:07 +0000 (14:40 -0800)]
Remove libbluetooth-system requirement.

This module doesn't exist and it being missing was
silently ignored.

Bug: 7456955
Test: no longer receive an error for this.
Change-Id: Ib84b592d25e19b2c6b0d20466015553fe57f5bf8

6 years agoAVRCP: Don't fail in set_volume on disconnected devices
Ajay Panicker [Sat, 10 Feb 2018 02:42:56 +0000 (18:42 -0800)]
AVRCP: Don't fail in set_volume on disconnected devices

Test: Change the volume on a headset with absolute volume
Bug: 72987704
Change-Id: Ia1acd28c51707e7b71e47140aaded0298ba4e8aa

6 years agoMerge "Build: Remove DCHECK_ALWAYS_ON flag"
Treehugger Robot [Sat, 10 Feb 2018 00:28:54 +0000 (00:28 +0000)]
Merge "Build: Remove DCHECK_ALWAYS_ON flag"

6 years agoMerge "A2DP: Construct BtWorkerThread's message loop on designated thread"
Treehugger Robot [Fri, 9 Feb 2018 22:14:27 +0000 (22:14 +0000)]
Merge "A2DP: Construct BtWorkerThread's message loop on designated thread"

6 years agoBuild: Remove DCHECK_ALWAYS_ON flag
Jack He [Fri, 9 Feb 2018 11:02:46 +0000 (03:02 -0800)]
Build: Remove DCHECK_ALWAYS_ON flag

* According to libchrome documentation, DCHECK_ALWAYS_ON must be set or
  unset on both our library and libchrome. Flag mis-match may cause
  hard-to-debug segfaults which we experience when using base::Thread

Change-Id: If3740196340b02d2d0bb41e08f0b551d47f49864
Fixes: 73147157
Test: make

6 years agoA2DP: Construct BtWorkerThread's message loop on designated thread
Jack He [Thu, 8 Feb 2018 01:33:16 +0000 (17:33 -0800)]
A2DP: Construct BtWorkerThread's message loop on designated thread

* Moves BtWorkerThread's message_loop_'s construction to the
  Run() method run by the designated message_loop_thread_ so that
  message_loop_'s construction and execution are on the same thread
* Makes BtWorkerThread::StartUp() blocking until message_loop_
  starts running using std:condition_variable
* Modify BtWorkerThread::DoInThread() to return boolean

Detail:

Before this CL, BtWorkerThread.message_loop_ is created on Java main
thread and run on message_loop_thread_. During clean-up, A2DP shutdown
message_loop_thread_, rendering the posted_from field in current_pending_task_
invalid. However, although the runner thread is killed, the owner
thread, the Java main thread, is still active. Therefore, we we try to
PostTask() from Java main thread after message_loop_thread_ is killed,
we will try to access an invalid Location object. This results in a
SEGV_MAPPER SEGFAULT. Thus, the fix would be creating and running the
message loop on the same thread so that Java main thread won't have an
invalid message loop after the worker thread is killed.

This can be detected earlier through adding "-DDCHECK_ALWAYS_ON" in both
libchrome and libbluetooth and libchrome will validate the thread for
us.

Fixes: 72831931
Test: Test with DCHECK_ALWAYS_ON in both libbluetooth and libchrome
      ProfileServiceTest stress tests

Change-Id: I7b196b8c1113c2758c2b82ddf4d13c46352bb620

6 years agoMerge "Prevent spurious connect failures callback"
Treehugger Robot [Fri, 9 Feb 2018 04:19:31 +0000 (04:19 +0000)]
Merge "Prevent spurious connect failures callback"

6 years agobtif_rc - make set_volume easier to comprehend
Jakub Pawlowski [Thu, 8 Feb 2018 18:26:35 +0000 (10:26 -0800)]
btif_rc - make set_volume easier to comprehend

Test: compilation
Change-Id: I73c01cb5e3a2da1cdb9acc3b7fe3114f4af7373e

6 years agoPrevent spurious connect failures callback
Stanley Tng [Thu, 8 Feb 2018 01:59:04 +0000 (17:59 -0800)]
Prevent spurious connect failures callback

Send connection failures only if the event's mac address matches the
currently bonding device.

Test: Run SL4A "BleCocTest:test_coc_secured_connection_throughput"
Bug: 71364658
Change-Id: I64243996ae37dd376ed36363a7d749b4b5ab36b2

6 years agoMerge "Make sure task_runner is valid when we call PostTask on it"
Treehugger Robot [Thu, 8 Feb 2018 05:02:48 +0000 (05:02 +0000)]
Merge "Make sure task_runner is valid when we call PostTask on it"

6 years agoCall BTA_GATTS_AddService on correct thread
Jakub Pawlowski [Wed, 7 Feb 2018 19:37:18 +0000 (11:37 -0800)]
Call BTA_GATTS_AddService on correct thread

Right now BTA_GATTS_AddService is incorrectly called on btif thread.
This might lead to situations where it is executed while bta thread is
already cleaning up, and deleted the control blocks, resulting in crashes.
From now on, execute it on bta thread. This ensures that it is executed
before control blocks are freed.

Test: sl4a GattClientTest
Bug: 73054849
Change-Id: Ie2bf80414bceba2590c21d3825c78fbb58449520

6 years agoMake sure task_runner is valid when we call PostTask on it
Jakub Pawlowski [Wed, 7 Feb 2018 02:50:10 +0000 (18:50 -0800)]
Make sure task_runner is valid when we call PostTask on it

Test: runtest -j32 bluetooth -c com.android.bluetooth.btservice.ProfileServiceTest
Change-Id: I89426f7eb1204af9def0fa927dfeef1d5aec689f

6 years agoHBS1098 Paring failure after connection with Car-Audio
Srinu Jella [Fri, 24 Feb 2017 04:31:32 +0000 (10:01 +0530)]
HBS1098 Paring failure after connection with Car-Audio

Use Case: HBS1100 Paring failure after connection with Car-Audio

Steps:
1. Establish connection with Volkswagen CK, and then playback music
2. Try to pair with HBS-1100

Failure: DUT going for temporary pairing with HBS1100 when request received
while remote name is not present

Root Cause: As auth_req is not handled properly in bta_dm_pinname_cback during
RNR, auth_req variable got reset and DUT is going for temporary pairing.

Fix: local and remote auth_req and local and remote IO capabilities stored and
retained in call backs properly.

Test: Manually tested

Fixes: 35735338

Change-Id: I83382aac9fc1197d7fb31feedbd0fe3b35de87e8

6 years agoMerge changes from topic "coc-test-increase-data-len"
Stanley Tng [Tue, 6 Feb 2018 01:02:33 +0000 (01:02 +0000)]
Merge changes from topic "coc-test-increase-data-len"

* changes:
  Add function to change LE Tx Data Length
  LE Read Maximum Data Length during startup