From e01ea538b90db88ec24aae1c1e3337b2e32de31d Mon Sep 17 00:00:00 2001 From: spezi77 Date: Sat, 15 Apr 2017 02:04:46 +0200 Subject: [PATCH 1/2] Vibration: add support for marlin/sailfish. * relevant sysfs: "vib_strength" * value range 0..100 Further values are available but w/o effect on vibration strength * vmax_light_mv: 1600mV * vmax_strong_mv: 3200mV * vib_voltage Signed-off-by: spezi77 --- .../kerneladiutor/fragments/kernel/MiscFragment.java | 11 +++++++++-- .../com/grarak/kerneladiutor/utils/Constants.java | 1 + .../com/grarak/kerneladiutor/utils/kernel/Misc.java | 6 ++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/grarak/kerneladiutor/fragments/kernel/MiscFragment.java b/app/src/main/java/com/grarak/kerneladiutor/fragments/kernel/MiscFragment.java index 25277294..81fe1005 100644 --- a/app/src/main/java/com/grarak/kerneladiutor/fragments/kernel/MiscFragment.java +++ b/app/src/main/java/com/grarak/kerneladiutor/fragments/kernel/MiscFragment.java @@ -101,7 +101,10 @@ private void vibrationInit() { mVibrationCard = new SeekBarCardView.DSeekBarCard(list); mVibrationCard.setTitle(getString(R.string.vibration_strength)); - mVibrationCard.setProgress(Math.round((Misc.getCurVibration() - min) / offset)); + if ((max - min) == 100) + mVibrationCard.setProgress(Misc.getCurVibration()); + else + mVibrationCard.setProgress(Math.round((Misc.getCurVibration() - min) / offset)); mVibrationCard.setOnDSeekBarCardListener(this); addView(mVibrationCard); @@ -290,7 +293,11 @@ public void onStop(SeekBarCardView.DSeekBarCard dSeekBarCard, int position) { int max = Misc.getVibrationMax(); int min = Misc.getVibrationMin(); float offset = (max - min) / (float) 101; - Misc.setVibration(Math.round(offset * position) + min, getActivity()); + + if ((max - min) == 100) + Misc.setVibration(position, getActivity()); + else + Misc.setVibration(Math.round(offset * position) + min, getActivity()); // Vibrate new Thread(new Runnable() { diff --git a/app/src/main/java/com/grarak/kerneladiutor/utils/Constants.java b/app/src/main/java/com/grarak/kerneladiutor/utils/Constants.java index 1e4ecc8e..b933ac9d 100755 --- a/app/src/main/java/com/grarak/kerneladiutor/utils/Constants.java +++ b/app/src/main/java/com/grarak/kerneladiutor/utils/Constants.java @@ -907,6 +907,7 @@ public interface Constants { // Vibration String[] VIBRATION_ARRAY = { + "/sys/devices/virtual/timed_output/vibrator/vib_strength", "/sys/module/qpnp_vibrator/parameters/vib_voltage", "/sys/vibrator/pwmvalue", "/sys/class/timed_output/vibrator/amp", diff --git a/app/src/main/java/com/grarak/kerneladiutor/utils/kernel/Misc.java b/app/src/main/java/com/grarak/kerneladiutor/utils/kernel/Misc.java index 258233bf..c3f458ae 100644 --- a/app/src/main/java/com/grarak/kerneladiutor/utils/kernel/Misc.java +++ b/app/src/main/java/com/grarak/kerneladiutor/utils/kernel/Misc.java @@ -304,6 +304,9 @@ public static int getVibrationMin() { return VIBRATION_MIN; } + if (VIBRATION_PATH.equals("/sys/devices/virtual/timed_output/vibrator/vib_strength")) + return 0; + for (int i = 0; i < VIBRATION_ARRAY.length; i++) if (VIBRATION_PATH.equals(VIBRATION_ARRAY[i])) VIBRATION_MIN = VIBRATION_MAX_MIN_ARRAY[i][1]; @@ -325,6 +328,9 @@ public static int getVibrationMax() { return VIBRATION_MAX; } + if (VIBRATION_PATH.equals("/sys/devices/virtual/timed_output/vibrator/vib_strength")) + return 100; + for (int i = 0; i < VIBRATION_ARRAY.length; i++) if (VIBRATION_PATH.equals(VIBRATION_ARRAY[i])) VIBRATION_MAX = VIBRATION_MAX_MIN_ARRAY[i][0]; From fcbdda7dbeb532c5d61194dcd794942cf4b28ea7 Mon Sep 17 00:00:00 2001 From: spezi77 Date: Sat, 15 Apr 2017 01:38:13 +0200 Subject: [PATCH 2/2] I/O scheduler: add suport for current devices, e.g. marlin, sailfish. * sysfs paths taken from Grarak: https://github.com/Grarak/KernelAdiutor/commit/3f21218aaec82a2fd7d777823ccbc64afe3ad4c0 Signed-off-by: spezi77 --- .../fragments/kernel/IOFragment.java | 144 ++++++++++++++---- .../grarak/kerneladiutor/utils/Constants.java | 11 +- .../grarak/kerneladiutor/utils/kernel/IO.java | 71 +++++++-- 3 files changed, 180 insertions(+), 46 deletions(-) diff --git a/app/src/main/java/com/grarak/kerneladiutor/fragments/kernel/IOFragment.java b/app/src/main/java/com/grarak/kerneladiutor/fragments/kernel/IOFragment.java index 48debd11..1bfb6fdd 100644 --- a/app/src/main/java/com/grarak/kerneladiutor/fragments/kernel/IOFragment.java +++ b/app/src/main/java/com/grarak/kerneladiutor/fragments/kernel/IOFragment.java @@ -83,11 +83,11 @@ public static class IOPart extends RecyclerViewFragment implements PopupCardView private final List list = new ArrayList<>(); - private PopupCardView.DPopupCard mInternalSchedulerCard, mExternalSchedulerCard; + private PopupCardView.DPopupCard mInternalSchedulerCard, mInternalSchedulerCard_SDA, mInternalSchedulerCard_DM0, mExternalSchedulerCard; - private CardViewItem.DCardView mInternalTunableCard, mExternalTunableCard; + private CardViewItem.DCardView mInternalTunableCard, mInternalTunableCard_SDA, mInternalTunableCard_DM0, mExternalTunableCard; - private PopupCardView.DPopupCard mInternalReadAheadCard, mExternalReadAheadCard, mIOAffinityCard; + private PopupCardView.DPopupCard mInternalReadAheadCard, mInternalReadAheadCard_SDA, mInternalReadAheadCard_DM0, mExternalReadAheadCard, mIOAffinityCard; private SwitchCardView.DSwitchCard mRotationalCard, mIOStatsCard, mIORandomCard; @@ -117,31 +117,79 @@ private void internalStorageInit() { addView(mInternalStorageDivider); - mInternalSchedulerCard = new PopupCardView.DPopupCard(IO.getSchedulers(IO.StorageType.INTERNAL)); - mInternalSchedulerCard.setTitle(getString(R.string.scheduler)); - mInternalSchedulerCard.setDescription(getString(R.string.scheduler_summary)); - mInternalSchedulerCard.setItem(IO.getScheduler(IO.StorageType.INTERNAL)); - mInternalSchedulerCard.setOnDPopupCardListener(this); - - addView(mInternalSchedulerCard); - - mInternalTunableCard = new CardViewItem.DCardView(); - mInternalTunableCard.setTitle(getString(R.string.scheduler_tunable)); - mInternalTunableCard.setDescription(getString(R.string.scheduler_tunable_summary)); - mInternalTunableCard.setOnDCardListener(this); - - addView(mInternalTunableCard); - for (int i = 0; i < 32; i++) readheads.add((i * 128 + 128) + getString(R.string.kb)); - mInternalReadAheadCard = new PopupCardView.DPopupCard(readheads); - mInternalReadAheadCard.setTitle(getString(R.string.read_ahead)); - mInternalReadAheadCard.setDescription(getString(R.string.read_ahead_summary)); - mInternalReadAheadCard.setItem(IO.getReadahead(IO.StorageType.INTERNAL) + getString(R.string.kb)); - mInternalReadAheadCard.setOnDPopupCardListener(this); - - addView(mInternalReadAheadCard); + if (IO.getSchedulers(IO.StorageType.INTERNAL) != null) { + mInternalSchedulerCard = new PopupCardView.DPopupCard(IO.getSchedulers(IO.StorageType.INTERNAL)); + mInternalSchedulerCard.setTitle(getString(R.string.scheduler)); + mInternalSchedulerCard.setDescription(getString(R.string.scheduler_summary)); + mInternalSchedulerCard.setItem(IO.getScheduler(IO.StorageType.INTERNAL)); + mInternalSchedulerCard.setOnDPopupCardListener(this); + + addView(mInternalSchedulerCard); + + mInternalTunableCard = new CardViewItem.DCardView(); + mInternalTunableCard.setTitle(getString(R.string.scheduler_tunable)); + mInternalTunableCard.setDescription(getString(R.string.scheduler_tunable_summary)); + mInternalTunableCard.setOnDCardListener(this); + + addView(mInternalTunableCard); + + mInternalReadAheadCard = new PopupCardView.DPopupCard(readheads); + mInternalReadAheadCard.setTitle(getString(R.string.read_ahead)); + mInternalReadAheadCard.setDescription(getString(R.string.read_ahead_summary)); + mInternalReadAheadCard.setItem(IO.getReadahead(IO.StorageType.INTERNAL) + getString(R.string.kb)); + mInternalReadAheadCard.setOnDPopupCardListener(this); + + addView(mInternalReadAheadCard); + } else if (IO.getSchedulers(IO.StorageType.INTERNAL_SDA) != null) { + mInternalSchedulerCard_SDA = new PopupCardView.DPopupCard(IO.getSchedulers(IO.StorageType.INTERNAL_SDA)); + mInternalSchedulerCard_SDA.setTitle(getString(R.string.scheduler)); + mInternalSchedulerCard_SDA.setDescription(getString(R.string.scheduler_summary)); + mInternalSchedulerCard_SDA.setItem(IO.getScheduler(IO.StorageType.INTERNAL_SDA)); + mInternalSchedulerCard_SDA.setOnDPopupCardListener(this); + + addView(mInternalSchedulerCard_SDA); + + mInternalTunableCard_SDA = new CardViewItem.DCardView(); + mInternalTunableCard_SDA.setTitle(getString(R.string.scheduler_tunable)); + mInternalTunableCard_SDA.setDescription(getString(R.string.scheduler_tunable_summary)); + mInternalTunableCard_SDA.setOnDCardListener(this); + + addView(mInternalTunableCard_SDA); + + mInternalReadAheadCard_SDA = new PopupCardView.DPopupCard(readheads); + mInternalReadAheadCard_SDA.setTitle(getString(R.string.read_ahead)); + mInternalReadAheadCard_SDA.setDescription(getString(R.string.read_ahead_summary)); + mInternalReadAheadCard_SDA.setItem(IO.getReadahead(IO.StorageType.INTERNAL_SDA) + getString(R.string.kb)); + mInternalReadAheadCard_SDA.setOnDPopupCardListener(this); + + addView(mInternalReadAheadCard_SDA); + } else if (IO.getSchedulers(IO.StorageType.INTERNAL_DM0) != null) { + mInternalSchedulerCard_DM0 = new PopupCardView.DPopupCard(IO.getSchedulers(IO.StorageType.INTERNAL_DM0)); + mInternalSchedulerCard_DM0.setTitle(getString(R.string.scheduler)); + mInternalSchedulerCard_DM0.setDescription(getString(R.string.scheduler_summary)); + mInternalSchedulerCard_DM0.setItem(IO.getScheduler(IO.StorageType.INTERNAL_DM0)); + mInternalSchedulerCard_DM0.setOnDPopupCardListener(this); + + addView(mInternalSchedulerCard_DM0); + + mInternalTunableCard_DM0 = new CardViewItem.DCardView(); + mInternalTunableCard_DM0.setTitle(getString(R.string.scheduler_tunable)); + mInternalTunableCard_DM0.setDescription(getString(R.string.scheduler_tunable_summary)); + mInternalTunableCard_DM0.setOnDCardListener(this); + + addView(mInternalTunableCard_DM0); + + mInternalReadAheadCard_DM0 = new PopupCardView.DPopupCard(readheads); + mInternalReadAheadCard_DM0.setTitle(getString(R.string.read_ahead)); + mInternalReadAheadCard_DM0.setDescription(getString(R.string.read_ahead_summary)); + mInternalReadAheadCard_DM0.setItem(IO.getReadahead(IO.StorageType.INTERNAL_DM0) + getString(R.string.kb)); + mInternalReadAheadCard_DM0.setOnDPopupCardListener(this); + + addView(mInternalReadAheadCard_DM0); + } } private void externalStorageInit() { @@ -205,7 +253,6 @@ private void IOAffintyInit() { List list = new ArrayList<>(); for (int i = 0; i < 3; i++) list.add(String.valueOf(i)); - mIOAffinityCard = new PopupCardView.DPopupCard(list); mIOAffinityCard.setTitle(getString(R.string.ioaffitiny)); mIOAffinityCard.setDescription(getString(R.string.ioraffinity_summary)); @@ -220,12 +267,24 @@ public void onItemSelected(PopupCardView.DPopupCard dPopupCard, int position) { if (dPopupCard == mInternalSchedulerCard) IO.setScheduler(IO.StorageType.INTERNAL, IO.getSchedulers(IO.StorageType.INTERNAL) .get(position), getActivity()); + else if (dPopupCard == mInternalSchedulerCard_SDA) + IO.setScheduler(IO.StorageType.INTERNAL_SDA, IO.getSchedulers(IO.StorageType.INTERNAL_SDA) + .get(position), getActivity()); + else if (dPopupCard == mInternalSchedulerCard_DM0) + IO.setScheduler(IO.StorageType.INTERNAL_DM0, IO.getSchedulers(IO.StorageType.INTERNAL_DM0) + .get(position), getActivity()); else if (dPopupCard == mExternalSchedulerCard) IO.setScheduler(IO.StorageType.EXTERNAL, IO.getSchedulers(IO.StorageType.EXTERNAL) .get(position), getActivity()); else if (dPopupCard == mInternalReadAheadCard) IO.setReadahead(IO.StorageType.INTERNAL, Utils.stringToInt(readheads.get(position) .replace(getString(R.string.kb), "")), getActivity()); + else if (dPopupCard == mInternalReadAheadCard_SDA) + IO.setReadahead(IO.StorageType.INTERNAL_SDA, Utils.stringToInt(readheads.get(position) + .replace(getString(R.string.kb), "")), getActivity()); + else if (dPopupCard == mInternalReadAheadCard_DM0) + IO.setReadahead(IO.StorageType.INTERNAL_DM0, Utils.stringToInt(readheads.get(position) + .replace(getString(R.string.kb), "")), getActivity()); else if (dPopupCard == mExternalReadAheadCard) IO.setReadahead(IO.StorageType.EXTERNAL, Utils.stringToInt(readheads.get(position) .replace(getString(R.string.kb), "")), getActivity()); @@ -235,9 +294,16 @@ else if (dPopupCard == mIOAffinityCard) @Override public void onClick(CardViewItem.DCardView dCardView) { - ioFragment.storageType = dCardView == mInternalTunableCard ? IO.StorageType.INTERNAL : IO.StorageType.EXTERNAL; - ioFragment.schedulerPart.reload(); - ioFragment.setCurrentItem(1); + if (dCardView == mInternalTunableCard) + ioFragment.storageType = IO.StorageType.INTERNAL; + else if (dCardView == mInternalTunableCard_DM0) + ioFragment.storageType = IO.StorageType.INTERNAL_DM0; + else if (dCardView == mInternalTunableCard_SDA) + ioFragment.storageType = IO.StorageType.INTERNAL_SDA; + else + ioFragment.storageType = IO.StorageType.EXTERNAL; + ioFragment.schedulerPart.reload(); + ioFragment.setCurrentItem(1); } @Override @@ -255,14 +321,26 @@ public static class SchedulerPart extends PathReaderFragment { @Override public String getName() { - return IO.getScheduler(ioFragment.storageType == IO.StorageType.INTERNAL ? IO.StorageType.INTERNAL : - IO.StorageType.EXTERNAL); + if (ioFragment.storageType == IO.StorageType.INTERNAL) + return IO.getScheduler(IO.StorageType.INTERNAL); + else if (ioFragment.storageType == IO.StorageType.INTERNAL_DM0) + return IO.getScheduler(IO.StorageType.INTERNAL_DM0); + else if (ioFragment.storageType == IO.StorageType.INTERNAL_SDA) + return IO.getScheduler(IO.StorageType.INTERNAL_SDA); + else + return IO.getScheduler(IO.StorageType.EXTERNAL); } @Override public String getPath() { - return ioFragment.storageType == IO.StorageType.INTERNAL ? IO_INTERNAL_SCHEDULER_TUNABLE : - IO_EXTERNAL_SCHEDULER_TUNABLE; + if (ioFragment.storageType == IO.StorageType.INTERNAL) + return IO_INTERNAL_SCHEDULER_TUNABLE; + else if (ioFragment.storageType == IO.StorageType.INTERNAL_DM0) + return IO_INTERNAL_SCHEDULER_TUNABLE_DM0; + else if (ioFragment.storageType == IO.StorageType.INTERNAL_SDA) + return IO_INTERNAL_SCHEDULER_TUNABLE_SDA; + else + return IO_EXTERNAL_SCHEDULER_TUNABLE; } @Override diff --git a/app/src/main/java/com/grarak/kerneladiutor/utils/Constants.java b/app/src/main/java/com/grarak/kerneladiutor/utils/Constants.java index b933ac9d..ba529c3a 100755 --- a/app/src/main/java/com/grarak/kerneladiutor/utils/Constants.java +++ b/app/src/main/java/com/grarak/kerneladiutor/utils/Constants.java @@ -791,10 +791,17 @@ public interface Constants { // I/O String IO_INTERNAL_SCHEDULER = "/sys/block/mmcblk0/queue/scheduler"; + String IO_INTERNAL_SCHEDULER_SDA = "/sys/block/sda/queue/scheduler"; + String IO_INTERNAL_SCHEDULER_DM0 = "/sys/block/dm-0/queue/scheduler"; + String IO_EXTERNAL_SCHEDULER = "/sys/block/mmcblk1/queue/scheduler"; String IO_INTERNAL_SCHEDULER_TUNABLE = "/sys/block/mmcblk0/queue/iosched"; + String IO_INTERNAL_SCHEDULER_TUNABLE_SDA = "/sys/block/sda/queue/iosched"; + String IO_INTERNAL_SCHEDULER_TUNABLE_DM0 = "/sys/block/dm-0/queue/iosched"; String IO_EXTERNAL_SCHEDULER_TUNABLE = "/sys/block/mmcblk1/queue/iosched"; String IO_INTERNAL_READ_AHEAD = "/sys/block/mmcblk0/queue/read_ahead_kb"; + String IO_INTERNAL_READ_AHEAD_SDA = "/sys/block/sda/queue/read_ahead_kb"; + String IO_INTERNAL_READ_AHEAD_DM0 = "/sys/block/dm-0/queue/read_ahead_kb"; String IO_EXTERNAL_READ_AHEAD = "/sys/block/mmcblk1/queue/read_ahead_kb"; String IO_ROTATIONAL = "/sys/block/mmcblk0/queue/rotational"; @@ -802,8 +809,8 @@ public interface Constants { String IO_RANDOM = "/sys/block/mmcblk0/queue/add_random"; String IO_AFFINITY = "/sys/block/mmcblk0/queue/rq_affinity"; - String[] IO_ARRAY = {IO_INTERNAL_SCHEDULER, IO_EXTERNAL_SCHEDULER, IO_INTERNAL_SCHEDULER_TUNABLE, - IO_EXTERNAL_SCHEDULER_TUNABLE, IO_INTERNAL_READ_AHEAD, IO_EXTERNAL_READ_AHEAD, IO_ROTATIONAL, + String[] IO_ARRAY = {IO_INTERNAL_SCHEDULER, IO_INTERNAL_SCHEDULER_DM0, IO_INTERNAL_SCHEDULER_SDA, IO_EXTERNAL_SCHEDULER, IO_INTERNAL_SCHEDULER_TUNABLE, IO_INTERNAL_SCHEDULER_TUNABLE_DM0, IO_INTERNAL_SCHEDULER_TUNABLE_SDA, + IO_EXTERNAL_SCHEDULER_TUNABLE, IO_INTERNAL_READ_AHEAD, IO_INTERNAL_READ_AHEAD_DM0, IO_INTERNAL_READ_AHEAD_SDA, IO_EXTERNAL_READ_AHEAD, IO_ROTATIONAL, IO_STATS, IO_RANDOM, IO_AFFINITY }; // Kernel Samepage Merging diff --git a/app/src/main/java/com/grarak/kerneladiutor/utils/kernel/IO.java b/app/src/main/java/com/grarak/kerneladiutor/utils/kernel/IO.java index eecebecf..e185be86 100644 --- a/app/src/main/java/com/grarak/kerneladiutor/utils/kernel/IO.java +++ b/app/src/main/java/com/grarak/kerneladiutor/utils/kernel/IO.java @@ -33,17 +33,37 @@ public class IO implements Constants { public enum StorageType { - INTERNAL, EXTERNAL + INTERNAL, INTERNAL_SDA, INTERNAL_DM0, EXTERNAL } public static void setReadahead(StorageType type, int readahead, Context context) { - Control.runCommand(String.valueOf(readahead), type == StorageType.INTERNAL ? IO_INTERNAL_READ_AHEAD : - IO_EXTERNAL_READ_AHEAD, Control.CommandType.GENERIC, context); + String file; + + if (type == StorageType.INTERNAL) + file = IO_INTERNAL_READ_AHEAD; + else if (type == StorageType.INTERNAL_DM0) + file = IO_INTERNAL_READ_AHEAD_DM0; + else if (type == StorageType.INTERNAL_SDA) + file = IO_INTERNAL_READ_AHEAD_SDA; + else + file = IO_EXTERNAL_READ_AHEAD; + + if (file != null) + Control.runCommand(String.valueOf(readahead), file, Control.CommandType.GENERIC, context); } public static int getReadahead(StorageType type) { - String file = type == StorageType.INTERNAL ? IO_INTERNAL_READ_AHEAD - : IO_EXTERNAL_READ_AHEAD; + String file; + + if (type == StorageType.INTERNAL) + file = IO_INTERNAL_READ_AHEAD; + else if (type == StorageType.INTERNAL_DM0) + file = IO_INTERNAL_READ_AHEAD_DM0; + else if (type == StorageType.INTERNAL_SDA) + file = IO_INTERNAL_READ_AHEAD_SDA; + else + file = IO_EXTERNAL_READ_AHEAD; + if (Utils.existFile(file)) { String values = Utils.readFile(file); if (values != null) return Utils.stringToInt(values); @@ -52,13 +72,33 @@ public static int getReadahead(StorageType type) { } public static void setScheduler(StorageType type, String scheduler, Context context) { - Control.runCommand(scheduler, type == StorageType.INTERNAL ? IO_INTERNAL_SCHEDULER : - IO_EXTERNAL_SCHEDULER, Control.CommandType.GENERIC, context); + String file; + + if (type == StorageType.INTERNAL) + file = IO_INTERNAL_SCHEDULER; + else if (type == StorageType.INTERNAL_DM0) + file = IO_INTERNAL_SCHEDULER_DM0; + else if (type == StorageType.INTERNAL_SDA) + file = IO_INTERNAL_SCHEDULER_SDA; + else + file = IO_EXTERNAL_SCHEDULER; + + if (file != null) + Control.runCommand(scheduler, file, Control.CommandType.GENERIC, context); } public static List getSchedulers(StorageType type) { - String file = type == StorageType.INTERNAL ? IO_INTERNAL_SCHEDULER - : IO_EXTERNAL_SCHEDULER; + String file; + + if (type == StorageType.INTERNAL) + file = IO_INTERNAL_SCHEDULER; + else if (type == StorageType.INTERNAL_DM0) + file = IO_INTERNAL_SCHEDULER_DM0; + else if (type == StorageType.INTERNAL_SDA) + file = IO_INTERNAL_SCHEDULER_SDA; + else + file = IO_EXTERNAL_SCHEDULER; + if (Utils.existFile(file)) { String values = Utils.readFile(file); if (values != null) { @@ -75,8 +115,17 @@ public static List getSchedulers(StorageType type) { } public static String getScheduler(StorageType type) { - String file = type == StorageType.INTERNAL ? IO_INTERNAL_SCHEDULER - : IO_EXTERNAL_SCHEDULER; + String file; + + if (type == StorageType.INTERNAL) + file = IO_INTERNAL_SCHEDULER; + else if (type == StorageType.INTERNAL_DM0) + file = IO_INTERNAL_SCHEDULER_DM0; + else if (type == StorageType.INTERNAL_SDA) + file = IO_INTERNAL_SCHEDULER_SDA; + else + file = IO_EXTERNAL_SCHEDULER; + if (Utils.existFile(file)) { String values = Utils.readFile(file); if (values != null) {