OSDN Git Service

android-x86/system-bt.git
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 agobta: Only call get_acl_data_size_ble for LE
Myles Watson [Thu, 3 May 2018 18:13:55 +0000 (11:13 -0700)]
bta: Only call get_acl_data_size_ble for LE

Pass 0xFFFF (max uint16_t) to GAP_ConnOpen, which will call
get_acl_data_size_ble() to correct the value, but only when the
connection type is LE.

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

6 years agoMerge "Add AVRCP native logging to dumpsys"
Ajay Panicker [Thu, 3 May 2018 20:08:53 +0000 (20:08 +0000)]
Merge "Add AVRCP native logging to dumpsys"

6 years agoHID: Update state to disconnected in virtual unplug
Hemant Gupta [Fri, 2 Mar 2018 04:59:25 +0000 (10:29 +0530)]
HID: Update state to disconnected in virtual unplug

Usecase:
1.Pair and connect DUT with Remote device
2.Disconnect Remote device from DUT (Settings menu)
3.Connect to Remote device from settings menu when Remote will not be
  advertising.
4.With in 30 secs of connect command, delete the stored link key and then pair
  and connect again to Remote device from settings menu
  (when RD is advertising).

Expected Result:
Remote device should connect successfully.

Observed Result:
Remote device is shown in paired devices(settings menu)but not connected.

Root cause:
When virtual unplug happens device state is not cleared properly. So next
time when we are trying to connect its going to connected state.

Fix:
Update the current device state to BTHH_CONN_STATE_CONNECTING to
BTIF_HH_DEV_DISCONNECTED when virtual unplug happens.

Test: Issue is not seen after above steps

Fixes: 74082929
Change-Id: I8a325987ff5eb0a8e4f8708fc7c76b8a9ade6ccf

6 years agoUse weak pointers instead of base::Unretained to prevent use after free
Ajay Panicker [Wed, 2 May 2018 00:29:07 +0000 (17:29 -0700)]
Use weak pointers instead of base::Unretained to prevent use after free

Bug: 78517259
Test: Compile and switch users while AVRCP is connected
Change-Id: I9eb4482e4de52fed7750747afdc7cfb5402615a4

6 years agoAdd AVRCP native logging to dumpsys
Ajay Panicker [Wed, 2 May 2018 23:23:13 +0000 (16:23 -0700)]
Add AVRCP native logging to dumpsys

Example output
AVRCP Target Native Service: 2 devices
  d4:90:9c:0a:48:d0
    Current Volume: 42
    Current Browsed Player ID: -1
    Registered Notifications:
      Play Status
    Last Play State: 2
    Last Song Sent ID: ""
    Current Folder: ""
    MTU Sizes: CTRL=1020 BROWSE=332

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

6 years agoMerge "Ignore volume changed events from the non-active device"
android-build-prod (mdb) [Wed, 2 May 2018 19:59:48 +0000 (19:59 +0000)]
Merge "Ignore volume changed events from the non-active device"

6 years agoMerge "Hearing Aid: leave some radio time for other devices"
android-build-prod (mdb) [Wed, 2 May 2018 18:19:53 +0000 (18:19 +0000)]
Merge "Hearing Aid: leave some radio time for other devices"

6 years agoIgnore volume changed events from the non-active device
Ajay Panicker [Wed, 2 May 2018 17:05:24 +0000 (10:05 -0700)]
Ignore volume changed events from the non-active device

Bug: 78251684
Test: Run host native test net_test_avrcp
Change-Id: I164e9ded88c804da2ce8191c5f58cc053cfa6ecd

6 years agoMerge "Use weak pointers to prevent callbacks from executing after cleanup"
Ajay Panicker [Wed, 2 May 2018 17:55:48 +0000 (17:55 +0000)]
Merge "Use weak pointers to prevent callbacks from executing after cleanup"

6 years agoMerge "Use the wrapped volume interface with the AVRCP conneciton handler"
Ajay Panicker [Wed, 2 May 2018 17:52:37 +0000 (17:52 +0000)]
Merge "Use the wrapped volume interface with the AVRCP conneciton handler"

6 years agoHearing Aid: leave some radio time for other devices
Jakub Pawlowski [Thu, 15 Mar 2018 18:37:06 +0000 (11:37 -0700)]
Hearing Aid: leave some radio time for other devices

We should send maximum two packets in connection event, and they
should take less than 3.75ms with acknowledgements.
Leaving some radio time should make us able to keep third LE connection
to some less demanding devices.

Bug: 78364114
Bug: 69623109
Test: stream music through Hearing Aid and connect to some LE device
Change-Id: Ie97b9db456a957c11438208448c562435b1b0222

6 years agoMerge "Fix memory leak for BTRC_ITEM_MEDIA."
Joseph Pirozzo [Wed, 2 May 2018 15:34:17 +0000 (15:34 +0000)]
Merge "Fix memory leak for BTRC_ITEM_MEDIA."

6 years agoUse weak pointers to prevent callbacks from executing after cleanup
Ajay Panicker [Thu, 19 Apr 2018 22:17:16 +0000 (15:17 -0700)]
Use weak pointers to prevent callbacks from executing after cleanup

Switch from using the instance directly to using weak pointers to the
instance. This causes any base::Callback objects that are bound to that
weak instance to be cleaned up if the weak pointer becomes invalid.

Bug: 78134184
Test: valgrind ./net_test_avrcp
--gtest_filter=*disconnectAfterCleanupTest* and see that there is an
invalid read before the fix and it is gone after.

Change-Id: I46c3175e62b87be165e468d014155f8d8154c08a

6 years agoAdd a missing call to btif_av_stream_stop() for SetActivePeer(null)
Pavlin Radoslavov [Tue, 1 May 2018 00:57:34 +0000 (17:57 -0700)]
Add a missing call to btif_av_stream_stop() for SetActivePeer(null)

Without this call, the BtifAv state machine could be left in Started
state, while the A2DP media task timer is canceled.
This internal state inconsistency prevents the proper handling
of Audio HAL commands like SUSPEND - no ACK is returned and
the Audio HAL is blocked.

Bug: b/78901123
Test: Manual - play music to Headset, select "play media to" > This device
      resume music, select "play media to" > Bluetooth Headet

Change-Id: I11b280bea76de02f522e61ebb0a9d7eb5b50f993

6 years agoFix A2DP Suspend related multi-component deadlock
Pavlin Radoslavov [Mon, 30 Apr 2018 20:39:20 +0000 (13:39 -0700)]
Fix A2DP Suspend related multi-component deadlock

Apparently, the processing of A2DP Suspend from the Audio HAL
could result in a deadlock across multiple components:
  A2dpService -> AudioService  -> Audio-BT HAL -> BT Native Stack ->
  BT JNI upcall -> A2dpService

1) A2dpService -> AudioService:
   - Waiting inside setActiveDevice() -> synchronized (mStateMachines) ->
   mAudioManager.setBluetoothA2dpDeviceConnectionStateSuppressNoisyIntent()
   - The mAudioManager call can be blocking: a followup call would wait
     for the previous call to complete.
2) AudioService -> Audio-BT HAL
   The AudioService is wating on the Audio-BT HAL to complete its request.
   In this case the request is SUSPEND
3) Audio-BT HAL -> BT Native Stack
   The Audio side of the Audio-BT HAL is waiting for the BT Native stack
   to ACK the SUSPEND command.
   More specifically, it is retrying few times with timeout of 250ms
   each iteration.

4) BT Native Stack -> BT JNI upcall
   - In the BT Native Stack the BtifAv FSM (see file btif/src/btif_av.cc)
     is in state StateStarted and has received the
     BTIF_AV_SUSPEND_STREAM_REQ_EVT because of the SUSPEND command from the
     Audio HAL.
   - As a result, the LocalSuspendPending flag has been set:
     peer_.SetFlags(BtifAvPeer::kFlagLocalSuspendPending);
   - Only after the above flag is reset, then the BT Native Stack will
     ACK the SUSPEND command from the HAL
   - The above flag will be reset when event BTA_AV_SUSPEND_EVT is received
     from the underlying stack
   - The BtifAv state machine has received the BTA_AV_SUSPEND_EVT event.
     However, prior to clearing the pending status, the FSM tries to
     report the audio state via JNI to the Java layer:
       btif_report_audio_state();
       ...
       peer_.ClearFlags(BtifAvPeer::kFlagLocalSuspendPending);
  - Apparently, all the processing inside the BtifAv FSM is done on
    the JNI thread, including the btif_report_audio_state() upcall.
5) BT JNI upcall -> A2dpService
  - The btif_report_audio_state() upcall calls indirectly
    A2dpNativeInterface.onAudioStateChanged() -> sendMessageToService() ->
    A2dpService.messageFromNative()
  - Within the A2dpService.messageFromNative() processing, there is
    "synchronized (mStateMachines) {}" block, and the processing there
    blocks because per (1) above A2dpService.setActiveDevice() is
    already inside its own "synchronized (mStateMachines) {}" block

The above deadlock is fixed by the following:
 - Modified the BTA_AV_SUSPEND_EVT processing such that
   the clearing of the kFlagLocalSuspendPending flag is done BEFORE
   the btif_report_audio_state()
 - Modified the BtifAv FSM such that the internal processing of the FSM
   events is done on the BTA thread instead of the JNI thread. Thus,
   the FSM processing cannot be blocked by JNI upcalls.

Also:
 - Updated the do_in_bta_thread() function to have a return value
   so it is more aligned with the corresponding do_in_jni_thread()
   implementation
 - Updated the reordering of some other btif_report_*() upcalls inside
   btif_av.cc so they are after the FSM internal processing in the
   current state.
 - Added few extra logs to the Audio-BT HAL (file audio_a2dp_hw.cc).

Bug: 72823323
Test: Disconnect/reconnect with Philips SBH7000 Headset
Change-Id: I7ccb558e458a8e90d0414f94463bda8d4b3fdc97

6 years agoFix memory leak for BTRC_ITEM_MEDIA.
Joseph Pirozzo [Mon, 30 Apr 2018 19:23:18 +0000 (12:23 -0700)]
Fix memory leak for BTRC_ITEM_MEDIA.

Memory is allocated for each media item received from a remote phone for
AVRCP media browsing.  Although the media item itself was freed, the
memory for each attribute was not freed.  Move the allocation up to
the parent function such that it can be allocated and freed in the same
location.

Bug: 78222934
Test: dumpsys meminfo com.android.bluetooth
Change-Id: I217830441949642cd6ef0f96ac5fde9251452095

6 years agoAdd ability to modify IO capability of Bluetooth device
Pulkit Bhuwalka [Thu, 22 Mar 2018 21:34:33 +0000 (14:34 -0700)]
Add ability to modify IO capability of Bluetooth device

Redirects all access to Bluetooth IO capability from
macros. This allows it to be config determined but fall back to #define
values to maintain backward compatibility.

There is also the addition of methods to set IO capability properties.
Since these are done at the adapter level, it reuses
set_adapter_property from the bluetooth interface by adding new
property configs.

Bug: 36015413
Test: Created a test activity to modify values using the API and pair
with different settings. Default value is picked up from macro.

Change-Id: I7b80ea70cef4eacab91d20a58e745281aed273cd
(cherry picked from commit 7a5281f7ffe6860f15fcc088c63b1109f98c0e0e)

6 years agoMerge "RFCOMM: Crash on null MCB and PORT in state machine"
android-build-prod (mdb) [Fri, 27 Apr 2018 23:58:07 +0000 (23:58 +0000)]
Merge "RFCOMM: Crash on null MCB and PORT in state machine"

6 years agoEnable HCI Sniff mode and disable subrating for A2DP
Guang Xie [Thu, 15 Feb 2018 20:42:15 +0000 (12:42 -0800)]
Enable HCI Sniff mode and disable subrating for A2DP

Enabling the HCI Sniff mode could help headsets to save power.

Note that subrating is disabled implicitly by NOT sending the
"Sent Sniff Subrating" HCI command to the BT controller,
and effectively using the default Sniff Subrating parameters.
The Headset shouldn't go into Subrating Mode to prevent
potential stuttering if the Headset chooses to use subrating
with the wrong parameters.

NOTE: This should affect only Pixel Buds.

Also:
 - Added some extra log messages
 - Minor cleanup (argument/variable renaming)

Bug: 74344711
Bug: 74361002
Test: Manual - audio streaming; examine btsnoop logs
Change-Id: Iec5086dba6f9003c21bcb41eddb3bc83ac7dddd1

6 years agoRFCOMM: Crash on null MCB and PORT in state machine
Jack He [Fri, 27 Apr 2018 19:00:50 +0000 (12:00 -0700)]
RFCOMM: Crash on null MCB and PORT in state machine

* rfc_mx_sm_execute should never receive a NULL mcb
* rfc_port_sm_execute should never receive a NULL port
* If the above happens, we should crash since otherwise we might miss a
  state machine event and not knowing that we missed it if we just do a
  simple NULL check

Bug: 77224743
Test: StackRfcommTest
Change-Id: I7114e46ae706927cc839c7201c97362710e7a874

6 years agoUse the wrapped volume interface with the AVRCP conneciton handler
Ajay Panicker [Fri, 27 Apr 2018 13:50:42 +0000 (06:50 -0700)]
Use the wrapped volume interface with the AVRCP conneciton handler

Use the wrapped volume interface in connection handler so that JNI calls
are automatically executed on the correct thread when called from the
connection handler.

Bug: 30602783
Test: Connect a device that doesn't support absolute volume and see that
the JNI call doesn't throw an exception.

Change-Id: Ife768c715022e70dd4055270c1d6cf76ba26aea3

6 years agoSave the AVDTP version after SDP discovery and read it on reconnect
Pavlin Radoslavov [Mon, 23 Apr 2018 20:36:33 +0000 (13:36 -0700)]
Save the AVDTP version after SDP discovery and read it on reconnect

* Save the AVDTP version discovered by SDP to the device's local
  configuration section with key string of "AvdtpVersion"
* Refactor tBTA_AV_SCB and hide the AVDTP version and peer address
  behind get/set methods:
  AvdtpVersion() / SetAvdtpVersion() / PeerAddress().
* Added new methods tBTA_AV_SCB::OnConnected() and OnDisconnected().
  The former is used to setup some of the internal state when
  connected to a peer: the peer address and read the stored AVDTP
  version from local configuration section.
  The latter is used to reset that state when disconnected
  from that peer.
* Removed field tBTA_AV_SDP_RES.avdt_version because it is never
  set / used.
* Removed duplicate re-definition of AVDT_VERSION inside avdt_api.h

Bug: 78142165
Test: Manual: connect/reconnect with Sennheiser MOMENTUM M2 AEBT headset
Change-Id: Ib9dcd95dc9899fa81f3cd927f127e5cb0f21ef60

6 years agoMerge changes from topics "bt-hfp-fix-connection-collision-handling", "bt-rfcomm...
android-build-prod (mdb) [Wed, 25 Apr 2018 21:24:55 +0000 (21:24 +0000)]
Merge changes from topics "bt-hfp-fix-connection-collision-handling", "bt-rfcomm-improve-logging-and-readability", "bt-rfcomm-add-end-to-end-unit-tests"

* changes:
  HFP: Fix connection colision handling
  RFCOMM: Improve logging and readability
  RFCOMM: Add unit tests for connection scenarios

6 years agoHFP: Fix connection colision handling
Jack He [Mon, 23 Apr 2018 00:30:14 +0000 (17:30 -0700)]
HFP: Fix connection colision handling

* When there is a connection collison, and remote device is trying to
  connect to HFP server channel while we try to connect to remote's
  server channel as a client. If the remote device succssfully connect
  to us, we should drop our connection request to remote device and
  accept remote device's connection request. As result, we will observe
  1. Our connection request fails, this propagate up to Java layer and
  also clean up any states in these layers
  2. Remote connection request succeeds, this propagate up to Java layer
     as well as a new incoming connection
* Added BTA_AG_COLLISION_EVT to formally handle AG collision in state
  machine
* Modified bta_ag_resume_open to re-send BTA_AG_API_OPEN_EVT instead of
  modifying the state machine state directly. State machine states
  should only be modified by state machine handler
* Ignore RFCOMM open event if PORT_CheckConnection fails
* Added StackRfcommTest.TestConnectionCollision to reproduce this
  scenario with 100% certainty
* Add static checks to HFP BTA state machine to make sure action and
  event indices match enum sizes

Bug: 77224743
Test: connect to multiple remote devices with HFP, MAP and PBAP
      StackRfcommTest.TestConnectionCollision
      btestplans/details/158641/3975
Change-Id: Ib3652784b123abe195e7bd30421ef5f4345b1d4d

6 years agoMerge "Hearing Aid: Keep configuration after disconnect()"
android-build-prod (mdb) [Wed, 25 Apr 2018 10:12:25 +0000 (10:12 +0000)]
Merge "Hearing Aid: Keep configuration after disconnect()"

6 years agoRFCOMM: Improve logging and readability
Jack He [Sat, 21 Apr 2018 05:06:11 +0000 (22:06 -0700)]
RFCOMM: Improve logging and readability

Debug Improvements:
* Add more error logging in the following methods:
 - rfc_mx_sm_state_idle for L2CA_ConnectReq failure
 - rfc_mx_sm_state_configure for RFC_EVENT_TIMEOUT
 - rfc_mx_conf_cnf for L2CAP configuration failures
 - RFCOMM_RemoveServer

Readability Improvements:
* Refactored logic in the following methods to be more readable
 - L2CA_ErtmConnectReq
 - RFCOMM_CreateConnection
 - port_open_continue
 - PORT_StartCnf
 - port_allocate_port
 - rfc_send_buf_uih
 - bta_ag_get_other_idle_scb
* Rename RFCOMM_ParNegReq to RFCOMM_ParameterNegotiationRequest
* Rename RFCOMM_ParNegRsp to RFCOMM_ParameterNegotiationResponse
* Rename RFCOMM_PortNegReq to RFCOMM_PortParameterNegotiationRequest
* Rename RFCOMM_PortNegRsp to RFCOMM_PortParameterNegotiationResponse

Rename using IDE:
* Rename tRFCOMM_CB.last_port to tRFCOMM_CB.last_port_index
* Rename tPORT.inx to tPORT.handle as inx is ready the port handle
  indexed from 1
* Rename tRFC_MCB.port_inx to tRFC_MCB.port_handles

NPE Prevention:
* Add error checking in rfc_save_lcid_mcb to avoid accessing beyond
  array boundary

Bug: 77224743
Test: StackRfcommTest, connect and disconnect to multiple devices
      with PBAP, MAP, PAN, PTS HFP tests
      testplans/details/158641/3975
Change-Id: I8de89dfc0cee48fed6ad4e1d4a8cdcde2f960aab

6 years agoRFCOMM: Add unit tests for connection scenarios
Jack He [Sat, 21 Apr 2018 05:04:21 +0000 (22:04 -0700)]
RFCOMM: Add unit tests for connection scenarios

Unit tests:
* Add net_test_stack_rfcomm
* Use a compiler trick to compile production RFCOMM code against L2CAP
  and BTM header, but fake L2CAP and BTM source code so that we can stub
  statically defined L2CAP and BTM code using mocks
* Rename net_test_rfcomm to net_test_rfcomm_suite
* Add mocked L2CAP and BTM layer to allow packet replay from L2CAP layer
  to RFCOMM layer in order to reproduce time dependent issues such as
  connection collision
* Add a number of utility methods that generates RFCOMM packet bytes
  using supported parameters
* Add unit test for above utility methods
* Add suite of unit tests named StackRfcommTest, including:
 - SingleServerConnectionHelloWorld
 - MultiServerPortSameDeviceHelloWorld
 - SameServerPortMultiDeviceHelloWorld
 - SingleClientConnectionHelloWorld
 - SameClientPortMultiDeviceHelloWorld
* These tests supply L2CAP packets and API calls to trigger RFCOMM
  connection setup in various scenarios
* Added logging method to output debug log via VLOG(1) logging level and
  allow compile time configuration of these logs through a constant flag

Bug: 77224743
Test: ./test/run_unit_tests.sh net_test_stack_rfcomm
      testplans/details/158641/3975
Change-Id: I9d59843603cd36394c3736670bcf3c39dea26674

6 years agoHSP: Keep sending RING message
Chenyang Zhang [Mon, 26 Mar 2018 03:21:59 +0000 (11:21 +0800)]
HSP: Keep sending RING message

Two PTS Test failed:
- HSP/AG/IAC/BV-01-I
- HSP/AG/ACR/BV-02-I

Reason:
AG didn't send the "RING" unsolicited result code to HS(PTS),
then HS can't send the "AT+CKPD=200" command to received the call.
After a while, the "FATAL ERROR (MTC): Call establishment timed out"
triggered by PTS.

Solution:
Keep sending RING message for HSP.

Bug: 77507028
Change-Id: If1288a5f7b1b7da8ecba34ed90a85a0af8a91e9a

6 years agoHearing Aid: Keep configuration after disconnect()
Hansong Zhang [Mon, 23 Apr 2018 19:26:52 +0000 (12:26 -0700)]
Hearing Aid: Keep configuration after disconnect()

After disconnect(), the Hearing Aid service removes the device from the
white list, but retains the configuration. The Java Hearing Aid service
still knows the hiSyncId and capabilities, so it can connect() to
multiple devices at the same time

Bug: 69623109
Test: manual and unit test for Java service
Change-Id: Ic17b9be7e6a0577baecd520680abffbaf0a0dc47

6 years agoRename <cutils/log.h> to <log/log.h>
Logan Chien [Mon, 23 Apr 2018 06:46:28 +0000 (14:46 +0800)]
Rename <cutils/log.h> to <log/log.h>

Bug: 78370064
Test: lunch aosp_walleye-userdebug && cd system/bt && mma

Change-Id: I43448e88c236b72d86206bd652075f35eccca6f6

6 years agoA2DP offload: switch to new properties
Petri Gynther [Wed, 18 Apr 2018 01:29:09 +0000 (18:29 -0700)]
A2DP offload: switch to new properties

Bug: 63932139
Bug: 76201991
Test: Manual A2DP testing (A2DP offload enabled and disabled)
Change-Id: Idcc2af40bde09758e060861ac518c06b7551212a

6 years agoMerge "Don't start the authentication when peer device already started it"
Treehugger Robot [Thu, 19 Apr 2018 23:23:21 +0000 (23:23 +0000)]
Merge "Don't start the authentication when peer device already started it"

6 years agoReset the A2DP coding parameters when switching codecs
Pavlin Radoslavov [Wed, 18 Apr 2018 17:57:22 +0000 (10:57 -0700)]
Reset the A2DP coding parameters when switching codecs

Bug: 77281039
Test: Manual - connect Headset and switch codecs while playing audio
Change-Id: Icb89b0d78195fd654d66bc1334b121cf62c55be1

6 years agoGATT: fix 32 bit UUID handling
Jakub Pawlowski [Thu, 12 Apr 2018 12:42:31 +0000 (05:42 -0700)]
GATT: fix 32 bit UUID handling

When writing UUID into stream with gatt_build_uuid_to_stream, we always
use 16bit or 128bit representation. In GATT code returning service UUID,
we were returning 32bit representation lenght, even though 128bit
representation was being returned in the stream. This resulted in
invalid GATT database content being returned, and the service not being
visible.

Bug: 66912853
Test: create GATT database with 32bit UUID, discover from remote device
Change-Id: I791a518ab080bd99db0a8be18d97e865c838fc7e

6 years agoMerge "Add ability to disable wide band speech"
Treehugger Robot [Wed, 18 Apr 2018 01:42:29 +0000 (01:42 +0000)]
Merge "Add ability to disable wide band speech"

6 years agoMerge "Fix check for device lookup in map"
Treehugger Robot [Wed, 18 Apr 2018 01:24:28 +0000 (01:24 +0000)]
Merge "Fix check for device lookup in map"

6 years agoMerge "Fix a memory leak when disabling AVDTP"
Treehugger Robot [Wed, 18 Apr 2018 00:44:03 +0000 (00:44 +0000)]
Merge "Fix a memory leak when disabling AVDTP"

6 years agoMerge changes from topics "bt-avdtp-get-basic-capabilities", "bt-a2dp-acceptor-codec...
Treehugger Robot [Wed, 18 Apr 2018 00:42:45 +0000 (00:42 +0000)]
Merge changes from topics "bt-avdtp-get-basic-capabilities", "bt-a2dp-acceptor-codec-config"

* changes:
  Include only the Basic Capability for AVDTP GetCapabilities response
  Handle properly AVDTP SetConfig from the A2DP Sink device

6 years agoAdd ability to disable wide band speech
Zach Johnson [Fri, 6 Oct 2017 00:47:13 +0000 (17:47 -0700)]
Add ability to disable wide band speech

Some HF android-based devices need to disable
wide band speech due to interop issues.

Test: Pair and test phone calls
Bug: 65053641

Change-Id: Ie8c4a50c40149562d6b52336fba1a61f1abf5198

6 years agoFix a memory leak when disabling AVDTP
Pavlin Radoslavov [Sat, 14 Apr 2018 02:57:25 +0000 (19:57 -0700)]
Fix a memory leak when disabling AVDTP

Added new function bta_av_free_scb() to explicitly
free tBTA_AV_SCB struct.

Bug: 78034873
Test: Code compilation
Change-Id: Ic738c64f61fd273bc2988fa98cb7cedebf1c4b76

6 years agoFix check for device lookup in map
Ajay Panicker [Tue, 17 Apr 2018 21:15:30 +0000 (14:15 -0700)]
Fix check for device lookup in map

Bug: 78134184
Test: Run host native test net_test_avrcp
Change-Id: I57dd0040aa0e97f623cff97a28dc98e196414559

6 years agoNew GATT cache storage format
Jakub Pawlowski [Tue, 17 Apr 2018 17:43:37 +0000 (10:43 -0700)]
New GATT cache storage format

We will need characteristic definition handle, and handle of end of
included service in the future. Store it properly.

Bug: 67056747
Test: GattCacheTest.nv_attr_to_binary_test
Change-Id: I170e1a39d3c055efddd91639f756d74eb4ecc304

6 years agoInclude only the Basic Capability for AVDTP GetCapabilities response
Pavlin Radoslavov [Sat, 14 Apr 2018 05:07:30 +0000 (22:07 -0700)]
Include only the Basic Capability for AVDTP GetCapabilities response

AVDTP GetCapabilities request should return only the Basic
Capabilities, as defined in the AVDTP 1.3 spec.
Otherwise, returning a capability such as Delay Reporting would
result in some remote devices droping the AVDTP connection

Also:
 * Print SEP protocol service capabilities per Stream Control
   Block when dumping the state to a bugreport
 * Add extra log messages

Bug: 77668253
Test: Manual: connect with Momentum M2 Headset and examine the
      AVDTP GetCapabilities response.

Change-Id: I34f2e8ff586115a38c3436b2b6300514f65346a9

6 years agoHandle properly AVDTP SetConfig from the A2DP Sink device
Pavlin Radoslavov [Tue, 10 Apr 2018 01:01:41 +0000 (18:01 -0700)]
Handle properly AVDTP SetConfig from the A2DP Sink device

If the remote device is proactive and sends AVDTP SetConfig after
re-connection before the local device gets the chance to do it, the
internal codec setup state might be inconsistent.

* Fix the internal logic when the local device is Acceptor inside
  file bta_av_co.cc, and simplify some of the code.
* Fix the handling of p_scb->sep_info_idx inside bta_av_save_caps()
  when receiving capabilities from the remote device.
* Add new A2dpCodecConfig::setPeerCodecCapabilities() method that is
  implemented by each codec.

Bug: 77525584
Test: Manual - initiate connection by Momentum 2.0 Wireless Headset.
      Connect/disconnect/reconnect multiple headsets.

Change-Id: I456df7c8a2fa0758c0908a4628c4dfae3259dbdb

6 years agoGATT: make last service end group handle equal to 0xFFFF
Jakub Pawlowski [Mon, 16 Apr 2018 14:55:06 +0000 (07:55 -0700)]
GATT: make last service end group handle equal to 0xFFFF

ESR06 (errata 4065) added sentence:
"The End Group Handle of the last service in a device can be 0xFFFF."
It talks about last service, not last primary service. Right now,
secondary service added after last primary service will result in in
last primary service being corrupted - descriptor added to last
characteristic, and some characteristics added.

Bug: 78107486
Change-Id: I6a146fce2c946cdff176ff79f147830e29d3b807

6 years agoA2DP Offload: Handle init/deinit as part of start/end session
Satish kumar sugasi [Tue, 3 Apr 2018 19:09:41 +0000 (12:09 -0700)]
A2DP Offload: Handle init/deinit as part of start/end session

Bug: 77289942
Test: Manual
Change-Id: I5b7ca6e485788d69f574bb74d2ef423507b183ff

6 years agoAVRCP: Inform upper layer if absolute volume isn't supported
Ajay Panicker [Fri, 13 Apr 2018 18:49:34 +0000 (11:49 -0700)]
AVRCP: Inform upper layer if absolute volume isn't supported

Before, the upper layers would be informed when a device connected that
supported absolute volume. Now even devices that don't support absolute
volume get reported.

Bug: 33962015
Test: Run host native test net-test-avrcp
Change-Id: If083ccbb9ba9a170c5bca359e632585d826c6fa5

6 years agoA2DP Offload: Fix the default LDAC bitrate
Sunny Kapdi [Fri, 23 Mar 2018 06:54:40 +0000 (23:54 -0700)]
A2DP Offload: Fix the default LDAC bitrate

Use LDAC ABR as default option in A2DP Offload mode.

Bug: 77879487
Test: Manual
Change-Id: Iec76691f8a83cd47aa7bf38efc6554139a59bb89

6 years agoMerge "AVRCP controller browsing deep copy and get folder range"
Joseph Pirozzo [Thu, 12 Apr 2018 15:22:19 +0000 (15:22 +0000)]
Merge "AVRCP controller browsing deep copy and get folder range"

6 years agoMerge "Pass new LE CoC min_ce/max_ce parameters to native stack"
Stanley Tng [Thu, 12 Apr 2018 14:36:12 +0000 (14:36 +0000)]
Merge "Pass new LE CoC min_ce/max_ce parameters to native stack"

6 years agoDon't start the authentication when peer device already started it
ilbeom.kim [Wed, 11 Apr 2018 23:26:10 +0000 (08:26 +0900)]
Don't start the authentication when peer device already started it

If host gets link_key_request event from the controller, it means peer
device started the authentication.
In this case, host should not start the authentication because it will
be caused the authentication collision by controller side.

This sequence can be referred at BT 4.2 core specification document,
p.1388, Figure 4.2.

Bug: 74241491
Test: Manual
      - Connect Android wear to Android phone
      - Turn off BT on Android wear
      - Turn on BT on Android wear
      - Observe the logcat whether connection time is within 30 seconds
      Android Wear Stability Test

Change-Id: I138d45316ea75dd96444c36bde36ce15a64b669a

6 years agoPass new LE CoC min_ce/max_ce parameters to native stack
Stanley Tng [Mon, 19 Mar 2018 19:48:04 +0000 (12:48 -0700)]
Pass new LE CoC min_ce/max_ce parameters to native stack

Add new test connection event (ce) parameters, min_ce and max_ce, to
the SL4A tests for LE Connection-oriented Channel (CoC) feature.

Test: Run cmd: act.py -c $MY_SL4A_CONFIG -tc BleCoc2ConnTest
Bug: 77528723

Change-Id: Ifea040f0eb105f89539e6b74f5c2edc76147a065

6 years agoAVRCP controller browsing deep copy and get folder range
Joseph Pirozzo [Wed, 11 Apr 2018 19:40:20 +0000 (12:40 -0700)]
AVRCP controller browsing deep copy and get folder range

AVRCP browsing was unstable on the sink side due to bytes
being used instead of integers for get_folder_items_cmd
and a lack of deep copy in the data buffers.  This patch
allows both browse and vendor commands to work correctly.

Bug: 72496280
Test: stream music and browse at the same time.
Change-Id: Id4d34101c918947450923b68e087e6851ce99130

6 years agoMetrics: Add metrics item for profile usage
Jack He [Mon, 2 Apr 2018 20:04:58 +0000 (13:04 -0700)]
Metrics: Add metrics item for profile usage

Item A: Add messages to log profile connections
* Add ProfileUsageStats message in bluetooth.proto
* Add BluetoothProfileId enum to represent each profile
* Add num_times_connected item to log how many times a profile is
  connected

Item B: Add messages to log headset profile connections for HSP and HFP
* Add HeadsetProfileConnectionStats message in bluetooth.proto
* Add HeadsetProfileType enum to represent each headset profile type
* Add num_times_connected item to log how many times each headset
  profile is connected

* Add unit tests in metrics_tests
* Remove "clear" flag in various metrics dumping methods to make sure
  that we clean up metrics every time we dump

Bug: 77476285
Test: make, net_test_osi, BtFunhausMetricsTest,
      adb shell dumpsys bluetooth_manager --proto-bin
Change-Id: Ib18948c50ddb98ab7472f7b51a9bb98d153071c7
Merged-In: Ib18948c50ddb98ab7472f7b51a9bb98d153071c7

6 years agoMerge "Call AVRC_close when an AVRCP connection is closed"
Treehugger Robot [Wed, 11 Apr 2018 03:56:38 +0000 (03:56 +0000)]
Merge "Call AVRC_close when an AVRCP connection is closed"

6 years agoMerge "DM: Add error logs for failed discovery attempt"
Treehugger Robot [Wed, 11 Apr 2018 03:14:27 +0000 (03:14 +0000)]
Merge "DM: Add error logs for failed discovery attempt"

6 years agoMerge "Improve A2DP codec run-time debug-abilitity"
Treehugger Robot [Wed, 11 Apr 2018 02:54:40 +0000 (02:54 +0000)]
Merge "Improve A2DP codec run-time debug-abilitity"

6 years agoDM: Add error logs for failed discovery attempt
Jack He [Wed, 11 Apr 2018 00:44:35 +0000 (17:44 -0700)]
DM: Add error logs for failed discovery attempt

Bug: 72817086
Test: make, no functional change
Change-Id: I0df4efa62de00956eea1b5b5d244f4821bcaf6fc

6 years agoCall AVRC_close when an AVRCP connection is closed
Ajay Panicker [Wed, 11 Apr 2018 02:24:51 +0000 (19:24 -0700)]
Call AVRC_close when an AVRCP connection is closed

AVRC_Close needs to be called whenever a connection is closed otherwise
the AVCT control block is never cleaned up.

Bug: 77633048
Test: Run host native test net_test_avrcp and connect/disconnect from a
device multiple times.

Change-Id: Ia6a1b2606a87803316aad41ae27db858bf922548

6 years agoImprove A2DP codec run-time debug-abilitity
Pavlin Radoslavov [Sat, 7 Apr 2018 00:05:47 +0000 (17:05 -0700)]
Improve A2DP codec run-time debug-abilitity

Rename A2DP_DumpCodecInfo() to A2DP_CodecInfoString() and change
the usage. Previously, A2DP_DumpCodecInfo() would print the
the codec information only if LOG_VERBOSE() was enabled in compile time.
The new A2DP_CodecInfoString() now returns human-readable std::string
with the codec information.
That string can be used in debug log messages that can be enabled
in run-time.

Bug: 77525584
Test: Manual - Examine log messages when A2DP streaming with and
      without debug log messages enabled.

Change-Id: Idd440d6c9e908520132feeeb5388d3e6aefa26db

6 years agoSet default AVRCP version to 1.4
Ajay Panicker [Tue, 10 Apr 2018 23:35:37 +0000 (16:35 -0700)]
Set default AVRCP version to 1.4

Bug: 77874113
Test: Check snoop logs to see that the broadcasted AVRCP version is 1.4
Change-Id: If36bccc58d04dffe46286ee8d18785b680b9de8a

6 years agoAllow platforms to override client connection sniff timeout
Zach Johnson [Fri, 30 Mar 2018 20:33:54 +0000 (13:33 -0700)]
Allow platforms to override client connection sniff timeout

It is already possible to set server connection sniff timeouts.

Bug: 70309445
Test: inspect timeouts via logs
Change-Id: Ibc19dd4f77aa28388169b2ce70d12200020e6a4d

6 years agoHFP: Report AT+BIA command to upper layer
Jack He [Thu, 5 Apr 2018 22:39:27 +0000 (15:39 -0700)]
HFP: Report AT+BIA command to upper layer

* Report AT+BIA command, AG indicator activation command, to upper layer
  so that upper layer can decide on whether or not to subscribe to these
  indicators

Bug: 77655992
Test: make

Change-Id: Ic330d6784c5edf20683cbfedda3fa54525878ce8

6 years agoMerge "Add hidden API to get current user of HID Device (2/3)"
Treehugger Robot [Fri, 6 Apr 2018 21:54:06 +0000 (21:54 +0000)]
Merge "Add hidden API to get current user of HID Device (2/3)"

6 years agoCheck if socket is closed before getting presentation position
Ajay Panicker [Thu, 5 Apr 2018 16:14:51 +0000 (09:14 -0700)]
Check if socket is closed before getting presentation position

Bug: 76456293
Test: Listen to music on a device that supports delay reporting
Change-Id: I4ca1c31819594750a7beb1d11ca5b8d64a7f836c

6 years agoMerge "Disable absolute volume if the remote device rejects registration"
Treehugger Robot [Thu, 5 Apr 2018 23:36:10 +0000 (23:36 +0000)]
Merge "Disable absolute volume if the remote device rejects registration"

6 years agoMerge "vendor_libs: Allow btlinux service to run from vendor or system/vendor"
Treehugger Robot [Thu, 5 Apr 2018 19:20:23 +0000 (19:20 +0000)]
Merge "vendor_libs: Allow btlinux service to run from vendor or system/vendor"

6 years agovendor_libs: Allow btlinux service to run from vendor or system/vendor
Dmitry Shmidt [Thu, 5 Apr 2018 17:35:37 +0000 (10:35 -0700)]
vendor_libs: Allow btlinux service to run from vendor or system/vendor

Bug: 75290651
Test: Manual

Change-Id: I30bda23667ac911bf21da5705d248833f919f8bf
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
6 years agoDisable absolute volume if the remote device rejects registration
Ajay Panicker [Wed, 4 Apr 2018 05:28:06 +0000 (22:28 -0700)]
Disable absolute volume if the remote device rejects registration

Instead of trying to re-register for a rejected volume changed
notification, disable absolute volume. This prevents spinning if a
remote device continuously rejects all attempts to register. A volume
level of -2 will be used to represent that the volume notification was
rejected.

Bug: 77238060
Test: Run host native test net_test_avrcp
Change-Id: I228524fb30348ca691d0792f0c7bcc4653d1fcef

6 years agoMerge "HID Device: remove "Cabled" flag when device is not used"
Treehugger Robot [Thu, 5 Apr 2018 01:39:23 +0000 (01:39 +0000)]
Merge "HID Device: remove "Cabled" flag when device is not used"

6 years agoHID Device: remove "Cabled" flag when device is not used
Hansong Zhang [Wed, 4 Apr 2018 01:17:43 +0000 (18:17 -0700)]
HID Device: remove "Cabled" flag when device is not used

Remove the "HidDeviceCabled" flag from the config when the remote device
is not currently being usec

Bug: 77549256
Test: manual
Change-Id: I2c88e972457608699c3f0344357828324a419b90

6 years agoMerge "Hearing Aid: change get/set active device (1/3)"
Treehugger Robot [Wed, 4 Apr 2018 21:42:17 +0000 (21:42 +0000)]
Merge "Hearing Aid: change get/set active device (1/3)"

6 years agoPersist VFS ID's between directory changes.
Ajay Panicker [Tue, 3 Apr 2018 01:21:04 +0000 (18:21 -0700)]
Persist VFS ID's between directory changes.

Some carkits don't honor the fact that VFS ID's only are consistent to
the folder they are currently browsing. Now a UID will remain valid
until the connection ends.

Bug: 68812037
Test: Run net_test_avrcp
Change-Id: I67898277327b54eaeca2121b9ff173b22bd4ba71

6 years agoAdd hidden API to get current user of HID Device (2/3)
Hansong Zhang [Mon, 8 Jan 2018 23:05:21 +0000 (15:05 -0800)]
Add hidden API to get current user of HID Device (2/3)

Bug: 69136526
Test: test with apps using HID Device profile
Change-Id: I6c6df052fac508499c42fc7ab493010e327d6003

6 years agoRefresh the now playing ID map when the now playing list changes
Ajay Panicker [Mon, 2 Apr 2018 22:36:35 +0000 (15:36 -0700)]
Refresh the now playing ID map when the now playing list changes

The Now Playing List ID's could be invalid if the now playing list
changes but there is not track change, like when adding a song to the
queue on the device.

Bug: 68812037
Test: Run host native test net_test_avrcp
Change-Id: I3c2c11aa87b64241f378819c38ae5cc21ffdb5ac

6 years agoAdd MTU Handling for AVRCP Packets
Ajay Panicker [Sat, 31 Mar 2018 21:38:53 +0000 (14:38 -0700)]
Add MTU Handling for AVRCP Packets

Bug: 77241554
Test: Run host native tests net_test_avrcp and net_test_btpacket
Change-Id: If32aa506dc8f99220ef35efeb4d77a1023767afe

6 years agoRFCOMM: Add more logging on failure cases
Jack He [Wed, 28 Mar 2018 20:02:37 +0000 (13:02 -0700)]
RFCOMM: Add more logging on failure cases

* Log every instance of RFCOMM unexpected disconnection
* Log every time when RFCOMM channel (DLCI) is changed
* Refactor some RFCOMM code to be more readable and easier for logging
* Remove excessive logging in power manager
* Assign HSP default version more appropriate location
* Replace some usage of NULL with nullptr

Bug: 77224743
Test: make, no functional changes
Change-Id: I5e62dd6d338f7e92a8b8d39c1fe155b71396034c

6 years agoMerge "Reduce the number of PCM data reads for aptX and aptX HD"
Treehugger Robot [Fri, 30 Mar 2018 20:58:11 +0000 (20:58 +0000)]
Merge "Reduce the number of PCM data reads for aptX and aptX HD"

6 years agoMerge changes from topic "AVRCP Controller Browsing"
Treehugger Robot [Fri, 30 Mar 2018 19:55:46 +0000 (19:55 +0000)]
Merge changes from topic "AVRCP Controller Browsing"

* changes:
  AVRCP play status change updates
  AVRCP register for addressed player changed

6 years agoReduce the number of PCM data reads for aptX and aptX HD
Pavlin Radoslavov [Fri, 30 Mar 2018 19:14:14 +0000 (12:14 -0700)]
Reduce the number of PCM data reads for aptX and aptX HD

For every periodic aptX / aptX HD data packet, use a single read
operation for all PCM data that needs to be encoded, instead of
using multiple reads of smaller blocks of data.

Bug: 70899260
Test: Manual: stream to aptX/aptX HD headset, change the sample rate
Change-Id: Ifcb8302589f24f5d7ab89c645c50d6905197fb7f

6 years agoHearing Aid: change get/set active device (1/3)
Hansong Zhang [Wed, 28 Mar 2018 23:43:21 +0000 (16:43 -0700)]
Hearing Aid: change get/set active device (1/3)

* setActiveDevice() returns false in error case, e.g. when the device is
not connected
* add getActiveDevices() instead of isActiveDevice(), which returns a list
that must have two elements: left and right, or empty list on error

Test: manual
Bug: 69623109
Change-Id: I6f872dd88422e9d7e5187603d3ad33628726e1ca

6 years agoUse RawAddress.ToString() instead of manual conversion
Jakub Pawlowski [Tue, 27 Mar 2018 23:02:02 +0000 (16:02 -0700)]
Use RawAddress.ToString() instead of manual conversion

Test: compilation
Change-Id: I66040a4f3d339ac0473052d916b9a0b4e3045e8e

6 years agoUnpair both transports of dual mode device, when LE address provided
Jakub Pawlowski [Wed, 28 Mar 2018 22:00:13 +0000 (15:00 -0700)]
Unpair both transports of dual mode device, when LE address provided

In bta_dm_remove_device, if the device is not connected, and we don't
know the transport for given address, we make two calls to
BTM_ReadConnectedTransportAddress, to determine the device address on
the other transport.
If the address provided is LE, first call will fill the other_address
variable with the Classic address, and the second call will fill it back
with LE addres. This mean we never try to remove Classic entry, instead
we remove LE entry twice.

Bug: 67907612
Test: establish LE connnection between two phones, trigger Bonding.
  After bonding complete, try to remove bond using LE address. Verify
  config file is cleaned of both LE and classic entry.

Change-Id: Ia5dd53f96b95478a07009cecc5b4a3c79f15c59b

6 years agoMerge changes I88d0862f,Ic9a2c8d8
Treehugger Robot [Thu, 29 Mar 2018 16:16:00 +0000 (16:16 +0000)]
Merge changes I88d0862f,Ic9a2c8d8

* changes:
  Use proper media ID when changing path
  Add missing AVRCP Set Addressed Player Response

6 years agoUse proper media ID when changing path
Ajay Panicker [Thu, 29 Mar 2018 00:04:39 +0000 (17:04 -0700)]
Use proper media ID when changing path

Use the current media ID on the path stack to retrieve folder contents.

Bug: 77237565
Test: run host native test net-test-avrcp
Change-Id: I88d0862f76d18a071a8530cd31954447b4e180fc

6 years agoAdd missing AVRCP Set Addressed Player Response
Ajay Panicker [Wed, 28 Mar 2018 23:02:36 +0000 (16:02 -0700)]
Add missing AVRCP Set Addressed Player Response

Bug: 77237301
Test: run host native tests net-test-btpackets and net-test-avrcp
Change-Id: Ic9a2c8d8cf5dd4c5be02a83975caa92e335ca2b9

6 years agoAVRCP play status change updates
Joseph Pirozzo [Wed, 28 Mar 2018 22:27:31 +0000 (15:27 -0700)]
AVRCP play status change updates

Process play status updates when seeking forward and backward.

Bug: 67568875
Test: seek forward and backward on paired phone and observe updates.
Change-Id: Id280f0e877cfea0a0da7603ab6d7bcfaf667d482

6 years agoMerge "Revert "HID: Fix the behavior of virtual_cable_unplug""
Treehugger Robot [Wed, 28 Mar 2018 21:50:01 +0000 (21:50 +0000)]
Merge "Revert "HID: Fix the behavior of virtual_cable_unplug""

6 years agoRevert "HID: Fix the behavior of virtual_cable_unplug"
Hansong Zhang [Wed, 28 Mar 2018 19:52:36 +0000 (19:52 +0000)]
Revert "HID: Fix the behavior of virtual_cable_unplug"

This reverts commit 65ce047e3feeba934015870254535882edf61743.

Reason for revert: Connected HID keyboard won't unpair
Bug: 76907578
Test: SL4A
Change-Id: I7d289183ac05b5f926c145799418461377228569

6 years agoChanged the default configured sample rate for aptX/aptX-HD to 48.0kHz
Pavlin Radoslavov [Wed, 28 Mar 2018 19:30:14 +0000 (12:30 -0700)]
Changed the default configured sample rate for aptX/aptX-HD to 48.0kHz

Previously, the default configured sample rate for aptX and aptX-HD
was 44.1kHz. However, during AVDTP codec setup, the initial codec
setup to 44.1kHz was followed immediately with automatic codec
reconfiguration to 48.0kHz (if supported by the remote device)
so the highest possible sample rate will be used.

Changing the default sample rate to 48.0kHz eliminates the
transient initial codec setup of 44.1kHz, because it is unnecessary
and error-prone.

Bug: 69276823
Test: Manual: connect to aptX / aptX-HD headsets and examine the AVDTP codec
      configuration in the btsnoop logs.
Change-Id: I9e22365e0f07690c87503ea52fd9bb4d1ad4d5ff

6 years agoAVRCP register for addressed player changed
Joseph Pirozzo [Wed, 28 Mar 2018 16:20:48 +0000 (09:20 -0700)]
AVRCP register for addressed player changed

Register to be notified when the addressed media player changes so we
can update the AVRCP controller.

Bug: 72495854
Test: Change media player on phone, verify media source is updated.
Change-Id: I932a25b9861734ecc6e1fdcf40f02cdde1fd049a

6 years agoFix crash in Log
Joseph Pirozzo [Tue, 27 Mar 2018 20:41:11 +0000 (13:41 -0700)]
Fix crash in Log

Correct parameter order.

Bug: 77009945
Test: observe log message
Change-Id: I69d4bc04936c322707111c825864007b7f257cc4

6 years agoMerge "Open acceptor channel for RC on cleanup"
Treehugger Robot [Wed, 28 Mar 2018 00:14:08 +0000 (00:14 +0000)]
Merge "Open acceptor channel for RC on cleanup"

6 years agoMerge "Serialize the commands during Pairing process"
Treehugger Robot [Wed, 28 Mar 2018 00:02:00 +0000 (00:02 +0000)]
Merge "Serialize the commands during Pairing process"

6 years agoOpen acceptor channel for RC on cleanup
AnubhavGupta [Tue, 11 Jul 2017 07:32:56 +0000 (13:02 +0530)]
Open acceptor channel for RC on cleanup

Usecase:
1. Install Fitbit app
2. Pair and connect with RD1
3. Start streaming
4. Pair and connect Fitbit watch

Failure:
No Stable Avctp connection with Fitbit Watch after pairing

Rootcause:
If there will be no listening acceptor
then some Remotes unable to connect AVRC
connection upon remote restart.

Fix:
Open acceptor channel for RC on cleanup
as if there will be no listening acceptor
then some Remotes unable to connect AVRC
connection upon remote restart.

Test: 1. Install Fitbit app
2. Pair and connect with RD1
3. Start streaming
4. Pair and connect Fitbit watch

Fixes: 63605621
Change-Id: Ia6cefc29ca64b00f2f5fe2f9816d71604c511415

6 years agoMerge "Suppress unnecessary A2DP codec reconfiguration"
Treehugger Robot [Tue, 27 Mar 2018 22:22:34 +0000 (22:22 +0000)]
Merge "Suppress unnecessary A2DP codec reconfiguration"

6 years agoMerge "A2DP Sink: add a mechanism for selecting the codec"
Treehugger Robot [Tue, 27 Mar 2018 22:22:19 +0000 (22:22 +0000)]
Merge "A2DP Sink: add a mechanism for selecting the codec"

6 years agoSerialize the commands during Pairing process
Srinu Jella [Wed, 18 Dec 2013 06:27:33 +0000 (11:57 +0530)]
Serialize the commands during Pairing process

Steps:
1. Pair and connect with HID mouse.
2. Once the settings UI shows paired and connected
3. Try to unpair the device, but UI still shows connected.

Failure: Unable to unpair HID mouse due to LMP
response timeout occurred for  remote version and remote
feature request.

Root Cause: Remote version, Remote features, Authentication
requested commands go simultaneously to the remote device
which can't handle the multiple commands at a time.

Fix: Serialize the Remote version, Remote features, Authentication
requested commands.

Test: Tested manually with apple magic mouse.
Bug: 35125883

Change-Id: I4448c291a60ee637dc5927806547e67f26571d86

6 years agoSuppress unnecessary A2DP codec reconfiguration
Pavlin Radoslavov [Tue, 27 Mar 2018 07:17:29 +0000 (00:17 -0700)]
Suppress unnecessary A2DP codec reconfiguration

If OTA A2DP codec configuration is accepted from the remote
device, then don't trigger codec reconfiguration.

Bug: 74521894
Test: Manual: accept connection and codec config from A2DP Sink
Change-Id: Ic2f6ff08d130adf85cad68a54ab9fbc0a711534c