Merge "Expose api to retrieve wakelock information per client"
This commit is contained in:
22
telephony/java/android/telephony/ClientRequestStats.aidl
Normal file
22
telephony/java/android/telephony/ClientRequestStats.aidl
Normal file
@@ -0,0 +1,22 @@
|
||||
/*
|
||||
** Copyright 2016, The Android Open Source Project
|
||||
**
|
||||
** Licensed under the Apache License, Version 2.0 (the "License");
|
||||
** you may not use this file except in compliance with the License.
|
||||
** You may obtain a copy of the License at
|
||||
**
|
||||
** http://www.apache.org/licenses/LICENSE-2.0
|
||||
**
|
||||
** Unless required by applicable law or agreed to in writing, software
|
||||
** distributed under the License is distributed on an "AS IS" BASIS,
|
||||
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
** See the License for the specific language governing permissions and
|
||||
** limitations under the License.
|
||||
*/
|
||||
|
||||
package android.telephony;
|
||||
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
parcelable ClientRequestStats;
|
||||
175
telephony/java/android/telephony/ClientRequestStats.java
Normal file
175
telephony/java/android/telephony/ClientRequestStats.java
Normal file
@@ -0,0 +1,175 @@
|
||||
/*
|
||||
* Copyright (C) 2016 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License
|
||||
*/
|
||||
|
||||
package android.telephony;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.telephony.TelephonyHistogram;
|
||||
import android.util.SparseArray;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Parcelable class to store Client request statistics information.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public final class ClientRequestStats implements Parcelable {
|
||||
public static final Parcelable.Creator<ClientRequestStats> CREATOR =
|
||||
new Parcelable.Creator<ClientRequestStats>() {
|
||||
|
||||
public ClientRequestStats createFromParcel(Parcel in) {
|
||||
return new ClientRequestStats(in);
|
||||
}
|
||||
|
||||
public ClientRequestStats[] newArray(int size) {
|
||||
return new ClientRequestStats[size];
|
||||
}
|
||||
};
|
||||
private static final int REQUEST_HISTOGRAM_BUCKET_COUNT = 5;
|
||||
private String mCallingPackage;
|
||||
/* completed requests wake lock time in milli seconds */
|
||||
private long mCompletedRequestsWakelockTime = 0;
|
||||
private long mCompletedRequestsCount = 0;
|
||||
private long mPendingRequestsWakelockTime = 0;
|
||||
private long mPendingRequestsCount = 0;
|
||||
private SparseArray<TelephonyHistogram> mRequestHistograms =
|
||||
new SparseArray<TelephonyHistogram>();
|
||||
|
||||
public ClientRequestStats(Parcel in) {
|
||||
readFromParcel(in);
|
||||
}
|
||||
|
||||
public ClientRequestStats() {
|
||||
}
|
||||
|
||||
public ClientRequestStats(ClientRequestStats clientRequestStats) {
|
||||
mCallingPackage = clientRequestStats.getCallingPackage();
|
||||
mCompletedRequestsCount = clientRequestStats.getCompletedRequestsCount();
|
||||
mCompletedRequestsWakelockTime = clientRequestStats.getCompletedRequestsWakelockTime();
|
||||
mPendingRequestsCount = clientRequestStats.getPendingRequestsCount();
|
||||
mPendingRequestsWakelockTime = clientRequestStats.getPendingRequestsWakelockTime();
|
||||
|
||||
List<TelephonyHistogram> list = clientRequestStats.getRequestHistograms();
|
||||
for (TelephonyHistogram entry : list) {
|
||||
mRequestHistograms.put(entry.getId(), entry);
|
||||
}
|
||||
}
|
||||
|
||||
public String getCallingPackage() {
|
||||
return mCallingPackage;
|
||||
}
|
||||
|
||||
public void setCallingPackage(String mCallingPackage) {
|
||||
this.mCallingPackage = mCallingPackage;
|
||||
}
|
||||
|
||||
public long getCompletedRequestsWakelockTime() {
|
||||
return mCompletedRequestsWakelockTime;
|
||||
}
|
||||
|
||||
public void addCompletedWakelockTime(long completedRequestsWakelockTime) {
|
||||
this.mCompletedRequestsWakelockTime += completedRequestsWakelockTime;
|
||||
}
|
||||
|
||||
public long getPendingRequestsWakelockTime() {
|
||||
return mPendingRequestsWakelockTime;
|
||||
}
|
||||
|
||||
public void setPendingRequestsWakelockTime(long pendingRequestsWakelockTime) {
|
||||
this.mPendingRequestsWakelockTime = pendingRequestsWakelockTime;
|
||||
}
|
||||
|
||||
public long getCompletedRequestsCount() {
|
||||
return mCompletedRequestsCount;
|
||||
}
|
||||
|
||||
public void incrementCompletedRequestsCount() {
|
||||
this.mCompletedRequestsCount++;
|
||||
}
|
||||
|
||||
public long getPendingRequestsCount() {
|
||||
return mPendingRequestsCount;
|
||||
}
|
||||
|
||||
public void setPendingRequestsCount(long pendingRequestsCount) {
|
||||
this.mPendingRequestsCount = pendingRequestsCount;
|
||||
}
|
||||
|
||||
public List<TelephonyHistogram> getRequestHistograms() {
|
||||
List<TelephonyHistogram> list;
|
||||
synchronized (mRequestHistograms) {
|
||||
list = new ArrayList<>(mRequestHistograms.size());
|
||||
for (int i = 0; i < mRequestHistograms.size(); i++) {
|
||||
TelephonyHistogram entry = new TelephonyHistogram(mRequestHistograms.valueAt(i));
|
||||
list.add(entry);
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
public void updateRequestHistograms(int requestId, int time) {
|
||||
synchronized (mRequestHistograms) {
|
||||
TelephonyHistogram entry = mRequestHistograms.get(requestId);
|
||||
if (entry == null) {
|
||||
entry = new TelephonyHistogram(TelephonyHistogram.TELEPHONY_CATEGORY_RIL,
|
||||
requestId, REQUEST_HISTOGRAM_BUCKET_COUNT);
|
||||
mRequestHistograms.put(requestId, entry);
|
||||
}
|
||||
entry.addTimeTaken(time);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ClientRequestStats{" +
|
||||
"mCallingPackage='" + mCallingPackage + '\'' +
|
||||
", mCompletedRequestsWakelockTime=" + mCompletedRequestsWakelockTime +
|
||||
", mCompletedRequestsCount=" + mCompletedRequestsCount +
|
||||
", mPendingRequestsWakelockTime=" + mPendingRequestsWakelockTime +
|
||||
", mPendingRequestsCount=" + mPendingRequestsCount +
|
||||
'}';
|
||||
}
|
||||
|
||||
@Override
|
||||
public int describeContents() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public void readFromParcel(Parcel in) {
|
||||
mCallingPackage = in.readString();
|
||||
mCompletedRequestsWakelockTime = in.readLong();
|
||||
mCompletedRequestsCount = in.readLong();
|
||||
mPendingRequestsWakelockTime = in.readLong();
|
||||
mPendingRequestsCount = in.readLong();
|
||||
ArrayList<TelephonyHistogram> requestHistograms = new ArrayList<TelephonyHistogram>();
|
||||
in.readTypedList(requestHistograms, TelephonyHistogram.CREATOR);
|
||||
for (TelephonyHistogram h : requestHistograms) {
|
||||
mRequestHistograms.put(h.getId(), h);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToParcel(Parcel dest, int flags) {
|
||||
dest.writeString(mCallingPackage);
|
||||
dest.writeLong(mCompletedRequestsWakelockTime);
|
||||
dest.writeLong(mCompletedRequestsCount);
|
||||
dest.writeLong(mPendingRequestsWakelockTime);
|
||||
dest.writeLong(mPendingRequestsCount);
|
||||
dest.writeTypedList(getRequestHistograms());
|
||||
}
|
||||
}
|
||||
@@ -39,6 +39,7 @@ import android.os.SystemProperties;
|
||||
import android.service.carrier.CarrierIdentifier;
|
||||
import android.telecom.PhoneAccount;
|
||||
import android.telecom.PhoneAccountHandle;
|
||||
import android.telephony.ClientRequestStats;
|
||||
import android.telephony.TelephonyHistogram;
|
||||
import android.telephony.ims.feature.ImsFeature;
|
||||
import android.util.Log;
|
||||
@@ -5844,5 +5845,27 @@ public class TelephonyManager {
|
||||
Log.e(TAG, "Error calling ITelephony#setPolicyDataEnabled", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Client request stats which will contain statistical information
|
||||
* on each request made by client.
|
||||
* Callers require either READ_PRIVILEGED_PHONE_STATE or
|
||||
* READ_PHONE_STATE to retrieve the information.
|
||||
* @param subId sub id
|
||||
* @return List of Client Request Stats
|
||||
* @hide
|
||||
*/
|
||||
public List<ClientRequestStats> getClientRequestStats(int subId) {
|
||||
try {
|
||||
ITelephony service = getITelephony();
|
||||
if (service != null) {
|
||||
return service.getClientRequestStats(getOpPackageName(), subId);
|
||||
}
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, "Error calling ITelephony#getClientRequestStats", e);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -24,6 +24,7 @@ import android.service.carrier.CarrierIdentifier;
|
||||
import android.telecom.PhoneAccount;
|
||||
import android.telecom.PhoneAccountHandle;
|
||||
import android.telephony.CellInfo;
|
||||
import android.telephony.ClientRequestStats;
|
||||
import android.telephony.IccOpenLogicalChannelResponse;
|
||||
import android.telephony.ModemActivityInfo;
|
||||
import android.telephony.NeighboringCellInfo;
|
||||
@@ -1192,4 +1193,14 @@ interface ITelephony {
|
||||
* @hide
|
||||
*/
|
||||
void setPolicyDataEnabled(boolean enabled, int subId);
|
||||
|
||||
|
||||
/**
|
||||
* Get Client request stats which will contain statistical information
|
||||
* on each request made by client.
|
||||
* @param callingPackage package making the call.
|
||||
* @param subId Subscription index
|
||||
* @hide
|
||||
*/
|
||||
List<ClientRequestStats> getClientRequestStats(String callingPackage, int subid);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user