Android->usb_mode_switch: Store the usb mode when it was changed at Settings app, restore it on boot
diff --git a/packages/apps/Settings/src/com/android/settings/UsbModeSetting.java b/packages/apps/Settings/src/com/android/settings/UsbModeSetting.java
index 3845fa9..7959fa2 100644
--- a/packages/apps/Settings/src/com/android/settings/UsbModeSetting.java
+++ b/packages/apps/Settings/src/com/android/settings/UsbModeSetting.java
@@ -34,6 +34,7 @@ import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
+import android.os.SystemProperties;
import android.support.v7.preference.CheckBoxPreference;
import android.preference.ListPreference;
import android.support.v7.preference.Preference;
@@ -61,12 +62,18 @@ public class UsbModeSetting extends SettingsPreferenceFragment implements
private CheckBoxPreference mConnectToPc;
private File mFile = null;
private String mMode = null;
+ private static final String OTG_MODE = "0";
private static final String HOST_MODE = new String("1");
private static final String SLAVE_MODE = new String("2");
+ private static final String OTG_MODE_STR = "otg";
+ private static final String HOST_MODE_STR = "host";
+ private static final String SLAVE_MODE_STR = "peripheral";
private Handler mHandler;
private static final String KEY_CONNECT_TO_PC = "connect_to_pc";
public static final String SYS_FILE = "/sys/kernel/debug/usb@fe800000/rk_usb_force_mode";
+ public static final String SYS_FILE1 = "/sys/kernel/debug/usb@fe900000/rk_usb_force_mode";
+ public static final String PERSIST_PRO = "persist.usb.mode";
private BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
@@ -90,6 +97,9 @@ public class UsbModeSetting extends SettingsPreferenceFragment implements
getActivity().registerReceiver(mReceiver, filter);
mFile = new File(SYS_FILE);
+ if(!mFile.exists()){
+ mFile = new File(SYS_FILE1);
+ }
mHandler = new Handler() {
@Override
@@ -104,6 +114,8 @@ public class UsbModeSetting extends SettingsPreferenceFragment implements
} else if(SLAVE_MODE.equals(mode)) {
mConnectToPc.setChecked(true);
}
+
+ SystemProperties.set(PERSIST_PRO, mode);
} else {
Log.e(TAG, "unexpect msg:"+ msg.what);
}
@@ -123,6 +135,16 @@ public class UsbModeSetting extends SettingsPreferenceFragment implements
BufferedReader reader= new BufferedReader(new InputStreamReader(fin));
String config = reader.readLine();
fin.close();
+
+ Log.d(TAG, "Usb mode: " + config);
+ if (HOST_MODE_STR.equals(config)) {
+ config = HOST_MODE;
+ } else if (SLAVE_MODE_STR.equals(config)) {
+ config = SLAVE_MODE;
+ } else if (OTG_MODE_STR.equals(config)) {
+ config = OTG_MODE;
+ }
+
return config;
} catch(IOException e) {
e.printStackTrace();
@@ -159,9 +181,9 @@ public class UsbModeSetting extends SettingsPreferenceFragment implements
mConnectToPc.setChecked(false);
} else if(SLAVE_MODE.equals(mMode)) {
mConnectToPc.setChecked(true);
- } else if ("0".equals(mMode)) {
+ } else if (OTG_MODE.equals(mMode)) {
mConnectToPc.setChecked(true);
- Write2File(mFile, "2");
+ Write2File(mFile, SLAVE_MODE);
}
mConnectToPc.setEnabled(true);
}
diff --git a/vendor/firefly/usb_mode_switch/usb_mode_switch.sh b/vendor/firefly/usb_mode_switch/usb_mode_switch.sh
index 937db86..e34a4e0 100644
--- a/vendor/firefly/usb_mode_switch/usb_mode_switch.sh
+++ b/vendor/firefly/usb_mode_switch/usb_mode_switch.sh
@@ -10,5 +10,14 @@
#
FILE_USB_MODE="/sys/kernel/debug/usb@fe800000/rk_usb_force_mode"
-[ -e "$FILE_USB_MODE" ] && echo "host" > "$FILE_USB_MODE"
+FILE_USB_MODE1="/sys/kernel/debug/usb@fe900000/rk_usb_force_mode"
+MODE=$(getprop persist.usb.mode)
+
+if [ -z "$MODE" ];then
+ MODE="host";
+fi
+
+[ -e "$FILE_USB_MODE" ] && echo "$MODE" > "$FILE_USB_MODE"
+
+[ -e "$FILE_USB_MODE1" ] && echo "$MODE" > "$FILE_USB_MODE1"
Android添加USB模式设置:otg、host、peripheral
猜你喜欢
转载自blog.csdn.net/zhoumushui/article/details/101428543
今日推荐
周排行