Fix handling of USB config during MTP switching

The property set of sys.usb.config was not part of the original 'Only
change USB mode to mtp when ready for MTP' commit. Further, it adds an
additional USB off/on toggle to the MTP startup routine, potentially
confusing the host computer. The default init.recovery.usb.rc already
sets the usb functions to 'adb' during 'on fs'.

It is possible that devices could run into issues with MTP startup due
to sys.usb.config not yet being set. This is actually due to a poor
design decision in Enable_MTP(), where sys.usb.config would not be
configured for mtp if sys.usb.config had never been set. It is not
necessary to check for a previous value, just set it.

Fix the USB PID for adb-only mode in Disable_MTP().

Change-Id: I21b5e64c9bdcd3104372a8b4eb8ea50cf4561892
This commit is contained in:
Matt Mower
2017-02-23 17:40:00 -06:00
parent 1b3fa22d71
commit e07f010963
2 changed files with 4 additions and 5 deletions
+4 -4
View File
@@ -2092,8 +2092,8 @@ bool TWPartitionManager::Enable_MTP(void) {
}
char old_value[PROPERTY_VALUE_MAX];
property_get("sys.usb.config", old_value, "error");
if (strcmp(old_value, "error") != 0 && strcmp(old_value, "mtp,adb") != 0) {
property_get("sys.usb.config", old_value, "");
if (strcmp(old_value, "mtp,adb") != 0) {
char vendor[PROPERTY_VALUE_MAX];
char product[PROPERTY_VALUE_MAX];
property_set("sys.usb.config", "none");
@@ -2147,13 +2147,13 @@ void TWPartitionManager::Add_All_MTP_Storage(void) {
bool TWPartitionManager::Disable_MTP(void) {
char old_value[PROPERTY_VALUE_MAX];
property_get("sys.usb.config", old_value, "error");
property_get("sys.usb.config", old_value, "");
if (strcmp(old_value, "adb") != 0) {
char vendor[PROPERTY_VALUE_MAX];
char product[PROPERTY_VALUE_MAX];
property_set("sys.usb.config", "none");
property_get("usb.vendor", vendor, "18D1");
property_get("usb.product.adb", product, "D002");
property_get("usb.product.adb", product, "D001");
string vendorstr = vendor;
string productstr = product;
TWFunc::write_file("/sys/class/android_usb/android0/idVendor", vendorstr);