History log of /packages/apps/Bluetooth/jni/com_android_bluetooth_hfp.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
448309eada01c130b2fee8977f7fd74875978cbc 06-Apr-2018 Jack He <siyuanh@google.com> HFP: Fix AG indicator update for Multi-HFP

* Keep AG indicator subscription when at least one HFP device is connected
* Respect AT+BIA commands by turnning indicator subscription on and off

Bug: 77655992
Test: make, HeadsetPhoneStateTest, HeadsetStateMachineTest
Change-Id: Ifa4a1c2f730b286f4f8d35fdec92e37f05f02b67
(cherry picked from commit 53f33f4b5221ca9ca9f41588b25861bfe300f3c7)
/packages/apps/Bluetooth/jni/com_android_bluetooth_hfp.cpp
67ccceab9600aaeec6dc34658c45c074de39aa38 28-Nov-2017 Jack He <siyuanh@google.com> HFP: Add support for Multi-HFP (1/2)

* Create one HeadsetStateMachine for each HFP/HSP device during the
following event:
- CONNECT request sent from API
- CONNECTION_STATE_CHANGED event from stack
* Use a HashMap to manage these state machines
* Removed synchronized label for methods in HeadsetService because state
machines are lazy initialized instead of being created in the
beginning
* Remove code in HeadsetStateMachine that used to deal with multiple
headset devices. Instead, move these logic to HeadsetService
* System state update is sent to one device at a time from the Java
layer and updates from HFP/HSP devices are synced among them
* SCO audio is restricted to one device at a time
* In-band ringtone is disabled when multiple devices are connected
* Audio paramters are device specific and are cached within each device's
state machine. It is only set to the audio framework in AudioOn state
* Reject connection request when number of connections goes above limit
* Added unit tests for HeadsetService to test multi-device scenario
* Add HeadsetObjectsFactory to ease mocking during unit tests

Bug: 68952570
Test: runtest -j40 bluetooth, native unit tests, HFP regression for 1
device, simple tests for multiple devices
Change-Id: Id22c5cbddfc4f9f95e35f035fcab6c4a5d797ebf
/packages/apps/Bluetooth/jni/com_android_bluetooth_hfp.cpp
1f7304a0df9fa7e1ccee0cd9a61933a0f9be3e8c 06-Jan-2018 Jack He <siyuanh@google.com> HFP: Add isInbandRingingEnabled() API (2/4)

* Use BluetoothHeadset.isInbandRingingEnabled() API to check whether
in-band ringing is currently enabled in the system when deciding on
audio routes for ringtone
* Implement this API in Bluetooth.apk by checking both:
1. Whether in-band ringing is supported on this platform
2. Whether in-band ringing is enabled by system properties
* The actual implementation may change in the future to reflect the
actual state of in-band ringing as the HFP stack evolves

Bug: 71646213
Test: make, toggle in-band ringing from Development Settings and observe
whether Telecom service tries to open SCO when there is an
incoming call

Change-Id: I8e41993632e0f42b5c65df7037d3eae4586b062f
/packages/apps/Bluetooth/jni/com_android_bluetooth_hfp.cpp
37bdea3793773250d6cfa7e8eff1065f159d3d2c 07-Dec-2017 Jack He <siyuanh@google.com> HFP: Add APIs for set and get active device (2/3)

1. Call BluetoothHeadset.setActiveDevice(BluetoothDevice device) to set
a connected HFP/HSP device as active.
2. Listen for BluetoothHeadset.ACTION_ACTIVE_DEVICE_CHANGED intent
that will contain the latest active device (in EXTRA_DEVICE field).
If the active device could not be changed, the EXTRA_DEVICE
field could be null.
3. If setActiveDevice() is NOT in-progress, BluetoothA2dp.getActiveDevice()
can be used. If setActiveDevice() is in-progress, the result is undefined.
4. BluetoothHeadset.setActiveDevice() could be called by some other parts of
the system, so interested parties should always listen for
BluetoothHeadset.ACTION_ACTIVE_DEVICE_CHANGED intents and prepared
for active device updates.

Bug: 68951996
Test: runtest -j40 bluetooth
Change-Id: I4471a35aa17f369bef49fbdb6f3ccaee393013b9
/packages/apps/Bluetooth/jni/com_android_bluetooth_hfp.cpp
f9a5f7d045fab365c03a4c6cf577b3e92bbfda07 15-Dec-2017 Jack He <siyuanh@google.com> HFP: Use objects for shared library interface and callbacks (2/2)

* Declare bluetooth::headset::Interface and
bluetooth::headset::Callbacks instead of using structs
* Rename methods into CamelStyle according to Google C++ style guide
* These classes can be mocked during test to isolate behaviors
* Replaced NULL with nulltpr
* Added more logging for connection and audio state callback in JNI

Bug: 70538124
Test: unit tests, testplans/135585
Change-Id: Ic62f143a5cd8c0f3f459d109d10b692a00d7a5af
/packages/apps/Bluetooth/jni/com_android_bluetooth_hfp.cpp
1c0b19d06b9dc40e8335c8332853333b2a678041 04-Dec-2017 Jack He <siyuanh@google.com> HFP: Add method to disable inband ringing through BSIR (2/2)

* Add sendBsir(boolean, BluetoothDevice) to turn
in-band ringtone feature ON and OFF dynamically during a service
level connection with a headset
* Added missing mutex lock in native interface as well

Bug: 70173881
Test: make
Change-Id: I5e0744367c07d0448c72ce15fa6f60ffbd5f4995
/packages/apps/Bluetooth/jni/com_android_bluetooth_hfp.cpp
b84959643bd2a986eb55f27e5d0c840728b18cee 07-Dec-2017 Jack He <siyuanh@google.com> HFP: Remove dead code in HFP profile

The following hidden API methods are not implemented by the stack and
should be removed:
- getBatteryUsageHint()
- acceptIncomingConnect()
- rejectIncomingConnect()

The following hidden API methods are no longer needed due to lack of
usage and should be removed:
- enableWBS()
- disableWBS()
- bindResponse()

Bug: 70336991
Test: make
Change-Id: I84c5555879597857a45f370d8de82d67cbd4e379
/packages/apps/Bluetooth/jni/com_android_bluetooth_hfp.cpp
0420b4fe3c7794139218821fab49f7f149d0075e 08-Nov-2017 Jack He <siyuanh@google.com> Extract dependencies for HeadsetStateMachine

* Isolated JNI native interface in a separate class
HeadsetNativeInterface so that is can be mocked when testing
HeadsetStateMachine
* Moved HeadsetStateMachine.StackEvent out as HeadsetStackEvent
* Restructured create(), start(), stop() and cleanup() methods in
HeadsetService to create looper from a handler thread instead of using
looper from main thread
* Added Javadoc to create, start, stop, and cleanup methods in
ProfileService

Bug: 69005831
Test: runtest -j40 bluetooth
Change-Id: I7f68f734281415290ca5ca7fab8b20a6ee4a59fc
/packages/apps/Bluetooth/jni/com_android_bluetooth_hfp.cpp
cb39925dbd2f38b2769f7b9ff4912627f500fe74 25-Jun-2017 Jakub Pawlowski <jpawlowski@google.com> Rename bt_bdaddr_t into RawAddress (2/3)

Test: compilation test
Change-Id: I8b334c77a96ea29d58b1e4cf176e0a941b74d2b9
/packages/apps/Bluetooth/jni/com_android_bluetooth_hfp.cpp
a86dc0fbdd99227e8ed07af1e3a9c11c1eb39e6f 19-Apr-2017 Zach Johnson <zachoverflow@google.com> Publish AG audio route policy to native layers

Bug: 32958838
Test: manual
Change-Id: I97ec6e38b4f3243548732d2af644d6f0ad894e97
/packages/apps/Bluetooth/jni/com_android_bluetooth_hfp.cpp
273651938dbc9bab838945f1524fb588699419c7 28-May-2017 Pavlin Radoslavov <pavlin@google.com> Add mutex-based protection mechanism to the HFP JNI layer

The protection mechanism is needed to avoid a race condition during
graceful cleaning up of the Bluetooth Handsfree Interface when Bluetooth
is disabled, and native upcalls like connection_state_callback()

Bug: 62116636
Test: manual
Change-Id: I6be4c0bd996beca5252e881c55279ea4f7503e7b
/packages/apps/Bluetooth/jni/com_android_bluetooth_hfp.cpp
6eac09b725ed509b26e8f49d8442426f7816953a 09-Nov-2016 Jack He <siyuanh@google.com> Check support for in-band ringing during HFP init

* Check in-band ringing support for this platform during HFP init

Bug: 19171297
Test: mm -j 40, HFP regression testing, testplans/82144
Change-Id: I5a90b2218b0dc15eb92f32bf9b4ed3ff3b01980b
/packages/apps/Bluetooth/jni/com_android_bluetooth_hfp.cpp
2116dbf94fbc00da999ac629c78627983f599a26 17-Mar-2017 Andre Eisenbach <eisenbach@google.com> Revert "jni: introduce ScopedBtAddr"

Causes crash on Fugu. Reverting for now until further investigation.

This reverts commit 2b233628767c0bf6ff21ae2acdeada8bea94e583.

Change-Id: I21daf6b75312695d7ccb83ae603aaeffc3c9e770
/packages/apps/Bluetooth/jni/com_android_bluetooth_hfp.cpp
2b233628767c0bf6ff21ae2acdeada8bea94e583 15-Feb-2017 Marie Janssen <jamuraa@google.com> jni: introduce ScopedBtAddr

ScopedBtAddr handles marshalling bt_bdaddr_t into jbyteArrays so we
don't have to. It also complains when it can't allocate things and
deletes the local reference when it goes out of scope.

Test: compiles, sanity tests with various profiles

Change-Id: I78a6364cc5cac0e8664d2d04388a6e2ac4c7a58f
/packages/apps/Bluetooth/jni/com_android_bluetooth_hfp.cpp
479b34835a560d032e211c3c27e10384af69c3b9 11-Oct-2016 Marie Janssen <jamuraa@google.com> jni: use ScopedLocalRef where possible

RAII simplifies code paths and eliminates errors.

Test: mma -j40, sanity testing on devices

Change-Id: I278f91445217c898a868b8328549c080d7123dbb
/packages/apps/Bluetooth/jni/com_android_bluetooth_hfp.cpp
dbd48b5fbeb449c31c92cbe8565db5e8f74c41e6 06-Dec-2016 Marie Janssen <jamuraa@google.com> JNI: clang-format code

Add clang-format file.
Add PREUPLOAD to check newly uploaded code.

clang-format --style=file jni/*.cpp

Test: mma -j37
Change-Id: I76bc67f7e69ac374f82d6c5d9745657f31dccdae
/packages/apps/Bluetooth/jni/com_android_bluetooth_hfp.cpp
ae15d3d42fcb3349c11d394423493020e78c5f43 30-Nov-2016 Marie Janssen <jamuraa@google.com> JNI: style cleanup

Beginning of style cleanup:
- no assigns in conditionals
- move declarations closer to first use
- replace __FUNCTION__ with __func__
- remove unnecessary gotos

Test: mma && manual sanity tests

Change-Id: I7f8fca01dd57f57538b71fe7d7753fffe1de4d00
/packages/apps/Bluetooth/jni/com_android_bluetooth_hfp.cpp
fe37710d689b7573ddeb901141db42c28b6cab39 12-Oct-2016 Marie Janssen <jamuraa@google.com> jni: Use RAII to manage callback environment

CallbackEnv is a new RAII object which:
- Retrieves the callback environment when instantiated
- Clears exceptions when it goes out of scope
- Centralizes checks that we are in the correct environment

It can be used the same as a pointer to JNIEnv with the -> operator and
the JNIEnv pointer can be retrieved with get();

Test: basic functionality tests
Change-Id: I004f2655e2e02847782fec794faa62da85c85d49
/packages/apps/Bluetooth/jni/com_android_bluetooth_hfp.cpp
003ef8ff43533b17d1b7f0d4d9c5eaf2fe3496bb 29-Feb-2016 Mudumba Ananth <ananthm%broadcom.com@gtempaccount.com> HFP 1.7 profile update (4/4)

-> Added HF Indicator support.
-> Sent a Broadcast intent upon receiving AT + BIND and
AT + BIEV Events with the required parameters
-> Support for sending +BIND response on indicator
status change

Bug: 19983867
Change-Id: I2580fc771080f1bc92fc4ddd5ca7c7cb57773183
(cherry picked from commit 2ab50a41dac634a78cef60a419c3bcc848c1aa78)
/packages/apps/Bluetooth/jni/com_android_bluetooth_hfp.cpp
7b0fee2bccb630e4b9f93ee29f474c7aa89a28f9 23-Feb-2016 Aurimas Liutikas <aurimas@google.com> Fix warnings in packages/apps/Bluetooth

Bug: 27301103
Change-Id: I5eec4610f64af4191f64e946122623b6fe222b92
/packages/apps/Bluetooth/jni/com_android_bluetooth_hfp.cpp
b6132733b6e386cc8c93b5598c72ed8efe04bf3e 28-Apr-2014 Matthew Xie <mattx@google.com> Add WBS support on Bluedroid (5/6)

Bug 13764086

Change-Id: Ib6c5d5f4321006ce1a35045907618abc417e6352
/packages/apps/Bluetooth/jni/com_android_bluetooth_hfp.cpp
69d4ca45a25e86823fbdb754ca6a3995f8131d59 15-Mar-2014 Nitin Srivastava <nitinsr@codeaurora.org> Multi HF support

1. Added support for Multi HF connections
in Bluetooth application.
2. All connection transition states for
2nd HS onwards is handled in new state-
MultiHFPending.
3. The changes are done to handle proper
state transition for all connected HS.

Change-Id: I033ae57943e50273f9d3cac4c5f8d1624cb9ee09
/packages/apps/Bluetooth/jni/com_android_bluetooth_hfp.cpp
ede67c26e7b2564ea35db6d9b3027a269c150e13 24-Oct-2012 Zhihai Xu <zhihaixu@google.com> License of files Bluetooth package is not updated to ASL2

bug 7385618

Change-Id: I338fd87083387706f3b5f410c9592219bb8a1acb
/packages/apps/Bluetooth/jni/com_android_bluetooth_hfp.cpp
976912e5f597f015754aa67f2a74040e27f58eab 23-Aug-2012 Syed Ibrahim M <syedibra@broadcom.com> Fix for BT crash during CPBR AT cmd processing

Delete the local reference of jstring objects during every callback
for unknown AT command and dial command after JNI calls the Java
methods.
Bug 7044655

Change-Id: I21792b95fbad37c488ec5a1a30521a5413192751
/packages/apps/Bluetooth/jni/com_android_bluetooth_hfp.cpp
c55a9837c004044051b71bb47182ace156691283 07-Apr-2012 Matthew Xie <mattx@google.com> replace logx with alogx

Change-Id: Iec82cb4545bb26a8aa55dc7d473247396b9fd6e1

Conflicts:

jni/com_android_bluetooth_hid.cpp
/packages/apps/Bluetooth/jni/com_android_bluetooth_hfp.cpp
e469f16e5a7d99471d7db1b216d422e8d12cc4cf 06-Jun-2012 Matthew Xie <mattx@google.com> matt: my fix to get it compile, change logx to alogx, and etc

Change-Id: I0b361ad6ba9a5f6ac4db9203a389ee309b04019a
/packages/apps/Bluetooth/jni/com_android_bluetooth_hfp.cpp
405b6148a168c05f9c9eac6a80db68b9a58392e2 27-Apr-2012 Sreenidhi T <nidhit@broadcom.com> Added AT+CPBR support

Change-Id: Ice860d8f97350d805a5478e94a27ae19cf42dafd
/packages/apps/Bluetooth/jni/com_android_bluetooth_hfp.cpp
bbbfba6398ac613896a4456fae1c9bf909c28bf2 18-Apr-2012 Ravi Nagarajan <nravi@broadcom.com> Handle the scenario where the phone number is empty. CLCC should not send number & type if number is NULL

Change-Id: I5a5bde4f1493d05f02ea9246e36b5d849e96bef2
/packages/apps/Bluetooth/jni/com_android_bluetooth_hfp.cpp
6654f5c903de510a70f9e72cd5ad7837b615d93f 12-Apr-2012 fredc <fredc@broadcom.com> Non persistent adapter service

Change-Id: I65e1c18e2899cea0a1e5c0102c4d24d39dce0249

Conflicts:

jni/com_android_bluetooth_hdp.cpp
jni/com_android_bluetooth_hid.cpp

Conflicts:

jni/com_android_bluetooth_hid.cpp
/packages/apps/Bluetooth/jni/com_android_bluetooth_hfp.cpp
676cb1bdd1c14c7af56562bab51f168e7f8f6d62 23-Mar-2012 Matthew Xie <mattx@google.com> Initial implementation of hdp service and jni

Change-Id: Ieca906080835098383cabbc13fa914363459f555
/packages/apps/Bluetooth/jni/com_android_bluetooth_hfp.cpp
93f548ff8560bdecdc4bdd2f91f7dacda1e6bbc3 21-Mar-2012 Kausik Sinnaswamy <kausik@broadcom.com> Caching callbackEnv in HFP/A2DP JNI results in the ENV going out-of-syn after an disassociate_evt/associate_evt sequence. Removed the caching.

Change-Id: Iebe3d2b3fa632c3332be82291bf32ace62c30ad5
/packages/apps/Bluetooth/jni/com_android_bluetooth_hfp.cpp
6c91bc0a163cc7600c40d7fb979777fd911d1ef1 17-Feb-2012 Matthew Xie <mattx@google.com> Initial implementation of HFP and A2DP profile/service/statemachine.

Change-Id: Ic6e6d358b94313f237b7be61b70dcc6f4f7902e7
/packages/apps/Bluetooth/jni/com_android_bluetooth_hfp.cpp