public Set<Chipset> getDetectedChipsets(Shell shell, LogOutput log) {
    log.log("Scanning for known android hardware");

    Set<Chipset> detected_chipsets = new TreeSet<Chipset>();
    boolean hasNetlink = hasNl80211(shell);
    boolean foundSupported = false;

    File detectScripts = new File(detectPath);
    if (!detectScripts.isDirectory()) return null;

    for (File script : detectScripts.listFiles()) {
      if (!script.getName().endsWith(".detect")) continue;

      Chipset c = Chipset.FromFile(script);
      if (testChipset(c, hasNetlink)) {
        detected_chipsets.add(c);
        if (!c.experimental) foundSupported = true;
      }
    }

    if (!foundSupported) {
      log.log("Hardware may be unknown, scanning for wifi modules");
      inventSupport(detected_chipsets, hasNetlink);
    }
    return detected_chipsets;
  }
 public void setChipsetName(String value) {
   setChipset(Chipset.FromFile(new File(detectPath, value + ".detect")));
 }