Merge "Add additional status flags to UsbDataStatus"
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 e2c0cfb..b976852 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 @@
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 4b6a41a..e6b5f55 100644
--- a/usb/aidl/android/hardware/usb/UsbDataStatus.aidl
+++ b/usb/aidl/android/hardware/usb/UsbDataStatus.aidl
@@ -35,7 +35,8 @@
*/
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 @@
/**
* 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 c4ec8a4..d87f1f4 100644
--- a/usb/aidl/vts/VtsAidlUsbTargetTest.cpp
+++ b/usb/aidl/vts/VtsAidlUsbTargetTest.cpp
@@ -52,6 +52,7 @@
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 @@
}
/*
+ * 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.