146f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham/* 246f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham * Copyright (C) 2015 The Android Open Source Project 346f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham * 446f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham * Licensed under the Apache License, Version 2.0 (the "License"); 546f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham * you may not use this file except in compliance with the License. 646f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham * You may obtain a copy of the License at 746f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham * 846f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham * http://www.apache.org/licenses/LICENSE-2.0 946f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham * 1046f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham * Unless required by applicable law or agreed to in writing, software 1146f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham * distributed under the License is distributed on an "AS IS" BASIS, 1246f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1346f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham * See the License for the specific language governing permissions and 1446f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham * limitations under the License. 1546f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham */ 1646f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham 1746f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadhampackage android.net.wifi; 1846f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham 1946f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadhamimport android.os.Parcel; 2013f378e738746800517f98b8561da315993c240aRoshan Piusimport android.os.Parcelable; 2146f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham 2246f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham/** 2346f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham * A class representing wifi wake reason accounting. 2446f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham */ 2546f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham 2646f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham/** @hide */ 2746f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadhampublic class WifiWakeReasonAndCounts implements Parcelable { 2846f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham private static final String TAG = "WifiWakeReasonAndCounts"; 2946f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham /** 3046f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham * Wlan can wake host, only when it is cmd/event, local driver-fw 3146f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham * functions(non-data, non cmd/event) and rx data.The first packet 3246f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham * from wlan that woke up a sleep host is what is accounted here. 3346f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham * Total wlan wake to application processor would be: 3446f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham * [cmdEventWake + driverFwLocalWake + totalRxDataWake] 3546f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham * A further classification is provided for identifying the reasons 3646f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham * for wakeup. 3746f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham */ 3846f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham public int totalCmdEventWake; 3946f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham public int totalDriverFwLocalWake; 4046f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham public int totalRxDataWake; 4146f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham 4246f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham public int rxUnicast; 4346f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham public int rxMulticast; 4446f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham public int rxBroadcast; 4546f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham 4646f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham public int icmp; 4746f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham public int icmp6; 4846f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham public int icmp6Ra; 4946f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham public int icmp6Na; 5046f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham public int icmp6Ns; 5146f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham 5246f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham public int ipv4RxMulticast; 5346f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham public int ipv6Multicast; 5446f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham public int otherRxMulticast; 5513f378e738746800517f98b8561da315993c240aRoshan Pius public int[] cmdEventWakeCntArray; 5613f378e738746800517f98b8561da315993c240aRoshan Pius public int[] driverFWLocalWakeCntArray; 5746f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham 5846f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham /* {@hide} */ 5946f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham public WifiWakeReasonAndCounts () { 6046f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham } 6146f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham 6246f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham @Override 6346f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham /* {@hide} */ 6446f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham public String toString() { 6546f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham StringBuffer sb = new StringBuffer(); 6646f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham sb.append(" totalCmdEventWake ").append(totalCmdEventWake); 6746f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham sb.append(" totalDriverFwLocalWake ").append(totalDriverFwLocalWake); 6846f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham sb.append(" totalRxDataWake ").append(totalRxDataWake); 6946f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham 7046f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham sb.append(" rxUnicast ").append(rxUnicast); 7146f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham sb.append(" rxMulticast ").append(rxMulticast); 7246f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham sb.append(" rxBroadcast ").append(rxBroadcast); 7346f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham 7446f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham sb.append(" icmp ").append(icmp); 7546f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham sb.append(" icmp6 ").append(icmp6); 7646f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham sb.append(" icmp6Ra ").append(icmp6Ra); 7746f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham sb.append(" icmp6Na ").append(icmp6Na); 7846f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham sb.append(" icmp6Ns ").append(icmp6Ns); 7946f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham 8046f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham sb.append(" ipv4RxMulticast ").append(ipv4RxMulticast); 8146f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham sb.append(" ipv6Multicast ").append(ipv6Multicast); 8246f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham sb.append(" otherRxMulticast ").append(otherRxMulticast); 8313f378e738746800517f98b8561da315993c240aRoshan Pius for (int i = 0; i < cmdEventWakeCntArray.length; i++) { 8413f378e738746800517f98b8561da315993c240aRoshan Pius sb.append(" cmdEventWakeCntArray[" + i + "] " + cmdEventWakeCntArray[i]); 8513f378e738746800517f98b8561da315993c240aRoshan Pius } 8613f378e738746800517f98b8561da315993c240aRoshan Pius for (int i = 0; i < driverFWLocalWakeCntArray.length; i++) { 8713f378e738746800517f98b8561da315993c240aRoshan Pius sb.append(" driverFWLocalWakeCntArray[" + i + "] " + driverFWLocalWakeCntArray[i]); 8813f378e738746800517f98b8561da315993c240aRoshan Pius } 8913f378e738746800517f98b8561da315993c240aRoshan Pius 9046f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham return sb.toString(); 9146f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham } 9246f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham 9346f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham /* Implement the Parcelable interface 9446f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham * {@hide} 9546f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham */ 9646f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham @Override 9746f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham public int describeContents() { 9846f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham return 0; 9946f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham } 10046f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham 10146f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham /* Implement the Parcelable interface 10246f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham * {@hide} 10346f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham */ 10446f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham @Override 10546f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham public void writeToParcel(Parcel dest, int flags) { 10646f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham dest.writeInt(totalCmdEventWake); 10746f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham dest.writeInt(totalDriverFwLocalWake); 10846f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham dest.writeInt(totalRxDataWake); 10946f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham 11046f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham dest.writeInt(rxUnicast); 11146f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham dest.writeInt(rxMulticast); 11246f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham dest.writeInt(rxBroadcast); 11346f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham 11446f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham dest.writeInt(icmp); 11546f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham dest.writeInt(icmp6); 11646f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham dest.writeInt(icmp6Ra); 11746f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham dest.writeInt(icmp6Na); 11846f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham dest.writeInt(icmp6Ns); 11946f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham 12046f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham dest.writeInt(ipv4RxMulticast); 12146f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham dest.writeInt(ipv6Multicast); 12246f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham dest.writeInt(otherRxMulticast); 12313f378e738746800517f98b8561da315993c240aRoshan Pius dest.writeIntArray(cmdEventWakeCntArray); 12413f378e738746800517f98b8561da315993c240aRoshan Pius dest.writeIntArray(driverFWLocalWakeCntArray); 12546f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham } 12646f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham 12746f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham /* Implement the Parcelable interface 12846f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham * {@hide} 12946f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham */ 13046f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham public static final Creator<WifiWakeReasonAndCounts> CREATOR = 13146f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham new Creator<WifiWakeReasonAndCounts>() { 13246f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham public WifiWakeReasonAndCounts createFromParcel(Parcel in) { 13346f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham WifiWakeReasonAndCounts counts = new WifiWakeReasonAndCounts(); 13446f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham counts.totalCmdEventWake = in.readInt(); 13546f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham counts.totalDriverFwLocalWake = in.readInt(); 13646f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham counts.totalRxDataWake = in.readInt(); 13746f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham 13846f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham counts.rxUnicast = in.readInt(); 13946f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham counts.rxMulticast = in.readInt(); 14046f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham counts.rxBroadcast = in.readInt(); 14146f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham 14246f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham counts.icmp = in.readInt(); 14346f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham counts.icmp6 = in.readInt(); 14446f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham counts.icmp6Ra = in.readInt(); 14546f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham counts.icmp6Na = in.readInt(); 14646f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham counts.icmp6Ns = in.readInt(); 14746f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham 14846f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham counts.ipv4RxMulticast = in.readInt(); 14946f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham counts.ipv6Multicast = in.readInt(); 15046f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham counts.otherRxMulticast = in.readInt(); 15113f378e738746800517f98b8561da315993c240aRoshan Pius in.readIntArray(counts.cmdEventWakeCntArray); 15213f378e738746800517f98b8561da315993c240aRoshan Pius in.readIntArray(counts.driverFWLocalWakeCntArray); 15346f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham return counts; 15446f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham } 15546f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham /* Implement the Parcelable interface 15646f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham * {@hide} 15746f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham */ 15846f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham @Override 15946f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham public WifiWakeReasonAndCounts[] newArray(int size) { 16046f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham return new WifiWakeReasonAndCounts[size]; 16146f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham } 16246f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham }; 16346f5f53d2838ec6f265c168100e21a22f990a97dPrerepa Viswanadham} 164