/* * Copyright (C) 2019 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.car.trust; import android.annotation.NonNull; import android.annotation.SystemApi; import android.os.Parcel; import android.os.Parcelable; import java.util.Objects; /** * Contains basic info of a trusted device. * * @hide * @deprecated Adding a trusted device is no longer a supported feature and these APIs will be * removed in the next Android release. */ @Deprecated @SystemApi public final class TrustedDeviceInfo implements Parcelable { // TODO(b/124052887) public static final String DEFAULT_NAME = "Default"; private static final String DEVICE_INFO_DELIMITER = ","; private final long mHandle; private final String mAddress; private final String mName; public TrustedDeviceInfo(long handle, @NonNull String address, @NonNull String name) { mHandle = handle; mAddress = address; mName = name; } /** * Returns the handle of current device * * @return handle which is unique for every device */ public long getHandle() { return mHandle; } /** * Get local device name of current device * * @return local device name */ @NonNull public String getName() { return mName; } /** * Get MAC address of current device * * @return MAC address */ @NonNull public String getAddress() { return mAddress; } public TrustedDeviceInfo(Parcel in) { mHandle = in.readLong(); mName = in.readString(); mAddress = in.readString(); } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeLong(mHandle); dest.writeString(mName); dest.writeString(mAddress); } @Override public String toString() { return String.format("TrustedDevice{ handle=%d. address=%s, name=%s }", mHandle, mAddress, mName); } @Override public boolean equals(Object obj) { if (!(obj instanceof TrustedDeviceInfo)) { return false; } // If the handles of two devices are the same, then they will be considered as equals. TrustedDeviceInfo secondDevice = (TrustedDeviceInfo) obj; return mHandle == secondDevice.getHandle(); } @Override public int hashCode() { return Objects.hash(mHandle); } /** * Serialize the trusted device info into string * * @return string contains current trusted device information with certain format */ public String serialize() { return String.join(DEVICE_INFO_DELIMITER, String.valueOf(mHandle), mAddress, mName); } /** * Deserialize the string to trusted device info * * @param deviceInfo string which contains trusted device info, should be originally generated * by serialize method * @return TrustedDeviceInfo object constructed from the trusted device info in the string */ public static TrustedDeviceInfo deserialize(String deviceInfo) { String[] res = deviceInfo.split(DEVICE_INFO_DELIMITER); return new TrustedDeviceInfo(Long.valueOf(res[0]), res[1], res[2]); } public static final Creator CREATOR = new Creator() { public TrustedDeviceInfo createFromParcel(Parcel in) { return new TrustedDeviceInfo(in); } public TrustedDeviceInfo[] newArray(int size) { return new TrustedDeviceInfo[size]; } }; }