Commit Graph

211 Commits

Author SHA1 Message Date
Jaikumar Ganesh
5844f1d357 Check for state before disconnecting.
This is a race condition exposed after we turned off some STOPSHIP
logging and some other logging. We drop the ACl connection after 2 secs
of inactivity and hence the device didn't exist -> DBUS crash.

Bug: 3097224
Change-Id: I90adbbee2c5793924037685e484027ed5cd2e0d0
2010-10-14 12:33:16 -07:00
Jaikumar Ganesh
c008ca96bb Merge "Work around for errant headsets." into gingerbread 2010-10-13 16:44:17 -07:00
Jaikumar Ganesh
70a053bf1b Work around for errant headsets.
1. Some headsets send an AVCTP connection before an AVDTP connection
When that AVCTP connection fails, we get stuck in IncomingA2DP state
because we don't handle AVCTP signals for now.
We need to handle the signals and fix it better.

2. Also when ACL gets disconnected, reset state i.e
when the low level connection disconnected reset our state.
This is like a fail safe in case we get stuck.

Bug: 3051490
Change-Id: Ibcf188103999ffb1e08c36c2554504c639fb7f50
2010-10-13 16:38:28 -07:00
Jaikumar Ganesh
bcf5cf47ed Fix auto connection priority handling.
Bug: 3027023
1. user is connected to a headset. Headset is turned off.
2. User connects to another device. The priority of the first
   headset must be set to ON. We only have 1 device set at AUTO_CONNECT
   priority.

1. A remote headset sends an incoming connection. Don't set
   AUTO_CONNECT till its gets connected.
2. For outgoing connections, set it to AUTO_CONNECT in Connecting state
   since the user initated this connection.

Change-Id: Iaa211bf22b1fd99850875f7eda686c47142173ba
2010-10-12 16:42:45 -07:00
Jake Hamby
f51eadaf1f Typo fixes in comments and minor code cleanups.
* Fix some typos in Javadoc and log messages.
* Remove redundant initializer in BluetoothAdapter.readOutOfBandData()
* Use canonical "UTF-8" charset name instead of "UTF8" in
    BluetoothDevice.convertPinToBytes()

Change-Id: I58cd5dc48a7ad0053d204c5f590b4b3d438d8672
2010-09-30 15:43:34 -07:00
Jaikumar Ganesh
2dfe101149 Update local cache before sending intent.
Change-Id: I0e016cae3070b1811dd68958afb8a8501081097d
2010-09-29 10:31:02 -07:00
Jaikumar Ganesh
a224f70b1e Fix interaction between BluetoothEventLoop and BluetoothService.
BluetoothEventLoop primarily handles event notifications from Bluez.
It should know innards of Bonding and especially BondState.
BondState class and BluetoothService call into each other.
When BluetoothEvent loop gets the handle to BondState it leads
to deadlocks and ANRs.

Change-Id: I785c57f6246c1288350d26d4acb87d879b27a5f9
2010-09-13 21:58:10 -07:00
Jaikumar Ganesh
cc5494c999 Out Of Band API for Secure Simple Pairing.
Change-Id: I54ded27ab85d46eef3d2cca84f2394b1ffe88ced
2010-09-13 11:40:21 -07:00
Henrik Backlund
4226415bd9 Fix to get A2DP to connect after unpairing
In this fix, A2DP profile will be connected when pairing with a
previously paired headset. The reason for this error was that the
connection of the A2DP profile was sent before the callback
onCreatePairedDeviceResult was receied in BluetoothEventLoop.java.
By not going to the state BOND_BONDED until after this callback has been
received, the problem is fixed. However the use case is different if the
pairing is initiated by the remote device. In these cases state
BOND_BONDED will be set when onDevicePropertyChanged instead.

Change-Id: I5dedca87d0a6872705ff3a933a99cce6eb37618a
2010-09-09 10:19:55 -07:00
Brad Fitzpatrick
66fce5068a Renaming SharedPreferences$Editor.startCommit to apply
Also removes the artifical restriction that only one apply() can be in
flight at once.  That was old from when I thought it'd end up being
required, but wasn't.

Change-Id: I3540ea8be6e0760d6a51d218186f71655c2f3f55
2010-08-30 18:10:49 -07:00
Brad Fitzpatrick
333b8cba99 SharedPreferences$Editor.startCommit()
Adds a fire-and-forget save method (startCommit) to the
SharedPreferences.Editor, which is the way most people use it anyway.

This commit adds the implementation.  The previous commit added the
interface and docs:

   previous change: Idf9934b445da1fb72b79f0192218b47c0a7f5a34
        git commit: edf32d0131

In addition, this change:

-- adds a generic "runPendingWorkFinishers" mechanism to
   ActivityThread to wait on async operations that are still
   in flight and use it for this.

-- ties runPendingWorkFinishers into Activity.onPause,
   BroadcastReceiver, and Service.

-- makes sSharedPreferences keyed on name, not File, to avoid
   unnnecessary allocations

-- documents and guarantees what thread
   OnSharedPreferenceChangeListener callbacks run on

-- makes a few things in frameworks/base use startCommit(), notably
   Preference.java (which was ignoring the return value anyway)

Change-Id: I1c8db60ad45643226fe6d246d3e513eeb7bd0ebd
2010-08-27 09:10:11 -07:00
Danica Chang
7a9de8b425 fixed parsing issue in BluetoothService so that it parses the UUID property correctly
Change-Id: If46fd3ae1a0e6393cd47a8f0dc913cef45e05441
2010-07-19 10:03:13 -07:00
Jaikumar Ganesh
f1048cdb68 Serialize all commands for a particular profile.
Change-Id: I843ea9ab0bb2372c8316e99e8c083a9939ad774a
2010-06-07 14:08:38 -07:00
Jaikumar Ganesh
740e39be6a Pass BluetoothDevice to the Bluetooth Headset calls.
This is to support multiple headsets at the same time, atleast
at the framework level.

Change-Id: I91d05c6c2828c9a09d00806d5e79f1e9c9c7cf84
2010-06-02 16:03:51 -07:00
Jaikumar Ganesh
9b637e5985 Add a new state machine for handling the incoming / outgoing profile
connections.

Change-Id: I5fc9170b5e24c4a52a6f2ef4ca7a8bac65271941
2010-06-02 16:03:45 -07:00
Bjorn Bringert
b6179a7069 am 0c698e6e: am c9dc1090: Merge "Build searchables list after boot" into froyo
Merge commit '0c698e6e78a897d9ad14d802ccff2f2bda15b14b' into kraken

* commit '0c698e6e78a897d9ad14d802ccff2f2bda15b14b':
  Build searchables list after boot
2010-05-04 18:30:47 -07:00
Jaikumar Ganesh
c0cec62454 Fix runtime reboot when connecting to a A2DP headset and
user toggles BT state.

Bug:2607218

This happens when Bluetooth is turned off, and when the headset is
still trying to connect. We get the connection result of
attempt before Bluetooth was toggled. We need to ignore this result.

Change-Id: Icf0abeb3dfc794bb3371b1c427aa15755fbe84c7
2010-05-04 15:56:11 -07:00
Jaikumar Ganesh
9997f66f62 Revert "Fix runtime reboot when connecting to a A2DP headset and"
This reverts commit 55b0110fc2.
2010-05-04 15:52:42 -07:00
Bjorn Bringert
2c7b197a4a Build searchables list after boot
This avoids delaying the first launch of QuickSearchBox or Browser
after boot while SearchManagerService builds the searchables list.

Bug http://b/issue?id=2639863

Change-Id: Ia510204691ecf487a2008723fe8f6caaced86618
2010-05-04 23:49:24 +01:00
Jaikumar Ganesh
55b0110fc2 Fix runtime reboot when connecting to a A2DP headset and
user toggles BT state.

Bug:2607218

This happens when Bluetooth is turned off, and when the headset is
still trying to connect. We get the connection result of
attempt before Bluetooth was toggled. We need to ignore this result.

Change-Id: I023406ec6d59880754ca4f1de676d0dce71b13c6
2010-05-04 15:28:27 -07:00
Jean-Michel Trivi
4c637b9e34 Fix bug 2578813 Delay pausing music and routing audio for car docks
Moved broadcast of ACTION_AUDIO_BECOMING_NOISY from BluetoothA2dpService
to AudioService.
Broadcast ACTION_AUDIO_BECOMING_NOISY when disconnecting an A2DP
device.
Disconnect from A2DP docks with a delay to handle transient
disconnections.
Cancel delayed A2DP disconnections when connecting to a dock as this
can be a reconnection after a transient disconnection.

Change-Id: I1ee9e99f3ffa20727af38a4c4c8711942894a696
2010-04-13 09:44:08 -07:00
Jaikumar Ganesh
4aae54cf29 Don't allow connection to profiles in TURNING_OFF state.
A similar change will be made for other profiles.
Bug: 2577713

Dr No: jsh/eastham

Change-Id: Ifca0fbb108e705acefbaeabff07fad83c08f7baa
2010-04-07 17:28:08 -07:00
Jaikumar Ganesh
0e09030977 Relax the requirement of making a DBUS call for creating the Bluez Device.
Bug: 2136464

When the bluez device is created, we get the onDeviceCreated signal.
We add it to our  cache when that happens. We can have a device created
even when its not bonded - as a result of OPP. So use this cache to avoid
a DBUS call to Bluez.

Change-Id: I9465da7d72a12a6888128ff40ac1fe598cbae3c3
2010-03-30 10:23:55 -07:00
Jaikumar Ganesh
b7e029d03c Add an API to set the link timeout.
This fixes the problem where the car dock is
powered on and off pretty quickly.

Change-Id: I8724641b8c337019f089b005cb236fc90549cf6f
2010-03-09 16:51:09 -08:00
Jaikumar Ganesh
081a9b69a7 Remove UUIDs from the cache when the device is unpaired.
This fixes one probable case of A2DP profile connection state hanging
in connecting state. When the device is unpaired and repaired,
before the drivers are up on the bluez side, settings app / auto-connect
code can try to connect.
2010-03-02 17:19:20 -08:00
Jaikumar Ganesh
80d27ad33c Merge "Move auto pairing data to a file, add values dynamically." 2010-02-25 19:39:58 -08:00
Jaikumar Ganesh
c06fe59cb5 Move auto pairing data to a file, add values dynamically. 2010-02-25 18:23:38 -08:00
Bjorn Bringert
ab5d96c5da Use PackageMonitor in SearchManagerService
This should reduce the number of updates to the searchables
list if multiple packages change at the same time.

Fixes http://b/issue?id=2270711

Change-Id: Ieb930022866aa2872f8df1af677e3ea1645349bf
2010-02-23 22:48:46 +00:00
Bjorn Bringert
6cf7a325e6 Clean up global search and web search activity finding
This removes the '*' value for android.app.searchable and
android.app.default_searchable that was previously used by apps to say
that they want global search as their search. I think the only
activity that this will affect is the wallpaper chooser in the
launcher, which doesn't seem like it matters.  It could mean that some
third party code will stop invoking global search, but all they would
need to do is call startSearch() with globalSearch=true instead.

Fixes http://b/issue?id=2377433 and http://b/issue?id=2377429

Change-Id: I0252952b44ae85dab31221b598ed79cc24e2b580
2010-02-23 14:27:43 +00:00
Kenny Root
5f61416305 Add hashCode() to BluetoothService$RemoteService
RemoteService is used as a key in a HashMap, so it should have a
hashCode()

Change-Id: I69b72991474f4d5ec11c0620a6e66eb0c44d04b6
2010-02-17 12:01:52 -08:00
Jaikumar Ganesh
4f773a1304 AVRCP volume controls for the docks.
Send volume updates to the dock when the user presses volume buttons
on the device.

Bug: 2311007
2010-02-16 13:21:05 -08:00
Suchi Amalapurapu
b56ae20b22 Rename media resource broadcasts
Add checks for fwdlocked and updated system apps
add more tests
remove duplicate adds
2010-02-08 14:52:25 -08:00
Suchi Amalapurapu
08675a3376 Apps on sdcard: Add new broadcasts
Add new broadcasts ACTION_MEDIA_RESOURCES_AVAILABLE and
ACTION_MEDIA_RESOURCES_UNAVAILABLE that get broadcast by
PackageManagerService when sdcard gets mounted/unmounted
by MountService so that packages on sdcard get recognized by
various system services as being installed/available or
removed/unavailable by the system.
The broadcasts are sent before the actual package cleanup which includes
mounting/unmounting the packages and we force a gc right after so
that any lingering file references to resources on sdcard get
released.
2010-02-02 18:33:29 -08:00
Amith Yamasani
e9ce3f01d4 Move Search dialog out of system process into current activity.
SearchManager now manages the SearchDialog, in-process.
Nuked SearchDialogWrapper
SearchManagerService now just holds the Searchables information.
Hitting Search when in the local Search dialog will launch the QSB.
2010-01-27 12:16:45 -08:00
Jaikumar Ganesh
1f3856c446 am 495d820c: am ccaebfc9: Don\'t set priority in Bonding state. This was causing A2DP get connected for Car Docks, when user didn\'t select it.
Merge commit '495d820c0124a811b9352b93ce4fe88c716f259d'

* commit '495d820c0124a811b9352b93ce4fe88c716f259d':
  Don't set priority in Bonding state.
2010-01-11 14:23:18 -08:00
Jaikumar Ganesh
ccaebfc942 Don't set priority in Bonding state.
This was causing A2DP get connected for Car Docks, when user didn't select it.

Bug: 2364328
Dr No: Eastham
2010-01-11 14:16:29 -08:00
Eric Laurent
84b42b8368 am d31d7397: am 663ec308: Fix issue 2361949: A2DP suspend parameters set wrongly.
Merge commit 'd31d7397ba26dcd913e96d06f0a8fd593780d629'

* commit 'd31d7397ba26dcd913e96d06f0a8fd593780d629':
  Fix issue 2361949: A2DP suspend parameters set wrongly.
2010-01-08 16:28:21 -08:00
Eric Laurent
663ec30880 Fix issue 2361949: A2DP suspend parameters set wrongly.
Move reset of A2DP suspend state from handleSinkStateChange() in BluetoothA2dpService to
BluetoothA2dp.ACTION_SINK_STATE_CHANGED intent receiver in AudioService.
Previous implementation could cause a false reset of suspend state if a new sink attempted to
connect while A2DP was suspended.
New implementation only resets A2DP suspend state when a new sink is actually connected.
2010-01-08 08:48:18 -08:00
Jaikumar Ganesh
1ee5ceb92d am 2790b20c: am 0b6c6f2c: Merge "Fix media option settings for A2DP." into eclair
Merge commit '2790b20c537b33dbf366436f6d27776148ded490'

* commit '2790b20c537b33dbf366436f6d27776148ded490':
  Fix media option settings for A2DP.
2010-01-07 09:22:04 -08:00
Jaikumar Ganesh
6309689e6c Fix media option settings for A2DP.
Incoming connections move the A2DP state to Connecting
before getting authorized, which messes up the priorities.

Dr No: Eastham
Bug: 2358414
2010-01-06 11:43:10 -08:00
Jeff Sharkey
44303922f1 Watch for "bluetooth" in list of toggleable radios.
Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS is a list of
radios that can be toggled while in airplane mode.  This
change adds logic to BluetoothService to allow enabling
when Settings.System.RADIO_BLUETOOTH appears in that list.

Fixes http://b/2297314
2009-12-22 14:32:15 -08:00
Jaikumar Ganesh
987c415c83 am f5d2eec4: am 11b97c50: Merge change I551ed729 into eclair
Merge commit 'f5d2eec4fd530ac09ce1f8d2e51ea29b5cd12a38'

* commit 'f5d2eec4fd530ac09ce1f8d2e51ea29b5cd12a38':
  Use UNDEFINED priorities when unpaired.
2009-12-21 14:22:47 -08:00
Jaikumar Ganesh
b58938a0ae am 1aa25597: am 87ed10d7: Merge change I577dd1f3 into eclair
Merge commit '1aa2559797d49fa0c6cf7885c9fed5797e42231f'

* commit '1aa2559797d49fa0c6cf7885c9fed5797e42231f':
  Accept incoming connections if no other sink is in NonDisconnecting state.
2009-12-21 14:22:37 -08:00
Android (Google) Code Review
11b97c50e6 Merge change I551ed729 into eclair
* changes:
  Use UNDEFINED priorities when unpaired.
2009-12-21 14:17:15 -08:00
Jaikumar Ganesh
577dd1f3e2 Accept incoming connections if no other sink is in NonDisconnecting state.
Bluez sends SINK_STATE_CHANGE before onAgentAuthorize, so
we may be already in CONNECTING state. This will happen with
some A2DP kits which don't like us connecting and thus we will
never be able to connect to them.

Bug:2335345
Dr No: Hiroshi
2009-12-17 15:08:48 -08:00
Jaikumar Ganesh
c0e32f1243 Add a callback for the ConnectSink Call.
This takes care of the conditions where the bluez audio drivers
are not up and we try to make the call to connect the sink.
This would get rid of the hack in Settings app.
2009-12-16 11:42:06 -08:00
Dianne Hackborn
1c633fc89b Implement API to have new broadcasts replace existing broadcasts.
Use this in various places where it should serve no purpose to deliver
both broadcasts.  This is intended to reduce somewhat the flurry of
broadcasts that we churn through during boot.
2009-12-14 15:03:35 -08:00
Dan Egnor
b7f0367cec Eliminate CrashData and friends.
(CrashData was a custom-marshalled crash-info class used for a server crash
reporting system I am deprecating).  Use ApplicationErrorReport.CrashInfo
instead to report crash details (mostly the stack trace) from RuntimeInfo to
ActivityManagerService, since we're likely to need the crash information in
that form anyway.

Remove the (long-disabled) flags and support for the "Debug" button
in the crash dialog.

Further gut the ICheckinService interface by removing the crash-reporting
APIs (and everything that calls them), plus the synchronous checkin()
method (which has been stubbed out for a while now).

A new dropbox-based crash reporting system is in the works, but not part
of this change.
2009-12-11 13:27:04 -08:00
Jaikumar Ganesh
551ed72940 Use UNDEFINED priorities when unpaired.
For the docks, we can set if a device is preferred or not
before pairing process. This was getting overridden when we pair.
This problem doesn't happen with normal headsets.

Dr No: Eastham
Bug: 2318290
2009-12-11 12:00:31 -08:00
Jaikumar Ganesh
368c332ddc am f6e32e72: Merge change Icced7a09 into eclair
Merge commit 'f6e32e72a902d9a309410bc5306a539ea850159f' into eclair-mr2

* commit 'f6e32e72a902d9a309410bc5306a539ea850159f':
  Maintain a list of all Bluetooth docks.
2009-12-10 17:40:53 -08:00