author | Eugene Ostroukhov <eugeneo@symbian.org> |
Wed, 28 Jul 2010 14:07:39 -0700 | |
changeset 456 | 12b549765c34 |
parent 455 | org.symbian.tools.mtw.ui/src/org/symbian/tools/mtw/ui/deployment/bluetooth/BluetoothProvider.java@5da55957c779 |
permissions | -rw-r--r-- |
455
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
1 |
/** |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
2 |
* Copyright (c) 2010 Symbian Foundation and/or its subsidiary(-ies). |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
3 |
* All rights reserved. |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
4 |
* This component and the accompanying materials are made available |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
5 |
* under the terms of the License "Eclipse Public License v1.0" |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
6 |
* which accompanies this distribution, and is available |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
7 |
* at the URL "http://www.eclipse.org/legal/epl-v10.html". |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
8 |
* |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
9 |
* Initial Contributors: |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
10 |
* Symbian Foundation - initial contribution. |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
11 |
* Contributors: |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
12 |
* Description: |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
13 |
* Overview: |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
14 |
* Details: |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
15 |
* Platforms/Drives/Compatibility: |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
16 |
* Assumptions/Requirement/Pre-requisites: |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
17 |
* Failures and causes: |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
18 |
*/ |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
19 |
package org.symbian.tools.mtw.ui.deployment.bluetooth; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
20 |
|
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
21 |
import java.io.IOException; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
22 |
import java.io.PrintStream; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
23 |
import java.util.Collection; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
24 |
import java.util.Map; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
25 |
import java.util.TreeMap; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
26 |
|
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
27 |
import javax.bluetooth.BluetoothStateException; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
28 |
import javax.bluetooth.DeviceClass; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
29 |
import javax.bluetooth.DiscoveryAgent; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
30 |
import javax.bluetooth.DiscoveryListener; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
31 |
import javax.bluetooth.LocalDevice; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
32 |
import javax.bluetooth.RemoteDevice; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
33 |
import javax.bluetooth.ServiceRecord; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
34 |
|
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
35 |
import org.eclipse.core.runtime.CoreException; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
36 |
import org.eclipse.core.runtime.IProgressMonitor; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
37 |
import org.eclipse.core.runtime.IStatus; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
38 |
import org.eclipse.core.runtime.Status; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
39 |
import org.eclipse.core.runtime.jobs.ISchedulingRule; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
40 |
import org.symbian.tools.mtw.core.projects.IMTWProject; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
41 |
import org.symbian.tools.mtw.ui.ConsoleFactory; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
42 |
import org.symbian.tools.mtw.ui.MTWCoreUI; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
43 |
import org.symbian.tools.mtw.ui.deployment.IDeploymentTarget; |
456
12b549765c34
Refactoring and adding better bluetooth target decoration
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
455
diff
changeset
|
44 |
import org.symbian.tools.mtw.ui.deployment.IDeploymentTargetType; |
455
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
45 |
|
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
46 |
import com.intel.bluetooth.BlueCoveImpl; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
47 |
|
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
48 |
/** |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
49 |
* Discovers Bluetooth-enabled devices. This code is generic and will not |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
50 |
* perform any checks if the discovered device can run application being |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
51 |
* deployed. |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
52 |
* |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
53 |
* @author Eugene Ostroukhov (eugeneo@symbian.org) |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
54 |
*/ |
456
12b549765c34
Refactoring and adding better bluetooth target decoration
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
455
diff
changeset
|
55 |
public class BluetoothTargetType implements IDeploymentTargetType { |
455
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
56 |
private final class WrtDiscoveryListener implements DiscoveryListener { |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
57 |
final Object inquiryCompletedEvent; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
58 |
boolean isCanceled; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
59 |
final Map<String, BluetoothTarget> prevTargets; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
60 |
final IProgressMonitor progressMonitor; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
61 |
|
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
62 |
private WrtDiscoveryListener(Map<String, BluetoothTarget> previousTargets, Object inquiryCompletedEvent, |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
63 |
IProgressMonitor progressMonitor) { |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
64 |
this.prevTargets = previousTargets; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
65 |
this.inquiryCompletedEvent = inquiryCompletedEvent; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
66 |
this.progressMonitor = progressMonitor; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
67 |
} |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
68 |
|
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
69 |
private void checkCanceled() { |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
70 |
if (!isCanceled && progressMonitor != null) { |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
71 |
if (progressMonitor.isCanceled()) { |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
72 |
try { |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
73 |
LocalDevice.getLocalDevice().getDiscoveryAgent().cancelInquiry(listener); |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
74 |
} catch (BluetoothStateException e) { |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
75 |
MTWCoreUI.log(e); |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
76 |
} |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
77 |
} |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
78 |
} |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
79 |
} |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
80 |
|
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
81 |
public void deviceDiscovered(RemoteDevice btDevice, DeviceClass cod) { |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
82 |
try { |
456
12b549765c34
Refactoring and adding better bluetooth target decoration
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
455
diff
changeset
|
83 |
final String name = btDevice.getFriendlyName(false); |
12b549765c34
Refactoring and adding better bluetooth target decoration
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
455
diff
changeset
|
84 |
if (name != null && name.length() > 0) { |
455
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
85 |
final BluetoothTarget target = prevTargets.get(name); |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
86 |
if (target != null) { |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
87 |
target.setAddress(btDevice); |
456
12b549765c34
Refactoring and adding better bluetooth target decoration
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
455
diff
changeset
|
88 |
targets.put(name, target); |
455
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
89 |
} else { |
456
12b549765c34
Refactoring and adding better bluetooth target decoration
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
455
diff
changeset
|
90 |
targets.put(name, new BluetoothTarget(name, btDevice, BluetoothTargetType.this)); |
455
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
91 |
} |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
92 |
checkCanceled(); |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
93 |
} |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
94 |
} catch (BluetoothStateException e) { |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
95 |
MTWCoreUI.log(e.getMessage(), e); |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
96 |
} catch (IOException e) { |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
97 |
MTWCoreUI.log(e.getMessage(), e); |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
98 |
} |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
99 |
} |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
100 |
|
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
101 |
public void inquiryCompleted(int discType) { |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
102 |
synchronized (inquiryCompletedEvent) { |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
103 |
inquiryCompletedEvent.notifyAll(); |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
104 |
} |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
105 |
} |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
106 |
|
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
107 |
public void servicesDiscovered(int transID, ServiceRecord[] servRecord) { |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
108 |
} |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
109 |
|
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
110 |
public void serviceSearchCompleted(int transID, int respCode) { |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
111 |
} |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
112 |
} |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
113 |
|
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
114 |
private static PrintStream savedSysOut; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
115 |
private boolean discovered = false; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
116 |
private WrtDiscoveryListener listener; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
117 |
private Map<String, BluetoothTarget> targets = new TreeMap<String, BluetoothTarget>(); |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
118 |
|
456
12b549765c34
Refactoring and adding better bluetooth target decoration
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
455
diff
changeset
|
119 |
public BluetoothTargetType() { |
455
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
120 |
// set parameters for BlueCove |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
121 |
String param = Integer.toString(65 * 1024); |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
122 |
System.setProperty("bluecove.obex.mtu", param); |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
123 |
BlueCoveImpl.setConfigProperty("bluecove.obex.mtu", param); |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
124 |
} |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
125 |
|
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
126 |
public void discoverTargets(IProgressMonitor monitor) throws CoreException { |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
127 |
if (!isBloothToothConnected()) { |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
128 |
throw new CoreException(new Status(IStatus.ERROR, MTWCoreUI.PLUGIN_ID, "Bluetooth is not available")); |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
129 |
} |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
130 |
monitor.beginTask("Discovering Bluetooth devices", IProgressMonitor.UNKNOWN); |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
131 |
final Object inquiryCompletedEvent = new Object(); |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
132 |
final Map<String, BluetoothTarget> previousTargets = targets; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
133 |
targets = new TreeMap<String, BluetoothTarget>(); |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
134 |
|
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
135 |
listener = new WrtDiscoveryListener(previousTargets, inquiryCompletedEvent, monitor); |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
136 |
|
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
137 |
synchronized (inquiryCompletedEvent) { |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
138 |
boolean started; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
139 |
try { |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
140 |
started = LocalDevice.getLocalDevice().getDiscoveryAgent().startInquiry(DiscoveryAgent.GIAC, listener); |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
141 |
if (started) { |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
142 |
inquiryCompletedEvent.wait(); |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
143 |
discovered = true; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
144 |
} |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
145 |
} catch (BluetoothStateException e) { |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
146 |
MTWCoreUI.log(e.getMessage(), e); |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
147 |
} catch (InterruptedException e) { |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
148 |
MTWCoreUI.log(e.getMessage(), e); |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
149 |
} |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
150 |
} |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
151 |
monitor.done(); |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
152 |
} |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
153 |
|
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
154 |
/** Toggle BlueCove logging |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
155 |
*/ |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
156 |
public void enableBlueCoveDiagnostics(boolean enable) { |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
157 |
System.setProperty("bluecove.debug", Boolean.valueOf(enable).toString()); |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
158 |
BlueCoveImpl.instance().enableNativeDebug(enable); |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
159 |
if (enable) { |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
160 |
System.setOut(new PrintStream(ConsoleFactory.createStream())); |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
161 |
} else { |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
162 |
System.setOut(savedSysOut); |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
163 |
} |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
164 |
} |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
165 |
|
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
166 |
public IDeploymentTarget findTarget(IMTWProject project, String id) { |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
167 |
if (!isBloothToothConnected()) { |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
168 |
return null; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
169 |
} |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
170 |
if (discovered) { |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
171 |
return targets.get(id); |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
172 |
} else { |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
173 |
BluetoothTarget target = targets.get(id); |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
174 |
if (target == null) { |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
175 |
target = new BluetoothTarget(id, null, this); |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
176 |
targets.put(id, target); |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
177 |
} |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
178 |
return target; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
179 |
} |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
180 |
} |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
181 |
|
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
182 |
public IDeploymentTarget[] getTargets(IMTWProject project) { |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
183 |
if (targets != null) { |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
184 |
final Collection<BluetoothTarget> values = targets.values(); |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
185 |
return values.toArray(new IDeploymentTarget[values.size()]); |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
186 |
} else { |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
187 |
return null; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
188 |
} |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
189 |
} |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
190 |
|
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
191 |
/** |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
192 |
* Check whether the bluetooth is on or not. |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
193 |
* |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
194 |
* @return whether the device is on. |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
195 |
*/ |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
196 |
public boolean isBloothToothConnected() { |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
197 |
return LocalDevice.isPowerOn(); |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
198 |
} |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
199 |
|
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
200 |
public boolean targetsDiscovered() { |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
201 |
return discovered; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
202 |
} |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
203 |
|
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
204 |
public ISchedulingRule getSchedulingRule(IDeploymentTarget target) { |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
205 |
return BluetoothRule.INSTANCE; |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
206 |
} |
5da55957c779
Bluetooth support was refactored on top of a new frameworks
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
207 |
} |