1070e061a289d771e62b58379eaed153fd285b04fWink Saville/*
2070e061a289d771e62b58379eaed153fd285b04fWink Saville * Copyright (C) 2014 The Android Open Source Project
3070e061a289d771e62b58379eaed153fd285b04fWink Saville *
4070e061a289d771e62b58379eaed153fd285b04fWink Saville * Licensed under the Apache License, Version 2.0 (the "License");
5070e061a289d771e62b58379eaed153fd285b04fWink Saville * you may not use this file except in compliance with the License.
6070e061a289d771e62b58379eaed153fd285b04fWink Saville * You may obtain a copy of the License at
7070e061a289d771e62b58379eaed153fd285b04fWink Saville *
8070e061a289d771e62b58379eaed153fd285b04fWink Saville *      http://www.apache.org/licenses/LICENSE-2.0
9070e061a289d771e62b58379eaed153fd285b04fWink Saville *
10070e061a289d771e62b58379eaed153fd285b04fWink Saville * Unless required by applicable law or agreed to in writing, software
11070e061a289d771e62b58379eaed153fd285b04fWink Saville * distributed under the License is distributed on an "AS IS" BASIS,
12070e061a289d771e62b58379eaed153fd285b04fWink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13070e061a289d771e62b58379eaed153fd285b04fWink Saville * See the License for the specific language governing permissions and
14070e061a289d771e62b58379eaed153fd285b04fWink Saville * limitations under the License.
15070e061a289d771e62b58379eaed153fd285b04fWink Saville */
16070e061a289d771e62b58379eaed153fd285b04fWink Saville
17070e061a289d771e62b58379eaed153fd285b04fWink Savillepackage android.telephony;
18070e061a289d771e62b58379eaed153fd285b04fWink Saville
19070e061a289d771e62b58379eaed153fd285b04fWink Savilleimport android.os.Parcel;
20070e061a289d771e62b58379eaed153fd285b04fWink Savilleimport android.os.Parcelable;
21070e061a289d771e62b58379eaed153fd285b04fWink Saville
22070e061a289d771e62b58379eaed153fd285b04fWink Saville/**
23070e061a289d771e62b58379eaed153fd285b04fWink Saville * Data connection real time information
24070e061a289d771e62b58379eaed153fd285b04fWink Saville *
25070e061a289d771e62b58379eaed153fd285b04fWink Saville * TODO: How to handle multiple subscriptions?
262ffa11e4b71c545e34533ef827bdc1a07fbe8246Dianne Hackborn * @hide
27070e061a289d771e62b58379eaed153fd285b04fWink Saville */
28070e061a289d771e62b58379eaed153fd285b04fWink Savillepublic class DataConnectionRealTimeInfo implements Parcelable {
29070e061a289d771e62b58379eaed153fd285b04fWink Saville    private long mTime;             // Time the info was collected since boot in nanos;
30070e061a289d771e62b58379eaed153fd285b04fWink Saville
311a1b0464cb43903ed540f4c43fd423b16e398c04Bookatz    public static final int DC_POWER_STATE_LOW
321a1b0464cb43903ed540f4c43fd423b16e398c04Bookatz            = TelephonyProtoEnums.DATA_CONNECTION_POWER_STATE_LOW ; // = 1
331a1b0464cb43903ed540f4c43fd423b16e398c04Bookatz    public static final int DC_POWER_STATE_MEDIUM
341a1b0464cb43903ed540f4c43fd423b16e398c04Bookatz            = TelephonyProtoEnums.DATA_CONNECTION_POWER_STATE_MEDIUM; // = 2
351a1b0464cb43903ed540f4c43fd423b16e398c04Bookatz    public static final int DC_POWER_STATE_HIGH
361a1b0464cb43903ed540f4c43fd423b16e398c04Bookatz            = TelephonyProtoEnums.DATA_CONNECTION_POWER_STATE_HIGH; // = 3
371a1b0464cb43903ed540f4c43fd423b16e398c04Bookatz    public static final int DC_POWER_STATE_UNKNOWN
381a1b0464cb43903ed540f4c43fd423b16e398c04Bookatz            = TelephonyProtoEnums.DATA_CONNECTION_POWER_STATE_UNKNOWN; // = Integer.MAX_VALUE
39070e061a289d771e62b58379eaed153fd285b04fWink Saville
40070e061a289d771e62b58379eaed153fd285b04fWink Saville    private int mDcPowerState;      // DC_POWER_STATE_[LOW | MEDIUM | HIGH | UNKNOWN]
41070e061a289d771e62b58379eaed153fd285b04fWink Saville
42070e061a289d771e62b58379eaed153fd285b04fWink Saville    /**
43070e061a289d771e62b58379eaed153fd285b04fWink Saville     * Constructor
44070e061a289d771e62b58379eaed153fd285b04fWink Saville     *
45070e061a289d771e62b58379eaed153fd285b04fWink Saville     * @hide
46070e061a289d771e62b58379eaed153fd285b04fWink Saville     */
47070e061a289d771e62b58379eaed153fd285b04fWink Saville    public DataConnectionRealTimeInfo(long time, int dcPowerState) {
48070e061a289d771e62b58379eaed153fd285b04fWink Saville        mTime = time;
49070e061a289d771e62b58379eaed153fd285b04fWink Saville        mDcPowerState = dcPowerState;
50070e061a289d771e62b58379eaed153fd285b04fWink Saville    }
51070e061a289d771e62b58379eaed153fd285b04fWink Saville
52070e061a289d771e62b58379eaed153fd285b04fWink Saville    /**
53070e061a289d771e62b58379eaed153fd285b04fWink Saville     * Constructor
54070e061a289d771e62b58379eaed153fd285b04fWink Saville     *
55070e061a289d771e62b58379eaed153fd285b04fWink Saville     * @hide
56070e061a289d771e62b58379eaed153fd285b04fWink Saville     */
57070e061a289d771e62b58379eaed153fd285b04fWink Saville    public DataConnectionRealTimeInfo() {
58070e061a289d771e62b58379eaed153fd285b04fWink Saville        mTime = Long.MAX_VALUE;
59070e061a289d771e62b58379eaed153fd285b04fWink Saville        mDcPowerState = DC_POWER_STATE_UNKNOWN;
60070e061a289d771e62b58379eaed153fd285b04fWink Saville    }
61070e061a289d771e62b58379eaed153fd285b04fWink Saville
62070e061a289d771e62b58379eaed153fd285b04fWink Saville    /**
63070e061a289d771e62b58379eaed153fd285b04fWink Saville     * Construct a PreciseCallState object from the given parcel.
64070e061a289d771e62b58379eaed153fd285b04fWink Saville     */
65070e061a289d771e62b58379eaed153fd285b04fWink Saville    private DataConnectionRealTimeInfo(Parcel in) {
66070e061a289d771e62b58379eaed153fd285b04fWink Saville        mTime = in.readLong();
67070e061a289d771e62b58379eaed153fd285b04fWink Saville        mDcPowerState = in.readInt();
68070e061a289d771e62b58379eaed153fd285b04fWink Saville    }
69070e061a289d771e62b58379eaed153fd285b04fWink Saville
70070e061a289d771e62b58379eaed153fd285b04fWink Saville    /**
71070e061a289d771e62b58379eaed153fd285b04fWink Saville     * @return time the information was collected or Long.MAX_VALUE if unknown
72070e061a289d771e62b58379eaed153fd285b04fWink Saville     */
73070e061a289d771e62b58379eaed153fd285b04fWink Saville    public long getTime() {
74070e061a289d771e62b58379eaed153fd285b04fWink Saville        return mTime;
75070e061a289d771e62b58379eaed153fd285b04fWink Saville    }
76070e061a289d771e62b58379eaed153fd285b04fWink Saville
77070e061a289d771e62b58379eaed153fd285b04fWink Saville    /**
78070e061a289d771e62b58379eaed153fd285b04fWink Saville     * @return DC_POWER_STATE_[LOW | MEDIUM | HIGH | UNKNOWN]
79070e061a289d771e62b58379eaed153fd285b04fWink Saville     */
80070e061a289d771e62b58379eaed153fd285b04fWink Saville    public int getDcPowerState() {
81070e061a289d771e62b58379eaed153fd285b04fWink Saville        return mDcPowerState;
82070e061a289d771e62b58379eaed153fd285b04fWink Saville    }
83070e061a289d771e62b58379eaed153fd285b04fWink Saville
84070e061a289d771e62b58379eaed153fd285b04fWink Saville    @Override
85070e061a289d771e62b58379eaed153fd285b04fWink Saville    public int describeContents() {
86070e061a289d771e62b58379eaed153fd285b04fWink Saville        return 0;
87070e061a289d771e62b58379eaed153fd285b04fWink Saville    }
88070e061a289d771e62b58379eaed153fd285b04fWink Saville
89070e061a289d771e62b58379eaed153fd285b04fWink Saville    @Override
90070e061a289d771e62b58379eaed153fd285b04fWink Saville    public void writeToParcel(Parcel out, int flags) {
91070e061a289d771e62b58379eaed153fd285b04fWink Saville        out.writeLong(mTime);
92070e061a289d771e62b58379eaed153fd285b04fWink Saville        out.writeInt(mDcPowerState);
93070e061a289d771e62b58379eaed153fd285b04fWink Saville    }
94070e061a289d771e62b58379eaed153fd285b04fWink Saville
95070e061a289d771e62b58379eaed153fd285b04fWink Saville    public static final Parcelable.Creator<DataConnectionRealTimeInfo> CREATOR
96070e061a289d771e62b58379eaed153fd285b04fWink Saville            = new Parcelable.Creator<DataConnectionRealTimeInfo>() {
97070e061a289d771e62b58379eaed153fd285b04fWink Saville
98070e061a289d771e62b58379eaed153fd285b04fWink Saville        @Override
99070e061a289d771e62b58379eaed153fd285b04fWink Saville        public DataConnectionRealTimeInfo createFromParcel(Parcel in) {
100070e061a289d771e62b58379eaed153fd285b04fWink Saville            return new DataConnectionRealTimeInfo(in);
101070e061a289d771e62b58379eaed153fd285b04fWink Saville        }
102070e061a289d771e62b58379eaed153fd285b04fWink Saville
103070e061a289d771e62b58379eaed153fd285b04fWink Saville        @Override
104070e061a289d771e62b58379eaed153fd285b04fWink Saville        public DataConnectionRealTimeInfo[] newArray(int size) {
105070e061a289d771e62b58379eaed153fd285b04fWink Saville            return new DataConnectionRealTimeInfo[size];
106070e061a289d771e62b58379eaed153fd285b04fWink Saville        }
107070e061a289d771e62b58379eaed153fd285b04fWink Saville    };
108070e061a289d771e62b58379eaed153fd285b04fWink Saville
109070e061a289d771e62b58379eaed153fd285b04fWink Saville    @Override
110070e061a289d771e62b58379eaed153fd285b04fWink Saville    public int hashCode() {
111070e061a289d771e62b58379eaed153fd285b04fWink Saville        final long prime = 17;
112070e061a289d771e62b58379eaed153fd285b04fWink Saville        long result = 1;
113070e061a289d771e62b58379eaed153fd285b04fWink Saville        result = (prime * result) + mTime;
114070e061a289d771e62b58379eaed153fd285b04fWink Saville        result += (prime * result) + mDcPowerState;
115070e061a289d771e62b58379eaed153fd285b04fWink Saville        return (int)result;
116070e061a289d771e62b58379eaed153fd285b04fWink Saville    }
117070e061a289d771e62b58379eaed153fd285b04fWink Saville
118070e061a289d771e62b58379eaed153fd285b04fWink Saville    @Override
119070e061a289d771e62b58379eaed153fd285b04fWink Saville    public boolean equals(Object obj) {
120070e061a289d771e62b58379eaed153fd285b04fWink Saville        if (this == obj) {
121070e061a289d771e62b58379eaed153fd285b04fWink Saville            return true;
122070e061a289d771e62b58379eaed153fd285b04fWink Saville        }
123070e061a289d771e62b58379eaed153fd285b04fWink Saville        if (obj == null) {
124070e061a289d771e62b58379eaed153fd285b04fWink Saville            return false;
125070e061a289d771e62b58379eaed153fd285b04fWink Saville        }
126070e061a289d771e62b58379eaed153fd285b04fWink Saville        if (getClass() != obj.getClass()) {
127070e061a289d771e62b58379eaed153fd285b04fWink Saville            return false;
128070e061a289d771e62b58379eaed153fd285b04fWink Saville        }
129070e061a289d771e62b58379eaed153fd285b04fWink Saville        DataConnectionRealTimeInfo other = (DataConnectionRealTimeInfo) obj;
130070e061a289d771e62b58379eaed153fd285b04fWink Saville        return (mTime == other.mTime)
131070e061a289d771e62b58379eaed153fd285b04fWink Saville                && (mDcPowerState == other.mDcPowerState);
132070e061a289d771e62b58379eaed153fd285b04fWink Saville    }
133070e061a289d771e62b58379eaed153fd285b04fWink Saville
134070e061a289d771e62b58379eaed153fd285b04fWink Saville    @Override
135070e061a289d771e62b58379eaed153fd285b04fWink Saville    public String toString() {
136070e061a289d771e62b58379eaed153fd285b04fWink Saville        StringBuffer sb = new StringBuffer();
137070e061a289d771e62b58379eaed153fd285b04fWink Saville
138070e061a289d771e62b58379eaed153fd285b04fWink Saville        sb.append("mTime=").append(mTime);
139070e061a289d771e62b58379eaed153fd285b04fWink Saville        sb.append(" mDcPowerState=").append(mDcPowerState);
140070e061a289d771e62b58379eaed153fd285b04fWink Saville
141070e061a289d771e62b58379eaed153fd285b04fWink Saville        return sb.toString();
142070e061a289d771e62b58379eaed153fd285b04fWink Saville    }
143070e061a289d771e62b58379eaed153fd285b04fWink Saville}
144