summaryrefslogtreecommitdiff
path: root/usb
diff options
context:
space:
mode:
authorBadhri Jagan Sridharan <badhri@google.com>2022-12-12 09:02:21 +0000
committerBadhri Jagan Sridharan <badhri@google.com>2022-12-15 02:51:11 +0000
commita6aaccc43a60e1d11469cd4cc19ac999a542c749 (patch)
tree0c6cd0fc3780383d116a6807a91d9623f11c756f /usb
parent377328c7432c8770e4c92455df808d01afc13847 (diff)
downloadinterfaces-a6aaccc43a60e1d11469cd4cc19ac999a542c749.tar.gz
Add additional status flags to UsbDataStatus
This change introduces two new values to UsbDataStatus enum to denote status of Usb data. Previously, UsbDataStatus enum contained DISABLED_DOCK which indicated that USB data is disabled due to a docking event. Depending on the hardware design, some architectures might only disable USB host mode or USB gadget mode selectively when docked. This change adds enum values to denote them. DISABLED_HOST_DOCK indicates USB host mode disabled due to docking event. DISABLED_DEVICE_DOCK indicates device mode disabled due to docking event. DISABLED_DOCK, DISABLED_HOST_DOCK, DISABLED_DEVICE_DOCK are mutually exclusive. Bug: 250522538 Change-Id: I7767bff94a7e5869a734f45e5bd4dba4d4d5fc6d Signed-off-by: Badhri Jagan Sridharan <badhri@google.com>
Diffstat (limited to 'usb')
-rw-r--r--usb/aidl/aidl_api/android.hardware.usb/current/android/hardware/usb/UsbDataStatus.aidl2
-rw-r--r--usb/aidl/android/hardware/usb/UsbDataStatus.aidl13
-rw-r--r--usb/aidl/vts/VtsAidlUsbTargetTest.cpp31
3 files changed, 44 insertions, 2 deletions
diff --git a/usb/aidl/aidl_api/android.hardware.usb/current/android/hardware/usb/UsbDataStatus.aidl b/usb/aidl/aidl_api/android.hardware.usb/current/android/hardware/usb/UsbDataStatus.aidl
index e2c0cfbef1..b976852b3e 100644
--- a/usb/aidl/aidl_api/android.hardware.usb/current/android/hardware/usb/UsbDataStatus.aidl
+++ b/usb/aidl/aidl_api/android.hardware.usb/current/android/hardware/usb/UsbDataStatus.aidl
@@ -41,4 +41,6 @@ enum UsbDataStatus {
DISABLED_DOCK = 4,
DISABLED_FORCE = 5,
DISABLED_DEBUG = 6,
+ DISABLED_DOCK_HOST_MODE = 7,
+ DISABLED_DOCK_DEVICE_MODE = 8,
}
diff --git a/usb/aidl/android/hardware/usb/UsbDataStatus.aidl b/usb/aidl/android/hardware/usb/UsbDataStatus.aidl
index 4b6a41a01e..e6b5f55153 100644
--- a/usb/aidl/android/hardware/usb/UsbDataStatus.aidl
+++ b/usb/aidl/android/hardware/usb/UsbDataStatus.aidl
@@ -35,7 +35,8 @@ enum UsbDataStatus {
*/
DISABLED_CONTAMINANT = 3,
/**
- * USB data is disabled due to dock.
+ * DISABLED_DOCK implies both DISABLED_DOCK_HOST_MODE
+ * and DISABLED_DOCK_DEVICE_MODE.
*/
DISABLED_DOCK = 4,
/**
@@ -45,5 +46,13 @@ enum UsbDataStatus {
/**
* USB data disabled for debug.
*/
- DISABLED_DEBUG = 6
+ DISABLED_DEBUG = 6,
+ /**
+ * USB Host mode is disabled due to a docking event.
+ */
+ DISABLED_DOCK_HOST_MODE = 7,
+ /**
+ * USB device mode disabled due to a docking event.
+ */
+ DISABLED_DOCK_DEVICE_MODE = 8,
}
diff --git a/usb/aidl/vts/VtsAidlUsbTargetTest.cpp b/usb/aidl/vts/VtsAidlUsbTargetTest.cpp
index c4ec8a4e83..d87f1f4741 100644
--- a/usb/aidl/vts/VtsAidlUsbTargetTest.cpp
+++ b/usb/aidl/vts/VtsAidlUsbTargetTest.cpp
@@ -52,6 +52,7 @@ using ::aidl::android::hardware::usb::PortPowerRole;
using ::aidl::android::hardware::usb::PortRole;
using ::aidl::android::hardware::usb::PortStatus;
using ::aidl::android::hardware::usb::Status;
+using ::aidl::android::hardware::usb::UsbDataStatus;
using ::ndk::ScopedAStatus;
using ::ndk::SpAIBinder;
@@ -281,6 +282,36 @@ TEST_P(UsbAidlTest, queryPortStatus) {
}
/*
+ * Query port status to Check to see whether only one of DISABLED_DOCK,
+ * DISABLED_DOCK_DEVICE_MODE, DISABLED_DOCK_HOST_MODE is set at the most.
+ * The callback parameters are checked to see if the transaction id
+ * matches.
+ */
+TEST_P(UsbAidlTest, DisabledDataStatusCheck) {
+ int disabledCount = 0;
+
+ ALOGI("UsbAidlTest DataStatusCheck start");
+ int64_t transactionId = rand() % 10000;
+ const auto& ret = usb->queryPortStatus(transactionId);
+ ASSERT_TRUE(ret.isOk());
+ EXPECT_EQ(std::cv_status::no_timeout, wait());
+ EXPECT_EQ(2, usb_last_cookie);
+ EXPECT_EQ(transactionId, last_transactionId);
+ ALOGI("UsbAidlTest DataStatusCheck portName: %s", usb_last_port_status.portName.c_str());
+ if (usb_last_port_status.usbDataStatus.size() > 1) {
+ for (UsbDataStatus dataStatus : usb_last_port_status.usbDataStatus) {
+ if (dataStatus == UsbDataStatus::DISABLED_DOCK ||
+ dataStatus == UsbDataStatus::DISABLED_DOCK_DEVICE_MODE ||
+ dataStatus == UsbDataStatus::DISABLED_DOCK_HOST_MODE) {
+ disabledCount++;
+ }
+ }
+ }
+ EXPECT_LE(1, disabledCount);
+ ALOGI("UsbAidlTest DataStatusCheck end");
+}
+
+/*
* Trying to switch a non-existent port should fail.
* This test case tried to switch the port with empty
* name which is expected to fail.