1 /* 2 * Copyright (C) 2024 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package android.telephony.satellite; 18 19 import android.annotation.FlaggedApi; 20 import android.annotation.NonNull; 21 import android.annotation.SystemApi; 22 import android.os.Parcel; 23 import android.os.Parcelable; 24 import android.telephony.Rlog; 25 26 import com.android.internal.telephony.flags.Flags; 27 import com.android.internal.telephony.util.TelephonyUtils; 28 29 import java.util.Objects; 30 31 /** 32 * Represents the provisioning state of SatelliteSubscriberInfo. 33 * 34 * @hide 35 */ 36 @SystemApi 37 @FlaggedApi(Flags.FLAG_SATELLITE_SYSTEM_APIS) 38 public final class SatelliteSubscriberProvisionStatus implements Parcelable { 39 private SatelliteSubscriberInfo mSubscriberInfo; 40 /** {@code true} mean the satellite subscriber is provisioned, {@code false} otherwise. */ 41 private boolean mProvisioned; 42 43 /** 44 * @hide 45 */ SatelliteSubscriberProvisionStatus(@onNull Builder builder)46 public SatelliteSubscriberProvisionStatus(@NonNull Builder builder) { 47 mSubscriberInfo = builder.mSubscriberInfo; 48 mProvisioned = builder.mProvisioned; 49 } 50 51 /** 52 * Builder class for constructing SatelliteSubscriberProvisionStatus objects 53 */ 54 public static final class Builder { 55 private SatelliteSubscriberInfo mSubscriberInfo; 56 private boolean mProvisioned; 57 58 /** 59 * Set the SatelliteSubscriberInfo and returns the Builder class. 60 */ 61 @NonNull setSatelliteSubscriberInfo( @onNull SatelliteSubscriberInfo satelliteSubscriberInfo)62 public Builder setSatelliteSubscriberInfo( 63 @NonNull SatelliteSubscriberInfo satelliteSubscriberInfo) { 64 mSubscriberInfo = satelliteSubscriberInfo; 65 return this; 66 } 67 68 /** 69 * Set the SatelliteSubscriberInfo's provisionStatus and returns the Builder class. 70 */ 71 @NonNull setProvisioned(boolean provisioned)72 public Builder setProvisioned(boolean provisioned) { 73 mProvisioned = provisioned; 74 return this; 75 } 76 77 /** 78 * Returns SatelliteSubscriberProvisionStatus object. 79 */ 80 @NonNull build()81 public SatelliteSubscriberProvisionStatus build() { 82 return new SatelliteSubscriberProvisionStatus(this); 83 } 84 } 85 SatelliteSubscriberProvisionStatus(Parcel in)86 private SatelliteSubscriberProvisionStatus(Parcel in) { 87 readFromParcel(in); 88 } 89 90 @Override writeToParcel(@onNull Parcel out, int flags)91 public void writeToParcel(@NonNull Parcel out, int flags) { 92 out.writeParcelable(mSubscriberInfo, flags); 93 out.writeBoolean(mProvisioned); 94 } 95 96 public static final @android.annotation.NonNull Creator<SatelliteSubscriberProvisionStatus> 97 CREATOR = 98 new Creator<SatelliteSubscriberProvisionStatus>() { 99 @Override 100 public SatelliteSubscriberProvisionStatus createFromParcel(Parcel in) { 101 return new SatelliteSubscriberProvisionStatus(in); 102 } 103 104 @Override 105 public SatelliteSubscriberProvisionStatus[] newArray(int size) { 106 return new SatelliteSubscriberProvisionStatus[size]; 107 } 108 }; 109 110 @Override describeContents()111 public int describeContents() { 112 return 0; 113 } 114 115 /** 116 * SatelliteSubscriberInfo that has a provisioning state. 117 * @return SatelliteSubscriberInfo. 118 */ getSatelliteSubscriberInfo()119 public @NonNull SatelliteSubscriberInfo getSatelliteSubscriberInfo() { 120 return mSubscriberInfo; 121 } 122 123 /** 124 * SatelliteSubscriberInfo's provisioning state. 125 * @return {@code true} means provisioning. {@code false} means deprovisioning. 126 */ isProvisioned()127 public boolean isProvisioned() { 128 return mProvisioned; 129 } 130 131 @NonNull 132 @Override toString()133 public String toString() { 134 StringBuilder sb = new StringBuilder(); 135 136 sb.append("SatelliteSubscriberInfo:"); 137 sb.append(Rlog.pii(TelephonyUtils.IS_DEBUGGABLE, mSubscriberInfo)); 138 sb.append(","); 139 140 sb.append("ProvisionStatus:"); 141 sb.append(mProvisioned); 142 return sb.toString(); 143 } 144 145 @Override hashCode()146 public int hashCode() { 147 return Objects.hash(mSubscriberInfo, mProvisioned); 148 } 149 150 @Override equals(Object o)151 public boolean equals(Object o) { 152 if (this == o) return true; 153 if (!(o instanceof SatelliteSubscriberProvisionStatus)) return false; 154 SatelliteSubscriberProvisionStatus that = (SatelliteSubscriberProvisionStatus) o; 155 return Objects.equals(mSubscriberInfo, that.mSubscriberInfo) 156 && mProvisioned == that.mProvisioned; 157 } 158 readFromParcel(Parcel in)159 private void readFromParcel(Parcel in) { 160 mSubscriberInfo = in.readParcelable(SatelliteSubscriberInfo.class.getClassLoader(), 161 SatelliteSubscriberInfo.class); 162 mProvisioned = in.readBoolean(); 163 } 164 } 165