1 /*
2  * Copyright (C) 2022 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.os;
18 
19 import android.annotation.NonNull;
20 
21 import java.util.ArrayList;
22 import java.util.List;
23 
24 /**
25  * Snapshot of Bluetooth battery stats.
26  *
27  * @hide
28  */
29 @android.ravenwood.annotation.RavenwoodKeepWholeClass
30 public class BluetoothBatteryStats implements Parcelable {
31 
32     /** @hide */
33     public static class UidStats {
34         public final int uid;
35         public final long scanTimeMs;
36         public final long unoptimizedScanTimeMs;
37         public final int scanResultCount;
38         public final long rxTimeMs;
39         public final long txTimeMs;
40 
UidStats(int uid, long scanTimeMs, long unoptimizedScanTimeMs, int scanResultCount, long rxTimeMs, long txTimeMs)41         public UidStats(int uid, long scanTimeMs, long unoptimizedScanTimeMs, int scanResultCount,
42                 long rxTimeMs, long txTimeMs) {
43             this.uid = uid;
44             this.scanTimeMs = scanTimeMs;
45             this.unoptimizedScanTimeMs = unoptimizedScanTimeMs;
46             this.scanResultCount = scanResultCount;
47             this.rxTimeMs = rxTimeMs;
48             this.txTimeMs = txTimeMs;
49         }
50 
UidStats(Parcel in)51         private UidStats(Parcel in) {
52             uid = in.readInt();
53             scanTimeMs = in.readLong();
54             unoptimizedScanTimeMs = in.readLong();
55             scanResultCount = in.readInt();
56             rxTimeMs = in.readLong();
57             txTimeMs = in.readLong();
58         }
59 
writeToParcel(Parcel out)60         private void writeToParcel(Parcel out) {
61             out.writeInt(uid);
62             out.writeLong(scanTimeMs);
63             out.writeLong(unoptimizedScanTimeMs);
64             out.writeInt(scanResultCount);
65             out.writeLong(rxTimeMs);
66             out.writeLong(txTimeMs);
67         }
68 
69         @Override
toString()70         public String toString() {
71             return "UidStats{"
72                     + "uid=" + uid
73                     + ", scanTimeMs=" + scanTimeMs
74                     + ", unoptimizedScanTimeMs=" + unoptimizedScanTimeMs
75                     + ", scanResultCount=" + scanResultCount
76                     + ", rxTimeMs=" + rxTimeMs
77                     + ", txTimeMs=" + txTimeMs
78                     + '}';
79         }
80     }
81 
82     private final List<UidStats> mUidStats;
83 
BluetoothBatteryStats(@onNull List<UidStats> uidStats)84     public BluetoothBatteryStats(@NonNull List<UidStats> uidStats) {
85         mUidStats = uidStats;
86     }
87 
88     @NonNull
getUidStats()89     public List<UidStats> getUidStats() {
90         return mUidStats;
91     }
92 
BluetoothBatteryStats(Parcel in)93     protected BluetoothBatteryStats(Parcel in) {
94         final int size = in.readInt();
95         mUidStats = new ArrayList<>(size);
96         for (int i = 0; i < size; i++) {
97             mUidStats.add(new UidStats(in));
98         }
99     }
100 
101     @Override
writeToParcel(@onNull Parcel out, int flags)102     public void writeToParcel(@NonNull Parcel out, int flags) {
103         final int size = mUidStats.size();
104         out.writeInt(size);
105         for (int i = 0; i < size; i++) {
106             UidStats stats = mUidStats.get(i);
107             stats.writeToParcel(out);
108         }
109     }
110 
111     public static final Creator<BluetoothBatteryStats> CREATOR =
112             new Creator<BluetoothBatteryStats>() {
113                 @Override
114                 public BluetoothBatteryStats createFromParcel(Parcel in) {
115                     return new BluetoothBatteryStats(in);
116                 }
117 
118                 @Override
119                 public BluetoothBatteryStats[] newArray(int size) {
120                     return new BluetoothBatteryStats[size];
121                 }
122             };
123 
124     @Override
describeContents()125     public int describeContents() {
126         return 0;
127     }
128 }
129