Make sure to cleanup rssi cmd before starting new one
Bug: 24196771
Change-Id: Ied140eac38452c4f914c188ff87c37182d79c5ff
diff --git a/service/java/com/android/server/wifi/WifiNative.java b/service/java/com/android/server/wifi/WifiNative.java
index d762f47..ca1ddc9 100644
--- a/service/java/com/android/server/wifi/WifiNative.java
+++ b/service/java/com/android/server/wifi/WifiNative.java
@@ -1606,7 +1606,9 @@
synchronized public static void stopScan() {
synchronized (mLock) {
if (isHalStarted()) {
- stopScanNative(sWlan0Index, sScanCmdId);
+ if (sScanCmdId != 0) {
+ stopScanNative(sWlan0Index, sScanCmdId);
+ }
sScanSettings = null;
sScanEventHandler = null;
sScanCmdId = 0;
@@ -2452,9 +2454,18 @@
sWifiRssiEventHandler = rssiEventHandler;
synchronized (mLock) {
if (isHalStarted()) {
+ if (sRssiMonitorCmdId != 0) {
+ stopRssiMonitoring();
+ }
+
sRssiMonitorCmdId = getNewCmdIdLocked();
Log.d(TAG, "sRssiMonitorCmdId = " + sRssiMonitorCmdId);
- return startRssiMonitoringNative(sWlan0Index, sRssiMonitorCmdId, maxRssi, minRssi);
+ int ret = startRssiMonitoringNative(sWlan0Index, sRssiMonitorCmdId,
+ maxRssi, minRssi);
+ if (ret != 0) { // if not success
+ sRssiMonitorCmdId = 0;
+ }
+ return ret;
} else {
return -1;
}
@@ -2467,7 +2478,12 @@
Log.d(TAG, "stopRssiMonitoring, cmdId " + sRssiMonitorCmdId);
synchronized (mLock) {
if (isHalStarted()) {
- return stopRssiMonitoringNative(sWlan0Index, sRssiMonitorCmdId);
+ int ret = 0;
+ if (sRssiMonitorCmdId != 0) {
+ ret = stopRssiMonitoringNative(sWlan0Index, sRssiMonitorCmdId);
+ }
+ sRssiMonitorCmdId = 0;
+ return ret;
} else {
return -1;
}