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;
             }