Commit Graph

369 Commits

Author SHA1 Message Date
Matthew Xie
484867a8ed Move Bluetooth remove service record handler to the app main thread
Move Bluetooth remove service record handler to the app main thread.
This removes the dependency of caller thread that constructs the
BluetoothAdapter singleton instance. The caller thread could stop while
BluetoothAdapter singleton exists but lose the handler context.
Make the BluetoothService.removeServiceRecord return quickly without
blocking on native call.
bug 4999443

Change-Id: I302534baa381f4aca8192e1e4a9ea21793b07ba6
2011-08-29 16:24:50 -07:00
Amith Yamasani
7b71e4586b Merge "Update searchables when packages are modified, in case they are enabled/disabled." 2011-08-23 13:34:48 -07:00
Amith Yamasani
13bc602b21 Update searchables when packages are modified, in case they are enabled/disabled.
Bug: 5198361 : SearchManagerService doesn't respond to package updates.
Change-Id: I2ac794c5da4769eadd6b860ab0f9123060d2a5e5
2011-08-23 12:11:35 -07:00
Matthew Xie
f9838d0bb9 Merge "Set bluetooth discoverable off at power on time if the timeout is no forever" 2011-08-23 10:54:07 -07:00
Matthew Xie
d96daf1ae5 Set bluetooth discoverable off at power on time if the timeout is no forever
Set bluetooth discoverable off at power on time if the discoverable timeout
is no forever
bug 5068151

Change-Id: I413e8de5f49030b741a8b84a566065d112ee60be
2011-08-22 19:45:48 -07:00
Jaikumar Ganesh
ef4f8f2c08 Fix sendConnection State intent api params.
Reported by: sj222.choi@samsung.com

Change-Id: I2e767b372bd5d9fa42d083a37e402a013388a3c2
2011-08-22 18:18:24 -07:00
Jaikumar Ganesh
cb1d354c1e Add Api to get profile connection state.
This gets the current connection state of the profile with respect
to the local Bluetooth adapter.

Change-Id: I7cff6c9201d29a8b45413cff7384b7483f21bd5c
2011-08-22 14:44:38 -07:00
Matthew Xie
116f7ee276 Merge "Change prepare bluetooth timeout from 7 seconds to 10 seconds" 2011-08-15 18:01:57 -07:00
Matthew Xie
25c4e2a803 Change prepare bluetooth timeout from 7 seconds to 10 seconds
It was observed that the preparing bluetooth could take up to 8 seconds before
the SD loaded event came in.

Change-Id: I722f94ed9cbd12bdd033ca405838366139c61383
2011-08-15 17:52:29 -07:00
Jaikumar Ganesh
89d55ad781 Fix stuck in pairing when BT is turned off.
When pairing is stuck, on turning BT off, we were
not setting the outgoing parining variable to null in
setBondState because of the extra check for isEnabled.

isEnabled check was added to prevent the proxy crash in
setProfilePriorities function. Proxies should never be null.
Add a safety check and also some extra logs to debug the problem.

Change-Id: I694dfeb8fa9426b3916775ca868c2313fa9c22ee
2011-08-15 16:41:08 -07:00
Matthew Xie
14e48e91f6 Implement switchConnectable with Powered property setting instead of scan modes
Bluez powered property setting is more apropriate for what this method intend to
achieve and it fixes a bug that incoming connection request wake up the stack in
The pairable events are replaced by power and discoverable events
HotOff state
bug 5080232

Change-Id: I43b44cb2f5203bd99bf764d5a1696e8ff52a31db
2011-08-15 11:31:54 -07:00
Matthew Xie
24c2d6bc82 Merge "Revert "Implement switchConnectable with Powered property setting instead of scan modes"" 2011-08-11 11:42:09 -07:00
Matthew Xie
10fc9bc55e Revert "Implement switchConnectable with Powered property setting instead of scan modes"
This reverts commit c5708036b4
2011-08-10 19:04:00 -07:00
Jaikumar Ganesh
d2344ce087 Merge "Check for BT state when sending Bond State Change intent." 2011-08-09 17:33:18 -07:00
Jaikumar Ganesh
bc85a087c9 Check for BT state when sending Bond State Change intent.
When users use application specific Bluetooth state changes,
and the bond state changes, we crash.

We need to recheck Bluetooth state in all functions and scenarios
and even maintain a per application pid Bluetooth state, but this fix
is quick fix for a problem.

Change-Id: I905dfb53965907ccb27757ff6ed1816536277f14
2011-08-09 17:18:29 -07:00
Matthew Xie
06ec66266c Merge "Implement switchConnectable with Powered property setting instead of scan modes" 2011-08-09 12:15:54 -07:00
Matthew Xie
c5708036b4 Implement switchConnectable with Powered property setting instead of scan modes
Bluez powered property setting is more apropriate for what this method intend to
achieve and it fixes a bug that incoming connection request wake up the stack in
HotOff state
bug 5080232

Change-Id: I1e29314041f082c1536b46f9707d17d463ae0fd7
2011-08-05 11:58:23 -07:00
Jaikumar Ganesh
32a1e19aba Merge "Provide address and name in BT Hot off state." 2011-08-05 11:37:22 -07:00
Jaikumar Ganesh
a66590ed78 Provide address and name in BT Hot off state.
Clients need this before BT is turned on.
Todo: If BT "hot" feature is off, read from system properties.

Change-Id: I266c2d4731cacde7a53c65e3d5fb43a2cbe29481
2011-08-05 11:34:06 -07:00
Jaikumar Ganesh
8c90038503 Merge "Fix PAN bug for reverse tethering." 2011-08-03 18:15:11 -07:00
Matthew Xie
cffb287b44 Merge "Add a timeout for disconnecting devices to recover from error situation" 2011-08-03 17:31:11 -07:00
Jaikumar Ganesh
b389bdfba2 Merge "Enforce permission for changeApplicationState function." 2011-08-03 17:20:52 -07:00
Matthew Xie
9a943a6420 Add a timeout for disconnecting devices to recover from error situation
Start the timer (3 second) just after calling disconnect devices.
If the timer expires, it indicates an error condition. we don't wait
on the ALL_DEVICES_DISCONNECTED event upon the error. Instead, get out of
switching state and turn off BT to reset out of the error condition.

Change-Id: I27aa8cd7b6fe50d9191e2d32fc2d6eac50424403
2011-08-03 17:08:55 -07:00
Jaikumar Ganesh
2cbb33c362 Fix PAN bug for reverse tethering.
We were the setting the iface as null while disconnecting
and so when disconnected the iface used was null - which would
lead to a crash. During connecting we don't know the interface,
so we use null.

Change-Id: I970f2f1886fa32237936eff439c359187a798832
2011-08-03 16:42:55 -07:00
Jaikumar Ganesh
f5fb6c8ce3 Enforce permission for changeApplicationState function.
The ADMIN permission is for use cases where we want to manage BT connection
at a deeper level. So just the Bluetooth permission is good enough here.

Change-Id: Iddd038fe9f9a26f155b4edc9484ba1fe27b178ba
2011-08-03 15:00:07 -07:00
Jaikumar Ganesh
adcea06113 Merge "Fix PAN bugs." 2011-08-03 11:16:18 -07:00
Jaikumar Ganesh
e3b79ca1b9 Fix PAN bugs.
1. The interface was null for reverse tethering.
2. When disconnecting the server, we were passing the address instead of the
interface.

Change-Id: I6004cdf1eed000211cddc6b120e0aded5758eb1e
2011-08-03 09:15:41 -07:00
Matthew Xie
4376b7f2d7 Merge "Move mBluetoothService.runBluetooth after broadcasting the STATE_ON intent." 2011-08-02 15:44:28 -07:00
Matthew Xie
8594394aad Move mBluetoothService.runBluetooth after broadcasting the STATE_ON intent.
This is because broadcastState method move the Bluetooth adapter state
to ON. The mBluetoothService.runBluetooth should be called only in the ON state.
Remove mIsDiscovering variable in BluetoothService.
Fix a bug in BluetoothA2dpService that caused 2 times of state change
from DISCONNECTED to CONNECTING that messed up BluetoothService's
connection state count.
Change-Id: Ifb782a845ae70f007d2e036d930bb55f445d68b5
2011-08-02 15:22:09 -07:00
Jaikumar Ganesh
bbd8675057 Fix tethering using BT.
1. Since Input device runs in Bluetooth Service, avoid the proxy call.
2. Accept or reject incoming tethering connections.

This broke because of incoming connection request change for phonebook, HID,
A2DP.
Change-Id: Ia8c537bb79e4dbc66cfb6b23dcad4f99dbf950b3
2011-08-02 10:31:26 -07:00
Matthew Xie
6903a7de88 Merge "Provide an API to set the friendly name of a remote device." 2011-07-28 17:46:45 -07:00
Matthew Xie
269e81a563 Provide an API to set the friendly name of a remote device.
BluetoothDevice setName overwrite the locally cached remote name.
The changed name is saved in the local storage so that the change
is preserved over power cycle.
bug 5081605
Change-Id: I486966033828d153bfb1076a99e274c8a7f41636
2011-07-28 15:56:11 -07:00
Jaikumar Ganesh
ef2cb7c93a Add ability to turn BT on / off on a per application basis.
This changes adds an API for system applications
to enable bluetooth without all the side effects like
auto connection to headsets etc.

Also some tweaks to the adapter state machine

Change-Id: Ib9f22d548a26d72334b300101c8eb0d80f08a4bb
2011-07-26 14:49:36 -07:00
Matthew Xie
184dd03c81 Merge "Keep Bluetooth module hot to quickly swith it on/off" 2011-07-25 11:14:25 -07:00
Matthew Xie
7f9ecca8f2 Keep Bluetooth module hot to quickly swith it on/off
Add BluetoothAdapterStateMachine to maintain a inter state machine other than
the public BluetoothAdapter states. This is a improvement to BluetoothService
code. 2 internal state are added, LoadingFirmware and FirmwareLoaded to place
the Bluetooth module in a ready-to-switch-on state so that it can be quickly
switched on to have a better user experience
bug 5021787

Change-Id: Ia352e88cba509d9e98c900f85e7479f8cee1de5e
2011-07-25 10:53:06 -07:00
Jaikumar Ganesh
1352531dc7 Merge "Auto Pairing tweaks." 2011-07-21 16:27:55 -07:00
Jaikumar Ganesh
8adcacbf83 Auto Pairing tweaks.
When the stack returns an incorrect error code, we were going on
in a loop trying auto pairing. Ideally, the stack shouldn't be returning
this incorrect code, but add a fail safe in the userspace code.

Also cap attempts at 2. There is no point trying more than that.

Change-Id: I5bf3ea871b9c2241ae5ac88e9818c9eb847fac92
2011-07-21 13:52:15 -07:00
Jaikumar Ganesh
d3728cb32f Incoming connection dialog tweaks.
Don't show incoming connection dialog when the device shows
the pairing dialog - this means that the device has already been
trusted by the user.

Change-Id: I98a9f56528f6b62d0f824bbc7612aaa0077ba1e6
2011-07-20 13:44:35 -07:00
Jaikumar Ganesh
b85f49e2a4 Merge "Remove Car audio class from auto pairing." 2011-07-14 10:08:41 -07:00
Jaikumar Ganesh
31d6e440f9 Remove Car audio class from auto pairing.
Majority of the cars don't auto pair unlike headsets, as they have a display.
Instead of maintaining a blacklist of such cars, disable
auto pairing with 0000. This is legacy anyway as newer cars
come with 2.1 pairing.

Change-Id: I644e2da4d11cf2d250d846853523d7975ca000fc
2011-07-14 09:26:02 -07:00
Jaikumar Ganesh
60b4d2a2bd Add REGISTERED_BEFORE_BOOT flag to intent.
Add the flag to Connection state changed intent because
external devices can get connected before booting is complete.

Change-Id: I5bed7a4aa75a42d6facc16aac4f2734e4b5fe246
2011-07-12 14:35:55 -07:00
Jaikumar Ganesh
5623b07497 Merge "Bluetooth Health APIs" 2011-07-11 14:17:57 -07:00
Jaikumar Ganesh
fb658c72a3 Bluetooth Health APIs
1. Remove the check of configs in BluetoothHealth.
   This check is useless since BluetoothHealth is a proxy.

2. Add a wrapper and a callback class. We shouldn't expose
   Binder interfaces as public APIs.

Change-Id: If62620b4251cf93f3f97d2fe63099e40fae7da4d
2011-07-11 11:32:27 -07:00
Matthew Xie
a0c680393f Incoming Bluetooth Connection requests - dialog.
This sends the intents to the Settings app to show
the dialogs for the incoming connection requests.
Includes down merged contributions from Jaikumar Ganesh.

Change-Id: Ic8b857aad3554315aae39a0e871eb94d0ac98a91
2011-07-07 12:43:27 -07:00
Jake Hamby
24ca01d262 Fix IllegalStateException when A2DP connects before boot completes.
Under some circumstances, the broadcast intent
BluetoothA2dp.ACTION_CONNECTION_STATE_CHANGED can be sent before
the system is ready, triggering an IllegalStateException,
"Cannot broadcast before boot completed" and runtime crash.

Fixed the race condition by adding the
Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT flag
to the broadcast intent. All system receivers of this intent
are registered with registerReceiver() rather than as components in
the manifest, so nothing should change in the event that the A2DP
connection state change is broadcast before boot completion.

Any apps that define a receiver for either
BluetoothA2dp.ACTION_CONNECTION_STATE_CHANGED or
BluetoothA2dp.ACTION_PLAYING_STATE_CHANGED in their manifest
will not receive these broadcasts in the case where they are sent
before the system has finished booting. Normally, user applications
should not care about these events anyway and should let the audio
manager take care of audio routing on their behalf.

In the event that an app does care about A2DP state changes, it
should either register for these intents with registerReceiver(),
or it can add an intent filter for ACTION_BOOT_COMPLETED and
test the state of Bluetooth and A2DP at that time. Apps which
care about the state of the Bluetooth adapter should do this also,
because BluetoothAdapter.ACTION_STATE_CHANGED is already being sent
with FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT.

Bug: 4982088
Change-Id: I10e55713f9d07d6dc88b4480b45b1aeb3aaf170b
2011-06-30 19:40:21 -07:00
Matthew Xie
3e65551028 Merge "Method setBondState passes its parameter reason to mBondState.setBondState." 2011-06-29 11:33:58 -07:00
Narayan Kamath
ee69ff4eae Make the system global search provider a user setting.
Also, modify Searchables / SearchManagerService to
honour the setting when it's set.

Change-Id: Ia63351fff4fe28ee79ac8b9e30fdb8edc43f5534
2011-06-28 15:30:49 +01:00
Jaikumar Ganesh
c73dd732c9 Fix crash while device is pairing / unpairing.
When there are no paired devices, pairing a new device
will cause a crash since the profile proxies will be null.

Change-Id: Ie1a9fd198e46d7e9cc2ba1b2f3a806b3c709f568
2011-06-27 17:55:32 -07:00
Jaikumar Ganesh
c9286ebbf4 Merge "Implement APIs for Bluetooth Health profile." 2011-06-24 11:34:35 -07:00
Jaikumar Ganesh
2ea1e85dcb Implement APIs for Bluetooth Health profile.
This first patch implements all the APIs.
The APIs wil be made public soon. The data specification
API will be submited in another patchset.
Change-Id: I2462683b7e07380e2c42474b0036b34d03b4bed1
2011-06-24 11:31:43 -07:00