Merge "Honor country code change in wifi disabled state" into mnc-dr-dev
diff --git a/service/java/com/android/server/wifi/DummyWifiLogger.java b/service/java/com/android/server/wifi/DummyWifiLogger.java
new file mode 100644
index 0000000..2727b8c
--- /dev/null
+++ b/service/java/com/android/server/wifi/DummyWifiLogger.java
@@ -0,0 +1,29 @@
+
+package com.android.server.wifi;
+
+import android.util.Log;
+
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
+
+class DummyWifiLogger {
+
+    public DummyWifiLogger() { }
+
+    public synchronized void startLogging(boolean verboseEnabled) { }
+
+    public synchronized void startPacketLog() { }
+
+    public synchronized void stopPacketLog() { }
+
+    public synchronized void stopLogging() { }
+
+    public synchronized void captureBugReportData(int reason) { }
+
+    public synchronized void captureAlertData(int errorCode, byte[] alertData) { }
+
+    public synchronized void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+        pw.println("*** firmware logging disabled, no debug data ****");
+        pw.println("set config_wifi_enable_wifi_firmware_debugging to enable");
+    }
+}
\ No newline at end of file
diff --git a/service/java/com/android/server/wifi/WifiLogger.java b/service/java/com/android/server/wifi/WifiLogger.java
index 8add779..c3f6510 100644
--- a/service/java/com/android/server/wifi/WifiLogger.java
+++ b/service/java/com/android/server/wifi/WifiLogger.java
@@ -35,7 +35,7 @@
 /**
  * Tracks various logs for framework
  */
-class WifiLogger  {
+class WifiLogger extends DummyWifiLogger  {
 
     private static final String TAG = "WifiLogger";
     private static final boolean DBG = false;
@@ -92,6 +92,7 @@
         mWifiStateMachine = wifiStateMachine;
     }
 
+    @Override
     public synchronized void startLogging(boolean verboseEnabled) {
         mFirmwareVersion = WifiNative.getFirmwareVersion();
         mDriverVersion = WifiNative.getDriverVersion();
@@ -112,6 +113,7 @@
         }
     }
 
+    @Override
     public synchronized void startPacketLog() {
         if (mPerPacketRingBuffer != null) {
             startLoggingRingBuffer(mPerPacketRingBuffer);
@@ -120,6 +122,7 @@
         }
     }
 
+    @Override
     public synchronized void stopPacketLog() {
         if (mPerPacketRingBuffer != null) {
             stopLoggingRingBuffer(mPerPacketRingBuffer);
@@ -128,6 +131,7 @@
         }
     }
 
+    @Override
     public synchronized void stopLogging() {
         if (mLogLevel != VERBOSE_NO_LOG) {
             //resetLogHandler only can be used when you terminate all logging since all handler will
@@ -143,17 +147,20 @@
         }
     }
 
+    @Override
     public synchronized void captureBugReportData(int reason) {
         BugReport report = captureBugreport(reason, true);
         mLastBugReports.addLast(report);
     }
 
+    @Override
     public synchronized void captureAlertData(int errorCode, byte[] alertData) {
         BugReport report = captureBugreport(errorCode, /* captureFWDump = */ true);
         report.alertData = alertData;
         mLastAlerts.addLast(report);
     }
 
+    @Override
     public synchronized void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
         pw.println("Chipset information :-----------------------------------------------");
         pw.println("FW Version is: " + mFirmwareVersion);
@@ -236,7 +243,7 @@
         }
     }
 
-    static class LimitedCircularArray<E> {
+    private static class LimitedCircularArray<E> {
         private CircularArray<E> mArray;
         private int mMax;
         LimitedCircularArray(int max) {
diff --git a/service/java/com/android/server/wifi/WifiStateMachine.java b/service/java/com/android/server/wifi/WifiStateMachine.java
index 355a634..87ed29c 100644
--- a/service/java/com/android/server/wifi/WifiStateMachine.java
+++ b/service/java/com/android/server/wifi/WifiStateMachine.java
@@ -194,7 +194,7 @@
     private WifiAutoJoinController mWifiAutoJoinController;
     private INetworkManagementService mNwService;
     private ConnectivityManager mCm;
-    private WifiLogger mWifiLogger;
+    private DummyWifiLogger mWifiLogger;
     private WifiApConfigStore mWifiApConfigStore;
     private final boolean mP2pSupported;
     private final AtomicBoolean mP2pConnected = new AtomicBoolean(false);
@@ -1124,7 +1124,15 @@
         mWifiAutoJoinController = new WifiAutoJoinController(context, this,
                 mWifiConfigStore, mWifiConnectionStatistics, mWifiNative);
         mWifiMonitor = new WifiMonitor(this, mWifiNative);
-        mWifiLogger = new WifiLogger(this);
+
+        boolean enableFirmwareLogs = mContext.getResources().getBoolean(
+                R.bool.config_wifi_enable_wifi_firmware_debugging);
+
+        if (enableFirmwareLogs) {
+            mWifiLogger = new WifiLogger(this);
+        } else {
+            mWifiLogger = new DummyWifiLogger();
+        }
 
         mWifiInfo = new WifiInfo();
         mSupplicantStateTracker = new SupplicantStateTracker(context, this, mWifiConfigStore,
@@ -8477,6 +8485,13 @@
                     }
                     return NOT_HANDLED;
                 case WifiMonitor.NETWORK_CONNECTION_EVENT:
+                    mWifiInfo.setBSSID((String) message.obj);
+                    mLastNetworkId = message.arg1;
+                    mWifiInfo.setNetworkId(mLastNetworkId);
+                    if(!mLastBssid.equals((String) message.obj)) {
+                        mLastBssid = (String) message.obj;
+                        sendNetworkStateChangeBroadcast(mLastBssid);
+                    }
                     break;
                 case CMD_RSSI_POLL:
                     if (message.arg1 == mRssiPollToken) {