OSDN Git Service
Jakub Pawlowski [Fri, 10 Feb 2017 05:41:05 +0000 (05:41 +0000)]
Merge "Advertising data handling improvements"
Treehugger Robot [Fri, 10 Feb 2017 03:15:25 +0000 (03:15 +0000)]
Merge "Enable DLOG on eng and userdebug builds"
Jakub Pawlowski [Tue, 7 Feb 2017 20:15:06 +0000 (12:15 -0800)]
Advertising data handling improvements
* use non-hardcoded advertise data size
* use cache for keeping non-complete advertising data, waiting either
for scan scan response, or secondary channel data.
Bug:
30622771
Test: sl4a FilteringTest
Change-Id: I689edcb4aee30361df15340029559cd19dac552b
Treehugger Robot [Fri, 10 Feb 2017 00:53:23 +0000 (00:53 +0000)]
Merge "Remove build variables that are no longer used"
Jakub Pawlowski [Fri, 10 Feb 2017 00:46:45 +0000 (16:46 -0800)]
Enable DLOG on eng and userdebug builds
Test: manual
Change-Id: I1ff4ad6b2543246351d4d34919ba443e5617a9c0
Jack He [Wed, 8 Feb 2017 01:25:15 +0000 (17:25 -0800)]
Use same timestamp for on-disk BT Snoop Log and in-memory BT Snooz Log
* Logcat uses gettimeofday for its timestamp, the same as on-disk BT
Snoop log
* Although in-memory BT Snooz Log uses the same method to get time, it
is calling it separately, resulting in mismatch between timestamps of
two snoop logs
* This CL let them uses the same timestamp_us value and put the function
definition to libosi
* Note that preserved on-disk BT Snoop logs timestamp postfix at
btsnoop_hci_<timestamp>.log
will be changed to microsecond since epoch at current device timezone
instead of the shifted BT Snoop timestamp value
* New unit tests for gettimeofday
Bug:
35113514
Test: Make, unit tests, run BT activities and check both snoop logs
Change-Id: I5b3f87bc523b272ced2c69a4595d0e0cbe29bcb3
Pavlin Radoslavov [Thu, 9 Feb 2017 22:35:05 +0000 (22:35 +0000)]
Merge "Guard btsnooz ringbuffer access from multiple threads"
Jack He [Thu, 9 Feb 2017 22:29:59 +0000 (14:29 -0800)]
Remove build variables that are no longer used
* Removed BtHcilpIncluded from BOARD_BLUETOOTH_BDROID_HCILP_INCLUDE
* Removed BtHciUseMct from BLUETOOTH_HCI_USE_MCT
Bug:
35203653,
34951912
Test: Code compilation, no user visible effects
Change-Id: Ifbb0c2165a2b7cb6ec1d5c87a610219dd010206b
Kenmochi, Chisato [Thu, 9 Feb 2017 20:23:47 +0000 (12:23 -0800)]
Fix AAC bitrate computation and add missing parameters
* Compute the AAC codec bitrate based on the MTU and the AAC
object type such that the AAC frames are not fragmented.
The spec recommendation is to avoid fragmentation, and
some sink devices cannot process fragmented frames.
* Setup/assign AACENC_PEAK_BITRATE as the peak bitrate to
make sure we never go over the MTU frame size.
* Add missing AAC parameter setup for AACENC_AUDIOMUXVER
and AACENC_SIGNALING_MODE
* Add a fix for selecting the bitrate if the sink device reports
capability with zero bitrate - for such devices we negotiate
our bitrate. For the actual AAC codec bitrate we still compute
it based on the MTU and the AAC object type.
Test: Tested with numerous AAC sink devices
Bug:
34953385
Change-Id: I9ca6353b0e1ee107f1242803de4e82d568a3394b
Andre Eisenbach [Thu, 9 Feb 2017 19:44:04 +0000 (11:44 -0800)]
Guard btsnooz ringbuffer access from multiple threads
Since moving to HIDL, the btsnooz packet ringbuffer can be accessed from
two separate threads. Thus it should be guarded from concurrent access
to avoid pointer corruption.
Bug:
35182804
Test: manual
Change-Id: I3e6e1a869887a7ad5d87d8bb09ed78a22b3383ae
Treehugger Robot [Wed, 8 Feb 2017 14:00:07 +0000 (14:00 +0000)]
Merge "Use CHECK() to verify that HIDL is installed"
Treehugger Robot [Wed, 8 Feb 2017 10:50:04 +0000 (10:50 +0000)]
Merge "Fix the implementation of htonll()"
Pavlin Radoslavov [Tue, 7 Feb 2017 02:48:18 +0000 (18:48 -0800)]
Fix the implementation of htonll()
Prior the fix, all btsnoop entries had same timestamp.
Bug:
35111777
Test: Examine the btsnoop log file with Wireshark
Change-Id: I9e664475ff5b4ffc543d95b90a47c7f80fdc0370
Sanket Agarwal [Tue, 7 Feb 2017 21:49:00 +0000 (21:49 +0000)]
Merge "AVRCT CT: uint8_t is used for 2byte field"
Myles Watson [Tue, 7 Feb 2017 13:14:06 +0000 (05:14 -0800)]
Use CHECK() to verify that HIDL is installed
Test: build, boot test on angler
Change-Id: Ia64dcceedc233ef494ab0fdce7ee649e74fa45a0
Sanket Agarwal [Tue, 31 Jan 2017 21:43:58 +0000 (13:43 -0800)]
HF Client: SCO routing with multiple devices
For SCO it makes sense only to have one active connection at a time for
any device since simultaneous SCO calls in a single device is
un-reasonable. This change changes the SCO state machine in following
ways:
a) SCO is not setup automatically whenever AG wants, the client for this
BTA layer will have to call connect_audio to start SCO
b) Also when we disconnect SCO for a device, it does not go into a
listen state. We are making sure that the upper layer caller always has
to call connect to accept a connection
Bug: b/
34518638
Test: Manual testing w/ multiple active calls and SCO switching
Change-Id: I6e6c4c6e6ee19e44e3ff14499fb99083102bde5a
Sanket Agarwal [Tue, 7 Feb 2017 01:56:29 +0000 (17:56 -0800)]
AVRCT CT: uint8_t is used for 2byte field
This causes the upper stack to report incorrect entries if the value is
large
Bug: b/
34682784
Test: Check with a list > 4 items large and packet size big enough to
exceed uint8_t size
Change-Id: I73233a74378d9c091e33f204780a9492505d99b4
Jakub Pawlowski [Tue, 7 Feb 2017 01:29:25 +0000 (01:29 +0000)]
Merge changes from topic 'bt5_scan_props'
* changes:
Propagate BT5 specific scan result properties up the stack (2/3)
Use new event type in BLE scan
Jakub Pawlowski [Fri, 27 Jan 2017 16:06:20 +0000 (08:06 -0800)]
Propagate BT5 specific scan result properties up the stack (2/3)
Bug:
30622771
Test: sl4a FilteringTest
Change-Id: Ib9d18ea3a1fc7d95300415a04b551d66767b04d2
Jakub Pawlowski [Fri, 27 Jan 2017 13:53:07 +0000 (05:53 -0800)]
Use new event type in BLE scan
Right now new event_type in scan result is translated to legacy
one and used through whole stack. This patch make use of new event_type
through whole stack instead.
Bug:
30622771
Test: sl4a FilteringTest
Change-Id: I7420c040b8c54fae00262c939bcabc6c6fcb16e6
Pavlin Radoslavov [Wed, 1 Feb 2017 04:51:06 +0000 (20:51 -0800)]
Add a mechanism to configure the default A2DP codec priorities
Previously, the relative codec priorities were hard-codec internally.
The new mechanism uses the following configurable resources in
packages/apps/Bluetooth/res/values/config.xml to re-assign the
default codec priorities per device, or to explicitly disable a codec.
- a2dp_source_codec_priority_sbc
- a2dp_source_codec_priority_aac
- a2dp_source_codec_priority_aptx
- a2dp_source_codec_priority_aptx_hd
- a2dp_source_codec_priority_ldac
Those values are assigned on startup.
Also, they can be changed per device by using an overlay:
device/<VENDOR>/<DEVICE>/overlay/packages/apps/Bluetooth/res/values/config.xml
Test: Manually streaming to a headset
Change-Id: I5312299aea4a11c92fbe999d521adb39346b9866
Jakub Pawlowski [Wed, 25 Jan 2017 11:06:49 +0000 (03:06 -0800)]
BLE Advertising Manager test improvements
This patch moves mock verification before call to callback. If for any
reason the callback is not properly initialized, this is usually due to
fact that the call didn't reach the mock. Right now in such cases we get
a crash and stack trace. After this patch we will first get information
about the mock not being called properly, then the crash, which would
make debugging such issues much easier.
Bug:
30622771
Test: manual test
Change-Id: Ia182f2eed384924395e8d6b6a2d3d0abd393a4ee
Andre Eisenbach [Fri, 3 Feb 2017 22:37:44 +0000 (14:37 -0800)]
Temporarily disable WBS; to be replaced with eSCO
HIDL'ized vendor library does not support custom audio parameter
configuration currently. To be replaced with eSCO commands.
Test: manual
Change-Id: I64850a7cbc6a05376f60f669fe43c3955cfcc08c
Pavlin Radoslavov [Fri, 3 Feb 2017 03:47:16 +0000 (19:47 -0800)]
Fix a memory leak in the osi allocation tracker
Add a missing free(allocation) inside allocation_tracker_notify_free()
when freeing a memory buffer.
Prior to switching the allocation tracker to use C++ unordered_map,
the "allocation" bin was kept within (and reused) by the older hash_map
mechanism. However, after the switch to the C++ unordered_map this
is no longer the case, hence the memory leak.
Test: watch -n 1 "adb shell dumpsys meminfo -d BT-PID | grep Heap"
Bug:
34785845
Change-Id: I737c901a6452d29d18fd8b847e7d5ea10c5ff485
Treehugger Robot [Fri, 3 Feb 2017 02:12:31 +0000 (02:12 +0000)]
Merge "Use local CCB variable in loop to check GAP CCB pool"
Venkata Ramana Rao [Wed, 15 Jun 2016 09:57:12 +0000 (15:27 +0530)]
Use local CCB variable in loop to check GAP CCB pool
CCBs are not being properly cleared due to attempting to clear the wrong
CCB. This is fixed by using a local CCB variable in order to preserve the
CCB being freed.
Test: Send multiple files over OPP
Change-Id: I06a8f237047ffb212118b4239e9856fe5c89acb1
Manu Viswanadhan [Tue, 7 Jun 2016 10:51:18 +0000 (16:21 +0530)]
Initializing the SDP event message pointer before sending
Use case: Crash while copying SDP results in case of SDP
ServiceSearchAttributeRequest failure
Steps : Repeated connection-disconnection with multiple devices
Failure: Crash while copying SDP results
Root cause: In case of SDP_ServiceSearchAttributeRequest failure,
garbage value sent for discovery result structure due to improper
initialization
Fix: Initialize the discovery result structure to zero before
sending
Test: code compilation.
Change-Id: I46d92d6262bae3b5def5401270465a3a06468c1a
Myles Watson [Thu, 26 Jan 2017 23:09:38 +0000 (15:09 -0800)]
test_vendor: Test fixes for AsyncManager
Test: unit tests pass
Change-Id: I5c3f9f4a1fa86e97fa9e6cc26160fd1e3e854925
Andre Eisenbach [Thu, 2 Feb 2017 18:00:58 +0000 (18:00 +0000)]
Merge changes Ie172ca37,Idf714e51
* changes:
Remove LPM code from the stack
btif: Remove platform-specific address logic
Andre Eisenbach [Thu, 2 Feb 2017 18:00:29 +0000 (18:00 +0000)]
Merge "Initial HIDL conversion"
Myles Watson [Mon, 12 Sep 2016 21:39:58 +0000 (14:39 -0700)]
Remove LPM code from the stack
Power management is handled in hardware/interfaces/bluetooth/.
Test: mma -j32
Change-Id: Ie172ca37059768a2cfa0d4b84f34b54624b1fa49
Myles Watson [Wed, 21 Dec 2016 23:27:01 +0000 (15:27 -0800)]
btif: Remove platform-specific address logic
This functionality has moved to hardware/interfaces/bluetooth/
Test: Boot and check the address.
Change-Id: Idf714e514314c10dc1659f024ab4cc8570f292b7
Andre Eisenbach [Fri, 11 Nov 2016 00:11:00 +0000 (16:11 -0800)]
Initial HIDL conversion
Test: Unit tests, VTS test, device sanity
Change-Id: Ia5b2b5fa762d240c0490666d50ea5c878631fcd1
Ajay Kumar [Wed, 12 Mar 2014 13:59:27 +0000 (19:29 +0530)]
Handled invalid MTU Size in L2cap Process Commands
Use case: Execute the L2CAP test suite on Codenomicon tool
(1)From tool Codenomicon Defensics 11 menu Utilities > Bluetooth Scan,
paired Bluetooth between pc and phone.
(2)From Defensics 11 Settings ,choose paired phone Bluetooth to be
Target Bluetooth device address in Basic configuration.
(3)Run the test case " Security - l2cap ".
(4)When run to the number 28, 29 test case,check the phone. BT turn
off and turn on
Failure: BT crash observed due to invalid MTU packets from test tool
Root cause: L2CAP is not validating packets in L2CAP Process Commands
Fix: Fixed by sending reject CMD for invalid commands from tool
Test: code compilation.
Change-Id: I8c503ab77d8fca3728a84c3457d8115e31ee3a13
Pavlin Radoslavov [Wed, 1 Feb 2017 11:55:33 +0000 (03:55 -0800)]
Add memory allocation statistics to the Bluetooth dumpsys output
The following memory allocation statistics are added to
the "dumpsys bluetooth_manager" output.
Those are tracking the allocations that are using the OSI malloc mechanism:
osi_strdup() / osi_strndup() / osi_malloc() / osi_calloc() / osi_free()
Bluetooth Memory Allocation Statistics:
Total allocated/free/used counts : 4063 / 3323 / 740
Total allocated/free/used octets : 922460 / 607941 / 314519
Test: Running "adb shell dumpsys bluetooth_manager"
Change-Id: Ibe1d28ec3a2acfd87cfaa10e5902ef3b596e64a8
Pavlin Radoslavov [Thu, 26 Jan 2017 01:00:23 +0000 (17:00 -0800)]
Update the A2DP Codec Config API
Previously, the JNI upcall would contain only the current codec config.
In the new API, the upcall contains:
1. The current codec config
2. The list of codecs containing the local codecs capabilities
3. The list of codecs containing the selectable codecs capabilities.
This list is the intersection of the local codecs capabilities
and the capabilities of the paired device.
Also, updated the codec backend to accomodate the above changes:
* Update all selectable codecs inside bta_av_co_audio_set_codec()
* Changed getCodecConfigAndCapabilities() to return current codec
config, local codecs capabilities, and selectable codecs capabilities.
* Updated each codec to compute and store a copy of the selectable
capabilities, and the local capabilities.
* Updated tA2DP_SBC_CIE to include new field bits_per_sample
(for consistency with the rest of the codecs).
* Replaced usage of codec_priority of 0 with BTAV_A2DP_CODEC_PRIORITY_DEFAULT
* If there is user codec (re)config call, we always send an upcall
to inform the Java layer about the most recent codec info.
Thus, the caller would always know whether the request succeeded or failed.
Test: A2DP streaming with headsets and switching the codecs
Change-Id: Ie7a5cd5c2ab01bb8676032be05bc2ad03baa1e3f
Stephen Li [Thu, 26 Jan 2017 23:45:27 +0000 (15:45 -0800)]
Merge commit '
ca6d7dcbd49356338eaaa88de87885ecaf218c4d' into
This is because patchset 1 of change 328081 got merged in to the branch
and not patchset 2, despite what gerrit UI says. This is a known error
and is being worked on.
Change-Id: If4f6f3d705e93f03d120c6441e16e9b0afc3d9ca
Treehugger Robot [Thu, 26 Jan 2017 23:22:12 +0000 (23:22 +0000)]
Merge "Remove HC_BUFFER_HDR_T"
Andre Eisenbach [Wed, 25 Jan 2017 17:26:41 +0000 (09:26 -0800)]
Remove HC_BUFFER_HDR_T
Test: compiles
Change-Id: Ia5bf3395bd5a18a27168f05a0a2239a37ddb2c2c
Pavlin Radoslavov [Wed, 4 Jan 2017 00:53:18 +0000 (16:53 -0800)]
Integration of the AAC codec for A2DP source
Also:
- Implemented data fragmentation inside bta_av_data_path()
that is RTP compatible.
- Do not use the codec_type when composing the RTP payload type
per RFC 3016, Section 4.2. That value doesn't have actual meaning
in the context of the Bluetooth supported codecs, and is ambiguous:
all vendor codecs map to the same value 0xFF.
- Updated support function A2DP_BitsSet() so it works for
up to 64-bit integers.
- Updated a log message inside l2c_data_write() to print
packet length and peer MTU on error.
Test: A2DP streaming to AAC headsets
Bug:
30958229
Change-Id: I1b530f1c5c495b8231fd68bed788d4567096683d
Treehugger Robot [Wed, 25 Jan 2017 19:55:59 +0000 (19:55 +0000)]
Merge "Update UUIDs immediately on NVRAM"
Treehugger Robot [Wed, 25 Jan 2017 19:28:02 +0000 (19:28 +0000)]
Merge "Corrected default value assignments in Bluetooth A2DP Metrics"
Srinu Jella [Mon, 21 Nov 2016 12:56:58 +0000 (18:26 +0530)]
Update UUIDs immediately on NVRAM
As the BTIF config updation have delay in writing items
to the NVRAM, some times there is a chance of not updating
incase of battery removal happens before the actual write onto
NVRAM.
As SDP UUIDs is important data to store, it will update
immediately onto NVRAM.
Test: manual
Change-Id: I6637dc326f3a53211a5bbf988a2dca1020203128
Andre Eisenbach [Wed, 25 Jan 2017 17:26:41 +0000 (09:26 -0800)]
Remove HC_BUFFER_HDR_T
Test: compiles
Change-Id: Ia5bf3395bd5a18a27168f05a0a2239a37ddb2c2c
Ivan Podogov [Thu, 19 Jan 2017 17:19:37 +0000 (17:19 +0000)]
HID: Fix forced disconnection flow.
In some cases, we end up in a state where we can neither
connect nor forcefully end connection, and will require disabling
the Bluetooth adapter to fix this state.
When a device is taking too long to connect (or out of range),
the user may want to cancel the connection by calling disconnect
method, which will be ignored in any state other than
BTA_HD_CONN_ST. It is a lot better to immediately cease the
connection process at this point, so:
- BTA_HD_API_DISCONNECT_EVT is now not ignored in BTA_HD_IDLE_ST;
- bta_hd_disconnect_act now reports a correct MAC address during
disconnection (it used to send 00:00:00:00:00:00 before);
- HidDevDisconnect now allows to forcefully end the connection,
and does it in exactly the same way we handle the errors.
When L2CAP connection fails, both hidd_l2cif_config_ind and
hidd_l2cif_config_cfm set conn_state to HID_CONN_STATE_UNUSED,
which is immediately overwritten by the hidd_conn_disconnect call
(it will set conn_state to HID_CONN_STATE_DISCONNECTING, because
ctrl_cid != 0 in both cases), thus making any subsequent calls to
connect failing with "already connecting" error. More than that,
all functions send the HID_DHOST_EVT_CLOSE event when failing,
which is, again, ignored in the BTA_HD_IDLE_ST state. So:
- BTA_HD_INT_CLOSE_EVT is now not ignored in BTA_HD_IDLE_ST;
- conn_state is set to HID_CONN_STATE_UNUSED after the call to
hidd_conn_disconnect, but before sending the close event.
Test: Build, run, connect/disconnect multiple times.
Change-Id: I85bb03f760bb9a6fd4c1b944d515232c1be12300
Jack He [Fri, 20 Jan 2017 19:17:44 +0000 (11:17 -0800)]
Corrected default value assignments in Bluetooth A2DP Metrics
* In certain cases btif_a2dp_source_stop_audio_req() could be called before
btif_a2dp_source_start_audio_req() is called, resulting in session_start_us
to be 0. In this case, audio_duration_ms = time_get_os_boottime_us() - 0
will be a very large number that is not the actual audio duration. This
CL marks audio_duration_ms as -1 in the above situation so that we can
differentiate between valid and invalid audio durations
* Set default timer and counter values to 0 when
tx_queue_dequeue_stats.total_updates > 1
* Move update_scheduling_stats for tx_queue_enqueue_stats to
btif_a2dp_source_audio_handle_timer as we intend to capture the time
intervals for enqueue scheduling instead of time intervals between
frame enqueue (i.e. one scheduling event can enqueue multiple frames)
* Use tx_queue_enqueue_stats for metrics instead of *dequeue* since only
enqueue is triggered by timer event
Bug:
33694310
Test: Code compilation, BtFunhausMetricsTest
Change-Id: I10984920afd4d77f07a5ac75736f8dcd69b13af8
(cherry picked from commit
5a9925784a4a34811ae29608b67dee4a580c226b)
Jakub Pawlowski [Mon, 23 Jan 2017 22:03:19 +0000 (14:03 -0800)]
Add advertising handle zero quirk
Some controllers are strict about VSC handle mapping, and don't allow
using zero value.
Test: manual test
Change-Id: Ia2df17af16e0e4da375d6e7d5b5f882ced508ce9
IHLHO KIM [Fri, 13 Jan 2017 06:27:38 +0000 (06:27 +0000)]
Fix the GATT server and HOGP disconnect
GATT server disconnect and HOGP disconnect are not working after the
following commit:
a62adcab30929566b435891611232566bd69204a.
‘BTA_GATTS_CancelOpen’ makes ‘gatt_update_app_hold_link_status’
return FALSE value. As a result, ‘BTA_GATTS_Close’ cannot disconnect
the link. The sequence has to be changed like GATT client.
And the above mentioned fix removed ‘found’ checking routine in
‘gatt_update_app_hold_link_status’.
It makes two app hold links with same gatt_if when HOGP is connected and
background connection is added. But HOGP disconnect removes only one held
link. So HOGP is never disconnected.
The ‘found’ checking routine has to be rolled back.
Test: manual
Change-Id: Ibea825b5cc844195f0cf4a30cbcca831880c9088
Jakub Pawlowski [Fri, 20 Jan 2017 13:33:38 +0000 (05:33 -0800)]
Fix advertising timeout behaviour.
When advertising is enabled with timeout, enable callback was not
called. Also we were not scheduling the disable operation after the
timeout passes. This patch fixes that. It also make sure that the
timeout callback is called on proper thread.
Bug:
34440704
Test: sl4a ConcurrentBleAdvertising:test_timeout
Change-Id: I233c2692c690f55ef6243325640e48b37818c9d5
Treehugger Robot [Fri, 20 Jan 2017 23:36:39 +0000 (23:36 +0000)]
Merge "Set alarm's queue to NULL on alarm expired"
Treehugger Robot [Fri, 20 Jan 2017 23:25:44 +0000 (23:25 +0000)]
Merge "Synchronize hl data operations"
Nagarjuna Kristam [Tue, 13 Dec 2016 09:00:45 +0000 (14:30 +0530)]
Update error check for LE read remote feature event
When a BLE remote read remote feature complete event is received
initial commands flow is proceeding if error code is not connection
failed to establish (0x3E). Instead, the flow should fail on any
error.
Test: Re-connection stress tests with LE device
Change-Id: I4ab80b6601f5f852fcf8da2911807438584fd3f4
Kamal Negi [Mon, 19 Sep 2016 08:46:56 +0000 (14:16 +0530)]
Set alarm's queue to NULL on alarm expired
Use Case: Repeated BT ON/OFF
Failure: ANR due to race condition between random advertisement
address generation completion(adv_raddr_timer) and BT shutdown.
Steps: SNS Stress testing.
Root Cause: Race condition happens between random advertisement
address generation completion(adv_raddr_timer) and BT shutdown.
Fix: For non-periodic alarms, set alarm's queue to NULL once alarm
expired.
Test: mm -j8
Change-Id: Idf8e2bebdc2ca7621aef06dd5f2075ef2c5fa08c
Srinu Jella [Wed, 30 Nov 2016 09:55:12 +0000 (15:25 +0530)]
Synchronize hl data operations
Use Case: BT crash seen while transferring data
using HDP APP to remote health device.
Steps:
1. Pair with HDP device
2. Run HDP APP and transfer data to Remote HDP device.
Failure: BT automatically resets and recovers.
Root Cause: Synchronize BITF HL free buffer as simultaneously
free buffer from BTIF and BTU thread lead to sigabort.
Fix: Validate Tx packet before memcpy as it can be free
from different thread.
Test: mm -j8
Change-Id: I566f62ce02c8e95c9f4b8d7155132e4434657f66
Satish Kodishala [Tue, 20 Dec 2016 05:31:07 +0000 (11:01 +0530)]
Bluetooth: Handle get RSSI timeout gracefully
Usecase:
1. Turn ON BT
2. Pair and connect with Headset
3. Play Music over A2DP
4. Make GetRssi timeout
5. Bt app crashes
Failure:
BT app crashes.
Rootcause:
Calling callback with NULL and in callback handling NULL check with assert.
Fix:
Call the callback with error instead of NULL.
Change-Id: I20a9e504a513697945cd76d218ec12a0ef1e3330
Sanket Agarwal [Fri, 20 Jan 2017 19:06:41 +0000 (11:06 -0800)]
BTA HF CLIENT: Unset initial SCO value
Initialize the block with invalid SCO state so that while allocating the
if condition does not ignore the block. This was causing the stack to
not initiate a SCO connection to the remote (AG role)
Bug: b/
33555377
Test: Check for SCO initialied on audio call
Change-Id: I3f5619c69288483bfa45c2a1adcf22008e353841
Jack He [Tue, 17 Jan 2017 23:41:30 +0000 (15:41 -0800)]
Fix A2DP Metrics Logging Capacity
* Set the maximum number of wake events logged to 1000
* Stop logging wake log name as it takes too much memory
* Add counters for each of the repeated values in BluetoothLog so that
the true number of events can be determined while oldest event get
dropped
* Log Bluetooth session disconnect reasons using enum instead of string
in order to save memory usage
* Apply other branch changes to bluetooth.proto on system/bt
Bug:
33694310
Test: Code compilation and unit tests
Change-Id: I2cc6f9304725938b63b211d615eb1941eac60edf
(cherry picked from commit
7ab4b59672013eddcb706e288962ab7309a75628)
Myles Watson [Thu, 19 Jan 2017 21:13:55 +0000 (13:13 -0800)]
test_vendor: Remove extra byte in LE Features
Bug:
34357009
Test: push test-vendor lib as libbt-vendor.so, Bluetooth starts
Change-Id: Id3a5f85f6b3da5a723dba04527db8b66de0e84a8
Jakub Pawlowski [Thu, 19 Jan 2017 06:58:53 +0000 (22:58 -0800)]
Fix bad UUID comparison when adding GATT service
This patch fixes bad comparison in add_service_impl. Instead of checking
wether service is one of two excluded services, it was excluding all
services.
Test: sl4a GatReadTest
Bug:
34280184
Change-Id: I3195e94b6fafe4d2e3c61fc7bfd7398c2855b78e
Treehugger Robot [Thu, 19 Jan 2017 14:26:33 +0000 (14:26 +0000)]
Merge "test_vendor: Make tryStartThread return 0 on success"
Jorge E. Moreira [Thu, 19 Jan 2017 00:34:42 +0000 (16:34 -0800)]
test_vendor: Make tryStartThread return 0 on success
Test: Start the test vendor library with no error message
Bug:
34357009
Change-Id: Id2821199ad675e2b95a9f333afa803dcced811a3
Jack He [Thu, 19 Jan 2017 01:14:08 +0000 (17:14 -0800)]
Fix parser for BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR
* Current parser does not support multi-directory lists, which may cause
a build failure if BoardConfig.mk defines one.
* This CL splits the list of directories using whitespace and adds them
individually to the include list
Bug:
34396100
Test: Code compilation, no user visible effect
Change-Id: I59e901d76d1bc20f50b54941a3007c5521ded214
Jack He [Thu, 8 Dec 2016 02:25:17 +0000 (18:25 -0800)]
Convert build system to soong using Android.bp
* Convert top level Android.mk into build templates in build/Android.bp
and build/fluoride.go
* Initial conversion is done by "androidmk Android.mk > Android.bp"
* Android.bp does not allow source inclusion from external directories
and therefore they have to be made in to cc_library_static in their
respective sub-directories and linked using whole_static_libs in the
modules where they are used
* As Android.bp does not allow multiple modules of the same name,
same-name mudules for different target are merged into one definition
with target specific setup
* Generated proto header path has to be changed in osi/src/metrics.cc as
Android.bp only generate header path relative to the Android.bp file
instead of top-level directory such as system/bt
* Android.bp does not support resource copying yet and hence conf files
are left un-touched.
* Android.bp does support conditional module declaration and therefore
test-vendor libs are left untouched except for unit tests
* The goal of this CL is to direct (almost) translate Android.mk to
Android.bp first with Android.bp specific optimizations coming later
Bug:
32958753
Test: Code compilation, manual testing by test team
Change-Id: I5249e1f2135c4121205619b1d735ce448feb7499
Treehugger Robot [Wed, 18 Jan 2017 20:34:59 +0000 (20:34 +0000)]
Merge "HF CLIENT BTA: Reduce logging for non-allocated blocks"
Sanket Agarwal [Wed, 18 Jan 2017 01:37:10 +0000 (17:37 -0800)]
HF CLIENT BTA: Reduce logging for non-allocated blocks
Bug: b/
33552136
Test: adb shell dumpsys bluetooth_manager
Change-Id: I3cb6c28bffe6b335cf82cac63dc78ce4957d78f4
Hemant Gupta [Fri, 9 Dec 2016 17:40:10 +0000 (23:10 +0530)]
HID: Prevent crash by Cancelling SDP during cleanup
Usecase:
1) User tried to connect to HID Device.
2) SDP is internally performed by DUT. SDP is at stage,
where L2CAP connection, configuration is done, and data
fetch is ongoing.
3) BT was turned off from UI.
Observation:
BT crashed while accessing memory that was freed already because BT turn off,
caused ACL disconnection, leading to L2CAP disconnect indication in stack,
leading to sdp disconnect indication.
backtrace:
#00 pc
000f98d4 /system/lib/hw/bluetooth.default.so (SDP_FindServiceUUIDInDb+51)
#01 pc
000b5dbd /system/lib/hw/bluetooth.default.so (hidh_search_callback+0x40)
#02 pc
000f770b /system/lib/hw/bluetooth.default.so (sdp_disconnect_ind+0x5e)
#03 pc
00107a5f /system/lib/hw/bluetooth.default.so (l2c_csm_execute+3446)
#04 pc
001080e7 /system/lib/hw/bluetooth.default.so (l2c_link_hci_disc_comp+122)
#05 pc
000fda81 /system/lib/hw/bluetooth.default.so (btu_hcif_process_event+588)
#06 pc
000fec81 /system/lib/hw/bluetooth.default.so (btu_hci_msg_ready+96)
#07 pc
00118191 /system/lib/hw/bluetooth.default.so
#08 pc
0011917f /system/lib/hw/bluetooth.default.so
#09 pc
00041993 /system/lib/libc.so (_ZL15__pthread_startPv+30)
#10 pc
000192b5 /system/lib/libc.so (__start_thread+6)
Register Dump
pid: 15740, tid: 15761, name: bluedroid wake/ >>> com.android.bluetooth <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x20000
r0
815a5cac r1
a1a2f370 r2
00000000 r3
85d4e541
r4
00020000 r5
815a5cac r6
a1a2f370 r7
b6d3ae40
r8
00000000 r9
b6d3ae40 sl
00000002 fp
00000013
ip
a228c050 sp
a1a2f360 lr
a20eddc1 pc
a21318d4 cpsr
200e0030
Rootcause
The above scenario could lead to crash we see as below, as bta_hh_cb.p_disc_db would be freed
during HID Host cleanup, and would be accessed via callback received for parsing SDP results on
SDP completion.
Fix:
While cleaning up HID Host, Cancel SDP search before freeing and resetting bta_hh_cb.p_disc_db.
This will internally send L2CAP disconnect request for SDP, and would lead to sdp_disconnect_cfm
call when L2CAP is disconnected, and would lead to call of hidh_search_callback with result code
as SDP_CANCEL.
Change-Id: I63563cb23dd69946f87a70cafa203c44edc9b753
Pavlin Radoslavov [Sat, 14 Jan 2017 01:42:01 +0000 (17:42 -0800)]
Add conditional unit testing for codecs that might not be on the device
Codecs like aptX and aptX-HD are supported on the device if the
corresponding shared library is installed.
Fix the unit tests to conditionally test for aptX/aptX-HD.
Also, update function descriptions in files a2dp_sbc.h and
a2dp_vendor_ldac.h .
Test: Running unit tests on a device that doesn't have aptX/aptX-HD
Change-Id: I44dc275ca6e0cb5438ee6ed0b6213213d56592f4
liuchao [Wed, 4 Jan 2017 05:49:36 +0000 (13:49 +0800)]
Fix a NULL-pointer access before check in connect_int
This fixes a potential NULL-pointer access in case cb is returned NULL
Test: mm -j 8
Change-Id: Iaf7aa0ba736b5cb161811726b4aaea7f1ab7e5b3
Treehugger Robot [Tue, 17 Jan 2017 19:42:53 +0000 (19:42 +0000)]
Merge "Reduced the log verbosity level for aptX/aptX-HD data packets"
Jakub Pawlowski [Mon, 16 Jan 2017 12:53:14 +0000 (04:53 -0800)]
Don't allow GATT and GAP service override
Those services are automatically added by the stack, and overriding them
results in invalid GATT database being created.
Bug:
34280184
Test: Manual test
Change-Id: Ie6a09e9d606e40066bef6f6a2c934eacd17bf53b
Jakub Pawlowski [Mon, 16 Jan 2017 12:05:57 +0000 (04:05 -0800)]
Fix NPE when discovering invalid GATT datatbase
When doing a discovery of invalid GATT database, where two services are
added with same start handle, characteristics are added to the first
one, where descriptors are added to the later. This cause NPE when
adding descriptor.
Bug:
34280184
Test: manual test
Change-Id: I27619098df33a641cb089b82cf4d4ffd3c6e6aea
Pavlin Radoslavov [Sat, 14 Jan 2017 07:24:25 +0000 (23:24 -0800)]
Reduced the log verbosity level for aptX/aptX-HD data packets
Also, fixed a typo in a log message.
Test: A2DP streaming to headset, and capturing "adb logcat" output
Change-Id: I525d78e3ebde334857261f0cbd256a7f6a946e96
Reddy Praveen [Fri, 13 Jan 2017 11:27:37 +0000 (16:57 +0530)]
Fix for Extended Scan parameter length
With BT 5.0 extended advertisement scan parameter length
is configured with correct value.
Test: BT scan from settings menu
Change-Id: I749099282a9f2cf190d4f9576649aefe88564809
Signed-off-by: Reddy Praveen <praveen.reddy@intel.com>
Pavlin Radoslavov [Wed, 11 Jan 2017 18:35:15 +0000 (10:35 -0800)]
Removed the feeding_init call from tA2DP_ENCODER_INTERFACE
The feeding_init call is not used anymore - it has been superseded
by the newer A2dpCodecs.setCodecAudioConfig() mechanism.
Also, moved aptx_init_framing_params() and aptx_hd_init_framing_params()
calls to the corresponding encoder_update functions.
Test: A2DP streaming to Bluetooth headsets
Change-Id: I52f42b4701d04fe2ddb8f115bb9cd57fe38e2b38
Pavlin Radoslavov [Tue, 10 Jan 2017 21:18:14 +0000 (13:18 -0800)]
Integrated A2DP LDAC support with the LDAC encoder library
* Add compile-time dependency on the libldacBT_enc module
in external/libldac
* Use the <ldacBT.h> header and remove local typedefs and defines
Also, fix an initialization issue of the LDAC handler
inside file a2dp_vendor_ldac_encoder.cc
Bug:
30958229
Test: A2DP streaming to LDAC headset
Change-Id: I3757230c9901509daab36f2b2018faa05490171d
Treehugger Robot [Tue, 10 Jan 2017 11:20:24 +0000 (11:20 +0000)]
Merge "Add "connecting" and "disconnecting" states to HID Device."
Jakub Pawlowski [Thu, 5 Jan 2017 09:34:53 +0000 (01:34 -0800)]
Batch scan simplification
Bug:
30622771
Test: sl4a UniqueFilteringTest BleOpportunisticScanTest
Change-Id: I0e6ca8ed3d7d98057277a5187e684246f410d978
Jakub Pawlowski [Wed, 4 Jan 2017 15:58:37 +0000 (07:58 -0800)]
LE filters without custom data types
Bug:
30622771
Test: sl4a FilteringTest
Change-Id: Ib4edfa40038ca59c37ae1dfc763f0cac563177d7
Jakub Pawlowski [Wed, 4 Jan 2017 14:50:46 +0000 (06:50 -0800)]
Get rid of BTA_DmBleCfgFilterCondition
Bug:
30622771
Test: sl4a FilteringTest
Change-Id: I93b4f1275b9437a20cf1429d184dbefa79451986
Jakub Pawlowski [Wed, 4 Jan 2017 09:05:24 +0000 (01:05 -0800)]
Simplify LE scan filter memory management
Bug:
30622771
Test: sl4a FilteringTest
Change-Id: I58f3c335e84b4d7ee578c321109125084826efa0
Jakub Pawlowski [Tue, 3 Jan 2017 14:36:19 +0000 (06:36 -0800)]
Remove reduntant re-schedule
Calls to BleScannerInterface are already made using jni thread.
Also all this calls do is scheduling to BTA thread, so remove
unnecessary call to do_in_jni_thread
Bug:
30622771
Test: sl4a FilteringTest
Change-Id: I2c799dde720f9bc694fecacd6d3959b96c1b9ba8
Jakub Pawlowski [Fri, 30 Dec 2016 14:38:29 +0000 (06:38 -0800)]
Use callbacks for LE filter functions (BTM layer)
This patch use callbacks, instead of custom event queue when scheduling
LE filter VSC.
Bug:
30622771
Test: sl4a FilteringTest
Change-Id: I64ac4392883c647d1e500c257c31a8d3e740a0a8
Jakub Pawlowski [Mon, 9 Jan 2017 15:05:00 +0000 (07:05 -0800)]
Fix bad connectable advertising constant
Test: start connectable advertising using bluetoothtbd
Change-Id: Ie7e42570748d43a27bc7691378aee85ab1565a05
Jakub Pawlowski [Mon, 9 Jan 2017 14:53:36 +0000 (06:53 -0800)]
Zero is a valid advertiser id
Test: start advertising using bluetooth-cli
Change-Id: Iead31c5e73a70850c6a209b6bbbeaeb792202608
Jack He [Wed, 4 Jan 2017 19:46:00 +0000 (11:46 -0800)]
Remove redundant dependency on libpower
* libpower dependency was introduced in change
I1e8d49b087eff6301373e1e90e8d868f15847c34
* It is never used in any part of the system/bt stack and therefore
should be removed from the shared library dependency list
Bug:
34079981
Test: code compilation, no user visible effect
Change-Id: Ic8e3ad0c369839fb9ced446695c72fdf0ffad1ca
Ivan Podogov [Thu, 5 Jan 2017 12:20:26 +0000 (12:20 +0000)]
Add "connecting" and "disconnecting" states to HID Device.
Currently the upper java layers have full support for all four
connection states, yet the lower stack only reports about
"connected" and "disconnected".
This patch adds sending "connecting" and "disconnecting" messages
when bta_hd_connect_act and bta_hd_disconnect_act finish
successfully.
Test: build, run, logcat
Change-Id: I00f9f414daa3854198ff9eee19e9c98a2e18f603
Jakub Pawlowski [Mon, 9 Jan 2017 14:47:39 +0000 (06:47 -0800)]
Fix Heart Rate Service example
Name must be appended at end, not beginning.
Test: run bt-example-hr-server --advertise
Change-Id: I70909e0bfc94521c396908d0dcb78cf4439a7e63
Jakub Pawlowski [Mon, 9 Jan 2017 08:09:15 +0000 (00:09 -0800)]
Remove unnecessary cutils dependency
Test: build with ninja and mma
Change-Id: I31688da8a554ed71b580c30a0e4c000ea4903d70
Jakub Pawlowski [Mon, 9 Jan 2017 08:02:58 +0000 (00:02 -0800)]
Update Linux BUILD.gn files
Test: build with ninja
Change-Id: I4993dae7f76479da9bfad70aae88cc51fd7127d5
Pavlin Radoslavov [Fri, 6 Jan 2017 23:07:43 +0000 (15:07 -0800)]
Renamed the aptX and aptX-HD shared libraries
* The names of the expected aptX and aptX-HD shared libraries are
updated to reflect better their purpose:
- aptX: libaptX.so -> libaptX_encoder.so
- aptX-HD: libaptXHD.so -> libaptXHD_encoder.so
Also:
* Add a missing upcall with the codec info the first time the codec
is selected internally
* Minor cleanup
Bug:
30958229
Test: A2DP streaming to aptX/aptX-HD headsets
Change-Id: Ib2bfc83823190fb7a057353eb47cd71c5b4d5a3a
Treehugger Robot [Thu, 5 Jan 2017 07:43:49 +0000 (07:43 +0000)]
Merge "Integration of the LDAC codec for A2DP source"
Treehugger Robot [Thu, 5 Jan 2017 04:24:33 +0000 (04:24 +0000)]
Merge "Fix A2DP metrics session duration"
Pavlin Radoslavov [Tue, 1 Nov 2016 12:45:40 +0000 (05:45 -0700)]
Integration of the LDAC codec for A2DP source
The codec can be used if the encoding shared library is installed
on the device:
libldacBT_enc.so
Also, increased the maximum number of SEPs AVDT_NUM_SEPS from 3
to 6 to accomodate Sink devices that support more than 3 codecs.
Test: A2DP streaming to LDAC headsets
Bug:
30958229
Change-Id: I114c3e6be2ebe1ac8aece62a3146637d37cd938e
Treehugger Robot [Thu, 5 Jan 2017 02:39:27 +0000 (02:39 +0000)]
Merge "Add LeakyBondedQueue to libosi"
Treehugger Robot [Thu, 5 Jan 2017 01:56:34 +0000 (01:56 +0000)]
Merge "Integration of the aptX and aptX-HD codecs for A2DP source"
Jack He [Fri, 9 Dec 2016 03:29:00 +0000 (19:29 -0800)]
Fix A2DP metrics session duration
* Fixed A2DP duration counting. It is now counting from music play start
to music play end.
* Start logging a2dp connection as Bluetooth sessions. Currently, only
A2DP connections are logged. Thus the bluetooth session length will be
the total connection length and the length within A2DP session message
will be the audio connection length.
* Add a audio_duration_millis field in A2DPSession to record audio duration
* Add bonded memory constraint for metrics entries
* Use a builder mechanism to only build metrics upon dumping
* Refactor metrics module into BluetoothMetricsLogger class
* Created unit test for BluetoothMetricsLogger
Bug:
33694310
Test: Code compilation, Unit test, BtFunhausMetricsTest
Change-Id: Iea2a997c4ea074687a5d50860e9229f0e1b82659
Jack He [Tue, 20 Dec 2016 19:57:17 +0000 (11:57 -0800)]
Add LeakyBondedQueue to libosi
* LeakyBondedQueue is a fixed size queue that leaks oldest item when
reaching its capacity. This is useful in creating memory bonded data
structure where freshness is more important than full coverage.
* The queue is protected by a simple mutex and is thread-safe, although
improvements could be made to lock enqueue and dequeue separately, it
is not implemented at this moment due to lack of demand
* The queue uses unique_ptr to automatically free its content when it is
destructed
* Add several tests to verify its API and memory management
* This data structure will be firstly used in the metrics module
Bug:
33781460
Test: Code compilation, unit tests
Change-Id: I51cb73666ac58e4792d9cba0d6f16dad30a0ff39
Pavlin Radoslavov [Tue, 25 Oct 2016 00:48:24 +0000 (17:48 -0700)]
Integration of the aptX and aptX-HD codecs for A2DP source
Each of the codecs can be used if the corresponding encoding
shared library is installed on the device:
- aptX: libaptX.so
- aptX-HD: libaptXHD.so
Test: A2DP streaming to aptX and aptX-HD headsets
Bug:
30958229
Change-Id: I1ca36da653721576f5a5b6bdac186b9ea2790c85
Ruchi Kandoi [Tue, 3 Jan 2017 22:05:38 +0000 (14:05 -0800)]
scripts: modify change_types.sh to skip matching "<data type>_"
Script erroronously modifies UINT8_TO_BE_STREAM() to
uint8_t_TO_BE_STREAM(). Modidy the script to prevent that.
Test: Manual; Run the script on system/nfc
Change-Id: I9e130b8eb79e400282233fad7da206b4bb1301af
Signed-off-by: Ruchi Kandoi <kandoiruchi@google.com>
liuchao [Wed, 4 Jan 2017 02:46:06 +0000 (10:46 +0800)]
Fix an inappropriate sscanf return value judgment
This fixes an inappropriate sscanf return value judgment that
res check here is not needed while res2 is the one that need to be checked
Test: mm -j 8
Change-Id: I3e332286c9434d5b9d01421f5f421039f84ad6c7