OSDN Git Service

android-x86/system-bt.git
7 years agoFix A2DP Metrics Logging Capacity
Jack He [Fri, 20 Jan 2017 03:53:20 +0000 (03:53 +0000)]
Fix A2DP Metrics Logging Capacity
am: a3f831cc74

Change-Id: I6a790aae682f6b8282de219a286f82bdca4503b5

7 years agoFix A2DP Metrics Logging Capacity
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)

7 years agotest_vendor: Remove extra byte in LE Features
Myles Watson [Thu, 19 Jan 2017 23:23:09 +0000 (23:23 +0000)]
test_vendor: Remove extra byte in LE Features
am: a72fc53164

Change-Id: If703d5f52b0ee55338f0f3c24c5c6cad113fe108

7 years agotest_vendor: Remove extra byte in LE Features
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

7 years agoFix bad UUID comparison when adding GATT service
Jakub Pawlowski [Thu, 19 Jan 2017 14:51:18 +0000 (14:51 +0000)]
Fix bad UUID comparison when adding GATT service
am: 33f424d493

Change-Id: I8552b9aa41c0852672a5ecf63ea39b8a289d27df

7 years agoFix bad UUID comparison when adding GATT service
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

7 years agoMerge "test_vendor: Make tryStartThread return 0 on success"
Jorge E. Moreira [Thu, 19 Jan 2017 14:30:13 +0000 (14:30 +0000)]
Merge "test_vendor: Make tryStartThread return 0 on success"
am: 91b994faa6

Change-Id: I54671e84b39953a5e38e7b41a5275800de9c06b4

7 years agoMerge "test_vendor: Make tryStartThread return 0 on success"
Treehugger Robot [Thu, 19 Jan 2017 14:26:33 +0000 (14:26 +0000)]
Merge "test_vendor: Make tryStartThread return 0 on success"

7 years agotest_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

7 years agoFix parser for BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR
Jack He [Thu, 19 Jan 2017 03:37:37 +0000 (03:37 +0000)]
Fix parser for BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR
am: a643b5b0df

Change-Id: I3c4d7ccfcfbcb0faa151776ecd325891d14f38f5

7 years agoFix parser for BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR
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

7 years agoConvert build system to soong using Android.bp
Jack He [Wed, 18 Jan 2017 22:19:17 +0000 (22:19 +0000)]
Convert build system to soong using Android.bp
am: e2eeff4f7f

Change-Id: I1caf32ca845b33d414582f972e89229949c439cf

7 years agoConvert build system to soong using Android.bp
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

7 years agoMerge "HF CLIENT BTA: Reduce logging for non-allocated blocks"
Sanket Agarwal [Wed, 18 Jan 2017 20:41:06 +0000 (20:41 +0000)]
Merge "HF CLIENT BTA: Reduce logging for non-allocated blocks"
am: 7b70d1e420

Change-Id: I4a196410b5517c2a4231deea4b12c79c6b1e3b3f

7 years agoMerge "HF CLIENT BTA: Reduce logging for non-allocated blocks"
Treehugger Robot [Wed, 18 Jan 2017 20:34:59 +0000 (20:34 +0000)]
Merge "HF CLIENT BTA: Reduce logging for non-allocated blocks"

7 years agoHID: Prevent crash by Cancelling SDP during cleanup
Hemant Gupta [Wed, 18 Jan 2017 20:16:04 +0000 (20:16 +0000)]
HID: Prevent crash by Cancelling SDP during cleanup
am: 8ed9a77792

Change-Id: I6020ab9443f3e674511ef88116fcaa0ea9a727ba

7 years agoHF 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

7 years agoHID: Prevent crash by Cancelling SDP during cleanup
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

7 years agoAdd conditional unit testing for codecs that might not be on the device
Pavlin Radoslavov [Wed, 18 Jan 2017 02:10:34 +0000 (02:10 +0000)]
Add conditional unit testing for codecs that might not be on the device
am: 4decac33f6

Change-Id: I9ac89df8897be966206020361ec3b4681aeb9681

7 years agoAdd conditional unit testing for codecs that might not be on the device
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

7 years agoFix a NULL-pointer access before check in connect_int
liuchao [Tue, 17 Jan 2017 20:11:25 +0000 (20:11 +0000)]
Fix a NULL-pointer access before check in connect_int
am: 9b2e40df05

Change-Id: I3217f206ef56d73dbac01b19eeb123b6cfb68870

7 years agoFix a NULL-pointer access before check in connect_int
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

7 years agoMerge "Reduced the log verbosity level for aptX/aptX-HD data packets"
Pavlin Radoslavov [Tue, 17 Jan 2017 19:50:19 +0000 (19:50 +0000)]
Merge "Reduced the log verbosity level for aptX/aptX-HD data packets"
am: 5256f1feea

Change-Id: I762b7e65001740fec55515f7121f5217c4dbb455

7 years agoDon't allow GATT and GAP service override
Jakub Pawlowski [Tue, 17 Jan 2017 19:50:04 +0000 (19:50 +0000)]
Don't allow GATT and GAP service override
am: 8a06ff5ce2

Change-Id: I9eaff8a251269b3f073845c80284fefde35822b4

7 years agoMerge "Reduced the log verbosity level for aptX/aptX-HD data packets"
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"

7 years agoFix NPE when discovering invalid GATT datatbase
Jakub Pawlowski [Tue, 17 Jan 2017 18:46:10 +0000 (18:46 +0000)]
Fix NPE when discovering invalid GATT datatbase
am: 8957fdca4f

Change-Id: I1e196651928314494a696e5a3ef126272dd3208a

7 years agoDon't allow GATT and GAP service override
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

7 years agoFix NPE when discovering invalid GATT datatbase
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

7 years agoReduced the log verbosity level for aptX/aptX-HD data packets
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

7 years agoFix for Extended Scan parameter length
Reddy Praveen [Tue, 17 Jan 2017 09:54:28 +0000 (09:54 +0000)]
Fix for Extended Scan parameter length
am: 0c86aad3f5

Change-Id: I561461bd6b119912ef53dfbca923f2aac9b3fad7

7 years agoFix for Extended Scan parameter length
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>
7 years agoRemoved the feeding_init call from tA2DP_ENCODER_INTERFACE
Pavlin Radoslavov [Fri, 13 Jan 2017 18:44:20 +0000 (18:44 +0000)]
Removed the feeding_init call from tA2DP_ENCODER_INTERFACE
am: f8e2670d12

Change-Id: I716d1c077b089345c08ca76ccf2823ac1ff6d8e3

7 years agoRemoved the feeding_init call from tA2DP_ENCODER_INTERFACE
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

7 years agoIntegrated A2DP LDAC support with the LDAC encoder library
Pavlin Radoslavov [Tue, 10 Jan 2017 23:03:39 +0000 (23:03 +0000)]
Integrated A2DP LDAC support with the LDAC encoder library
am: d556b752bd

Change-Id: Ib0d6db87f7f30ac7544bf2e5764b7dda0d1a24f9

7 years agoIntegrated A2DP LDAC support with the LDAC encoder library
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

7 years agoMerge "Add "connecting" and "disconnecting" states to HID Device."
Ivan Podogov [Tue, 10 Jan 2017 11:24:27 +0000 (11:24 +0000)]
Merge "Add "connecting" and "disconnecting" states to HID Device."
am: 35ae4adf21

Change-Id: I5eef753ca30b57848ebeaeb3b73aa134cb6b6970

7 years agoMerge "Add "connecting" and "disconnecting" states to HID Device."
Treehugger Robot [Tue, 10 Jan 2017 11:20:24 +0000 (11:20 +0000)]
Merge "Add "connecting" and "disconnecting" states to HID Device."

7 years agoBatch scan simplification
Jakub Pawlowski [Mon, 9 Jan 2017 20:40:07 +0000 (20:40 +0000)]
Batch scan simplification
am: eab3651db4

Change-Id: Iab508f656ceaaa726edff3e04945146a3d4762d4

7 years agoLE filters without custom data types
Jakub Pawlowski [Mon, 9 Jan 2017 20:40:04 +0000 (20:40 +0000)]
LE filters without custom data types
am: 2ffd8da9af

Change-Id: I787c473f2c5839674fbf0ab3c646f210d15ab717

7 years agoGet rid of BTA_DmBleCfgFilterCondition
Jakub Pawlowski [Mon, 9 Jan 2017 20:40:00 +0000 (20:40 +0000)]
Get rid of BTA_DmBleCfgFilterCondition
am: ad6afdf96c

Change-Id: I9d5464bc0199759ef83cac4a2b7b6a94635053a4

7 years agoSimplify LE scan filter memory management
Jakub Pawlowski [Mon, 9 Jan 2017 20:39:56 +0000 (20:39 +0000)]
Simplify LE scan filter memory management
am: ae2aabef09

Change-Id: I654160519dd7b03fa11d58a6ce6e5dbc24dd5d88

7 years agoRemove reduntant re-schedule
Jakub Pawlowski [Mon, 9 Jan 2017 20:39:52 +0000 (20:39 +0000)]
Remove reduntant re-schedule
am: 2c1522e2b8

Change-Id: Id7a3ed5b5fe1460e14450616bad422b39f8cbc9d

7 years agoUse callbacks for LE filter functions (BTM layer)
Jakub Pawlowski [Mon, 9 Jan 2017 20:39:38 +0000 (20:39 +0000)]
Use callbacks for LE filter functions (BTM layer)
am: 1febda9706

Change-Id: I218fb9df79b2b4df4d8a1774273a951c63042772

7 years agoBatch scan simplification
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

7 years agoLE filters without custom data types
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

7 years agoGet rid of BTA_DmBleCfgFilterCondition
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

7 years agoSimplify LE scan filter memory management
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

7 years agoRemove reduntant re-schedule
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

7 years agoUse callbacks for LE filter functions (BTM layer)
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

7 years agoFix bad connectable advertising constant
Jakub Pawlowski [Mon, 9 Jan 2017 18:55:46 +0000 (18:55 +0000)]
Fix bad connectable advertising constant
am: 35675d0e73

Change-Id: I02605b0df8e6d46db0ca2f81e6c5e172337614a7

7 years agoZero is a valid advertiser id
Jakub Pawlowski [Mon, 9 Jan 2017 18:55:32 +0000 (18:55 +0000)]
Zero is a valid advertiser id
am: daa8a99913

Change-Id: I05b1d504381932959877a0c856b1bb7ef82292a1

7 years agoRemove redundant dependency on libpower
Jack He [Mon, 9 Jan 2017 18:55:12 +0000 (18:55 +0000)]
Remove redundant dependency on libpower
am: 4302060551

Change-Id: Ie78d7e79d9f1b9043eceae84865b4eb5274fd4db

7 years agoFix bad connectable advertising constant
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

7 years agoZero is a valid advertiser id
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

7 years agoRemove redundant dependency on libpower
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

7 years agoFix Heart Rate Service example
Jakub Pawlowski [Mon, 9 Jan 2017 18:16:14 +0000 (18:16 +0000)]
Fix Heart Rate Service example
am: e3051fec06

Change-Id: I8ff34d31fe85899a0657ce437f4bf614a24528c8

7 years agoAdd "connecting" and "disconnecting" states to HID Device.
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

7 years agoFix Heart Rate Service example
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

7 years agoRemove unnecessary cutils dependency
Jakub Pawlowski [Mon, 9 Jan 2017 09:40:50 +0000 (09:40 +0000)]
Remove unnecessary cutils dependency
am: 19e3d703b2

Change-Id: Id0b5878395183458449cb0c89b515659b5e86133

7 years agoUpdate Linux BUILD.gn files
Jakub Pawlowski [Mon, 9 Jan 2017 08:14:45 +0000 (08:14 +0000)]
Update Linux BUILD.gn files
am: a9743d8101

Change-Id: I846fa35f6f6ec7ccdc242d77b2f7e5ce41e46f9b

7 years agoRemove unnecessary cutils dependency
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

7 years agoUpdate Linux BUILD.gn files
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

7 years agoRenamed the aptX and aptX-HD shared libraries
Pavlin Radoslavov [Sat, 7 Jan 2017 03:10:11 +0000 (03:10 +0000)]
Renamed the aptX and aptX-HD shared libraries
am: d43a901c57

Change-Id: I0bccfb379fb0719e9500c44d44378cfab23037ea

7 years agoRenamed the aptX and aptX-HD shared libraries
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

7 years agoMerge "Integration of the LDAC codec for A2DP source"
Pavlin Radoslavov [Thu, 5 Jan 2017 07:49:56 +0000 (07:49 +0000)]
Merge "Integration of the LDAC codec for A2DP source"
am: 690c0478b6

Change-Id: I3ef8f12d26b0832bc8c6da03275ad1416de86e7c

7 years agoMerge "Integration of the LDAC codec for A2DP source"
Treehugger Robot [Thu, 5 Jan 2017 07:43:49 +0000 (07:43 +0000)]
Merge "Integration of the LDAC codec for A2DP source"

7 years agoMerge "Fix A2DP metrics session duration"
Jack He [Thu, 5 Jan 2017 04:28:30 +0000 (04:28 +0000)]
Merge "Fix A2DP metrics session duration"
am: 644f61e760

Change-Id: I675bf805857d7e37b522d29912e633154071bf8d

7 years agoMerge "Fix A2DP metrics session duration"
Treehugger Robot [Thu, 5 Jan 2017 04:24:33 +0000 (04:24 +0000)]
Merge "Fix A2DP metrics session duration"

7 years agoIntegration of the LDAC codec for A2DP source
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

7 years agoMerge "Add LeakyBondedQueue to libosi"
Jack He [Thu, 5 Jan 2017 02:42:48 +0000 (02:42 +0000)]
Merge "Add LeakyBondedQueue to libosi"
am: 797be14aba

Change-Id: Ib260e88f8dc8be1f86d200f8ab4f0690c4b4aad9

7 years agoMerge "Add LeakyBondedQueue to libosi"
Treehugger Robot [Thu, 5 Jan 2017 02:39:27 +0000 (02:39 +0000)]
Merge "Add LeakyBondedQueue to libosi"

7 years agoMerge "Integration of the aptX and aptX-HD codecs for A2DP source"
Pavlin Radoslavov [Thu, 5 Jan 2017 02:02:08 +0000 (02:02 +0000)]
Merge "Integration of the aptX and aptX-HD codecs for A2DP source"
am: bcb80655e3

Change-Id: Ifd232e09aebc80ffb09fc195429e18787851e6aa

7 years agoMerge "Integration of the aptX and aptX-HD codecs for A2DP source"
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"

7 years agoscripts: modify change_types.sh to skip matching "<data type>_"
Ruchi Kandoi [Thu, 5 Jan 2017 01:31:43 +0000 (01:31 +0000)]
scripts: modify change_types.sh to skip matching "<data type>_"
am: 69b8f87943

Change-Id: I24fc6ef1b6484bfb9a3a6e671b9b5d3b76882d9c

7 years agoFix A2DP metrics session duration
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

7 years agoAdd LeakyBondedQueue to libosi
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

7 years agoIntegration of the aptX and aptX-HD codecs for A2DP source
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

7 years agoscripts: modify change_types.sh to skip matching "<data type>_"
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>
7 years agoFix an inappropriate sscanf return value judgment
liuchao [Wed, 4 Jan 2017 20:41:22 +0000 (20:41 +0000)]
Fix an inappropriate sscanf return value judgment
am: 0e42408b91

Change-Id: Ic3d9b940b9470590da8b7f403066757d0e6e2f91

7 years agoFix an inappropriate sscanf return value judgment
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

7 years agoMake HID Device service independent from HID Host.
Ivan Podogov [Wed, 4 Jan 2017 15:44:31 +0000 (15:44 +0000)]
Make HID Device service independent from HID Host.
am: 2a399b3745

Change-Id: I21033a763e8103d35ff44a0a6d503935e504b12f

7 years agoMake HID Device service independent from HID Host.
Ivan Podogov [Tue, 3 Jan 2017 12:29:45 +0000 (12:29 +0000)]
Make HID Device service independent from HID Host.

By default, enabling the HID Device service is only possible
during disabling the HID Host service. If, on the other hand,
the HID Host service was never initialized, then a request to
enable the HID Device service should just be executed
immediately.

Test: manual, on a device without the HID Host profile.
Change-Id: I2ab4b8aec413b66d57eb322d38660f1b4c48ba32

7 years agoMerge "Allow HID Device to connect to a specific device"
Ivan Podogov [Wed, 4 Jan 2017 13:00:03 +0000 (13:00 +0000)]
Merge "Allow HID Device to connect to a specific device"
am: 7bd36a3588

Change-Id: Ib9155090374c80102ee9874b4c692955ce1b60de

7 years agoMerge "Allow HID Device to connect to a specific device"
Treehugger Robot [Wed, 4 Jan 2017 12:56:49 +0000 (12:56 +0000)]
Merge "Allow HID Device to connect to a specific device"

7 years agoAdd a mechanism for configuring the A2DP Source codecs
Pavlin Radoslavov [Wed, 4 Jan 2017 03:40:07 +0000 (03:40 +0000)]
Add a mechanism for configuring the A2DP Source codecs
am: 5ce0116fbf

Change-Id: Ieacf4534900cf360aaa32d676d42e13d0cb80498

7 years agoAdd a mechanism for configuring the A2DP Source codecs
Pavlin Radoslavov [Mon, 5 Dec 2016 21:02:26 +0000 (13:02 -0800)]
Add a mechanism for configuring the A2DP Source codecs

* Codec config internal abstraction:
 - Add new classes A2dpCodecConfig and A2dpCodecs that (will)
   encapsulate all codec-related APIs
 - Add unit tests for the above two classes
 - Add method A2dpCodecConfig.buildCodecConfig(), and use it when
   creating the codec configuration instead of A2DP_InitSource2SinkCodec().
   The new method can build the codec config by taking into account
   optional user codec-related configuration preferences.
 - Use the A2DP codec config API from the hardware/libhardware bt_av.h API
 - Replace enum tA2DP_CODEC_SEP_INDEX with btav_a2dp_codec_index_t
   from the bt_av.h API
 - Move codec-specific functions from stack/include/a2dp_api.h
   and stack/a2dp/a2dp_api.cc to stack/include/a2dp_codec_api.h
   and stack/a2dp/a2dp_codec_config.cc
 - Create a new base class A2dpCodecConfig() to hold some of the
   codec-related state, and implement the corresponding A2dpCodecConfigSbc
   and A2dpCodecConfigSbcSink derived classes.
 - Move A2DP spec-related constants from stack/include/a2dp_api.h
   to stack/include/a2dp_constants.h
 - Move A2DP-related error codes from stack/include/a2dp_api.h
   to stack/include/a2dp_error_codes.h
 - Move A2DP SBC spec-related constants from stack/include/a2dp_sbc.h to
   stack/include/a2dp_sbc_constants.h

* Implement the backend mechanism for handling user (re)configuration of
  A2DP Source codecs as requested via the JNI API calls.
  Also, any codec changes are reported back via JNI API callbacks.
  The current audio parameter selection (sample rate, bits per
  sample, channel mode - mono/stereo) is as follows:
  - If the user selected parameters are acceptable (based on
    local codec capability and the remote Sink capability),
    those parameters are used.
  - Else if the Audio HAL's requested parameters are acceptable,
    those are used.
  - Else if the default settings are acceptable, those are used.
  - Else use the best match among the local and the remote device's
    capabilities.

* Update the mechanism for handling OTA configuration requests from the
  remote Sink device.
  - The OTA prefered codec configuration is ignored if the current
  codec configuration contains explicit user configuration, or if the
  codec configuration for the same codec contains explicit user
  configuration.

* Refactor the Audio HAL <-> Bluetooth audio parameter negotiation
  mechanism:
  The new mechanism gives some flexibility to the Media Framework to
  choose the appropriate audio format (sample rate, bits per sample,
  and channel mode - mono/stereo), and at the same time allows
  the Bluetooth stack to double-check / overwrite the choice.
 - out_get_parameters() on the Audio HAL side asks the Bluetooth stack
   for all currently supported formats (for the current codec),
   and returns them to the Media Framework: sample rate, bits per sample,
   and channel mode (mono/stereo).
 - The first time adev_open_output_stream() is called on the Audio HAL,
   it asks the Bluetooth stack about the audio format currently selected
   by the Bluetooth stack (based on codec negotiation with the Sink device,
   and User Configuration).
 - The second time adev_open_output_stream() is called on the Audio HAL,
   its "config" will eventually contain the audio format selected
   internally by the Media Framework. That audio format is sent to the
   Bluetooth stack.
   If that format is acceptable to the Bluetooth stack, the Bluetooth
   stack will reconfigure itself internally, and will respond back with
   those values. Otherwise, it will respond back with the values that
   should be used instead.

* Misc other fixes and refactoring:
 - Fix the BTA handling of A2DP codec reconfiguration
 - Fix a bug in the implementation of A2DP_BitsSet(), and add the
   approriate unit test. Also, fix the code that was using this function
   incorrectly.
 - The SBC encoder is compiled as a separate library
 - Replace leftover usage of "false" with "FALSE" for macros, and
   vice-versa for variable values.

Test: A2DP streaming to headsets, TestPlans/71390
Bug: 30958229
Change-Id: I440b6126e2250e33b0075f9789dd93154c007c2b

7 years agoFix failling ClosureTest
Jakub Pawlowski [Tue, 3 Jan 2017 23:48:40 +0000 (23:48 +0000)]
Fix failling ClosureTest
am: dec747b3ba

Change-Id: Ide2dd751115739bcfe8c2966d993c1cd750e0966

7 years agoFix failling ClosureTest
Jakub Pawlowski [Tue, 3 Jan 2017 21:53:34 +0000 (13:53 -0800)]
Fix failling ClosureTest

BTA closure doesn't keep the HDR messages any more, test have keep track
of HDR pointers for itself.

Bug: 33947176
Test: test/run_unit_tests.sh  net_test_bta
Change-Id: I32994f248dc2e082bf8bed426a32acf677c58ed5

7 years agoAllow HID Device to connect to a specific device
Ivan Podogov [Fri, 30 Dec 2016 15:19:48 +0000 (15:19 +0000)]
Allow HID Device to connect to a specific device

With this change, when the app requests a connection to a
specific device, it is always "plugged" first.
Unplugging the previous device is left for the app to do.

Test: make
Change-Id: I2e27c12e2ee96d0c311615a3853d8c430f3b2c31

7 years agoLE scanner BTA layer simplification
Jakub Pawlowski [Fri, 30 Dec 2016 06:30:35 +0000 (06:30 +0000)]
LE scanner BTA layer simplification
am: e396065650

Change-Id: If42006688b29d3bae5345ced48d43bb74fc52335

7 years agoMerge "Fix race condition in do_in_bta_thread"
Jakub Pawlowski [Fri, 30 Dec 2016 06:30:17 +0000 (06:30 +0000)]
Merge "Fix race condition in do_in_bta_thread"
am: 8534bc3889

Change-Id: Ia6c5aa8e2bbd7b0288dd999cdc7c03bf1092b1ae

7 years agoLE scanner BTA layer simplification
Jakub Pawlowski [Thu, 29 Dec 2016 09:23:52 +0000 (01:23 -0800)]
LE scanner BTA layer simplification

BTA layer for scanner is very complicated. This patch simplifies it:
* get rid of type redeclarations for BTM types
* get rid of trivial *_act methods and call BTM API directly where possible

Bug: 30622771
Test: slra FilterTest
Change-Id: I3899b30074b2abc4a3945c5cc14f1bb40a504876

7 years agoMerge "Fix race condition in do_in_bta_thread"
Jakub Pawlowski [Fri, 30 Dec 2016 06:25:08 +0000 (06:25 +0000)]
Merge "Fix race condition in do_in_bta_thread"

7 years agoFix race condition in do_in_bta_thread
Jakub Pawlowski [Thu, 29 Dec 2016 06:45:34 +0000 (22:45 -0800)]
Fix race condition in do_in_bta_thread

Attach posted_task to the HDR message, instead of using a queue.

Bug: 33947176
Test: re-run sl4a FilteringTest 3 times with no flakiness
Change-Id: If0b69e82d11eeae52ac8e591bebff634073251f1

7 years agoHIDD: Add support for HID Device Role
Hemant Gupta [Thu, 29 Dec 2016 19:39:01 +0000 (19:39 +0000)]
HIDD: Add support for HID Device Role
am: 8843cc830b

Change-Id: I9f5b818dc50c8a99502bb2373db31ef8557d598a

7 years agoHIDD: Add support for HID Device Role
Hemant Gupta [Fri, 18 Apr 2014 07:04:55 +0000 (12:34 +0530)]
HIDD: Add support for HID Device Role

This patch adds support for HID Device role in bluedroid stack allowing
DUT to be used as Keyboard or Mouse.

Bug: 33011576
Change-Id: I45b581a54f6c7bbc1f25226715a7ea23e34255c0

7 years agoHCI interface improvements
Jakub Pawlowski [Thu, 29 Dec 2016 05:24:51 +0000 (05:24 +0000)]
HCI interface improvements
am: dabf8d36c6

Change-Id: I0d78a25eaacd0dc45ac7cd76eedfc0a374c0a36f

7 years agoHCI interface improvements
Jakub Pawlowski [Wed, 28 Dec 2016 12:47:37 +0000 (04:47 -0800)]
HCI interface improvements

This patch improves btu_hcif_send_cmd_with_cb, which will accept
base::Callback instead of function pointer as argument. It will also
carry information about where was packet send from, which can be
displayed when command status is received, greatly improving logs.

The improved method is also used for handling VSC advertising.

Bug: 30622771
Test: sl4a ConcurrentBleAdvertiserTest
Change-Id: I55c3e32f9231c00bfa85f971265809d6f1fecdfb

7 years agoFix AdvertisingManager not being initialized
Jakub Pawlowski [Thu, 29 Dec 2016 01:36:39 +0000 (01:36 +0000)]
Fix AdvertisingManager not being initialized
am: 2255250d9b

Change-Id: Ib4328198433e89853316c727f648a26dfe97025e

7 years agoFix AdvertisingManager not being initialized
Jakub Pawlowski [Thu, 22 Dec 2016 11:13:00 +0000 (03:13 -0800)]
Fix AdvertisingManager not being initialized

When BLE_VND_INCLUDED is not set, advertising was not properly
initialized, which resulted in stack crashes. This patch makes sure that
LE advertising is always properly initialized

Bug: 33168939
Test: enable LE advertising with BLE_VND_INCLUDED set to false
Change-Id: I5fa0b3da39da99e750e1f8b6f0452a628094bfc4