OSDN Git Service

android-x86/system-bt.git
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 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 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 [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 [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, 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

7 years agoFix pointer type in BTA_DmBleCfgFilterCondition
Jakub Pawlowski [Wed, 28 Dec 2016 07:50:12 +0000 (23:50 -0800)]
Fix pointer type in BTA_DmBleCfgFilterCondition

p_cond_param->srvc_uuid is of type tBTA_DM_BLE_PF_UUID_COND

Bug: 33910711
Test: sl4a FilteringTest
Change-Id: I6b30e1e441f8256d8c8dbf593f746a3d7810eda6

7 years agoFix pointer arithmetic in BTA_DmBleCfgFilterCondition
Andre Eisenbach [Tue, 27 Dec 2016 22:48:34 +0000 (14:48 -0800)]
Fix pointer arithmetic in BTA_DmBleCfgFilterCondition

Using the pointer to the beginning of a union in a member of the union,
which will then be over-written, is a bad idea(TM).

Bug: 33910711
Test: manual
Change-Id: I0b979e493688bf8c02119a2ef6707d6c8e730dcb

7 years agoosi: Return 0 on osi_property_get failure
Myles Watson [Sat, 17 Dec 2016 01:01:42 +0000 (17:01 -0800)]
osi: Return 0 on osi_property_get failure

Test: mma -j32
Change-Id: Ia1aae4cd5618816b529449844b3a0724e4eb3200

7 years agoLinux build fix
Jakub Pawlowski [Tue, 20 Dec 2016 20:55:51 +0000 (12:55 -0800)]
Linux build fix

Test: compilation test
Change-Id: I0834431378b015eafbb26c48af342af4a650972b

7 years agoRemove reduntant capabilities check
Jakub Pawlowski [Tue, 20 Dec 2016 01:05:33 +0000 (17:05 -0800)]
Remove reduntant capabilities check

BTM layer checks if LE is avaliable, and if proper VSC are
avaliable, no need to do additional checks in BTA.

Test: sl4a FilteringTest
Bug: 30622771
Change-Id: I594b152d18f08a46b65930547a991dbb6f188c4b

7 years agoGet rid of BLE_ANDROID_CONTROLLER_SCAN_FILTER
Jakub Pawlowski [Tue, 20 Dec 2016 00:13:08 +0000 (16:13 -0800)]
Get rid of BLE_ANDROID_CONTROLLER_SCAN_FILTER

All calls to filter related code is guarded by check if HCI VSC are
available. There is no need to keep double check.

Test: sl4a FilteringTest
Bug: 30622771
Change-Id: Ib4c53593d536a2985926ef2b725bc69050bdb035

7 years agoMerge "Remove btif dependency on libmedia"
Treehugger Robot [Tue, 20 Dec 2016 00:39:42 +0000 (00:39 +0000)]
Merge "Remove btif dependency on libmedia"

7 years agoModernize BLE Scanner implementation (2/3)
Jakub Pawlowski [Sun, 18 Dec 2016 01:08:15 +0000 (17:08 -0800)]
Modernize BLE Scanner implementation (2/3)

Get rid of BTA state machine states for BLE scanning.

Test: sl4a FilteringTest
Bug: 30622771
Change-Id: I8a879604f413c9980cf64983d8ef6b9a94669295

7 years agoExpose Bluetooth 5.0 properties to JNI
Jakub Pawlowski [Mon, 5 Dec 2016 19:46:23 +0000 (11:46 -0800)]
Expose Bluetooth 5.0 properties to JNI

Bug: 30622771
Test: sl4a ConcurrentBleAdvertisingTest
Change-Id: I6185e6926e7363824aa573c7d65f7ab66f954e52

7 years agoUse LE Extended Advertising Report Event when available
Jakub Pawlowski [Tue, 13 Dec 2016 00:22:56 +0000 (16:22 -0800)]
Use LE Extended Advertising Report Event when available

Bug: 30622771
Test: sl4a ConcurrentBleAdvertisingTest
Change-Id: Id85504922c21f15bc36ac8bb5e4ab962ee356e3d

7 years agoUse extended set scan enable/parameters when available
Jakub Pawlowski [Fri, 2 Dec 2016 19:34:06 +0000 (11:34 -0800)]
Use extended set scan enable/parameters when available

When LE Advertising Extension is available on the controller we must use
both extended advertising and scanning commands. Otherwise, according to
the spec, controller will return error.

This patch makes sure that proper avaliable HCI calls are made.

Bug: 30622771
Test: sl4a ConcurrentBleAdvertisingTest as scanner
Change-Id: I6906c381f0f758bd24b592390a4ef46e7fae36ed

7 years agoUpdate BleAdvertiserHciInterface
Jakub Pawlowski [Thu, 1 Dec 2016 23:32:58 +0000 (15:32 -0800)]
Update BleAdvertiserHciInterface

This patch updates BleAdvertiserHciInterface to be on pair with
Bluetooth 5.0 LE Advertising Extension feature.

Bug: 30622771
Test: net_test_stack_multi_adv native test
Change-Id: Ie0ec8c7f8ed0d7a874e392123b3486c767121140

7 years agoHandle Advertising Set Terminated event
Jakub Pawlowski [Wed, 30 Nov 2016 21:51:01 +0000 (13:51 -0800)]
Handle Advertising Set Terminated event

Make BleAdvertiserHciExtendedImpl report when advertising set is
disabled because of new connection.

Bug: 30622771
Test: sl4a ConcurrentBleAdvertisingTest
Change-Id: Ic13a31fe4bb92f121a29d540274d13893775a450

7 years agoAdvertising Extension Implementation
Jakub Pawlowski [Tue, 29 Nov 2016 17:26:16 +0000 (09:26 -0800)]
Advertising Extension Implementation

This patch implements current BleAdvertiserHciInterface using LE
Advertising extension HCI commands.

Bug: 30622771
Test: sl4a ConcurrentBleAdvertisingTest
Change-Id: Icaaf24d6d02d8a887b3bb57d5b858b929f11c413

7 years agoBLE scan filter setup simplification (2/3)
Jakub Pawlowski [Fri, 16 Dec 2016 18:43:49 +0000 (10:43 -0800)]
BLE scan filter setup simplification (2/3)

Bug: 30622771
Test: sl4a BleScanTest
Change-Id: I55e6c201849a057995c0c6fda1c52af826749922

7 years agoAVRCP CT: Register for UUIDS Changed
Sanket Agarwal [Mon, 19 Dec 2016 19:15:00 +0000 (11:15 -0800)]
AVRCP CT: Register for UUIDS Changed

-- Also fix a bug introduced by change of data types in AVRCP Open state
and AVRCP Browse Open state. Due to change in data type and field
mismatch the status value was being read incorrectly

Bug: b/33750053
Test: Manual test of browse connect
Test: PTS test for UUIDs changed
Change-Id: Ifecf9480a3fabeee8ad8302ebb7cd48f5322dea7

7 years agoRemove btif dependency on libmedia
Jack He [Sun, 18 Dec 2016 00:29:00 +0000 (16:29 -0800)]
Remove btif dependency on libmedia

* btif uses AudioTrack from frameworks/av which is under libaudioclient
* Current dependency on libmedia is incorrect as it is an indirect
  dependency to libaudioclient

Bug: 33718447
Test: code compilation, no user visible effect
Change-Id: I7c44095cd282fabf8595015910670193077c1514

7 years agoMerge "Add unit tests and refactor LE legacy pairing key distribution methods"
Treehugger Robot [Sat, 17 Dec 2016 02:34:14 +0000 (02:34 +0000)]
Merge "Add unit tests and refactor LE legacy pairing key distribution methods"

7 years agoRefactor LE scanning HAL (2/3)
Jakub Pawlowski [Wed, 14 Dec 2016 17:49:38 +0000 (09:49 -0800)]
Refactor LE scanning HAL (2/3)

This patch converts btgatt_scanner_interface_t struct into
BleScannerInterface class. It also refactors three most important
methods from this interface: RegisterAdvertiser, Scan, and Unregister.
Rest of this interface will be updated in following patches.

Bug: 30622771
Test: sl4a BleScanApiTest
Change-Id: Ie35356f6c3c4f5488514ef55a48a32c93fb21b83

7 years agoIncoming HF connection: CB interaction between BTA <-> BTIF
Sanket Agarwal [Thu, 15 Dec 2016 22:47:29 +0000 (14:47 -0800)]
Incoming HF connection: CB interaction between BTA <-> BTIF

For incoming connections we are not storing the handles in BTIF which
implies that BTIF ignores the message (and so does jni -> java). This is
fixed by sending the handle as part of BTA message on incoming accept.

Other bugs include connection from remote (incoming) and disconnecting
from host. They also depended on not storing the handle properly in
first place.

Bug: b/33555377
Bug: b/30984220

Test: Manual testing of incoming connections
Change-Id: I84950d42aba2d2c975ea86cc8217fd0129cc90e9

7 years agoAdd unit tests and refactor LE legacy pairing key distribution methods
Jack He [Thu, 15 Dec 2016 10:48:33 +0000 (02:48 -0800)]
Add unit tests and refactor LE legacy pairing key distribution methods

* Add unit test for confirm (c1), p1, and p2
* Refactor the code to reduce number of methods
* Refactor c1's code to make it testable

Bug: 32413756
Test: Code compilation, Unit Test, PTS SM Tests
Change-Id: I5cc876b7dd2b21a0780ac9a5236420223df6cddb

7 years agotest_vendor: Use pipe2 to set pipe flags
Myles Watson [Fri, 16 Dec 2016 16:13:07 +0000 (08:13 -0800)]
test_vendor: Use pipe2 to set pipe flags

Simplify the code to fix a typo.  F_SETFD should have been
F_SETFL.

Test: run unit tests

out/host/linux-x86/nativetest/test-vendor_test_host/test-vendor_test_host \
        --gtest_filter=AsyncManagerSocketTest.*

Change-Id: I215381d6e130428acae7d73d80fefc97cbf64651

7 years agoMerge "Replace assert with CHECK from base/logging.h"
Treehugger Robot [Fri, 16 Dec 2016 18:07:46 +0000 (18:07 +0000)]
Merge "Replace assert with CHECK from base/logging.h"

7 years agotest_vendor: Add more unit tests for async_manager
Myles Watson [Thu, 8 Dec 2016 22:34:20 +0000 (14:34 -0800)]
test_vendor: Add more unit tests for async_manager

Test: run the unit tests
 out/host/linux-x86/nativetest/test-vendor_test_host/test-vendor_test_host \
     --gtest_filter=AsyncManagerSocketTest.*

Change-Id: I8c5e05c5506a067a6148d54dc23bbb931ad612e7

7 years agoReplace assert with CHECK from base/logging.h
Jack He [Tue, 13 Dec 2016 09:59:12 +0000 (01:59 -0800)]
Replace assert with CHECK from base/logging.h

* Replace assert with CHECK
* Remove all NDEBUG definitions
* Remove hacks for BT_LIBCHROME_NDEBUG
* Removed some removed directories from Makefile such as hcis, brcm, rpc

Coccinelle-assisted:

@@
@@

- #include "base/logging.h"
+ #include <base/logging.h>

@ assert_included @
@@

@ base_logging_included @
@@

@ depends on (assert_included && !(base_logging_included)) @
@@

- #include <assert.h>
+ #include <base/logging.h>

@ depends on (assert_included && base_logging_included) @
@@

- #include <assert.h>

@@
expression E;
@@

- assert(E);
+ CHECK(E);

And a bash script:

for file in $(find . -name "*.cc"); do
  spatch --sp-file replace_assert_with_CHECK.cocci --in-place $file
done

The following files are maually edited:
btif/src/btif_config.cc
btif/src/btif_avrcp_audio_track.cc
btif/src/btif_gatt_client.cc
osi/src/data_dispatcher.cc
osi/src/reactor.cc
osi/src/thread.cc
osi/src/fixed_queue.cc
osi/src/list.cc
osi/src/allocation_tracker.cc
osi/src/alarm.cc
osi/test/wakelock_test.cc

Bug: 31781465
Test: Code compilation, Unit Tests, BtStressTest, BtFunhausMetricsTest
Change-Id: I21dc10a45be31665e41441b75b0515ed87523988

7 years agoBTA Application registration refactor
Jakub Pawlowski [Thu, 15 Dec 2016 22:35:15 +0000 (14:35 -0800)]
BTA Application registration refactor

This patch replace BTA state machine state associated with registration
of new application, together with BTA_GATTC_API_REG_EVT, and
tBTA_GATTC_API_REG. Instead, it uses closure to post registration task,
and callback for registration event.

Bug: 30622771
Test: sl4a ConcurrentBleAdvertiserTest GattConnectTest
Change-Id: I62d68485170ef5472237d62b285353f2c9bc8250

7 years agoChange the parameter type of smp_debug_print_nbyte_little_endian
Jack He [Thu, 15 Dec 2016 18:56:55 +0000 (10:56 -0800)]
Change the parameter type of smp_debug_print_nbyte_little_endian

* This function used to take (const uint8_t*) as the second parameter
  and it causes all its calls to cast a (const char*) to this type
* This patch changes it to (const char*) so no cast needed

Coccinelle-assisted:

@ rule1 @
type T;
expression A, B, C;
@@

smp_debug_print_nbyte_little_endian(A,
- (T)
B, C);

and

for file in $(find . -name "*.cc"); do
  spatch --sp-file refactor_smp_print_func.cocci --in-place $file
done

Bug: 33663033
Test: code compilation, no user visible effect
Change-Id: Ibeed0b414514acc4a8e94e47e99117bdb3e454ff

7 years agoRemove unused function definitions
Ajay Panicker [Tue, 29 Nov 2016 01:40:09 +0000 (17:40 -0800)]
Remove unused function definitions

Test: Code still compiles
Change-Id: I4a86cd3b515ad3da8f852f024952e3f7a85d1071

7 years agoRemove unused btm_set_random_address
Jakub Pawlowski [Wed, 14 Dec 2016 02:33:14 +0000 (18:33 -0800)]
Remove unused btm_set_random_address

Bug: 30622771
Test: compilation test
Change-Id: I0e502fb9b5b2cc3ccad0aa142a0ec9fedea7d1df

7 years agoLE Extended Advertising
Jakub Pawlowski [Mon, 28 Nov 2016 19:16:04 +0000 (11:16 -0800)]
LE Extended Advertising

This patch checks if LE Extended Advertising, and LE Periodic Advertising
features are supported. Also if they are supported, it will read number of
avaliable advertisers, and maximum advertisement data size supported by
controller.

Bug: 30622771
Test: sl4a ConcurrentBleAdvertisingTest
Change-Id: Iabfda3dd081519ed70c99eb4290667e10790e047

7 years agoReplace usage of "vector<>" with "std::vector<>"
Pavlin Radoslavov [Sat, 10 Dec 2016 01:50:59 +0000 (17:50 -0800)]
Replace usage of "vector<>" with "std::vector<>"

This change is needed so we can remove the last instances
of "using std::vector" statements in hardware/libhardware.

Test: code compilation
Change-Id: I6a9fc62152371d1bba6ead71e7ff8c2610799637

7 years agoRemove unnecessary error message in PORT_DataInd
Jack He [Wed, 7 Dec 2016 02:29:15 +0000 (18:29 -0800)]
Remove unnecessary error message in PORT_DataInd

* Removed unnecessary error message in PORT_DataInd
* Removed unnecessary spaces
* Reformat the code a little bit

Bug: 33398566
Test: code compilation as there is no functional change
Change-Id: I6f4b16f3fd3bdbb58aa09d1548a96f1289124cd3

7 years agoGet rid of selective connection procedure
Jakub Pawlowski [Wed, 7 Dec 2016 19:25:15 +0000 (11:25 -0800)]
Get rid of selective connection procedure

Bug: 30622771
Test: compilation test
Change-Id: I1a7e4c49f93f11a350b96ffe7b2e69974ed82f46

7 years agoSimplify LE Advertising Report Event processing
Jakub Pawlowski [Wed, 7 Dec 2016 18:54:44 +0000 (10:54 -0800)]
Simplify LE Advertising Report Event processing

Bug: 30622771
Test: compiliation test
Change-Id: I78ac958b62462dc7aa322336c047670eec6bda0f

7 years agoFix UUID comparision when enabling HID protocol mode for LE devices
Jakub Pawlowski [Sat, 10 Dec 2016 22:20:18 +0000 (14:20 -0800)]
Fix UUID comparision when enabling HID protocol mode for LE devices

Change-Id: Ie635b3b763db5da25e58d7366c2438df67438a81

7 years agoFix maximum connections reached for BLE
Emil Lenngren [Mon, 12 Dec 2016 18:47:12 +0000 (18:47 +0000)]
Fix maximum connections reached for BLE

There was a patch some time ago:
https://android.googlesource.com/platform/system/bt/+/24adb37e4106bf8544c7729d34451fdf2777c4dc

But that patch assumes the error code sent is Connection Rejected Due
To Limited Resources. Most controllers however send Connection Limit
Exceeded, which is more correct. This patch accept both error codes.

Change-Id: Ifead1718cfecb4d6f73c668b5ea743cc68fdaf73
Signed-off-by: Emil Lenngren <emil.lenngren@gmail.com>
7 years agoMerge "test-vendor: Fixed a race condition on the destructor of AsyncManager."
Treehugger Robot [Mon, 12 Dec 2016 19:34:29 +0000 (19:34 +0000)]
Merge "test-vendor: Fixed a race condition on the destructor of AsyncManager."

7 years agotest-vendor: Fixed a race condition on the destructor
Jorge E. Moreira [Sat, 10 Dec 2016 23:11:30 +0000 (15:11 -0800)]
test-vendor: Fixed a race condition on the destructor
of AsyncManager.

Test: Run the unit tests
Change-Id: Icfbaf96b40f10f57e7c925422985ed7004adea64

7 years agoRemove extern "C" from header files
Jack He [Sat, 10 Dec 2016 01:42:28 +0000 (17:42 -0800)]
Remove extern "C" from header files

Since change 290046, most files in system/bt is compiled as C++ source.
Therefore, there is no longer a need for the extern "C" wrapper around
includes that export symbols from those sources.

The following python script is applied to each file in the directory:

front = '#ifdef\s+__cplusplus\s+extern\s+"C"\s+{\s+#endif\s+'
back = '#ifdef\s+__cplusplus\s+}\s+#endif'
with open(sys.argv[1], "r") as f:
  data = f.read()
  data = re.sub(front, "", data)
  data = re.sub(back, "", data)
  print data

through a shell script:

for file in $(find . -name "*.h"); do
  python remove_cpp_extern_c.py $file > tmp
  cat tmp > $file
  rm tmp
done

with following files not edited:
* stack/include/a2dp_*
* include/bt_trace.h
* embdrv/sbc/*

Bug: 33492510
Test: Code compilation, BtFunhausMetricsTest, BtStressTest
Change-Id: Iac21cdfb1924b50478dd0b82326e092602cbc9d4

7 years agoWrite unit test for bta/btif HF client role
Sanket Agarwal [Wed, 7 Dec 2016 21:39:02 +0000 (13:39 -0800)]
Write unit test for bta/btif HF client role

Also fix a bug discovered by unit tests:
bdcmp returns 0 on success hence use negation

Bug: b/30984220
Test: Unit test

Change-Id: I37f7c71c5dd809e4df3d8c2c79906a74c2b19d34

7 years agoMerge "Remove additional usages of UINT_TO_PTR"
Treehugger Robot [Thu, 8 Dec 2016 22:43:07 +0000 (22:43 +0000)]
Merge "Remove additional usages of UINT_TO_PTR"

7 years agoMerge "Initialize SDP rmt_io_cap to UNKNOWN (0xFF)"
Treehugger Robot [Thu, 8 Dec 2016 21:26:22 +0000 (21:26 +0000)]
Merge "Initialize SDP rmt_io_cap to UNKNOWN (0xFF)"

7 years agoRemove additional usages of UINT_TO_PTR
Ajay Panicker [Wed, 23 Nov 2016 04:28:21 +0000 (20:28 -0800)]
Remove additional usages of UINT_TO_PTR

Bug: 32995283
Test: TestTracker/69659
Change-Id: If37b8bcf30f098f6fc2c4dff82118a9f47a125a3

7 years agoRemove usages of SDP_CLIENT_ENABLED
Ajay Panicker [Thu, 8 Dec 2016 01:52:43 +0000 (17:52 -0800)]
Remove usages of SDP_CLIENT_ENABLED

Test: Sanity test connecting to headset and carkit
Change-Id: I215743c9d07881b9fa8213c52853b9a389f8452d

7 years agoMerge "Remove double includes"
Treehugger Robot [Thu, 8 Dec 2016 15:07:41 +0000 (15:07 +0000)]
Merge "Remove double includes"

7 years agoBuild fix
Jakub Pawlowski [Wed, 7 Dec 2016 22:16:35 +0000 (14:16 -0800)]
Build fix

Test: compilation test with BLE_PRIVACY_SPT == FALSE
Change-Id: Icd811584638e37101dabd433d7a4f86807e928fb

7 years agoBuild fix
Jakub Pawlowski [Wed, 7 Dec 2016 21:34:20 +0000 (13:34 -0800)]
Build fix

Test: compilation test
Change-Id: I44648bcb5e41103066861d7060c0a7dc85cad936

7 years agoMerge "Implement multiple control blocks for HF Client in BTA/BTIF"
Sanket Agarwal [Wed, 7 Dec 2016 20:29:43 +0000 (20:29 +0000)]
Merge "Implement multiple control blocks for HF Client in BTA/BTIF"

7 years agoSimplify btm_ble_resolve_random_addr
Jakub Pawlowski [Tue, 6 Dec 2016 23:40:58 +0000 (15:40 -0800)]
Simplify btm_ble_resolve_random_addr

Bug: 30622771
Test: manual testing
Change-Id: I604d0e909a6fe270e2b413abbdb497d622780261

7 years agoImplement multiple control blocks for HF Client in BTA/BTIF
Sanket Agarwal [Thu, 1 Dec 2016 03:43:47 +0000 (19:43 -0800)]
Implement multiple control blocks for HF Client in BTA/BTIF

Test: Manual test for multiple incoming/outgoing HF connections

Bug: b/30984220
Change-Id: If66cad7c9bbc92051ebb7efb2b352c10e7514af3

7 years agoBTA HF Client should use dynamic control block
Sanket Agarwal [Thu, 1 Dec 2016 03:43:47 +0000 (19:43 -0800)]
BTA HF Client should use dynamic control block

Most of the functions in bta_hf_client_at.cc are
currently using a static field for passing callbacks to
BTIF layer. In order to support multi device we need to make
the functions have a parameter which denotes the device.

In order to pass all the required information we choose to
pass the control block for the device instead.

Bug: b/30984220
Test: Manual regression test

Change-Id: Iac692d7e28df3955ddbd28707c323c41714bd86a

7 years agoProperly align some packed data structures.
Stephen Hines [Thu, 1 Dec 2016 11:23:35 +0000 (03:23 -0800)]
Properly align some packed data structures.

Bug: http://b/31532493

Test: Built with -Waddress-of-packed-member enabled.

These data structures later take the address of their uuid field, which
results in a possibly unaligned access to the underlying data. To
prevent the misalignment, we add a further attribute to ensure that the
base of these packed structures is aligned at least as much as the uuid
data member requires (so we can continue using the address of it for
direct dereferences).

Change-Id: I3ec6945b6ea343bef11326a10343309a863786cf

7 years agoInitialize SDP rmt_io_cap to UNKNOWN (0xFF)
Jack He [Thu, 1 Dec 2016 21:34:07 +0000 (13:34 -0800)]
Initialize SDP rmt_io_cap to UNKNOWN (0xFF)

* Set rmt_io_cap to 0xFF (Unknown) when initializing security device record
* Check if rmt_io_cap is unknown when processing passkey confirmation
  request and fail the confirmation if rmt_io_cap is never updated since
  record creation

Bug: 33269435
Test: BtStressTest:test_pair_bluetooth_stress
Change-Id: I329f3da37422d34548e4ef5d16fae4b5159fca22

7 years agoReplace pthread_mutex with std::mutex
Marie Janssen [Tue, 6 Dec 2016 18:50:32 +0000 (18:50 +0000)]
Replace pthread_mutex with std::mutex
am: 21da63773c

Change-Id: I58a70a7ffbeae8ea19beb828512e863f06fc8fec

7 years agoReplace pthread_mutex with std::mutex
Marie Janssen [Thu, 3 Nov 2016 01:31:55 +0000 (18:31 -0700)]
Replace pthread_mutex with std::mutex

In an effort to simplify and reduce errors, replace pthread_mutexes
with std equivalents.

Test: run unit tests & manual sanity checks
Change-Id: I5c33e0b4f4c85133ae4f7415cd19372fc4c7ca1a

7 years agoFix invvalid lcid check in mca_tc_tbl_by_lcid()
liuchao [Tue, 6 Dec 2016 17:01:49 +0000 (17:01 +0000)]
Fix invvalid lcid check in mca_tc_tbl_by_lcid()
am: 7678dcacd8

Change-Id: I6c9de612bb6f7eac37aaf553af0e22a179aeb928

7 years agoFix invvalid lcid check in mca_tc_tbl_by_lcid()
liuchao [Mon, 5 Dec 2016 08:24:04 +0000 (16:24 +0800)]
Fix invvalid lcid check in mca_tc_tbl_by_lcid()

This fixes a potential bug when (lcid - L2CAP_BASE_APPL_CID)
is used as an array index.

Test: mm -j 8
Change-Id: I7f917bf66e4002f65cf1c0bec02eff7d39181790

7 years agoRemove double includes
Myles Watson [Mon, 5 Dec 2016 17:51:25 +0000 (09:51 -0800)]
Remove double includes

Test: mma -j32
Change-Id: I0df664eaadf06af0881c1f55c826ecab52239526

7 years agoRemove redundant added bta_hh_find_cb call in read_rpt_clt_cfg
liuchao [Mon, 5 Dec 2016 20:29:35 +0000 (20:29 +0000)]
Remove redundant added bta_hh_find_cb call in read_rpt_clt_cfg
am: ecff82227b

Change-Id: Ie06a1c231254746f1a30b53a0b51b65c9c311e36

7 years agoRemove redundant added bta_hh_find_cb call in read_rpt_clt_cfg
liuchao [Mon, 5 Dec 2016 08:13:39 +0000 (16:13 +0800)]
Remove redundant added bta_hh_find_cb call in read_rpt_clt_cfg

This fixes an redundant call to bta_hh_find_cb to get a bta_hh_index

Test: mm -j 8
Change-Id: I455837d00d992248db8d8432b85227d1f92b3b02

7 years agoMerge "Use shared lib of libtinyxml2 instead of static one."
Jaekyun Seok [Mon, 5 Dec 2016 00:43:31 +0000 (00:43 +0000)]
Merge "Use shared lib of libtinyxml2 instead of static one."
am: 344ca410c4

Change-Id: I055cac5d25d03ed8f0b2f3785f5970f794959313

7 years agoMerge "Use shared lib of libtinyxml2 instead of static one."
Jaekyun Seok [Mon, 5 Dec 2016 00:38:22 +0000 (00:38 +0000)]
Merge "Use shared lib of libtinyxml2 instead of static one."

7 years agoAdd extra logs by default inside sdp_copy_raw_data()
Pavlin Radoslavov [Sat, 3 Dec 2016 04:58:18 +0000 (04:58 +0000)]
Add extra logs by default inside sdp_copy_raw_data()
am: 9f9166c583

Change-Id: I13ec9823ecc24cac9f4c353cb233dcc8a1a8ed7a

7 years agoFix formatting of config files
Myles Watson [Sat, 3 Dec 2016 04:22:51 +0000 (04:22 +0000)]
Fix formatting of config files
am: dde03b2b53

Change-Id: Ib62f5d6550f395a0f8b3b142a01f1777681d2ecd

7 years agoAdd extra logs by default inside sdp_copy_raw_data()
Pavlin Radoslavov [Tue, 29 Nov 2016 00:59:43 +0000 (16:59 -0800)]
Add extra logs by default inside sdp_copy_raw_data()

The extra logging is needed for investigating an issue that
is hard to reproduce.

Test: code compilation
Bug: 31795382
Change-Id: Ibe500e332dba8f44485b44bcac32d11be52520a6

7 years agoFix formatting of config files
Myles Watson [Fri, 2 Dec 2016 20:44:57 +0000 (12:44 -0800)]
Fix formatting of config files

Revert "Apply clang-format to the rest of the tree" for
 .conf files

Change-Id: If3f4a06bd8ebceedf1911b77afb29605fbeb92ef
Test: mma -j32

7 years agoRemove coverity comments
Myles Watson [Fri, 2 Dec 2016 21:15:52 +0000 (21:15 +0000)]
Remove coverity comments
am: 37492db916

Change-Id: I7ce8bb8ace45c456e5830fe26c2bad9bc50a1a24

7 years agoRemove coverity comments
Myles Watson [Fri, 2 Dec 2016 01:16:23 +0000 (17:16 -0800)]
Remove coverity comments

We aren't actively using coverity, and these may be out
of date.

Test: mma -j32
Change-Id: I3ce75c561dae57019597db85a383a8e434803926

7 years agoApply clang-format to the rest of the tree
Myles Watson [Fri, 2 Dec 2016 18:11:12 +0000 (18:11 +0000)]
Apply clang-format to the rest of the tree
am: 911d1ae03e

Change-Id: I343d7e7123479d7eb93621b01afed4bad71fd240

7 years agoReformat long comments before clang-format
Myles Watson [Fri, 2 Dec 2016 18:11:10 +0000 (18:11 +0000)]
Reformat long comments before clang-format
am: 9ca07091a1

Change-Id: Ib93e89aaf7ef4a73c0db1779240958b09a00fa3e

7 years agoApply clang-format to the rest of the tree
Myles Watson [Tue, 29 Nov 2016 00:44:40 +0000 (16:44 -0800)]
Apply clang-format to the rest of the tree

find * | grep "\.[ch]" | xargs clang-format --style=file -i

Test: mma -j32
Change-Id: I6fcc9862bb7bc07c2a367ca58fef2b3cd27a6f05

7 years agoReformat long comments before clang-format
Myles Watson [Tue, 29 Nov 2016 00:41:53 +0000 (16:41 -0800)]
Reformat long comments before clang-format

Test: mma -j32
Change-Id: I86a2a4af9dcd22d675ca1f764bb2c9623d63edcc

7 years agoUse shared lib of libtinyxml2 instead of static one.
Jaekyun Seok [Tue, 29 Nov 2016 01:08:10 +0000 (10:08 +0900)]
Use shared lib of libtinyxml2 instead of static one.

libtinyxml2 is used commonly by vendors. So using its shared lib will reduce
total image size even though Android framework size increases as following for
now.

bluetooth.default.so: 1470356 -> 1440664 (-29692)
libtinyxml2.so      :       0 ->   46144 (+46144)
total               :                    (+16452)

Test: building succeeded, and the image was tested on angler.
Bug: 33056637
Change-Id: I3bd3cf7128e3ad6daa8157d57935f7422c1f2662

7 years agoAdd a mechanism for Audio Feeding Parameters negotiation
Pavlin Radoslavov [Fri, 2 Dec 2016 07:37:07 +0000 (07:37 +0000)]
Add a mechanism for Audio Feeding Parameters negotiation
am: 4ebaa86a3a

Change-Id: I9ccf11b2a53af91f6ec9ffab10af0de9ce0b0564

7 years agoAdd a mechanism for Audio Feeding Parameters negotiation
Pavlin Radoslavov [Tue, 22 Nov 2016 19:42:11 +0000 (11:42 -0800)]
Add a mechanism for Audio Feeding Parameters negotiation

Previously, the Audio Feeding Parameters between the Media Framework
and A2DP were hard-coded: 44.1 KHz sample rate, 16-bits per sample, Stereo.
Now the Media Framework queries A2DP, and uses the returned values.

Bug: b/30958229
Test: Manual testing: A2DP streaming to headphones. TestTracker/68727
Change-Id: I70b90d2961ceb9efcd7021d2e12c240fe531ee1c

7 years agoMerge "Add dependency installation files for x86_64"
Jack He [Fri, 2 Dec 2016 02:00:42 +0000 (02:00 +0000)]
Merge "Add dependency installation files for x86_64"
am: d4e30c774a

Change-Id: I1331151b40af6f7dc164814a74ca3dc7f7edc797

7 years agoMerge "Add dependency installation files for x86_64"
Treehugger Robot [Fri, 2 Dec 2016 01:49:32 +0000 (01:49 +0000)]
Merge "Add dependency installation files for x86_64"

7 years agoA2DP Codec related cleanup
Pavlin Radoslavov [Fri, 2 Dec 2016 01:43:04 +0000 (01:43 +0000)]
A2DP Codec related cleanup
am: cd02ce9c60

Change-Id: I0d46fa536ecbad215a2031496b5450de9a29f0b0

7 years agoA2DP Codec related cleanup
Pavlin Radoslavov [Sat, 5 Nov 2016 00:18:51 +0000 (17:18 -0700)]
A2DP Codec related cleanup

* Add new A2DP API and the corresponding unit tests:
  - A2DP_InitSource2SinkCodec()
  - A2DP_SourceCodecSepIndex()
  - A2DP_GetTrackBitsPerSample()
* Use the new API to simplify the codec selection and setup
* Rename A2DP_BldSbcMplHdr() to A2DP_BuildMediaPayloadHeaderSbc()
* Remove the following APIs, because they are not needed anymore:
  - A2DP_BuildSinkConfig()
  - A2DP_CodecConfigMatchesCapabilities()
  - A2DP_SetSourceCodec()
  - A2DP_CodecRequiresReconfig()
  - A2DP_IsSourceCodecSupported()
* Remove the following generic APIs, and keep only the SBC-specific APIs.
  The information returned by those functions is SBC-specific, and doesn't
  apply to other codecs:
  - A2DP_GetNumberOfSubbands()
  - A2DP_GetNumberOfBlocks()
  - A2DP_GetAllocationMethodCode()
  - A2DP_GetChannelModeCode()
  - A2DP_GetSamplingFrequencyCode()
  - A2DP_GetMinBitpool()
  - A2DP_GetMaxBitpool()
* Rename:
  A2DP_GetTrackFrequency() -> A2DP_GetTrackSampleRate()
  tA2DP_FEEDING_PARAMS.sampling_freq -> sample_rate
  tA2DP_FEEDING_PARAMS.num_channel -> channel_count
  tA2DP_FEEDING_PARAMS.bit_per_sample -> bits_per_sample
* Remove btif_a2dp_source_encoder_update(), tA2DP_ENCODER_UPDATE_PARAMS
  and associated events and processing mechanism, because they are not
  needed anymore.
* Remove tA2DP_ENCODER_INTERFACE.encoder_update, because it is not
  used anymore.
  Now it is superceded by tA2DP_ENCODER_INTERFACE.encoder_init.
* Fix a bug inside bta_av_api_register() when initializing
  the stream control block.
* Refactor bta_av_co_audio_getconfig() and bta_av_co_audio_setconfig()
* Remove tBTA_AV_CO_CB.codec_config_setconfig field, because it is not
  needed anymore.
* Remove unused arguments when opening/closing audio stream
* Remove #ifdef BTA_AV_DEBUG guards: BTA_AV_DEBUG is always TRUE
* Remove SBC Mono -> Stereo hack

Test: Manual testing: A2DP streaming to headphones. TestTracker/68727
Change-Id: Ie0b209f7ad6c21c2c6d8d2e6277b86dfa63388c6

7 years agoAdd dependency installation files for x86_64
Jack He [Wed, 30 Nov 2016 01:46:15 +0000 (17:46 -0800)]
Add dependency installation files for x86_64

* The installation script installs the necessary dependencies based on
  host OS version on Ubuntu OS
* clang toolchain BUILD.gn will only use clang-3.5 or above
* Update documentation

Test: gn gen out/Default; ninja -C out/Default
Change-Id: Ibc732ebc68009af25e9a911a724a888e008d45ac

7 years agoFix asterisks in block quotes
Myles Watson [Thu, 1 Dec 2016 22:30:09 +0000 (22:30 +0000)]
Fix asterisks in block quotes
am: ee96a3c60f

Change-Id: I3bf248c9dd9b28f7f18b55df4357489f4999f549

7 years agoembdrv: Fix include ordering before clang-format
Myles Watson [Thu, 1 Dec 2016 20:43:32 +0000 (20:43 +0000)]
embdrv: Fix include ordering before clang-format
am: c7caa5066e

Change-Id: I8af6aa03984d2283b213dbf320e5d0751a94edf6

7 years agoFix asterisks in block quotes
Myles Watson [Wed, 23 Nov 2016 22:49:54 +0000 (14:49 -0800)]
Fix asterisks in block quotes

Remove double asterisks from block quotes.

git grep -lP '^[*][*]'  | xargs  sed 's/^[*][*]/ \*/' -i

Fix asterisk line lengths

 git grep -l '^[ /][*]\{79,\}[*/]' | \
   xargs sed -i s,"^\([ /]\)[*]\([*]\{78\}\)[*]*\([*/]\)","\1\2\3",

Test: mma -j32
Change-Id: Ie3fd375ac2f804cb0f53bf1314a005e85973b3d7

7 years agoembdrv: Fix include ordering before clang-format
Myles Watson [Tue, 29 Nov 2016 17:40:47 +0000 (09:40 -0800)]
embdrv: Fix include ordering before clang-format

clang-format re-orders #include statements.  Fix the includes
so that order is less important.

Test: mma -j32

Change-Id: Ia548c2c7d5669e0e759b3c5e7fa12a1ec48cc03e

7 years agoRemove more usages of UINT_TO_PTR macro
Ajay Panicker [Thu, 1 Dec 2016 02:57:15 +0000 (02:57 +0000)]
Remove more usages of UINT_TO_PTR macro
am: 531fe1a8c1

Change-Id: I93895d5e6aa42d0ec75a9c69df9121e542b57e86

7 years agoRemove more usages of UINT_TO_PTR macro
Ajay Panicker [Tue, 22 Nov 2016 21:28:43 +0000 (13:28 -0800)]
Remove more usages of UINT_TO_PTR macro

Bug: 32995283
Test: Sanity tests with a carkit and a headset
Change-Id: Ie74ece4814499f771eb1f229558de7df5c726180

7 years agoMerge "Add a missing error check when processing AVDT_RECONFIG_CFM_EVT event"
Pavlin Radoslavov [Wed, 30 Nov 2016 20:10:43 +0000 (20:10 +0000)]
Merge "Add a missing error check when processing AVDT_RECONFIG_CFM_EVT event"
am: 845623f07e

Change-Id: I5f34508a6762023f93893886e62430513e21f2b2

7 years agoMerge "Add a missing error check when processing AVDT_RECONFIG_CFM_EVT event"
Treehugger Robot [Wed, 30 Nov 2016 19:49:44 +0000 (19:49 +0000)]
Merge "Add a missing error check when processing AVDT_RECONFIG_CFM_EVT event"

7 years agoRun clang-format on every commit
Myles Watson [Wed, 30 Nov 2016 18:35:54 +0000 (18:35 +0000)]
Run clang-format on every commit
am: b42db6400f

Change-Id: I26e77b2d66154d5e9206dae2a9cceb7b6e6bf6e5

7 years agoAdd a missing error check when processing AVDT_RECONFIG_CFM_EVT event
Pavlin Radoslavov [Mon, 28 Nov 2016 22:32:40 +0000 (14:32 -0800)]
Add a missing error check when processing AVDT_RECONFIG_CFM_EVT event

Bug: 33114181
Test: Code compilation
Change-Id: Ic2d432b651ea80af2b0ff40fdb61221b0fc31f82

7 years agoRun clang-format on every commit
Myles Watson [Tue, 29 Nov 2016 18:58:00 +0000 (10:58 -0800)]
Run clang-format on every commit

Test: repo upload --cbr .
Change-Id: Ib4bea4649320db8890399dda8a285bab69f4b482

7 years agoMerge "AVRCP: Fix get metadata attribute responses"
Jack He [Wed, 30 Nov 2016 01:38:41 +0000 (01:38 +0000)]
Merge "AVRCP: Fix get metadata attribute responses"
am: 376dfb8071

Change-Id: I2890fc0fd14dfced01702a4dad30020e0222cf18