• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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