/* * Copyright (C) 2011-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.SoundAndVib; 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 HwVolumeSetting extends SettingManager { public static final String KEY_AVOL_HP = "avol_hp"; public static final String KEY_AVOL_HP_GAIN = "avol_hp_gain"; public static final String KEY_AVOL_RC = "avol_rc"; public static final String KEY_AVOL_SP = "avol_sp"; public static final String KEY_DVOL_DAC_MASTER = "dvol_dac_master"; public static final String KEY_DVOL_DAC_ATT = "dvol_dac_att"; public static final String KEY_DVOL_DIR0 = "dvol_dir0"; public static final String KEY_DVOL_DIR0_ATT = "dvol_dir0_att"; public static final int AVOL_HP_MAX = 20; public static final int AVOL_HP_MIN = -20; public static final int AVOL_HP_GAIN_MAX = 3; public static final int AVOL_HP_GAIN_MIN = -3; public static final int AVOL_RC_MAX = 20; public static final int AVOL_RC_MIN = -20; public static final int AVOL_SP_MAX = 20; public static final int AVOL_SP_MIN = -20; public static final int DVOL_DAC_MASTER_MAX = 20; public static final int DVOL_DAC_MASTER_MIN = -20; public static final int DVOL_DAC_ATT_MAX = 20; public static final int DVOL_DAC_ATT_MIN = -20; public static final int DVOL_DIR0_MAX = 20; public static final int DVOL_DIR0_MIN = -20; public static final int DVOL_DIR0_ATT_MAX = 20; public static final int DVOL_DIR0_ATT_MIN = -20; private static final String CTRL_PATH = "/sys/devices/virtual/sound/sound_mc1n2"; private final SysFs mSysFsAvolHp = new SysFs(CTRL_PATH + "/AVOL_HP"); private final SysFs mSysFsAvolHpGain = new SysFs(CTRL_PATH + "/AVOL_HP_GAIN"); private final SysFs mSysFsAvolRc = new SysFs(CTRL_PATH + "/AVOL_RC"); private final SysFs mSysFsAvolSp = new SysFs(CTRL_PATH + "/AVOL_SP"); private final SysFs mSysFsDvolDacMaster = new SysFs(CTRL_PATH + "/DVOL_DAC_MASTER"); private final SysFs mSysFsDvolDacAtt = new SysFs(CTRL_PATH + "/DVOL_DAC_ATT"); private final SysFs mSysFsDvolDir0 = new SysFs(CTRL_PATH + "/DVOL_DIR0"); private final SysFs mSysFsDvolDir0Att = new SysFs(CTRL_PATH + "/DVOL_DIR0_ATT"); private final SysFs mSysFsUpdateVolume = new SysFs(CTRL_PATH + "/update_volume"); public HwVolumeSetting(Context context, RootProcess rootProcess) { super(context, rootProcess); } public HwVolumeSetting(Context context) { this(context, null); } // AVOL_HP public boolean isEnableAvolHp() { return mSysFsAvolHp.exists(); } public String getAvolHp() { return mSysFsAvolHp.read(mRootProcess); } public void setAvolHp(String value) { mSysFsAvolHp.write(value, mRootProcess); } public String loadAvolHp() { String ret = getStringValue(KEY_AVOL_HP); if (ret == null) { return "0"; } return ret; } public void saveAvolHp(String value) { setValue(KEY_AVOL_HP, value); } // AVOL_HP_GAIN public boolean isEnableAvolHpGain() { return mSysFsAvolHpGain.exists(); } public String getAvolHpGain() { return mSysFsAvolHpGain.read(mRootProcess); } public void setAvolHpGain(String value) { mSysFsAvolHpGain.write(value, mRootProcess); } public String loadAvolHpGain() { String ret = getStringValue(KEY_AVOL_HP_GAIN); if (ret == null) { return "0"; } return ret; } public void saveAvolHpGain(String value) { setValue(KEY_AVOL_HP_GAIN, value); } // AVOL_RC public boolean isEnableAvolRc() { return mSysFsAvolRc.exists(); } public String getAvolRc() { return mSysFsAvolRc.read(mRootProcess); } public void setAvolRc(String value) { mSysFsAvolRc.write(value, mRootProcess); } public String loadAvolRc() { String ret = getStringValue(KEY_AVOL_RC); if (ret == null) { return "0"; } return ret; } public void saveAvolRc(String value) { setValue(KEY_AVOL_RC, value); } // AVOL_SP public boolean isEnableAvolSp() { return mSysFsAvolSp.exists(); } public String getAvolSp() { return mSysFsAvolSp.read(mRootProcess); } public void setAvolSp(String value) { mSysFsAvolSp.write(value, mRootProcess); } public String loadAvolSp() { String ret = getStringValue(KEY_AVOL_SP); if (ret == null) { return "0"; } return ret; } public void saveAvolSp(String value) { setValue(KEY_AVOL_SP, value); } // DVOL_DAC_MASTER public boolean isEnableDvolDacMaster() { return mSysFsDvolDacMaster.exists(); } public String getDvolDacMaster() { return mSysFsDvolDacMaster.read(mRootProcess); } public void setDvolDacMaster(String value) { mSysFsDvolDacMaster.write(value, mRootProcess); } public String loadDvolDacMaster() { String ret = getStringValue(KEY_DVOL_DAC_MASTER); if (ret == null) { return "0"; } return ret; } public void saveDvolDacMaster(String value) { setValue(KEY_DVOL_DAC_MASTER, value); } // DVOL_DAC_ATT public boolean isEnableDvolDacAtt() { return mSysFsDvolDacAtt.exists(); } public String getDvolDacAtt() { return mSysFsDvolDacAtt.read(mRootProcess); } public void setDvolDacAtt(String value) { mSysFsDvolDacAtt.write(value, mRootProcess); } public String loadDvolDacAtt() { String ret = getStringValue(KEY_DVOL_DAC_ATT); if (ret == null) { return "0"; } return ret; } public void saveDvolDacAtt(String value) { setValue(KEY_DVOL_DAC_ATT, value); } // DVOL_DIR0 public boolean isEnableDvolDir0() { return mSysFsDvolDir0.exists(); } public String getDvolDir0() { return mSysFsDvolDir0.read(mRootProcess); } public void setDvolDir0(String value) { mSysFsDvolDir0.write(value, mRootProcess); } public String loadDvolDir0() { String ret = getStringValue(KEY_DVOL_DIR0); if (ret == null) { return "0"; } return ret; } public void saveDvolDir0(String value) { setValue(KEY_DVOL_DIR0, value); } // DVOL_DIR0_ATT public boolean isEnableDvolDir0Att() { return mSysFsDvolDir0Att.exists(); } public String getDvolDir0Att() { return mSysFsDvolDir0Att.read(mRootProcess); } public void setDvolDir0Att(String value) { mSysFsDvolDir0Att.write(value, mRootProcess); } public String loadDvolDir0Att() { String ret = getStringValue(KEY_DVOL_DIR0_ATT); if (ret == null) { return "0"; } return ret; } public void saveDvolDir0Att(String value) { setValue(KEY_DVOL_DIR0_ATT, value); } public void updateVolume() { mSysFsUpdateVolume.write("1", mRootProcess); } @Override public void setOnBoot() { String value; value = loadAvolHp(); if (!Misc.isNullOfEmpty(value)) { setAvolHp(value); } value = loadAvolHpGain(); if (!Misc.isNullOfEmpty(value)) { setAvolHpGain(value); } value = loadAvolRc(); if (!Misc.isNullOfEmpty(value)) { setAvolRc(value); } value = loadAvolSp(); if (!Misc.isNullOfEmpty(value)) { setAvolSp(value); } value = loadDvolDacMaster(); if (!Misc.isNullOfEmpty(value)) { setDvolDacMaster(value); } value = loadDvolDacAtt(); if (!Misc.isNullOfEmpty(value)) { setDvolDacAtt(value); } value = loadDvolDir0(); if (!Misc.isNullOfEmpty(value)) { setDvolDir0(value); } value = loadDvolDir0Att(); if (!Misc.isNullOfEmpty(value)) { setDvolDir0Att(value); } } @Override public void setRecommend() { // noop } @Override public void reset() { clearValue(KEY_AVOL_HP); clearValue(KEY_AVOL_HP_GAIN); clearValue(KEY_AVOL_RC); clearValue(KEY_AVOL_SP); clearValue(KEY_DVOL_DAC_MASTER); clearValue(KEY_DVOL_DAC_ATT); clearValue(KEY_DVOL_DIR0); clearValue(KEY_DVOL_DIR0_ATT); } }