Merge "Expose api to retrieve wakelock information per client"
am: 8fbf6a29d0
Change-Id: I1ca7d53b256333170b849cb1103c8b3ca0e76e0b
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.service.carrier.CarrierIdentifier;
|
||||||
import android.telecom.PhoneAccount;
|
import android.telecom.PhoneAccount;
|
||||||
import android.telecom.PhoneAccountHandle;
|
import android.telecom.PhoneAccountHandle;
|
||||||
|
import android.telephony.ClientRequestStats;
|
||||||
import android.telephony.TelephonyHistogram;
|
import android.telephony.TelephonyHistogram;
|
||||||
import android.telephony.ims.feature.ImsFeature;
|
import android.telephony.ims.feature.ImsFeature;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
@@ -5844,5 +5845,27 @@ public class TelephonyManager {
|
|||||||
Log.e(TAG, "Error calling ITelephony#setPolicyDataEnabled", e);
|
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.PhoneAccount;
|
||||||
import android.telecom.PhoneAccountHandle;
|
import android.telecom.PhoneAccountHandle;
|
||||||
import android.telephony.CellInfo;
|
import android.telephony.CellInfo;
|
||||||
|
import android.telephony.ClientRequestStats;
|
||||||
import android.telephony.IccOpenLogicalChannelResponse;
|
import android.telephony.IccOpenLogicalChannelResponse;
|
||||||
import android.telephony.ModemActivityInfo;
|
import android.telephony.ModemActivityInfo;
|
||||||
import android.telephony.NeighboringCellInfo;
|
import android.telephony.NeighboringCellInfo;
|
||||||
@@ -1192,4 +1193,14 @@ interface ITelephony {
|
|||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
void setPolicyDataEnabled(boolean enabled, int subId);
|
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