From a6aaccc43a60e1d11469cd4cc19ac999a542c749 Mon Sep 17 00:00:00 2001 From: Badhri Jagan Sridharan Date: Mon, 12 Dec 2022 09:02:21 +0000 Subject: 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 --- .../android/hardware/usb/UsbDataStatus.aidl | 2 ++ usb/aidl/android/hardware/usb/UsbDataStatus.aidl | 13 +++++++-- usb/aidl/vts/VtsAidlUsbTargetTest.cpp | 31 ++++++++++++++++++++++ 3 files changed, 44 insertions(+), 2 deletions(-) (limited to 'usb') 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; @@ -280,6 +281,36 @@ TEST_P(UsbAidlTest, queryPortStatus) { ALOGI("UsbAidlTest queryPortStatus end: %s", usb_last_port_status.portName.c_str()); } +/* + * 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 -- cgit v1.2.3