blob: c0833af954d8fdaadc59c08d0c9ea786d2a1c80e [file] [log] [blame]
Malcolm Chene1623652018-08-08 20:27:45 -07001/*
2 * Copyright (C) 2018 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
17package android.telephony;
18
19import android.os.Parcel;
20import android.os.Parcelable;
21
22import java.util.Objects;
23
24/**
25 * Information of a single logical modem indicating
26 * its id, supported rats and whether it supports voice or data, etc.
27 * @hide
28 */
29public class ModemInfo implements Parcelable {
30 public final int modemId;
31 public final int rat; /* bitset */
32 public final boolean isVoiceSupported;
33 public final boolean isDataSupported;
34
Malcolm Chen13caf062018-12-21 15:43:57 -080035 // TODO b/121394331: Clean up this class after V1_1.PhoneCapability cleanup.
36 public ModemInfo(int modemId) {
37 this(modemId, 0, true, true);
38 }
39
Malcolm Chene1623652018-08-08 20:27:45 -070040 public ModemInfo(int modemId, int rat, boolean isVoiceSupported, boolean isDataSupported) {
41 this.modemId = modemId;
42 this.rat = rat;
43 this.isVoiceSupported = isVoiceSupported;
44 this.isDataSupported = isDataSupported;
45 }
46
47 public ModemInfo(Parcel in) {
48 modemId = in.readInt();
49 rat = in.readInt();
50 isVoiceSupported = in.readBoolean();
51 isDataSupported = in.readBoolean();
52 }
53
54 @Override
55 public String toString() {
56 return "modemId=" + modemId + " rat=" + rat + " isVoiceSupported:" + isVoiceSupported
57 + " isDataSupported:" + isDataSupported;
58 }
59
60 @Override
61 public int hashCode() {
62 return Objects.hash(modemId, rat, isVoiceSupported, isDataSupported);
63 }
64
65 @Override
66 public boolean equals(Object o) {
67 if (o == null || !(o instanceof ModemInfo) || hashCode() != o.hashCode()) {
68 return false;
69 }
70
71 if (this == o) {
72 return true;
73 }
74
75 ModemInfo s = (ModemInfo) o;
76
77 return (modemId == s.modemId
78 && rat == s.rat
79 && isVoiceSupported == s.isVoiceSupported
80 && isDataSupported == s.isDataSupported);
81 }
82
83 /**
84 * {@link Parcelable#describeContents}
85 */
86 public @ContentsFlags int describeContents() {
87 return 0;
88 }
89
90 /**
91 * {@link Parcelable#writeToParcel}
92 */
93 public void writeToParcel(Parcel dest, @WriteFlags int flags) {
94 dest.writeInt(modemId);
95 dest.writeInt(rat);
96 dest.writeBoolean(isVoiceSupported);
97 dest.writeBoolean(isDataSupported);
98 }
99
Jeff Sharkey9e8f83d2019-02-28 12:06:45 -0700100 public static final @android.annotation.NonNull Parcelable.Creator<ModemInfo> CREATOR = new Parcelable.Creator() {
Malcolm Chene1623652018-08-08 20:27:45 -0700101 public ModemInfo createFromParcel(Parcel in) {
102 return new ModemInfo(in);
103 }
104
105 public ModemInfo[] newArray(int size) {
106 return new ModemInfo[size];
107 }
108 };
109}