summaryrefslogtreecommitdiff
path: root/lowpan
diff options
context:
space:
mode:
authorRobert Quattlebaum <rquattle@google.com>2017-06-06 16:51:41 -0700
committerRobert Quattlebaum <rquattle@google.com>2017-06-06 16:51:41 -0700
commit325b7f5a066bc69c2ad32e1290274d18f40e423b (patch)
tree619422d747bddbb926617f4fcc1a24a89e30a6cd /lowpan
parente5ef67692ea9c53786ab82b458e0a5e8e34fdfac (diff)
android.net.lowpan: Build/syntax fixes and review changes
This commit fixes some build problems that weren't noticed by Tree Hugger. It also addresses some formatting issues, as well as corrects a few issues noticed from the last review. Change-Id: Icab67ba2c40bc02968e3f8ed2da5a4a3be6cf77f
Diffstat (limited to 'lowpan')
-rw-r--r--lowpan/java/android/net/lowpan/LowpanBeaconInfo.java4
-rw-r--r--lowpan/java/android/net/lowpan/LowpanChannelInfo.java5
-rw-r--r--lowpan/java/android/net/lowpan/LowpanCommissioningSession.java4
-rw-r--r--lowpan/java/android/net/lowpan/LowpanCredential.java6
-rw-r--r--lowpan/java/android/net/lowpan/LowpanEnergyScanResult.java3
-rw-r--r--lowpan/java/android/net/lowpan/LowpanException.java2
-rw-r--r--lowpan/java/android/net/lowpan/LowpanIdentity.java14
-rw-r--r--lowpan/java/android/net/lowpan/LowpanInterface.java85
-rw-r--r--lowpan/java/android/net/lowpan/LowpanManager.java67
-rw-r--r--lowpan/java/android/net/lowpan/LowpanProvision.java8
-rw-r--r--lowpan/java/android/net/lowpan/LowpanScanner.java47
11 files changed, 111 insertions, 134 deletions
diff --git a/lowpan/java/android/net/lowpan/LowpanBeaconInfo.java b/lowpan/java/android/net/lowpan/LowpanBeaconInfo.java
index b344527e4be5..e18abd5bf23f 100644
--- a/lowpan/java/android/net/lowpan/LowpanBeaconInfo.java
+++ b/lowpan/java/android/net/lowpan/LowpanBeaconInfo.java
@@ -26,7 +26,7 @@ import java.util.TreeSet;
*
* @hide
*/
-//@SystemApi
+// @SystemApi
public class LowpanBeaconInfo extends LowpanIdentity {
private int mRssi = UNKNOWN;
@@ -104,7 +104,7 @@ public class LowpanBeaconInfo extends LowpanIdentity {
}
public Collection<Integer> getFlags() {
- return mFlags.clone();
+ return (Collection<Integer>) mFlags.clone();
}
public boolean isFlagSet(int flag) {
diff --git a/lowpan/java/android/net/lowpan/LowpanChannelInfo.java b/lowpan/java/android/net/lowpan/LowpanChannelInfo.java
index 50afe6d3a4c0..621affee6d06 100644
--- a/lowpan/java/android/net/lowpan/LowpanChannelInfo.java
+++ b/lowpan/java/android/net/lowpan/LowpanChannelInfo.java
@@ -16,14 +16,12 @@
package android.net.lowpan;
-
/** Provides detailed information about a given channel. */
-//@SystemApi
+// @SystemApi
public class LowpanChannelInfo {
public static final int UNKNOWN_POWER = Integer.MAX_VALUE;
- //////////////////////////////////////////////////////////////////////////
// Instance Variables
private String mName = null;
@@ -33,7 +31,6 @@ public class LowpanChannelInfo {
private float mSpectrumBandwidth = 0.0f;
private int mMaxTransmitPower = UNKNOWN_POWER;
- //////////////////////////////////////////////////////////////////////////
// Public Getters and Setters
public String getName() {
diff --git a/lowpan/java/android/net/lowpan/LowpanCommissioningSession.java b/lowpan/java/android/net/lowpan/LowpanCommissioningSession.java
index 9cad00c3415a..1da085ddb294 100644
--- a/lowpan/java/android/net/lowpan/LowpanCommissioningSession.java
+++ b/lowpan/java/android/net/lowpan/LowpanCommissioningSession.java
@@ -30,7 +30,7 @@ import java.net.InetSocketAddress;
*
* @hide
*/
-//@SystemApi
+// @SystemApi
public abstract class LowpanCommissioningSession {
public LowpanCommissioningSession() {}
@@ -39,7 +39,7 @@ public abstract class LowpanCommissioningSession {
*
* @hide
*/
- //@SystemApi
+ // @SystemApi
public class Callback {
public void onReceiveFromCommissioner(@NonNull byte[] packet) {};
diff --git a/lowpan/java/android/net/lowpan/LowpanCredential.java b/lowpan/java/android/net/lowpan/LowpanCredential.java
index dea4d7888884..ca8602151515 100644
--- a/lowpan/java/android/net/lowpan/LowpanCredential.java
+++ b/lowpan/java/android/net/lowpan/LowpanCredential.java
@@ -16,7 +16,6 @@
package android.net.lowpan;
-
import java.util.Map;
/**
@@ -24,7 +23,7 @@ import java.util.Map;
*
* @hide
*/
-//@SystemApi
+// @SystemApi
public class LowpanCredential {
public static final int UNSPECIFIED_KEY_INDEX = 0;
@@ -84,8 +83,7 @@ public class LowpanCredential {
void addToMap(Map<String, Object> parameters) throws LowpanException {
if (isMasterKey()) {
LowpanProperties.KEY_NETWORK_MASTER_KEY.putInMap(parameters, getMasterKey());
- LowpanProperties.KEY_NETWORK_MASTER_KEY_INDEX.putInMap(
- parameters, getMasterKeyIndex());
+ LowpanProperties.KEY_NETWORK_MASTER_KEY_INDEX.putInMap(parameters, getMasterKeyIndex());
} else {
throw new LowpanException("Unsupported Network Credential");
}
diff --git a/lowpan/java/android/net/lowpan/LowpanEnergyScanResult.java b/lowpan/java/android/net/lowpan/LowpanEnergyScanResult.java
index c680687d0e09..91ed19c488eb 100644
--- a/lowpan/java/android/net/lowpan/LowpanEnergyScanResult.java
+++ b/lowpan/java/android/net/lowpan/LowpanEnergyScanResult.java
@@ -16,13 +16,12 @@
package android.net.lowpan;
-
/**
* Describes the result from one channel of an energy scan.
*
* @hide
*/
-//@SystemApi
+// @SystemApi
public class LowpanEnergyScanResult {
public static final int UNKNOWN = Integer.MAX_VALUE;
diff --git a/lowpan/java/android/net/lowpan/LowpanException.java b/lowpan/java/android/net/lowpan/LowpanException.java
index 8ff37f926899..b43b2fe087e1 100644
--- a/lowpan/java/android/net/lowpan/LowpanException.java
+++ b/lowpan/java/android/net/lowpan/LowpanException.java
@@ -28,7 +28,7 @@ import android.util.AndroidException;
* @see LowpanInterface
* @hide
*/
-//@SystemApi
+// @SystemApi
public class LowpanException extends AndroidException {
// Make the eclipse warning about serializable exceptions go away
private static final long serialVersionUID = 0x31863cbe562b0e11l; // randomly generated
diff --git a/lowpan/java/android/net/lowpan/LowpanIdentity.java b/lowpan/java/android/net/lowpan/LowpanIdentity.java
index 2e7b560fda5e..9be45ef14b98 100644
--- a/lowpan/java/android/net/lowpan/LowpanIdentity.java
+++ b/lowpan/java/android/net/lowpan/LowpanIdentity.java
@@ -24,10 +24,9 @@ import java.util.Map;
*
* @hide
*/
-//@SystemApi
+// @SystemApi
public class LowpanIdentity {
- //////////////////////////////////////////////////////////////////////////
// Constants
/** @hide */
@@ -41,11 +40,10 @@ public class LowpanIdentity {
public static final int UNKNOWN = Integer.MAX_VALUE;
- //////////////////////////////////////////////////////////////////////////
// Builder
/** @hide */
- //@SystemApi
+ // @SystemApi
public static class Builder {
private final LowpanIdentity identity = new LowpanIdentity();
@@ -102,7 +100,6 @@ public class LowpanIdentity {
LowpanIdentity() {}
- //////////////////////////////////////////////////////////////////////////
// Instance Variables
private String mName = null;
@@ -111,7 +108,6 @@ public class LowpanIdentity {
private int mPanid = UNKNOWN;
private int mChannel = UNKNOWN;
- //////////////////////////////////////////////////////////////////////////
// Public Getters and Setters
public String getName() {
@@ -140,12 +136,10 @@ public class LowpanIdentity {
LowpanProperties.KEY_NETWORK_NAME.putInMap(parameters, networkInfo.getName());
}
if (networkInfo.getPanid() != LowpanIdentity.UNKNOWN) {
- LowpanProperties.KEY_NETWORK_PANID.putInMap(
- parameters, networkInfo.getPanid());
+ LowpanProperties.KEY_NETWORK_PANID.putInMap(parameters, networkInfo.getPanid());
}
if (networkInfo.getChannel() != LowpanIdentity.UNKNOWN) {
- LowpanProperties.KEY_CHANNEL.putInMap(
- parameters, networkInfo.getChannel());
+ LowpanProperties.KEY_CHANNEL.putInMap(parameters, networkInfo.getChannel());
}
if (networkInfo.getXpanid() != null) {
LowpanProperties.KEY_NETWORK_XPANID.putInMap(parameters, networkInfo.getXpanid());
diff --git a/lowpan/java/android/net/lowpan/LowpanInterface.java b/lowpan/java/android/net/lowpan/LowpanInterface.java
index cd548190fa17..2bb4ecd380f2 100644
--- a/lowpan/java/android/net/lowpan/LowpanInterface.java
+++ b/lowpan/java/android/net/lowpan/LowpanInterface.java
@@ -33,7 +33,7 @@ import java.util.Set;
*
* @hide
*/
-//@SystemApi
+// @SystemApi
public class LowpanInterface {
private static final String TAG = LowpanInterface.class.getSimpleName();
@@ -170,7 +170,7 @@ public class LowpanInterface {
*
* @hide
*/
- //@SystemApi
+ // @SystemApi
public abstract static class Callback {
public void onConnectedChanged(boolean value) {}
@@ -244,7 +244,6 @@ public class LowpanInterface {
LowpanException.throwAsPublicException(t);
}
- //////////////////////////////////////////////////////////////////////////
// Private Property Helpers
void setProperties(Map properties) throws LowpanException {
@@ -311,10 +310,9 @@ public class LowpanInterface {
boolean getPropertyAsBoolean(LowpanProperty<Boolean> key) throws LowpanException {
Boolean value = getProperty(key);
- return (value != null) ? value : 0;
+ return (value != null) ? value : false;
}
- //////////////////////////////////////////////////////////////////////////
// Public Actions
/**
@@ -424,7 +422,6 @@ public class LowpanInterface {
}
}
- //////////////////////////////////////////////////////////////////////////
// Public Getters and Setters
/**
@@ -448,13 +445,13 @@ public class LowpanInterface {
return "";
}
- /**
- * Indicates if the interface is enabled or disabled.
- *
- * @see #setEnabled
- * @see android.net.lowpan.LowpanException#LOWPAN_DISABLED
- */
- public boolean isEnabled() {
+ /**
+ * Indicates if the interface is enabled or disabled.
+ *
+ * @see #setEnabled
+ * @see android.net.lowpan.LowpanException#LOWPAN_DISABLED
+ */
+ public boolean isEnabled() {
try {
return getPropertyAsBoolean(LowpanProperties.KEY_INTERFACE_ENABLED);
} catch (LowpanException x) {
@@ -462,16 +459,16 @@ public class LowpanInterface {
}
}
- /**
- * Enables or disables the LoWPAN interface. When disabled, the interface is put into a low-power
- * state and all commands that require the NCP to be queried will fail with {@link
- * android.net.lowpan.LowpanException#LOWPAN_DISABLED}.
- *
- * @see #isEnabled
- * @see android.net.lowpan.LowpanException#LOWPAN_DISABLED
- * @hide
- */
- public void setEnabled(boolean enabled) throws LowpanException {
+ /**
+ * Enables or disables the LoWPAN interface. When disabled, the interface is put into a
+ * low-power state and all commands that require the NCP to be queried will fail with {@link
+ * android.net.lowpan.LowpanException#LOWPAN_DISABLED}.
+ *
+ * @see #isEnabled
+ * @see android.net.lowpan.LowpanException#LOWPAN_DISABLED
+ * @hide
+ */
+ public void setEnabled(boolean enabled) throws LowpanException {
setProperty(LowpanProperties.KEY_INTERFACE_ENABLED, enabled);
}
@@ -628,7 +625,6 @@ public class LowpanInterface {
setProperties(map);
}
- //////////////////////////////////////////////////////////////////////////
// Listener Support
/**
@@ -644,7 +640,7 @@ public class LowpanInterface {
public void registerCallback(@NonNull Callback cb, @Nullable Handler handler) {
ILowpanInterfaceListener.Stub listenerBinder =
new ILowpanInterfaceListener.Stub() {
- public void onPropertiesChanged(Map<String, Object> properties) {
+ public void onPropertiesChanged(Map properties) {
Runnable runnable =
new Runnable() {
@Override
@@ -724,36 +720,35 @@ public class LowpanInterface {
*/
public void unregisterCallback(Callback cb) {
int hashCode = System.identityHashCode(cb);
- ILowpanInterfaceListener listenerBinder = mListenerMap.get(hashCode);
+ synchronized (mListenerMap) {
+ ILowpanInterfaceListener listenerBinder = mListenerMap.get(hashCode);
- if (listenerBinder != null) {
- synchronized (mListenerMap) {
+ if (listenerBinder != null) {
mListenerMap.remove(hashCode);
- }
- try {
- mBinder.removeListener(listenerBinder);
- } catch (RemoteException x) {
- // Catch and ignore all binder exceptions
- Log.e(TAG, x.toString());
+
+ try {
+ mBinder.removeListener(listenerBinder);
+ } catch (RemoteException x) {
+ // Catch and ignore all binder exceptions
+ Log.e(TAG, x.toString());
+ }
}
}
}
- //////////////////////////////////////////////////////////////////////////
- // Active and Passive Scanning
+ // Active and Passive Scanning
- /**
- * Creates a new {@link android.net.lowpan.LowpanScanner} object for this interface.
- *
- * <p>This method allocates a new unique object for each call.
- *
- * @see android.net.lowpan.LowpanScanner
- */
- public @NonNull LowpanScanner createScanner() {
+ /**
+ * Creates a new {@link android.net.lowpan.LowpanScanner} object for this interface.
+ *
+ * <p>This method allocates a new unique object for each call.
+ *
+ * @see android.net.lowpan.LowpanScanner
+ */
+ public @NonNull LowpanScanner createScanner() {
return new LowpanScanner(mBinder);
}
- //////////////////////////////////////////////////////////////////////////
// Route Management
/**
diff --git a/lowpan/java/android/net/lowpan/LowpanManager.java b/lowpan/java/android/net/lowpan/LowpanManager.java
index b58608da7c21..ecdda49f718a 100644
--- a/lowpan/java/android/net/lowpan/LowpanManager.java
+++ b/lowpan/java/android/net/lowpan/LowpanManager.java
@@ -33,32 +33,24 @@ import java.util.HashMap;
*
* @hide
*/
-//@SystemApi
+// @SystemApi
public class LowpanManager {
private static final String TAG = LowpanManager.class.getSimpleName();
- //////////////////////////////////////////////////////////////////////////
- // Public Classes
-
/** @hide */
- //@SystemApi
+ // @SystemApi
public abstract static class Callback {
- public void onInterfaceAdded(LowpanInterface lowpan_interface) {}
+ public void onInterfaceAdded(LowpanInterface lowpanInterface) {}
- public void onInterfaceRemoved(LowpanInterface lowpan_interface) {}
+ public void onInterfaceRemoved(LowpanInterface lowpanInterface) {}
}
- //////////////////////////////////////////////////////////////////////////
- // Instance Variables
-
+ private Context mContext;
private ILowpanManager mManager;
private HashMap<Integer, ILowpanManagerListener> mListenerMap = new HashMap<>();
- //////////////////////////////////////////////////////////////////////////
-
private static LowpanManager sSingletonInstance;
- //////////////////////////////////////////////////////////////////////////
// Static Methods
/** Returns a reference to the LowpanManager object, allocating it if necessary. */
@@ -75,7 +67,6 @@ public class LowpanManager {
return sSingletonInstance;
}
- //////////////////////////////////////////////////////////////////////////
// Constructors
/**
@@ -84,28 +75,34 @@ public class LowpanManager {
*/
private LowpanManager() {}
- //////////////////////////////////////////////////////////////////////////
// Private Methods
/**
* Returns a reference to the ILowpanManager interface, provided by the LoWPAN Manager Service.
*/
@Nullable
- private ILowpanManager getILowpanManager() {
+ private synchronized ILowpanManager getILowpanManager() {
+ // Use a local reference of this object for thread safety.
ILowpanManager manager = mManager;
+
if (manager == null) {
IBinder serviceBinder =
new ServiceManager().getService(ILowpanManager.LOWPAN_SERVICE_NAME);
- mManager = manager = ILowpanManager.Stub.asInterface(serviceBinder);
+
+ manager = ILowpanManager.Stub.asInterface(serviceBinder);
+
+ mManager = manager;
// Add any listeners
synchronized (mListenerMap) {
- for (Integer hashObj : mListenerMap.keySet()) {
+ for (ILowpanManagerListener listener : mListenerMap.values()) {
try {
- manager.addListener(mListenerMap.get(hashObj));
+ manager.addListener(listener);
+
} catch (RemoteException x) {
// Consider any failure here as implying the manager is defunct
- mManager = manager = null;
+ mManager = null;
+ manager = null;
}
}
}
@@ -113,7 +110,6 @@ public class LowpanManager {
return manager;
}
- //////////////////////////////////////////////////////////////////////////
// Public Methods
/**
@@ -141,6 +137,7 @@ public class LowpanManager {
manager = getILowpanManager();
}
}
+
return ret;
}
@@ -151,7 +148,7 @@ public class LowpanManager {
@Nullable
public LowpanInterface getInterface() {
String[] ifaceList = getInterfaceList();
- if (ifaceList != null && ifaceList.length > 0) {
+ if (ifaceList.length > 0) {
return getInterface(ifaceList[0]);
}
return null;
@@ -165,24 +162,16 @@ public class LowpanManager {
public String[] getInterfaceList() {
ILowpanManager manager = getILowpanManager();
- if (manager != null) {
+ // Maximum number of tries is two. We should only try
+ // more than once if our manager has died or there
+ // was some sort of AIDL buffer full event.
+ for (int i = 0; i < 2 && manager != null; i++) {
try {
return manager.getInterfaceList();
-
} catch (RemoteException x) {
// In all of the cases when we get this exception, we reconnect and try again
mManager = null;
- try {
- manager = getILowpanManager();
- if (manager != null) {
- return manager.getInterfaceList();
- }
- } catch (RemoteException ex) {
- // Something weird is going on, so we log it
- // and fall back thru to returning an empty array.
- Log.e(TAG, ex.toString());
- mManager = null;
- }
+ manager = getILowpanManager();
}
}
@@ -200,14 +189,14 @@ public class LowpanManager {
throws LowpanException {
ILowpanManagerListener.Stub listenerBinder =
new ILowpanManagerListener.Stub() {
- public void onInterfaceAdded(ILowpanInterface lowpan_interface) {
+ public void onInterfaceAdded(ILowpanInterface lowpanInterface) {
Runnable runnable =
new Runnable() {
@Override
public void run() {
cb.onInterfaceAdded(
LowpanInterface.getInterfaceFromBinder(
- lowpan_interface.asBinder()));
+ lowpanInterface.asBinder()));
}
};
@@ -218,14 +207,14 @@ public class LowpanManager {
}
}
- public void onInterfaceRemoved(ILowpanInterface lowpan_interface) {
+ public void onInterfaceRemoved(ILowpanInterface lowpanInterface) {
Runnable runnable =
new Runnable() {
@Override
public void run() {
cb.onInterfaceRemoved(
LowpanInterface.getInterfaceFromBinder(
- lowpan_interface.asBinder()));
+ lowpanInterface.asBinder()));
}
};
diff --git a/lowpan/java/android/net/lowpan/LowpanProvision.java b/lowpan/java/android/net/lowpan/LowpanProvision.java
index ace1f9c05c4d..7028807679a1 100644
--- a/lowpan/java/android/net/lowpan/LowpanProvision.java
+++ b/lowpan/java/android/net/lowpan/LowpanProvision.java
@@ -25,14 +25,13 @@ import java.util.Map;
*
* @hide
*/
-//@SystemApi
+// @SystemApi
public class LowpanProvision {
- //////////////////////////////////////////////////////////////////////////
// Builder
/** @hide */
- //@SystemApi
+ // @SystemApi
public static class Builder {
private final LowpanProvision provision = new LowpanProvision();
@@ -53,13 +52,11 @@ public class LowpanProvision {
private LowpanProvision() {}
- //////////////////////////////////////////////////////////////////////////
// Instance Variables
private LowpanIdentity mIdentity = new LowpanIdentity();
private LowpanCredential mCredential = null;
- //////////////////////////////////////////////////////////////////////////
// Public Getters and Setters
@NonNull
@@ -72,7 +69,6 @@ public class LowpanProvision {
return mCredential;
}
- //////////////////////////////////////////////////////////////////////////
// LoWPAN-Internal Methods
static void addToMap(Map<String, Object> parameters, LowpanProvision provision)
diff --git a/lowpan/java/android/net/lowpan/LowpanScanner.java b/lowpan/java/android/net/lowpan/LowpanScanner.java
index 754f72e3cb84..e0df55d9af3f 100644
--- a/lowpan/java/android/net/lowpan/LowpanScanner.java
+++ b/lowpan/java/android/net/lowpan/LowpanScanner.java
@@ -25,7 +25,6 @@ import android.util.Log;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
/**
@@ -36,11 +35,10 @@ import java.util.Map;
* @see LowpanInterface
* @hide
*/
-//@SystemApi
+// @SystemApi
public class LowpanScanner {
private static final String TAG = LowpanInterface.class.getSimpleName();
- //////////////////////////////////////////////////////////////////////////
// Public Classes
/**
@@ -48,7 +46,7 @@ public class LowpanScanner {
*
* @hide
*/
- //@SystemApi
+ // @SystemApi
public abstract static class Callback {
public void onNetScanBeacon(LowpanBeaconInfo beacon) {}
@@ -57,16 +55,14 @@ public class LowpanScanner {
public void onScanFinished() {}
}
- //////////////////////////////////////////////////////////////////////////
// Instance Variables
private ILowpanInterface mBinder;
private Callback mCallback = null;
private Handler mHandler = null;
- private List<Integer> mChannelMask = null;
+ private ArrayList<Integer> mChannelMask = null;
private int mTxPower = Integer.MAX_VALUE;
- //////////////////////////////////////////////////////////////////////////
// Constructors/Accessors and Exception Glue
LowpanScanner(@NonNull ILowpanInterface binder) {
@@ -74,7 +70,7 @@ public class LowpanScanner {
}
/** Sets an instance of {@link LowpanScanner.Callback} to receive events. */
- public void setCallback(@Nullable Callback cb, @Nullable Handler handler) {
+ public synchronized void setCallback(@Nullable Callback cb, @Nullable Handler handler) {
mCallback = cb;
mHandler = handler;
}
@@ -110,7 +106,7 @@ public class LowpanScanner {
* @return the current channel mask, or <code>null</code> if no channel mask is currently set.
*/
public @Nullable Collection<Integer> getChannelMask() {
- return mChannelMask.clone();
+ return (Collection<Integer>) mChannelMask.clone();
}
/**
@@ -179,17 +175,24 @@ public class LowpanScanner {
ILowpanNetScanCallback binderListener =
new ILowpanNetScanCallback.Stub() {
public void onNetScanBeacon(Map parameters) {
- Callback callback = mCallback;
- Handler handler = mHandler;
+ Callback callback;
+ Handler handler;
+
+ synchronized (LowpanScanner.this) {
+ callback = mCallback;
+ handler = mHandler;
+ }
if (callback == null) {
return;
}
- Runnable runnable = () -> callback.onNetScanBeacon(
- new LowpanBeaconInfo.Builder()
- .updateFromMap(parameters)
- .build());
+ Runnable runnable =
+ () ->
+ callback.onNetScanBeacon(
+ new LowpanBeaconInfo.Builder()
+ .updateFromMap(parameters)
+ .build());
if (handler != null) {
handler.post(runnable);
@@ -199,8 +202,13 @@ public class LowpanScanner {
}
public void onNetScanFinished() {
- Callback callback = mCallback;
- Handler handler = mHandler;
+ Callback callback;
+ Handler handler;
+
+ synchronized (LowpanScanner.this) {
+ callback = mCallback;
+ handler = mHandler;
+ }
if (callback == null) {
return;
@@ -218,7 +226,7 @@ public class LowpanScanner {
try {
mBinder.startNetScan(map, binderListener);
- } catch (ServiceSpecificException|RemoteException x) {
+ } catch (ServiceSpecificException | RemoteException x) {
LowpanException.throwAsPublicException(x);
}
}
@@ -257,7 +265,8 @@ public class LowpanScanner {
return;
}
- Runnable runnable = () -> {
+ Runnable runnable =
+ () -> {
if (callback != null) {
LowpanEnergyScanResult result =
new LowpanEnergyScanResult();