public void updateWifiConfigWithScanResults(List<ScanResult> scanResults) {
    List<String> scanResultsStrings = new ArrayList<String>();

    synchronized (wifiNetworkStatusLock) {
      // clear all the savedConfigurations AP status
      if (!getWifiNetworkStatus().isEmpty()) {
        App.getTraceUtils().startTrace(TAG, "Clear scan status from AP configs", Log.DEBUG);
        for (WiFiApConfig conf : getWifiNetworkStatus().values()) {
          conf.clearScanStatus();
        }
        App.getTraceUtils().stopTrace(TAG, "Clear scan status from AP configs", Log.DEBUG);
      }

      if (scanResults != null) {
        for (ScanResult res : scanResults) {
          scanResultsStrings.add(res.SSID + " level: " + res.level);
          String currSSID = ProxyUtils.cleanUpSSID(res.SSID);
          SecurityType security = ProxyUtils.getSecurity(res);
          APLNetworkId aplNetworkId = new APLNetworkId(currSSID, security);

          if (getWifiNetworkStatus().containsKey(aplNetworkId)) {
            WiFiApConfig conf = getWifiNetworkStatus().get(aplNetworkId);
            if (conf != null) {
              conf.updateScanResults(res);
            }
          } else {
            if (getWifiNetworkStatus().getNotConfiguredWifi().containsKey(aplNetworkId)) {
              getWifiNetworkStatus().getNotConfiguredWifi().remove(aplNetworkId);
            }

            getWifiNetworkStatus().getNotConfiguredWifi().put(aplNetworkId, res);
          }
        }
      } else {
        Timber.w("No ScanResults available for updateWifiConfigWithScanResults");
      }
    }

    Timber.d("Updating from scanresult: " + TextUtils.join(", ", scanResultsStrings.toArray()));
  }