diff options
author | Badhri Jagan Sridharan <badhri@google.com> | 2022-12-12 09:02:21 +0000 |
---|---|---|
committer | Badhri Jagan Sridharan <badhri@google.com> | 2022-12-15 02:51:11 +0000 |
commit | a6aaccc43a60e1d11469cd4cc19ac999a542c749 (patch) | |
tree | 0c6cd0fc3780383d116a6807a91d9623f11c756f /usb | |
parent | 377328c7432c8770e4c92455df808d01afc13847 (diff) | |
download | interfaces-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')
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. |