script-astra/Android/Sdk/sources/android-35/android/hardware/usb/DisplayPortAltModeInfo.java
localadmin 4380f00a78 init
2025-01-20 18:15:20 +03:00

284 lines
9.6 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* Copyright (C) 2022 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.hardware.usb;
import android.Manifest;
import android.annotation.CheckResult;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.RequiresPermission;
import android.annotation.SystemApi;
import android.os.Parcel;
import android.os.Parcelable;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.Objects;
/**
* Holds information related to DisplayPort Alt Mode statuses
*
* @hide
*/
@SystemApi
public final class DisplayPortAltModeInfo implements Parcelable {
private final @DisplayPortAltModeStatus int mPartnerSinkStatus;
private final @DisplayPortAltModeStatus int mCableStatus;
private final int mNumLanes;
private final boolean mHotPlugDetect;
private final @LinkTrainingStatus int mLinkTrainingStatus;
/**
* Port Partners:
* The port partner status is currently unknown for one of the following reasons:
* <ul>
* <li> No port partner is connected to the device
* <li> The USB Power Delivery Discover Identity command has not been issued to the port
* partner via SOP messaging.
* </ul>
* <p>
* Cables:
* The cables capabilities are not yet known to the device, or no cable is plugged in.
*/
public static final int DISPLAYPORT_ALT_MODE_STATUS_UNKNOWN = 0;
/**
* Port Partners:
* The current port partner does not list DisplayPort as one of its Alt Modes, or does not list
* the capability to act as a DisplayPort Source or Sink device, or a compatible configuration
* could not be established.
* <p>
* Cables:
* The cable/adapters capabilities do not list DisplayPort as one of its Alt Modes, or a
* compatible configuration could not be established.
*/
public static final int DISPLAYPORT_ALT_MODE_STATUS_NOT_CAPABLE = 1;
/**
* Port Partners:
* The current port partner lists compatible DisplayPort capabilities with the device, however
* may not yet have entered DisplayPort Alt Mode or has configured its port for data
* transmission.
* <p>
* Cables:
* The Type-C cable/adapters capabilities have been discovered and list DisplayPort Alt Mode
* as one of its capabilities, however may not yet have entered DisplayPort Alt Mode or has been
* configured for data transmission.
*/
public static final int DISPLAYPORT_ALT_MODE_STATUS_CAPABLE_DISABLED = 2;
/**
* Port Partners:
* The port partner and device are both configured for DisplayPort Alt Mode.
* <p>
* Cables:
* The Type-C cable/adapter is configured for DisplayPort Alt Mode.
*/
public static final int DISPLAYPORT_ALT_MODE_STATUS_ENABLED = 3;
/*
* Indicates that DisplayPort Alt Mode link training has not initiated or completed.
*/
public static final int LINK_TRAINING_STATUS_UNKNOWN = 0;
/*
* Indicates that DisplayPort Alt Mode link training has completed and the optimal data
* transmission settings between the device and the connected port partner have successfully
* been negotiated.
*/
public static final int LINK_TRAINING_STATUS_SUCCESS = 1;
/*
* Indicates that DisplayPort Alt Mode link training has completed but no data transmission
* settings between the device and the connected port partner could be established, and that the
* link initialization has terminated.
*/
public static final int LINK_TRAINING_STATUS_FAILURE = 2;
/** @hide */
@IntDef(prefix = { "DISPLAYPORT_ALT_MODE_STATUS_" }, value = {
DISPLAYPORT_ALT_MODE_STATUS_UNKNOWN,
DISPLAYPORT_ALT_MODE_STATUS_NOT_CAPABLE,
DISPLAYPORT_ALT_MODE_STATUS_CAPABLE_DISABLED,
DISPLAYPORT_ALT_MODE_STATUS_ENABLED,
})
@Retention(RetentionPolicy.SOURCE)
public @interface DisplayPortAltModeStatus {}
/** @hide */
@IntDef(prefix = { "LINK_TRAINING_STATUS_" }, value = {
LINK_TRAINING_STATUS_UNKNOWN,
LINK_TRAINING_STATUS_SUCCESS,
LINK_TRAINING_STATUS_FAILURE,
})
@Retention(RetentionPolicy.SOURCE)
public @interface LinkTrainingStatus {}
/** @hide */
public DisplayPortAltModeInfo() {
mPartnerSinkStatus = DISPLAYPORT_ALT_MODE_STATUS_UNKNOWN;
mCableStatus = DISPLAYPORT_ALT_MODE_STATUS_UNKNOWN;
mNumLanes = 0;
mHotPlugDetect = false;
mLinkTrainingStatus = LINK_TRAINING_STATUS_UNKNOWN;
}
/** @hide */
public DisplayPortAltModeInfo(int partnerSinkStatus, int cableStatus,
int numLanes, boolean hotPlugDetect, int linkTrainingStatus) {
mPartnerSinkStatus = partnerSinkStatus;
mCableStatus = cableStatus;
mNumLanes = numLanes;
mHotPlugDetect = hotPlugDetect;
mLinkTrainingStatus = linkTrainingStatus;
}
/**
* Returns the DisplayPort Alt Mode Status for a port partner acting as a sink.
*
*/
public @DisplayPortAltModeStatus int getPartnerSinkStatus() {
return mPartnerSinkStatus;
}
/**
* Returns the DisplayPort Alt Mode Status for the attached cable
*
*/
public @DisplayPortAltModeStatus int getCableStatus() {
return mCableStatus;
}
/**
* Returns the number of lanes used to transmit display data.
*
*/
public int getNumberOfLanes() {
return mNumLanes;
}
/**
* Returns whether or not the Hot Plug Detect (HPD) value of the connected DisplayPort Alt Mode
* partner sink is active.
*/
public boolean isHotPlugDetectActive() {
return mHotPlugDetect;
}
/**
* Returns the DisplayPort Alt Mode link training status.
*/
public @LinkTrainingStatus int getLinkTrainingStatus() {
return mLinkTrainingStatus;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(@NonNull Parcel dest, int flags) {
dest.writeInt(mPartnerSinkStatus);
dest.writeInt(mCableStatus);
dest.writeInt(mNumLanes);
dest.writeBoolean(mHotPlugDetect);
dest.writeInt(mLinkTrainingStatus);
}
private String displayPortAltModeStatusToString(@DisplayPortAltModeStatus int status) {
switch (status) {
case DISPLAYPORT_ALT_MODE_STATUS_NOT_CAPABLE:
return "not capable";
case DISPLAYPORT_ALT_MODE_STATUS_CAPABLE_DISABLED:
return "capable disabled";
case DISPLAYPORT_ALT_MODE_STATUS_ENABLED:
return "enabled";
default:
return "unknown";
}
}
private String linkTrainingStatusToString(@LinkTrainingStatus int status) {
switch (status) {
case LINK_TRAINING_STATUS_SUCCESS:
return "success";
case LINK_TRAINING_STATUS_FAILURE:
return "failure";
default:
return "unknown";
}
}
@NonNull
@Override
public String toString() {
return "DisplayPortAltModeInfo{partnerSink="
+ displayPortAltModeStatusToString(mPartnerSinkStatus)
+ ", cable="
+ displayPortAltModeStatusToString(mCableStatus)
+ ", numLanes="
+ mNumLanes
+ ", hotPlugDetect="
+ mHotPlugDetect
+ ", linkTrainingStatus="
+ linkTrainingStatusToString(mLinkTrainingStatus)
+ "}";
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof DisplayPortAltModeInfo)) {
return false;
}
DisplayPortAltModeInfo other = (DisplayPortAltModeInfo) o;
return this.mPartnerSinkStatus == other.mPartnerSinkStatus
&& this.mCableStatus == other.mCableStatus
&& this.mNumLanes == other.mNumLanes
&& this.mHotPlugDetect == other.mHotPlugDetect
&& this.mLinkTrainingStatus == other.mLinkTrainingStatus;
}
@Override
public int hashCode() {
return Objects.hash(mPartnerSinkStatus, mCableStatus, mNumLanes, mHotPlugDetect,
mLinkTrainingStatus);
}
public static final @NonNull Parcelable.Creator<DisplayPortAltModeInfo> CREATOR =
new Parcelable.Creator<DisplayPortAltModeInfo>() {
@Override
public DisplayPortAltModeInfo createFromParcel(Parcel in) {
int partnerSinkStatus = in.readInt();
int cableStatus = in.readInt();
int numLanes = in.readInt();
boolean hotPlugDetect = in.readBoolean();
int linkTrainingStatus = in.readInt();
return new DisplayPortAltModeInfo(partnerSinkStatus, cableStatus, numLanes,
hotPlugDetect, linkTrainingStatus);
}
@Override
public DisplayPortAltModeInfo[] newArray(int size) {
return new DisplayPortAltModeInfo[size];
}
};
}