Loading telephony/java/android/telephony/ClientRequestStats.aidl 0 → 100644 +22 −0 Original line number Diff line number Diff line /* ** 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; telephony/java/android/telephony/ClientRequestStats.java 0 → 100644 +175 −0 Original line number Diff line number Diff line /* * 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()); } } telephony/java/android/telephony/TelephonyManager.java +23 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; } } telephony/java/com/android/internal/telephony/ITelephony.aidl +11 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); } Loading
telephony/java/android/telephony/ClientRequestStats.aidl 0 → 100644 +22 −0 Original line number Diff line number Diff line /* ** 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;
telephony/java/android/telephony/ClientRequestStats.java 0 → 100644 +175 −0 Original line number Diff line number Diff line /* * 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()); } }
telephony/java/android/telephony/TelephonyManager.java +23 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; } }
telephony/java/com/android/internal/telephony/ITelephony.aidl +11 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); }