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
diff --git a/aidl/usb/Usb.cpp b/aidl/usb/Usb.cpp
index bf3b55d..886d648 100644
--- a/aidl/usb/Usb.cpp
+++ b/aidl/usb/Usb.cpp
@@ -93,7 +93,7 @@
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 @@
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;