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