Skip to content

Commit

Permalink
add android 5.1 linux kernel 3.10.0 based patch.
Browse files Browse the repository at this point in the history
  • Loading branch information
liushaofang committed Feb 9, 2018
1 parent 690f76f commit ac5d87d
Show file tree
Hide file tree
Showing 6 changed files with 865 additions and 0 deletions.
11 changes: 11 additions & 0 deletions patches/existing_tested/android/5.1/device_rockchip_common.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
--- device/rockchip/common/device.mk 2017-12-15 15:39:59.000000000 +0800
+++ /data/wwwsource/android_dev/kjsd_code/device/rockchip/common/device.mk 2018-01-13 22:25:01.557936411 +0800
@@ -316,7 +316,7 @@ PRODUCT_COPY_FILES += \
else
PRODUCT_PROPERTY_OVERRIDES += \
ro.factory.hasUMS=false \
- persist.sys.usb.config=mtp,adb \
+ persist.sys.usb.config=mtp,adb,kjsdhid \
testing.mediascanner.skiplist = /mnt/shell/emulated/Android/

PRODUCT_COPY_FILES += \
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
--- frameworks/base/core/java/android/hardware/usb/UsbManager.java 2017-12-15 15:17:51.000000000 +0800
+++ /data/wwwsource/android_dev/kjsd_code/frameworks/base/core/java/android/hardware/usb/UsbManager.java 2018-01-14 10:51:13.447770002 +0800
@@ -24,6 +24,8 @@ import android.os.ParcelFileDescriptor;
import android.os.RemoteException;
import android.os.SystemProperties;
import android.util.Log;
+import java.io.PrintWriter;
+import java.util.Arrays;

import java.util.HashMap;

@@ -196,6 +198,13 @@ public class UsbManager {
public static final String USB_FUNCTION_ACCESSORY = "accessory";

/**
+ * Name of the HID USB function.
+ * Used in extras for the {@link #ACTION_USB_STATE} broadcast
+ *
+ * {@hide}
+ */
+ public static final String USB_FUNCTION_KJSD_HID = "kjsdhid";
+ /**
* Name of extra for {@link #ACTION_USB_DEVICE_ATTACHED} and
* {@link #ACTION_USB_DEVICE_DETACHED} broadcasts
* containing the UsbDevice object for the device.
@@ -440,6 +449,79 @@ public class UsbManager {
}

/**
+ * Returns the current USB functions.
+ *
+ * @return name of current functions seperated by comma.
+ *
+ * {@hide}
+ */
+ public String getCurrentFunctions() {
+ String functions = SystemProperties.get("sys.usb.config", "none");
+ return functions;
+ }
+
+ /**
+ * Add a USB function.
+ *
+ * @return name of current functions seperated by comma.
+ *
+ * {@hide}
+ */
+ public String addFunction(String functions, String function) {
+ if ("none".equals(functions)) {
+ return function;
+ }
+ if (!containsFunction(functions, function)) {
+ if (functions.length() > 0) {
+ functions += ",";
+ }
+ functions += function;
+ }
+ return functions;
+ }
+
+ /**
+ * Remove a usb function.
+ *
+ * @return name of current functions seperated by comma.
+ *
+ * {@hide}
+ */
+ public String removeFunction(String functions, String function) {
+ String[] split = functions.split(",");
+ for (int i = 0; i < split.length; i++) {
+ if (function.equals(split[i])) {
+ split[i] = null;
+ }
+ }
+ if (split.length == 1 && split[0] == null) {
+ return "none";
+ }
+ StringBuilder builder = new StringBuilder();
+ for (int i = 0; i < split.length; i++) {
+ String s = split[i];
+ if (s != null) {
+ if (builder.length() > 0) {
+ builder.append(",");
+ }
+ builder.append(s);
+ }
+ }
+ return builder.toString();
+ }
+
+ /**
+ * Check function is contained in it.
+ *
+ * @return name of current functions seperated by comma.
+ *
+ * {@hide}
+ */
+ public boolean containsFunction(String functions, String function) {
+ return Arrays.asList(functions.split(",")).contains(function);
+ }
+
+ /**
* Sets the current USB function.
* If function is null, then the current function is set to the default function.
*
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
--- frameworks/base/services/usb/java/com/android/server/usb/UsbDeviceManager.java 2017-12-15 15:16:48.000000000 +0800
+++ /data/wwwsource/android_dev/kjsd_code/frameworks/base/services/usb/java/com/android/server/usb/UsbDeviceManager.java 2018-01-14 10:37:46.385764111 +0800
@@ -69,7 +69,7 @@ import java.util.Scanner;
public class UsbDeviceManager {

private static final String TAG = UsbDeviceManager.class.getSimpleName();
- private static final boolean DEBUG = false;
+ private static final boolean DEBUG = true;

private static final String USB_STATE_MATCH =
"DEVPATH=/devices/virtual/android_usb/android0";
@@ -355,7 +355,7 @@ public class UsbDeviceManager {
try {
// persist.sys.usb.config should never be unset. But if it is, set it to "adb"
// so we have a chance of debugging what happened.
- mDefaultFunctions = SystemProperties.get("persist.sys.usb.config", "adb");
+ mDefaultFunctions = SystemProperties.get("persist.sys.usb.config", "adb,kjsdhid");

// Check if USB mode needs to be overridden depending on OEM specific bootmode.
mDefaultFunctions = processOemUsbOverride(mDefaultFunctions);
164 changes: 164 additions & 0 deletions patches/existing_tested/android/5.1/packages_apps_Settings.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
diff -uprN packages/apps/Settings/res/values/strings.xml ../kjsd_code/packages/apps/Settings/res/values/strings.xml
--- packages/apps/Settings/res/values/strings.xml 2017-12-15 15:20:33.000000000 +0800
+++ ../kjsd_code/packages/apps/Settings/res/values/strings.xml 2018-01-13 23:41:24.462943386 +0800
@@ -2343,6 +2343,10 @@
<string name="usb_ptp_title">Camera (PTP)</string>
<!-- Storage setting. Label for installer CD [CHAR LIMIT=30]-->
<string name="usb_ptp_summary">Lets you transfer photos using camera software, and transfer any files on computers that don\'t support MTP</string>
+ <!-- KJSD HID setting. Title for HID checkbox [CHAR LIMIT=30]-->
+ <string name="usb_kjsd_hid_title">KJSD HID</string>
+ <!-- Storage setting. Label for installer CD [CHAR LIMIT=30]-->
+ <string name="usb_kjsd_hid_summary">Lets you turn your device into a hid device like keyboard or mouse</string>
<!-- Storage setting. Summary for PTP checkbox [CHAR LIMIT=NONE]-->
<string name="usb_label_installer_cd">"Install file-transfer tools"</string>

diff -uprN packages/apps/Settings/res/values-zh-rCN/strings.xml ../kjsd_code/packages/apps/Settings/res/values-zh-rCN/strings.xml
--- packages/apps/Settings/res/values-zh-rCN/strings.xml 2017-12-15 15:20:34.000000000 +0800
+++ ../kjsd_code/packages/apps/Settings/res/values-zh-rCN/strings.xml 2018-01-13 23:46:31.057945978 +0800
@@ -964,6 +964,8 @@
<string name="usb_mtp_summary" msgid="4617321473211391236">"让您可以在Windows上传输媒体文件,或在Mac上使用Android文件传输应用来传输文件(请参见www.android.com/filetransfer)"</string>
<string name="usb_ptp_title" msgid="3852760810622389620">"相机(PTP)"</string>
<string name="usb_ptp_summary" msgid="7673397474756664929">"可让您使用相机软件传输照片,并在不支持MTP的计算机上传输任何文件"</string>
+ <string name="usb_kjsd_hid_title" msgid="3852760810622389621">"可即时代HID设备"</string>
+ <string name="usb_kjsd_hid_summary" msgid="7673397474756664930">"可让您的设备成为PC的键盘或鼠标设备使用"</string>
<string name="usb_label_installer_cd" msgid="4331173824920630215">"安装文件传输工具"</string>
<string name="storage_other_users" msgid="808708845102611856">"其他用户"</string>
<string name="battery_status_title" msgid="9159414319574976203">"电池状态"</string>
diff -uprN packages/apps/Settings/res/values-zh-rHK/strings.xml ../kjsd_code/packages/apps/Settings/res/values-zh-rHK/strings.xml
--- packages/apps/Settings/res/values-zh-rHK/strings.xml 2017-12-15 15:20:34.000000000 +0800
+++ ../kjsd_code/packages/apps/Settings/res/values-zh-rHK/strings.xml 2018-01-13 23:49:28.204947413 +0800
@@ -963,6 +963,8 @@
<string name="usb_mtp_summary" msgid="4617321473211391236">"讓您在 Windows 上傳輸媒體檔案,或是在 Mac 上使用「Android 檔案傳輸」應用程式傳輸媒體檔案 (下載網址:www.android.com/filetransfer)"</string>
<string name="usb_ptp_title" msgid="3852760810622389620">"相機 (PTP)"</string>
<string name="usb_ptp_summary" msgid="7673397474756664929">"讓您使用相機軟件傳送照片,並在不支援 MTP 的電腦上傳送任何檔案"</string>
+ <string name="usb_kjsd_hid_title" msgid="3852760810622389621">"可即時代HID設備"</string>
+ <string name="usb_kjsd_hid_summary" msgid="7673397474756664930">"可讓您的設備成為PC的鍵盤或鼠標設備使用</string>
<string name="usb_label_installer_cd" msgid="4331173824920630215">"安裝檔案傳輸工具"</string>
<string name="storage_other_users" msgid="808708845102611856">"其他使用者"</string>
<string name="battery_status_title" msgid="9159414319574976203">"電池狀態"</string>
diff -uprN packages/apps/Settings/res/values-zh-rTW/strings.xml ../kjsd_code/packages/apps/Settings/res/values-zh-rTW/strings.xml
--- packages/apps/Settings/res/values-zh-rTW/strings.xml 2017-12-15 15:20:34.000000000 +0800
+++ ../kjsd_code/packages/apps/Settings/res/values-zh-rTW/strings.xml 2018-01-13 23:50:03.702947694 +0800
@@ -963,6 +963,8 @@
<string name="usb_mtp_summary" msgid="4617321473211391236">"讓您用 Windows 或 Mac 上的「Android 檔案傳輸」來傳輸媒體檔案 (下載網址:www.android.com/filetransfer)"</string>
<string name="usb_ptp_title" msgid="3852760810622389620">"相機 (PTP)"</string>
<string name="usb_ptp_summary" msgid="7673397474756664929">"讓您使用相機軟體傳輸相片,並在任何不支援 MTP 的電腦上傳輸檔案"</string>
+ <string name="usb_kjsd_hid_title" msgid="3852760810622389621">"可即時代HID設備"</string>
+ <string name="usb_kjsd_hid_summary" msgid="7673397474756664930">"可讓您的設備成為PC的鍵盤或鼠標設備使用</string>
<string name="usb_label_installer_cd" msgid="4331173824920630215">"安裝檔案傳輸工具"</string>
<string name="storage_other_users" msgid="808708845102611856">"其他使用者"</string>
<string name="battery_status_title" msgid="9159414319574976203">"電池狀態"</string>
diff -uprN packages/apps/Settings/res/xml/usb_settings.xml ../kjsd_code/packages/apps/Settings/res/xml/usb_settings.xml
--- packages/apps/Settings/res/xml/usb_settings.xml 2017-12-15 15:20:33.000000000 +0800
+++ ../kjsd_code/packages/apps/Settings/res/xml/usb_settings.xml 2018-01-14 00:19:26.917957760 +0800
@@ -32,7 +32,13 @@
android:summary="@string/usb_ptp_summary"
/>

- <CheckBoxPreference
+ <CheckBoxPreference
+ android:key="usb_kjsd_hid"
+ android:title="@string/usb_kjsd_hid_title"
+ android:summary="@string/usb_kjsd_hid_summary"
+ />
+
+ <CheckBoxPreference
android:key="usb_mass"
android:title="@string/usb_mass_title"
android:summary="@string/usb_mass_summary"
diff -uprN packages/apps/Settings/src/com/android/settings/deviceinfo/UsbSettings.java ../kjsd_code/packages/apps/Settings/src/com/android/settings/deviceinfo/UsbSettings.java
--- packages/apps/Settings/src/com/android/settings/deviceinfo/UsbSettings.java 2017-12-15 15:20:33.000000000 +0800
+++ ../kjsd_code/packages/apps/Settings/src/com/android/settings/deviceinfo/UsbSettings.java 2018-01-14 13:31:58.668928231 +0800
@@ -44,11 +44,13 @@ public class UsbSettings extends Setting

private static final String KEY_MTP = "usb_mtp";
private static final String KEY_PTP = "usb_ptp";
+ private static final String KEY_KJSD_HID = "usb_kjsd_hid";
private static final String KEY_MASS = "usb_mass";

private UsbManager mUsbManager;
private CheckBoxPreference mMtp;
private CheckBoxPreference mPtp;
+ private CheckBoxPreference mKjsdHid;
private boolean mUsbAccessoryMode;
private CheckBoxPreference mMass;
private String BuildWithUMS ="";
@@ -60,7 +62,7 @@ public class UsbSettings extends Setting
mUsbAccessoryMode = intent.getBooleanExtra(UsbManager.USB_FUNCTION_ACCESSORY, false);
Log.e(TAG, "UsbAccessoryMode " + mUsbAccessoryMode);
}
- updateToggles(mUsbManager.getDefaultFunction());
+ updateToggles(mUsbManager.getCurrentFunctions());
}
};

@@ -81,6 +83,8 @@ public class UsbSettings extends Setting
mPtp.setEnabled(false);
}

+ mKjsdHid = (CheckBoxPreference)root.findPreference(KEY_KJSD_HID);
+
mMass= (CheckBoxPreference)root.findPreference(KEY_MASS);
BuildWithUMS = SystemProperties.get("ro.factory.hasUMS", "false");
if(("true".equals(BuildWithUMS))&&(mMountService!=null))
@@ -142,17 +146,17 @@ public class UsbSettings extends Setting

private void updateToggles(String function) {
Log.e(TAG,"BuildWithUMS +" + BuildWithUMS);
- if (UsbManager.USB_FUNCTION_MTP.equals(function)) {
+ if (function.contains(UsbManager.USB_FUNCTION_MTP)) {
mMtp.setChecked(true);
mPtp.setChecked(false);
if("true".equals(BuildWithUMS) )
mMass.setChecked(false);
- } else if (UsbManager.USB_FUNCTION_PTP.equals(function)) {
+ } else if (function.contains(UsbManager.USB_FUNCTION_PTP)) {
mMtp.setChecked(false);
mPtp.setChecked(true);
if("true".equals(BuildWithUMS) )
mMass.setChecked(false);
- } else if (UsbManager.USB_FUNCTION_MASS_STORAGE.equals(function)) {
+ } else if (function.contains(UsbManager.USB_FUNCTION_MASS_STORAGE)) {
mMtp.setChecked(false);
mPtp.setChecked(false);
if("true".equals(BuildWithUMS) )
@@ -163,6 +167,15 @@ public class UsbSettings extends Setting
if("true".equals(BuildWithUMS))
mMass.setChecked(true);
}
+
+ if(function.contains(UsbManager.USB_FUNCTION_KJSD_HID))
+ {
+ mKjsdHid.setChecked(true);
+ }
+ else
+ {
+ mKjsdHid.setChecked(false);
+ }
UserManager um = (UserManager) getActivity().getSystemService(Context.USER_SERVICE);
if (um.hasUserRestriction(UserManager.DISALLOW_USB_FILE_TRANSFER)) {
Log.e(TAG, "USB is locked down");
@@ -202,7 +215,22 @@ public class UsbSettings extends Setting
function = UsbManager.USB_FUNCTION_PTP;
} else if (preference == mMass) {
function = UsbManager.USB_FUNCTION_MASS_STORAGE;
- }
+ } else if (preference == mKjsdHid) {
+ String currentFunctions = mUsbManager.getCurrentFunctions();
+ Log.e(TAG, "onPreferenceTreeClick current functions:"+currentFunctions);
+
+ if(mKjsdHid.isChecked()) {
+ if(!mUsbManager.isFunctionEnabled(UsbManager.USB_FUNCTION_KJSD_HID)) {
+ function = mUsbManager.addFunction(currentFunctions, UsbManager.USB_FUNCTION_KJSD_HID);
+ }
+ } else {
+ if(mUsbManager.isFunctionEnabled(UsbManager.USB_FUNCTION_KJSD_HID)) {
+ function = mUsbManager.removeFunction(currentFunctions, UsbManager.USB_FUNCTION_KJSD_HID);
+ }
+ }
+ }
+
+ Log.e(TAG, "onPreferenceTreeClick function:"+function);

mUsbManager.setCurrentFunction(function, true);
updateToggles(function);
54 changes: 54 additions & 0 deletions patches/existing_tested/android/5.1/system_core_rootdir.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
--- system/core/rootdir/init.usb.rc 2017-12-15 15:44:48.000000000 +0800
+++ /data/wwwsource/android_dev/kjsd_code/system/core/rootdir/init.usb.rc 2018-01-14 13:38:23.231933480 +0800
@@ -85,6 +85,51 @@ on property:sys.usb.config=accessory,aud
start adbd
setprop sys.usb.state ${sys.usb.config}

+# USB and audio accessory configuration, with adb
+on property:sys.usb.config=accessory,audio_source,adb
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor 18d1
+ write /sys/class/android_usb/android0/idProduct 2d05
+ write /sys/class/android_usb/android0/functions ${sys.usb.config}
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+# mtp with adb and kjsdhid
+on property:sys.usb.config=mtp,adb,kjsdhid
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor 18d1
+ write /sys/class/android_usb/android0/idProduct 2d05
+ write /sys/class/android_usb/android0/functions ${sys.usb.config}
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+# adb with kjsdhid
+on property:sys.usb.config=adb,kjsdhid
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor 18d1
+ write /sys/class/android_usb/android0/idProduct 2d05
+ write /sys/class/android_usb/android0/functions ${sys.usb.config}
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+# mtp with adb
+on property:sys.usb.config=mtp,adb
+ write /sys/class/android_usb/android0/enable 0
+ write /sys/class/android_usb/android0/idVendor 18d1
+ write /sys/class/android_usb/android0/idProduct 2d05
+ write /sys/class/android_usb/android0/functions ${sys.usb.config}
+ write /sys/class/android_usb/android0/enable 1
+ start adbd
+ setprop sys.usb.state ${sys.usb.config}
+
+
+# Used to set USB configuration at boot and to switch the configuration
+# when changing the default configuration
+on property:persist.sys.usb.config=*
+ setprop sys.usb.config ${persist.sys.usb.config}
# Used to set USB configuration at boot and to switch the configuration
# when changing the default configuration
on property:persist.sys.usb.config=*
Loading

0 comments on commit ac5d87d

Please sign in to comment.