summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/bluetooth/LocalBluetoothProfileManager.java
diff options
context:
space:
mode:
authorDanica Chang <danicachang@google.com>2010-08-18 16:58:52 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2010-08-18 16:58:52 -0700
commit3a9cf0363618bfadeaa5df2460fa615922bd8c75 (patch)
treef72180265f4b2e72adeec5dccd2f6fe836aa037f /src/com/android/settings/bluetooth/LocalBluetoothProfileManager.java
parentb08adb00329e352f5f60050abe7a0f4f0fdc214b (diff)
parent32711b6752eb73324e1b10db975ac956888eda96 (diff)
downloadpackages_apps_Settings-3a9cf0363618bfadeaa5df2460fa615922bd8c75.tar.gz
packages_apps_Settings-3a9cf0363618bfadeaa5df2460fa615922bd8c75.tar.bz2
packages_apps_Settings-3a9cf0363618bfadeaa5df2460fa615922bd8c75.zip
Merge "bluetooth tethering"
Diffstat (limited to 'src/com/android/settings/bluetooth/LocalBluetoothProfileManager.java')
-rw-r--r--src/com/android/settings/bluetooth/LocalBluetoothProfileManager.java95
1 files changed, 94 insertions, 1 deletions
diff --git a/src/com/android/settings/bluetooth/LocalBluetoothProfileManager.java b/src/com/android/settings/bluetooth/LocalBluetoothProfileManager.java
index b09e1443c..6193a4e87 100644
--- a/src/com/android/settings/bluetooth/LocalBluetoothProfileManager.java
+++ b/src/com/android/settings/bluetooth/LocalBluetoothProfileManager.java
@@ -22,6 +22,7 @@ import android.bluetooth.BluetoothA2dp;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothHeadset;
import android.bluetooth.BluetoothInputDevice;
+import android.bluetooth.BluetoothPan;
import android.bluetooth.BluetoothUuid;
import android.os.Handler;
import android.os.ParcelUuid;
@@ -60,6 +61,14 @@ public abstract class LocalBluetoothProfileManager {
BluetoothUuid.Hid
};
+ /* package */ static final ParcelUuid[] PANU_PROFILE_UUIDS = new ParcelUuid[] {
+ BluetoothUuid.PANU
+ };
+
+ /* package */ static final ParcelUuid[] NAP_PROFILE_UUIDS = new ParcelUuid[] {
+ BluetoothUuid.NAP
+ };
+
/**
* An interface for notifying BluetoothHeadset IPC clients when they have
* been connected to the BluetoothHeadset service.
@@ -105,6 +114,9 @@ public abstract class LocalBluetoothProfileManager {
profileManager = new HidProfileManager(localManager);
sProfileMap.put(Profile.HID, profileManager);
+
+ profileManager = new PanProfileManager(localManager);
+ sProfileMap.put(Profile.PAN, profileManager);
}
}
}
@@ -173,6 +185,10 @@ public abstract class LocalBluetoothProfileManager {
if (BluetoothUuid.containsAnyUuid(uuids, HID_PROFILE_UUIDS)) {
profiles.add(Profile.HID);
}
+
+ if (BluetoothUuid.containsAnyUuid(uuids, PANU_PROFILE_UUIDS)) {
+ profiles.add(Profile.PAN);
+ }
}
protected LocalBluetoothProfileManager(LocalBluetoothManager localManager) {
@@ -208,7 +224,8 @@ public abstract class LocalBluetoothProfileManager {
HEADSET(R.string.bluetooth_profile_headset),
A2DP(R.string.bluetooth_profile_a2dp),
OPP(R.string.bluetooth_profile_opp),
- HID(R.string.bluetooth_profile_hid);
+ HID(R.string.bluetooth_profile_hid),
+ PAN(R.string.bluetooth_profile_pan);
public final int localizedString;
@@ -613,4 +630,80 @@ public abstract class LocalBluetoothProfileManager {
}
}
}
+
+ private static class PanProfileManager extends LocalBluetoothProfileManager {
+ private BluetoothPan mService;
+
+ public PanProfileManager(LocalBluetoothManager localManager) {
+ super(localManager);
+ mService = new BluetoothPan(localManager.getContext());
+ }
+
+ @Override
+ public boolean connect(BluetoothDevice device) {
+ return mService.connect(device);
+ }
+
+ @Override
+ public int convertState(int panState) {
+ switch (panState) {
+ case BluetoothPan.STATE_CONNECTED:
+ return SettingsBtStatus.CONNECTION_STATUS_CONNECTED;
+ case BluetoothPan.STATE_CONNECTING:
+ return SettingsBtStatus.CONNECTION_STATUS_CONNECTING;
+ case BluetoothPan.STATE_DISCONNECTED:
+ return SettingsBtStatus.CONNECTION_STATUS_DISCONNECTED;
+ case BluetoothPan.STATE_DISCONNECTING:
+ return SettingsBtStatus.CONNECTION_STATUS_DISCONNECTING;
+ default:
+ return SettingsBtStatus.CONNECTION_STATUS_UNKNOWN;
+ }
+ }
+
+ @Override
+ public boolean disconnect(BluetoothDevice device) {
+ return mService.disconnect(device);
+ }
+
+ @Override
+ public int getSummary(BluetoothDevice device) {
+ final int connectionStatus = getConnectionStatus(device);
+
+ if (SettingsBtStatus.isConnectionStatusConnected(connectionStatus)) {
+ return R.string.bluetooth_pan_profile_summary_connected;
+ } else {
+ return SettingsBtStatus.getConnectionStatusSummary(connectionStatus);
+ }
+ }
+
+ @Override
+ public boolean isProfileReady() {
+ return true;
+ }
+
+ @Override
+ public Set<BluetoothDevice> getConnectedDevices() {
+ return mService.getConnectedDevices();
+ }
+
+ @Override
+ public int getConnectionStatus(BluetoothDevice device) {
+ return convertState(mService.getPanDeviceState(device));
+ }
+
+ @Override
+ public int getPreferred(BluetoothDevice device) {
+ return -1;
+ }
+
+ @Override
+ public boolean isPreferred(BluetoothDevice device) {
+ return false;
+ }
+
+ @Override
+ public void setPreferred(BluetoothDevice device, boolean preferred) {
+ return;
+ }
+ }
}