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