1965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko/*
2965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko * Copyright (C) 2015 The Android Open Source Project
3965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko *
4965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko * Licensed under the Apache License, Version 2.0 (the "License");
5965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko * you may not use this file except in compliance with the License.
6965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko * You may obtain a copy of the License at
7965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko *
8965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko *      http://www.apache.org/licenses/LICENSE-2.0
9965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko *
10965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko * Unless required by applicable law or agreed to in writing, software
11965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko * distributed under the License is distributed on an "AS IS" BASIS,
12965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko * See the License for the specific language governing permissions and
14965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko * limitations under the License.
15965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko */
16965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko
17965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenkopackage android.os;
18965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko
19965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko/**
20965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko * CPU usage information per core.
21965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko */
22965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenkopublic final class CpuUsageInfo implements Parcelable {
23965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko    private long mActive;
24965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko    private long mTotal;
25965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko
26965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko    public static final Parcelable.Creator<CpuUsageInfo> CREATOR = new
27965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko            Parcelable.Creator<CpuUsageInfo>() {
28965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko                    public CpuUsageInfo createFromParcel(Parcel in) {
29965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko                        return new CpuUsageInfo(in);
30965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko                    }
31965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko
32965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko                    public CpuUsageInfo[] newArray(int size) {
33965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko                        return new CpuUsageInfo[size];
34965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko                    }
35965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko                };
36965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko
37965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko    /** @hide */
38965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko    public CpuUsageInfo(long activeTime, long totalTime) {
39965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko        mActive = activeTime;
40965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko        mTotal = totalTime;
41965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko    }
42965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko
43965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko    private CpuUsageInfo(Parcel in) {
44965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko        readFromParcel(in);
45965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko    }
46965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko
47965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko    /**
48965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko     * Gets the active time in milliseconds since the system last booted.
49965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko     *
50965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko     * @return Active time in milliseconds.
51965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko     */
52965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko    public long getActive() {
53965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko        return mActive;
54965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko    }
55965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko
56965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko    /**
57965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko     * Gets the total time in milliseconds that the CPU has been enabled since the system last
58965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko     * booted. This includes time the CPU spent idle.
59965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko     *
60965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko     * @return Total time in milliseconds.
61965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko     */
62965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko    public long getTotal() {
63965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko        return mTotal;
64965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko    }
65965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko
66965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko    @Override
67965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko    public int describeContents() {
68965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko        return 0;
69965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko    }
70965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko
71965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko    @Override
72965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko    public void writeToParcel(Parcel out, int flags) {
73965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko        out.writeLong(mActive);
74965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko        out.writeLong(mTotal);
75965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko    }
76965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko
77965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko    private void readFromParcel(Parcel in) {
78965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko        mActive = in.readLong();
79965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko        mTotal = in.readLong();
80965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko    }
81965ecbbb3eb19007690c333ab3aa05e380deb633Polina Bondarenko}
82