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