/* * This file is auto-generated. DO NOT MODIFY. * Using: out/host/linux-x86/bin/aidl --lang=java -Weverything -Wno-missing-permission-annotation --min_sdk_version current --ninja -d out/soong/.intermediates/frameworks/base/media/java/android/media/tv/tunerresourcemanager/tv_tuner_resource_manager_aidl_interface-java-source/gen/android/media/tv/tunerresourcemanager/ITunerResourceManager.java.d -o out/soong/.intermediates/frameworks/base/media/java/android/media/tv/tunerresourcemanager/tv_tuner_resource_manager_aidl_interface-java-source/gen -Nframeworks/base/media/java/android/media/tv/tunerresourcemanager/aidl frameworks/base/media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/ITunerResourceManager.aidl */ package android.media.tv.tunerresourcemanager; /** * Interface of the Tuner Resource Manager. It manages resources used by TV Tuners. *
Resources include: *
Expected workflow is: *
The profile contains information that can show the base priority score of the client. * * @param profile {@link ResourceClientProfile} profile of the current client * @param listener {@link IResourcesReclaimListener} a callback to * reclaim clients' resources when needed. * @param clientId returns a clientId from the resource manager when the * the client registers its profile. */ @Override public void registerClientProfile(android.media.tv.tunerresourcemanager.ResourceClientProfile profile, android.media.tv.tunerresourcemanager.IResourcesReclaimListener listener, int[] clientId) throws android.os.RemoteException { } /** * This API is used by the client to unregister their profile with the Tuner Resource manager. * * @param clientId the client id that needs to be unregistered. */ @Override public void unregisterClientProfile(int clientId) throws android.os.RemoteException { } /** * Updates a registered client's priority and niceValue. * * @param clientId the id of the client that is updating its profile. * @param priority the priority that the client would like to update to. * @param niceValue the nice value that the client would like to update to. * * @return true if the update is successful. */ @Override public boolean updateClientPriority(int clientId, int priority, int niceValue) throws android.os.RemoteException { return false; } /** * Checks if there is any unused frontend resource of the specified type. * * @param frontendType the specific type of frontend resource to be checked for. * * @return true if there is any unused resource of the specified type. */ @Override public boolean hasUnusedFrontend(int frontendType) throws android.os.RemoteException { return false; } /** * Checks if the client has the lowest priority among the clients that are holding * the frontend resource of the specified type. * *
When this function returns false, it means that there is at least one client with the * strictly lower priority (than clientId) that is reclaimable by the system. * * @param clientId The client ID to be checked the priority for. * @param frontendType The specific frontend type to be checked for. * * @return false if there is another client holding the frontend resource of the specified type * that can be reclaimed. Otherwise true. */ @Override public boolean isLowestPriority(int clientId, int frontendType) throws android.os.RemoteException { return false; } /** * Updates the available Frontend resources information on the current device. * *
Note: This update must happen before the first * {@link #requestFrontend(TunerFrontendRequest,int[])} and {@link #releaseFrontend(int, int)} * call. * * @param infos an array of the available {@link TunerFrontendInfo} information. */ @Override public void setFrontendInfoList(android.media.tv.tunerresourcemanager.TunerFrontendInfo[] infos) throws android.os.RemoteException { } /** * Updates the available Cas resource information on the current device. * *
Note: This update must happen before the first * {@link #requestCasSession(CasSessionRequest, int[])} and {@link #releaseCasSession(int, int)} * call. * * @param casSystemId id of the updating CAS system. * @param maxSessionNum the max session number of the CAS system that is updated. */ @Override public void updateCasInfo(int casSystemId, int maxSessionNum) throws android.os.RemoteException { } /** * Updates the available Demux resources information on the current device. * *
Note: This update must happen before the first * {@link #requestDemux(TunerDemux,int[])} and {@link #releaseDemux(int, int)} * call. * * @param infos an array of the available {@link TunerDemux} information. */ @Override public void setDemuxInfoList(android.media.tv.tunerresourcemanager.TunerDemuxInfo[] infos) throws android.os.RemoteException { } /** * Updates the available Lnb resource information on the current device. * *
Note: This update must happen before the first * {@link #requestLnb(TunerLnbRequest, int[])} and {@link #releaseLnb(int, int)} call. * * @param lnbIds ids of the updating lnbs. */ @Override public void setLnbInfoList(int[] lnbIds) throws android.os.RemoteException { } /** * This API is used by the Tuner framework to request a frontend from the TunerHAL. * *
There are two cases: *
Note: {@link #setFrontendInfoList(TunerFrontendInfo[])} must be called * before this request. * * @param request {@link TunerFrontendRequest} information of the current request. * @param frontendHandle a one-element array to return the granted frontendHandle. * * @return true if there is frontend granted. */ @Override public boolean requestFrontend(android.media.tv.tunerresourcemanager.TunerFrontendRequest request, int[] frontendHandle) throws android.os.RemoteException { return false; } /** * Sets the maximum usable frontends number of a given frontend type. It is used to enable or * disable frontends when cable connection status is changed by user. * * @param frontendType the frontendType which the maximum usable number will be set for. * @param maxNumber the new maximum usable number. * * @return true if successful and false otherwise. */ @Override public boolean setMaxNumberOfFrontends(int frontendType, int maxNum) throws android.os.RemoteException { return false; } /** * Get the maximum usable frontends number of a given frontend type. * * @param frontendType the frontendType which the maximum usable number will be queried for. * * @return the maximum usable number of the queried frontend type. Returns -1 when the * frontendType is invalid */ @Override public int getMaxNumberOfFrontends(int frontendType) throws android.os.RemoteException { return 0; } /** * Requests to share frontend with an existing client. * *
Note: {@link #setFrontendInfoList(TunerFrontendInfo[])} must be called * before this request. * * @param selfClientId the id of the client that sends the request. * @param targetClientId the id of the client to share the frontend with. */ @Override public void shareFrontend(int selfClientId, int targetClientId) throws android.os.RemoteException { } /** * Transfers the ownership of the shared resource. * *
Note: Only the existing frontend sharee can be the new owner. * * @param resourceType the type of resource to transfer the ownership for. * @param currentOwnerId the id of the current owner client. * @param newOwnerId the id of the new owner client. * * @return true if successful. false otherwise. */ @Override public boolean transferOwner(int resourceType, int currentOwnerId, int newOwnerId) throws android.os.RemoteException { return false; } /** * This API is used by the Tuner framework to request an available demux from the TunerHAL. * *
There are three possible scenarios: *
There are three possible scenarios: *
There are three possible scenarios: *
Note: {@link #updateCasInfo(int, int)} must be called before this request. * * @param request {@link CasSessionRequest} information of the current request. * @param casSessionHandle a one-element array to return the granted cas session handle. * * @return true if there is CAS session granted. */ @Override public boolean requestCasSession(android.media.tv.tunerresourcemanager.CasSessionRequest request, int[] casSessionHandle) throws android.os.RemoteException { return false; } /** * This API is used by the Tuner framework to request an available CuCam. * *
There are three possible scenarios: *
Note: {@link #updateCasInfo(int, int)} must be called before this request. * * @param request {@link TunerCiCamRequest} information of the current request. * @param ciCamHandle a one-element array to return the granted ciCam handle. * * @return true if there is CiCam granted. */ @Override public boolean requestCiCam(android.media.tv.tunerresourcemanager.TunerCiCamRequest request, int[] ciCamHandle) throws android.os.RemoteException { return false; } /** * This API is used by the Tuner framework to request an available Lnb from the TunerHAL. * *
There are three possible scenarios: *
Note: {@link #setLnbInfos(int[])} must be called before this request. * * @param request {@link TunerLnbRequest} information of the current request. * @param lnbHandle a one-element array to return the granted Lnb handle. * * @return true if there is Lnb granted. */ @Override public boolean requestLnb(android.media.tv.tunerresourcemanager.TunerLnbRequest request, int[] lnbHandle) throws android.os.RemoteException { return false; } /** * Notifies the TRM that the given frontend has been released. * *
Client must call this whenever it releases a Tuner frontend. * *
Note: {@link #setFrontendInfoList(TunerFrontendInfo[])} must be called * before this release. * * @param frontendHandle the handle of the released frontend. * @param clientId the id of the client that is releasing the frontend. */ @Override public void releaseFrontend(int frontendHandle, int clientId) throws android.os.RemoteException { } /** * Notifies the TRM that the Demux with the given handle was released. * *
Client must call this whenever it releases a demux. * * @param demuxHandle the handle of the released Tuner Demux. * @param clientId the id of the client that is releasing the demux. */ @Override public void releaseDemux(int demuxHandle, int clientId) throws android.os.RemoteException { } /** * Notifies the TRM that the Descrambler with the given handle was released. * *
Client must call this whenever it releases a descrambler. * * @param descramblerHandle the handle of the released Tuner Descrambler. * @param clientId the id of the client that is releasing the descrambler. */ @Override public void releaseDescrambler(int descramblerHandle, int clientId) throws android.os.RemoteException { } /** * Notifies the TRM that the given Cas session has been released. * *
Client must call this whenever it releases a Cas session. * *
Note: {@link #updateCasInfo(int, int)} must be called before this release. * * @param casSessionHandle the handle of the released CAS session. * @param clientId the id of the client that is releasing the cas session. */ @Override public void releaseCasSession(int casSessionHandle, int clientId) throws android.os.RemoteException { } /** * Notifies the TRM that the given CiCam has been released. * *
Client must call this whenever it releases a CiCam. * *
Note: {@link #updateCasInfo(int, int)} must be called before this * release. * * @param ciCamHandle the handle of the releasing CiCam. * @param clientId the id of the client that is releasing the CiCam. */ @Override public void releaseCiCam(int ciCamHandle, int clientId) throws android.os.RemoteException { } /** * Notifies the TRM that the Lnb with the given handle was released. * *
Client must call this whenever it releases an Lnb. * *
Note: {@link #setLnbInfos(int[])} must be called before this release. * * @param lnbHandle the handle of the released Tuner Lnb. * @param clientId the id of the client that is releasing the lnb. */ @Override public void releaseLnb(int lnbHandle, int clientId) throws android.os.RemoteException { } /** * Compare two clients' priority. * * @param challengerProfile the {@link ResourceClientProfile} of the challenger. * @param holderProfile the {@link ResourceClientProfile} of the holder of the resource. * * @return true if the challenger has higher priority than the holder. */ @Override public boolean isHigherPriority(android.media.tv.tunerresourcemanager.ResourceClientProfile challengerProfile, android.media.tv.tunerresourcemanager.ResourceClientProfile holderProfile) throws android.os.RemoteException { return false; } /** * Stores Frontend resource map for the later restore. * *
This is API is only for testing purpose and should be used in pair with * restoreResourceMap(), which allows testing of {@link Tuner} APIs * that behave differently based on different sets of resource map. * * @param resourceType The resource type to store the map for. */ @Override public void storeResourceMap(int resourceType) throws android.os.RemoteException { } /** * Clears the frontend resource map. * *
This is API is only for testing purpose and should be called right after * storeResourceMap(), so TRMService#removeFrontendResource() does not * get called in TRMService#setFrontendInfoListInternal() for custom frontend * resource map creation. * * @param resourceType The resource type to clear the map for. */ @Override public void clearResourceMap(int resourceType) throws android.os.RemoteException { } /** * Restores Frontend resource map if it was stored before. * *
This is API is only for testing purpose and should be used in pair with * storeResourceMap(), which allows testing of {@link Tuner} APIs * that behave differently based on different sets of resource map. * * @param resourceType The resource type to restore the map for. */ @Override public void restoreResourceMap(int resourceType) throws android.os.RemoteException { } /** * Grants the lock to the caller for public {@link Tuner} APIs * *
{@link Tuner} functions that call both [@link TunerResourceManager} APIs and * grabs lock that are also used in {@link IResourcesReclaimListener#onReclaimResources()} * must call this API before acquiring lock used in onReclaimResources(). * *
This API will block until it releases the lock or fails * * @param clientId The ID of the caller. * * @return true if the lock is granted. If false is returned, calling this API again is not * guaranteed to work and may be unrecoverrable. (This should not happen.) */ @Override public boolean acquireLock(int clientId, long clientThreadId) throws android.os.RemoteException { return false; } /** * Releases the lock to the caller for public {@link Tuner} APIs * *
This API must be called in pair with {@link #acquireLock(int, int)} * *
This API will block until it releases the lock or fails * * @param clientId The ID of the caller. * * @return true if the lock is granted. If false is returned, calling this API again is not * guaranteed to work and may be unrecoverrable. (This should not happen.) */ @Override public boolean releaseLock(int clientId) throws android.os.RemoteException { return false; } /** * Returns a priority for the given use case type and the client's foreground or background * status. * * @param useCase the use case type of the client. When the given use case type is invalid, * the default use case type will be used. {@see TvInputService#PriorityHintUseCaseType}. * @param pid the pid of the client. When the pid is invalid, background status will be used as * a client's status. Otherwise, client's app corresponding to the given session id will * be used as a client. {@see TvInputService#onCreateSession(String, String)}. * * @return the client priority.. */ @Override public int getClientPriority(int useCase, int pid) throws android.os.RemoteException { return 0; } /** * Returns a config priority for the given use case type and the foreground or background * status. * * @param useCase the use case type of the client. When the given use case type is invalid, * the default use case type will be used. {@see TvInputService#PriorityHintUseCaseType}. * @param isForeground {@code true} if foreground, {@code false} otherwise. * * @return the config priority. */ @Override public int getConfigPriority(int useCase, boolean isForeground) throws android.os.RemoteException { return 0; } @Override public android.os.IBinder asBinder() { return null; } } /** Local-side IPC implementation stub class. */ public static abstract class Stub extends android.os.Binder implements android.media.tv.tunerresourcemanager.ITunerResourceManager { /** Construct the stub at attach it to the interface. */ @SuppressWarnings("this-escape") public Stub() { this.attachInterface(this, DESCRIPTOR); } /** * Cast an IBinder object into an android.media.tv.tunerresourcemanager.ITunerResourceManager interface, * generating a proxy if needed. */ public static android.media.tv.tunerresourcemanager.ITunerResourceManager asInterface(android.os.IBinder obj) { if ((obj==null)) { return null; } android.os.IInterface iin = obj.queryLocalInterface(DESCRIPTOR); if (((iin!=null)&&(iin instanceof android.media.tv.tunerresourcemanager.ITunerResourceManager))) { return ((android.media.tv.tunerresourcemanager.ITunerResourceManager)iin); } return new android.media.tv.tunerresourcemanager.ITunerResourceManager.Stub.Proxy(obj); } @Override public android.os.IBinder asBinder() { return this; } @Override public boolean onTransact(int code, android.os.Parcel data, android.os.Parcel reply, int flags) throws android.os.RemoteException { java.lang.String descriptor = DESCRIPTOR; if (code >= android.os.IBinder.FIRST_CALL_TRANSACTION && code <= android.os.IBinder.LAST_CALL_TRANSACTION) { data.enforceInterface(descriptor); } if (code == INTERFACE_TRANSACTION) { reply.writeString(descriptor); return true; } switch (code) { case TRANSACTION_registerClientProfile: { android.media.tv.tunerresourcemanager.ResourceClientProfile _arg0; _arg0 = data.readTypedObject(android.media.tv.tunerresourcemanager.ResourceClientProfile.CREATOR); android.media.tv.tunerresourcemanager.IResourcesReclaimListener _arg1; _arg1 = android.media.tv.tunerresourcemanager.IResourcesReclaimListener.Stub.asInterface(data.readStrongBinder()); int[] _arg2; int _arg2_length = data.readInt(); if (_arg2_length < 0) { _arg2 = null; } else { _arg2 = new int[_arg2_length]; } data.enforceNoDataAvail(); this.registerClientProfile(_arg0, _arg1, _arg2); reply.writeNoException(); reply.writeIntArray(_arg2); break; } case TRANSACTION_unregisterClientProfile: { int _arg0; _arg0 = data.readInt(); data.enforceNoDataAvail(); this.unregisterClientProfile(_arg0); reply.writeNoException(); break; } case TRANSACTION_updateClientPriority: { int _arg0; _arg0 = data.readInt(); int _arg1; _arg1 = data.readInt(); int _arg2; _arg2 = data.readInt(); data.enforceNoDataAvail(); boolean _result = this.updateClientPriority(_arg0, _arg1, _arg2); reply.writeNoException(); reply.writeBoolean(_result); break; } case TRANSACTION_hasUnusedFrontend: { int _arg0; _arg0 = data.readInt(); data.enforceNoDataAvail(); boolean _result = this.hasUnusedFrontend(_arg0); reply.writeNoException(); reply.writeBoolean(_result); break; } case TRANSACTION_isLowestPriority: { int _arg0; _arg0 = data.readInt(); int _arg1; _arg1 = data.readInt(); data.enforceNoDataAvail(); boolean _result = this.isLowestPriority(_arg0, _arg1); reply.writeNoException(); reply.writeBoolean(_result); break; } case TRANSACTION_setFrontendInfoList: { android.media.tv.tunerresourcemanager.TunerFrontendInfo[] _arg0; _arg0 = data.createTypedArray(android.media.tv.tunerresourcemanager.TunerFrontendInfo.CREATOR); data.enforceNoDataAvail(); this.setFrontendInfoList(_arg0); reply.writeNoException(); break; } case TRANSACTION_updateCasInfo: { int _arg0; _arg0 = data.readInt(); int _arg1; _arg1 = data.readInt(); data.enforceNoDataAvail(); this.updateCasInfo(_arg0, _arg1); reply.writeNoException(); break; } case TRANSACTION_setDemuxInfoList: { android.media.tv.tunerresourcemanager.TunerDemuxInfo[] _arg0; _arg0 = data.createTypedArray(android.media.tv.tunerresourcemanager.TunerDemuxInfo.CREATOR); data.enforceNoDataAvail(); this.setDemuxInfoList(_arg0); reply.writeNoException(); break; } case TRANSACTION_setLnbInfoList: { int[] _arg0; _arg0 = data.createIntArray(); data.enforceNoDataAvail(); this.setLnbInfoList(_arg0); reply.writeNoException(); break; } case TRANSACTION_requestFrontend: { android.media.tv.tunerresourcemanager.TunerFrontendRequest _arg0; _arg0 = data.readTypedObject(android.media.tv.tunerresourcemanager.TunerFrontendRequest.CREATOR); int[] _arg1; int _arg1_length = data.readInt(); if (_arg1_length < 0) { _arg1 = null; } else { _arg1 = new int[_arg1_length]; } data.enforceNoDataAvail(); boolean _result = this.requestFrontend(_arg0, _arg1); reply.writeNoException(); reply.writeBoolean(_result); reply.writeIntArray(_arg1); break; } case TRANSACTION_setMaxNumberOfFrontends: { int _arg0; _arg0 = data.readInt(); int _arg1; _arg1 = data.readInt(); data.enforceNoDataAvail(); boolean _result = this.setMaxNumberOfFrontends(_arg0, _arg1); reply.writeNoException(); reply.writeBoolean(_result); break; } case TRANSACTION_getMaxNumberOfFrontends: { int _arg0; _arg0 = data.readInt(); data.enforceNoDataAvail(); int _result = this.getMaxNumberOfFrontends(_arg0); reply.writeNoException(); reply.writeInt(_result); break; } case TRANSACTION_shareFrontend: { int _arg0; _arg0 = data.readInt(); int _arg1; _arg1 = data.readInt(); data.enforceNoDataAvail(); this.shareFrontend(_arg0, _arg1); reply.writeNoException(); break; } case TRANSACTION_transferOwner: { int _arg0; _arg0 = data.readInt(); int _arg1; _arg1 = data.readInt(); int _arg2; _arg2 = data.readInt(); data.enforceNoDataAvail(); boolean _result = this.transferOwner(_arg0, _arg1, _arg2); reply.writeNoException(); reply.writeBoolean(_result); break; } case TRANSACTION_requestDemux: { android.media.tv.tunerresourcemanager.TunerDemuxRequest _arg0; _arg0 = data.readTypedObject(android.media.tv.tunerresourcemanager.TunerDemuxRequest.CREATOR); int[] _arg1; int _arg1_length = data.readInt(); if (_arg1_length < 0) { _arg1 = null; } else { _arg1 = new int[_arg1_length]; } data.enforceNoDataAvail(); boolean _result = this.requestDemux(_arg0, _arg1); reply.writeNoException(); reply.writeBoolean(_result); reply.writeIntArray(_arg1); break; } case TRANSACTION_requestDescrambler: { android.media.tv.tunerresourcemanager.TunerDescramblerRequest _arg0; _arg0 = data.readTypedObject(android.media.tv.tunerresourcemanager.TunerDescramblerRequest.CREATOR); int[] _arg1; int _arg1_length = data.readInt(); if (_arg1_length < 0) { _arg1 = null; } else { _arg1 = new int[_arg1_length]; } data.enforceNoDataAvail(); boolean _result = this.requestDescrambler(_arg0, _arg1); reply.writeNoException(); reply.writeBoolean(_result); reply.writeIntArray(_arg1); break; } case TRANSACTION_requestCasSession: { android.media.tv.tunerresourcemanager.CasSessionRequest _arg0; _arg0 = data.readTypedObject(android.media.tv.tunerresourcemanager.CasSessionRequest.CREATOR); int[] _arg1; int _arg1_length = data.readInt(); if (_arg1_length < 0) { _arg1 = null; } else { _arg1 = new int[_arg1_length]; } data.enforceNoDataAvail(); boolean _result = this.requestCasSession(_arg0, _arg1); reply.writeNoException(); reply.writeBoolean(_result); reply.writeIntArray(_arg1); break; } case TRANSACTION_requestCiCam: { android.media.tv.tunerresourcemanager.TunerCiCamRequest _arg0; _arg0 = data.readTypedObject(android.media.tv.tunerresourcemanager.TunerCiCamRequest.CREATOR); int[] _arg1; int _arg1_length = data.readInt(); if (_arg1_length < 0) { _arg1 = null; } else { _arg1 = new int[_arg1_length]; } data.enforceNoDataAvail(); boolean _result = this.requestCiCam(_arg0, _arg1); reply.writeNoException(); reply.writeBoolean(_result); reply.writeIntArray(_arg1); break; } case TRANSACTION_requestLnb: { android.media.tv.tunerresourcemanager.TunerLnbRequest _arg0; _arg0 = data.readTypedObject(android.media.tv.tunerresourcemanager.TunerLnbRequest.CREATOR); int[] _arg1; int _arg1_length = data.readInt(); if (_arg1_length < 0) { _arg1 = null; } else { _arg1 = new int[_arg1_length]; } data.enforceNoDataAvail(); boolean _result = this.requestLnb(_arg0, _arg1); reply.writeNoException(); reply.writeBoolean(_result); reply.writeIntArray(_arg1); break; } case TRANSACTION_releaseFrontend: { int _arg0; _arg0 = data.readInt(); int _arg1; _arg1 = data.readInt(); data.enforceNoDataAvail(); this.releaseFrontend(_arg0, _arg1); reply.writeNoException(); break; } case TRANSACTION_releaseDemux: { int _arg0; _arg0 = data.readInt(); int _arg1; _arg1 = data.readInt(); data.enforceNoDataAvail(); this.releaseDemux(_arg0, _arg1); reply.writeNoException(); break; } case TRANSACTION_releaseDescrambler: { int _arg0; _arg0 = data.readInt(); int _arg1; _arg1 = data.readInt(); data.enforceNoDataAvail(); this.releaseDescrambler(_arg0, _arg1); reply.writeNoException(); break; } case TRANSACTION_releaseCasSession: { int _arg0; _arg0 = data.readInt(); int _arg1; _arg1 = data.readInt(); data.enforceNoDataAvail(); this.releaseCasSession(_arg0, _arg1); reply.writeNoException(); break; } case TRANSACTION_releaseCiCam: { int _arg0; _arg0 = data.readInt(); int _arg1; _arg1 = data.readInt(); data.enforceNoDataAvail(); this.releaseCiCam(_arg0, _arg1); reply.writeNoException(); break; } case TRANSACTION_releaseLnb: { int _arg0; _arg0 = data.readInt(); int _arg1; _arg1 = data.readInt(); data.enforceNoDataAvail(); this.releaseLnb(_arg0, _arg1); reply.writeNoException(); break; } case TRANSACTION_isHigherPriority: { android.media.tv.tunerresourcemanager.ResourceClientProfile _arg0; _arg0 = data.readTypedObject(android.media.tv.tunerresourcemanager.ResourceClientProfile.CREATOR); android.media.tv.tunerresourcemanager.ResourceClientProfile _arg1; _arg1 = data.readTypedObject(android.media.tv.tunerresourcemanager.ResourceClientProfile.CREATOR); data.enforceNoDataAvail(); boolean _result = this.isHigherPriority(_arg0, _arg1); reply.writeNoException(); reply.writeBoolean(_result); break; } case TRANSACTION_storeResourceMap: { int _arg0; _arg0 = data.readInt(); data.enforceNoDataAvail(); this.storeResourceMap(_arg0); reply.writeNoException(); break; } case TRANSACTION_clearResourceMap: { int _arg0; _arg0 = data.readInt(); data.enforceNoDataAvail(); this.clearResourceMap(_arg0); reply.writeNoException(); break; } case TRANSACTION_restoreResourceMap: { int _arg0; _arg0 = data.readInt(); data.enforceNoDataAvail(); this.restoreResourceMap(_arg0); reply.writeNoException(); break; } case TRANSACTION_acquireLock: { int _arg0; _arg0 = data.readInt(); long _arg1; _arg1 = data.readLong(); data.enforceNoDataAvail(); boolean _result = this.acquireLock(_arg0, _arg1); reply.writeNoException(); reply.writeBoolean(_result); break; } case TRANSACTION_releaseLock: { int _arg0; _arg0 = data.readInt(); data.enforceNoDataAvail(); boolean _result = this.releaseLock(_arg0); reply.writeNoException(); reply.writeBoolean(_result); break; } case TRANSACTION_getClientPriority: { int _arg0; _arg0 = data.readInt(); int _arg1; _arg1 = data.readInt(); data.enforceNoDataAvail(); int _result = this.getClientPriority(_arg0, _arg1); reply.writeNoException(); reply.writeInt(_result); break; } case TRANSACTION_getConfigPriority: { int _arg0; _arg0 = data.readInt(); boolean _arg1; _arg1 = data.readBoolean(); data.enforceNoDataAvail(); int _result = this.getConfigPriority(_arg0, _arg1); reply.writeNoException(); reply.writeInt(_result); break; } default: { return super.onTransact(code, data, reply, flags); } } return true; } private static class Proxy implements android.media.tv.tunerresourcemanager.ITunerResourceManager { private android.os.IBinder mRemote; Proxy(android.os.IBinder remote) { mRemote = remote; } @Override public android.os.IBinder asBinder() { return mRemote; } public java.lang.String getInterfaceDescriptor() { return DESCRIPTOR; } /** * This API is used by the client to register their profile with the Tuner Resource manager. * *
The profile contains information that can show the base priority score of the client. * * @param profile {@link ResourceClientProfile} profile of the current client * @param listener {@link IResourcesReclaimListener} a callback to * reclaim clients' resources when needed. * @param clientId returns a clientId from the resource manager when the * the client registers its profile. */ @Override public void registerClientProfile(android.media.tv.tunerresourcemanager.ResourceClientProfile profile, android.media.tv.tunerresourcemanager.IResourcesReclaimListener listener, int[] clientId) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeTypedObject(profile, 0); _data.writeStrongInterface(listener); _data.writeInt(clientId.length); boolean _status = mRemote.transact(Stub.TRANSACTION_registerClientProfile, _data, _reply, 0); _reply.readException(); _reply.readIntArray(clientId); } finally { _reply.recycle(); _data.recycle(); } } /** * This API is used by the client to unregister their profile with the Tuner Resource manager. * * @param clientId the client id that needs to be unregistered. */ @Override public void unregisterClientProfile(int clientId) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeInt(clientId); boolean _status = mRemote.transact(Stub.TRANSACTION_unregisterClientProfile, _data, _reply, 0); _reply.readException(); } finally { _reply.recycle(); _data.recycle(); } } /** * Updates a registered client's priority and niceValue. * * @param clientId the id of the client that is updating its profile. * @param priority the priority that the client would like to update to. * @param niceValue the nice value that the client would like to update to. * * @return true if the update is successful. */ @Override public boolean updateClientPriority(int clientId, int priority, int niceValue) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); boolean _result; try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeInt(clientId); _data.writeInt(priority); _data.writeInt(niceValue); boolean _status = mRemote.transact(Stub.TRANSACTION_updateClientPriority, _data, _reply, 0); _reply.readException(); _result = _reply.readBoolean(); } finally { _reply.recycle(); _data.recycle(); } return _result; } /** * Checks if there is any unused frontend resource of the specified type. * * @param frontendType the specific type of frontend resource to be checked for. * * @return true if there is any unused resource of the specified type. */ @Override public boolean hasUnusedFrontend(int frontendType) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); boolean _result; try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeInt(frontendType); boolean _status = mRemote.transact(Stub.TRANSACTION_hasUnusedFrontend, _data, _reply, 0); _reply.readException(); _result = _reply.readBoolean(); } finally { _reply.recycle(); _data.recycle(); } return _result; } /** * Checks if the client has the lowest priority among the clients that are holding * the frontend resource of the specified type. * *
When this function returns false, it means that there is at least one client with the * strictly lower priority (than clientId) that is reclaimable by the system. * * @param clientId The client ID to be checked the priority for. * @param frontendType The specific frontend type to be checked for. * * @return false if there is another client holding the frontend resource of the specified type * that can be reclaimed. Otherwise true. */ @Override public boolean isLowestPriority(int clientId, int frontendType) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); boolean _result; try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeInt(clientId); _data.writeInt(frontendType); boolean _status = mRemote.transact(Stub.TRANSACTION_isLowestPriority, _data, _reply, 0); _reply.readException(); _result = _reply.readBoolean(); } finally { _reply.recycle(); _data.recycle(); } return _result; } /** * Updates the available Frontend resources information on the current device. * *
Note: This update must happen before the first * {@link #requestFrontend(TunerFrontendRequest,int[])} and {@link #releaseFrontend(int, int)} * call. * * @param infos an array of the available {@link TunerFrontendInfo} information. */ @Override public void setFrontendInfoList(android.media.tv.tunerresourcemanager.TunerFrontendInfo[] infos) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeTypedArray(infos, 0); boolean _status = mRemote.transact(Stub.TRANSACTION_setFrontendInfoList, _data, _reply, 0); _reply.readException(); } finally { _reply.recycle(); _data.recycle(); } } /** * Updates the available Cas resource information on the current device. * *
Note: This update must happen before the first * {@link #requestCasSession(CasSessionRequest, int[])} and {@link #releaseCasSession(int, int)} * call. * * @param casSystemId id of the updating CAS system. * @param maxSessionNum the max session number of the CAS system that is updated. */ @Override public void updateCasInfo(int casSystemId, int maxSessionNum) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeInt(casSystemId); _data.writeInt(maxSessionNum); boolean _status = mRemote.transact(Stub.TRANSACTION_updateCasInfo, _data, _reply, 0); _reply.readException(); } finally { _reply.recycle(); _data.recycle(); } } /** * Updates the available Demux resources information on the current device. * *
Note: This update must happen before the first * {@link #requestDemux(TunerDemux,int[])} and {@link #releaseDemux(int, int)} * call. * * @param infos an array of the available {@link TunerDemux} information. */ @Override public void setDemuxInfoList(android.media.tv.tunerresourcemanager.TunerDemuxInfo[] infos) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeTypedArray(infos, 0); boolean _status = mRemote.transact(Stub.TRANSACTION_setDemuxInfoList, _data, _reply, 0); _reply.readException(); } finally { _reply.recycle(); _data.recycle(); } } /** * Updates the available Lnb resource information on the current device. * *
Note: This update must happen before the first * {@link #requestLnb(TunerLnbRequest, int[])} and {@link #releaseLnb(int, int)} call. * * @param lnbIds ids of the updating lnbs. */ @Override public void setLnbInfoList(int[] lnbIds) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeIntArray(lnbIds); boolean _status = mRemote.transact(Stub.TRANSACTION_setLnbInfoList, _data, _reply, 0); _reply.readException(); } finally { _reply.recycle(); _data.recycle(); } } /** * This API is used by the Tuner framework to request a frontend from the TunerHAL. * *
There are two cases: *
Note: {@link #setFrontendInfoList(TunerFrontendInfo[])} must be called * before this request. * * @param request {@link TunerFrontendRequest} information of the current request. * @param frontendHandle a one-element array to return the granted frontendHandle. * * @return true if there is frontend granted. */ @Override public boolean requestFrontend(android.media.tv.tunerresourcemanager.TunerFrontendRequest request, int[] frontendHandle) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); boolean _result; try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeTypedObject(request, 0); _data.writeInt(frontendHandle.length); boolean _status = mRemote.transact(Stub.TRANSACTION_requestFrontend, _data, _reply, 0); _reply.readException(); _result = _reply.readBoolean(); _reply.readIntArray(frontendHandle); } finally { _reply.recycle(); _data.recycle(); } return _result; } /** * Sets the maximum usable frontends number of a given frontend type. It is used to enable or * disable frontends when cable connection status is changed by user. * * @param frontendType the frontendType which the maximum usable number will be set for. * @param maxNumber the new maximum usable number. * * @return true if successful and false otherwise. */ @Override public boolean setMaxNumberOfFrontends(int frontendType, int maxNum) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); boolean _result; try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeInt(frontendType); _data.writeInt(maxNum); boolean _status = mRemote.transact(Stub.TRANSACTION_setMaxNumberOfFrontends, _data, _reply, 0); _reply.readException(); _result = _reply.readBoolean(); } finally { _reply.recycle(); _data.recycle(); } return _result; } /** * Get the maximum usable frontends number of a given frontend type. * * @param frontendType the frontendType which the maximum usable number will be queried for. * * @return the maximum usable number of the queried frontend type. Returns -1 when the * frontendType is invalid */ @Override public int getMaxNumberOfFrontends(int frontendType) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); int _result; try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeInt(frontendType); boolean _status = mRemote.transact(Stub.TRANSACTION_getMaxNumberOfFrontends, _data, _reply, 0); _reply.readException(); _result = _reply.readInt(); } finally { _reply.recycle(); _data.recycle(); } return _result; } /** * Requests to share frontend with an existing client. * *
Note: {@link #setFrontendInfoList(TunerFrontendInfo[])} must be called * before this request. * * @param selfClientId the id of the client that sends the request. * @param targetClientId the id of the client to share the frontend with. */ @Override public void shareFrontend(int selfClientId, int targetClientId) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeInt(selfClientId); _data.writeInt(targetClientId); boolean _status = mRemote.transact(Stub.TRANSACTION_shareFrontend, _data, _reply, 0); _reply.readException(); } finally { _reply.recycle(); _data.recycle(); } } /** * Transfers the ownership of the shared resource. * *
Note: Only the existing frontend sharee can be the new owner. * * @param resourceType the type of resource to transfer the ownership for. * @param currentOwnerId the id of the current owner client. * @param newOwnerId the id of the new owner client. * * @return true if successful. false otherwise. */ @Override public boolean transferOwner(int resourceType, int currentOwnerId, int newOwnerId) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); boolean _result; try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeInt(resourceType); _data.writeInt(currentOwnerId); _data.writeInt(newOwnerId); boolean _status = mRemote.transact(Stub.TRANSACTION_transferOwner, _data, _reply, 0); _reply.readException(); _result = _reply.readBoolean(); } finally { _reply.recycle(); _data.recycle(); } return _result; } /** * This API is used by the Tuner framework to request an available demux from the TunerHAL. * *
There are three possible scenarios: *
There are three possible scenarios: *
There are three possible scenarios: *
Note: {@link #updateCasInfo(int, int)} must be called before this request. * * @param request {@link CasSessionRequest} information of the current request. * @param casSessionHandle a one-element array to return the granted cas session handle. * * @return true if there is CAS session granted. */ @Override public boolean requestCasSession(android.media.tv.tunerresourcemanager.CasSessionRequest request, int[] casSessionHandle) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); boolean _result; try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeTypedObject(request, 0); _data.writeInt(casSessionHandle.length); boolean _status = mRemote.transact(Stub.TRANSACTION_requestCasSession, _data, _reply, 0); _reply.readException(); _result = _reply.readBoolean(); _reply.readIntArray(casSessionHandle); } finally { _reply.recycle(); _data.recycle(); } return _result; } /** * This API is used by the Tuner framework to request an available CuCam. * *
There are three possible scenarios: *
Note: {@link #updateCasInfo(int, int)} must be called before this request. * * @param request {@link TunerCiCamRequest} information of the current request. * @param ciCamHandle a one-element array to return the granted ciCam handle. * * @return true if there is CiCam granted. */ @Override public boolean requestCiCam(android.media.tv.tunerresourcemanager.TunerCiCamRequest request, int[] ciCamHandle) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); boolean _result; try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeTypedObject(request, 0); _data.writeInt(ciCamHandle.length); boolean _status = mRemote.transact(Stub.TRANSACTION_requestCiCam, _data, _reply, 0); _reply.readException(); _result = _reply.readBoolean(); _reply.readIntArray(ciCamHandle); } finally { _reply.recycle(); _data.recycle(); } return _result; } /** * This API is used by the Tuner framework to request an available Lnb from the TunerHAL. * *
There are three possible scenarios: *
Note: {@link #setLnbInfos(int[])} must be called before this request. * * @param request {@link TunerLnbRequest} information of the current request. * @param lnbHandle a one-element array to return the granted Lnb handle. * * @return true if there is Lnb granted. */ @Override public boolean requestLnb(android.media.tv.tunerresourcemanager.TunerLnbRequest request, int[] lnbHandle) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); boolean _result; try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeTypedObject(request, 0); _data.writeInt(lnbHandle.length); boolean _status = mRemote.transact(Stub.TRANSACTION_requestLnb, _data, _reply, 0); _reply.readException(); _result = _reply.readBoolean(); _reply.readIntArray(lnbHandle); } finally { _reply.recycle(); _data.recycle(); } return _result; } /** * Notifies the TRM that the given frontend has been released. * *
Client must call this whenever it releases a Tuner frontend. * *
Note: {@link #setFrontendInfoList(TunerFrontendInfo[])} must be called * before this release. * * @param frontendHandle the handle of the released frontend. * @param clientId the id of the client that is releasing the frontend. */ @Override public void releaseFrontend(int frontendHandle, int clientId) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeInt(frontendHandle); _data.writeInt(clientId); boolean _status = mRemote.transact(Stub.TRANSACTION_releaseFrontend, _data, _reply, 0); _reply.readException(); } finally { _reply.recycle(); _data.recycle(); } } /** * Notifies the TRM that the Demux with the given handle was released. * *
Client must call this whenever it releases a demux. * * @param demuxHandle the handle of the released Tuner Demux. * @param clientId the id of the client that is releasing the demux. */ @Override public void releaseDemux(int demuxHandle, int clientId) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeInt(demuxHandle); _data.writeInt(clientId); boolean _status = mRemote.transact(Stub.TRANSACTION_releaseDemux, _data, _reply, 0); _reply.readException(); } finally { _reply.recycle(); _data.recycle(); } } /** * Notifies the TRM that the Descrambler with the given handle was released. * *
Client must call this whenever it releases a descrambler. * * @param descramblerHandle the handle of the released Tuner Descrambler. * @param clientId the id of the client that is releasing the descrambler. */ @Override public void releaseDescrambler(int descramblerHandle, int clientId) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeInt(descramblerHandle); _data.writeInt(clientId); boolean _status = mRemote.transact(Stub.TRANSACTION_releaseDescrambler, _data, _reply, 0); _reply.readException(); } finally { _reply.recycle(); _data.recycle(); } } /** * Notifies the TRM that the given Cas session has been released. * *
Client must call this whenever it releases a Cas session. * *
Note: {@link #updateCasInfo(int, int)} must be called before this release. * * @param casSessionHandle the handle of the released CAS session. * @param clientId the id of the client that is releasing the cas session. */ @Override public void releaseCasSession(int casSessionHandle, int clientId) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeInt(casSessionHandle); _data.writeInt(clientId); boolean _status = mRemote.transact(Stub.TRANSACTION_releaseCasSession, _data, _reply, 0); _reply.readException(); } finally { _reply.recycle(); _data.recycle(); } } /** * Notifies the TRM that the given CiCam has been released. * *
Client must call this whenever it releases a CiCam. * *
Note: {@link #updateCasInfo(int, int)} must be called before this * release. * * @param ciCamHandle the handle of the releasing CiCam. * @param clientId the id of the client that is releasing the CiCam. */ @Override public void releaseCiCam(int ciCamHandle, int clientId) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeInt(ciCamHandle); _data.writeInt(clientId); boolean _status = mRemote.transact(Stub.TRANSACTION_releaseCiCam, _data, _reply, 0); _reply.readException(); } finally { _reply.recycle(); _data.recycle(); } } /** * Notifies the TRM that the Lnb with the given handle was released. * *
Client must call this whenever it releases an Lnb. * *
Note: {@link #setLnbInfos(int[])} must be called before this release. * * @param lnbHandle the handle of the released Tuner Lnb. * @param clientId the id of the client that is releasing the lnb. */ @Override public void releaseLnb(int lnbHandle, int clientId) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeInt(lnbHandle); _data.writeInt(clientId); boolean _status = mRemote.transact(Stub.TRANSACTION_releaseLnb, _data, _reply, 0); _reply.readException(); } finally { _reply.recycle(); _data.recycle(); } } /** * Compare two clients' priority. * * @param challengerProfile the {@link ResourceClientProfile} of the challenger. * @param holderProfile the {@link ResourceClientProfile} of the holder of the resource. * * @return true if the challenger has higher priority than the holder. */ @Override public boolean isHigherPriority(android.media.tv.tunerresourcemanager.ResourceClientProfile challengerProfile, android.media.tv.tunerresourcemanager.ResourceClientProfile holderProfile) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); boolean _result; try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeTypedObject(challengerProfile, 0); _data.writeTypedObject(holderProfile, 0); boolean _status = mRemote.transact(Stub.TRANSACTION_isHigherPriority, _data, _reply, 0); _reply.readException(); _result = _reply.readBoolean(); } finally { _reply.recycle(); _data.recycle(); } return _result; } /** * Stores Frontend resource map for the later restore. * *
This is API is only for testing purpose and should be used in pair with * restoreResourceMap(), which allows testing of {@link Tuner} APIs * that behave differently based on different sets of resource map. * * @param resourceType The resource type to store the map for. */ @Override public void storeResourceMap(int resourceType) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeInt(resourceType); boolean _status = mRemote.transact(Stub.TRANSACTION_storeResourceMap, _data, _reply, 0); _reply.readException(); } finally { _reply.recycle(); _data.recycle(); } } /** * Clears the frontend resource map. * *
This is API is only for testing purpose and should be called right after * storeResourceMap(), so TRMService#removeFrontendResource() does not * get called in TRMService#setFrontendInfoListInternal() for custom frontend * resource map creation. * * @param resourceType The resource type to clear the map for. */ @Override public void clearResourceMap(int resourceType) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeInt(resourceType); boolean _status = mRemote.transact(Stub.TRANSACTION_clearResourceMap, _data, _reply, 0); _reply.readException(); } finally { _reply.recycle(); _data.recycle(); } } /** * Restores Frontend resource map if it was stored before. * *
This is API is only for testing purpose and should be used in pair with * storeResourceMap(), which allows testing of {@link Tuner} APIs * that behave differently based on different sets of resource map. * * @param resourceType The resource type to restore the map for. */ @Override public void restoreResourceMap(int resourceType) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeInt(resourceType); boolean _status = mRemote.transact(Stub.TRANSACTION_restoreResourceMap, _data, _reply, 0); _reply.readException(); } finally { _reply.recycle(); _data.recycle(); } } /** * Grants the lock to the caller for public {@link Tuner} APIs * *
{@link Tuner} functions that call both [@link TunerResourceManager} APIs and * grabs lock that are also used in {@link IResourcesReclaimListener#onReclaimResources()} * must call this API before acquiring lock used in onReclaimResources(). * *
This API will block until it releases the lock or fails * * @param clientId The ID of the caller. * * @return true if the lock is granted. If false is returned, calling this API again is not * guaranteed to work and may be unrecoverrable. (This should not happen.) */ @Override public boolean acquireLock(int clientId, long clientThreadId) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); boolean _result; try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeInt(clientId); _data.writeLong(clientThreadId); boolean _status = mRemote.transact(Stub.TRANSACTION_acquireLock, _data, _reply, 0); _reply.readException(); _result = _reply.readBoolean(); } finally { _reply.recycle(); _data.recycle(); } return _result; } /** * Releases the lock to the caller for public {@link Tuner} APIs * *
This API must be called in pair with {@link #acquireLock(int, int)} * *
This API will block until it releases the lock or fails * * @param clientId The ID of the caller. * * @return true if the lock is granted. If false is returned, calling this API again is not * guaranteed to work and may be unrecoverrable. (This should not happen.) */ @Override public boolean releaseLock(int clientId) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); boolean _result; try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeInt(clientId); boolean _status = mRemote.transact(Stub.TRANSACTION_releaseLock, _data, _reply, 0); _reply.readException(); _result = _reply.readBoolean(); } finally { _reply.recycle(); _data.recycle(); } return _result; } /** * Returns a priority for the given use case type and the client's foreground or background * status. * * @param useCase the use case type of the client. When the given use case type is invalid, * the default use case type will be used. {@see TvInputService#PriorityHintUseCaseType}. * @param pid the pid of the client. When the pid is invalid, background status will be used as * a client's status. Otherwise, client's app corresponding to the given session id will * be used as a client. {@see TvInputService#onCreateSession(String, String)}. * * @return the client priority.. */ @Override public int getClientPriority(int useCase, int pid) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); int _result; try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeInt(useCase); _data.writeInt(pid); boolean _status = mRemote.transact(Stub.TRANSACTION_getClientPriority, _data, _reply, 0); _reply.readException(); _result = _reply.readInt(); } finally { _reply.recycle(); _data.recycle(); } return _result; } /** * Returns a config priority for the given use case type and the foreground or background * status. * * @param useCase the use case type of the client. When the given use case type is invalid, * the default use case type will be used. {@see TvInputService#PriorityHintUseCaseType}. * @param isForeground {@code true} if foreground, {@code false} otherwise. * * @return the config priority. */ @Override public int getConfigPriority(int useCase, boolean isForeground) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(asBinder()); android.os.Parcel _reply = android.os.Parcel.obtain(); int _result; try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeInt(useCase); _data.writeBoolean(isForeground); boolean _status = mRemote.transact(Stub.TRANSACTION_getConfigPriority, _data, _reply, 0); _reply.readException(); _result = _reply.readInt(); } finally { _reply.recycle(); _data.recycle(); } return _result; } } static final int TRANSACTION_registerClientProfile = (android.os.IBinder.FIRST_CALL_TRANSACTION + 0); static final int TRANSACTION_unregisterClientProfile = (android.os.IBinder.FIRST_CALL_TRANSACTION + 1); static final int TRANSACTION_updateClientPriority = (android.os.IBinder.FIRST_CALL_TRANSACTION + 2); static final int TRANSACTION_hasUnusedFrontend = (android.os.IBinder.FIRST_CALL_TRANSACTION + 3); static final int TRANSACTION_isLowestPriority = (android.os.IBinder.FIRST_CALL_TRANSACTION + 4); static final int TRANSACTION_setFrontendInfoList = (android.os.IBinder.FIRST_CALL_TRANSACTION + 5); static final int TRANSACTION_updateCasInfo = (android.os.IBinder.FIRST_CALL_TRANSACTION + 6); static final int TRANSACTION_setDemuxInfoList = (android.os.IBinder.FIRST_CALL_TRANSACTION + 7); static final int TRANSACTION_setLnbInfoList = (android.os.IBinder.FIRST_CALL_TRANSACTION + 8); static final int TRANSACTION_requestFrontend = (android.os.IBinder.FIRST_CALL_TRANSACTION + 9); static final int TRANSACTION_setMaxNumberOfFrontends = (android.os.IBinder.FIRST_CALL_TRANSACTION + 10); static final int TRANSACTION_getMaxNumberOfFrontends = (android.os.IBinder.FIRST_CALL_TRANSACTION + 11); static final int TRANSACTION_shareFrontend = (android.os.IBinder.FIRST_CALL_TRANSACTION + 12); static final int TRANSACTION_transferOwner = (android.os.IBinder.FIRST_CALL_TRANSACTION + 13); static final int TRANSACTION_requestDemux = (android.os.IBinder.FIRST_CALL_TRANSACTION + 14); static final int TRANSACTION_requestDescrambler = (android.os.IBinder.FIRST_CALL_TRANSACTION + 15); static final int TRANSACTION_requestCasSession = (android.os.IBinder.FIRST_CALL_TRANSACTION + 16); static final int TRANSACTION_requestCiCam = (android.os.IBinder.FIRST_CALL_TRANSACTION + 17); static final int TRANSACTION_requestLnb = (android.os.IBinder.FIRST_CALL_TRANSACTION + 18); static final int TRANSACTION_releaseFrontend = (android.os.IBinder.FIRST_CALL_TRANSACTION + 19); static final int TRANSACTION_releaseDemux = (android.os.IBinder.FIRST_CALL_TRANSACTION + 20); static final int TRANSACTION_releaseDescrambler = (android.os.IBinder.FIRST_CALL_TRANSACTION + 21); static final int TRANSACTION_releaseCasSession = (android.os.IBinder.FIRST_CALL_TRANSACTION + 22); static final int TRANSACTION_releaseCiCam = (android.os.IBinder.FIRST_CALL_TRANSACTION + 23); static final int TRANSACTION_releaseLnb = (android.os.IBinder.FIRST_CALL_TRANSACTION + 24); static final int TRANSACTION_isHigherPriority = (android.os.IBinder.FIRST_CALL_TRANSACTION + 25); static final int TRANSACTION_storeResourceMap = (android.os.IBinder.FIRST_CALL_TRANSACTION + 26); static final int TRANSACTION_clearResourceMap = (android.os.IBinder.FIRST_CALL_TRANSACTION + 27); static final int TRANSACTION_restoreResourceMap = (android.os.IBinder.FIRST_CALL_TRANSACTION + 28); static final int TRANSACTION_acquireLock = (android.os.IBinder.FIRST_CALL_TRANSACTION + 29); static final int TRANSACTION_releaseLock = (android.os.IBinder.FIRST_CALL_TRANSACTION + 30); static final int TRANSACTION_getClientPriority = (android.os.IBinder.FIRST_CALL_TRANSACTION + 31); static final int TRANSACTION_getConfigPriority = (android.os.IBinder.FIRST_CALL_TRANSACTION + 32); } /** @hide */ public static final java.lang.String DESCRIPTOR = "android.media.tv.tunerresourcemanager.ITunerResourceManager"; /** * This API is used by the client to register their profile with the Tuner Resource manager. * *
The profile contains information that can show the base priority score of the client. * * @param profile {@link ResourceClientProfile} profile of the current client * @param listener {@link IResourcesReclaimListener} a callback to * reclaim clients' resources when needed. * @param clientId returns a clientId from the resource manager when the * the client registers its profile. */ public void registerClientProfile(android.media.tv.tunerresourcemanager.ResourceClientProfile profile, android.media.tv.tunerresourcemanager.IResourcesReclaimListener listener, int[] clientId) throws android.os.RemoteException; /** * This API is used by the client to unregister their profile with the Tuner Resource manager. * * @param clientId the client id that needs to be unregistered. */ public void unregisterClientProfile(int clientId) throws android.os.RemoteException; /** * Updates a registered client's priority and niceValue. * * @param clientId the id of the client that is updating its profile. * @param priority the priority that the client would like to update to. * @param niceValue the nice value that the client would like to update to. * * @return true if the update is successful. */ public boolean updateClientPriority(int clientId, int priority, int niceValue) throws android.os.RemoteException; /** * Checks if there is any unused frontend resource of the specified type. * * @param frontendType the specific type of frontend resource to be checked for. * * @return true if there is any unused resource of the specified type. */ public boolean hasUnusedFrontend(int frontendType) throws android.os.RemoteException; /** * Checks if the client has the lowest priority among the clients that are holding * the frontend resource of the specified type. * *
When this function returns false, it means that there is at least one client with the * strictly lower priority (than clientId) that is reclaimable by the system. * * @param clientId The client ID to be checked the priority for. * @param frontendType The specific frontend type to be checked for. * * @return false if there is another client holding the frontend resource of the specified type * that can be reclaimed. Otherwise true. */ public boolean isLowestPriority(int clientId, int frontendType) throws android.os.RemoteException; /** * Updates the available Frontend resources information on the current device. * *
Note: This update must happen before the first * {@link #requestFrontend(TunerFrontendRequest,int[])} and {@link #releaseFrontend(int, int)} * call. * * @param infos an array of the available {@link TunerFrontendInfo} information. */ public void setFrontendInfoList(android.media.tv.tunerresourcemanager.TunerFrontendInfo[] infos) throws android.os.RemoteException; /** * Updates the available Cas resource information on the current device. * *
Note: This update must happen before the first * {@link #requestCasSession(CasSessionRequest, int[])} and {@link #releaseCasSession(int, int)} * call. * * @param casSystemId id of the updating CAS system. * @param maxSessionNum the max session number of the CAS system that is updated. */ public void updateCasInfo(int casSystemId, int maxSessionNum) throws android.os.RemoteException; /** * Updates the available Demux resources information on the current device. * *
Note: This update must happen before the first * {@link #requestDemux(TunerDemux,int[])} and {@link #releaseDemux(int, int)} * call. * * @param infos an array of the available {@link TunerDemux} information. */ public void setDemuxInfoList(android.media.tv.tunerresourcemanager.TunerDemuxInfo[] infos) throws android.os.RemoteException; /** * Updates the available Lnb resource information on the current device. * *
Note: This update must happen before the first * {@link #requestLnb(TunerLnbRequest, int[])} and {@link #releaseLnb(int, int)} call. * * @param lnbIds ids of the updating lnbs. */ public void setLnbInfoList(int[] lnbIds) throws android.os.RemoteException; /** * This API is used by the Tuner framework to request a frontend from the TunerHAL. * *
There are two cases: *
Note: {@link #setFrontendInfoList(TunerFrontendInfo[])} must be called * before this request. * * @param request {@link TunerFrontendRequest} information of the current request. * @param frontendHandle a one-element array to return the granted frontendHandle. * * @return true if there is frontend granted. */ public boolean requestFrontend(android.media.tv.tunerresourcemanager.TunerFrontendRequest request, int[] frontendHandle) throws android.os.RemoteException; /** * Sets the maximum usable frontends number of a given frontend type. It is used to enable or * disable frontends when cable connection status is changed by user. * * @param frontendType the frontendType which the maximum usable number will be set for. * @param maxNumber the new maximum usable number. * * @return true if successful and false otherwise. */ public boolean setMaxNumberOfFrontends(int frontendType, int maxNum) throws android.os.RemoteException; /** * Get the maximum usable frontends number of a given frontend type. * * @param frontendType the frontendType which the maximum usable number will be queried for. * * @return the maximum usable number of the queried frontend type. Returns -1 when the * frontendType is invalid */ public int getMaxNumberOfFrontends(int frontendType) throws android.os.RemoteException; /** * Requests to share frontend with an existing client. * *
Note: {@link #setFrontendInfoList(TunerFrontendInfo[])} must be called * before this request. * * @param selfClientId the id of the client that sends the request. * @param targetClientId the id of the client to share the frontend with. */ public void shareFrontend(int selfClientId, int targetClientId) throws android.os.RemoteException; /** * Transfers the ownership of the shared resource. * *
Note: Only the existing frontend sharee can be the new owner. * * @param resourceType the type of resource to transfer the ownership for. * @param currentOwnerId the id of the current owner client. * @param newOwnerId the id of the new owner client. * * @return true if successful. false otherwise. */ public boolean transferOwner(int resourceType, int currentOwnerId, int newOwnerId) throws android.os.RemoteException; /** * This API is used by the Tuner framework to request an available demux from the TunerHAL. * *
There are three possible scenarios: *
There are three possible scenarios: *
There are three possible scenarios: *
Note: {@link #updateCasInfo(int, int)} must be called before this request. * * @param request {@link CasSessionRequest} information of the current request. * @param casSessionHandle a one-element array to return the granted cas session handle. * * @return true if there is CAS session granted. */ public boolean requestCasSession(android.media.tv.tunerresourcemanager.CasSessionRequest request, int[] casSessionHandle) throws android.os.RemoteException; /** * This API is used by the Tuner framework to request an available CuCam. * *
There are three possible scenarios: *
Note: {@link #updateCasInfo(int, int)} must be called before this request. * * @param request {@link TunerCiCamRequest} information of the current request. * @param ciCamHandle a one-element array to return the granted ciCam handle. * * @return true if there is CiCam granted. */ public boolean requestCiCam(android.media.tv.tunerresourcemanager.TunerCiCamRequest request, int[] ciCamHandle) throws android.os.RemoteException; /** * This API is used by the Tuner framework to request an available Lnb from the TunerHAL. * *
There are three possible scenarios: *
Note: {@link #setLnbInfos(int[])} must be called before this request. * * @param request {@link TunerLnbRequest} information of the current request. * @param lnbHandle a one-element array to return the granted Lnb handle. * * @return true if there is Lnb granted. */ public boolean requestLnb(android.media.tv.tunerresourcemanager.TunerLnbRequest request, int[] lnbHandle) throws android.os.RemoteException; /** * Notifies the TRM that the given frontend has been released. * *
Client must call this whenever it releases a Tuner frontend. * *
Note: {@link #setFrontendInfoList(TunerFrontendInfo[])} must be called * before this release. * * @param frontendHandle the handle of the released frontend. * @param clientId the id of the client that is releasing the frontend. */ public void releaseFrontend(int frontendHandle, int clientId) throws android.os.RemoteException; /** * Notifies the TRM that the Demux with the given handle was released. * *
Client must call this whenever it releases a demux. * * @param demuxHandle the handle of the released Tuner Demux. * @param clientId the id of the client that is releasing the demux. */ public void releaseDemux(int demuxHandle, int clientId) throws android.os.RemoteException; /** * Notifies the TRM that the Descrambler with the given handle was released. * *
Client must call this whenever it releases a descrambler. * * @param descramblerHandle the handle of the released Tuner Descrambler. * @param clientId the id of the client that is releasing the descrambler. */ public void releaseDescrambler(int descramblerHandle, int clientId) throws android.os.RemoteException; /** * Notifies the TRM that the given Cas session has been released. * *
Client must call this whenever it releases a Cas session. * *
Note: {@link #updateCasInfo(int, int)} must be called before this release. * * @param casSessionHandle the handle of the released CAS session. * @param clientId the id of the client that is releasing the cas session. */ public void releaseCasSession(int casSessionHandle, int clientId) throws android.os.RemoteException; /** * Notifies the TRM that the given CiCam has been released. * *
Client must call this whenever it releases a CiCam. * *
Note: {@link #updateCasInfo(int, int)} must be called before this * release. * * @param ciCamHandle the handle of the releasing CiCam. * @param clientId the id of the client that is releasing the CiCam. */ public void releaseCiCam(int ciCamHandle, int clientId) throws android.os.RemoteException; /** * Notifies the TRM that the Lnb with the given handle was released. * *
Client must call this whenever it releases an Lnb. * *
Note: {@link #setLnbInfos(int[])} must be called before this release. * * @param lnbHandle the handle of the released Tuner Lnb. * @param clientId the id of the client that is releasing the lnb. */ public void releaseLnb(int lnbHandle, int clientId) throws android.os.RemoteException; /** * Compare two clients' priority. * * @param challengerProfile the {@link ResourceClientProfile} of the challenger. * @param holderProfile the {@link ResourceClientProfile} of the holder of the resource. * * @return true if the challenger has higher priority than the holder. */ public boolean isHigherPriority(android.media.tv.tunerresourcemanager.ResourceClientProfile challengerProfile, android.media.tv.tunerresourcemanager.ResourceClientProfile holderProfile) throws android.os.RemoteException; /** * Stores Frontend resource map for the later restore. * *
This is API is only for testing purpose and should be used in pair with * restoreResourceMap(), which allows testing of {@link Tuner} APIs * that behave differently based on different sets of resource map. * * @param resourceType The resource type to store the map for. */ public void storeResourceMap(int resourceType) throws android.os.RemoteException; /** * Clears the frontend resource map. * *
This is API is only for testing purpose and should be called right after * storeResourceMap(), so TRMService#removeFrontendResource() does not * get called in TRMService#setFrontendInfoListInternal() for custom frontend * resource map creation. * * @param resourceType The resource type to clear the map for. */ public void clearResourceMap(int resourceType) throws android.os.RemoteException; /** * Restores Frontend resource map if it was stored before. * *
This is API is only for testing purpose and should be used in pair with * storeResourceMap(), which allows testing of {@link Tuner} APIs * that behave differently based on different sets of resource map. * * @param resourceType The resource type to restore the map for. */ public void restoreResourceMap(int resourceType) throws android.os.RemoteException; /** * Grants the lock to the caller for public {@link Tuner} APIs * *
{@link Tuner} functions that call both [@link TunerResourceManager} APIs and * grabs lock that are also used in {@link IResourcesReclaimListener#onReclaimResources()} * must call this API before acquiring lock used in onReclaimResources(). * *
This API will block until it releases the lock or fails * * @param clientId The ID of the caller. * * @return true if the lock is granted. If false is returned, calling this API again is not * guaranteed to work and may be unrecoverrable. (This should not happen.) */ public boolean acquireLock(int clientId, long clientThreadId) throws android.os.RemoteException; /** * Releases the lock to the caller for public {@link Tuner} APIs * *
This API must be called in pair with {@link #acquireLock(int, int)} * *
This API will block until it releases the lock or fails * * @param clientId The ID of the caller. * * @return true if the lock is granted. If false is returned, calling this API again is not * guaranteed to work and may be unrecoverrable. (This should not happen.) */ public boolean releaseLock(int clientId) throws android.os.RemoteException; /** * Returns a priority for the given use case type and the client's foreground or background * status. * * @param useCase the use case type of the client. When the given use case type is invalid, * the default use case type will be used. {@see TvInputService#PriorityHintUseCaseType}. * @param pid the pid of the client. When the pid is invalid, background status will be used as * a client's status. Otherwise, client's app corresponding to the given session id will * be used as a client. {@see TvInputService#onCreateSession(String, String)}. * * @return the client priority.. */ public int getClientPriority(int useCase, int pid) throws android.os.RemoteException; /** * Returns a config priority for the given use case type and the foreground or background * status. * * @param useCase the use case type of the client. When the given use case type is invalid, * the default use case type will be used. {@see TvInputService#PriorityHintUseCaseType}. * @param isForeground {@code true} if foreground, {@code false} otherwise. * * @return the config priority. */ public int getConfigPriority(int useCase, boolean isForeground) throws android.os.RemoteException; }