/* * Copyright (C) 2012 sakuramilk <c.sakuramilk@gmail.com> * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.sakuramilk.TweakGS2.BusControl; import android.content.Context; import net.sakuramilk.util.Misc; import net.sakuramilk.util.RootProcess; import net.sakuramilk.util.SettingManager; import net.sakuramilk.util.SysFs; public class BusControlSetting extends SettingManager { public static final String KEY_BUS_ASV_GROUP = "bus_asv_group"; public static final String KEY_BUS_UP_THRESHOLD = "bus_up_threshold"; public static final String KEY_BUS_DOWN_THRESHOLD = "bus_down_threshold"; public static final String KEY_BUS_SET_ON_BOOT = "bus_set_on_boot"; public static final int THRESHOLD_MAX = 100; public static final int THRESHOLD_MIN = 1; private static final String CRTL_PATH = "/sys/devices/system/cpu/cpufreq"; private final SysFs mSysFsAsvGroup = new SysFs(CRTL_PATH + "/busfreq_asv_group"); private final SysFs mSysFsUpThreshold = new SysFs(CRTL_PATH + "/busfreq_up_threshold"); private final SysFs mSysFsDownThreshold = new SysFs(CRTL_PATH + "/busfreq_down_threshold"); //private final SysFs mSysFsCurrentLevel = new SysFs(CRTL_PATH + "/busfreq_current_level"); //private final SysFs mSysFsTimeInState = new SysFs(CRTL_PATH + "/busfreq_time_in_state"); public BusControlSetting(Context context, RootProcess rootProcess) { super(context, rootProcess); } public BusControlSetting(Context context) { this(context, null); } public boolean isEnableAvsGroup() { return mSysFsAsvGroup.exists(); } public String getAsvGroup() { return mSysFsAsvGroup.read(mRootProcess); } public void setAsvGroup(String value) { mSysFsAsvGroup.write(value, mRootProcess); } public String loadAsvGroup() { return getStringValue(KEY_BUS_ASV_GROUP); } public void saveAsvGroup(String value) { setValue(KEY_BUS_ASV_GROUP, value); } public boolean isEnableUpThreshold() { return mSysFsUpThreshold.exists(); } public String getUpThreshold() { return mSysFsUpThreshold.read(mRootProcess); } public void setUpThreshold(String value) { mSysFsUpThreshold.write(value, mRootProcess); } public String loadUpThreshold() { return getStringValue(KEY_BUS_UP_THRESHOLD); } public void saveUpThreshold(String value) { setValue(KEY_BUS_UP_THRESHOLD, value); } public boolean isEnableDownThreshold() { return mSysFsDownThreshold.exists(); } public String getDownThreshold() { return mSysFsDownThreshold.read(mRootProcess); } public void setDownThreshold(String value) { mSysFsDownThreshold.write(value, mRootProcess); } public String loadDownThreshold() { return getStringValue(KEY_BUS_DOWN_THRESHOLD); } public void saveDownThreshold(String value) { setValue(KEY_BUS_DOWN_THRESHOLD, value); } public boolean loadSetOnBoot() { return getBooleanValue(KEY_BUS_SET_ON_BOOT); } public void saveSetOnBoot(boolean setOnBoot) { setValue(KEY_BUS_SET_ON_BOOT, setOnBoot); } @Override public void setOnBoot() { if (!loadSetOnBoot()) { return; } String value; if (isEnableAvsGroup()) { value = loadAsvGroup(); if (!Misc.isNullOfEmpty(value)) { setAsvGroup(value); } } if (isEnableUpThreshold()) { value = loadUpThreshold(); if (!Misc.isNullOfEmpty(value)) { setUpThreshold(value); } } if (isEnableDownThreshold()) { value = loadDownThreshold(); if (!Misc.isNullOfEmpty(value)) { setDownThreshold(value); } } } @Override public void setRecommend() { // noop } @Override public void reset() { clearValue(KEY_BUS_ASV_GROUP); clearValue(KEY_BUS_UP_THRESHOLD); clearValue(KEY_BUS_DOWN_THRESHOLD); clearValue(KEY_BUS_SET_ON_BOOT); } }