Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a6aaccc4 authored by Badhri Jagan Sridharan's avatar Badhri Jagan Sridharan
Browse files

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: default avatarBadhri Jagan Sridharan <badhri@google.com>
parent 377328c7
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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,
}
+11 −2
Original line number Diff line number Diff line
@@ -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,
}
+31 −0
Original line number Diff line number Diff line
@@ -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