From 9958c592ac8342ef38ca850d00f277868226e2aa Mon Sep 17 00:00:00 2001 From: Tim Zimmermann Date: Sun, 6 Nov 2022 05:55:29 +0100 Subject: [PATCH] aidl: usb: Implement UsbDataStatus * Makes Trust usb restrict properly reenable USB once it got disabled * Also call notifyEnableUsbDataStatus with the actual status Change-Id: I58daea3149b26355a9af28ff7ae651b90b5a3484 --- aidl/usb/Usb.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/aidl/usb/Usb.cpp b/aidl/usb/Usb.cpp index bf3b55db..886d6489 100644 --- a/aidl/usb/Usb.cpp +++ b/aidl/usb/Usb.cpp @@ -93,7 +93,7 @@ ScopedAStatus Usb::enableUsbData(const string& in_portName, bool in_enable, int6 if (mCallback != NULL) { ScopedAStatus ret = mCallback->notifyEnableUsbDataStatus( - in_portName, true, result ? Status::SUCCESS : Status::ERROR, in_transactionId); + in_portName, in_enable, result ? Status::SUCCESS : Status::ERROR, in_transactionId); if (!ret.isOk()) ALOGE("notifyEnableUsbDataStatus error %s", ret.getDescription().c_str()); } else { @@ -555,14 +555,25 @@ Status getPortStatusHelper(std::vector *currentPortStatus) { port.second ? canSwitchRoleHelper(port.first) : false; (*currentPortStatus)[i].supportedModes.push_back(PortMode::DRP); - (*currentPortStatus)[i].usbDataStatus.push_back(UsbDataStatus::ENABLED); + + bool dataEnabled = true; + string usbDataEnabled = "0"; + if (ReadFileToString(USB_DATA_PATH, &usbDataEnabled) && + stoi(Trim(usbDataEnabled)) == 0) { + (*currentPortStatus)[i].usbDataStatus.push_back(UsbDataStatus::DISABLED_FORCE); + dataEnabled = false; + } + if (dataEnabled) { + (*currentPortStatus)[i].usbDataStatus.push_back(UsbDataStatus::ENABLED); + } ALOGI("%d:%s connected:%d canChangeMode:%d canChagedata:%d canChangePower:%d " "usbDataEnabled:%d", i, port.first.c_str(), port.second, (*currentPortStatus)[i].canChangeMode, (*currentPortStatus)[i].canChangeDataRole, - (*currentPortStatus)[i].canChangePowerRole, 0); + (*currentPortStatus)[i].canChangePowerRole, + dataEnabled ? 1 : 0); } return Status::SUCCESS;