diff options
17 files changed, 279 insertions, 292 deletions
diff --git a/media/java/android/media/MediaCas.java b/media/java/android/media/MediaCas.java index 2d7db5e6ed94..9896f6404cda 100644 --- a/media/java/android/media/MediaCas.java +++ b/media/java/android/media/MediaCas.java @@ -131,7 +131,7 @@ public final class MediaCas implements AutoCloseable { private int mCasSystemId; private int mUserId; private TunerResourceManager mTunerResourceManager = null; - private final Map<Session, Integer> mSessionMap = new HashMap<>(); + private final Map<Session, Long> mSessionMap = new HashMap<>(); /** * Scrambling modes used to open cas sessions. @@ -1126,10 +1126,10 @@ public final class MediaCas implements AutoCloseable { } } - private int getSessionResourceHandle() throws MediaCasException { + private long getSessionResourceHandle() throws MediaCasException { validateInternalStates(); - int[] sessionResourceHandle = new int[1]; + long[] sessionResourceHandle = new long[1]; sessionResourceHandle[0] = -1; if (mTunerResourceManager != null) { CasSessionRequest casSessionRequest = new CasSessionRequest(); @@ -1144,8 +1144,7 @@ public final class MediaCas implements AutoCloseable { return sessionResourceHandle[0]; } - private void addSessionToResourceMap(Session session, int sessionResourceHandle) { - + private void addSessionToResourceMap(Session session, long sessionResourceHandle) { if (sessionResourceHandle != TunerResourceManager.INVALID_RESOURCE_HANDLE) { synchronized (mSessionMap) { mSessionMap.put(session, sessionResourceHandle); @@ -1178,13 +1177,14 @@ public final class MediaCas implements AutoCloseable { * @throws MediaCasStateException for CAS-specific state exceptions. */ public Session openSession() throws MediaCasException { - int sessionResourceHandle = getSessionResourceHandle(); + long sessionResourceHandle = getSessionResourceHandle(); try { if (mICas != null) { try { byte[] sessionId = mICas.openSessionDefault(); Session session = createFromSessionId(sessionId); + addSessionToResourceMap(session, sessionResourceHandle); Log.d(TAG, "Write Stats Log for succeed to Open Session."); FrameworkStatsLog.write( FrameworkStatsLog.TV_CAS_SESSION_OPEN_STATUS, @@ -1238,7 +1238,7 @@ public final class MediaCas implements AutoCloseable { @Nullable public Session openSession(@SessionUsage int sessionUsage, @ScramblingMode int scramblingMode) throws MediaCasException { - int sessionResourceHandle = getSessionResourceHandle(); + long sessionResourceHandle = getSessionResourceHandle(); if (mICas != null) { try { diff --git a/media/java/android/media/tv/tuner/Tuner.java b/media/java/android/media/tv/tuner/Tuner.java index 2c71ee01b3f1..300ae5d9a26b 100644 --- a/media/java/android/media/tv/tuner/Tuner.java +++ b/media/java/android/media/tv/tuner/Tuner.java @@ -293,13 +293,13 @@ public class Tuner implements AutoCloseable { private EventHandler mHandler; @Nullable private FrontendInfo mFrontendInfo; - private Integer mFrontendHandle; + private Long mFrontendHandle; private Tuner mFeOwnerTuner = null; private int mFrontendType = FrontendSettings.TYPE_UNDEFINED; private Integer mDesiredFrontendId = null; private int mUserId; private Lnb mLnb; - private Integer mLnbHandle; + private Long mLnbHandle; @Nullable private OnTuneEventListener mOnTuneEventListener; @Nullable @@ -322,10 +322,10 @@ public class Tuner implements AutoCloseable { private final ReentrantLock mDemuxLock = new ReentrantLock(); private int mRequestedCiCamId; - private Integer mDemuxHandle; - private Integer mFrontendCiCamHandle; + private Long mDemuxHandle; + private Long mFrontendCiCamHandle; private Integer mFrontendCiCamId; - private Map<Integer, WeakReference<Descrambler>> mDescramblers = new HashMap<>(); + private Map<Long, WeakReference<Descrambler>> mDescramblers = new HashMap<>(); private List<WeakReference<Filter>> mFilters = new ArrayList<WeakReference<Filter>>(); private final TunerResourceManager.ResourcesReclaimListener mResourceListener = @@ -947,7 +947,7 @@ public class Tuner implements AutoCloseable { private void releaseDescramblers() { synchronized (mDescramblers) { if (!mDescramblers.isEmpty()) { - for (Map.Entry<Integer, WeakReference<Descrambler>> d : mDescramblers.entrySet()) { + for (Map.Entry<Long, WeakReference<Descrambler>> d : mDescramblers.entrySet()) { Descrambler descrambler = d.getValue().get(); if (descrambler != null) { descrambler.close(); @@ -1008,7 +1008,7 @@ public class Tuner implements AutoCloseable { /** * Native method to open frontend of the given ID. */ - private native Frontend nativeOpenFrontendByHandle(int handle); + private native Frontend nativeOpenFrontendByHandle(long handle); private native int nativeShareFrontend(int id); private native int nativeUnshareFrontend(); private native void nativeRegisterFeCbListener(long nativeContext); @@ -1037,21 +1037,21 @@ public class Tuner implements AutoCloseable { private native int nativeSetMaxNumberOfFrontends(int frontendType, int maxNumber); private native int nativeGetMaxNumberOfFrontends(int frontendType); private native int nativeRemoveOutputPid(int pid); - private native Lnb nativeOpenLnbByHandle(int handle); + private native Lnb nativeOpenLnbByHandle(long handle); private native Lnb nativeOpenLnbByName(String name); private native FrontendStatusReadiness[] nativeGetFrontendStatusReadiness(int[] statusTypes); - private native Descrambler nativeOpenDescramblerByHandle(int handle); - private native int nativeOpenDemuxByhandle(int handle); + private native Descrambler nativeOpenDescramblerByHandle(long handle); + private native int nativeOpenDemuxByhandle(long handle); private native DvrRecorder nativeOpenDvrRecorder(long bufferSize); private native DvrPlayback nativeOpenDvrPlayback(long bufferSize); private native DemuxCapabilities nativeGetDemuxCapabilities(); - private native DemuxInfo nativeGetDemuxInfo(int demuxHandle); + private native DemuxInfo nativeGetDemuxInfo(long demuxHandle); - private native int nativeCloseDemux(int handle); - private native int nativeCloseFrontend(int handle); + private native int nativeCloseDemux(long handle); + private native int nativeCloseFrontend(long handle); private native int nativeClose(); private static native SharedFilter nativeOpenSharedFilter(String token); @@ -1369,7 +1369,7 @@ public class Tuner implements AutoCloseable { } private boolean requestFrontend() { - int[] feHandle = new int[1]; + long[] feHandle = new long[1]; boolean granted = false; try { TunerFrontendRequest request = new TunerFrontendRequest(); @@ -2377,7 +2377,7 @@ public class Tuner implements AutoCloseable { } private boolean requestLnb() { - int[] lnbHandle = new int[1]; + long[] lnbHandle = new long[1]; TunerLnbRequest request = new TunerLnbRequest(); request.clientId = mClientId; boolean granted = mTunerResourceManager.requestLnb(request, lnbHandle); @@ -2660,7 +2660,7 @@ public class Tuner implements AutoCloseable { } private boolean requestDemux() { - int[] demuxHandle = new int[1]; + long[] demuxHandle = new long[1]; TunerDemuxRequest request = new TunerDemuxRequest(); request.clientId = mClientId; request.desiredFilterTypes = mDesiredDemuxInfo.getFilterTypes(); @@ -2673,14 +2673,14 @@ public class Tuner implements AutoCloseable { } private Descrambler requestDescrambler() { - int[] descramblerHandle = new int[1]; + long[] descramblerHandle = new long[1]; TunerDescramblerRequest request = new TunerDescramblerRequest(); request.clientId = mClientId; boolean granted = mTunerResourceManager.requestDescrambler(request, descramblerHandle); if (!granted) { return null; } - int handle = descramblerHandle[0]; + long handle = descramblerHandle[0]; Descrambler descrambler = nativeOpenDescramblerByHandle(handle); if (descrambler != null) { synchronized (mDescramblers) { @@ -2694,7 +2694,7 @@ public class Tuner implements AutoCloseable { } private boolean requestFrontendCiCam(int ciCamId) { - int[] ciCamHandle = new int[1]; + long[] ciCamHandle = new long[1]; TunerCiCamRequest request = new TunerCiCamRequest(); request.clientId = mClientId; request.ciCamId = ciCamId; diff --git a/media/java/android/media/tv/tunerresourcemanager/TunerResourceManager.java b/media/java/android/media/tv/tunerresourcemanager/TunerResourceManager.java index d268aeba8011..bb581ebe1778 100644 --- a/media/java/android/media/tv/tunerresourcemanager/TunerResourceManager.java +++ b/media/java/android/media/tv/tunerresourcemanager/TunerResourceManager.java @@ -66,7 +66,7 @@ public class TunerResourceManager { private static final String TAG = "TunerResourceManager"; private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); - public static final int INVALID_RESOURCE_HANDLE = -1; + public static final long INVALID_RESOURCE_HANDLE = -1; public static final int INVALID_OWNER_ID = -1; /** * Tuner resource type to help generate resource handle @@ -275,7 +275,7 @@ public class TunerResourceManager { * Updates the current TRM of the TunerHAL Frontend information. * * <p><strong>Note:</strong> This update must happen before the first - * {@link #requestFrontend(TunerFrontendRequest, int[])} and + * {@link #requestFrontend(TunerFrontendRequest, long[])} and * {@link #releaseFrontend(int, int)} call. * * @param infos an array of the available {@link TunerFrontendInfo} information. @@ -331,7 +331,7 @@ public class TunerResourceManager { * * @param lnbIds ids of the updating lnbs. */ - public void setLnbInfoList(int[] lnbIds) { + public void setLnbInfoList(long[] lnbIds) { try { mService.setLnbInfoList(lnbIds); } catch (RemoteException e) { @@ -406,8 +406,8 @@ public class TunerResourceManager { * * @return true if there is frontend granted. */ - public boolean requestFrontend(@NonNull TunerFrontendRequest request, - @Nullable int[] frontendHandle) { + public boolean requestFrontend( + @NonNull TunerFrontendRequest request, @Nullable long[] frontendHandle) { boolean result = false; try { result = mService.requestFrontend(request, frontendHandle); @@ -511,7 +511,7 @@ public class TunerResourceManager { * * @return true if there is Demux granted. */ - public boolean requestDemux(@NonNull TunerDemuxRequest request, @NonNull int[] demuxHandle) { + public boolean requestDemux(@NonNull TunerDemuxRequest request, @NonNull long[] demuxHandle) { boolean result = false; try { result = mService.requestDemux(request, demuxHandle); @@ -544,8 +544,8 @@ public class TunerResourceManager { * * @return true if there is Descrambler granted. */ - public boolean requestDescrambler(@NonNull TunerDescramblerRequest request, - @NonNull int[] descramblerHandle) { + public boolean requestDescrambler( + @NonNull TunerDescramblerRequest request, @NonNull long[] descramblerHandle) { boolean result = false; try { result = mService.requestDescrambler(request, descramblerHandle); @@ -577,8 +577,8 @@ public class TunerResourceManager { * * @return true if there is CAS session granted. */ - public boolean requestCasSession(@NonNull CasSessionRequest request, - @NonNull int[] casSessionHandle) { + public boolean requestCasSession( + @NonNull CasSessionRequest request, @NonNull long[] casSessionHandle) { boolean result = false; try { result = mService.requestCasSession(request, casSessionHandle); @@ -610,7 +610,7 @@ public class TunerResourceManager { * * @return true if there is ciCam granted. */ - public boolean requestCiCam(TunerCiCamRequest request, int[] ciCamHandle) { + public boolean requestCiCam(TunerCiCamRequest request, long[] ciCamHandle) { boolean result = false; try { result = mService.requestCiCam(request, ciCamHandle); @@ -635,7 +635,7 @@ public class TunerResourceManager { * <li>If no Lnb system can be granted, the API would return false. * <ul> * - * <p><strong>Note:</strong> {@link #setLnbInfoList(int[])} must be called before this request. + * <p><strong>Note:</strong> {@link #setLnbInfoList(long[])} 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. @@ -643,7 +643,7 @@ public class TunerResourceManager { * * @return true if there is Lnb granted. */ - public boolean requestLnb(@NonNull TunerLnbRequest request, @NonNull int[] lnbHandle) { + public boolean requestLnb(@NonNull TunerLnbRequest request, @NonNull long[] lnbHandle) { boolean result = false; try { result = mService.requestLnb(request, lnbHandle); @@ -664,7 +664,7 @@ public class TunerResourceManager { * @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) { + public void releaseFrontend(long frontendHandle, int clientId) { try { mService.releaseFrontend(frontendHandle, clientId); } catch (RemoteException e) { @@ -680,7 +680,7 @@ public class TunerResourceManager { * @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) { + public void releaseDemux(long demuxHandle, int clientId) { try { mService.releaseDemux(demuxHandle, clientId); } catch (RemoteException e) { @@ -696,7 +696,7 @@ public class TunerResourceManager { * @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) { + public void releaseDescrambler(long descramblerHandle, int clientId) { try { mService.releaseDescrambler(descramblerHandle, clientId); } catch (RemoteException e) { @@ -715,7 +715,7 @@ public class TunerResourceManager { * @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) { + public void releaseCasSession(long casSessionHandle, int clientId) { try { mService.releaseCasSession(casSessionHandle, clientId); } catch (RemoteException e) { @@ -734,7 +734,7 @@ public class TunerResourceManager { * @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) { + public void releaseCiCam(long ciCamHandle, int clientId) { try { mService.releaseCiCam(ciCamHandle, clientId); } catch (RemoteException e) { @@ -747,12 +747,12 @@ public class TunerResourceManager { * * <p>Client must call this whenever it releases an Lnb. * - * <p><strong>Note:</strong> {@link #setLnbInfoList(int[])} must be called before this release. + * <p><strong>Note:</strong> {@link #setLnbInfoList(long[])} 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) { + public void releaseLnb(long lnbHandle, int clientId) { try { mService.releaseLnb(lnbHandle, clientId); } catch (RemoteException e) { diff --git a/media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/ITunerResourceManager.aidl b/media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/ITunerResourceManager.aidl index 539969762a82..109c791c1748 100644 --- a/media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/ITunerResourceManager.aidl +++ b/media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/ITunerResourceManager.aidl @@ -149,7 +149,7 @@ interface ITunerResourceManager { * * @param lnbIds ids of the updating lnbs. */ - void setLnbInfoList(in int[] lnbIds); + void setLnbInfoList(in long[] lnbIds); /* * This API is used by the Tuner framework to request a frontend from the TunerHAL. @@ -185,7 +185,7 @@ interface ITunerResourceManager { * * @return true if there is frontend granted. */ - boolean requestFrontend(in TunerFrontendRequest request, out int[] frontendHandle); + boolean requestFrontend(in TunerFrontendRequest request, out long[] frontendHandle); /* * Sets the maximum usable frontends number of a given frontend type. It is used to enable or @@ -253,7 +253,7 @@ interface ITunerResourceManager { * * @return true if there is demux granted. */ - boolean requestDemux(in TunerDemuxRequest request, out int[] demuxHandle); + boolean requestDemux(in TunerDemuxRequest request, out long[] demuxHandle); /* * This API is used by the Tuner framework to request an available descrambler from the @@ -277,7 +277,7 @@ interface ITunerResourceManager { * * @return true if there is Descrambler granted. */ - boolean requestDescrambler(in TunerDescramblerRequest request, out int[] descramblerHandle); + boolean requestDescrambler(in TunerDescramblerRequest request, out long[] descramblerHandle); /* * This API is used by the Tuner framework to request an available Cas session. This session @@ -303,7 +303,7 @@ interface ITunerResourceManager { * * @return true if there is CAS session granted. */ - boolean requestCasSession(in CasSessionRequest request, out int[] casSessionHandle); + boolean requestCasSession(in CasSessionRequest request, out long[] casSessionHandle); /* * This API is used by the Tuner framework to request an available CuCam. @@ -328,7 +328,7 @@ interface ITunerResourceManager { * * @return true if there is CiCam granted. */ - boolean requestCiCam(in TunerCiCamRequest request, out int[] ciCamHandle); + boolean requestCiCam(in TunerCiCamRequest request, out long[] ciCamHandle); /* * This API is used by the Tuner framework to request an available Lnb from the TunerHAL. @@ -352,7 +352,7 @@ interface ITunerResourceManager { * * @return true if there is Lnb granted. */ - boolean requestLnb(in TunerLnbRequest request, out int[] lnbHandle); + boolean requestLnb(in TunerLnbRequest request, out long[] lnbHandle); /* * Notifies the TRM that the given frontend has been released. @@ -365,7 +365,7 @@ interface ITunerResourceManager { * @param frontendHandle the handle of the released frontend. * @param clientId the id of the client that is releasing the frontend. */ - void releaseFrontend(in int frontendHandle, int clientId); + void releaseFrontend(in long frontendHandle, int clientId); /* * Notifies the TRM that the Demux with the given handle was released. @@ -375,7 +375,7 @@ interface ITunerResourceManager { * @param demuxHandle the handle of the released Tuner Demux. * @param clientId the id of the client that is releasing the demux. */ - void releaseDemux(in int demuxHandle, int clientId); + void releaseDemux(in long demuxHandle, int clientId); /* * Notifies the TRM that the Descrambler with the given handle was released. @@ -385,7 +385,7 @@ interface ITunerResourceManager { * @param descramblerHandle the handle of the released Tuner Descrambler. * @param clientId the id of the client that is releasing the descrambler. */ - void releaseDescrambler(in int descramblerHandle, int clientId); + void releaseDescrambler(in long descramblerHandle, int clientId); /* * Notifies the TRM that the given Cas session has been released. @@ -397,7 +397,7 @@ interface ITunerResourceManager { * @param casSessionHandle the handle of the released CAS session. * @param clientId the id of the client that is releasing the cas session. */ - void releaseCasSession(in int casSessionHandle, int clientId); + void releaseCasSession(in long casSessionHandle, int clientId); /** * Notifies the TRM that the given CiCam has been released. @@ -410,7 +410,7 @@ interface ITunerResourceManager { * @param ciCamHandle the handle of the releasing CiCam. * @param clientId the id of the client that is releasing the CiCam. */ - void releaseCiCam(in int ciCamHandle, int clientId); + void releaseCiCam(in long ciCamHandle, int clientId); /* * Notifies the TRM that the Lnb with the given handle was released. @@ -422,7 +422,7 @@ interface ITunerResourceManager { * @param lnbHandle the handle of the released Tuner Lnb. * @param clientId the id of the client that is releasing the lnb. */ - void releaseLnb(in int lnbHandle, int clientId); + void releaseLnb(in long lnbHandle, int clientId); /* * Compare two clients' priority. diff --git a/media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/TunerDemuxInfo.aidl b/media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/TunerDemuxInfo.aidl index c14caf50fa14..7984c38d33ab 100644 --- a/media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/TunerDemuxInfo.aidl +++ b/media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/TunerDemuxInfo.aidl @@ -26,7 +26,7 @@ parcelable TunerDemuxInfo { /** * Demux handle */ - int handle; + long handle; /** * Supported filter types (defined in {@link android.media.tv.tuner.filter.Filter}) diff --git a/media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/TunerFrontendInfo.aidl b/media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/TunerFrontendInfo.aidl index 8981ce00d509..274367e9aeb6 100644 --- a/media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/TunerFrontendInfo.aidl +++ b/media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/TunerFrontendInfo.aidl @@ -26,7 +26,7 @@ parcelable TunerFrontendInfo { /** * Frontend Handle */ - int handle; + long handle; /** * Frontend Type diff --git a/media/jni/android_media_tv_Tuner.cpp b/media/jni/android_media_tv_Tuner.cpp index 00b0e57c09ea..5eb2485b8dd6 100644 --- a/media/jni/android_media_tv_Tuner.cpp +++ b/media/jni/android_media_tv_Tuner.cpp @@ -1448,7 +1448,7 @@ jobject JTuner::getFrontendIds() { return obj; } -jobject JTuner::openFrontendByHandle(int feHandle) { +jobject JTuner::openFrontendByHandle(jlong feHandle) { // TODO: Handle reopening frontend with different handle sp<FrontendClient> feClient = sTunerClient->openFrontend(feHandle); if (feClient == nullptr) { @@ -1824,7 +1824,7 @@ jobjectArray JTuner::getFrontendStatusReadiness(jintArray types) { return valObj; } -jobject JTuner::openLnbByHandle(int handle) { +jobject JTuner::openLnbByHandle(jlong handle) { if (sTunerClient == nullptr) { return nullptr; } @@ -1833,7 +1833,7 @@ jobject JTuner::openLnbByHandle(int handle) { sp<LnbClientCallbackImpl> callback = new LnbClientCallbackImpl(); lnbClient = sTunerClient->openLnb(handle); if (lnbClient == nullptr) { - ALOGD("Failed to open lnb, handle = %d", handle); + ALOGD("Failed to open lnb, handle = %ld", handle); return nullptr; } @@ -1947,7 +1947,7 @@ int JTuner::setLna(bool enable) { return (int)result; } -Result JTuner::openDemux(int handle) { +Result JTuner::openDemux(jlong handle) { if (sTunerClient == nullptr) { return Result::NOT_INITIALIZED; } @@ -2215,7 +2215,7 @@ jobject JTuner::getDemuxCaps() { numBytesInSectionFilter, filterCaps, filterCapsList, linkCaps, bTimeFilter); } -jobject JTuner::getDemuxInfo(int handle) { +jobject JTuner::getDemuxInfo(jlong handle) { if (sTunerClient == nullptr) { ALOGE("tuner is not initialized"); return nullptr; @@ -3768,8 +3768,8 @@ static jobject android_media_tv_Tuner_get_frontend_ids(JNIEnv *env, jobject thiz return tuner->getFrontendIds(); } -static jobject android_media_tv_Tuner_open_frontend_by_handle( - JNIEnv *env, jobject thiz, jint handle) { +static jobject android_media_tv_Tuner_open_frontend_by_handle(JNIEnv *env, jobject thiz, + jlong handle) { sp<JTuner> tuner = getTuner(env, thiz); return tuner->openFrontendByHandle(handle); } @@ -3901,7 +3901,7 @@ static jobject android_media_tv_Tuner_get_frontend_info(JNIEnv *env, jobject thi return tuner->getFrontendInfo(id); } -static jobject android_media_tv_Tuner_open_lnb_by_handle(JNIEnv *env, jobject thiz, jint handle) { +static jobject android_media_tv_Tuner_open_lnb_by_handle(JNIEnv *env, jobject thiz, jlong handle) { sp<JTuner> tuner = getTuner(env, thiz); return tuner->openLnbByHandle(handle); } @@ -4622,7 +4622,7 @@ static int android_media_tv_Tuner_time_filter_close(JNIEnv *env, jobject filter) return (int)r; } -static jobject android_media_tv_Tuner_open_descrambler(JNIEnv *env, jobject thiz, jint) { +static jobject android_media_tv_Tuner_open_descrambler(JNIEnv *env, jobject thiz, jlong) { sp<JTuner> tuner = getTuner(env, thiz); return tuner->openDescrambler(); } @@ -4690,12 +4690,12 @@ static jobject android_media_tv_Tuner_get_demux_caps(JNIEnv* env, jobject thiz) return tuner->getDemuxCaps(); } -static jobject android_media_tv_Tuner_get_demux_info(JNIEnv* env, jobject thiz, jint handle) { +static jobject android_media_tv_Tuner_get_demux_info(JNIEnv *env, jobject thiz, jlong handle) { sp<JTuner> tuner = getTuner(env, thiz); return tuner->getDemuxInfo(handle); } -static jint android_media_tv_Tuner_open_demux(JNIEnv* env, jobject thiz, jint handle) { +static jint android_media_tv_Tuner_open_demux(JNIEnv *env, jobject thiz, jlong handle) { sp<JTuner> tuner = getTuner(env, thiz); return (jint)tuner->openDemux(handle); } @@ -4706,7 +4706,7 @@ static jint android_media_tv_Tuner_close_tuner(JNIEnv* env, jobject thiz) { return (jint)tuner->close(); } -static jint android_media_tv_Tuner_close_demux(JNIEnv* env, jobject thiz, jint /* handle */) { +static jint android_media_tv_Tuner_close_demux(JNIEnv *env, jobject thiz, jlong /* handle */) { sp<JTuner> tuner = getTuner(env, thiz); return tuner->closeDemux(); } @@ -4766,7 +4766,7 @@ static jobjectArray android_media_tv_Tuner_get_frontend_status_readiness(JNIEnv return tuner->getFrontendStatusReadiness(types); } -static jint android_media_tv_Tuner_close_frontend(JNIEnv* env, jobject thiz, jint /* handle */) { +static jint android_media_tv_Tuner_close_frontend(JNIEnv *env, jobject thiz, jlong /* handle */) { sp<JTuner> tuner = getTuner(env, thiz); return tuner->closeFrontend(); } @@ -5035,7 +5035,7 @@ static const JNINativeMethod gTunerMethods[] = { { "nativeGetTunerVersion", "()I", (void *)android_media_tv_Tuner_native_get_tuner_version }, { "nativeGetFrontendIds", "()Ljava/util/List;", (void *)android_media_tv_Tuner_get_frontend_ids }, - { "nativeOpenFrontendByHandle", "(I)Landroid/media/tv/tuner/Tuner$Frontend;", + { "nativeOpenFrontendByHandle", "(J)Landroid/media/tv/tuner/Tuner$Frontend;", (void *)android_media_tv_Tuner_open_frontend_by_handle }, { "nativeShareFrontend", "(I)I", (void *)android_media_tv_Tuner_share_frontend }, @@ -5074,11 +5074,11 @@ static const JNINativeMethod gTunerMethods[] = { (void *)android_media_tv_Tuner_open_filter }, { "nativeOpenTimeFilter", "()Landroid/media/tv/tuner/filter/TimeFilter;", (void *)android_media_tv_Tuner_open_time_filter }, - { "nativeOpenLnbByHandle", "(I)Landroid/media/tv/tuner/Lnb;", + { "nativeOpenLnbByHandle", "(J)Landroid/media/tv/tuner/Lnb;", (void *)android_media_tv_Tuner_open_lnb_by_handle }, { "nativeOpenLnbByName", "(Ljava/lang/String;)Landroid/media/tv/tuner/Lnb;", (void *)android_media_tv_Tuner_open_lnb_by_name }, - { "nativeOpenDescramblerByHandle", "(I)Landroid/media/tv/tuner/Descrambler;", + { "nativeOpenDescramblerByHandle", "(J)Landroid/media/tv/tuner/Descrambler;", (void *)android_media_tv_Tuner_open_descrambler }, { "nativeOpenDvrRecorder", "(J)Landroid/media/tv/tuner/dvr/DvrRecorder;", (void *)android_media_tv_Tuner_open_dvr_recorder }, @@ -5086,12 +5086,12 @@ static const JNINativeMethod gTunerMethods[] = { (void *)android_media_tv_Tuner_open_dvr_playback }, { "nativeGetDemuxCapabilities", "()Landroid/media/tv/tuner/DemuxCapabilities;", (void *)android_media_tv_Tuner_get_demux_caps }, - { "nativeGetDemuxInfo", "(I)Landroid/media/tv/tuner/DemuxInfo;", + { "nativeGetDemuxInfo", "(J)Landroid/media/tv/tuner/DemuxInfo;", (void *)android_media_tv_Tuner_get_demux_info }, - { "nativeOpenDemuxByhandle", "(I)I", (void *)android_media_tv_Tuner_open_demux }, + { "nativeOpenDemuxByhandle", "(J)I", (void *)android_media_tv_Tuner_open_demux }, { "nativeClose", "()I", (void *)android_media_tv_Tuner_close_tuner }, - { "nativeCloseFrontend", "(I)I", (void *)android_media_tv_Tuner_close_frontend }, - { "nativeCloseDemux", "(I)I", (void *)android_media_tv_Tuner_close_demux }, + { "nativeCloseFrontend", "(J)I", (void *)android_media_tv_Tuner_close_frontend }, + { "nativeCloseDemux", "(J)I", (void *)android_media_tv_Tuner_close_demux }, { "nativeOpenSharedFilter", "(Ljava/lang/String;)Landroid/media/tv/tuner/filter/SharedFilter;", (void *)android_media_tv_Tuner_open_shared_filter}, diff --git a/media/jni/android_media_tv_Tuner.h b/media/jni/android_media_tv_Tuner.h index 3de3ab91326c..7af2cd7bd5b7 100644 --- a/media/jni/android_media_tv_Tuner.h +++ b/media/jni/android_media_tv_Tuner.h @@ -206,7 +206,7 @@ struct JTuner : public RefBase { int disconnectCiCam(); int unlinkCiCam(jint id); jobject getFrontendIds(); - jobject openFrontendByHandle(int feHandle); + jobject openFrontendByHandle(jlong feHandle); int shareFrontend(int feId); int unshareFrontend(); void registerFeCbListener(JTuner* jtuner); @@ -221,16 +221,16 @@ struct JTuner : public RefBase { int setLnb(sp<LnbClient> lnbClient); bool isLnaSupported(); int setLna(bool enable); - jobject openLnbByHandle(int handle); + jobject openLnbByHandle(jlong handle); jobject openLnbByName(jstring name); jobject openFilter(DemuxFilterType type, int bufferSize); jobject openTimeFilter(); jobject openDescrambler(); jobject openDvr(DvrType type, jlong bufferSize); jobject getDemuxCaps(); - jobject getDemuxInfo(int handle); + jobject getDemuxInfo(jlong handle); jobject getFrontendStatus(jintArray types); - Result openDemux(int handle); + Result openDemux(jlong handle); jint close(); jint closeFrontend(); jint closeDemux(); diff --git a/media/jni/tuner/TunerClient.cpp b/media/jni/tuner/TunerClient.cpp index ea623d97a394..0097710f5c64 100644 --- a/media/jni/tuner/TunerClient.cpp +++ b/media/jni/tuner/TunerClient.cpp @@ -56,7 +56,7 @@ vector<int32_t> TunerClient::getFrontendIds() { return ids; } -sp<FrontendClient> TunerClient::openFrontend(int32_t frontendHandle) { +sp<FrontendClient> TunerClient::openFrontend(int64_t frontendHandle) { if (mTunerService != nullptr) { shared_ptr<ITunerFrontend> tunerFrontend; Status s = mTunerService->openFrontend(frontendHandle, &tunerFrontend); @@ -94,7 +94,7 @@ shared_ptr<FrontendInfo> TunerClient::getFrontendInfo(int32_t id) { return nullptr; } -sp<DemuxClient> TunerClient::openDemux(int32_t demuxHandle) { +sp<DemuxClient> TunerClient::openDemux(int64_t demuxHandle) { if (mTunerService != nullptr) { shared_ptr<ITunerDemux> tunerDemux; Status s = mTunerService->openDemux(demuxHandle, &tunerDemux); @@ -107,7 +107,7 @@ sp<DemuxClient> TunerClient::openDemux(int32_t demuxHandle) { return nullptr; } -shared_ptr<DemuxInfo> TunerClient::getDemuxInfo(int32_t demuxHandle) { +shared_ptr<DemuxInfo> TunerClient::getDemuxInfo(int64_t demuxHandle) { if (mTunerService != nullptr) { DemuxInfo aidlDemuxInfo; Status s = mTunerService->getDemuxInfo(demuxHandle, &aidlDemuxInfo); @@ -141,7 +141,7 @@ shared_ptr<DemuxCapabilities> TunerClient::getDemuxCaps() { return nullptr; } -sp<DescramblerClient> TunerClient::openDescrambler(int32_t descramblerHandle) { +sp<DescramblerClient> TunerClient::openDescrambler(int64_t descramblerHandle) { if (mTunerService != nullptr) { shared_ptr<ITunerDescrambler> tunerDescrambler; Status s = mTunerService->openDescrambler(descramblerHandle, &tunerDescrambler); @@ -154,7 +154,7 @@ sp<DescramblerClient> TunerClient::openDescrambler(int32_t descramblerHandle) { return nullptr; } -sp<LnbClient> TunerClient::openLnb(int32_t lnbHandle) { +sp<LnbClient> TunerClient::openLnb(int64_t lnbHandle) { if (mTunerService != nullptr) { shared_ptr<ITunerLnb> tunerLnb; Status s = mTunerService->openLnb(lnbHandle, &tunerLnb); diff --git a/media/jni/tuner/TunerClient.h b/media/jni/tuner/TunerClient.h index 6ab120b56d97..a348586454b8 100644 --- a/media/jni/tuner/TunerClient.h +++ b/media/jni/tuner/TunerClient.h @@ -65,7 +65,7 @@ public: * @param frontendHandle the handle of the frontend granted by TRM. * @return a newly created FrontendClient interface. */ - sp<FrontendClient> openFrontend(int32_t frontendHandle); + sp<FrontendClient> openFrontend(int64_t frontendHandle); /** * Retrieve the granted frontend's information. @@ -81,7 +81,7 @@ public: * @param demuxHandle the handle of the demux granted by TRM. * @return a newly created DemuxClient interface. */ - sp<DemuxClient> openDemux(int32_t demuxHandle); + sp<DemuxClient> openDemux(int64_t demuxHandle); /** * Retrieve the DemuxInfo of a specific demux @@ -89,7 +89,7 @@ public: * @param demuxHandle the handle of the demux to query demux info for * @return the demux info */ - shared_ptr<DemuxInfo> getDemuxInfo(int32_t demuxHandle); + shared_ptr<DemuxInfo> getDemuxInfo(int64_t demuxHandle); /** * Retrieve a list of demux info @@ -111,7 +111,7 @@ public: * @param descramblerHandle the handle of the descrambler granted by TRM. * @return a newly created DescramblerClient interface. */ - sp<DescramblerClient> openDescrambler(int32_t descramblerHandle); + sp<DescramblerClient> openDescrambler(int64_t descramblerHandle); /** * Open a new interface of LnbClient given an lnbHandle. @@ -119,7 +119,7 @@ public: * @param lnbHandle the handle of the LNB granted by TRM. * @return a newly created LnbClient interface. */ - sp<LnbClient> openLnb(int32_t lnbHandle); + sp<LnbClient> openLnb(int64_t lnbHandle); /** * Open a new interface of LnbClient given a LNB name. diff --git a/services/core/java/com/android/server/tv/tunerresourcemanager/ClientProfile.java b/services/core/java/com/android/server/tv/tunerresourcemanager/ClientProfile.java index 8e375275d080..096231910e6e 100644 --- a/services/core/java/com/android/server/tv/tunerresourcemanager/ClientProfile.java +++ b/services/core/java/com/android/server/tv/tunerresourcemanager/ClientProfile.java @@ -67,19 +67,19 @@ public final class ClientProfile { /** * The handle of the primary frontend resource */ - private int mPrimaryUsingFrontendHandle = TunerResourceManager.INVALID_RESOURCE_HANDLE; + private long mPrimaryUsingFrontendHandle = TunerResourceManager.INVALID_RESOURCE_HANDLE; /** * List of the frontend handles that are used by the current client. */ - private Set<Integer> mUsingFrontendHandles = new HashSet<>(); + private Set<Long> mUsingFrontendHandles = new HashSet<>(); /** * List of the client ids that share frontend with the current client. */ private Set<Integer> mShareFeClientIds = new HashSet<>(); - private Set<Integer> mUsingDemuxHandles = new HashSet<>(); + private Set<Long> mUsingDemuxHandles = new HashSet<>(); /** * Client id sharee that has shared frontend with the current client. @@ -89,7 +89,7 @@ public final class ClientProfile { /** * List of the Lnb handles that are used by the current client. */ - private Set<Integer> mUsingLnbHandles = new HashSet<>(); + private Set<Long> mUsingLnbHandles = new HashSet<>(); /** * List of the Cas system ids that are used by the current client. @@ -184,7 +184,7 @@ public final class ClientProfile { * * @param frontendHandle being used. */ - public void useFrontend(int frontendHandle) { + public void useFrontend(long frontendHandle) { mUsingFrontendHandles.add(frontendHandle); } @@ -193,14 +193,14 @@ public final class ClientProfile { * * @param frontendHandle being used. */ - public void setPrimaryFrontend(int frontendHandle) { + public void setPrimaryFrontend(long frontendHandle) { mPrimaryUsingFrontendHandle = frontendHandle; } /** * Get the primary frontend used by the client */ - public int getPrimaryFrontend() { + public long getPrimaryFrontend() { return mPrimaryUsingFrontendHandle; } @@ -222,7 +222,7 @@ public final class ClientProfile { mShareFeClientIds.remove(clientId); } - public Set<Integer> getInUseFrontendHandles() { + public Set<Long> getInUseFrontendHandles() { return mUsingFrontendHandles; } @@ -253,14 +253,14 @@ public final class ClientProfile { * * @param demuxHandle the demux being used. */ - public void useDemux(int demuxHandle) { + public void useDemux(long demuxHandle) { mUsingDemuxHandles.add(demuxHandle); } /** * Get the set of demux handles in use. */ - public Set<Integer> getInUseDemuxHandles() { + public Set<Long> getInUseDemuxHandles() { return mUsingDemuxHandles; } @@ -269,7 +269,7 @@ public final class ClientProfile { * * @param demuxHandle the demux handl being released. */ - public void releaseDemux(int demuxHandle) { + public void releaseDemux(long demuxHandle) { mUsingDemuxHandles.remove(demuxHandle); } @@ -278,11 +278,11 @@ public final class ClientProfile { * * @param lnbHandle being used. */ - public void useLnb(int lnbHandle) { + public void useLnb(long lnbHandle) { mUsingLnbHandles.add(lnbHandle); } - public Set<Integer> getInUseLnbHandles() { + public Set<Long> getInUseLnbHandles() { return mUsingLnbHandles; } @@ -291,7 +291,7 @@ public final class ClientProfile { * * @param lnbHandle being released. */ - public void releaseLnb(int lnbHandle) { + public void releaseLnb(long lnbHandle) { mUsingLnbHandles.remove(lnbHandle); } diff --git a/services/core/java/com/android/server/tv/tunerresourcemanager/DemuxResource.java b/services/core/java/com/android/server/tv/tunerresourcemanager/DemuxResource.java index df735659c0fe..14bc216d03ef 100644 --- a/services/core/java/com/android/server/tv/tunerresourcemanager/DemuxResource.java +++ b/services/core/java/com/android/server/tv/tunerresourcemanager/DemuxResource.java @@ -69,7 +69,7 @@ public final class DemuxResource extends TunerResourceBasic { public static class Builder extends TunerResourceBasic.Builder { private int mFilterTypes; - Builder(int handle) { + Builder(long handle) { super(handle); } diff --git a/services/core/java/com/android/server/tv/tunerresourcemanager/FrontendResource.java b/services/core/java/com/android/server/tv/tunerresourcemanager/FrontendResource.java index 7ef75e3120c5..953d97499c41 100644 --- a/services/core/java/com/android/server/tv/tunerresourcemanager/FrontendResource.java +++ b/services/core/java/com/android/server/tv/tunerresourcemanager/FrontendResource.java @@ -42,7 +42,7 @@ public final class FrontendResource extends TunerResourceBasic { /** * An array to save all the FE handles under the same exclisive group. */ - private Set<Integer> mExclusiveGroupMemberHandles = new HashSet<>(); + private Set<Long> mExclusiveGroupMemberHandles = new HashSet<>(); private FrontendResource(Builder builder) { super(builder); @@ -58,7 +58,7 @@ public final class FrontendResource extends TunerResourceBasic { return mExclusiveGroupId; } - public Set<Integer> getExclusiveGroupMemberFeHandles() { + public Set<Long> getExclusiveGroupMemberFeHandles() { return mExclusiveGroupMemberHandles; } @@ -67,7 +67,7 @@ public final class FrontendResource extends TunerResourceBasic { * * @param handle the handle to be added. */ - public void addExclusiveGroupMemberFeHandle(int handle) { + public void addExclusiveGroupMemberFeHandle(long handle) { mExclusiveGroupMemberHandles.add(handle); } @@ -76,7 +76,7 @@ public final class FrontendResource extends TunerResourceBasic { * * @param handles the handle collection to be added. */ - public void addExclusiveGroupMemberFeHandles(Collection<Integer> handles) { + public void addExclusiveGroupMemberFeHandles(Collection<Long> handles) { mExclusiveGroupMemberHandles.addAll(handles); } @@ -85,7 +85,7 @@ public final class FrontendResource extends TunerResourceBasic { * * @param id the id to be removed. */ - public void removeExclusiveGroupMemberFeId(int handle) { + public void removeExclusiveGroupMemberFeId(long handle) { mExclusiveGroupMemberHandles.remove(handle); } @@ -104,7 +104,7 @@ public final class FrontendResource extends TunerResourceBasic { @Type private int mType; private int mExclusiveGroupId; - Builder(int handle) { + Builder(long handle) { super(handle); } diff --git a/services/core/java/com/android/server/tv/tunerresourcemanager/LnbResource.java b/services/core/java/com/android/server/tv/tunerresourcemanager/LnbResource.java index 41cacea5f09e..ab283713b15a 100644 --- a/services/core/java/com/android/server/tv/tunerresourcemanager/LnbResource.java +++ b/services/core/java/com/android/server/tv/tunerresourcemanager/LnbResource.java @@ -37,8 +37,7 @@ public final class LnbResource extends TunerResourceBasic { * Builder class for {@link LnbResource}. */ public static class Builder extends TunerResourceBasic.Builder { - - Builder(int handle) { + Builder(long handle) { super(handle); } diff --git a/services/core/java/com/android/server/tv/tunerresourcemanager/TunerResourceBasic.java b/services/core/java/com/android/server/tv/tunerresourcemanager/TunerResourceBasic.java index 07853fc69055..d2ff8fa7c2e8 100644 --- a/services/core/java/com/android/server/tv/tunerresourcemanager/TunerResourceBasic.java +++ b/services/core/java/com/android/server/tv/tunerresourcemanager/TunerResourceBasic.java @@ -28,7 +28,7 @@ public class TunerResourceBasic { * Handle of the current resource. Should not be changed and should be aligned with the driver * level implementation. */ - final int mHandle; + final long mHandle; /** * If the current resource is in use. @@ -44,7 +44,7 @@ public class TunerResourceBasic { this.mHandle = builder.mHandle; } - public int getHandle() { + public long getHandle() { return mHandle; } @@ -78,9 +78,9 @@ public class TunerResourceBasic { * Builder class for {@link TunerResourceBasic}. */ public static class Builder { - private final int mHandle; + private final long mHandle; - Builder(int handle) { + Builder(long handle) { this.mHandle = handle; } diff --git a/services/core/java/com/android/server/tv/tunerresourcemanager/TunerResourceManagerService.java b/services/core/java/com/android/server/tv/tunerresourcemanager/TunerResourceManagerService.java index 0afb049d31c7..45a40edfaf41 100644 --- a/services/core/java/com/android/server/tv/tunerresourcemanager/TunerResourceManagerService.java +++ b/services/core/java/com/android/server/tv/tunerresourcemanager/TunerResourceManagerService.java @@ -78,12 +78,18 @@ public class TunerResourceManagerService extends SystemService implements IBinde private static final int INVALID_FE_COUNT = -1; + private static final int RESOURCE_ID_SHIFT = 24; + private static final int RESOURCE_TYPE_SHIFT = 56; + private static final long RESOURCE_COUNT_MASK = 0xffffff; + private static final long RESOURCE_ID_MASK = 0xffffffff; + private static final long RESOURCE_TYPE_MASK = 0xff; + // Map of the registered client profiles private Map<Integer, ClientProfile> mClientProfiles = new HashMap<>(); private int mNextUnusedClientId = 0; // Map of the current available frontend resources - private Map<Integer, FrontendResource> mFrontendResources = new HashMap<>(); + private Map<Long, FrontendResource> mFrontendResources = new HashMap<>(); // SparseIntArray of the max usable number for each frontend resource type private SparseIntArray mFrontendMaxUsableNums = new SparseIntArray(); // SparseIntArray of the currently used number for each frontend resource type @@ -93,15 +99,15 @@ public class TunerResourceManagerService extends SystemService implements IBinde // Backups for the frontend resource maps for enabling testing with custom resource maps // such as TunerTest.testHasUnusedFrontend1() - private Map<Integer, FrontendResource> mFrontendResourcesBackup = new HashMap<>(); + private Map<Long, FrontendResource> mFrontendResourcesBackup = new HashMap<>(); private SparseIntArray mFrontendMaxUsableNumsBackup = new SparseIntArray(); private SparseIntArray mFrontendUsedNumsBackup = new SparseIntArray(); private SparseIntArray mFrontendExistingNumsBackup = new SparseIntArray(); // Map of the current available demux resources - private Map<Integer, DemuxResource> mDemuxResources = new HashMap<>(); + private Map<Long, DemuxResource> mDemuxResources = new HashMap<>(); // Map of the current available lnb resources - private Map<Integer, LnbResource> mLnbResources = new HashMap<>(); + private Map<Long, LnbResource> mLnbResources = new HashMap<>(); // Map of the current available Cas resources private Map<Integer, CasResource> mCasResources = new HashMap<>(); // Map of the current available CiCam resources @@ -272,7 +278,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde } @Override - public void setLnbInfoList(int[] lnbHandles) throws RemoteException { + public void setLnbInfoList(long[] lnbHandles) throws RemoteException { enforceTrmAccessPermission("setLnbInfoList"); if (lnbHandles == null) { throw new RemoteException("Lnb handle list can't be null"); @@ -283,8 +289,8 @@ public class TunerResourceManagerService extends SystemService implements IBinde } @Override - public boolean requestFrontend(@NonNull TunerFrontendRequest request, - @NonNull int[] frontendHandle) { + public boolean requestFrontend( + @NonNull TunerFrontendRequest request, @NonNull long[] frontendHandle) { enforceTunerAccessPermission("requestFrontend"); enforceTrmAccessPermission("requestFrontend"); if (frontendHandle == null) { @@ -369,8 +375,8 @@ public class TunerResourceManagerService extends SystemService implements IBinde } @Override - public boolean requestDemux(@NonNull TunerDemuxRequest request, - @NonNull int[] demuxHandle) throws RemoteException { + public boolean requestDemux(@NonNull TunerDemuxRequest request, @NonNull long[] demuxHandle) + throws RemoteException { enforceTunerAccessPermission("requestDemux"); enforceTrmAccessPermission("requestDemux"); if (demuxHandle == null) { @@ -387,7 +393,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde @Override public boolean requestDescrambler(@NonNull TunerDescramblerRequest request, - @NonNull int[] descramblerHandle) throws RemoteException { + @NonNull long[] descramblerHandle) throws RemoteException { enforceDescramblerAccessPermission("requestDescrambler"); enforceTrmAccessPermission("requestDescrambler"); if (descramblerHandle == null) { @@ -404,7 +410,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde @Override public boolean requestCasSession(@NonNull CasSessionRequest request, - @NonNull int[] casSessionHandle) throws RemoteException { + @NonNull long[] casSessionHandle) throws RemoteException { enforceTrmAccessPermission("requestCasSession"); if (casSessionHandle == null) { throw new RemoteException("casSessionHandle can't be null"); @@ -419,8 +425,8 @@ public class TunerResourceManagerService extends SystemService implements IBinde } @Override - public boolean requestCiCam(@NonNull TunerCiCamRequest request, - @NonNull int[] ciCamHandle) throws RemoteException { + public boolean requestCiCam(@NonNull TunerCiCamRequest request, @NonNull long[] ciCamHandle) + throws RemoteException { enforceTrmAccessPermission("requestCiCam"); if (ciCamHandle == null) { throw new RemoteException("ciCamHandle can't be null"); @@ -435,7 +441,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde } @Override - public boolean requestLnb(@NonNull TunerLnbRequest request, @NonNull int[] lnbHandle) + public boolean requestLnb(@NonNull TunerLnbRequest request, @NonNull long[] lnbHandle) throws RemoteException { enforceTunerAccessPermission("requestLnb"); enforceTrmAccessPermission("requestLnb"); @@ -452,7 +458,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde } @Override - public void releaseFrontend(int frontendHandle, int clientId) throws RemoteException { + public void releaseFrontend(long frontendHandle, int clientId) throws RemoteException { enforceTunerAccessPermission("releaseFrontend"); enforceTrmAccessPermission("releaseFrontend"); if (!validateResourceHandle(TunerResourceManager.TUNER_RESOURCE_TYPE_FRONTEND, @@ -481,7 +487,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde } @Override - public void releaseDemux(int demuxHandle, int clientId) throws RemoteException { + public void releaseDemux(long demuxHandle, int clientId) throws RemoteException { enforceTunerAccessPermission("releaseDemux"); enforceTrmAccessPermission("releaseDemux"); if (DEBUG) { @@ -512,7 +518,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde } @Override - public void releaseDescrambler(int descramblerHandle, int clientId) { + public void releaseDescrambler(long descramblerHandle, int clientId) { enforceTunerAccessPermission("releaseDescrambler"); enforceTrmAccessPermission("releaseDescrambler"); if (DEBUG) { @@ -521,7 +527,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde } @Override - public void releaseCasSession(int casSessionHandle, int clientId) throws RemoteException { + public void releaseCasSession(long casSessionHandle, int clientId) throws RemoteException { enforceTrmAccessPermission("releaseCasSession"); if (!validateResourceHandle( TunerResourceManager.TUNER_RESOURCE_TYPE_CAS_SESSION, casSessionHandle)) { @@ -545,7 +551,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde } @Override - public void releaseCiCam(int ciCamHandle, int clientId) throws RemoteException { + public void releaseCiCam(long ciCamHandle, int clientId) throws RemoteException { enforceTrmAccessPermission("releaseCiCam"); if (!validateResourceHandle( TunerResourceManager.TUNER_RESOURCE_TYPE_FRONTEND_CICAM, ciCamHandle)) { @@ -573,7 +579,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde } @Override - public void releaseLnb(int lnbHandle, int clientId) throws RemoteException { + public void releaseLnb(long lnbHandle, int clientId) throws RemoteException { enforceTunerAccessPermission("releaseLnb"); enforceTrmAccessPermission("releaseLnb"); if (!validateResourceHandle(TunerResourceManager.TUNER_RESOURCE_TYPE_LNB, lnbHandle)) { @@ -871,7 +877,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde // A set to record the frontends pending on updating. Ids will be removed // from this set once its updating finished. Any frontend left in this set when all // the updates are done will be removed from mFrontendResources. - Set<Integer> updatingFrontendHandles = new HashSet<>(getFrontendResources().keySet()); + Set<Long> updatingFrontendHandles = new HashSet<>(getFrontendResources().keySet()); // Update frontendResources map and other mappings accordingly for (int i = 0; i < infos.length; i++) { @@ -890,7 +896,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde } } - for (int removingHandle : updatingFrontendHandles) { + for (long removingHandle : updatingFrontendHandles) { // update the exclusive group id member list removeFrontendResource(removingHandle); } @@ -908,7 +914,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde // A set to record the demuxes pending on updating. Ids will be removed // from this set once its updating finished. Any demux left in this set when all // the updates are done will be removed from mDemuxResources. - Set<Integer> updatingDemuxHandles = new HashSet<>(getDemuxResources().keySet()); + Set<Long> updatingDemuxHandles = new HashSet<>(getDemuxResources().keySet()); // Update demuxResources map and other mappings accordingly for (int i = 0; i < infos.length; i++) { @@ -926,13 +932,13 @@ public class TunerResourceManagerService extends SystemService implements IBinde } } - for (int removingHandle : updatingDemuxHandles) { + for (long removingHandle : updatingDemuxHandles) { // update the exclusive group id member list removeDemuxResource(removingHandle); } } @VisibleForTesting - protected void setLnbInfoListInternal(int[] lnbHandles) { + protected void setLnbInfoListInternal(long[] lnbHandles) { if (DEBUG) { for (int i = 0; i < lnbHandles.length; i++) { Slog.d(TAG, "updateLnbInfo(lnbHanle=" + lnbHandles[i] + ")"); @@ -942,7 +948,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde // A set to record the Lnbs pending on updating. Handles will be removed // from this set once its updating finished. Any lnb left in this set when all // the updates are done will be removed from mLnbResources. - Set<Integer> updatingLnbHandles = new HashSet<>(getLnbResources().keySet()); + Set<Long> updatingLnbHandles = new HashSet<>(getLnbResources().keySet()); // Update lnbResources map and other mappings accordingly for (int i = 0; i < lnbHandles.length; i++) { @@ -958,7 +964,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde } } - for (int removingHandle : updatingLnbHandles) { + for (long removingHandle : updatingLnbHandles) { removeLnbResource(removingHandle); } } @@ -1003,7 +1009,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde } @VisibleForTesting - protected boolean requestFrontendInternal(TunerFrontendRequest request, int[] frontendHandle) { + protected boolean requestFrontendInternal(TunerFrontendRequest request, long[] frontendHandle) { if (DEBUG) { Slog.d(TAG, "requestFrontend(request=" + request + ")"); } @@ -1015,8 +1021,8 @@ public class TunerResourceManagerService extends SystemService implements IBinde return false; } clientPriorityUpdateOnRequest(requestClient); - int grantingFrontendHandle = TunerResourceManager.INVALID_RESOURCE_HANDLE; - int inUseLowestPriorityFrHandle = TunerResourceManager.INVALID_RESOURCE_HANDLE; + long grantingFrontendHandle = TunerResourceManager.INVALID_RESOURCE_HANDLE; + long inUseLowestPriorityFrHandle = TunerResourceManager.INVALID_RESOURCE_HANDLE; // Priority max value is 1000 int currentLowestPriority = MAX_CLIENT_PRIORITY + 1; boolean isRequestFromSameProcess = false; @@ -1050,7 +1056,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde // we need to check the max used num if the target frontend type is not // currently in primary use (and simply blocked due to exclusive group) ClientProfile targetOwnerProfile = getClientProfile(fr.getOwnerClientId()); - int primaryFeId = targetOwnerProfile.getPrimaryFrontend(); + long primaryFeId = targetOwnerProfile.getPrimaryFrontend(); FrontendResource primaryFe = getFrontendResource(primaryFeId); if (fr.getType() != primaryFe.getType() && isFrontendMaxNumUseReached(fr.getType())) { @@ -1102,7 +1108,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde getClientProfile(shareeFeClientId).stopSharingFrontend(selfClientId); getClientProfile(selfClientId).releaseFrontend(); } - for (int feId : getClientProfile(targetClientId).getInUseFrontendHandles()) { + for (long feId : getClientProfile(targetClientId).getInUseFrontendHandles()) { getClientProfile(selfClientId).useFrontend(feId); } getClientProfile(selfClientId).setShareeFeClientId(targetClientId); @@ -1117,14 +1123,14 @@ public class TunerResourceManagerService extends SystemService implements IBinde currentOwnerProfile.stopSharingFrontend(newOwnerId); newOwnerProfile.setShareeFeClientId(ClientProfile.INVALID_RESOURCE_ID); currentOwnerProfile.setShareeFeClientId(newOwnerId); - for (int inUseHandle : newOwnerProfile.getInUseFrontendHandles()) { + for (long inUseHandle : newOwnerProfile.getInUseFrontendHandles()) { getFrontendResource(inUseHandle).setOwner(newOwnerId); } // change the primary frontend newOwnerProfile.setPrimaryFrontend(currentOwnerProfile.getPrimaryFrontend()); currentOwnerProfile.setPrimaryFrontend(TunerResourceManager.INVALID_RESOURCE_HANDLE); // double check there is no other resources tied to the previous owner - for (int inUseHandle : currentOwnerProfile.getInUseFrontendHandles()) { + for (long inUseHandle : currentOwnerProfile.getInUseFrontendHandles()) { int ownerId = getFrontendResource(inUseHandle).getOwnerClientId(); if (ownerId != newOwnerId) { Slog.e(TAG, "something is wrong in transferFeOwner:" + inUseHandle @@ -1156,8 +1162,8 @@ public class TunerResourceManagerService extends SystemService implements IBinde ClientProfile currentOwnerProfile = getClientProfile(currentOwnerId); ClientProfile newOwnerProfile = getClientProfile(newOwnerId); - Set<Integer> inUseLnbHandles = new HashSet<>(); - for (Integer lnbHandle : currentOwnerProfile.getInUseLnbHandles()) { + Set<Long> inUseLnbHandles = new HashSet<>(); + for (Long lnbHandle : currentOwnerProfile.getInUseLnbHandles()) { // link lnb handle to the new profile newOwnerProfile.useLnb(lnbHandle); @@ -1169,7 +1175,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde } // unlink lnb handles from the original owner - for (Integer lnbHandle : inUseLnbHandles) { + for (Long lnbHandle : inUseLnbHandles) { currentOwnerProfile.releaseLnb(lnbHandle); } @@ -1192,7 +1198,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde } @VisibleForTesting - protected boolean requestLnbInternal(TunerLnbRequest request, int[] lnbHandle) { + protected boolean requestLnbInternal(TunerLnbRequest request, long[] lnbHandle) { if (DEBUG) { Slog.d(TAG, "requestLnb(request=" + request + ")"); } @@ -1200,8 +1206,8 @@ public class TunerResourceManagerService extends SystemService implements IBinde lnbHandle[0] = TunerResourceManager.INVALID_RESOURCE_HANDLE; ClientProfile requestClient = getClientProfile(request.clientId); clientPriorityUpdateOnRequest(requestClient); - int grantingLnbHandle = TunerResourceManager.INVALID_RESOURCE_HANDLE; - int inUseLowestPriorityLnbHandle = TunerResourceManager.INVALID_RESOURCE_HANDLE; + long grantingLnbHandle = TunerResourceManager.INVALID_RESOURCE_HANDLE; + long inUseLowestPriorityLnbHandle = TunerResourceManager.INVALID_RESOURCE_HANDLE; // Priority max value is 1000 int currentLowestPriority = MAX_CLIENT_PRIORITY + 1; boolean isRequestFromSameProcess = false; @@ -1248,7 +1254,8 @@ public class TunerResourceManagerService extends SystemService implements IBinde } @VisibleForTesting - protected boolean requestCasSessionInternal(CasSessionRequest request, int[] casSessionHandle) { + protected boolean requestCasSessionInternal( + CasSessionRequest request, long[] casSessionHandle) { if (DEBUG) { Slog.d(TAG, "requestCasSession(request=" + request + ")"); } @@ -1301,7 +1308,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde } @VisibleForTesting - protected boolean requestCiCamInternal(TunerCiCamRequest request, int[] ciCamHandle) { + protected boolean requestCiCamInternal(TunerCiCamRequest request, long[] ciCamHandle) { if (DEBUG) { Slog.d(TAG, "requestCiCamInternal(TunerCiCamRequest=" + request + ")"); } @@ -1324,6 +1331,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde ciCamHandle[0] = generateResourceHandle( TunerResourceManager.TUNER_RESOURCE_TYPE_FRONTEND_CICAM, ciCam.getCiCamId()); updateCiCamClientMappingOnNewGrant(request.ciCamId, request.clientId); + Slog.e(TAG, "requestCiCamInternal(ciCamHandle=" + ciCamHandle[0] + ")"); return true; } for (int ownerId : ciCam.getOwnerClientIds()) { @@ -1349,6 +1357,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde ciCamHandle[0] = generateResourceHandle( TunerResourceManager.TUNER_RESOURCE_TYPE_FRONTEND_CICAM, ciCam.getCiCamId()); updateCiCamClientMappingOnNewGrant(request.ciCamId, request.clientId); + Slog.e(TAG, "requestCiCamInternal(ciCamHandle=" + ciCamHandle[0] + ")"); return true; } return false; @@ -1432,7 +1441,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde } @VisibleForTesting - protected boolean requestDemuxInternal(TunerDemuxRequest request, int[] demuxHandle) { + protected boolean requestDemuxInternal(TunerDemuxRequest request, long[] demuxHandle) { if (DEBUG) { Slog.d(TAG, "requestDemux(request=" + request + ")"); } @@ -1455,8 +1464,8 @@ public class TunerResourceManagerService extends SystemService implements IBinde } clientPriorityUpdateOnRequest(requestClient); - int grantingDemuxHandle = TunerResourceManager.INVALID_RESOURCE_HANDLE; - int inUseLowestPriorityDrHandle = TunerResourceManager.INVALID_RESOURCE_HANDLE; + long grantingDemuxHandle = TunerResourceManager.INVALID_RESOURCE_HANDLE; + long inUseLowestPriorityDrHandle = TunerResourceManager.INVALID_RESOURCE_HANDLE; // Priority max value is 1000 int currentLowestPriority = MAX_CLIENT_PRIORITY + 1; boolean isRequestFromSameProcess = false; @@ -1550,7 +1559,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde @VisibleForTesting protected boolean requestDescramblerInternal( - TunerDescramblerRequest request, int[] descramblerHandle) { + TunerDescramblerRequest request, long[] descramblerHandle) { if (DEBUG) { Slog.d(TAG, "requestDescrambler(request=" + request + ")"); } @@ -1869,20 +1878,20 @@ public class TunerResourceManagerService extends SystemService implements IBinde return false; } - private void updateFrontendClientMappingOnNewGrant(int grantingHandle, int ownerClientId) { + private void updateFrontendClientMappingOnNewGrant(long grantingHandle, int ownerClientId) { FrontendResource grantingFrontend = getFrontendResource(grantingHandle); ClientProfile ownerProfile = getClientProfile(ownerClientId); grantingFrontend.setOwner(ownerClientId); increFrontendNum(mFrontendUsedNums, grantingFrontend.getType()); ownerProfile.useFrontend(grantingHandle); - for (int exclusiveGroupMember : grantingFrontend.getExclusiveGroupMemberFeHandles()) { + for (long exclusiveGroupMember : grantingFrontend.getExclusiveGroupMemberFeHandles()) { getFrontendResource(exclusiveGroupMember).setOwner(ownerClientId); ownerProfile.useFrontend(exclusiveGroupMember); } ownerProfile.setPrimaryFrontend(grantingHandle); } - private void updateDemuxClientMappingOnNewGrant(int grantingHandle, int ownerClientId) { + private void updateDemuxClientMappingOnNewGrant(long grantingHandle, int ownerClientId) { DemuxResource grantingDemux = getDemuxResource(grantingHandle); if (grantingDemux != null) { ClientProfile ownerProfile = getClientProfile(ownerClientId); @@ -1897,7 +1906,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde ownerProfile.releaseDemux(releasingDemux.getHandle()); } - private void updateLnbClientMappingOnNewGrant(int grantingHandle, int ownerClientId) { + private void updateLnbClientMappingOnNewGrant(long grantingHandle, int ownerClientId) { LnbResource grantingLnb = getLnbResource(grantingHandle); ClientProfile ownerProfile = getClientProfile(ownerClientId); grantingLnb.setOwner(ownerClientId); @@ -1981,23 +1990,23 @@ public class TunerResourceManagerService extends SystemService implements IBinde @VisibleForTesting @Nullable - protected FrontendResource getFrontendResource(int frontendHandle) { + protected FrontendResource getFrontendResource(long frontendHandle) { return mFrontendResources.get(frontendHandle); } @VisibleForTesting - protected Map<Integer, FrontendResource> getFrontendResources() { + protected Map<Long, FrontendResource> getFrontendResources() { return mFrontendResources; } @VisibleForTesting @Nullable - protected DemuxResource getDemuxResource(int demuxHandle) { + protected DemuxResource getDemuxResource(long demuxHandle) { return mDemuxResources.get(demuxHandle); } @VisibleForTesting - protected Map<Integer, DemuxResource> getDemuxResources() { + protected Map<Long, DemuxResource> getDemuxResources() { return mDemuxResources; } @@ -2056,8 +2065,8 @@ public class TunerResourceManagerService extends SystemService implements IBinde } } - private void replaceFeResourceMap(Map<Integer, FrontendResource> srcMap, Map<Integer, - FrontendResource> dstMap) { + private void replaceFeResourceMap( + Map<Long, FrontendResource> srcMap, Map<Long, FrontendResource> dstMap) { if (dstMap != null) { dstMap.clear(); if (srcMap != null && srcMap.size() > 0) { @@ -2110,7 +2119,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde if (fe.getExclusiveGroupId() == newFe.getExclusiveGroupId()) { newFe.addExclusiveGroupMemberFeHandle(fe.getHandle()); newFe.addExclusiveGroupMemberFeHandles(fe.getExclusiveGroupMemberFeHandles()); - for (int excGroupmemberFeHandle : fe.getExclusiveGroupMemberFeHandles()) { + for (long excGroupmemberFeHandle : fe.getExclusiveGroupMemberFeHandles()) { getFrontendResource(excGroupmemberFeHandle) .addExclusiveGroupMemberFeHandle(newFe.getHandle()); } @@ -2128,7 +2137,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde mDemuxResources.put(newDemux.getHandle(), newDemux); } - private void removeFrontendResource(int removingHandle) { + private void removeFrontendResource(long removingHandle) { FrontendResource fe = getFrontendResource(removingHandle); if (fe == null) { return; @@ -2140,7 +2149,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde } clearFrontendAndClientMapping(ownerClient); } - for (int excGroupmemberFeHandle : fe.getExclusiveGroupMemberFeHandles()) { + for (long excGroupmemberFeHandle : fe.getExclusiveGroupMemberFeHandles()) { getFrontendResource(excGroupmemberFeHandle) .removeExclusiveGroupMemberFeId(fe.getHandle()); } @@ -2148,7 +2157,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde mFrontendResources.remove(removingHandle); } - private void removeDemuxResource(int removingHandle) { + private void removeDemuxResource(long removingHandle) { DemuxResource demux = getDemuxResource(removingHandle); if (demux == null) { return; @@ -2161,12 +2170,12 @@ public class TunerResourceManagerService extends SystemService implements IBinde @VisibleForTesting @Nullable - protected LnbResource getLnbResource(int lnbHandle) { + protected LnbResource getLnbResource(long lnbHandle) { return mLnbResources.get(lnbHandle); } @VisibleForTesting - protected Map<Integer, LnbResource> getLnbResources() { + protected Map<Long, LnbResource> getLnbResources() { return mLnbResources; } @@ -2175,7 +2184,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde mLnbResources.put(newLnb.getHandle(), newLnb); } - private void removeLnbResource(int removingHandle) { + private void removeLnbResource(long removingHandle) { LnbResource lnb = getLnbResource(removingHandle); if (lnb == null) { return; @@ -2279,7 +2288,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde if (profile == null) { return; } - for (Integer feId : profile.getInUseFrontendHandles()) { + for (Long feId : profile.getInUseFrontendHandles()) { FrontendResource fe = getFrontendResource(feId); int ownerClientId = fe.getOwnerClientId(); if (ownerClientId == profile.getId()) { @@ -2290,10 +2299,9 @@ public class TunerResourceManagerService extends SystemService implements IBinde if (ownerClientProfile != null) { ownerClientProfile.stopSharingFrontend(profile.getId()); } - } - int primaryFeId = profile.getPrimaryFrontend(); + long primaryFeId = profile.getPrimaryFrontend(); if (primaryFeId != TunerResourceManager.INVALID_RESOURCE_HANDLE) { FrontendResource primaryFe = getFrontendResource(primaryFeId); if (primaryFe != null) { @@ -2310,7 +2318,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde return; } // Clear Lnb - for (Integer lnbHandle : profile.getInUseLnbHandles()) { + for (Long lnbHandle : profile.getInUseLnbHandles()) { getLnbResource(lnbHandle).removeOwner(); } // Clear Cas @@ -2322,7 +2330,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde getCiCamResource(profile.getInUseCiCamId()).removeOwner(profile.getId()); } // Clear Demux - for (Integer demuxHandle : profile.getInUseDemuxHandles()) { + for (Long demuxHandle : profile.getInUseDemuxHandles()) { getDemuxResource(demuxHandle).removeOwner(); } // Clear Frontend @@ -2335,24 +2343,31 @@ public class TunerResourceManagerService extends SystemService implements IBinde return mClientProfiles.keySet().contains(clientId); } - private int generateResourceHandle( + /** + * Generate resource handle for resourceType and resourceId + * Resource Handle Allotment : 64 bits (long) + * 8 bits - resourceType + * 32 bits - resourceId + * 24 bits - resourceRequestCount + */ + private long generateResourceHandle( @TunerResourceManager.TunerResourceType int resourceType, int resourceId) { - return (resourceType & 0x000000ff) << 24 - | (resourceId << 16) - | (mResourceRequestCount++ & 0xffff); + return (resourceType & RESOURCE_TYPE_MASK) << RESOURCE_TYPE_SHIFT + | (resourceId & RESOURCE_ID_MASK) << RESOURCE_ID_SHIFT + | (mResourceRequestCount++ & RESOURCE_COUNT_MASK); } @VisibleForTesting - protected int getResourceIdFromHandle(int resourceHandle) { + protected int getResourceIdFromHandle(long resourceHandle) { if (resourceHandle == TunerResourceManager.INVALID_RESOURCE_HANDLE) { - return resourceHandle; + return (int) resourceHandle; } - return (resourceHandle & 0x00ff0000) >> 16; + return (int) ((resourceHandle >> RESOURCE_ID_SHIFT) & RESOURCE_ID_MASK); } - private boolean validateResourceHandle(int resourceType, int resourceHandle) { + private boolean validateResourceHandle(int resourceType, long resourceHandle) { if (resourceHandle == TunerResourceManager.INVALID_RESOURCE_HANDLE - || ((resourceHandle & 0xff000000) >> 24) != resourceType) { + || ((resourceHandle >> RESOURCE_TYPE_SHIFT) & RESOURCE_TYPE_MASK) != resourceType) { return false; } return true; diff --git a/services/tests/servicestests/src/com/android/server/tv/tunerresourcemanager/TunerResourceManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/tv/tunerresourcemanager/TunerResourceManagerServiceTest.java index 963b27e010fa..8e3633509cd3 100644 --- a/services/tests/servicestests/src/com/android/server/tv/tunerresourcemanager/TunerResourceManagerServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/tv/tunerresourcemanager/TunerResourceManagerServiceTest.java @@ -119,8 +119,7 @@ public class TunerResourceManagerServiceTest { tunerFrontendInfo(1 /*handle*/, FrontendSettings.TYPE_DVBT, 1 /*exclusiveGroupId*/); mTunerResourceManagerService.setFrontendInfoListInternal(infos); - Map<Integer, FrontendResource> resources = - mTunerResourceManagerService.getFrontendResources(); + Map<Long, FrontendResource> resources = mTunerResourceManagerService.getFrontendResources(); for (int id = 0; id < infos.length; id++) { assertThat(resources.get(infos[id].handle) .getExclusiveGroupMemberFeHandles().size()).isEqualTo(0); @@ -147,15 +146,14 @@ public class TunerResourceManagerServiceTest { tunerFrontendInfo(3 /*handle*/, FrontendSettings.TYPE_ATSC, 1 /*exclusiveGroupId*/); mTunerResourceManagerService.setFrontendInfoListInternal(infos); - Map<Integer, FrontendResource> resources = - mTunerResourceManagerService.getFrontendResources(); + Map<Long, FrontendResource> resources = mTunerResourceManagerService.getFrontendResources(); assertThat(resources.values()).comparingElementsUsing(FR_TFI_COMPARE) .containsExactlyElementsIn(Arrays.asList(infos)); - assertThat(resources.get(0).getExclusiveGroupMemberFeHandles()).isEmpty(); - assertThat(resources.get(1).getExclusiveGroupMemberFeHandles()).containsExactly(2, 3); - assertThat(resources.get(2).getExclusiveGroupMemberFeHandles()).containsExactly(1, 3); - assertThat(resources.get(3).getExclusiveGroupMemberFeHandles()).containsExactly(1, 2); + assertThat(resources.get(0L).getExclusiveGroupMemberFeHandles()).isEmpty(); + assertThat(resources.get(1L).getExclusiveGroupMemberFeHandles()).containsExactly(2L, 3L); + assertThat(resources.get(2L).getExclusiveGroupMemberFeHandles()).containsExactly(1L, 3L); + assertThat(resources.get(3L).getExclusiveGroupMemberFeHandles()).containsExactly(1L, 2L); } @Test @@ -168,11 +166,11 @@ public class TunerResourceManagerServiceTest { tunerFrontendInfo(1 /*handle*/, FrontendSettings.TYPE_DVBS, 1 /*exclusiveGroupId*/); mTunerResourceManagerService.setFrontendInfoListInternal(infos); - Map<Integer, FrontendResource> resources0 = + Map<Long, FrontendResource> resources0 = mTunerResourceManagerService.getFrontendResources(); mTunerResourceManagerService.setFrontendInfoListInternal(infos); - Map<Integer, FrontendResource> resources1 = + Map<Long, FrontendResource> resources1 = mTunerResourceManagerService.getFrontendResources(); assertThat(resources0).isEqualTo(resources1); @@ -195,8 +193,7 @@ public class TunerResourceManagerServiceTest { tunerFrontendInfo(1 /*handle*/, FrontendSettings.TYPE_DVBT, 1 /*exclusiveGroupId*/); mTunerResourceManagerService.setFrontendInfoListInternal(infos1); - Map<Integer, FrontendResource> resources = - mTunerResourceManagerService.getFrontendResources(); + Map<Long, FrontendResource> resources = mTunerResourceManagerService.getFrontendResources(); for (int id = 0; id < infos1.length; id++) { assertThat(resources.get(infos1[id].handle) .getExclusiveGroupMemberFeHandles().size()).isEqualTo(0); @@ -222,8 +219,7 @@ public class TunerResourceManagerServiceTest { tunerFrontendInfo(1 /*handle*/, FrontendSettings.TYPE_DVBT, 1 /*exclusiveGroupId*/); mTunerResourceManagerService.setFrontendInfoListInternal(infos1); - Map<Integer, FrontendResource> resources = - mTunerResourceManagerService.getFrontendResources(); + Map<Long, FrontendResource> resources = mTunerResourceManagerService.getFrontendResources(); for (int id = 0; id < infos1.length; id++) { assertThat(resources.get(infos1[id].handle) .getExclusiveGroupMemberFeHandles().size()).isEqualTo(0); @@ -240,7 +236,7 @@ public class TunerResourceManagerServiceTest { mTunerResourceManagerService.setFrontendInfoListInternal(infos0); TunerFrontendRequest request = tunerFrontendRequest(0 /*clientId*/, FrontendSettings.TYPE_DVBT); - int[] frontendHandle = new int[1]; + long[] frontendHandle = new long[1]; assertThat(mTunerResourceManagerService .requestFrontendInternal(request, frontendHandle)).isFalse(); assertThat(frontendHandle[0]).isEqualTo(TunerResourceManager.INVALID_RESOURCE_HANDLE); @@ -263,7 +259,7 @@ public class TunerResourceManagerServiceTest { TunerFrontendRequest request = tunerFrontendRequest(clientId[0] /*clientId*/, FrontendSettings.TYPE_DVBT); - int[] frontendHandle = new int[1]; + long[] frontendHandle = new long[1]; assertThat(mTunerResourceManagerService .requestFrontendInternal(request, frontendHandle)).isFalse(); assertThat(frontendHandle[0]).isEqualTo(TunerResourceManager.INVALID_RESOURCE_HANDLE); @@ -296,7 +292,7 @@ public class TunerResourceManagerServiceTest { TunerFrontendRequest request = tunerFrontendRequest(clientId[0] /*clientId*/, FrontendSettings.TYPE_DVBT); - int[] frontendHandle = new int[1]; + long[] frontendHandle = new long[1]; assertThat(mTunerResourceManagerService .requestFrontendInternal(request, frontendHandle)).isTrue(); assertThat(frontendHandle[0]).isEqualTo(0); @@ -333,7 +329,7 @@ public class TunerResourceManagerServiceTest { 1 /*exclusiveGroupId*/); mTunerResourceManagerService.setFrontendInfoListInternal(infos); - int[] frontendHandle = new int[1]; + long[] frontendHandle = new long[1]; TunerFrontendRequest request = tunerFrontendRequest(clientId1[0] /*clientId*/, FrontendSettings.TYPE_DVBT); assertThat(mTunerResourceManagerService @@ -385,7 +381,7 @@ public class TunerResourceManagerServiceTest { TunerFrontendRequest request = tunerFrontendRequest(clientId0[0] /*clientId*/, FrontendSettings.TYPE_DVBT); - int[] frontendHandle = new int[1]; + long[] frontendHandle = new long[1]; assertThat(mTunerResourceManagerService .requestFrontendInternal(request, frontendHandle)).isTrue(); @@ -435,13 +431,13 @@ public class TunerResourceManagerServiceTest { TunerFrontendRequest request = tunerFrontendRequest(clientId0[0] /*clientId*/, FrontendSettings.TYPE_DVBT); - int[] frontendHandle = new int[1]; + long[] frontendHandle = new long[1]; assertThat(mTunerResourceManagerService .requestFrontendInternal(request, frontendHandle)).isTrue(); assertThat(frontendHandle[0]).isEqualTo(infos[0].handle); assertThat(mTunerResourceManagerService.getClientProfile(clientId0[0]) - .getInUseFrontendHandles()).isEqualTo(new HashSet<Integer>(Arrays.asList( - infos[0].handle, infos[1].handle))); + .getInUseFrontendHandles()) + .isEqualTo(new HashSet<Long>(Arrays.asList(infos[0].handle, infos[1].handle))); request = tunerFrontendRequest(clientId1[0] /*clientId*/, FrontendSettings.TYPE_DVBS); @@ -480,7 +476,7 @@ public class TunerResourceManagerServiceTest { TunerFrontendRequest request = tunerFrontendRequest(clientId[0] /*clientId*/, FrontendSettings.TYPE_DVBT); - int[] frontendHandle = new int[1]; + long[] frontendHandle = new long[1]; assertThat(mTunerResourceManagerService .requestFrontendInternal(request, frontendHandle)).isTrue(); assertThat(frontendHandle[0]).isEqualTo(infos[0].handle); @@ -525,7 +521,7 @@ public class TunerResourceManagerServiceTest { mTunerResourceManagerService.updateCasInfoInternal(1 /*casSystemId*/, 2 /*maxSessionNum*/); CasSessionRequest request = casSessionRequest(clientId0[0], 1 /*casSystemId*/); - int[] casSessionHandle = new int[1]; + long[] casSessionHandle = new long[1]; // Request for 2 cas sessions. assertThat(mTunerResourceManagerService .requestCasSessionInternal(request, casSessionHandle)).isTrue(); @@ -581,7 +577,7 @@ public class TunerResourceManagerServiceTest { mTunerResourceManagerService.updateCasInfoInternal(1 /*casSystemId*/, 2 /*maxSessionNum*/); TunerCiCamRequest request = tunerCiCamRequest(clientId0[0], 1 /*ciCamId*/); - int[] ciCamHandle = new int[1]; + long[] ciCamHandle = new long[1]; // Request for 2 ciCam sessions. assertThat(mTunerResourceManagerService .requestCiCamInternal(request, ciCamHandle)).isTrue(); @@ -625,7 +621,7 @@ public class TunerResourceManagerServiceTest { mTunerResourceManagerService.updateCasInfoInternal(1 /*casSystemId*/, 2 /*maxSessionNum*/); CasSessionRequest request = casSessionRequest(clientId[0], 1 /*casSystemId*/); - int[] casSessionHandle = new int[1]; + long[] casSessionHandle = new long[1]; // Request for 1 cas sessions. assertThat(mTunerResourceManagerService .requestCasSessionInternal(request, casSessionHandle)).isTrue(); @@ -662,7 +658,7 @@ public class TunerResourceManagerServiceTest { mTunerResourceManagerService.updateCasInfoInternal(1 /*casSystemId*/, 2 /*maxSessionNum*/); TunerCiCamRequest request = tunerCiCamRequest(clientId[0], 1 /*ciCamId*/); - int[] ciCamHandle = new int[1]; + long[] ciCamHandle = new long[1]; // Request for 1 ciCam sessions. assertThat(mTunerResourceManagerService .requestCiCamInternal(request, ciCamHandle)).isTrue(); @@ -708,17 +704,17 @@ public class TunerResourceManagerServiceTest { clientId1[0], clientPriorities[1], 0/*niceValue*/); // Init lnb resources. - int[] lnbHandles = {1}; + long[] lnbHandles = {1}; mTunerResourceManagerService.setLnbInfoListInternal(lnbHandles); TunerLnbRequest request = new TunerLnbRequest(); request.clientId = clientId0[0]; - int[] lnbHandle = new int[1]; + long[] lnbHandle = new long[1]; assertThat(mTunerResourceManagerService .requestLnbInternal(request, lnbHandle)).isTrue(); assertThat(lnbHandle[0]).isEqualTo(lnbHandles[0]); assertThat(mTunerResourceManagerService.getClientProfile(clientId0[0]).getInUseLnbHandles()) - .isEqualTo(new HashSet<Integer>(Arrays.asList(lnbHandles[0]))); + .isEqualTo(new HashSet<Long>(Arrays.asList(lnbHandles[0]))); request = new TunerLnbRequest(); request.clientId = clientId1[0]; @@ -747,12 +743,12 @@ public class TunerResourceManagerServiceTest { assertThat(clientId[0]).isNotEqualTo(TunerResourceManagerService.INVALID_CLIENT_ID); // Init lnb resources. - int[] lnbHandles = {0}; + long[] lnbHandles = {0}; mTunerResourceManagerService.setLnbInfoListInternal(lnbHandles); TunerLnbRequest request = new TunerLnbRequest(); request.clientId = clientId[0]; - int[] lnbHandle = new int[1]; + long[] lnbHandle = new long[1]; assertThat(mTunerResourceManagerService .requestLnbInternal(request, lnbHandle)).isTrue(); assertThat(lnbHandle[0]).isEqualTo(lnbHandles[0]); @@ -786,7 +782,7 @@ public class TunerResourceManagerServiceTest { TunerFrontendRequest request = tunerFrontendRequest(clientId[0] /*clientId*/, FrontendSettings.TYPE_DVBT); - int[] frontendHandle = new int[1]; + long[] frontendHandle = new long[1]; assertThat(mTunerResourceManagerService .requestFrontendInternal(request, frontendHandle)).isTrue(); assertThat(frontendHandle[0]).isEqualTo(infos[0].handle); @@ -823,12 +819,12 @@ public class TunerResourceManagerServiceTest { infos[2] = tunerDemuxInfo(2 /* handle */, Filter.TYPE_TS); mTunerResourceManagerService.setDemuxInfoListInternal(infos); - int[] demuxHandle0 = new int[1]; + long[] demuxHandle0 = new long[1]; // first with undefined type (should be the first one with least # of caps) TunerDemuxRequest request = tunerDemuxRequest(clientId0[0], Filter.TYPE_UNDEFINED); assertThat(mTunerResourceManagerService.requestDemuxInternal(request, demuxHandle0)) .isTrue(); - assertThat(demuxHandle0[0]).isEqualTo(1); + assertThat(demuxHandle0[0]).isEqualTo(1L); DemuxResource dr = mTunerResourceManagerService.getDemuxResource(demuxHandle0[0]); mTunerResourceManagerService.releaseDemuxInternal(dr); @@ -837,20 +833,20 @@ public class TunerResourceManagerServiceTest { demuxHandle0[0] = -1; assertThat(mTunerResourceManagerService.requestDemuxInternal(request, demuxHandle0)) .isFalse(); - assertThat(demuxHandle0[0]).isEqualTo(-1); + assertThat(demuxHandle0[0]).isEqualTo(-1L); // now with TS (should be the one with least # of caps that supports TS) request.desiredFilterTypes = Filter.TYPE_TS; assertThat(mTunerResourceManagerService.requestDemuxInternal(request, demuxHandle0)) .isTrue(); - assertThat(demuxHandle0[0]).isEqualTo(2); + assertThat(demuxHandle0[0]).isEqualTo(2L); // request for another TS int[] clientId1 = new int[1]; mTunerResourceManagerService.registerClientProfileInternal( profile1, null /*listener*/, clientId1); assertThat(clientId1[0]).isNotEqualTo(TunerResourceManagerService.INVALID_CLIENT_ID); - int[] demuxHandle1 = new int[1]; + long[] demuxHandle1 = new long[1]; TunerDemuxRequest request1 = tunerDemuxRequest(clientId1[0], Filter.TYPE_TS); assertThat(mTunerResourceManagerService.requestDemuxInternal(request1, demuxHandle1)) .isTrue(); @@ -899,14 +895,14 @@ public class TunerResourceManagerServiceTest { // let clientId0(prio:100) request for IP - should succeed TunerDemuxRequest request0 = tunerDemuxRequest(clientId0[0], Filter.TYPE_IP); - int[] demuxHandle0 = new int[1]; + long[] demuxHandle0 = new long[1]; assertThat(mTunerResourceManagerService .requestDemuxInternal(request0, demuxHandle0)).isTrue(); assertThat(demuxHandle0[0]).isEqualTo(0); // let clientId1(prio:50) request for IP - should fail TunerDemuxRequest request1 = tunerDemuxRequest(clientId1[0], Filter.TYPE_IP); - int[] demuxHandle1 = new int[1]; + long[] demuxHandle1 = new long[1]; demuxHandle1[0] = -1; assertThat(mTunerResourceManagerService .requestDemuxInternal(request1, demuxHandle1)).isFalse(); @@ -926,7 +922,7 @@ public class TunerResourceManagerServiceTest { // let clientId2(prio:50) request for TS - should succeed TunerDemuxRequest request2 = tunerDemuxRequest(clientId2[0], Filter.TYPE_TS); - int[] demuxHandle2 = new int[1]; + long[] demuxHandle2 = new long[1]; assertThat(mTunerResourceManagerService .requestDemuxInternal(request2, demuxHandle2)).isTrue(); assertThat(demuxHandle2[0]).isEqualTo(0); @@ -951,7 +947,7 @@ public class TunerResourceManagerServiceTest { profile, null /*listener*/, clientId); assertThat(clientId[0]).isNotEqualTo(TunerResourceManagerService.INVALID_CLIENT_ID); - int[] desHandle = new int[1]; + long[] desHandle = new long[1]; TunerDescramblerRequest request = new TunerDescramblerRequest(); request.clientId = clientId[0]; assertThat(mTunerResourceManagerService.requestDescramblerInternal(request, desHandle)) @@ -1061,7 +1057,7 @@ public class TunerResourceManagerServiceTest { 1 /*exclusiveGroupId*/); /**** Init Lnb Resources ****/ - int[] lnbHandles = {1}; + long[] lnbHandles = {1}; mTunerResourceManagerService.setLnbInfoListInternal(lnbHandles); // Update frontend list in TRM @@ -1070,7 +1066,7 @@ public class TunerResourceManagerServiceTest { /**** Request Frontend ****/ // Predefined frontend request and array to save returned frontend handle - int[] frontendHandle = new int[1]; + long[] frontendHandle = new long[1]; TunerFrontendRequest request = tunerFrontendRequest( ownerClientId0[0] /*clientId*/, FrontendSettings.TYPE_DVBT); @@ -1080,12 +1076,9 @@ public class TunerResourceManagerServiceTest { .requestFrontendInternal(request, frontendHandle)) .isTrue(); assertThat(frontendHandle[0]).isEqualTo(infos[0].handle); - assertThat(mTunerResourceManagerService - .getClientProfile(ownerClientId0[0]) - .getInUseFrontendHandles()) - .isEqualTo(new HashSet<Integer>(Arrays.asList( - infos[0].handle, - infos[1].handle))); + assertThat(mTunerResourceManagerService.getClientProfile(ownerClientId0[0]) + .getInUseFrontendHandles()) + .isEqualTo(new HashSet<Long>(Arrays.asList(infos[0].handle, infos[1].handle))); /**** Share Frontend ****/ @@ -1113,24 +1106,15 @@ public class TunerResourceManagerServiceTest { shareClientId0[0], shareClientId1[0]))); // Verify in use frontend list in all the primary owner and share owner clients - assertThat(mTunerResourceManagerService - .getClientProfile(ownerClientId0[0]) - .getInUseFrontendHandles()) - .isEqualTo(new HashSet<Integer>(Arrays.asList( - infos[0].handle, - infos[1].handle))); - assertThat(mTunerResourceManagerService - .getClientProfile(shareClientId0[0]) - .getInUseFrontendHandles()) - .isEqualTo(new HashSet<Integer>(Arrays.asList( - infos[0].handle, - infos[1].handle))); - assertThat(mTunerResourceManagerService - .getClientProfile(shareClientId1[0]) - .getInUseFrontendHandles()) - .isEqualTo(new HashSet<Integer>(Arrays.asList( - infos[0].handle, - infos[1].handle))); + assertThat(mTunerResourceManagerService.getClientProfile(ownerClientId0[0]) + .getInUseFrontendHandles()) + .isEqualTo(new HashSet<Long>(Arrays.asList(infos[0].handle, infos[1].handle))); + assertThat(mTunerResourceManagerService.getClientProfile(shareClientId0[0]) + .getInUseFrontendHandles()) + .isEqualTo(new HashSet<Long>(Arrays.asList(infos[0].handle, infos[1].handle))); + assertThat(mTunerResourceManagerService.getClientProfile(shareClientId1[0]) + .getInUseFrontendHandles()) + .isEqualTo(new HashSet<Long>(Arrays.asList(infos[0].handle, infos[1].handle))); /**** Remove Frontend Share Owner ****/ @@ -1142,18 +1126,12 @@ public class TunerResourceManagerServiceTest { .getShareFeClientIds()) .isEqualTo(new HashSet<Integer>(Arrays.asList( shareClientId0[0]))); - assertThat(mTunerResourceManagerService - .getClientProfile(ownerClientId0[0]) - .getInUseFrontendHandles()) - .isEqualTo(new HashSet<Integer>(Arrays.asList( - infos[0].handle, - infos[1].handle))); - assertThat(mTunerResourceManagerService - .getClientProfile(shareClientId0[0]) - .getInUseFrontendHandles()) - .isEqualTo(new HashSet<Integer>(Arrays.asList( - infos[0].handle, - infos[1].handle))); + assertThat(mTunerResourceManagerService.getClientProfile(ownerClientId0[0]) + .getInUseFrontendHandles()) + .isEqualTo(new HashSet<Long>(Arrays.asList(infos[0].handle, infos[1].handle))); + assertThat(mTunerResourceManagerService.getClientProfile(shareClientId0[0]) + .getInUseFrontendHandles()) + .isEqualTo(new HashSet<Long>(Arrays.asList(infos[0].handle, infos[1].handle))); /**** Request Shared Frontend with Higher Priority Client ****/ @@ -1173,12 +1151,9 @@ public class TunerResourceManagerServiceTest { .getOwnerClientId()).isEqualTo(ownerClientId1[0]); assertThat(mTunerResourceManagerService.getFrontendResource(infos[1].handle) .getOwnerClientId()).isEqualTo(ownerClientId1[0]); - assertThat(mTunerResourceManagerService - .getClientProfile(ownerClientId1[0]) - .getInUseFrontendHandles()) - .isEqualTo(new HashSet<Integer>(Arrays.asList( - infos[0].handle, - infos[1].handle))); + assertThat(mTunerResourceManagerService.getClientProfile(ownerClientId1[0]) + .getInUseFrontendHandles()) + .isEqualTo(new HashSet<Long>(Arrays.asList(infos[0].handle, infos[1].handle))); assertThat(mTunerResourceManagerService .getClientProfile(ownerClientId0[0]) .getInUseFrontendHandles() @@ -1235,7 +1210,7 @@ public class TunerResourceManagerServiceTest { // Predefined Lnb request and handle array TunerLnbRequest requestLnb = new TunerLnbRequest(); requestLnb.clientId = shareClientId0[0]; - int[] lnbHandle = new int[1]; + long[] lnbHandle = new long[1]; // Request for an Lnb assertThat(mTunerResourceManagerService @@ -1264,15 +1239,13 @@ public class TunerResourceManagerServiceTest { .getInUseFrontendHandles() .isEmpty()) .isTrue(); - assertThat(mTunerResourceManagerService - .getClientProfile(shareClientId0[0]) - .getInUseLnbHandles()) - .isEqualTo(new HashSet<Integer>(Arrays.asList( - lnbHandles[0]))); + assertThat(mTunerResourceManagerService.getClientProfile(shareClientId0[0]) + .getInUseLnbHandles()) + .isEqualTo(new HashSet<Long>(Arrays.asList(lnbHandles[0]))); } private TunerFrontendInfo tunerFrontendInfo( - int handle, int frontendType, int exclusiveGroupId) { + long handle, int frontendType, int exclusiveGroupId) { TunerFrontendInfo info = new TunerFrontendInfo(); info.handle = handle; info.type = frontendType; |