OSDN Git Service

android-x86/system-bt.git
6 years agoMerge changes from topic "avrcp-addressed-player-changed"
Treehugger Robot [Wed, 30 May 2018 16:42:33 +0000 (16:42 +0000)]
Merge changes from topic "avrcp-addressed-player-changed"

* changes:
  Send addressed and available player change for PTS test
  Add respond track not selected interim when register notification
  Send UID 0 for track changed if there is no media ID

6 years agoSend addressed and available player change for PTS test
tedwang [Fri, 18 May 2018 10:16:40 +0000 (18:16 +0800)]
Send addressed and available player change for PTS test

Implement HandleAddressPlayerUpdate() and HandAvailablePlayerUpdate()
for PTS test.

Bug: 79375787 79376305
Test: PTS Test AVRCPTG/MPS/BV-05-C AVRCP/TG/MPS/BV-07-C
Change-Id: I6b976af8bdd1afcc9799c50c8e558939cf7be187
Merged-In: I6b976af8bdd1afcc9799c50c8e558939cf7be187
(cherry picked from commit 7a3f78eaa6294d5079312dc9f0e5c7d5c6b5e059)

6 years agoAdd respond track not selected interim when register notification
tedwang [Wed, 16 May 2018 11:51:26 +0000 (19:51 +0800)]
Add respond track not selected interim when register notification

Respond interim with Identifier 0xFFFFFFFFFFFFFFFF register
notification for EVENT_TRACK_CHANGE for pts test

Bug: 79378129
Test: PTS AVRCP/TG/NFY/BV-04-C
Change-Id: Ia861bf4682e9daf9c7c3842df9f95381171da574
Merged-In: Ia861bf4682e9daf9c7c3842df9f95381171da574
(cherry picked from commit a25fca2acb30aafab9cedc521888b794b703eff3)

6 years agoSend UID 0 for track changed if there is no media ID
Ajay Panicker [Tue, 8 May 2018 23:34:04 +0000 (16:34 -0700)]
Send UID 0 for track changed if there is no media ID

Some carkits need the track changed UID to change even though we
explicitly report that UID's are refreshed on any now playing list
change. UID 0 is special since it represents that the song has changed
and forces an update.

Bug: 72824896
Test: Tested with Audi carkit where Spotify wasn't updating past the
first song previously.

Change-Id: I033f9a2f96acfde25922d6912a4927b95fb89596
Merged-In: I033f9a2f96acfde25922d6912a4927b95fb89596
(cherry picked from commit 2789ae2b57085aad446d7e062f66f5d83cf26e0b)

6 years agoLE Create Connection Complete - crash on Command Disallowed
Jakub Pawlowski [Tue, 29 May 2018 22:28:15 +0000 (15:28 -0700)]
LE Create Connection Complete - crash on Command Disallowed

When LE Create Connection Complete is received with status "Command
Disallowed", we can't tell which state we should transition to. This
can be triggered only in case of rare race condition. Crash to recover.

This was introduced in 24adb37e4106bf8544c7729d34451fdf2777c4dc, when
generic handling of all errors to this event was added.

Bug: 77429706
Test: sl4a GattConnectTest
Change-Id: I888861461da296876d97e8784a3dc7c53130fb51

6 years agoMerge "Fix race condition in LE Create Connection Cancel handling"
Jakub Pawlowski [Wed, 30 May 2018 02:43:52 +0000 (02:43 +0000)]
Merge "Fix race condition in LE Create Connection Cancel handling"

6 years agoBluetooth HFP: Use WBS by default (1/5)
Hansong Zhang [Tue, 17 Apr 2018 23:00:30 +0000 (16:00 -0700)]
Bluetooth HFP: Use WBS by default (1/5)

Bug: 72624793
Test: compilation
Change-Id: Ia64c49210769581bba5be7354b67fa50d89cfdaa

6 years agoExplicitly stop streaming when switching streaming to another device
Pavlin Radoslavov [Mon, 28 May 2018 03:06:20 +0000 (20:06 -0700)]
Explicitly stop streaming when switching streaming to another device

* Explicitly call btif_av_stream_stop() inside
  btif_a2dp_source_end_session_delayed() when ending the session.
  It should be called regardless whether we are using software
  or hardware based encoding.
* Removed extra btif_av_stream_stop() call inside
  BtifAvSource::SetActivePeer(), because it is not needed anymore.
  It is replaced by the call inside btif_a2dp_source_end_session_delayed()
* Added "peer_address" argument to btif_av_stream_stop()
  so it can be used to stop the stream to a specific peer.
* Fix an issue inside bta_av_chk_2nd_start() that was triggering
  extra start request to some headsets - the extra start request
  was blocking follow-up legitimate requests.
* Simplify the logic inside bta_av_do_start() so it is easier to
  identify issues when start streaming. The actual processing logic
  itself is not changed.
* Add extra log messages or update existing ones to help debug
  similar issues in the future.

Bug: 79909084
Test: Manual: streaming A2DP, connect a new device, change active device
Change-Id: Id583aa44aec7082dc5f94532e6b41a7ea33813a1
Merged-In: Id583aa44aec7082dc5f94532e6b41a7ea33813a1
(cherry picked from commit 7b97d4d4a45d25a4ac80f3b59a40c115f0a03af4)

6 years agoFix race condition in LE Create Connection Cancel handling
Jakub Pawlowski [Tue, 29 May 2018 19:52:17 +0000 (12:52 -0700)]
Fix race condition in LE Create Connection Cancel handling

Message with description of the issue being fixed:
https://android-review.googlesource.com/c/platform/system/bt/+/646600#message-4781dd6e3e74d8b11ef716bbf58edbc64645f18c

Bug: 77429706
Change-Id: I1c076c7f033fc3d1aaf47887ce691b6325721d85

6 years agoLinux build and linking fix
Jakub Pawlowski [Sat, 26 May 2018 04:07:38 +0000 (21:07 -0700)]
Linux build and linking fix

Test: run bluetoothtbd on Linux
Change-Id: Id9d913f8766b71c77696df25f74a8e33ba57523e

6 years agoMerge "Don't refresh GATT database after bonding"
Jakub Pawlowski [Tue, 29 May 2018 15:03:54 +0000 (15:03 +0000)]
Merge "Don't refresh GATT database after bonding"

6 years agoA2DP Offload: Avoid Offload_start/stop from remote
Sunny Kapdi [Fri, 25 May 2018 16:29:16 +0000 (09:29 -0700)]
A2DP Offload: Avoid Offload_start/stop from remote

When DUT is A2DP Source, and remote initiates start
we suspend it immediately. There is no need to do
Offload_start/stop in this case. Also, the offload
start/stop was coming out of sync here.

Bug: 80284000
Test: Manual
Change-Id: If54c28188e7432ebcba639cd2fbfe81536c2f2e6

6 years agoInform AVRCP Controller before cleaning up.
Joseph Pirozzo [Fri, 25 May 2018 19:31:06 +0000 (12:31 -0700)]
Inform AVRCP Controller before cleaning up.

Move the JNI callback earlier in the procedure before the device info is
zeroed out such that the higher levels know which device disconnected.

Bug: 80265765
Test: Disconnect AVRCP and verify bluetooth_manager reports it is
disconnected.

Change-Id: I1c69341227f4c1c1662022a4a77e1752f6306d2e

6 years agoHFP: Only advance BTIF queue for outgoing connections
Jack He [Thu, 24 May 2018 22:53:27 +0000 (15:53 -0700)]
HFP: Only advance BTIF queue for outgoing connections

* Modify HFP btif layer to only advance queue when there is a
  connection outcome for outgoing connections
* During an ACL collision, incoming connection may preempt outgoing
  connection and come back to the upper layer in a separate control
  block. In this case, we should not advance the btif queue until the
  outgoing connection sends callback to the btif layer
* When RFCOMM connection is successful, but SLC connection failed, we
  should also send callback to Java layer and advance the queue. We
  should only do this when transition from RFCOMM connected to
  Disconnected, not from SLC connected to Disconnected
* We should only advance the queue after sending connection state update
  to Java layer
* This prevents the crash in connect_int() where we check for any
  control block that is left in connecting state

Bug: 80251999
Test: connect HFP devices rapidly to trigger ACL collision
      testplans/details/166812/3975
Change-Id: Iba3736c77d8ef4a4701896461042466c26bc4820

6 years agoHFP: Fix ACL collision handling and WBS update
Jack He [Fri, 25 May 2018 01:59:13 +0000 (18:59 -0700)]
HFP: Fix ACL collision handling and WBS update

* Correctly set control block handle when passing WBS event data to
  upstream
* Correctly reject local outgoing connection when a colliding incoming
  connection is connected to RFCOMM
* Add more logging to help with future debugging

Bug: 80251999
Test: connect HFP devices rapidly and toggle Bluetooth rapidly
      testplans/details/166812/3975
Change-Id: I90616d70335ca68c40251fb722146924c4801cbe

6 years agoDon't refresh GATT database after bonding
Jakub Pawlowski [Wed, 16 May 2018 21:46:40 +0000 (14:46 -0700)]
Don't refresh GATT database after bonding

According to the Bluetooth spec: "For a given client, the server shall have
one set of attributes.".

If we discover services before bonding, we should be fine using them
afterwards, without need to refresh whole GATT database.

This change should speed up bonding HOGP devces by around one second.

Refreshment of GATT database was tied to connection parameter
reenabling. Make sure bonding does not disable connection parameter
change.

Bug: 67057055
Test: Bond with HOGP device, verify profile is connected properly
Change-Id: I1e738c56e211cf3d9234b424f354bf3e468227aa

6 years agoMerge "Linux build fix"
Treehugger Robot [Fri, 25 May 2018 21:09:38 +0000 (21:09 +0000)]
Merge "Linux build fix"

6 years agoFix log level - requesting MTU is not error
Jakub Pawlowski [Thu, 24 May 2018 19:27:10 +0000 (12:27 -0700)]
Fix log level - requesting MTU is not error

Test: compilation
Change-Id: Idf99af22cf4d29f6fb3da08e86e36b3394617c4f

6 years agoLinux build fix
Jakub Pawlowski [Fri, 25 May 2018 16:31:26 +0000 (09:31 -0700)]
Linux build fix

Test: compile on linux
Change-Id: I831df72da8bdec17c4d9c87ebdfb333024eb964c

6 years agoMerge "Add separate sniff mode settings for gamepads"
Treehugger Robot [Thu, 24 May 2018 22:52:05 +0000 (22:52 +0000)]
Merge "Add separate sniff mode settings for gamepads"

6 years agoMerge changes from topic "ds4-support"
Treehugger Robot [Thu, 24 May 2018 22:52:05 +0000 (22:52 +0000)]
Merge changes from topic "ds4-support"

* changes:
  Add UHID GET_REPORT functionality
  Option to send data report through BTA_HhSetReport

6 years agoAdd separate sniff mode settings for gamepads
Kim Low [Wed, 20 Dec 2017 23:11:08 +0000 (15:11 -0800)]
Add separate sniff mode settings for gamepads

For gamepads, the sniff intervals need to be much shorter. The
min is set to 14 slots (8.75ms) and max is set to 18 slots
(11.25ms).

Test: Load >=4.10 hid-sony driver, connect a DualShock4, check its
      responsiveness.
      Wait for 5 minutes, wake it up (if it went into PARK mode)
      and check that it's still as responsive.
      Furthermore, use a Bluetooth sniffer to confirm the sniff
      interval.
Bug: 38511270
Change-Id: I27e2e0c8e88ab51800c4976e0971c92a3793f8d2

6 years agoAdd UHID GET_REPORT functionality
Kim Low [Thu, 6 Apr 2017 20:16:26 +0000 (13:16 -0700)]
Add UHID GET_REPORT functionality

GET_REPORT wasn't supported previously. >=4.10 hid-sony driver
requires this feature to get the calibration data for DualShock4.

To be backwards compatible with kernel 3.10, UHID_FEATURE and
UHID_FEATURE_ANSWER are used instead of UHID_GET_REPORT and
UHID_GET_REPORT_REPLY. Also, UHID_SET_REPORT functionality cannot
be supported since it's not implemented in kernel 3.10.

Test: Load >=4.10 hid-sony driver, connect a DualShock4, and check
      that the DualShock4 LED turns blue, which confirms both
      get feature report and output data report working.
Bug: 38511270
Change-Id: Ic28760f423cc09754fd32a107a499be6677ca747

6 years agoOption to send data report through BTA_HhSetReport
Kim Low [Thu, 6 Apr 2017 19:33:14 +0000 (12:33 -0700)]
Option to send data report through BTA_HhSetReport

Drivers may send SET_FEATURE_REPORT by using type UHID_OUTPUT
and output.rtype UHID_FEATURE_REPORT, or send OUTPUT_DATA_REPORT
by using type UHID_OUTPUT and output.rtype UHID_OUTPUT_REPORT.

For type UHID_OUTPUT, the Fluoride stack calls btif_hh_setreport()
which then calls BTA_HhSetReport() correspondingly. Hence it is
necessary for BTA_HhSetReport() to handle both the output.type
UHID_FEATURE_REPORT (BTA_HH_RPTT_FEATURE) and UHID_DATA_REPORT
(BTA_HH_RPTT_OUTPUT).

Test: No stand-alone test.
Bug: 38511270
Change-Id: I210f6338d3152dad100920dc8a1eb69b563b70ae

6 years agoA2DP Offload: Don't crash on repeated endSession
Sunny Kapdi [Wed, 23 May 2018 22:14:35 +0000 (15:14 -0700)]
A2DP Offload: Don't crash on repeated endSession

AudioOffload endSession is called from multiple places.
Do not crash if session has already ended.

Also, added/enabled extra log messages to help debug similar issues.

Bug: 80148693
Test: Manual
Change-Id: I409c0146f9629cee6bdabf16e52e88201ee02267

6 years agoMerge "GATT: Fix GATT error response for execute write"
Treehugger Robot [Thu, 24 May 2018 03:37:54 +0000 (03:37 +0000)]
Merge "GATT: Fix GATT error response for execute write"

6 years agoMerge "Increase LE connection interval with bonded Hearing Aids"
Treehugger Robot [Wed, 23 May 2018 23:59:08 +0000 (23:59 +0000)]
Merge "Increase LE connection interval with bonded Hearing Aids"

6 years agoMerge "Enable the AVRCP Service by default (2/2)"
Treehugger Robot [Wed, 23 May 2018 23:52:58 +0000 (23:52 +0000)]
Merge "Enable the AVRCP Service by default (2/2)"

6 years agoEnable the AVRCP Service by default (2/2)
Ajay Panicker [Wed, 11 Apr 2018 18:16:26 +0000 (11:16 -0700)]
Enable the AVRCP Service by default (2/2)

Bug: 80188446
Test: Flash a device and see that AvrcpTargetService is enabled
Change-Id: I1ad1fff07b5ee6c553fc89a75e649789d82f85cc
Merged-In: I1ad1fff07b5ee6c553fc89a75e649789d82f85cc

6 years agoIncrease LE connection interval with bonded Hearing Aids
Stanley Tng [Wed, 23 May 2018 01:15:42 +0000 (18:15 -0700)]
Increase LE connection interval with bonded Hearing Aids

When there are bonded Hearing Aids device, increase the minimum LE
Connection Interval to reduce the audio noises on the devices.

Bug: 80079923
Test: Manual test with RAT mouse and HA devices
Change-Id: I589bc574ef7ff3754a149e30fb3c0a685ce27823

6 years agoMerge "HFP: Ignore DISCONNECTED state in PhoneStateChange"
Treehugger Robot [Wed, 23 May 2018 20:46:44 +0000 (20:46 +0000)]
Merge "HFP: Ignore DISCONNECTED state in PhoneStateChange"

6 years agoHFP: Ignore DISCONNECTED state in PhoneStateChange
Jack He [Wed, 23 May 2018 00:35:57 +0000 (17:35 -0700)]
HFP: Ignore DISCONNECTED state in PhoneStateChange

* DISCONNECTED state is a transient state from Telecom service and will
  always lead to IDLE state when the call is completely disconnected
* This state should be ignored as HFP specification does not handle
  cases when a call is being disconnected

Bug: 78674822
Test: Receive incoming call and hangup
Change-Id: Icebdf9b5fdffad3e2b78645d4f0c69ec13b2604c

6 years agoReduce A2DP/AVDTP related dumpsys output
Pavlin Radoslavov [Wed, 23 May 2018 14:40:09 +0000 (07:40 -0700)]
Reduce A2DP/AVDTP related dumpsys output

* Don't print control blocks that are not in use
* Print some sections only if the runtime trace level is DEBUG(=5) or above
* Renamed section "A2DP Codecs and Peers State:" to
  "A2DP Peers State:"

Bug: 80179152
Test: Manual
Change-Id: I9fcd7387ed469094132d5be989d4976ce103cfc8

6 years agoGATT: Fix GATT error response for execute write
Subramanian Srinivasan [Wed, 23 May 2018 02:35:48 +0000 (19:35 -0700)]
GATT: Fix GATT error response for execute write

Usecaes:
Execute GATT/SR/GAW/BI-09C

Expected Result:
Test case passes

Observed Result:
Unable to pass the test cases

Root Cause:
Incorrect error response sent by DUT if there is no pending write request

Fix:
Send GATT_INVALID_OFFSET error when no pending write request

Test: GATT/SR/GAW/BI-09C passes

Bug: 80168519
Change-Id: I74e723ab0e39ce04e21f929a16dffcd996d1d23e

6 years agoExplicitly stop the stream when the A2DP session ends
Pavlin Radoslavov [Wed, 23 May 2018 00:56:22 +0000 (17:56 -0700)]
Explicitly stop the stream when the A2DP session ends

Note: this needs to be done only for the A2DP HW offload scenario.
For the software data path, this will be done by the Audio HAL.

Bug: 80117050
Test: Manual
Change-Id: I4397d219d82d779706e946f0c7f833c1e93e91f4

6 years agoMerge "Update connection parameters just once before GATT discovery"
Treehugger Robot [Tue, 22 May 2018 23:01:26 +0000 (23:01 +0000)]
Merge "Update connection parameters just once before GATT discovery"

6 years agoMerge "Support AVRCP Controller on JNI thread"
Joseph Pirozzo [Tue, 22 May 2018 22:20:02 +0000 (22:20 +0000)]
Merge "Support AVRCP Controller on JNI thread"

6 years agoUpdate connection parameters just once before GATT discovery
Jakub Pawlowski [Tue, 22 May 2018 21:15:31 +0000 (14:15 -0700)]
Update connection parameters just once before GATT discovery

Call to L2CA_EnableUpdateBleConnParams is already made just before
call to bta_gattc_set_discover_st

Test: compilation
Change-Id: I30939065b5486e20c2f6f456dde96266e9395690

6 years agoMerge "HFP: Set audio handle for active device during incoming call"
Treehugger Robot [Tue, 22 May 2018 18:17:38 +0000 (18:17 +0000)]
Merge "HFP: Set audio handle for active device during incoming call"

6 years agoMerge "Use the effective peer MTU when preparing the codec configuration"
Treehugger Robot [Tue, 22 May 2018 17:32:18 +0000 (17:32 +0000)]
Merge "Use the effective peer MTU when preparing the codec configuration"

6 years agoMerge "Don't mix internal AVDTP state when connecting to two devices"
Treehugger Robot [Tue, 22 May 2018 17:25:31 +0000 (17:25 +0000)]
Merge "Don't mix internal AVDTP state when connecting to two devices"

6 years agoMerge "gatt_api: Avoid possible NULL dereference"
Treehugger Robot [Tue, 22 May 2018 16:28:29 +0000 (16:28 +0000)]
Merge "gatt_api: Avoid possible NULL dereference"

6 years agoUse the effective peer MTU when preparing the codec configuration
Pavlin Radoslavov [Tue, 22 May 2018 09:03:20 +0000 (02:03 -0700)]
Use the effective peer MTU when preparing the codec configuration

Added new method A2dpCodecConfig::getEffectiveMtu() and use it
to obtain the effective MTU per peer per codec.
The effective peer MTU could be smaller than the one reported
by the peer (e.g., for interoperability reasons).

Bug: 77913350
Test: Manual
Change-Id: Idd5230681ac5856fd18dd33ac48723c6ea609e16

6 years agogatt_api: Avoid possible NULL dereference
Greg Kaiser [Tue, 22 May 2018 13:59:48 +0000 (06:59 -0700)]
gatt_api: Avoid possible NULL dereference

We move a logging statement which dereferences a NULL pointer
until after the NULL check, and expand the error message for
the NULL check to include the function name.

Test: TreeHugger
Change-Id: Ib5134b0d6b9ec5da95ee62da9412b977925000ee

6 years agoDon't mix internal AVDTP state when connecting to two devices
Pavlin Radoslavov [Fri, 18 May 2018 03:38:44 +0000 (20:38 -0700)]
Don't mix internal AVDTP state when connecting to two devices

There is a race condition when connecting to two devices, and
the connection to one of the devices is not powered on.

Because of the race condition, the wrong tBTA_AV_LCB entry inside
bta_av_sig_chg() might be allocated for the connection to
the device that is powered on. As a result of that, when
the connection attempt to the powered off device times out,
we will use the wrong bta_handle to close the existing AVDTP connection to
the device that is connected.

Also:
 - Add a new function BTA_AvObtainPeerChannelIndex() to select the
   appropriate AvdtpCcb entry if there an outgoing connection request
   while an incoming connection is received.
 - Added/updated log messages to help debugging similar issues in the future
 - Removed unnecessary SetActivePeer() call inside the BtifAv state
   machine for A2DP Source to avoid additional internal/transient glitches

Test: Manual
Bug: 79697137
Change-Id: Ie55e3dcf6c6a15637ce3631f2828548a2423d881

6 years agoGATT: Fix usage of 16 and 32 bit UUID's in Discover services by UUID
Hemant Gupta [Tue, 22 May 2018 03:55:50 +0000 (09:25 +0530)]
GATT: Fix usage of 16 and 32 bit UUID's in Discover services by UUID

Fix improper usage of 16 and 32 bit UUID's in Disocever services by UUID
Fixes PTS test cases GATT/CL/GAD/BV-08-C and GATT/CL/GAR/BV-03-C.

Test: PTS test cases GATT/CL/GAD/BV-08-C and GATT/CL/GAR/BV-03-C passes

Bug: 80095184
Change-Id: Ia0a26bd20ee68c5c7db0bc00036634f6719f25e9

6 years agoHFP: Set audio handle for active device during incoming call
Jack He [Tue, 22 May 2018 00:09:29 +0000 (17:09 -0700)]
HFP: Set audio handle for active device during incoming call

* Set audio handle for active device during incoming call
* Change debug level logging to warning level when SCO is not allowed to
  open or when RING command is not allowed to be sent

Bug: 77949569
Test: connect with HFP devices and receive incoming call
Change-Id: Ibc2caf740f94817ae725786e35e8592390167ce2

6 years agoSimplify bta_gattc_sdp_callback
Jakub Pawlowski [Fri, 18 May 2018 22:57:01 +0000 (15:57 -0700)]
Simplify bta_gattc_sdp_callback

* join multiple if statements to improve readability
* malloc and free memory just once for tBTA_GATTC_CB_DATA

Test: compilation
Change-Id: I907645ed04ed4b628a3b24785b1ccd16b69d83bb

6 years agoMerge "HFP: Return SDP status to HFP layer"
Treehugger Robot [Mon, 21 May 2018 21:20:07 +0000 (21:20 +0000)]
Merge "HFP: Return SDP status to HFP layer"

6 years agoUnify logging in gatt_api.cc
Jakub Pawlowski [Mon, 21 May 2018 16:38:48 +0000 (09:38 -0700)]
Unify logging in gatt_api.cc

- always log conn_id as hex value
- use "=" instead of ":" as delimiter between name and value
- get rid of StringPrintf

Test: compilation
Change-Id: Ia35b79c3732b19661e4655d5cf0923b7e701985f

6 years agoHFP: Return SDP status to HFP layer
Jack He [Sun, 20 May 2018 03:05:02 +0000 (20:05 -0700)]
HFP: Return SDP status to HFP layer

* Fix an error introduced in change Ic0b4498dd623d0ea31b4513d6b7861cae390bc72
  so that SDP status is sent up to the HFP BTA layer
* With SDP status correctly passed up, HFP BTA layer can correctly
  determine when to continue SDP search for HSP
* When open connection to HFP or HSP devices, use a control block's
  registered services instead of passing in opening services every time
  from BTIF layer
* Do not use a control block that are in CONNECTING or DISCONNECTING
  state
* Add a crash in btif_hf.cc:connect_int() to gurantee that no control
  block is in connecting or disconnecting state when connect_int is
  called as it should be guranteed by the btif queue configuration

Bug: 74234576
Test: connect to headset, make calls and hangup
Change-Id: I5e2bce8c2f0f51bd3fd3e85e82827c5fb5e92887

6 years agoAVRCP: Route CType NOT_IMPLEMENTED as a response
Myles Watson [Fri, 18 May 2018 18:31:33 +0000 (11:31 -0700)]
AVRCP: Route CType NOT_IMPLEMENTED as a response

Bug: 79698590
Test: net_test_avrcp, Connect to the Anker MP140
Change-Id: Ie88dcea949ecb33bc3d76d86b07ab0396a21500d

6 years agoAdd General Reject for invalid PDU ID
tedwang [Tue, 15 May 2018 14:21:39 +0000 (22:21 +0800)]
Add General Reject for invalid PDU ID

Add Avrcp Browse General Reject packet
Respond general reject when undefined AVRCP Browsing PDU ID sent from
remote.

Bug: 79376704
Test: run host native test net_test_btpackets
Change-Id: I8a44d8e3f0cc5fac89e23217726c76ede4aff916
(cherry picked from commit 3fbf8b4fff8b52b781fa611e0b62c97bca28d76f)

6 years agoDon't update the MTU across multiple A2DP connections that are open
Pavlin Radoslavov [Wed, 16 May 2018 02:21:03 +0000 (19:21 -0700)]
Don't update the MTU across multiple A2DP connections that are open

Remove function bta_av_chk_mtu() that updates the MTU to the smallest
value across all open A2DP connections, because that function is not needed.
Such MTU update is problematic for Multi-A2DP, because some codecs cannot
be initialized/used if the MTU is too small. E.g., for LDAC the
MTU value used for the codec initialization must be at least 679.

Bug: 79675742
Test: Manual - (1)Connect Bose QC35; (2)Connect Sony SRS-XB2; (3)Play music
Change-Id: I8048a1bf6df6d4d6291bf3570a95b5182af15b6a

6 years agoMerge "Respond reject with INVALID_PARAMETER when register for invalid event ID"
Treehugger Robot [Wed, 16 May 2018 00:12:44 +0000 (00:12 +0000)]
Merge "Respond reject with INVALID_PARAMETER when register for invalid event ID"

6 years agoMerge "Print extra error code if LDAC encoder fails to initialize"
Treehugger Robot [Tue, 15 May 2018 23:21:27 +0000 (23:21 +0000)]
Merge "Print extra error code if LDAC encoder fails to initialize"

6 years agoRespond reject with INVALID_PARAMETER when register for invalid event ID
tedwang [Tue, 15 May 2018 07:25:11 +0000 (15:25 +0800)]
Respond reject with INVALID_PARAMETER when register for invalid event ID

It should respond reject with INVALID_PARAMETER instead of
INVALID_COMMAND while remote registering for an invalid event ID

Bug: 79377562
Test: PTS AVRCP/TG/NFY/BI-01-C
Change-Id: Ic006cb2f6584216f9457af5576dd2d39adaa3cf5
(cherry picked from commit d51c1dc6777eeb4d414c67e38999af436aaf71a8)

6 years agoAVRCP: Respond UID Changed for invalid Get Item Attributes command
Hansong Zhang [Mon, 14 May 2018 18:29:20 +0000 (11:29 -0700)]
AVRCP: Respond UID Changed for invalid Get Item Attributes command

When we receive GetItenAttributes command with an invalid UidCounter
other than 0x0000, we should reply UID Changed (0x05)

Bug: 79270308
Test: PTS AVRCP/TG/MCN/CB/BI-05-C; unit test
Change-Id: I819991d083944de5a08b0cd4fd0fb33c63f0142a

6 years agoAdd respond Reject with Invalid parameter for Unknown Capability ID
tedwang [Wed, 9 May 2018 06:28:04 +0000 (14:28 +0800)]
Add respond Reject with Invalid parameter for Unknown Capability ID

Add handle Get Capabilities with Unknown Capability ID and unit test
for this.

Bug: 79269978
Test: Run host native test net_test_avrcp
Change-Id: I2cb606bcb6462190354bb471577d9383e43649c1
(cherry picked from commit 5e872794641b89b63176befdb04865d5acf14aa3)

6 years agoMerge "AVRCP: Verify SetBrowsedPlayer player ID"
Treehugger Robot [Tue, 15 May 2018 20:13:30 +0000 (20:13 +0000)]
Merge "AVRCP: Verify SetBrowsedPlayer player ID"

6 years agoAVRCP: Verify SetBrowsedPlayer player ID
Hansong Zhang [Mon, 14 May 2018 23:48:58 +0000 (16:48 -0700)]
AVRCP: Verify SetBrowsedPlayer player ID

IUT should reject the invalid SetBrowsedPlayer command sent from PTS.

Bug: 79377126
Test: PTS AVRCP/TG/MPS/BI-02-C
Change-Id: I2afde442e3b3563f4a1a37e2914c9b16fe07e8fc

6 years agoPrint extra error code if LDAC encoder fails to initialize
Pavlin Radoslavov [Tue, 15 May 2018 10:19:41 +0000 (03:19 -0700)]
Print extra error code if LDAC encoder fails to initialize

Also, add a missing CHECK() assert that the LDAC handle is valid.

Bug: 79675742
Test: Code compilation
Change-Id: I4bd51ed978eadc2aecc27d199e6f01bb31c9a631

6 years agoSupport AVRCP Controller on JNI thread
Joseph Pirozzo [Tue, 8 May 2018 03:44:23 +0000 (20:44 -0700)]
Support AVRCP Controller on JNI thread

Recent changes to threading of the BTA layer require that all JNI
callbacks are performed on the JNI thread.  This change updates the APIs
to ensure that the data passed is thread safe.

Bug: 79145011
Test: Browse and Play music via AVRCP Controller.
Change-Id: I191658ea90c96bcf372e772119db6c31c9010230
(cherry picked from commit 4be70639dd863b8e8949f4db5aa2a332c1510412)

6 years agoMerge "Removed alarm callback execution statistics"
Jakub Pawlowski [Tue, 15 May 2018 02:00:07 +0000 (02:00 +0000)]
Merge "Removed alarm callback execution statistics"

6 years agoMerge "Mask "LE Enhanced Connection Complete" when BLE_PRIVACY_SPT=FALSE"
Treehugger Robot [Mon, 14 May 2018 23:28:45 +0000 (23:28 +0000)]
Merge "Mask "LE Enhanced Connection Complete" when BLE_PRIVACY_SPT=FALSE"

6 years agoMask "LE Enhanced Connection Complete" when BLE_PRIVACY_SPT=FALSE
Jakub Pawlowski [Thu, 19 Apr 2018 09:32:40 +0000 (02:32 -0700)]
Mask "LE Enhanced Connection Complete" when BLE_PRIVACY_SPT=FALSE

The code which handles this event is protected by an #ifdef. This was
causing connections to be established, but never detected by host.

Bug: 78264903
Test: establish connection to LE device with privacy disabled
Change-Id: Iea35016108bcbda64427250cc06258c422c1fdce

6 years agoRemoved alarm callback execution statistics
Pavlin Radoslavov [Mon, 8 Jan 2018 19:37:05 +0000 (11:37 -0800)]
Removed alarm callback execution statistics

Updating the alarm state after the callback returns can be problematic
in case the callback itself deleted the alarm.

Bug: 67110137
Test: Manual
Change-Id: Id4de06eebedb792cadd63d09efb68672e9bddc69

6 years agoMerge "Use identity addr in BLE scan filter"
Jakub Pawlowski [Mon, 14 May 2018 20:47:52 +0000 (20:47 +0000)]
Merge "Use identity addr in BLE scan filter"

6 years agoMerge "Use weak pointers for device.cc callbacks to prevent use after delete"
Ajay Panicker [Mon, 14 May 2018 18:26:16 +0000 (18:26 +0000)]
Merge "Use weak pointers for device.cc callbacks to prevent use after delete"

6 years agoUse identity addr in BLE scan filter
Claire Treyz [Fri, 11 May 2018 15:13:28 +0000 (08:13 -0700)]
Use identity addr in BLE scan filter

For BT controllers with the ability to filter scans and resolve RPAs on
controller, when trying to filter for a Public ID type address the
filter must use the static identity address of the peer device instead
of the random pseudo address.

Bug: 78888800
Test: manually tested filtered scanning for BLE peer with RPA with a
device with both offloaded RPA resolution & controller filtering
supported. Tested on a device with no controller filtering, which has
no changes, as expected.

Change-Id: I1d92e219bdbc9ba2399eae637a1f4623d695a3f8

6 years agoMerge "HFP: Workaround for car kits that do not send AT+BAC command"
Treehugger Robot [Fri, 11 May 2018 21:53:02 +0000 (21:53 +0000)]
Merge "HFP: Workaround for car kits that do not send AT+BAC command"

6 years agoMerge "Explicitly restart audio processing when switching active device"
Treehugger Robot [Fri, 11 May 2018 21:06:43 +0000 (21:06 +0000)]
Merge "Explicitly restart audio processing when switching active device"

6 years agoExplicitly restart audio processing when switching active device
Pavlin Radoslavov [Thu, 10 May 2018 16:52:58 +0000 (09:52 -0700)]
Explicitly restart audio processing when switching active device

* Add internal APIs to restart A2DP session and use them
  when switching the A2DP active device:
  btif_a2dp_source_restart_session() and btif_a2dp_sink_restart_session() .
* Removed internal A2DP Source APIs that shouldn't be APIs
* Call immediately btif_a2dp_on_stopped() when processing
  BTIF_AV_STOP_STREAM_REQ_EVT event to stop sooner the audio
  datapath processing and report back to the Audio HAL call.
  This eliminates the need for waiting for the BTA_AV_STOP_EVT
  upcall event from the remote device.
* Added extra log information when processing events in the BtifAv
  state machine.

Bug: 78360113
Test: Manual: streaming A2DP, change active device, change codec setup.
Change-Id: Icb356587af9cfaee7aea9f3f9bc95a0fe000fc52

6 years agoHFP: Workaround for car kits that do not send AT+BAC command
Jack He [Tue, 1 May 2018 06:59:40 +0000 (23:59 -0700)]
HFP: Workaround for car kits that do not send AT+BAC command

* Some misbehaving HF devices (e.g. some Hyundai car kits) indicate
  their support on Wide Band Speech and Codec Negotiation, but do not
  send the required AT+BAC command during Service Level Connection
  setup. However, such car kits still expect Fluoride to do codec
  negotiation during SCO setup.
* This CL adds a workaround so that when HF indicates support for WBS
  and codec negotiation, Fluoride will attempt codec negotiation even
  though AT+BAC is never received.
* Store the SDP feature locally. If WBS is supported and no AT+BAC is
  received, use the SDP features to set the suported codec.

Bug: 77883405
Test: make, connect SCO to and from Hyundai car kits
Change-Id: I2be6007022183cac5b9006f37089a587b4a67372

6 years agoUse weak pointers for device.cc callbacks to prevent use after delete
Ajay Panicker [Thu, 10 May 2018 19:39:32 +0000 (12:39 -0700)]
Use weak pointers for device.cc callbacks to prevent use after delete

Bug: 79400706
Test: Turn bluetooth off then on while connected to a device and playing
music

Change-Id: I2132bb01796a724fba6a36f4eca4f4795b919864
(cherry picked from commit 497e2833c983377ae501c15d5c66327c9c5dbafa)

6 years agoMerge "Add helper classes to auto indent newlines for ostreams"
Treehugger Robot [Thu, 10 May 2018 22:35:02 +0000 (22:35 +0000)]
Merge "Add helper classes to auto indent newlines for ostreams"

6 years agoMerge "Hearing Aid: Add dumpsys log for audio packet"
Treehugger Robot [Thu, 10 May 2018 21:23:46 +0000 (21:23 +0000)]
Merge "Hearing Aid: Add dumpsys log for audio packet"

6 years agoHearingAid RemoveDevice - don't crash when profile not enabled
Jakub Pawlowski [Thu, 10 May 2018 13:42:43 +0000 (06:42 -0700)]
HearingAid RemoveDevice - don't crash when profile not enabled

Bug: 79468820
Test: Unbond non-hearing aid device when profile not enabled
Change-Id: I2a87f8725447045e7bc5b2a33facf1ce14b47c54

6 years agoHearing Aid: Add dumpsys log for audio packet
Hansong Zhang [Wed, 9 May 2018 21:39:56 +0000 (14:39 -0700)]
Hearing Aid: Add dumpsys log for audio packet

Add log for audio drops from audio HAL and buffer overflow
Add log for device capabilities and HiSyncId

Sample output:

Hearing Aid Manager:
  <device1> connected
    binaural right 0x...
    Packet counts (enqueued/flushed)                        : 73557 / 773
    Frame counts (enqueued/flushed)                         : 73557 / 773
  <device2> connected
    binaural left 0x...
    Packet counts (enqueued/flushed)                        : 74172 / 886
    Frame counts (enqueued/flushed)                         : 74172 / 886
  Hearing Aid Audio HAL:
    Counts (underflow)                                      : 0
    Bytes (underflow)                                       : 0
    Last update time ago in ms (underflow)                  : 0

Test: manual
Bug: 69623109
Change-Id: I5021b9214828b1846506638000f29af7343a3354

6 years agoMerge "A2DP: Add logging when A2DP fails to open"
Treehugger Robot [Thu, 10 May 2018 00:58:48 +0000 (00:58 +0000)]
Merge "A2DP: Add logging when A2DP fails to open"

6 years agoMerge "Fix LE cancel open when physical connection is established but not ready"
Vinit Deshpande [Wed, 9 May 2018 23:58:48 +0000 (23:58 +0000)]
Merge "Fix LE cancel open when physical connection is established but not ready"

6 years agoA2DP: Add logging when A2DP fails to open
Jack He [Wed, 9 May 2018 22:44:09 +0000 (15:44 -0700)]
A2DP: Add logging when A2DP fails to open

* Make sure we output a log line whenever A2DP start request returns a
  failure state, namingly:
  - A2DP_CTRL_ACK_FAILURE
  - A2DP_CTRL_ACK_INCALL_FAILURE
  - A2DP_CTRL_ACK_DISCONNECT_IN_PROGRESS

Bug: 74988740
Test: make, logging only change
Change-Id: I63280d6280bf9c3d3ee6c578c1be332f8a9a3be0

6 years agoFix LE cancel open when physical connection is established but not ready
WENTAO WANG [Mon, 20 Nov 2017 21:10:07 +0000 (13:10 -0800)]
Fix LE cancel open when physical connection is established but not ready

Issue:
Cancel open does not work when the physical connection is established
but negotiation is not finished.

Fix:
Close the physical connection and release resources when fitting in this
situation.

Bug: 64230040
Test: test_cancel_open_ble_process
Change-Id: Ia23b5f3aab427b333d9d484b97e4cd4ff49f5319

6 years agoMerge "Fix PTS: TC_GATT_SR_UNS_BI_01_C sends unsupported opcode"
Treehugger Robot [Wed, 9 May 2018 20:23:34 +0000 (20:23 +0000)]
Merge "Fix PTS: TC_GATT_SR_UNS_BI_01_C sends unsupported opcode"

6 years agoAdd helper classes to auto indent newlines for ostreams
Ajay Panicker [Thu, 3 May 2018 19:58:53 +0000 (12:58 -0700)]
Add helper classes to auto indent newlines for ostreams

Bug: 79167906
Test: adb shell dumpsys bluetooth_manager
Change-Id: I54484181abc438e90ade771fca6943c2b303e4db

6 years agoFix PTS: TC_GATT_SR_UNS_BI_01_C sends unsupported opcode
Stanley Tng [Wed, 9 May 2018 17:39:37 +0000 (10:39 -0700)]
Fix PTS: TC_GATT_SR_UNS_BI_01_C sends unsupported opcode

In this PTS test, add code to send back an unsupported error response
when an unsupported OpCode is received.

Bug: 79347869
Test: Rerun and pass PTS test
Change-Id: Ibf95dbc18dabbe201850da675c7a1b2739624de9

6 years agoMerge "Handle unbonding in Hearing Aid profile"
Jakub Pawlowski [Wed, 9 May 2018 08:06:15 +0000 (08:06 +0000)]
Merge "Handle unbonding in Hearing Aid profile"

6 years agoMerge "Remove unused `tags` property from Android.bp files"
Dan Willemsen [Wed, 9 May 2018 05:59:03 +0000 (05:59 +0000)]
Merge "Remove unused `tags` property from Android.bp files"

6 years agoFetch the presentation position only if the audio state is STARTED
Pavlin Radoslavov [Wed, 9 May 2018 01:00:24 +0000 (18:00 -0700)]
Fetch the presentation position only if the audio state is STARTED

The audio HAL will fetch the audio presentation position (for the
purpose of delay reporting if the Headset supports it) only if the
audio state is STARTED.
Otherwise, it will use the default value (e.g., the one used
when the Headset does not support delay reporting).

This avoids unnecessary transient re-opening of the HAL control path
between the Audio framework and Bluetooth native stack (e.g., during
shutdown).

Bug: 78360113
Test: Manual - A2DP streaming with Headsets that support delay reporting
Change-Id: I56f7e9373ba27606913c74fa818da40305df85d4

6 years agoMerge "HFP: Remove parameter to start/stopScoUsingVirtualVoiceCall"
android-build-prod (mdb) [Wed, 9 May 2018 00:25:12 +0000 (00:25 +0000)]
Merge "HFP: Remove parameter to start/stopScoUsingVirtualVoiceCall"

6 years agoRemove unused `tags` property from Android.bp files
Dan Willemsen [Wed, 9 May 2018 00:08:54 +0000 (17:08 -0700)]
Remove unused `tags` property from Android.bp files

The tags property is (and has always been) unused by Soong. The property has
been defined as a list of strings, and the `androidmk` converted any
LOCAL_MODULE_TAGS entries over to it, but we've never done anything with it.

In preparation for removing the definition from Soong, I'm removing it from all
Android.bp files in the tree.

Since this has never done anything, this is a no-op, but if you really did want
the Android.mk behavior, the proper way to define a module to be installed in
userdebug / eng builds is to use PRODUCT_PACKAGES_DEBUG or PRODUCT_PACKAGES_ENG
in the appropriate product makefile.

Change-Id: I48cba711acbc030a98aea674016a0d53f8b5e4aa
Exempt-From-Owner-Approval: global no-op build change
Test: remove `tags` from Soong, see errors go away.

6 years agoHandle unbonding in Hearing Aid profile
Jakub Pawlowski [Tue, 8 May 2018 14:44:43 +0000 (07:44 -0700)]
Handle unbonding in Hearing Aid profile

Bug: 69623109
Change-Id: I3b1f778e414511a3748cebd2b0e233d638cd4d43
Fixes: 79207134
Test: unbond from Hearing Aid when connected or disconnected from it

6 years agoMerge "Return early if vendor-specific command fails"
android-build-prod (mdb) [Tue, 8 May 2018 17:37:04 +0000 (17:37 +0000)]
Merge "Return early if vendor-specific command fails"

6 years agoMerge "Send correct key state and ignore keys from inactive device (1/2)"
Ajay Panicker [Tue, 8 May 2018 16:37:15 +0000 (16:37 +0000)]
Merge "Send correct key state and ignore keys from inactive device (1/2)"

6 years agoReturn early if vendor-specific command fails
Myles Watson [Thu, 3 May 2018 18:15:50 +0000 (11:15 -0700)]
Return early if vendor-specific command fails

Add CHECK() statements to crash if the callback is passed the incorrect
opcode or if there are no parameters.

Bug: 76192234
Bug: 77495521
Test: Start Bluetooth with a BT 3.0 chip (or a simulated one)
Change-Id: Iddd9a8503b2cfd52b16fb1c59f40e108b478e7b6

6 years agoMerge "Fixed PTS: TC_GATT_SR_GAR_BI_01_C failure"
android-build-prod (mdb) [Tue, 8 May 2018 01:03:03 +0000 (01:03 +0000)]
Merge "Fixed PTS: TC_GATT_SR_GAR_BI_01_C failure"

6 years agoFixed PTS: TC_GATT_SR_GAR_BI_01_C failure
Stanley Tng [Mon, 7 May 2018 21:58:36 +0000 (14:58 -0700)]
Fixed PTS: TC_GATT_SR_GAR_BI_01_C failure

When the GATT Read Request has bad handle parameters, returns the
GATT_INVALID_HANDLE error code instead of GATT_INVALID_PDU.

Bug: 79340029
Test: Rerun PTS
Change-Id: I9de576076d7f7aece0831ef57b01c07a24209010

6 years agoSend correct key state and ignore keys from inactive device (1/2)
Ajay Panicker [Fri, 4 May 2018 21:30:45 +0000 (14:30 -0700)]
Send correct key state and ignore keys from inactive device (1/2)

Also make it clearer whether the key state is pushed or released.

Bug: 79178216
Test: Run host native test net_test_avrcp
Change-Id: I8595ac97718bcb2af8f33643df4b9c8059a1b30b

6 years agoHFP: Remove parameter to start/stopScoUsingVirtualVoiceCall
Jack He [Thu, 3 May 2018 23:37:09 +0000 (16:37 -0700)]
HFP: Remove parameter to start/stopScoUsingVirtualVoiceCall

* Since HFP SCO routing is managed by setActiveDevice, there is no need
  for an input parameter to start/stopScoUsingVirtualVoiceCall

Bug: 76114959
Test: build
Change-Id: I2a3f9f7cb1191e2831d30630b2e0c3bee4a0acdb
(cherry picked from commit 426e87e3bada2116580e74815c4e03db78b8105a)

6 years agoMerge "BTM_BleClearBgConnDev: Return if there is no BLE"
android-build-prod (mdb) [Mon, 7 May 2018 06:43:54 +0000 (06:43 +0000)]
Merge "BTM_BleClearBgConnDev: Return if there is no BLE"