Commit Graph

317 Commits

Author SHA1 Message Date
Jaikumar Ganesh
78ff1a658b Get the profile proxies after the BT Service is up.
Trying to get the profile proxies before service is up will
cause a NPE.

Change-Id: I604041d6823775abbc2fe10794afaac83d6827ce
2011-06-22 16:55:32 -07:00
Jaikumar Ganesh
1349030755 Merge "Fix crash during unpair." 2011-06-21 11:44:32 -07:00
Jaikumar Ganesh
f7bc4bd13d Fix crash during unpair.
Change-Id: I8901abbbb6593b78fb5df93ab5d0085b32b6ba94
2011-06-21 11:41:00 -07:00
Jaikumar Ganesh
337b27985a Merge "Fix failure of Opp." 2011-06-21 11:37:47 -07:00
Jaikumar Ganesh
421f010108 Fix failure of Opp.
Needed due to upgrade of the Bluez stack, we can now
depend on just called createDevice.

Change-Id: I9c547d2ca3ee275365a22447641199eeaf807eac
2011-06-21 11:36:19 -07:00
Jaikumar Ganesh
f8789167e9 Refactor Bluetooth Profile.
Move connect / disconnect / set and get priority
functions down the interface as they are not generic enough
for all profiles.

Change-Id: I2656e1bdbc8046c53bb0dfbd9172f5f10b57aa7d
2011-06-14 21:29:52 -07:00
Jaikumar Ganesh
35bfcbb9ab am e2271a55: am d7030e55: am 198ed3e4: Merge "BT: Wrong publishing result of bonding error code."
* commit 'e2271a55ad67f766a6a47239d1a3f7319a1e7b2e':
  BT: Wrong publishing result of bonding error code.
2011-05-21 21:35:16 -07:00
Jaikumar Ganesh
e2271a55ad am d7030e55: am 198ed3e4: Merge "BT: Wrong publishing result of bonding error code."
* commit 'd7030e551aa99ed9f533d46de5f3443ceb4c5703':
  BT: Wrong publishing result of bonding error code.
2011-05-20 14:52:27 -07:00
Jaikumar Ganesh
6003fe9af0 Improve locking granularity for PAN and Input.
Long term, all this needs to be converted to a state machine.

Change-Id: I757a04994cd04e490a632b433e62b00a23880638
2011-05-17 15:10:00 -07:00
Arek Lichwa
ae5fbb0b43 BT: Wrong publishing result of bonding error code.
During bonding bluez stack publish the error code over dbus.
JNI gets the error, in this ER case:
org.bluez.Error.AuthenticationFailed (Authentication Failed),
and then wrong call to overloaded setBondState() is made on
callstack using default result code parameter as 0 (BOND_SUCCESS).

Change-Id: I6f743cedc76e63d0c2a35e89d3aa48267b89c06e
Signed-off-by: Christian Bejram <christian.bejram@stericsson.com>
2011-05-05 10:41:25 +02:00
Matthew Xie
68344047b0 Merge "Set service priority of A2DP and Headset from BluetoothService via IPC call" 2011-04-06 15:26:23 -07:00
Matthew Xie
abc3642d6c Set service priority of A2DP and Headset from BluetoothService via IPC call
We used to do the priority change in the 2 services after the broadcasted
intent reach them. But that left a small time gap that could reject
incoming connection due to undefined priorities.

Bug 4096186

Change-Id: I9bb6aedc7ed98c53a9b00c48eedd20b0cf5f1660
2011-04-06 12:22:55 -07:00
Brian Carlstrom
b32b1ddf72 Fix usages of PopLocalFrame to include returned local reference
Change-Id: Ibd7a37b4035862718cb625110cfbba741537c17a
2011-04-05 15:20:52 -07:00
Robert Greenwalt
7e48e76cab Merge "Start using NetworkUtils.numericToInetAddress." 2011-03-02 12:10:51 -08:00
Robert Greenwalt
e590373ea7 Start using NetworkUtils.numericToInetAddress.
Generates InetAddresses without risking an accidental dns lookup.  For use with supposedly
numeric-only ip address strings.

Change-Id: I694f3976ce1c6382854706f6557ea88a289add3a
2011-03-02 11:37:32 -08:00
Dianne Hackborn
d752c3b3e6 Merge "Implement issue #3426299: Introduce application "stopped" state" 2011-02-25 16:15:27 -08:00
Dianne Hackborn
e7f972122d Implement issue #3426299: Introduce application "stopped" state
The package manager now keeps track of whether an application is
stopped.  There are new intent flags to control whether intent
filters in a stopped application will match the intent.  This is
currently used in one place, sending broadcasts, so that stopped
apps can not be launched due to background processes.

The package manager during first init makes sure no applications
are in the stopped state.  When new applications are installed,
that begin in the stopped state.  When the activity manager is
launching a component of an application, it ensures the application
is taken out of the stopped state.

The "force stop" button in manage applications will now put an
application back in to the stopped state; it can't go back out
of the stopped state until one of its components is launched by
the activity manager.

There will probably be a few more places where we need to filter
stopped applications out of intent matches, but doing this for
broadcast is a very big first step.

This also introduces a new broadcast that is sent to an application
after it is replaced with a new .apk.  But only if the app is not
in the stopped state.  This makes it a lot easier for developers to
implement code to get their application back in proper running shape
after an upgrade.

Finally another new broadcast is added that is sent to a package's
installer at the first time it is launched.  This allows the installer
to tell the package about it being installed only when it is first
actually used.

Change-Id: I589c53ff0e0ece868fe734ace4439c0d202dca2d
2011-02-25 14:46:27 -08:00
Jaikumar Ganesh
cc2c06656c Unset device trust state before unpairing.
a) Device is trusted.
b) Device is unpaired.
c) We need to set the trusted value before unpairing.

Else on the next pairing, the device will be trusted automatically
and we will not show the PBAP authentication dialog.

Change-Id: I8d7c962688885885d37be341e5494069294eb392
2011-02-25 14:16:27 -08:00
Jake Hamby
9a62c9cd65 Refactor android.server.BluetoothService classes.
Several cleanups to BluetoothService:
- Move BluetoothService.BondState inner class to top level.
- Extract adapter and remote device properties cache management
  logic into two new classes: BluetoothAdapterProperties and
  BluetoothDeviceProperties.
- Add getter methods for other classes in the package to access
  the new properties cache objects for multi-part operations.
- Inline log() method in BluetoothService and selected the
  appropriate Log method (Log.d, Log.w, Log.e) for each message.
- Refactor dump() method into smaller sized pieces.
- Clean up logic of updateCountersAndCheckForConnectionStateChange()
  method for better readability.
- Change sendConnectionStateChange() to return instead of sending
  an intent if the current or previous state values are invalid.
  Previously the code sent an intent with -1 for the invalid state.
- Added Javadoc comments to document the methods that are called from
  native Bluez code.
- Fixed some typos and code style issues.

Original Change by: Jake Hamby
Modified by: Jaikumar Ganesh

Change-Id: I76ebac00ecd29566dcb2d1ad3e7a486b7530ce24
2011-02-24 16:26:20 -08:00
Jaikumar Ganesh
74ef119945 Make BluetoothPan inherit from BluetoothProfile.
Change-Id: Ibd3e24e391be93ebe2cf975bd075efb68e10c1ff
2011-02-23 15:49:15 -08:00
Jaikumar Ganesh
4ab0e7746f Make BluetoothInputDevice inherit from BluetoothProfile.
This makes it in sync with BluetoothHeadset and BluetoothA2dp profiles.

Change-Id: I3ddb1d18b04aacb173b7bc376bca21c277a6afe4
2011-02-22 10:42:26 -08:00
Jaikumar Ganesh
47898dd398 Make profile handler classes package and final.
Also merge in the netmask removal fix.

Change-Id: I7a5c806d442a704f9cb21204a1d1307461f801c7
2011-02-14 15:40:54 -08:00
Jaikumar Ganesh
9efb1343a0 Fix ANR in Settings and Phone app.
When we have a lot of devices paired and try to enable bluetooth,
loadBondState will take a some time. During this all UUIDs would
have been registered and we would send out the Bluetooth On intent.
When Settings apps or phone app gets the Bluetooth On intent, they
try to initialize state. However, the enable Thread in Bluetooth Service
is still initializing internal state in loadBondState leading to
ANRs and deadlocks. So register SDP records as the last step of enable Thread.

Change-Id: Iaa0a773e31b9d269f4c56c4f975a0e2973e02d6e
2011-02-14 15:02:42 -08:00
Jaikumar Ganesh
30b8cbe059 Refactor Input profile operations from Bluetooth Service.
Change-Id: I818b0c7056fd43c7303c95150d8001dfc434e5e7
2011-02-14 15:02:42 -08:00
Jaikumar Ganesh
a8571f15c3 Remove Bluetooth Pan operations from Bluetooth Service.
Change-Id: I4dfe14ce04ec357a952b577d452da2257165fc6f
2011-02-14 15:02:42 -08:00
Jaikumar Ganesh
a44a1e77ef Distinguish between NAP and PAN role disconnections
Distinguish between NAP and PANU disconnect in BT tethering
and call appropriate functions. We were never disconnecting
NAP role devices.

ToDo: BluetoothService needs to be refactored, its become too big
1) BluetoothAdapter and BluetoothDevice properties need to be moved to separate
classes.
2) BluetoothPanProfile and BluetoothInputDeviceProfile which are handled
by BluetoothService need to be moved to a separate file.
3) Integrate PAN to the profile state machine.

Change-Id: I32a8d274f38c78931434bd9738c8f6570ba89fcf
2011-02-14 15:00:25 -08:00
Robert Greenwalt
b979f79158 Remove more use of netmask
bug:2542681
Change-Id: Ifd75672739ee8262d4df22afd8173e4f3f67260d
2011-02-14 14:32:33 -08:00
Jaikumar Ganesh
8f08ae9661 Reject incoming tethering connections if Tethering option is not enabled.
Change-Id: I40aa08ad5a3f3a2169551bbe35682910daced098
2011-02-07 16:45:23 -08:00
Jaikumar Ganesh
b3c4efc22d Merge "Wait till SDP records are registered before sending intent." 2011-02-03 17:27:10 -08:00
Jaikumar Ganesh
50b40cec9c Wait till SDP records are registered before sending intent.
Wait till all SDP records are registered, before sending STATE_ON intent.
This would fix crashes in Settings app when the profile manager
is not registered.
Problem:
  We were sending Bluetooth State on intent before we got the uuid state
  change intent from Bluez, which is asynchronous.
  Hence when the Settings app queries for the profiles
  to decide if headset profile was registered it would get false and
  the profile manager would be null causing crashes.
  This was not 100 % reproducible, well because it was a race condition.

Change-Id: I791eb63dfbc78aba4c06fd8db933069cb5fde00d
2011-02-03 17:02:06 -08:00
Robert Greenwalt
f8d40f0d55 Merge "Bind addr and prefixLength together in LinkAddress" 2011-02-03 13:17:48 -08:00
Jaikumar Ganesh
fbb238db71 Remove discoverable timeout handler.
This is leftover code from bluez3 days. We get a property change
in Bluez4 and an intent is sent.

Change-Id: Iba8821ef73edf08add590ef9d11074b59fec2d50
2011-02-01 14:15:12 -08:00
Robert Greenwalt
ed12640932 Bind addr and prefixLength together in LinkAddress
bug:2542681
Change-Id: I90200446216d78c676498144946832afe75efdb8
2011-01-28 15:34:55 -08:00
Jaikumar Ganesh
6312927254 am e97c0188: am 55271a79: Merge "Disable PBAP for no voice capability" into honeycomb
* commit 'e97c01888fcc94453041eb6adc575598d744b580':
  Disable PBAP for no voice capability
2011-01-26 19:11:20 -08:00
Jaikumar Ganesh
67a8b8eaa1 Disable PBAP for no voice capability
PBAP is contact transfer to cars and headsets.
This is closely tied to handsfree profile.
Without calling functionality it was of practically no use.
It will just confuse users when they see a "Dial" button
on their car systems.

Bug: 3395362
Change-Id: I4e4597f0e4b371f69ed7af95d73893554e3fb8ac
2011-01-26 14:33:20 -08:00
Jaikumar Ganesh
55b6b862c8 Do Not Merge. Don't connect to non keyboard HID devices.
Bug: 3385950
Change-Id: I2cfb17467c3d2fd383747111cd990d39f10f5136
2011-01-25 17:38:11 -08:00
Jaikumar Ganesh
fbe807d064 Make connection / disconnect failure more robust.
Add error codes so that the states can be tracked better.

Change-Id: Ic07a5d34589134b68dedeb4803ccb523aa01b567
2011-01-19 14:06:29 -08:00
Jaikumar Ganesh
d1287f5ef0 Fix bug in handling connect/disconnect multiple devices.
Multiple HID devices can be connected. There is no pointing
maintaining the global state. Check individual device state.

Bug: 3350904

Change-Id: I03d9a6015e39e4f9d7f68cc8bbdb19731129b4e6
2011-01-13 15:59:27 -08:00
Staffan Lindvall
81f8e3c85f Phone crash when old callback func is woken up when enabling BT.
When the remote Jerry device is powered down the BT link to the
phone is dropped, and the Jerry firmware in the phone quite
immediately tries to re-connect to the Jerry device. Then
SDP and Discover Services is started, fetchRemoteUuids() ->
discoverServicesNative(). This results in an asynchronous dbus
call dbus_func_args_async()  that is provided with a callback
function, onDiscoverServicesResult(), but before this callback
function is used Bluetooth is disabled according to the problem
scenario above. For some reason this discover services activity
is not cleared when Bluetooth is disabled, so when Bluetooth
is enabled again the (old) callback function
onDiscoverServicesResult() is executed, but the following
getAddressFromObjectPath() fails. The reason for this is that
the deviceObjectPath parameter contains an old value,
containg the process id of the old bluetoothd (the one running
before Bluetooth was disabled). Then the new updated
AdapterObjectPath /org/bluez/<new bluetooth hd pid>/hci0/dev_
is not a prefix of the old deviceObjectPath /org/bluez/<old
bluetooth hd pid>/hci0/dev_<BT_ADDR>, which results in that null
will be used as address in sendUuidIntent(), and later on,
ending up in the BluetoothDevice constructor where and
IllegalArgumentExceotion is thrown due to
Bluetooth address = null. Then the phone will crash.

Making sure sendUuidIntent() is not called when address is null
is a work-around for the problem.

Change-Id: I8ff60bad80de3b379cef0970402943dfa4de3cfd
2011-01-13 09:28:48 -08:00
Staffan Lindvall
e12e895e75 Phone crash when old callback func is woken up when enabling BT.
When the remote Jerry device is powered down the BT link to the
phone is dropped, and the Jerry firmware in the phone quite
immediately tries to re-connect to the Jerry device. Then
SDP and Discover Services is started, fetchRemoteUuids() ->
discoverServicesNative(). This results in an asynchronous dbus
call dbus_func_args_async()  that is provided with a callback
function, onDiscoverServicesResult(), but before this callback
function is used Bluetooth is disabled according to the problem
scenario above. For some reason this discover services activity
is not cleared when Bluetooth is disabled, so when Bluetooth
is enabled again the (old) callback function
onDiscoverServicesResult() is executed, but the following
getAddressFromObjectPath() fails. The reason for this is that
the deviceObjectPath parameter contains an old value,
containg the process id of the old bluetoothd (the one running
before Bluetooth was disabled). Then the new updated
AdapterObjectPath /org/bluez/<new bluetooth hd pid>/hci0/dev_
is not a prefix of the old deviceObjectPath /org/bluez/<old
bluetooth hd pid>/hci0/dev_<BT_ADDR>, which results in that null
will be used as address in sendUuidIntent(), and later on,
ending up in the BluetoothDevice constructor where and
IllegalArgumentExceotion is thrown due to
Bluetooth address = null. Then the phone will crash.

Making sure sendUuidIntent() is not called when address is null
is a work-around for the problem.

Change-Id: I8ff60bad80de3b379cef0970402943dfa4de3cfd
2011-01-13 08:34:13 +01:00
Jaikumar Ganesh
f487d72215 Add ability to parse keyboard fixed pin auto pair blacklist.
Try auto pairing with such keyboards.
Also fix bug where dynamic auto pairing file was not being created.

Change-Id: I93afb96fee8bc4f245f96ec5961979c620de7948
2011-01-12 11:56:15 -08:00
Jaikumar Ganesh
ac6f13dc68 Revert "Add temporary hack for keyboards not following spec."
This reverts commit 8cc316e4f4.
2011-01-12 10:08:57 -08:00
Jaikumar Ganesh
8cc316e4f4 Add temporary hack for keyboards not following spec.
Change-Id: Ic206d45e54f0dc2ccf8124adb08df0c768d7e130
2011-01-06 14:18:58 -08:00
Jaikumar Ganesh
c88b0c62c5 Follow the spec recommendation for keyboard pairing.
Generate a variable pin and show it to the user.

Change-Id: Id4aae7a16f25c67d6c6ead6fd936cb14087f3c7a
2011-01-06 14:18:42 -08:00
Jaikumar Ganesh
057898a9b5 Enable Bluetooth reverse tethering.
Change-Id: I84a508b64f18a1445b8ac424f2a36d56ef432375
2010-12-22 15:24:18 -08:00
Jaikumar Ganesh
b9fbc9e92f Fix parameter to Pan Device Call.
Change-Id: I659e47feb56b052c61b7ee5521ffb5be71ce04c2
2010-12-21 17:27:07 -08:00
Jaikumar Ganesh
5200c8ab72 Add EXTRA_LOCAL_ROLE to Pan State change intent.
This will help apps distinguish between reverse and normal tethering.

Change-Id: I5327ad75dc2cbf478e4f7c2cd6ef1dbe8fba9e93
2010-12-21 16:53:43 -08:00
Jaikumar Ganesh
b7ec3e1019 Fix PANU - Bluetooth tethering - JNI calls.
Change-Id: Ia0b37a03e65be6632cc0bb8f1a98f268d42c9d87
2010-12-16 18:02:29 -08:00
Robert Greenwalt
81d5ad515a Fix Bluetooth-tethering config of interface.
bug:3288692
Change-Id: Id7f1b680392f938000953157716bf9a8f8a66af9
2010-12-16 11:35:40 -08:00
Jaikumar Ganesh
6a3c473910 Add FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT to name changed broadcast.
BT can come up before the system boots up and we send a broadcast,
this can cause issues.

Bug: 3259948
Change-Id: I53ce6b9851fbf611309db1f0a16768ef9f388e0c
2010-12-15 13:14:47 -08:00