OSDN Git Service
Treehugger Robot [Fri, 12 Oct 2018 17:04:56 +0000 (17:04 +0000)]
Merge "Hearing Aid: Use valid COC service id"
Treehugger Robot [Fri, 12 Oct 2018 03:34:30 +0000 (03:34 +0000)]
Merge "Add bluetooth_test_common to TEST_MAPPING"
Hansong Zhang [Thu, 11 Oct 2018 21:14:31 +0000 (14:14 -0700)]
Timer: Fix unstable test
* Don't use future.wait_until()
* For cancel_period_task, verify the counter won't change after
timer is cancelled
Test: run Timer test for 5000 times
Bug:
116081383
Change-Id: Ibc99507e76180a878f417a0b4e7aba1b8adc7cb6
Hansong Zhang [Thu, 11 Oct 2018 01:02:49 +0000 (18:02 -0700)]
Hearing Aid: Use valid COC service id
Test: disconnect hearing aid and let remote device connect to it
Bug:
116317072
Bug:
117423102
Change-Id: Iea001d287256f4d7d9e8213ac8a4f03d78f4bbc5
Treehugger Robot [Thu, 11 Oct 2018 18:38:16 +0000 (18:38 +0000)]
Merge "Allow AVDTP SetConfig from INIT state"
Treehugger Robot [Thu, 11 Oct 2018 17:14:59 +0000 (17:14 +0000)]
Merge "Add more Hearing Aid Profile logs"
Stanley Tng [Thu, 11 Oct 2018 01:57:29 +0000 (18:57 -0700)]
Add more Hearing Aid Profile logs
Add more logs to debug the TimeCheck timeout crash issues.
Test: Manual run
Change-Id: I3a05ca975e41ab002e466150f3f3f28ba0f037df
Pavlin Radoslavov [Tue, 25 Sep 2018 01:42:53 +0000 (18:42 -0700)]
Allow AVDTP SetConfig from INIT state
This addresses AVDTP codec reconfiguration issue on the A2DP Sink side.
Apparently, the A2DP Sink rejects AVDTP Reconfig - then, after the AVDTP Close
(normal), the Sink side doesn't accept AVDTP SetConfig anymore.
If the codecs are already known to the A2DP SRC, it doesn't need the
AVDTP Discover mechanism just for the purpose of the codec reconfiguration.
Hence, we can allow SetConfig from INIT state.
Bug:
115894702
Test: Manual with switching the AAC Sample Rate in the Develop Options
Change-Id: I3b1603dc6ef344eea50383df2eddf309dec80a28
Jakub Pawlowski [Tue, 14 Aug 2018 10:24:33 +0000 (12:24 +0200)]
LE Enhanced Connection Complete: Check address types
Only pass identity addresses to btm_identity_addr_to_random_pseudo.
Only pass random addresses into btm_ble_resolve_random_addr.
Test: bond twice to device using non-resolvable address
Change-Id: I5931e5bc89449ea4ae9b873aedfd7bbcdeef2e01
Ajay Panicker [Tue, 9 Oct 2018 18:53:02 +0000 (18:53 +0000)]
Merge "Add DataElementReader for SDP"
Hansong Zhang [Sun, 7 Oct 2018 20:31:01 +0000 (13:31 -0700)]
Fix Timer unittest
* Never set promise more than once
* To verify running task cannot be cancelled, make sure Cancel() is
called after callback starts
* Remove a stress test case. Sometimes there is unexpected event causing
deviation.
Test: run Timer test for 5000 times
Bug:
116081383
Change-Id: If99e4958289e9b6aaabc51b15ce4ac035a3ff1e9
Treehugger Robot [Mon, 8 Oct 2018 23:38:02 +0000 (23:38 +0000)]
Merge "Replace A2DP source osi/alarm with common/Timer"
Treehugger Robot [Mon, 8 Oct 2018 22:34:10 +0000 (22:34 +0000)]
Merge "Move btif_state_machine to common/StateMachine"
Treehugger Robot [Mon, 8 Oct 2018 22:17:28 +0000 (22:17 +0000)]
Merge "Fix race condition around Le Start Encryption handling."
Hansong Zhang [Thu, 23 Aug 2018 22:17:10 +0000 (15:17 -0700)]
Replace A2DP source osi/alarm with common/Timer
Test: A2DP stream music
Change-Id: I4f7325b3eb3be07eca6c599c7f6f5e037b8e7a64
Jakub Pawlowski [Mon, 1 Oct 2018 11:25:11 +0000 (13:25 +0200)]
Fix race condition around Le Start Encryption handling.
When sending Le Start Encryption, it's possible that at the same exact
moment the connection was disconnected, and there is an incoming
"Disconnection Complete Event". The controller would send error 0x02
"unknown connection identifier" in such case. This can happen
sporadically when reconnecting device multiple times.
Currently, we don't handle this error code. This lead to the timeout
when waiting for "Encryption Complete", and unbonding of the device.
From now on, if 0x02 error code is returned, we'll cancel current SMP
operation, which is the "LE Start Encryption". This will stop the SMP
timer, and make sure the bond to remote device is not lost.
Test: Manual test reconnecting with HID device multiple time in a row,
causing the link drop right after connection, by removing battery, or
closing the shield box.
Bug:
113652889
Change-Id: I2ff9c13dbc8e7b71505908996e26b89fa1ea6a42
Ajay Panicker [Fri, 14 Sep 2018 22:10:13 +0000 (15:10 -0700)]
Add DataElementReader for SDP
DataElementReader extracts DataElement's from packets which are the
basic container for all data in the SDP protocol.
Bug:
114751344
Test: run host test bluetooth_test_sdp
Change-Id: If01f22d81af1b80e7c9ac8993ee161eba779bfa3
Treehugger Robot [Mon, 8 Oct 2018 11:06:32 +0000 (11:06 +0000)]
Merge "Stop A2DP stream when shutting down A2DP source."
Hansong Zhang [Fri, 5 Oct 2018 23:21:09 +0000 (16:21 -0700)]
Add bluetooth_test_common to TEST_MAPPING
Bug:
116081383
Test: unit test
Change-Id: I8231b8f168ab1d86009b7be2cf0b6044f5c8d0cf
Hansong Zhang [Thu, 4 Oct 2018 22:04:18 +0000 (15:04 -0700)]
Move btif_state_machine to common/StateMachine
In Bluetooth native infrastructure refactor plan, we need a state
machine class for entire stack
Test: manual
Change-Id: I0e6671e42570482d9a9466b117054b3aadb3e9cc
weichinweng [Wed, 3 Oct 2018 07:08:54 +0000 (15:08 +0800)]
Stop A2DP stream when shutting down A2DP source.
When shutting down a2dp source,
A2DP source set StateShuttingDown state too fast cause the A2DP doesn’t stop stream.
Will try to stop A2DP when doing A2DP source end session.
Bug:
112279820
Test: Build Pass, BT off/on when play A2DP
Change-Id: I6bfb5c235da1ff4a7e6814bae3a98ae7dd1788aa
Treehugger Robot [Thu, 4 Oct 2018 06:10:47 +0000 (06:10 +0000)]
Merge "MessageLoopThread: Release lock during blocked StartUp/ShutDown"
Hansong Zhang [Sat, 29 Sep 2018 21:23:31 +0000 (14:23 -0700)]
MessageLoopThread: Release lock during blocked StartUp/ShutDown
During StartUp/ShutDown(), if another running task in message loop needs
api_lock, then it will deadlock. Release api_lock in StartUp and
ShutDown when current thread is blocked by another task
Bug:
116081383
Test: run unit test
Change-Id: Ic34406d0cfc6364ac965c4f1aa917a5ccaf6b373
Hansong Zhang [Fri, 28 Sep 2018 19:10:15 +0000 (12:10 -0700)]
Timer: Set data member before scheduling task
Also increase tolerance for unit tests
Bug:
116081383
Test: Run unit test
Change-Id: I5531c2259cbbc58b6ee7527813e8d5c4164e94c5
Stanley Tng [Tue, 25 Sep 2018 18:15:24 +0000 (11:15 -0700)]
Hearing Aid: use correct Data Length and MediaType
Adjusted the requested data length to the BT Controller from 168 to 167.
Also, change the default media type during playback to unknown.
Test: Manual testing with Hearing Aids and verifying with OTA logs
Change-Id: Ic4e934729a98bef5c10ebca64093d8a192e79a01
Treehugger Robot [Fri, 28 Sep 2018 19:08:21 +0000 (19:08 +0000)]
Merge "Hearing Aid: Clean up GATT on disconnect"
Treehugger Robot [Fri, 28 Sep 2018 14:22:08 +0000 (14:22 +0000)]
Merge "Rename functions related to BLE scan cache"
Jakub Pawlowski [Wed, 8 Aug 2018 13:19:58 +0000 (15:19 +0200)]
Rename functions related to BLE scan cache
They are not related to GATT, update naming.
Test: compilation
Bug:
67058417
Change-Id: Ia84ed98e02fbc04ecfde979f860b8766b0018218
Hansong Zhang [Thu, 27 Sep 2018 05:02:38 +0000 (22:02 -0700)]
Hearing Aid: Clean up GATT on disconnect
When user requests Disconnect(), after disconnecting GATT,
OnGattDisconnected() never cleans up GATT queue, because the
corresponding device is already removed from HearingDevices. We need to
clean up the queue before connecting the same device again. Without the
fix, sometimes ACL is connected, but the host failed to read GATT
characteristic to open COC. Also clean up connection update status
during disconnect
Bug:
115365334
Test: connect to both devices -> disconnect -> connect, and repeat
Change-Id: I158b19b3d1f2cb2123ec554eb1ffe8c842df998e
Jack He [Wed, 29 Aug 2018 01:28:55 +0000 (18:28 -0700)]
Add TEST_MAPPING to system/bt
* Add "postsubmit" test group to TEST_MAPPING in system/bt
* Developer can run tests mannually in system/bt via:
system/bt$ atest :postsubmit
* Remove legacy configuration files spread across system/bt
* Created unified configuration file system/bt/AndroidTestTemplate.xml
and add it to the default build config so that developers don't have
to configure it
Bug:
113359343
Test: atest :postsubmit
Change-Id: I0fdd55b47ef176b5c4ce3d2cd217ffa67cf9bc23
Treehugger Robot [Thu, 27 Sep 2018 22:16:39 +0000 (22:16 +0000)]
Merge "GATTC: Use hex for conn_id in log"
Treehugger Robot [Thu, 27 Sep 2018 20:47:50 +0000 (20:47 +0000)]
Merge "HID: Free timer after removing device"
Hansong Zhang [Thu, 27 Sep 2018 00:42:40 +0000 (17:42 -0700)]
GATTC: Use hex for conn_id in log
For host conn_id, use hex format
Test: manual
Change-Id: I7d7e690a1dbe0665b827c59d104540eafa45d426
Hemant Gupta [Thu, 27 Sep 2018 16:05:46 +0000 (21:35 +0530)]
HID: Free timer after removing device
Timer conn.process_repage_timer is being freed in HID_HostDeregister
which causes use after free condition in HID_HostRemoveDev->
HID_HostCloseDev.
Fix:
Call alarm_free after HID_HostRemoveDev in HID_HostDeregister
Test:
Code analysis
Bug:
116774368
Change-Id: Iddecd126716a5660f4c37ddc917bacee84342297
Ajay Panicker [Mon, 17 Sep 2018 18:35:24 +0000 (11:35 -0700)]
Move Bluetooth to using C++17
C++ 17 has a bunch of features that will help us refactor the Bluetooth
stack to be much more safe and stable.
Bug:
115895445
Test: Compile and testtracker/201115
Change-Id: Ia1e8e179fa1df116969606d119cb8abe11f44761
Chih-hung Hsieh [Thu, 27 Sep 2018 04:33:34 +0000 (04:33 +0000)]
Merge "Add noexcept to move constructors and assignment operators."
Treehugger Robot [Thu, 27 Sep 2018 01:58:13 +0000 (01:58 +0000)]
Merge "Use maximum SSR timeout value when A2DP is streaming"
Treehugger Robot [Wed, 26 Sep 2018 23:18:32 +0000 (23:18 +0000)]
Merge "Remove obsoleted Coverity-related comment"
Ugo Yu [Thu, 13 Sep 2018 12:12:36 +0000 (20:12 +0800)]
Use maximum SSR timeout value when A2DP is streaming
* Add a new SSR entry BTA_DM_PM_SSR4 with maximum
remote/local timeout value.
* Use BTA_DM_PM_SSR4 when A2DP is streaming to prevent
phone enter sniff subrating mode.
Bug:
113496412
Test: Manually
Change-Id: I194ef9fdb4dd38eab67ff20e1bb9cab47edbfe8f
Vasu Nori [Sat, 18 Aug 2018 00:28:11 +0000 (17:28 -0700)]
Add new hidden API to return SDP record's MapSupportedFeatures field.
That field is documented in Bluetooth MAP 1.4 spec, page 114.
Spec is here: http://shortn/_zfoIrfbIzR
Bug:
111614861
Test: tested w/ KitchenSink App
Change-Id: I89903c386d97934ec7b9c80333ecc6a6d560cbec
Chih-Hung Hsieh [Tue, 25 Sep 2018 21:29:59 +0000 (14:29 -0700)]
Add noexcept to move constructors and assignment operators.
Bug:
116614593
Test: build with WITH_TIDY=1
Change-Id: I4adaf89db5001e9b627beac8160f62b50513d18f
Pavlin Radoslavov [Tue, 25 Sep 2018 18:18:34 +0000 (11:18 -0700)]
Remove obsoleted Coverity-related comment
Bug:
27078725
Test: Code compilation
Change-Id: I9398f0354e54cc6a754ed46b05b9f7cef09add8f
Treehugger Robot [Tue, 25 Sep 2018 04:41:08 +0000 (04:41 +0000)]
Merge changes I737a864e,Idc41b2a5
* changes:
Timer: Don't run new task at old timepoint
Timer: Separate code path for single and periodic
Hansong Zhang [Thu, 20 Sep 2018 17:15:12 +0000 (10:15 -0700)]
Timer: Don't run new task at old timepoint
* Fix a race condition that the task is just finished but IsScheduled
is true
* Fix a bug where cancelling the old task will make new task run at
the previous task's scheduled timepoint
* Protect racing read/write to message_loop_thread_ in RunTask() and
Cancel() by storing a local reference to message_loop_thread_ in
RunTask()
Bug:
116081383
Test: Run bluetooth_test_common.TimerTest
reschedule_task_dont_invoke_new_task_early
schedule_task
for multiple times
Change-Id: I737a864e1b061adbcd41245711e0d3e8adf448d4
Treehugger Robot [Mon, 24 Sep 2018 20:33:51 +0000 (20:33 +0000)]
Merge "Send volume just once when starting the stream."
Jakub Pawlowski [Mon, 24 Sep 2018 14:43:59 +0000 (16:43 +0200)]
Send volume just once when starting the stream.
The volume is in the Start command already, no need to send it in a
separate command.
Bug:
116145308
Test: play music, pause, adjust volume, start playing again, verify
playing was re-started with proper volume level.
Change-Id: I2a900b03a35670de4a265184f333517db17497d8
Hansong Zhang [Thu, 20 Sep 2018 17:15:12 +0000 (10:15 -0700)]
Timer: Separate code path for single and periodic
* Add helper RunSingleTask() and RunPeriodicTask() to handle two cases
separately
* In RunTask(), check that it must run on specified message loop thread
Bug:
116081383
Test: Run bluetooth_test_common
Change-Id: Idc41b2a509f43dbe946b2e26f2afd775726514aa
Treehugger Robot [Wed, 19 Sep 2018 00:12:50 +0000 (00:12 +0000)]
Merge "Add net_test_avrcp to general-tests suite"
Chih-Hung Hsieh [Mon, 17 Sep 2018 22:16:18 +0000 (15:16 -0700)]
Fix clang-tidy performance warnings in system/bt.
* Use more efficient overloaded string methods.
Bug:
30411878
Test: build with WITH_TIDY=1
Change-Id: Iff759bf68ede3bb6bdd8e332b3490128eee3b5fe
Chih-Hung Hsieh [Wed, 12 Sep 2018 22:20:43 +0000 (15:20 -0700)]
Suppress implicit-fallthrough warnings.
Add FALLTHROUGH_INTENDED for clang compiler.
Bug:
112564944
Test: build with global -Wimplicit-fallthrough.
Change-Id: Iedf7e46445101a5e3358473e1200212d67cf58d1
Joseph Pirozzo [Fri, 14 Sep 2018 22:48:55 +0000 (22:48 +0000)]
Merge "AVRCP Controller media session queue"
Dan Shi [Fri, 14 Sep 2018 17:38:26 +0000 (10:38 -0700)]
Add net_test_avrcp to general-tests suite
This is the first step for it to run in lab. With this, the test binary
will be included in general-tests.zip (test_suite* target). From there,
we can kick off the test in the lab using TF, with the right options.
Bug:
111921389
Test: m -j net_test_avrcp
./host/linux-x86/testcases/net_test_avrcp/x86_64/net_test_avrcp
Change-Id: I4de9409b4a9d4c066a9024a33d6a980ecb451dc1
Hansong Zhang [Tue, 14 Aug 2018 21:29:23 +0000 (14:29 -0700)]
Add Timer as an alternative to osi alarm
* Add a private method MessageLoopThread.DoInThreadDelayed to post a
delayed task in message loop, as an alternative approach to osi alarm
clock
* Add a unit test for MessageLoopThread to check ShutDown() waits until
current task finishes
* Add Timer using MessageLoopThread.DoInThreadDelayed
* Timer provides similar API as osi alarm, and uses same OS clock (boot
timer) as alarm
* Add benchmark and unit tests to ensure the performance is comparable
to the existing osi alarm
Test: Run unit test and benchmark test
./test/run_unit_tests.sh bluetooth_test_common
./test/run_benchmarks.sh bluetooth_benchmark_timer_performance
--benchmark_repetitions=10 --benchmark_report_aggregates_only=true
Bug:
110303473
Change-Id: I6f2e7ae2f80f9889fc5fe3c8cd6b9b2670938b46
Treehugger Robot [Thu, 13 Sep 2018 01:30:08 +0000 (01:30 +0000)]
Merge "Add support for A2DP LDAC Sink function"
Ajay Panicker [Wed, 12 Sep 2018 22:27:42 +0000 (22:27 +0000)]
Merge "Add extractBE to the Bluetooth Packets Iterators"
Chisato Kenmochi [Fri, 10 Aug 2018 11:44:05 +0000 (20:44 +0900)]
Add support for A2DP LDAC Sink function
Note: The LDAC decoder source code is needed to run with this patch.
Bug:
112839060
Test: Manual
Change-Id: Idce0070dcce4d6b83cfd08213b846d957d694d26
Signed-off-by: Chisato Kenmochi <Chisato.Kenmochi@sony.com>
Pavlin Radoslavov [Tue, 11 Sep 2018 23:47:47 +0000 (16:47 -0700)]
Add a check whether an A2DP codec is supported before including it
Some of the A2DP SRC or SNK codecs might not be supported if the
corresponding shared library is not included.
Don't include such codecs when configuring and registering
the stream end points on the local device.
Bug:
112839060
Test: Manual - remove A2DP codec shared libraries and check the
returned AVDTP Capabilities
Change-Id: Ia8fbdac915b208f9950ef7c9f50e3e0dc87e9111
Ajay Panicker [Mon, 10 Sep 2018 19:01:50 +0000 (12:01 -0700)]
Add extractBE to the Bluetooth Packets Iterators
ExtractBE allows data to be extracted from Bluetooth packets in a big
endian format.
Bug:
114751344
Test: run net_test_btpackets
Change-Id: Ib01d726893e106d34c11048acc09fee201d81c09
Treehugger Robot [Mon, 10 Sep 2018 23:40:29 +0000 (23:40 +0000)]
Merge "Fix spacing in hearing aid dumpsys"
Pavlin Radoslavov [Sun, 9 Sep 2018 18:06:21 +0000 (11:06 -0700)]
Disable absolute volume control for deepblue2 speaker
The speaker does not accept the volume levels from the Phone.
It responds back with rounded down volume levels.
Bug: b/
37834035
Test: Manual
Change-Id: Ie5575233c3cf31c087addd3cef1c12ad36b820b0
Hansong Zhang [Fri, 7 Sep 2018 16:39:22 +0000 (09:39 -0700)]
Fix spacing in hearing aid dumpsys
Bug:
114242876
Test: See dumpsys output for bluetooth_manager
Change-Id: Ifb0884ba4e90e2b925bafc52a15d3375c9aec288
Chienyuan [Wed, 29 Aug 2018 05:38:19 +0000 (13:38 +0800)]
Allocate lcb when connection complete if can't find one
When BT stack sends create connection command and receive connection
request at the same time, connection request will reuse the link control
block created by create connection command. But the link control block
will be released before connection complete due to controller busy.
Bug:
112818458
Test: manual - turn on BT and turn on Headset within little time gap
Change-Id: Ie30c655b933250f1709ba10c578ea5f30ea13139
Bailey Forrest [Wed, 22 Aug 2018 00:20:29 +0000 (17:20 -0700)]
Implement A2DP source and AVRCP target binder servers
Bug:
64231556
Test: On device.
Change-Id: I57136d5550e8e52626a1e7eb26b7d8c02cd94eb5
Treehugger Robot [Wed, 29 Aug 2018 00:32:15 +0000 (00:32 +0000)]
Merge "[bluetoothtb] Fix bug processing BT_PROPERTY_UUIDS"
Joseph Pirozzo [Tue, 28 Aug 2018 22:33:47 +0000 (15:33 -0700)]
AVRCP Controller media session queue
Add support for the Now Playing Content available through AVRCP to
receive proper notifications when it changes and expose it via media
session rather than a node in the browse tree.
Bug:
78598689
Test: Stream Music, change songs and playlist, verify media session
queue.
Change-Id: I46c32d05c5a674388c9e59830ec0596432cd78ef
Yamei Du [Mon, 11 Sep 2017 11:10:47 +0000 (19:10 +0800)]
Fix out-of-bounds reading in btm_ble_vendor_capability_vsc_cmpl_cback
8 bits parameters get 16 bits from buffer in btm_ble_vendor_
capability_vsc_cmpl_cback, which would cause out-of-bounds reading.
Correct STREAM_TO_UINT16 to STREAM_TO_UINT8
Test: manual
Bug:
112167084
Change-Id: Id2b71a8f74eee5d93f287d4705aadab449c55fce
Ajay Panicker [Wed, 22 Aug 2018 23:24:03 +0000 (16:24 -0700)]
Don't add items to a response if a previous item fails to be added
Bug:
112164711
Test: Run native test net_test_avrcp
Change-Id: Iace287bb716b28eda62a8a0500deb99cc46ae485
Treehugger Robot [Tue, 28 Aug 2018 18:38:17 +0000 (18:38 +0000)]
Merge "Set the AVRCP Browsing MTU for a device after browse open"
Ajay Panicker [Fri, 24 Aug 2018 17:32:07 +0000 (10:32 -0700)]
Set the AVRCP Browsing MTU for a device after browse open
Trying to get the Browsing MTU before the Browsing channel is opened
returns the minimum MTU. This leads to smaller browsing messages than
expected.
Bug:
113160447
Test: Connect to device and see that Avrcp Browse packets are the
correct size
Change-Id: Iefda855d0a777439a8a6829619bc4c5543b62eaf
Jack He [Mon, 27 Aug 2018 20:55:14 +0000 (13:55 -0700)]
Make thread names more meaningful
* Rename threads:
- module_wrapper -> bt_module_lifecycle_thread
- btif_a2dp_sink_worker_thread -> bt_a2dp_sink_worker_thread
- btif_a2dp_source_thread -> bt_a2dp_source_worker_thread
- bt_jni_workqueue -> bt_jni_thread
- stack_manager -> bt_stack_manager_thread
- hci_thread -> bt_hci_thread
- bt_workqueue -> bt_startup_thread
- btu_message_loop -> bt_main_thread
* Rename functions:
- do_in_bta_thread -> do_in_main_thread
- get_message_loop -> get_main_message_loop
- post_to_hci_message_loop -> post_to_main_message_loop
* Refactored bta_sys_sendmsg
Bug:
110303473
Test: make, unit test, stream music
Change-Id: I3051f6ea2d33db37af8eebafba7db4d1e113f611
Jack He [Sat, 25 Aug 2018 00:14:10 +0000 (17:14 -0700)]
Common: Replace ExecutionBarrier with std::promise and std::future
* std::promise and std::future are able to achieve the same
functionalities of ExecutionBarrier with extra flexibility
* Replace "_barrier" with "_promise" in system/bt/common
Bug:
110303473
Fixes:
112159657
Test: mm -j40, unit test
Change-Id: I2a420bbf16bf92e4b3dd256d9f23480fc2be7be1
Pavlin Radoslavov [Sat, 25 Aug 2018 01:45:16 +0000 (18:45 -0700)]
Run the wakelock JNI callbacks on the JNI thread
All JNI callbacks must be on the JNI thread, otherwise this could
impact the threads' operation.
Bug:
111277984
Test: A2DP streaming
Change-Id: I94fa4500aea62a574c80749e904434e46eb4e942
Treehugger Robot [Mon, 27 Aug 2018 19:03:21 +0000 (19:03 +0000)]
Merge "Move metrics and time library to libbt-common"
Jack He [Wed, 15 Aug 2018 19:38:37 +0000 (12:38 -0700)]
Move metrics and time library to libbt-common
* libbt-osi is being deprecated and libbt-common will replace it
* Move recently implemented metrics library to libbt-common
* Move time library from libbt-osi to libbt-common and renamed as time_util
to avoid potention name collision with system time libraries
* Need to keep time library for now because we need to use
CLOCK_BOOTTIME that include system suspension time for A2DP encoding
* Use libchrome logging methods in metrics library
* Put both metrics and time_util into bluetooth::common namespace
* Return uint64_t for time_get_os_boottime_ms and update various
receiver types
* Remove tBTM_CB.max_collision_delay and use the constant
BTM_SEC_MAX_COLLISION_DELAY instead
Bug:
111568640
Test: mm -j40, unit test, stream music
Change-Id: I8c384a810d592bb6b9eb322134e947d066489ba4
Ruchi Kandoi [Fri, 17 Aug 2018 20:30:06 +0000 (13:30 -0700)]
Fix V535 CWE-691: inner/outer for loop sharing variables
Test: compiles
Bug:
112146072
Change-Id: Ie9e10d727edc652865458298cb59a24ac5732c98
Bailey Forrest [Sat, 25 Aug 2018 00:04:00 +0000 (17:04 -0700)]
[bluetoothtb] Fix bug processing BT_PROPERTY_UUIDS
BT_PROPERTY_UUIDS returns an array of UUID objects
Bug: None
Test: Manual
Change-Id: I9ace472b8bddb5823dc7309528d94faba3d0dfe2
Treehugger Robot [Thu, 23 Aug 2018 22:54:16 +0000 (22:54 +0000)]
Merge "L2CAP: Handle no idle timeout (0xFFFF)"
Nitin Shivpure [Mon, 30 Jul 2018 12:44:54 +0000 (18:14 +0530)]
L2CAP: Handle no idle timeout (0xFFFF)
Precondition:
1. DUT acts as GATT server.
2. Remote acts as Gatt Client
Use case:
1. Remote device starts BLE scan
2. Remote device connects to DUT
3. Remote device keeps on sending notifications to DUT
Expected result:
Connection should be active after 18 hours
Observed Result:
Connection is dropped after 18 hours due to l2c_link_timeout.
Root Cause:
L2CAP is not properly handling no idle timeout(0xFFFF) and
65535000 ms
timer gets started after BLE connection, leading to connection getting dropped
after 18 hours.
Fix:
If there is no L2CAP dynamic ccb and no idle timeout is configured for
GATT or any other fixed channel, then cancel existing LCB timer.
Test: No BLE disconnection seen after 18 hours
Bug:
112249120
Change-Id: I58766564cf62efb7af0869035115459bae37c558
Stanley Tng [Wed, 22 Aug 2018 21:43:57 +0000 (14:43 -0700)]
Clear connection update pending flag when disconnected
For the hearing aid profile and when we get disconnection
while there is a pending connection update, then clear the flag so that
the next connection update can proceed.
Bug:
112050972
Test: Manual test to check for regressions
Change-Id: I54635a680cf276cf6c9f94520943c3efa97e77ec
Treehugger Robot [Tue, 21 Aug 2018 23:47:01 +0000 (23:47 +0000)]
Merge "A2DP-SINK: Use MessageLoopThread for decoding"
Ted Wang [Tue, 21 Aug 2018 02:32:49 +0000 (02:32 +0000)]
Merge "Fix "Disable Absolute Volume" Bluetooth developer option"
Jack He [Mon, 20 Aug 2018 22:46:24 +0000 (15:46 -0700)]
Disable CFI verification for stack_rfcomm test that uses gtest+gmock
Apparently, the CFI verification crashes unit tests that
are using gtest+gmock. Interestingly, those tests succeed for 32-bit
binaries, and fail for 64-bit binaries.
Bug:
71739588
Test: Running the 64-bit version of the unit tests in test/run_unit_tests.sh
Change-Id: Ic950087181a86d08af1b858272e946ef4125b78a
Jack He [Thu, 16 Aug 2018 08:29:50 +0000 (01:29 -0700)]
A2DP-SINK: Use MessageLoopThread for decoding
* Instead of OSI thread, use MessageLoopThread for decoding
* Similar to A2DP source
* Change tBTIF_A2DP_SINK_CB into a proper class BtifA2dpSinkControlBlock
* Initialize variables in BtifA2dpSinkControlBlock's constructor
* Free un-freed variables in BtifA2dpSinkControlBlock::Reset() method
Bug:
110303473
Test: mm -j40, unit test, stream music
Change-Id: I21f5b0c9f88d2cadada6fc854070d31ac378244f
Ted [Fri, 17 Aug 2018 10:49:37 +0000 (18:49 +0800)]
Fix "Disable Absolute Volume" Bluetooth developer option
Do not report device support absolute volume while
"Disable Absolute Volume" in developer option is enabled or
the remote device is listed in the interoperability database.
Test: manually adjust volume when Disable Absolute Volume is enabled
Bug:
112193362
Change-Id: Id63a22dba0d8a871035774fc86b66d32e9225b48
Sunny Kapdi [Thu, 5 Jul 2018 21:31:21 +0000 (14:31 -0700)]
A2DP Offload: Fix Max AVDTP MTU for Offload
Fix the max AVDTP MTU for Offload to what
can fit in a 3DH5 packet after accounting
for AVDTP and L2CAP header.
Also:
- Moved MAX_2MBPS_AVDTP_MTU and MAX_3MBPS_AVDTP_MTU to the common
avdt_api.h so it can be used by the rest of the code
- Removed previously incorrect value of BTA_AV_MAX_A2DP_MTU and
replace it with the new (correct) value of MAX_3MBPS_AVDTP_MTU
- Removed duplicate define of MAX_2MBPS_AVDTP_MTU and use
the one from avdt_api.h
Bug:
78907438
Test: A2DP Streaming
Change-Id: I2c60c34c33e4164c9f7e2e7362bbb600482dec97
Treehugger Robot [Sat, 18 Aug 2018 20:18:39 +0000 (20:18 +0000)]
Merge "Implement A2DP sink and AVRCP controller binder server"
Bailey Forrest [Tue, 31 Jan 2017 01:38:58 +0000 (17:38 -0800)]
Implement A2DP sink and AVRCP controller binder server
Also added bonded device management because this is needed for A2DP to
work with most devices.
Bug:
32657860
Test: Run on device, modified tests pass.
Change-Id: I862e41b6594b7cec9f61094d300577574cc8bbc6
Treehugger Robot [Sat, 18 Aug 2018 00:30:46 +0000 (00:30 +0000)]
Merge "Replace period_ms_t with uint64_t"
Jack He [Thu, 16 Aug 2018 05:17:23 +0000 (22:17 -0700)]
Replace period_ms_t with uint64_t
* There is no need to define a unit for millisecond in our system since
uint64_t is the largest integer that is supported
* period_ms_t results in many unnecessary dependency on
osi/include/time.h
* Used text editor to do the directory wise replacement, basically
sed -i 's/period_ms_t/uint64_t/g' *
* Need to modify several method and variable names to indicate that they
are using millisecond as time unit
Bug:
110303473
Test: build, no functional change as period_ms_t was a typedef of
uint64_t
Change-Id: I497c9a146a97bab7c7477b358847dad958b92034
Treehugger Robot [Thu, 16 Aug 2018 18:27:34 +0000 (18:27 +0000)]
Merge "HID: Remove device from database in error case"
Treehugger Robot [Wed, 15 Aug 2018 02:41:17 +0000 (02:41 +0000)]
Merge "Enable SNIFF mode for HFP"
Treehugger Robot [Wed, 15 Aug 2018 00:11:21 +0000 (00:11 +0000)]
Merge "Fix reliable write."
Treehugger Robot [Tue, 14 Aug 2018 23:27:34 +0000 (23:27 +0000)]
Merge "HFP: Only active BT device can hung up call"
Treehugger Robot [Tue, 14 Aug 2018 23:21:53 +0000 (23:21 +0000)]
Merge "Check startup_future before using it"
Qiyu Hu [Wed, 13 Jun 2018 15:08:17 +0000 (08:08 -0700)]
Fix reliable write.
We cannot simply assume the write is terminated in reliable write. When
the reliable write value is longer than MTU allows, the current
implementation can only send whatever MTU allows and naively set the
status to GATT_SUCCESS, in the name of "application should verify handle
offset and value are matched or not". That's why MTU negotiation is a
workaround as people mention in b/
37031096, which just fits all the write
value into a single request.
This also blocks our test on CtsVerifier.
Bug:
37031096
Test: Manual test and confirm that we don't simply send partial value
Change-Id: I907877608f4672f24c002e630e58bf9133937a5e
Hemant Gupta [Tue, 19 Sep 2017 10:00:56 +0000 (15:30 +0530)]
HID: Remove device from database in error case
Usecase:
1) Pair and connect with remote hid device.
2) Disconnect with remote hid device.
3) Unpair DUT from remote hid device.
4) Send connect request from hid device by pressing any button.
5) Try to pair and connect DUT with remote hid device.
Expected Result
1) Connection should fail after step 4 if remote device does not initaite pairing.
2) Connection should succeed with remote device and hid device should be added to
paired list and hid operations should work properly.
Observed Result
HID operations from remote device starts working without device added to paired list
and UI stucked at pairing.
Root Cause:
After step 4, device should be removed from database when incoming connection is
rejected.
Fix:
Perform virtual unplug for device when connection request for hid is received from
unpaired device.
Test: Issue is not reproducible after stress testing with above change
Bug:
68176469
Change-Id: I9bc72ccc7a849c0d6acf3230a75e1fe95949b3fe
Ugo Yu [Tue, 7 Aug 2018 01:55:11 +0000 (09:55 +0800)]
Enable SNIFF mode for HFP
Bug:
112285337
Test: Manual
Change-Id: Ibb019d11cf93051a198df4efb7bd79f31c15a9c0
minle.zuo [Wed, 25 Jul 2018 09:02:51 +0000 (17:02 +0800)]
HFP: Only active BT device can hung up call
Some inactive devices can't send hung up key to host when
HFP connected and active call exist.
And other inactive devices can send hung up call by
sending hung up command.
Solution: To keep consistency of this behavior,
only allow active BT device to hung up call.
Test: Active device can hung up call and inactive can't hung up
Change-Id: Iec1ae689f1d40c15199707e9e925814f71ded619
Bailey Forrest [Thu, 2 Aug 2018 22:10:46 +0000 (15:10 -0700)]
Check startup_future before using it
event_finish_startup and startup_timer_expired can race, leading one of
them to try to use startup_future when it is NULL.
Check startup_future still exists before using it.
Bug:
112114060
Test: Use Bluetooth
Change-Id: I018d45f070b3f931c1114abf0471b6ea1d524f2a
yunhanw [Mon, 13 Aug 2018 18:47:47 +0000 (11:47 -0700)]
Re-enable LE advertising after disconnect, on controllers not supporting advertising when connected
Bug:
112451773
Test: compiled and local device test
Change-Id: Ia39f46b3b9667cba34465e3ff310df85a765c3e1