1 /*
2  * Copyright (C) 2023 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.NonNull;
20 import android.compat.annotation.UnsupportedAppUsage;
21 import android.os.Parcel;
22 import android.os.Parcelable;
23 
24 import java.util.Objects;
25 
26 /**
27  * Antenna Position received from satellite modem which gives information about antenna
28  * direction to be used with satellite communication and suggested device hold positions.
29  * @hide
30  */
31 public final class AntennaPosition implements Parcelable {
32     /** Antenna direction used for satellite communication. */
33     @NonNull AntennaDirection mAntennaDirection;
34 
35     /** Enum corresponding to device hold position to be used by the end user. */
36     @SatelliteManager.DeviceHoldPosition int mSuggestedHoldPosition;
37 
38     /**
39      * @hide
40      */
41     @UnsupportedAppUsage
AntennaPosition(@onNull AntennaDirection antennaDirection, int suggestedHoldPosition)42     public AntennaPosition(@NonNull AntennaDirection antennaDirection, int suggestedHoldPosition) {
43         mAntennaDirection = antennaDirection;
44         mSuggestedHoldPosition = suggestedHoldPosition;
45     }
46 
AntennaPosition(Parcel in)47     private AntennaPosition(Parcel in) {
48         readFromParcel(in);
49     }
50 
51     @Override
describeContents()52     public int describeContents() {
53         return 0;
54     }
55 
56     @Override
writeToParcel(@onNull Parcel out, int flags)57     public void writeToParcel(@NonNull Parcel out, int flags) {
58         out.writeParcelable(mAntennaDirection, flags);
59         out.writeInt(mSuggestedHoldPosition);
60     }
61 
62     @NonNull
63     public static final Creator<AntennaPosition> CREATOR =
64             new Creator<>() {
65                 @Override
66                 public AntennaPosition createFromParcel(Parcel in) {
67                     return new AntennaPosition(in);
68                 }
69 
70                 @Override
71                 public AntennaPosition[] newArray(int size) {
72                     return new AntennaPosition[size];
73                 }
74             };
75 
76     @Override
equals(Object o)77     public boolean equals(Object o) {
78         if (this == o) return true;
79         if (o == null || getClass() != o.getClass()) return false;
80         AntennaPosition that = (AntennaPosition) o;
81         return Objects.equals(mAntennaDirection, that.mAntennaDirection)
82                 && mSuggestedHoldPosition == that.mSuggestedHoldPosition;
83     }
84 
85     @Override
hashCode()86     public int hashCode() {
87         return Objects.hash(mAntennaDirection, mSuggestedHoldPosition);
88     }
89 
90     @Override
toString()91     @NonNull public String toString() {
92         StringBuilder sb = new StringBuilder();
93         sb.append("antennaDirection:");
94         sb.append(mAntennaDirection);
95         sb.append(",");
96 
97         sb.append("suggestedHoldPosition:");
98         sb.append(mSuggestedHoldPosition);
99         return sb.toString();
100     }
101 
102     @NonNull
getAntennaDirection()103     public AntennaDirection getAntennaDirection() {
104         return mAntennaDirection;
105     }
106 
107     @SatelliteManager.DeviceHoldPosition
getSuggestedHoldPosition()108     public int getSuggestedHoldPosition() {
109         return mSuggestedHoldPosition;
110     }
111 
readFromParcel(Parcel in)112     private void readFromParcel(Parcel in) {
113         mAntennaDirection = in.readParcelable(AntennaDirection.class.getClassLoader(),
114                 AntennaDirection.class);
115         mSuggestedHoldPosition = in.readInt();
116     }
117 }
118