private void updateGovernorFeatures() { IGovernorModel governorModel = getGovernorModel(); GovernorConfig governorConfig = GovernorConfigHelper.getGovernorConfig(governorModel.getGov()); int up = governorModel.getGovernorThresholdUp(); int down = governorModel.getGovernorThresholdDown(); boolean hasThreshholdUp = governorConfig.hasThreshholdUpFeature(); boolean hasThreshholdDown = governorConfig.hasThreshholdDownFeature(); if (hasThreshholdUp) { llGovernorThresholds.setVisibility(View.VISIBLE); } else { llGovernorThresholds.setVisibility(View.GONE); } if (hasThreshholdUp) { labelGovThreshUp.setVisibility(View.VISIBLE); etGovTreshUp.setVisibility(View.VISIBLE); if (up < 2) { up = Integer.parseInt(origThreshUp); } if (up < 2) { up = 90; } etGovTreshUp.setText(up + ""); } else { governorModel.setGovernorThresholdUp(0); labelGovThreshUp.setVisibility(View.INVISIBLE); etGovTreshUp.setVisibility(View.INVISIBLE); etGovTreshUp.setText("-1"); } if (hasThreshholdDown) { labelGovThreshDown.setVisibility(View.VISIBLE); etGovTreshDown.setVisibility(View.VISIBLE); if (down < 1) { down = Integer.parseInt(origThreshDown); } if (down >= up || down < 1) { if (up > 30) { down = up - 10; } else { down = up - 1; } } etGovTreshDown.setText(down + ""); } else { governorModel.setGovernorThresholdDown(0); labelGovThreshDown.setVisibility(View.INVISIBLE); etGovTreshDown.setVisibility(View.INVISIBLE); etGovTreshDown.setText("-1"); } if (governorConfig.hasPowersaveBias()) { llPowersaveBias.setVisibility(View.VISIBLE); } else { llPowersaveBias.setVisibility(View.GONE); } }
private void fixGovernors() { Cursor c = null; String[] availCpuGov = CpuHandler.getInstance().getAvailCpuGov(); TreeMap<String, Boolean> availGovs = new TreeMap<String, Boolean>(); for (String gov : availCpuGov) { availGovs.put(gov, Boolean.TRUE); } try { c = contentResolver.query( DB.VirtualGovernor.CONTENT_URI, DB.VirtualGovernor.PROJECTION_DEFAULT, null, null, null); while (c.moveToNext()) { String govs = c.getString(DB.VirtualGovernor.INDEX_REAL_GOVERNOR); String[] govitems = govs.split("\\|"); boolean found = false; for (String gov : govitems) { Boolean avail = availGovs.get(gov); if (avail != null && avail) { Logger.i("Using " + gov); ContentValues values = new ContentValues(1); values.put(DB.VirtualGovernor.NAME_REAL_GOVERNOR, gov); // check for thresholds GovernorConfig governorConfig = GovernorConfigHelper.getGovernorConfig(gov); if (!governorConfig.hasThreshholdUpFeature()) { values.put(DB.VirtualGovernor.NAME_GOVERNOR_THRESHOLD_UP, -1); } if (!governorConfig.hasThreshholdDownFeature()) { values.put(DB.VirtualGovernor.NAME_GOVERNOR_THRESHOLD_DOWN, -1); } if (contentResolver.update( DB.VirtualGovernor.CONTENT_URI, values, DB.SELECTION_BY_ID, new String[] {Long.toString(c.getLong(DB.INDEX_ID))}) > 0) { found = true; break; } } } if (!found) { // we did not find a compatible gov so use none ContentValues values = new ContentValues(1); values.put(DB.VirtualGovernor.NAME_REAL_GOVERNOR, RootHandler.NOT_AVAILABLE); contentResolver.update( DB.VirtualGovernor.CONTENT_URI, values, DB.SELECTION_BY_ID, new String[] {Long.toString(c.getLong(DB.INDEX_ID))}); } } } finally { if (c != null) { c.close(); c = null; } } }